From b541558b7a59e92b8b2518c714e38430466ce541 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 4 Dec 2022 13:51:30 +0100 Subject: [PATCH 001/767] Cygwin: bump DLL version to 3.5.0 Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 4a9de4cd66..fb24fc61f7 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -10,7 +10,7 @@ details. */ the Cygwin shared library". This version is used to track important changes to the DLL and is mainly informative in nature. */ -#define CYGWIN_VERSION_DLL_MAJOR 3004 +#define CYGWIN_VERSION_DLL_MAJOR 3005 #define CYGWIN_VERSION_DLL_MINOR 0 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the From 48953788b377c5e4e789f21106c47b645e1366de Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:10:57 +0100 Subject: [PATCH 002/767] Cygwin: drop wincap::needs_query_information Only required for Windows 7 and 8. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/wincap.h | 2 -- winsup/cygwin/sigproc.cc | 9 +-------- winsup/cygwin/wincap.cc | 12 ------------ 3 files changed, 1 insertion(+), 22 deletions(-) diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index 9fff129097..1075f3bea8 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -17,7 +17,6 @@ struct wincaps ops generated by gcc are off by 4 bytes. */ struct __attribute__ ((aligned (8))) { unsigned is_server : 1; - unsigned needs_query_information : 1; unsigned has_precise_system_time : 1; unsigned has_microsoft_accounts : 1; unsigned has_new_pebteb_region : 1; @@ -76,7 +75,6 @@ class wincapc } intptr_t IMPLEMENT (mmap_storage_high) bool IMPLEMENT (is_server) - bool IMPLEMENT (needs_query_information) bool IMPLEMENT (has_precise_system_time) bool IMPLEMENT (has_microsoft_accounts) bool IMPLEMENT (has_new_pebteb_region) diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index a99876dc9f..ce36c8be37 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -846,14 +846,7 @@ child_info::child_info (unsigned in_cb, child_info_types chtype, DWORD perms = PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ | PROCESS_VM_OPERATION | SYNCHRONIZE; if (type == _CH_FORK) - { - perms |= PROCESS_DUP_HANDLE; - /* VirtualQueryEx is documented to require PROCESS_QUERY_INFORMATION. - That's true for Windows 7, but PROCESS_QUERY_LIMITED_INFORMATION - appears to be sufficient on Windows 8 and later. */ - if (wincap.needs_query_information ()) - perms |= PROCESS_QUERY_INFORMATION; - } + perms |= PROCESS_DUP_HANDLE; if (!DuplicateHandle (GetCurrentProcess (), GetCurrentProcess (), GetCurrentProcess (), &parent, perms, TRUE, 0)) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 7309516bf3..15400d8d0f 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -24,7 +24,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, - needs_query_information:true, has_precise_system_time:false, has_microsoft_accounts:false, has_new_pebteb_region:false, @@ -55,7 +54,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, - needs_query_information:true, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, @@ -86,7 +84,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, @@ -117,7 +114,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, @@ -148,7 +144,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, @@ -179,7 +174,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, @@ -210,7 +204,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, @@ -241,7 +234,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, @@ -272,7 +264,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, @@ -303,7 +294,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, @@ -334,7 +324,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, @@ -365,7 +354,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - needs_query_information:false, has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, From 70d77662f5742718eb37dbd9e373fe7ab12b8c36 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:13:28 +0100 Subject: [PATCH 003/767] Cygwin: drop wincap::has_precise_system_time Only required for Windows 7. Signed-off-by: Corinna Vinschen --- winsup/cygwin/clock.cc | 18 ++++-------------- winsup/cygwin/local_includes/wincap.h | 2 -- winsup/cygwin/times.cc | 4 +--- winsup/cygwin/wincap.cc | 12 ------------ 4 files changed, 5 insertions(+), 31 deletions(-) diff --git a/winsup/cygwin/clock.cc b/winsup/cygwin/clock.cc index 0c0bd9994e..1c675f0f26 100644 --- a/winsup/cygwin/clock.cc +++ b/winsup/cygwin/clock.cc @@ -40,13 +40,8 @@ clk_t::init () void inline clk_realtime_t::init () { - if (wincap.has_precise_system_time ()) - { - if (!ticks_per_sec) - InterlockedExchange64 (&ticks_per_sec, system_qpc_tickspersec ()); - } - else if (!period) - InterlockedExchange64 (&period, system_tickcount_period ()); + if (!ticks_per_sec) + InterlockedExchange64 (&ticks_per_sec, system_qpc_tickspersec ()); } void inline @@ -74,9 +69,7 @@ clk_realtime_t::now (clockid_t clockid, struct timespec *ts) { LARGE_INTEGER now; - wincap.has_precise_system_time () - ? GetSystemTimePreciseAsFileTime ((LPFILETIME) &now) - : GetSystemTimeAsFileTime ((LPFILETIME) &now); + GetSystemTimePreciseAsFileTime ((LPFILETIME) &now); /* Add conversion factor for UNIX vs. Windows base time */ now.QuadPart -= FACTOR; ts->tv_sec = now.QuadPart / NS100PERSEC; @@ -236,10 +229,7 @@ clk_realtime_t::resolution (struct timespec *ts) { init (); ts->tv_sec = 0; - if (wincap.has_precise_system_time ()) - ts->tv_nsec = NSPERSEC / ticks_per_sec; - else - ts->tv_nsec = period * (NSPERSEC/NS100PERSEC); + ts->tv_nsec = NSPERSEC / ticks_per_sec; } void diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index 1075f3bea8..0a2ad7b591 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -17,7 +17,6 @@ struct wincaps ops generated by gcc are off by 4 bytes. */ struct __attribute__ ((aligned (8))) { unsigned is_server : 1; - unsigned has_precise_system_time : 1; unsigned has_microsoft_accounts : 1; unsigned has_new_pebteb_region : 1; unsigned has_broken_whoami : 1; @@ -75,7 +74,6 @@ class wincapc } intptr_t IMPLEMENT (mmap_storage_high) bool IMPLEMENT (is_server) - bool IMPLEMENT (has_precise_system_time) bool IMPLEMENT (has_microsoft_accounts) bool IMPLEMENT (has_new_pebteb_region) bool IMPLEMENT (has_broken_whoami) diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index 4ab432925e..ddea061b89 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -29,9 +29,7 @@ details. */ static inline void __attribute__ ((always_inline)) get_system_time (PLARGE_INTEGER systime) { - wincap.has_precise_system_time () - ? GetSystemTimePreciseAsFileTime ((LPFILETIME) systime) - : GetSystemTimeAsFileTime ((LPFILETIME) systime); + GetSystemTimePreciseAsFileTime ((LPFILETIME) systime); } /* Cygwin internal */ diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 15400d8d0f..7ee8f4b06e 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -24,7 +24,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, - has_precise_system_time:false, has_microsoft_accounts:false, has_new_pebteb_region:false, has_broken_whoami:true, @@ -54,7 +53,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, @@ -84,7 +82,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, @@ -114,7 +111,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, @@ -144,7 +140,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, @@ -174,7 +169,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, @@ -204,7 +198,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, @@ -234,7 +227,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, @@ -264,7 +256,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, @@ -294,7 +285,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, @@ -324,7 +314,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, @@ -354,7 +343,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_precise_system_time:true, has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, From 5478c5a9ec1397dd5fd44576f238afb59c67d250 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:15:44 +0100 Subject: [PATCH 004/767] Cygwin: drop wincap::has_microsoft_accounts Only required for Windows 7. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/wincap.h | 2 -- winsup/cygwin/uinfo.cc | 2 +- winsup/cygwin/wincap.cc | 12 ------------ 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index 0a2ad7b591..a99d02c4ca 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -17,7 +17,6 @@ struct wincaps ops generated by gcc are off by 4 bytes. */ struct __attribute__ ((aligned (8))) { unsigned is_server : 1; - unsigned has_microsoft_accounts : 1; unsigned has_new_pebteb_region : 1; unsigned has_broken_whoami : 1; unsigned has_unprivileged_createsymlink : 1; @@ -74,7 +73,6 @@ class wincapc } intptr_t IMPLEMENT (mmap_storage_high) bool IMPLEMENT (is_server) - bool IMPLEMENT (has_microsoft_accounts) bool IMPLEMENT (has_new_pebteb_region) bool IMPLEMENT (has_broken_whoami) bool IMPLEMENT (has_unprivileged_createsymlink) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 6df8c7bbbb..2dd0c6e79d 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -2200,7 +2200,7 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) bool its_ok = false; if (sid_id_auth (sid) == 12) its_ok = true; - else if (wincap.has_microsoft_accounts ()) + else /* Microsoft Account */ { USER_INFO_24 *ui24; if (NetUserGetInfo (NULL, name, 24, (PBYTE *) &ui24) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 7ee8f4b06e..ce64289f87 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -24,7 +24,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, - has_microsoft_accounts:false, has_new_pebteb_region:false, has_broken_whoami:true, has_unprivileged_createsymlink:false, @@ -53,7 +52,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, has_unprivileged_createsymlink:false, @@ -82,7 +80,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, has_unprivileged_createsymlink:false, @@ -111,7 +108,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, has_unprivileged_createsymlink:false, @@ -140,7 +136,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:false, has_broken_whoami:false, has_unprivileged_createsymlink:false, @@ -169,7 +164,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, @@ -198,7 +192,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, @@ -227,7 +220,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, @@ -256,7 +248,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, @@ -285,7 +276,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, @@ -314,7 +304,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, @@ -343,7 +332,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, - has_microsoft_accounts:true, has_new_pebteb_region:true, has_broken_whoami:false, has_unprivileged_createsymlink:true, From c3c71e39f901e8b8bb6a8fb0e41eefed1fae1aac Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:18:18 +0100 Subject: [PATCH 005/767] Cygwin: drop wincap::has_broken_whoami Unused for some time. Was only required for Windows 7 anyway. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/wincap.h | 2 -- winsup/cygwin/wincap.cc | 12 ------------ 2 files changed, 14 deletions(-) diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index a99d02c4ca..e123b4bd18 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -18,7 +18,6 @@ struct wincaps struct __attribute__ ((aligned (8))) { unsigned is_server : 1; unsigned has_new_pebteb_region : 1; - unsigned has_broken_whoami : 1; unsigned has_unprivileged_createsymlink : 1; unsigned has_precise_interrupt_time : 1; unsigned has_posix_unlink_semantics : 1; @@ -74,7 +73,6 @@ class wincapc intptr_t IMPLEMENT (mmap_storage_high) bool IMPLEMENT (is_server) bool IMPLEMENT (has_new_pebteb_region) - bool IMPLEMENT (has_broken_whoami) bool IMPLEMENT (has_unprivileged_createsymlink) bool IMPLEMENT (has_precise_interrupt_time) bool IMPLEMENT (has_posix_unlink_semantics) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index ce64289f87..52bdda48d8 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -25,7 +25,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { { is_server:false, has_new_pebteb_region:false, - has_broken_whoami:true, has_unprivileged_createsymlink:false, has_precise_interrupt_time:false, has_posix_unlink_semantics:false, @@ -53,7 +52,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { { is_server:false, has_new_pebteb_region:false, - has_broken_whoami:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:false, has_posix_unlink_semantics:false, @@ -81,7 +79,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { { is_server:false, has_new_pebteb_region:false, - has_broken_whoami:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:false, has_posix_unlink_semantics:false, @@ -109,7 +106,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) { is_server:false, has_new_pebteb_region:false, - has_broken_whoami:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:true, has_posix_unlink_semantics:false, @@ -137,7 +133,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) { is_server:false, has_new_pebteb_region:false, - has_broken_whoami:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:true, has_posix_unlink_semantics:false, @@ -165,7 +160,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:false, @@ -193,7 +187,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:true, @@ -221,7 +214,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:true, @@ -249,7 +241,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:true, @@ -277,7 +268,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:true, @@ -305,7 +295,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:true, @@ -333,7 +322,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { { is_server:false, has_new_pebteb_region:true, - has_broken_whoami:false, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, has_posix_unlink_semantics:true, From 4e40b214649139623c96923f678f1ee85c90286d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:22:43 +0100 Subject: [PATCH 006/767] Cygwin: drop wincap::has_query_process_handle_info Only required for Windows 7. This allows to remove fhandler_pipe::get_query_hdl_per_system(), too. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pipe.cc | 76 +------------------------ winsup/cygwin/local_includes/fhandler.h | 1 - winsup/cygwin/local_includes/wincap.h | 2 - winsup/cygwin/wincap.cc | 12 ---- 4 files changed, 1 insertion(+), 90 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 720e4efd39..608a784908 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -1176,10 +1176,7 @@ fhandler_pipe::temporary_query_hdl () &pipename_key, &pipename_pid, &pipename_id) != 3) return NULL; /* Non cygwin pipe? */ - if (wincap.has_query_process_handle_info ()) - return get_query_hdl_per_process (name, ntfn); /* Since Win8 */ - else - return get_query_hdl_per_system (name, ntfn); /* Win7 */ + return get_query_hdl_per_process (name, ntfn); /* Since Win8 */ } /* This function is faster than get_query_hdl_per_system(), however, @@ -1312,74 +1309,3 @@ fhandler_pipe::get_query_hdl_per_process (WCHAR *name, HeapFree (GetProcessHeap (), 0, proc_pids); return NULL; } - -/* This function is slower than get_query_hdl_per_process(), however, - works even before Windows 8. */ -HANDLE -fhandler_pipe::get_query_hdl_per_system (WCHAR *name, - OBJECT_NAME_INFORMATION *ntfn) -{ - NTSTATUS status; - SIZE_T n_handle = 65536; - PSYSTEM_HANDLE_INFORMATION shi; - do - { /* Enumerate handles */ - SIZE_T nbytes = - sizeof (ULONG) + n_handle * sizeof (SYSTEM_HANDLE_TABLE_ENTRY_INFO); - shi = (PSYSTEM_HANDLE_INFORMATION) HeapAlloc (GetProcessHeap (), - 0, nbytes); - if (!shi) - return NULL; - status = NtQuerySystemInformation (SystemHandleInformation, - shi, nbytes, NULL); - if (NT_SUCCESS (status)) - break; - HeapFree (GetProcessHeap (), 0, shi); - n_handle *= 2; - } - while (n_handle < (1L<<23) && status == STATUS_INFO_LENGTH_MISMATCH); - if (!NT_SUCCESS (status)) - return NULL; - - for (LONG i = (LONG) shi->NumberOfHandles - 1; i >= 0; i--) - { - /* Check for the peculiarity of cygwin read pipe */ - const ULONG access = FILE_READ_DATA | FILE_READ_EA - | FILE_WRITE_EA /* marker */ - | FILE_READ_ATTRIBUTES | FILE_WRITE_ATTRIBUTES - | READ_CONTROL | SYNCHRONIZE; - if (shi->Handles[i].GrantedAccess != access) - continue; - - /* Retrieve handle */ - HANDLE proc = OpenProcess (PROCESS_DUP_HANDLE, 0, - shi->Handles[i].UniqueProcessId); - if (!proc) - continue; - HANDLE h = (HANDLE)(intptr_t) shi->Handles[i].HandleValue; - BOOL res = DuplicateHandle (proc, h, GetCurrentProcess (), &h, - FILE_READ_DATA, 0, 0); - if (!res) - goto close_proc; - - /* Check object name */ - ULONG len; - status = NtQueryObject (h, ObjectNameInformation, ntfn, 65536, &len); - if (!NT_SUCCESS (status) || !ntfn->Name.Buffer) - goto close_handle; - ntfn->Name.Buffer[ntfn->Name.Length / sizeof (WCHAR)] = L'\0'; - if (wcscmp (name, ntfn->Name.Buffer) == 0) - { - query_hdl_proc = proc; - query_hdl_value = (HANDLE)(intptr_t) shi->Handles[i].HandleValue; - HeapFree (GetProcessHeap (), 0, shi); - return h; - } -close_handle: - CloseHandle (h); -close_proc: - CloseHandle (proc); - } - HeapFree (GetProcessHeap (), 0, shi); - return NULL; -} diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index bc02eae66d..6671d8a05c 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -1195,7 +1195,6 @@ class fhandler_pipe: public fhandler_pipe_fifo LONG pipename_id; void release_select_sem (const char *); HANDLE get_query_hdl_per_process (WCHAR *, OBJECT_NAME_INFORMATION *); - HANDLE get_query_hdl_per_system (WCHAR *, OBJECT_NAME_INFORMATION *); public: fhandler_pipe (); diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index e123b4bd18..17d2d74293 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -32,7 +32,6 @@ struct wincaps unsigned has_tcp_fastopen : 1; unsigned has_linux_tcp_keepalive_sockopts : 1; unsigned has_tcp_maxrtms : 1; - unsigned has_query_process_handle_info : 1; unsigned has_con_broken_tabs : 1; unsigned has_broken_attach_console : 1; unsigned cons_need_small_input_record_buf : 1; @@ -87,7 +86,6 @@ class wincapc bool IMPLEMENT (has_tcp_fastopen) bool IMPLEMENT (has_linux_tcp_keepalive_sockopts) bool IMPLEMENT (has_tcp_maxrtms) - bool IMPLEMENT (has_query_process_handle_info) bool IMPLEMENT (has_con_broken_tabs) bool IMPLEMENT (has_broken_attach_console) bool IMPLEMENT (cons_need_small_input_record_buf) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 52bdda48d8..c52d415401 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -39,7 +39,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { has_tcp_fastopen:false, has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, - has_query_process_handle_info:false, has_con_broken_tabs:false, has_broken_attach_console:true, cons_need_small_input_record_buf:true, @@ -66,7 +65,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { has_tcp_fastopen:false, has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, - has_query_process_handle_info:true, has_con_broken_tabs:false, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -93,7 +91,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { has_tcp_fastopen:false, has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, - has_query_process_handle_info:true, has_con_broken_tabs:false, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -120,7 +117,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) has_tcp_fastopen:false, has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, - has_query_process_handle_info:true, has_con_broken_tabs:false, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -147,7 +143,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:false, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -174,7 +169,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:true, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -201,7 +195,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:true, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -228,7 +221,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:true, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -255,7 +247,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:true, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -282,7 +273,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:true, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -309,7 +299,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:true, has_broken_attach_console:false, cons_need_small_input_record_buf:false, @@ -336,7 +325,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { has_tcp_fastopen:true, has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, - has_query_process_handle_info:true, has_con_broken_tabs:false, has_broken_attach_console:false, cons_need_small_input_record_buf:false, From 08cd9cfc5c7ee1d0d1c84d1c708a2e6446c7c337 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:39:10 +0100 Subject: [PATCH 007/767] Cygwin: drop wincap::has_broken_attach_console Only required for Windows 7. This in turn allows to drop the helper_pid and related methods from fhandler_pty_common. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pty.cc | 66 ++----------------------- winsup/cygwin/fhandler/termios.cc | 3 +- winsup/cygwin/local_includes/fhandler.h | 6 +-- winsup/cygwin/local_includes/wincap.h | 2 - winsup/cygwin/wincap.cc | 12 ----- 5 files changed, 7 insertions(+), 82 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 7959d4b0ac..e7106daba4 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -547,8 +547,7 @@ fhandler_pty_master::accept_input () { /* Slave attaches to a different console than master. Therefore reattach here. */ - DWORD resume_pid = - attach_console_temporarily (target_pid, helper_pid); + DWORD resume_pid = attach_console_temporarily (target_pid); cp_to = GetConsoleCP (); resume_from_temporarily_attach (resume_pid); } @@ -2111,7 +2110,6 @@ fhandler_pty_master::close () WaitForSingleObject (helper_h_process, INFINITE); CloseHandle (helper_h_process); CloseHandle (helper_goodbye); - helper_pid = 0; helper_h_process = 0; helper_goodbye = NULL; } @@ -2838,7 +2836,7 @@ fhandler_pty_master::pty_master_fwd_thread (const master_fwd_thread_param_t *p) /* Slave attaches to a different console than master. Therefore reattach here. */ DWORD resume_pid = - attach_console_temporarily (target_pid, p->helper_pid); + attach_console_temporarily (target_pid); cp_from = GetConsoleOutputCP (); resume_from_temporarily_attach (resume_pid); } @@ -3022,56 +3020,6 @@ fhandler_pty_master::setup () } WaitForSingleObject (thread_param_copied_event, INFINITE); - if (wincap.has_broken_attach_console () - && _major (myself->ctty) == DEV_CONS_MAJOR - && !(!pinfo (myself->ppid) && getenv ("ConEmuPID"))) - { - HANDLE hello = CreateEvent (&sec_none, true, false, NULL); - HANDLE goodbye = CreateEvent (&sec_none, true, false, NULL); - WCHAR cmd[MAX_PATH]; - path_conv helper ("/bin/cygwin-console-helper.exe"); - size_t len = helper.get_wide_win32_path_len (); - helper.get_wide_win32_path (cmd); - __small_swprintf (cmd + len, L" %p %p", hello, goodbye); - - STARTUPINFOEXW si; - PROCESS_INFORMATION pi; - ZeroMemory (&si, sizeof (si)); - si.StartupInfo.cb = sizeof (STARTUPINFOEXW); - - SIZE_T bytesRequired; - InitializeProcThreadAttributeList (NULL, 1, 0, &bytesRequired); - si.lpAttributeList = (PPROC_THREAD_ATTRIBUTE_LIST) - HeapAlloc (GetProcessHeap (), 0, bytesRequired); - InitializeProcThreadAttributeList (si.lpAttributeList, - 1, 0, &bytesRequired); - HANDLE handles_to_inherit[] = {hello, goodbye}; - UpdateProcThreadAttribute (si.lpAttributeList, - 0, - PROC_THREAD_ATTRIBUTE_HANDLE_LIST, - handles_to_inherit, - sizeof (handles_to_inherit), - NULL, NULL); - if (CreateProcessW (NULL, cmd, &sec_none, &sec_none, - TRUE, EXTENDED_STARTUPINFO_PRESENT, - NULL, NULL, &si.StartupInfo, &pi)) - { - WaitForSingleObject (hello, INFINITE); - CloseHandle (hello); - CloseHandle (pi.hThread); - helper_goodbye = goodbye; - helper_pid = pi.dwProcessId; - helper_h_process = pi.hProcess; - } - else - { - CloseHandle (hello); - CloseHandle (goodbye); - } - DeleteProcThreadAttributeList (si.lpAttributeList); - HeapFree (GetProcessHeap (), 0, si.lpAttributeList); - } - master_fwd_thread = new cygthread (::pty_master_fwd_thread, this, "ptymf"); if (!master_fwd_thread) { @@ -3877,7 +3825,6 @@ fhandler_pty_master::get_master_fwd_thread_param (master_fwd_thread_param_t *p) p->from_slave_nat = from_slave_nat; p->output_mutex = output_mutex; p->ttyp = get_ttyp (); - p->helper_pid = helper_pid; SetEvent (thread_param_copied_event); } @@ -4189,7 +4136,7 @@ fhandler_pty_slave::setpgid_aux (pid_t pid) 0, TRUE, DUPLICATE_SAME_ACCESS); CloseHandle (pcon_owner); DWORD target_pid = get_ttyp ()->nat_pipe_owner_pid; - resume_pid = attach_console_temporarily (target_pid, 0); + resume_pid = attach_console_temporarily (target_pid); attach_restore = true; } else @@ -4235,15 +4182,12 @@ fhandler_pty_slave::release_ownership_of_nat_pipe (tty *ttyp, } DWORD -fhandler_pty_common::attach_console_temporarily (DWORD target_pid, - DWORD helper_pid) +fhandler_pty_common::attach_console_temporarily (DWORD target_pid) { DWORD resume_pid = 0; acquire_attach_mutex (mutex_timeout); pinfo pinfo_resume (myself->ppid); - if (helper_pid) - resume_pid = helper_pid; - else if (pinfo_resume) + if (pinfo_resume) resume_pid = pinfo_resume->dwProcessId; if (!resume_pid) resume_pid = get_console_process_id (myself->dwProcessId, false); diff --git a/winsup/cygwin/fhandler/termios.cc b/winsup/cygwin/fhandler/termios.cc index 517e74e774..fe4dfd13ec 100644 --- a/winsup/cygwin/fhandler/termios.cc +++ b/winsup/cygwin/fhandler/termios.cc @@ -359,8 +359,7 @@ fhandler_termios::process_sigs (char c, tty* ttyp, fhandler_termios *fh) DWORD resume_pid = 0; if (fh && !fh->is_console ()) resume_pid = - fhandler_pty_common::attach_console_temporarily - (p->dwProcessId, fh->get_helper_pid ()); + fhandler_pty_common::attach_console_temporarily (p->dwProcessId); if (fh && p == myself && being_debugged ()) { /* Avoid deadlock in gdb on console. */ fh->tcflush(TCIFLUSH); diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 6671d8a05c..8c320421b6 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -1987,7 +1987,6 @@ class fhandler_termios: public fhandler_base virtual void setpgid_aux (pid_t pid) {} virtual bool need_console_handler () { return false; } virtual bool need_send_ctrl_c_event () { return true; } - virtual DWORD get_helper_pid () { return 0; } struct ptys_handle_set_t { @@ -2378,7 +2377,7 @@ class fhandler_pty_common: public fhandler_termios bool cygwin = false, bool stub_only = false); bool to_be_read_from_nat_pipe (void); - static DWORD attach_console_temporarily (DWORD target_pid, DWORD helper_pid); + static DWORD attach_console_temporarily (DWORD target_pid); static void resume_from_temporarily_attach (DWORD resume_pid); protected: @@ -2501,7 +2500,6 @@ class fhandler_pty_master: public fhandler_pty_common HANDLE from_slave_nat; HANDLE output_mutex; tty *ttyp; - DWORD helper_pid; }; private: int pktmode; // non-zero if pty in a packet mode. @@ -2515,7 +2513,6 @@ class fhandler_pty_master: public fhandler_pty_common HANDLE thread_param_copied_event; HANDLE helper_goodbye; HANDLE helper_h_process; - DWORD helper_pid; public: HANDLE get_echo_handle () const { return echo_r; } @@ -2570,7 +2567,6 @@ class fhandler_pty_master: public fhandler_pty_common void get_master_fwd_thread_param (master_fwd_thread_param_t *p); void set_mask_flusho (bool m) { get_ttyp ()->mask_flusho = m; } bool need_send_ctrl_c_event (); - DWORD get_helper_pid () { return helper_pid; } }; class fhandler_dev_null: public fhandler_base diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index 17d2d74293..c26324fd6d 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -33,7 +33,6 @@ struct wincaps unsigned has_linux_tcp_keepalive_sockopts : 1; unsigned has_tcp_maxrtms : 1; unsigned has_con_broken_tabs : 1; - unsigned has_broken_attach_console : 1; unsigned cons_need_small_input_record_buf : 1; }; }; @@ -87,7 +86,6 @@ class wincapc bool IMPLEMENT (has_linux_tcp_keepalive_sockopts) bool IMPLEMENT (has_tcp_maxrtms) bool IMPLEMENT (has_con_broken_tabs) - bool IMPLEMENT (has_broken_attach_console) bool IMPLEMENT (cons_need_small_input_record_buf) void disable_case_sensitive_dirs () diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index c52d415401..fe5986c76e 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -40,7 +40,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - has_broken_attach_console:true, cons_need_small_input_record_buf:true, }, }; @@ -66,7 +65,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -92,7 +90,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -118,7 +115,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -144,7 +140,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, has_con_broken_tabs:false, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -170,7 +165,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, has_con_broken_tabs:true, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -196,7 +190,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -222,7 +215,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -248,7 +240,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -274,7 +265,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -300,7 +290,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; @@ -326,7 +315,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:false, - has_broken_attach_console:false, cons_need_small_input_record_buf:false, }, }; From 8af023a357fba8974be89af41a6c42d09374ac46 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:43:15 +0100 Subject: [PATCH 008/767] Cygwin: drop wincap::cons_need_small_input_record_buf Only required for Windows 7. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/console.cc | 29 +++++++++------------------ winsup/cygwin/local_includes/wincap.h | 2 -- winsup/cygwin/wincap.cc | 12 ----------- 3 files changed, 9 insertions(+), 34 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index a4a367005d..bbf4b0103b 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -302,9 +302,6 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) return; } - DWORD inrec_size1 = - wincap.cons_need_small_input_record_buf () ? INREC_SIZE : inrec_size; - struct m { inline static size_t bytes (size_t n) @@ -354,11 +351,7 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) if (new_input_tmp) input_tmp = new_input_tmp; if (new_input_rec && new_input_tmp) - { - inrec_size = new_inrec_size; - if (!wincap.cons_need_small_input_record_buf ()) - inrec_size1 = inrec_size; - } + inrec_size = new_inrec_size; } WaitForSingleObject (p->input_mutex, mutex_timeout); @@ -373,7 +366,7 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) { DWORD len; ReadConsoleInputW (p->input_handle, input_rec + total_read, - min (inrec_size - total_read, inrec_size1), + min (inrec_size - total_read, inrec_size), &len); total_read += len; } @@ -471,7 +464,7 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) { DWORD len; WriteConsoleInputW (p->input_handle, input_rec + n, - min (total_read - n, inrec_size1), &len); + min (total_read - n, inrec_size), &len); n += len; } release_attach_mutex (); @@ -491,22 +484,18 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) if (new_input_tmp) input_tmp = new_input_tmp; if (new_input_rec && new_input_tmp) - { - inrec_size = new_inrec_size; - if (!wincap.cons_need_small_input_record_buf ()) - inrec_size1 = inrec_size; - } + inrec_size = new_inrec_size; } /* Check if writeback was successfull. */ acquire_attach_mutex (mutex_timeout); - PeekConsoleInputW (p->input_handle, input_tmp, inrec_size1, &n); + PeekConsoleInputW (p->input_handle, input_tmp, inrec_size, &n); release_attach_mutex (); - if (n < min (total_read, inrec_size1)) + if (n < min (total_read, inrec_size)) break; /* Someone has read input without acquiring input_mutex. ConEmu cygwin-connector? */ if (inrec_eq (input_rec, input_tmp, - min (total_read, inrec_size1))) + min (total_read, inrec_size))) break; /* OK */ /* Try to fix */ acquire_attach_mutex (mutex_timeout); @@ -516,7 +505,7 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) { DWORD len; ReadConsoleInputW (p->input_handle, input_tmp + n, - min (inrec_size - n, inrec_size1), &len); + min (inrec_size - n, inrec_size), &len); n += len; } release_attach_mutex (); @@ -549,7 +538,7 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) DWORD len; WriteConsoleInputW (p->input_handle, input_tmp + l, - min (n - l, inrec_size1), + min (n - l, inrec_size), &len); l += len; } diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index c26324fd6d..96bd68a93f 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -33,7 +33,6 @@ struct wincaps unsigned has_linux_tcp_keepalive_sockopts : 1; unsigned has_tcp_maxrtms : 1; unsigned has_con_broken_tabs : 1; - unsigned cons_need_small_input_record_buf : 1; }; }; @@ -86,7 +85,6 @@ class wincapc bool IMPLEMENT (has_linux_tcp_keepalive_sockopts) bool IMPLEMENT (has_tcp_maxrtms) bool IMPLEMENT (has_con_broken_tabs) - bool IMPLEMENT (cons_need_small_input_record_buf) void disable_case_sensitive_dirs () { diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index fe5986c76e..f83eed8a7e 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -40,7 +40,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - cons_need_small_input_record_buf:true, }, }; @@ -65,7 +64,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - cons_need_small_input_record_buf:false, }, }; @@ -90,7 +88,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - cons_need_small_input_record_buf:false, }, }; @@ -115,7 +112,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, - cons_need_small_input_record_buf:false, }, }; @@ -140,7 +136,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, has_con_broken_tabs:false, - cons_need_small_input_record_buf:false, }, }; @@ -165,7 +160,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, has_con_broken_tabs:true, - cons_need_small_input_record_buf:false, }, }; @@ -190,7 +184,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - cons_need_small_input_record_buf:false, }, }; @@ -215,7 +208,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - cons_need_small_input_record_buf:false, }, }; @@ -240,7 +232,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - cons_need_small_input_record_buf:false, }, }; @@ -265,7 +256,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - cons_need_small_input_record_buf:false, }, }; @@ -290,7 +280,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, - cons_need_small_input_record_buf:false, }, }; @@ -315,7 +304,6 @@ wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:false, - cons_need_small_input_record_buf:false, }, }; From ae2829a2269010230506e08a550b80e43d2083cc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:46:52 +0100 Subject: [PATCH 009/767] Cygwin: drop wincap::mmap_storage_high Only required for Windows 7 and Windows 8. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/memory_layout.h | 9 ++------- winsup/cygwin/local_includes/wincap.h | 2 -- winsup/cygwin/wincap.cc | 12 ------------ 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/winsup/cygwin/local_includes/memory_layout.h b/winsup/cygwin/local_includes/memory_layout.h index 83ccf8f658..6a4b7a28a1 100644 --- a/winsup/cygwin/local_includes/memory_layout.h +++ b/winsup/cygwin/local_includes/memory_layout.h @@ -53,11 +53,6 @@ details. */ #define USERHEAP_START 0xa00000000UL /* The memory region used for memory maps. Mmaps grow downwards. - Set the lowest address to leave ~32 Gigs for heap. - - Up to Win 8 we only have a 44 bit address space, 48 bit address space - starting with 8.1, so the max value is a system-specific variable. */ + Set the lowest address to leave ~32 Gigs for heap. */ #define MMAP_STORAGE_LOW 0x001000000000UL -#define __MMAP_STORAGE_HIGH_LEGACY 0x070000000000UL -#define __MMAP_STORAGE_HIGH 0x700000000000UL -#define MMAP_STORAGE_HIGH wincap.mmap_storage_high () +#define MMAP_STORAGE_HIGH 0x700000000000UL diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index 96bd68a93f..d5579e7ea7 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -12,7 +12,6 @@ details. */ struct wincaps { DWORD def_guard_pages; - int64_t mmap_storage_high; /* The bitfields must be 8 byte aligned on x86_64, otherwise the bitfield ops generated by gcc are off by 4 bytes. */ struct __attribute__ ((aligned (8))) { @@ -67,7 +66,6 @@ class wincapc { return ((wincaps *) this->caps)->def_guard_pages * page_size (); } - intptr_t IMPLEMENT (mmap_storage_high) bool IMPLEMENT (is_server) bool IMPLEMENT (has_new_pebteb_region) bool IMPLEMENT (has_unprivileged_createsymlink) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index f83eed8a7e..7aefde48cb 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -21,7 +21,6 @@ details. */ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:2, - mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, has_new_pebteb_region:false, @@ -45,7 +44,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH_LEGACY, { is_server:false, has_new_pebteb_region:false, @@ -69,7 +67,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:false, @@ -93,7 +90,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:false, @@ -117,7 +113,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:false, @@ -141,7 +136,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, @@ -165,7 +159,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, @@ -189,7 +182,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, @@ -213,7 +205,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, @@ -237,7 +228,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, @@ -261,7 +251,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, @@ -285,7 +274,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { def_guard_pages:3, - mmap_storage_high:__MMAP_STORAGE_HIGH, { is_server:false, has_new_pebteb_region:true, From ef741db52b4897de7bc169e2b9e76a07ba4d1ff3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:56:42 +0100 Subject: [PATCH 010/767] Cygwin: drop wincap::def_guard_pages Only required for Windows 7. Define constant value DEFAULT_GUARD_PAGE_COUNT instead. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/memory_layout.h | 3 +++ winsup/cygwin/local_includes/wincap.h | 5 +++-- winsup/cygwin/wincap.cc | 12 ------------ 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/winsup/cygwin/local_includes/memory_layout.h b/winsup/cygwin/local_includes/memory_layout.h index 6a4b7a28a1..481215b06a 100644 --- a/winsup/cygwin/local_includes/memory_layout.h +++ b/winsup/cygwin/local_includes/memory_layout.h @@ -56,3 +56,6 @@ details. */ Set the lowest address to leave ~32 Gigs for heap. */ #define MMAP_STORAGE_LOW 0x001000000000UL #define MMAP_STORAGE_HIGH 0x700000000000UL + +/* Default number of pages used as thread stack guard pages. */ +#define DEFAULT_GUARD_PAGE_COUNT 3 diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index d5579e7ea7..c6dbd23110 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -9,9 +9,10 @@ details. */ #ifndef _WINCAP_H #define _WINCAP_H +#include "memory_layout.h" + struct wincaps { - DWORD def_guard_pages; /* The bitfields must be 8 byte aligned on x86_64, otherwise the bitfield ops generated by gcc are off by 4 bytes. */ struct __attribute__ ((aligned (8))) { @@ -64,7 +65,7 @@ class wincapc DWORD def_guard_page_size () const { - return ((wincaps *) this->caps)->def_guard_pages * page_size (); + return DEFAULT_GUARD_PAGE_COUNT * page_size (); } bool IMPLEMENT (is_server) bool IMPLEMENT (has_new_pebteb_region) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 7aefde48cb..702d99e15b 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -20,7 +20,6 @@ details. */ puzzled that this has never been noticed before... */ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:2, { is_server:false, has_new_pebteb_region:false, @@ -43,7 +42,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { }; wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:false, @@ -66,7 +64,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { }; wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:false, @@ -89,7 +86,6 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { }; wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:false, @@ -112,7 +108,6 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) }; wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:false, @@ -135,7 +130,6 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) }; wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, @@ -158,7 +152,6 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = }; wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, @@ -181,7 +174,6 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = }; wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, @@ -204,7 +196,6 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = }; wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, @@ -227,7 +218,6 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = }; wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, @@ -250,7 +240,6 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = }; wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, @@ -273,7 +262,6 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = }; wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { - def_guard_pages:3, { is_server:false, has_new_pebteb_region:true, From 21d098eab1bbd35dc85ffc37c8290319510c14b1 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 17:59:44 +0100 Subject: [PATCH 011/767] Cygwin: drop wincaps for Windows 7 and Windows 8 Signed-off-by: Corinna Vinschen --- winsup/cygwin/wincap.cc | 58 +---------------------------------------- 1 file changed, 1 insertion(+), 57 deletions(-) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 702d99e15b..cc10e90dcc 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -19,50 +19,6 @@ details. */ in the same session. I'm only writing this longish comment because I'm puzzled that this has never been noticed before... */ -wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = { - { - is_server:false, - has_new_pebteb_region:false, - has_unprivileged_createsymlink:false, - has_precise_interrupt_time:false, - has_posix_unlink_semantics:false, - has_posix_unlink_semantics_with_ignore_readonly:false, - has_case_sensitive_dirs:false, - has_posix_rename_semantics:false, - has_con_24bit_colors:false, - has_con_broken_csi3j:false, - has_con_broken_il_dl:false, - has_con_esc_rep:false, - has_extended_mem_api:false, - has_tcp_fastopen:false, - has_linux_tcp_keepalive_sockopts:false, - has_tcp_maxrtms:false, - has_con_broken_tabs:false, - }, -}; - -wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = { - { - is_server:false, - has_new_pebteb_region:false, - has_unprivileged_createsymlink:false, - has_precise_interrupt_time:false, - has_posix_unlink_semantics:false, - has_posix_unlink_semantics_with_ignore_readonly:false, - has_case_sensitive_dirs:false, - has_posix_rename_semantics:false, - has_con_24bit_colors:false, - has_con_broken_csi3j:false, - has_con_broken_il_dl:false, - has_con_esc_rep:false, - has_extended_mem_api:false, - has_tcp_fastopen:false, - has_linux_tcp_keepalive_sockopts:false, - has_tcp_maxrtms:false, - has_con_broken_tabs:false, - }, -}; - wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { { is_server:false, @@ -304,19 +260,7 @@ wincapc::init () switch (version.dwMajorVersion) { case 6: - switch (version.dwMinorVersion) - { - case 1: - caps = &wincap_7; - break; - case 2: - caps = &wincap_8; - break; - case 3: - default: - caps = &wincap_8_1; - break; - } + caps = &wincap_8_1; break; case 10: default: From 6951d258ebdc52711f94aa7c82ad223cf3700026 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 21:36:48 +0100 Subject: [PATCH 012/767] Cygwin: simplify FAST_CWD access Dropping Windows 7 and 8 also drops the need to handle three different FAST_CWD structures. Simplify code accordingly. While at it, use dynamic allocation of the FAST_CWD structure based on the length of the CWD path. This may help in future to enable working with systems and native apps with long paths enabled (Win 10 1607 and later), see https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-version-1607-and-later Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/cygheap.h | 75 ++--------- winsup/cygwin/path.cc | 165 +++++-------------------- 2 files changed, 42 insertions(+), 198 deletions(-) diff --git a/winsup/cygwin/local_includes/cygheap.h b/winsup/cygwin/local_includes/cygheap.h index 347cbf448d..ceff0fdcf0 100644 --- a/winsup/cygwin/local_includes/cygheap.h +++ b/winsup/cygwin/local_includes/cygheap.h @@ -196,12 +196,6 @@ class cygheap_user /* cwd cache stuff. */ -enum fcwd_version_t { - FCWD_OLD, - FCWD_W7, - FCWD_W8 -}; - /* This class is used to store the CWD. The CWD storage in the RTL_USER_PROCESS_PARAMETERS block is only an afterthought now. The actual CWD storage is a FAST_CWD structure which is allocated on the process heap. @@ -211,64 +205,17 @@ enum fcwd_version_t { details depending on OS version from the calling functions. The layout of all structures has been tested on 32 and 64 bit. */ class fcwd_access_t { - /* This is the layout used in Windows 8 and later. */ - struct FAST_CWD_8 { - LONG ReferenceCount; /* Only release when this is 0. */ - HANDLE DirectoryHandle; - ULONG OldDismountCount; /* Reflects the system DismountCount - at the time the CWD has been set. */ - UNICODE_STRING Path; /* Path's Buffer member always refers - to the following Buffer array. */ - LONG FSCharacteristics; /* Taken from FileFsDeviceInformation */ - WCHAR Buffer[MAX_PATH] __attribute ((aligned (8))); - }; - /* This is the layout used in Windows 7. */ - struct FAST_CWD_7 { - UNICODE_STRING Path; /* Path's Buffer member always refers - to the following Buffer array. */ - HANDLE DirectoryHandle; - LONG FSCharacteristics; /* Taken from FileFsDeviceInformation */ - LONG ReferenceCount; /* Only release when this is 0. */ - ULONG OldDismountCount; /* Reflects the system DismountCount + LONG ReferenceCount; /* Only release when this is 0. */ + HANDLE DirectoryHandle; + ULONG OldDismountCount; /* Reflects the system DismountCount at the time the CWD has been set. */ - WCHAR Buffer[MAX_PATH] __attribute ((aligned (8))); - }; - /* This is the old FAST_CWD structure up to the patch from KB 2393802, - release in February 2011. */ - struct FAST_CWD_OLD { - LONG ReferenceCount; /* Only release when this is 0. */ - HANDLE DirectoryHandle; - ULONG OldDismountCount; /* Reflects the system DismountCount - at the time the CWD has been set. */ - UNICODE_STRING Path; /* Path's Buffer member always refers + UNICODE_STRING Path; /* Path's Buffer member always refers to the following Buffer array. */ - WCHAR Buffer[MAX_PATH]; - }; - union { - FAST_CWD_OLD fold; - FAST_CWD_7 f7; - FAST_CWD_8 f8; - }; - -#define IMPLEMENT(type, name) \ - type name () { \ - switch (fast_cwd_version ()) { \ - case FCWD_OLD: \ - default: \ - return fold.name; \ - case FCWD_W7: \ - return f7.name; \ - case FCWD_W8: \ - return f8.name; \ - } \ - } - IMPLEMENT (LONG &, ReferenceCount) - IMPLEMENT (HANDLE &, DirectoryHandle) - IMPLEMENT (ULONG &, OldDismountCount) - IMPLEMENT (UNICODE_STRING &, Path) - IMPLEMENT (WCHAR *, Buffer) - void SetFSCharacteristics (LONG val); - static fcwd_version_t &fast_cwd_version (void); + LONG FSCharacteristics; /* Taken from FileFsDeviceInformation */ + /* fcwd_access_t is dynamically allocated with a size of + sizeof(fcwd_access_t) + cwd.Length. Preallocating 2 chars + here allows to append a trailing backslash and NUL. */ + WCHAR Buffer[2] __attribute ((aligned (8))); public: void CopyPath (UNICODE_STRING &target); @@ -295,10 +242,6 @@ class cwdstuff ntdll.dll pointing to the FAST_CWD structure which constitutes the CWD. Unfortunately RtlpCurDirRef is not exported from ntdll.dll. */ fcwd_access_t **fast_cwd_ptr; - /* Type of FAST_CWD used on this system. Keeping this information - available in shared memory avoids to test for the version every time - around. Default to new version. */ - fcwd_version_t fast_cwd_version; void override_win32_cwd (bool init, ULONG old_dismount_count); public: diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 4babd10b8a..e7619270a2 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -4312,17 +4312,6 @@ cygwin_split_path (const char *path, char *dir, char *file) file[end - last_slash - 1] = 0; } -static inline void -copy_cwd_str (PUNICODE_STRING tgt, PUNICODE_STRING src) -{ - RtlCopyUnicodeString (tgt, src); - if (tgt->Buffer[tgt->Length / sizeof (WCHAR) - 1] != L'\\') - { - tgt->Buffer[tgt->Length / sizeof (WCHAR)] = L'\\'; - tgt->Length += sizeof (WCHAR); - } -} - /*****************************************************************************/ /* The find_fast_cwd_pointer function and parts of the @@ -4357,36 +4346,13 @@ copy_cwd_str (PUNICODE_STRING tgt, PUNICODE_STRING src) USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -void -fcwd_access_t::SetFSCharacteristics (LONG val) -{ - /* Special case FSCharacteristics. Didn't exist originally. */ - switch (fast_cwd_version ()) - { - case FCWD_OLD: - break; - case FCWD_W7: - f7.FSCharacteristics = val; - break; - case FCWD_W8: - f8.FSCharacteristics = val; - break; - } -} - -fcwd_version_t & -fcwd_access_t::fast_cwd_version () -{ - return cygheap->cwd.fast_cwd_version; -} - void fcwd_access_t::CopyPath (UNICODE_STRING &target) { /* Copy the Path contents over into the UNICODE_STRING referenced by target. This is used to set the CurrentDirectoryName in the user parameter block. */ - target = Path (); + target = Path; } void @@ -4394,12 +4360,12 @@ fcwd_access_t::Free (PVOID heap) { /* Decrement the reference count. If it's down to 0, free structure from heap. */ - if (InterlockedDecrement (&ReferenceCount ()) == 0) + if (InterlockedDecrement (&ReferenceCount) == 0) { /* The handle on init is always a fresh one, not the handle inherited from the parent process. We always have to close it here. Note: The handle could be NULL, if we cd'ed into a virtual dir. */ - HANDLE h = DirectoryHandle (); + HANDLE h = DirectoryHandle; if (h) NtClose (h); RtlFreeHeap (heap, 0, this); @@ -4408,34 +4374,35 @@ fcwd_access_t::Free (PVOID heap) void fcwd_access_t::FillIn (HANDLE dir, PUNICODE_STRING name, - ULONG old_dismount_count) + ULONG old_dismount_count) { /* Fill in all values into this FAST_CWD structure. */ - DirectoryHandle () = dir; - ReferenceCount () = 1; - OldDismountCount () = old_dismount_count; - /* The new structure stores the device characteristics of the + DirectoryHandle = dir; + ReferenceCount = 1; + OldDismountCount = old_dismount_count; + /* The fcwd structure stores the device characteristics of the volume holding the dir. RtlGetCurrentDirectory_U checks if the FILE_REMOVABLE_MEDIA flag is set and, if so, checks if the volume is still the same as the one used when opening the directory handle. We don't call NtQueryVolumeInformationFile for the \\?\PIPE, though. It just returns STATUS_INVALID_HANDLE anyway. */ - if (fast_cwd_version () != FCWD_OLD) + FSCharacteristics = 0; + if (name != &ro_u_pipedir) { - SetFSCharacteristics (0); - if (name != &ro_u_pipedir) - { - IO_STATUS_BLOCK io; - FILE_FS_DEVICE_INFORMATION ffdi; - if (NT_SUCCESS (NtQueryVolumeInformationFile (dir, &io, &ffdi, - sizeof ffdi, FileFsDeviceInformation))) - SetFSCharacteristics (ffdi.Characteristics); - } + IO_STATUS_BLOCK io; + FILE_FS_DEVICE_INFORMATION ffdi; + if (NT_SUCCESS (NtQueryVolumeInformationFile (dir, &io, &ffdi, + sizeof ffdi, FileFsDeviceInformation))) + FSCharacteristics = ffdi.Characteristics; + } + RtlInitEmptyUnicodeString (&Path, Buffer, name->MaximumLength); + RtlCopyUnicodeString (&Path, name); + if (Path.Buffer[Path.Length / sizeof (WCHAR) - 1] != L'\\') + { + Path.Buffer[Path.Length / sizeof (WCHAR)] = L'\\'; + Path.Length += sizeof (WCHAR); } - RtlInitEmptyUnicodeString (&Path (), Buffer (), - MAX_PATH * sizeof (WCHAR)); - copy_cwd_str (&Path (), name); } void @@ -4447,43 +4414,9 @@ fcwd_access_t::SetDirHandleFromBufferPointer (PWCHAR buf_p, HANDLE dir) on the version and overwrites the directory handle. It is only used if we couldn't figure out the address of fast_cwd_ptr. */ fcwd_access_t *f_cwd; - switch (fast_cwd_version ()) - { - case FCWD_OLD: - default: - f_cwd = (fcwd_access_t *) - ((PBYTE) buf_p - __builtin_offsetof (FAST_CWD_OLD, Buffer)); - break; - case FCWD_W7: - f_cwd = (fcwd_access_t *) - ((PBYTE) buf_p - __builtin_offsetof (FAST_CWD_7, Buffer)); - break; - case FCWD_W8: - f_cwd = (fcwd_access_t *) - ((PBYTE) buf_p - __builtin_offsetof (FAST_CWD_8, Buffer)); - break; - } - f_cwd->DirectoryHandle () = dir; -} - -void -fcwd_access_t::SetVersionFromPointer (PBYTE buf_p, bool is_buffer) -{ - /* Given a pointer to the FAST_CWD structure (is_buffer == false) or a - pointer to the Buffer within (is_buffer == true), this function - computes the FAST_CWD version by checking that Path.MaximumLength - equals MAX_PATH, and that Path.Buffer == Buffer. */ - if (is_buffer) - buf_p -= __builtin_offsetof (FAST_CWD_8, Buffer); - fcwd_access_t *f_cwd = (fcwd_access_t *) buf_p; - if (f_cwd->f8.Path.MaximumLength == MAX_PATH * sizeof (WCHAR) - && f_cwd->f8.Path.Buffer == f_cwd->f8.Buffer) - fast_cwd_version () = FCWD_W8; - else if (f_cwd->f7.Path.MaximumLength == MAX_PATH * sizeof (WCHAR) - && f_cwd->f7.Path.Buffer == f_cwd->f7.Buffer) - fast_cwd_version () = FCWD_W7; - else - fast_cwd_version () = FCWD_OLD; + f_cwd = (fcwd_access_t *) + ((PBYTE) buf_p - __builtin_offsetof (fcwd_access_t, Buffer)); + f_cwd->DirectoryHandle = dir; } /* This function scans the code in ntdll.dll to find the address of the @@ -4615,36 +4548,6 @@ find_fast_cwd () " available Cygwin version from https://cygwin.com/. If the problem persists,\n" " please see https://cygwin.com/problems.html\n\n"); } - if (f_cwd_ptr && *f_cwd_ptr) - { - /* Just evaluate structure version. */ - fcwd_access_t::SetVersionFromPointer ((PBYTE) *f_cwd_ptr, false); - } - else - { - /* If we couldn't fetch fast_cwd_ptr, or if fast_cwd_ptr is NULL(*) - we have to figure out the version from the Buffer pointer in the - ProcessParameters. - - (*) This is very unlikely to happen when starting the first - Cygwin process, since it only happens when starting the - process in a directory which can't be used as CWD by Win32, or - if the directory doesn't exist. But *if* it happens, we have - no valid FAST_CWD structure, even though upp_cwd_str.Buffer is - not NULL in that case. So we let the OS create a valid - FAST_CWD structure temporarily to have something to work with. - We know the pipe FS works. */ - PEB &peb = *NtCurrentTeb ()->Peb; - - if (f_cwd_ptr /* so *f_cwd_ptr == NULL */ - && !NT_SUCCESS (RtlSetCurrentDirectory_U (&ro_u_pipedir))) - api_fatal ("Couldn't set directory to %S temporarily.\n" - "Cannot continue.", &ro_u_pipedir); - RtlEnterCriticalSection (peb.FastPebLock); - fcwd_access_t::SetVersionFromPointer - ((PBYTE) peb.ProcessParameters->CurrentDirectoryName.Buffer, true); - RtlLeaveCriticalSection (peb.FastPebLock); - } /* Eventually, after we set the version as well, set fast_cwd_ptr. */ return f_cwd_ptr; } @@ -4657,6 +4560,7 @@ cwdstuff::override_win32_cwd (bool init, ULONG old_dismount_count) PEB &peb = *NtCurrentTeb ()->Peb; UNICODE_STRING &upp_cwd_str = peb.ProcessParameters->CurrentDirectoryName; HANDLE &upp_cwd_hdl = peb.ProcessParameters->CurrentDirectoryHandle; + PUNICODE_STRING win32_cwd_ptr = error ? &ro_u_pipedir : &win32; if (fast_cwd_ptr == (fcwd_access_t **) -1) fast_cwd_ptr = find_fast_cwd (); @@ -4665,20 +4569,18 @@ cwdstuff::override_win32_cwd (bool init, ULONG old_dismount_count) /* If we got a valid value for fast_cwd_ptr, we can simply replace the RtlSetCurrentDirectory_U function entirely. */ PVOID heap = peb.ProcessHeap; - /* First allocate a new fcwd_access_t structure on the heap. - The new fcwd_access_t structure is 4 byte bigger than the old one, - but we simply don't care, so we allocate always room for the - new one. */ + /* First allocate a new fcwd_access_t structure on the heap. */ fcwd_access_t *f_cwd = (fcwd_access_t *) - RtlAllocateHeap (heap, 0, sizeof (fcwd_access_t)); + RtlAllocateHeap (heap, 0, + sizeof (fcwd_access_t) + + win32_cwd_ptr->MaximumLength); if (!f_cwd) { debug_printf ("RtlAllocateHeap failed"); return; } /* Fill in the values. */ - f_cwd->FillIn (dir, error ? &ro_u_pipedir : &win32, - old_dismount_count); + f_cwd->FillIn (dir, win32_cwd_ptr, old_dismount_count); /* Use PEB lock when switching fast_cwd_ptr to the new FAST_CWD structure and writing the CWD to the user process parameter block. This is equivalent to calling RtlAcquirePebLock/ @@ -4718,12 +4620,12 @@ cwdstuff::override_win32_cwd (bool init, ULONG old_dismount_count) if (!init) { NTSTATUS status = - RtlSetCurrentDirectory_U (error ? &ro_u_pipedir : &win32); + RtlSetCurrentDirectory_U (win32_cwd_ptr); if (!NT_SUCCESS (status)) { RtlLeaveCriticalSection (peb.FastPebLock); debug_printf ("RtlSetCurrentDirectory_U(%S) failed, %y", - error ? &ro_u_pipedir : &win32, status); + win32_cwd_ptr); return; } } @@ -4750,7 +4652,6 @@ cwdstuff::init () { /* Initialize fast_cwd stuff. */ fast_cwd_ptr = (fcwd_access_t **) -1; - fast_cwd_version = FCWD_W7; /* Initially re-open the cwd to allow POSIX semantics. */ set (NULL, NULL); } From a3af720dee13cb83f50406c4cddda635aca03e31 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 21:50:13 +0100 Subject: [PATCH 013/767] Cygwin: fix a few comments mentioning Windows 7 or 8 Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pipe.cc | 3 --- winsup/cygwin/fhandler/proc.cc | 1 - winsup/cygwin/local_includes/ntdll.h | 3 +-- winsup/cygwin/mount.cc | 6 +++--- winsup/cygwin/resource.cc | 3 +-- 5 files changed, 5 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 608a784908..94b85c3497 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -1179,9 +1179,6 @@ fhandler_pipe::temporary_query_hdl () return get_query_hdl_per_process (name, ntfn); /* Since Win8 */ } -/* This function is faster than get_query_hdl_per_system(), however, - only works since Windows 8 because ProcessHandleInformation is not - suppoted by NtQueryInformationProcess() before Windows 8. */ HANDLE fhandler_pipe::get_query_hdl_per_process (WCHAR *name, OBJECT_NAME_INFORMATION *ntfn) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 24067f6875..332bf2a7ea 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -650,7 +650,6 @@ format_proc_cpuinfo (void *, char *&destbuf) char *buf = tp.c_get (); char *bufptr = buf; - //WORD num_cpu_groups = 1; /* Pre Windows 7, only one group... */ WORD num_cpu_per_group = __get_cpus_per_group (); cpu_num_p = wcpcpy (cpu_key, L"\\Registry\\Machine\\HARDWARE\\DESCRIPTION" diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index 0f2310882b..8c4d008832 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -961,8 +961,7 @@ typedef struct _LDR_DATA_TABLE_ENTRY ULONG Flags; USHORT LoadCount; /* More follows. Left out since it's just not used. The aforementioned - part of the structure is stable from at least NT4 up to Windows 8, - including WOW64. */ + part of the structure is stable from at least NT4 up to Windows 11. */ } LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; typedef struct _PEB_LDR_DATA diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 63c9d28741..9b40c4075a 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -294,13 +294,13 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) if (is_remote_drive ()) { /* Should be reevaluated for each new OS. Right now this mask is valid up - to Windows 8. The important point here is to test only flags indicating + to Windows 11. The important point here is to test only flags indicating capabilities and to ignore flags indicating a specific state of this volume. At present these flags to ignore are FILE_VOLUME_IS_COMPRESSED, FILE_READ_ONLY_VOLUME, and FILE_SEQUENTIAL_WRITE_ONCE. The additional filesystem flags supported since Windows 7 are also ignored for now. - They add information, but only on W7 and later, and only for filesystems - also supporting these flags, right now only NTFS. */ + They add information only for filesystems also supporting these flags, + right now only NTFS. */ #define GETVOLINFO_VALID_MASK (0x002701ffUL) #define TEST_GVI(f,m) (((f) & GETVOLINFO_VALID_MASK) == (m)) diff --git a/winsup/cygwin/resource.cc b/winsup/cygwin/resource.cc index aafc2b0b12..5ec436c2cf 100644 --- a/winsup/cygwin/resource.cc +++ b/winsup/cygwin/resource.cc @@ -218,8 +218,7 @@ __set_rlimit_as (unsigned long new_as_limit) /* If we already have a limit, we must not change it because that would potentially influence already running child processes. - Just try to create another, nested job. On systems prior to - Windows 8 / Server 2012 this will fail, but that's ok. */ + Just try to create another, nested job. */ while (new_as_id == 0) new_as_id = InterlockedIncrement (&job_serial_number); RtlInitUnicodeString (&uname, From df680fb62df0bb0f30e7fda6ab0adc713937cb54 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 21:51:14 +0100 Subject: [PATCH 014/767] Cygwin: flock: drop checking for artificial console handles They have been used up to Windows 7 only. Signed-off-by: Corinna Vinschen --- winsup/cygwin/flock.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc index 50db7fe28e..0f1efa01d4 100644 --- a/winsup/cygwin/flock.cc +++ b/winsup/cygwin/flock.cc @@ -951,10 +951,8 @@ fhandler_base::lock (int a_op, struct flock *fl) a_flags = F_POSIX; /* default */ /* FIXME: For BSD flock(2) we need a valid, per file table entry OS handle. - Therefore we can't allow using flock(2) on nohandle devices and - pre-Windows 8 console handles (recognized by their odd handle value). */ - if ((a_flags & F_FLOCK) - && (nohandle () || (((uintptr_t) get_handle () & 0x3) == 0x3))) + Therefore we can't allow using flock(2) on nohandle devices. */ + if ((a_flags & F_FLOCK) && nohandle ()) { set_errno (EINVAL); debug_printf ("BSD locking on nohandle and old-style console devices " From 7d2c5efffa87d233f40c3d0c220fd4041b68b08d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 21:52:28 +0100 Subject: [PATCH 015/767] Cygwin: drop special handling for SID authority 18 This was only required up to Windows 8. Signed-off-by: Corinna Vinschen --- winsup/cygwin/uinfo.cc | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 2dd0c6e79d..30df6db6d8 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -2578,18 +2578,6 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) } acc_type = SidTypeUnknown; } - else if (sid_id_auth (sid) == 18) - { - /* Authentication assertion SIDs. - - Available when using a 2012R2 DC, but not supported by - LookupAccountXXX on pre Windows 8/2012 machines */ - uid = 0x11200 + sid_sub_auth_rid (sid); - wcpcpy (name = namebuf, sid_sub_auth_rid (sid) == 1 - ? (PWCHAR) L"Authentication authority asserted identity" - : (PWCHAR) L"Service asserted identity"); - acc_type = SidTypeUnknown; - } else if (sid_id_auth (sid) == 22) { /* Samba UNIX Users/Groups From a3ae2a7348927a6afd88d518797a42ebc4d588c6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Nov 2022 22:12:03 +0100 Subject: [PATCH 016/767] Cygwin: don't autoload some kernel32 functions DiscardVirtualMemory, PrefetchVirtualMemory and GetSystemTimePreciseAsFileTime are available since Windows 8.1. Merge PseudoConsole functions into kernel32 function block. Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index cdf6e75de6..8ef84bf398 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -462,10 +462,10 @@ LoadDLLfunc (GetUdpTable, 12, iphlpapi) LoadDLLfunc (if_indextoname, 8, iphlpapi) LoadDLLfunc (if_nametoindex, 4, iphlpapi) -LoadDLLfuncEx2 (DiscardVirtualMemory, 8, kernel32, 1, 127) -LoadDLLfunc (GetSystemTimePreciseAsFileTime, 4, kernel32) +LoadDLLfuncEx (ClosePseudoConsole, 4, kernel32, 1) +LoadDLLfuncEx (CreatePseudoConsole, 20, kernel32, 1) LoadDLLfuncEx (IsWow64Process2, 12, kernel32, 1) -LoadDLLfuncEx (PrefetchVirtualMemory, 16, kernel32, 1) +LoadDLLfuncEx (ResizePseudoConsole, 8, kernel32, 1) /* MSDN claims these are exported by kernel32.dll, but only QueryUnbiasedInterruptTime actually is. The others are only @@ -637,7 +637,4 @@ LoadDLLfunc (PdhAddEnglishCounterW, 16, pdh) LoadDLLfunc (PdhCollectQueryData, 4, pdh) LoadDLLfunc (PdhGetFormattedCounterValue, 16, pdh) LoadDLLfunc (PdhOpenQueryW, 12, pdh) -LoadDLLfuncEx (CreatePseudoConsole, 20, kernel32, 1) -LoadDLLfuncEx (ResizePseudoConsole, 8, kernel32, 1) -LoadDLLfuncEx (ClosePseudoConsole, 4, kernel32, 1) } From e9d843ec74b616bbaaadb4f74b13c13ca1bf8e2a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 Dec 2022 12:19:49 +0100 Subject: [PATCH 017/767] Cygwin: Add 3.5.0 release file Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 winsup/cygwin/release/3.5.0 diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 new file mode 100644 index 0000000000..11c9aa0c9a --- /dev/null +++ b/winsup/cygwin/release/3.5.0 @@ -0,0 +1,5 @@ +What's new: +----------- + +- Drop support for Windows 7, Windows 8, Server 2008 R2 and Server 2012. + From 95f5b0a62036ad123042914eb07c5cfa8569828c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 Dec 2022 12:20:26 +0100 Subject: [PATCH 018/767] Cygwin: link mcountFunc.o to libgmon.a Commit 188d5f6c9ad5 erroneously moved the mcountFunc.S file to the TARGET_FILES target, rather than keeping it in GMON_FILES. The result is that the __fentry__ entry point is now entirely undefined, so `gcc -pg' is broken. Create new target-specific GMON_TARGET_FILES and move mcountFunc.S into it. Add $(GMON_TARGET_FILES) to GMON_FILES. Fixes: 188d5f6c9ad5 ("Cygwin: x86_64: add wmemset assembler entry point") Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 9 +++++++-- winsup/cygwin/release/3.4.1 | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 winsup/cygwin/release/3.4.1 diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 1d57e8492e..8ba5ae2717 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -55,8 +55,7 @@ TEST_LIB_NAME=libcygwin0.a if TARGET_X86_64 TARGET_FILES= \ x86_64/memcpy.s \ - x86_64/memset.s \ - x86_64/mcountFunc.S + x86_64/memset.s endif LIB_FILES= \ @@ -354,7 +353,13 @@ DLL_FILES= \ window.cc \ winf.cc +if TARGET_X86_64 +GMON_TARGET_FILES = \ + x86_64/mcountFunc.S +endif + GMON_FILES= \ + $(GMON_TARGET_FILES) \ gmon.c \ mcount.c \ profil.c diff --git a/winsup/cygwin/release/3.4.1 b/winsup/cygwin/release/3.4.1 new file mode 100644 index 0000000000..59f6eb0131 --- /dev/null +++ b/winsup/cygwin/release/3.4.1 @@ -0,0 +1,6 @@ +Bug Fixes +--------- + +- Fix an error introduced into the build process, resulting in `gcc -pg' + becoming disfunctional. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252619.html From 0b09753a3f0c17164c877cf5ae9ebbc617bcf302 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Wed, 7 Dec 2022 10:59:23 +0000 Subject: [PATCH 019/767] libc: fix fropen/fwopen compile warnings This patch fixes warnings that appears when compiling: #define fwopen(__cookie,__fn) funopen(__cookie, (int (*)())0, __fn, (fpos_t (*)())0, (int (*)())0) Expands to: funopen(__null, (int (*)())0, &app_printf, (fpos_t (*)())0, (int (*)())0) argument of type "int (*)()" is incompatible with parameter of type "int (*)(void *__cookie, char *__buf, int __n)"C/C++(167) invalid conversion from 'fpos_t (*)()' {aka 'long int (*)()'} to 'fpos_t (*)(void*, fpos_t, int)' {aka 'long int (*)(void*, Discussion is here: https://github.com/espressif/arduino-esp32/issues/7407 --- newlib/libc/include/stdio.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h index ea4ddf3293..77966578d8 100644 --- a/newlib/libc/include/stdio.h +++ b/newlib/libc/include/stdio.h @@ -620,10 +620,8 @@ FILE *_funopen_r (struct _reent *, const void *__cookie, int (*__closefn)(void *__cookie)); # endif /* !__LARGE64_FILES */ -# define fropen(__cookie, __fn) funopen(__cookie, __fn, (int (*)())0, \ - (fpos_t (*)())0, (int (*)())0) -# define fwopen(__cookie, __fn) funopen(__cookie, (int (*)())0, __fn, \ - (fpos_t (*)())0, (int (*)())0) +# define fropen(__cookie, __fn) funopen(__cookie, __fn, NULL, NULL, NULL) +# define fwopen(__cookie, __fn) funopen(__cookie, NULL, __fn, NULL, NULL) #endif /* __BSD_VISIBLE */ #if __GNU_VISIBLE From 792b1c6a6d4acee79e1287369498f6ad8e75c1bf Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 Dec 2022 21:17:10 +0100 Subject: [PATCH 020/767] Cygwin: add missing pragma Add missing "#pragma GCC diagnostic push" to the pragma bracket guarding the srandom call. Signed-off-by: Corinna Vinschen --- winsup/cygwin/random.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/winsup/cygwin/random.cc b/winsup/cygwin/random.cc index 163fc040ce..6dd7e1d8de 100644 --- a/winsup/cygwin/random.cc +++ b/winsup/cygwin/random.cc @@ -307,6 +307,7 @@ srandomdev() gettimeofday(&tv, NULL); /* Avoid a compiler warning when we really want to get at the junk in an uninitialized variable. */ +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk); #pragma GCC diagnostic pop From 97eb64b909bc0a47b3159ae7f7ef2060e4bb8d54 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 Dec 2022 21:14:27 +0100 Subject: [PATCH 021/767] Cygwin: uname: generate default release string from git as well When building a release with cygport, we get uname version info from cygport, which in turn gets version info from `git describe'. During development, the release info for local builds was not that helpful yet. Fix that, by creating version info from `git describe' if CYGPORT_RELEASE_INFO isn't given. Make sure to always force rebuild of the version info to pick up source file changes as well as git actions. Rearrange code slightly to generate machine info first, release info after that. Use snprintf to generate release string safely. Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 8 +++++++- winsup/cygwin/uname.cc | 31 +++++++++++++++++-------------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 8ba5ae2717..b1849d5a67 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -365,7 +365,8 @@ GMON_FILES= \ profil.c GENERATED_FILES= \ - sigfe.s + sigfe.s \ + uname_version.c liblib_a_SOURCES= \ $(LIB_FILES) @@ -418,6 +419,11 @@ dirs = $(srcdir) $(srcdir)/fhandler $(srcdir)/lib $(srcdir)/libc $(srcdir)/math find_src_files = $(wildcard $(dir)/*.[chS]) $(wildcard $(dir)/*.cc) src_files := $(foreach dir,$(dirs),$(find_src_files)) +uname_version.c: .FORCE + $(AM_V_GEN)cd $(srcdir) && \ + echo "const char *uname_dev_version = \"$$(git describe --dirty | sed -e 's/cygwin-//')\";" > $(abs_builddir)/uname_version.c +.FORCE: + # mkvers.sh creates version.cc in the first place, winver.o always # second, so version.cc is always older than winver.o version.cc: scripts/mkvers.sh include/cygwin/version.h winver.rc $(src_files) diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc index e893660c6a..d2f93304e4 100644 --- a/winsup/cygwin/uname.cc +++ b/winsup/cygwin/uname.cc @@ -9,6 +9,7 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" +#include #include #include #include "cygwin_version.h" @@ -41,29 +42,31 @@ uname_x (struct utsname *name) memset (buf, 0, sizeof buf); cygwin_gethostname (buf, sizeof buf - 1); strncat (name->nodename, buf, sizeof (name->nodename) - 1); - /* release */ -#ifdef CYGPORT_RELEASE_INFO - stpcpy (name->release, __XSTRING (CYGPORT_RELEASE_INFO)); -#else - __small_sprintf (name->release, "%d.%d.%d-0.%d.local.", - cygwin_version.dll_major / 1000, - cygwin_version.dll_major % 1000, - cygwin_version.dll_minor, - cygwin_version.api_minor); -#endif - /* version */ - stpcpy (name->version, cygwin_version.dll_build_date); - strcat (name->version, " UTC"); /* machine */ switch (wincap.cpu_arch ()) { case PROCESSOR_ARCHITECTURE_AMD64: - strcat (name->release, strcpy (name->machine, "x86_64")); + strcpy (name->machine, "x86_64"); break; default: strcpy (name->machine, "unknown"); break; } + /* release */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-truncation=" +#ifdef CYGPORT_RELEASE_INFO + snprintf (name->release, _UTSNAME_LENGTH, "%s.%s", + __XSTRING (CYGPORT_RELEASE_INFO), name->machine); +#else + extern const char *uname_dev_version; + snprintf (name->release, _UTSNAME_LENGTH, "%s.%s", + uname_dev_version, name->machine); +#endif +#pragma GCC diagnostic pop + /* version */ + stpcpy (name->version, cygwin_version.dll_build_date); + strcat (name->version, " UTC"); /* domainame */ memset (buf, 0, sizeof buf); getdomainname (buf, sizeof buf - 1); From 4949a82cde98886a79a962bf583cdbe9a2186078 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 Dec 2022 22:22:38 +0100 Subject: [PATCH 022/767] Cygwin: uname: fix building in non-git source dir commit 97eb64b909bc broke building outside of a git dir, because the git describe command would fail. Fix this by checking if we're in a git tree at all and just generate an empty string as version string. Use this in uname_x to generate a fallback version. Fixes: 97eb64b909bc ("Cygwin: uname: generate default release string from git as well" Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 5 ++++- winsup/cygwin/uname.cc | 12 ++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index b1849d5a67..e61f72716e 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -421,7 +421,10 @@ src_files := $(foreach dir,$(dirs),$(find_src_files)) uname_version.c: .FORCE $(AM_V_GEN)cd $(srcdir) && \ - echo "const char *uname_dev_version = \"$$(git describe --dirty | sed -e 's/cygwin-//')\";" > $(abs_builddir)/uname_version.c + echo "const char *uname_dev_version = \ + \"$$(git rev-parse --git-dir >/dev/null 2>&1 && \ + git describe --dirty | sed -e 's/cygwin-//')\";" \ + > $(abs_builddir)/uname_version.c .FORCE: # mkvers.sh creates version.cc in the first place, winver.o always diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc index d2f93304e4..dd4160189c 100644 --- a/winsup/cygwin/uname.cc +++ b/winsup/cygwin/uname.cc @@ -60,8 +60,16 @@ uname_x (struct utsname *name) __XSTRING (CYGPORT_RELEASE_INFO), name->machine); #else extern const char *uname_dev_version; - snprintf (name->release, _UTSNAME_LENGTH, "%s.%s", - uname_dev_version, name->machine); + if (uname_dev_version && uname_dev_version[0]) + snprintf (name->release, _UTSNAME_LENGTH, "%s.%s", + uname_dev_version, name->machine); + else + __small_sprintf (name->release, "%d.%d.%d-api-%d.%s", + cygwin_version.dll_major / 1000, + cygwin_version.dll_major % 1000, + cygwin_version.dll_minor, + cygwin_version.api_minor, + name->machine); #endif #pragma GCC diagnostic pop /* version */ From 53ea7b2d5a3858e18b1615090701fa5bd0e28965 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 8 Dec 2022 13:04:03 +0100 Subject: [PATCH 023/767] Cygwin: drop unused local declaration of fopen64 Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/winsup.h | 1 - 1 file changed, 1 deletion(-) diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index 43dfbf46f4..44c7f08f8a 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -41,7 +41,6 @@ details. */ #ifdef __cplusplus extern "C" { #endif -struct __sFILE64 *fopen64 (const char *, const char *); struct hostent *cygwin_gethostbyname (const char *name); /* Don't enforce definition of in_addr_t. */ uint32_t cygwin_inet_addr (const char *cp); From 0f376ae22036bac2fbc7863264909b599e42616c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 8 Dec 2022 13:58:37 +0100 Subject: [PATCH 024/767] Cygwin: rename __sFILE to __sFILE64 for backward compatibility Until Cygwin 3.3.6, we define __LARGE64_FILES unconditionally, so we were using the type __sFILE64 even for 64 bit. That was lazy and wrong. so commit 2902b3a09e0a ("Cygwin: drop requirement to build newlib's stdio64") tried to fix that. Unfortunately this patch forgot to take the exposure of the typename __sFILE64 in userspace into account. This leads to trouble in C++ due to name mangling. Fix this by redefining __sFILE to __sFILE64. The type name is very much internal, so it doesn't really matter, except for the fact that it needs to stay backward compatible so as not to break building against C++ libs built under older versions of Cygwin. Fixes: 2902b3a09e0a ("Cygwin: drop requirement to build newlib's stdio64") Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/config.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/winsup/cygwin/include/cygwin/config.h b/winsup/cygwin/include/cygwin/config.h index 2a70832789..c9c3565c63 100644 --- a/winsup/cygwin/include/cygwin/config.h +++ b/winsup/cygwin/include/cygwin/config.h @@ -49,6 +49,12 @@ extern inline struct _reent *__getreent (void) #define __FILENAME_MAX__ 4096 /* Keep in sync with PATH_MAX in limits.h. */ +/* Unfortunately we defined __LARGE64_FILES until Cygwin 3.3.6, so + FILE was based on `struct __sFILE64'. The name is exposed into + userspace and consequentially used in C++ name mangling. We must + redefine __sFILE as __sFILE64 to stay backward compatible. */ +#define __sFILE __sFILE64 + /* The following block of macros is required to build newlib correctly for Cygwin. Changing them in applications has no or not the desired effect. Just leave them alone. */ From 6429a7a7f6e6881ae7b81b4b566ac6943aa74f2c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 8 Dec 2022 14:19:22 +0100 Subject: [PATCH 025/767] Cygwin: add __sFILE64 fix to 3.4.1 release notes Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.1 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/winsup/cygwin/release/3.4.1 b/winsup/cygwin/release/3.4.1 index 59f6eb0131..432113a55d 100644 --- a/winsup/cygwin/release/3.4.1 +++ b/winsup/cygwin/release/3.4.1 @@ -4,3 +4,7 @@ Bug Fixes - Fix an error introduced into the build process, resulting in `gcc -pg' becoming disfunctional. Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252619.html + +- Fix a backward incompatibility problem in the definition of the + base type of the stdio type FILE. + Addresses: https://savannah.gnu.org/bugs/index.php?63480 From 55de3fdd0e850eb4ed708dc8ea8cf1419b89ee03 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 8 Dec 2022 16:03:06 +0100 Subject: [PATCH 026/767] Cygwin: define FILE as struct __sFILE64, not as __sFILE Until Cygwin 3.3.6, we define __LARGE64_FILES unconditionally, so we were using the type __sFILE64 even for 64 bit. That was lazy and wrong. so commit 2902b3a09e0a ("Cygwin: drop requirement to build newlib's stdio64") tried to fix that. Unfortunately this patch forgot to take the exposure of the typename __sFILE64 in userspace into account. This leads to trouble in C++ due to name mangling. Commit 0f376ae22036 tried to fix this by just renaming __sFILE to __sFILE64 by using a macro. While __sFILE and __sFILE64 are the same size, they are not exactly congruent. To avoid backward compatibility problems, make sure to define FILE as the real __sFILE64, and make sure that __sFILE is not defined at all on Cygwin. Fixes: 0f376ae22036 ("Cygwin: rename __sFILE to __sFILE64 for backward compatibility") Fixes: 2902b3a09e0a ("Cygwin: drop requirement to build newlib's stdio64") Signed-off-by: Corinna Vinschen --- newlib/libc/include/sys/reent.h | 18 +++++++++++++++++- winsup/cygwin/include/cygwin/config.h | 6 ------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index 71342bebca..6d8b005b2b 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -144,6 +144,11 @@ struct __sbuf { #define _REENT_SMALL_CHECK_INIT(ptr) /* nothing */ +/* Cygwin must use __sFILE64 for backward compatibility, even though + it's not defining __LARGE64_FILES anymore. To make sure that __sFILE + is never defined, disable it here explicitely. */ +#ifndef __CYGWIN__ + struct __sFILE { unsigned char *_p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ @@ -195,13 +200,24 @@ struct __sFILE { int _flags2; /* for future use */ }; +#endif /* !__CYGWIN__ */ + #ifdef __CUSTOM_FILE_IO__ /* Get custom _FILE definition. */ #include #else /* !__CUSTOM_FILE_IO__ */ -#ifdef __LARGE64_FILES +/* Cygwin must use __sFILE64 for backward compatibility, even though + it's not defining __LARGE64_FILES anymore. It also has to make + sure the name is the same to satisfy C++ name mangling. Overloading + _fpos64_t just fixes a build problem. The _seek64 function is + actually never used without __LARGE64_FILES being defined. */ +#if defined (__LARGE64_FILES) || defined (__CYGWIN__) +#ifdef __CYGWIN__ +#define _fpos64_t _fpos_t +#endif + struct __sFILE64 { unsigned char *_p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ diff --git a/winsup/cygwin/include/cygwin/config.h b/winsup/cygwin/include/cygwin/config.h index c9c3565c63..2a70832789 100644 --- a/winsup/cygwin/include/cygwin/config.h +++ b/winsup/cygwin/include/cygwin/config.h @@ -49,12 +49,6 @@ extern inline struct _reent *__getreent (void) #define __FILENAME_MAX__ 4096 /* Keep in sync with PATH_MAX in limits.h. */ -/* Unfortunately we defined __LARGE64_FILES until Cygwin 3.3.6, so - FILE was based on `struct __sFILE64'. The name is exposed into - userspace and consequentially used in C++ name mangling. We must - redefine __sFILE as __sFILE64 to stay backward compatible. */ -#define __sFILE __sFILE64 - /* The following block of macros is required to build newlib correctly for Cygwin. Changing them in applications has no or not the desired effect. Just leave them alone. */ From 3a910b624a1bcd3d2ee625a308ba9f108a152fb7 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 9 Dec 2022 12:41:54 +0100 Subject: [PATCH 027/767] Cygwin: improve release text for FILE issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a note in terms of 3.4.0 compatibility. Suggested-by: Markus Mützel Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/release/3.4.1 b/winsup/cygwin/release/3.4.1 index 432113a55d..226329d9c2 100644 --- a/winsup/cygwin/release/3.4.1 +++ b/winsup/cygwin/release/3.4.1 @@ -6,5 +6,7 @@ Bug Fixes Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252619.html - Fix a backward incompatibility problem in the definition of the - base type of the stdio type FILE. + base type of the stdio type FILE. This requires that C++ binaries + compiled under Cygwin 3.4.0 having a public facing interface using + FILE need to be recompiled. Addresses: https://savannah.gnu.org/bugs/index.php?63480 From be635ebc2f5df7f07ebc3f1f9531f38e3c09c970 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 8 Dec 2022 22:02:43 +0900 Subject: [PATCH 028/767] Cygwin: pipe: Fix performance degradation for non-cygwin pipe. https://cygwin.com/pipermail/cygwin/2022-December/252628.html After the commit 9e4d308cd592, the performance of read from non-cygwin pipe has been degraded. This is because select_sem mechanism does not work for non-cygwin pipe. This patch fixes the issue. Fixes: 9e4d308cd592 ("Cygwin: pipe: Adopt FILE_SYNCHRONOUS_IO_NONALERT flag for read pipe.") Reported-by: tryandbuy Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pipe.cc | 16 +++++++++++++++- winsup/cygwin/release/3.4.1 | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 94b85c3497..e72ee65ca8 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -281,6 +281,8 @@ fhandler_pipe::raw_read (void *ptr, size_t& len) size_t nbytes = 0; NTSTATUS status = STATUS_SUCCESS; IO_STATUS_BLOCK io; + ULONGLONG t0 = GetTickCount64 (); /* Init timer */ + const ULONGLONG t0_threshold = 20; if (!len) return; @@ -312,6 +314,7 @@ fhandler_pipe::raw_read (void *ptr, size_t& len) { ULONG_PTR nbytes_now = 0; ULONG len1 = (ULONG) (len - nbytes); + DWORD select_sem_timeout = 0; FILE_PIPE_LOCAL_INFORMATION fpli; status = NtQueryInformationFile (get_handle (), &io, @@ -358,7 +361,18 @@ fhandler_pipe::raw_read (void *ptr, size_t& len) nbytes = (size_t) -1; break; } - waitret = cygwait (select_sem, 1); + /* If the pipe is a non-cygwin pipe, select_sem trick + does not work. As a result, the following cygwait() + will return only after timeout occurs. This causes + performance degradation. However, setting timeout + to zero causes high CPU load. So, set timeout to + non-zero only when select_sem is valid or pipe is + not ready to read for more than t0_threshold. + This prevents both the performance degradation and + the high CPU load. */ + if (select_sem || GetTickCount64 () - t0 > t0_threshold) + select_sem_timeout = 1; + waitret = cygwait (select_sem, select_sem_timeout); if (waitret == WAIT_CANCELED) pthread::static_cancel_self (); else if (waitret == WAIT_SIGNALED) diff --git a/winsup/cygwin/release/3.4.1 b/winsup/cygwin/release/3.4.1 index 226329d9c2..9a831eda55 100644 --- a/winsup/cygwin/release/3.4.1 +++ b/winsup/cygwin/release/3.4.1 @@ -10,3 +10,6 @@ Bug Fixes compiled under Cygwin 3.4.0 having a public facing interface using FILE need to be recompiled. Addresses: https://savannah.gnu.org/bugs/index.php?63480 + +- Fix performance degradation of non-cygwin pipe. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252628.html From faac79783c27c030ab17a6f298f8aa89c51a03c5 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 9 Dec 2022 10:12:02 +0900 Subject: [PATCH 029/767] Cygwin: pty: Use GetTickCount64() instead of GetTickCount(). Suggested-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 2 +- winsup/cygwin/local_includes/tty.h | 2 +- winsup/cygwin/tty.cc | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index e7106daba4..c9b05e3d76 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -2691,7 +2691,7 @@ fhandler_pty_master::pty_master_fwd_thread (const master_fwd_thread_param_t *p) termios_printf ("Started."); for (;;) { - p->ttyp->fwd_last_time = GetTickCount (); + p->ttyp->fwd_last_time = GetTickCount64 (); DWORD n; p->ttyp->fwd_not_empty = ::bytes_available (n, p->from_slave_nat) && n; diff --git a/winsup/cygwin/local_includes/tty.h b/winsup/cygwin/local_includes/tty.h index 3d0ea0c68a..cd1d6ecaac 100644 --- a/winsup/cygwin/local_includes/tty.h +++ b/winsup/cygwin/local_includes/tty.h @@ -119,7 +119,7 @@ class tty: public tty_min bool switch_to_nat_pipe; DWORD nat_pipe_owner_pid; UINT term_code_page; - DWORD fwd_last_time; + ULONGLONG fwd_last_time; bool fwd_not_empty; HANDLE h_pcon_write_pipe; HANDLE h_pcon_condrv_reference; diff --git a/winsup/cygwin/tty.cc b/winsup/cygwin/tty.cc index a862a444ec..6ec8927cb1 100644 --- a/winsup/cygwin/tty.cc +++ b/winsup/cygwin/tty.cc @@ -319,13 +319,13 @@ tty::wait_fwd () 16-32 msec even if it already has data to transfer. If the time without transfer exceeds 32 msec, the forwarding is supposed to be finished. fwd_last_time - is reset to GetTickCount() in pty master forwarding + is reset to GetTickCount64() in pty master forwarding thread when the last data is transfered. */ - const int sleep_in_nat_pipe = 16; - const int time_to_wait = sleep_in_nat_pipe * 2 + 1/* margine */; - int elapsed; + const ULONGLONG sleep_in_nat_pipe = 16; + const ULONGLONG time_to_wait = sleep_in_nat_pipe * 2 + 1/* margine */; + ULONGLONG elapsed; while (fwd_not_empty - || (elapsed = GetTickCount () - fwd_last_time) < time_to_wait) + || (elapsed = GetTickCount64 () - fwd_last_time) < time_to_wait) { int tw = fwd_not_empty ? 10 : (time_to_wait - elapsed); cygwait (tw); From 45794e0d66866d928349134ed3b91aeec5477009 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 11 Dec 2022 11:45:30 +0100 Subject: [PATCH 030/767] Cygwin: add 3.4.2 release notes Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.2 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 winsup/cygwin/release/3.4.2 diff --git a/winsup/cygwin/release/3.4.2 b/winsup/cygwin/release/3.4.2 new file mode 100644 index 0000000000..81ae336393 --- /dev/null +++ b/winsup/cygwin/release/3.4.2 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +- Fix regression in uname(2), accidentally adding a leading dot to + utsname::machine. From 5ba5e09b9d39feaedc9be0dcd88d085b256c5d40 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 12 Dec 2022 21:56:14 +0100 Subject: [PATCH 031/767] Cygwin: path handling: never substitute virtual drive with target path Move the drive substitution code after the call to GetFinalPathNameByHandleW into a local function revert_virtual_drive and add code to handle non-remote virtual drives, i. e., those created with the subst command. (Try to) make sure that virtual drives are never treated like symlinks. Fixes: 19d59ce75d53 ("Cygwin: path_conv: Rework handling native symlinks as inner path components") Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 149 ++++++++++++++++++++++++------------------ 1 file changed, 87 insertions(+), 62 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index e7619270a2..c044d5295e 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3024,6 +3024,65 @@ symlink_info::parse_device (const char *contents) return isdevice = true; } +/* Probably we have a virtual drive input path and the resulting full path + starts with the substitution. Retrieve the target path of the virtual + drive and try to revert what GetFinalPathNameByHandleW did to the + drive letter. */ +static bool +revert_virtual_drive (PUNICODE_STRING upath, PUNICODE_STRING fpath, + bool is_remote, ULONG ci_flag) +{ + /* Get the drive's target path. */ + WCHAR drive[3] = {(WCHAR) towupper (upath->Buffer[4]), L':', L'\0'}; + WCHAR target[MAX_PATH]; + UNICODE_STRING tpath; + WCHAR *p; + + DWORD remlen = QueryDosDeviceW (drive, target, MAX_PATH); + if (remlen < 3) + return false; + remlen -= 2; /* Two L'\0' */ + + if (target[remlen - 1] == L'\\') + remlen--; + RtlInitCountedUnicodeString (&tpath, target, remlen * sizeof (WCHAR)); + + const USHORT uncp_len = is_remote ? ro_u_uncp.Length / sizeof (WCHAR) - 1 : 0; + + if (is_remote) + { + /* target path starts with \??\UNC\. */ + if (RtlEqualUnicodePathPrefix (&tpath, &ro_u_uncp, TRUE)) + { + remlen -= uncp_len; + p = target + uncp_len; + } + /* target path starts with \Device\. */ + else if ((p = wcschr (target, L';')) + && p + 3 < target + remlen + && wcsncmp (p + 1, drive, 2) == 0 + && (p = wcschr (p + 3, L'\\'))) + remlen -= p - target; + else + return false; + if (wcsncasecmp (fpath->Buffer + uncp_len, p, remlen)) + return false; + } + else if (!RtlEqualUnicodePathPrefix (fpath, &tpath, TRUE)) + return false; + /* Replace fpath with source drive letter and append reminder of + final path after skipping target path */ + fpath->Buffer[4] = drive[0]; /* Drive letter */ + fpath->Buffer[5] = L':'; + WCHAR *to = fpath->Buffer + 6; /* Next to L':' */ + WCHAR *from = fpath->Buffer + uncp_len + remlen; + memmove (to, from, (wcslen (from) + 1) * sizeof (WCHAR)); + fpath->Length -= (from - to) * sizeof (WCHAR); + if (RtlEqualUnicodeString (upath, fpath, !!ci_flag)) + return false; + return true; +} + /* Check if PATH is a symlink. PATH must be a valid Win32 path name. If PATH is a symlink, put the value of the symlink--the file to @@ -3343,6 +3402,14 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, continue; } + /* Consider the situation where a virtual drive points to a native + symlink. Opening the virtual drive with FILE_OPEN_REPARSE_POINT + actually opens the symlink. If this symlink points to another + directory using a relative path, symlink evaluation goes totally + awry. We never want a virtual drive evaluated as symlink. */ + if (upath.Length <= 14) + goto file_not_symlink; + /* Reparse points are potentially symlinks. This check must be performed before checking the SYSTEM attribute for sysfile symlinks, since reparse points can have this flag set, too. */ @@ -3490,80 +3557,38 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, RtlInitCountedUnicodeString (&fpath, fpbuf, ret * sizeof (WCHAR)); if (!RtlEqualUnicodeString (&upath, &fpath, !!ci_flag)) { - /* Check if the final path is an UNC path and the incoming - path isn't. If so... */ - if (RtlEqualUnicodePathPrefix (&fpath, &ro_u_uncp, TRUE) - && !RtlEqualUnicodePathPrefix (&upath, &ro_u_uncp, TRUE)) + /* If the incoming path is a local drive letter path... */ + if (!RtlEqualUnicodePathPrefix (&upath, &ro_u_uncp, TRUE)) { - /* ...get the remote path, replace remote path - with drive letter, check again. */ - WCHAR drive[3] = - {(WCHAR) towupper (upath.Buffer[4]), L':', L'\0'}; - WCHAR remote[MAX_PATH]; - - DWORD remlen = QueryDosDeviceW (drive, remote, MAX_PATH); - if (remlen < 3) - goto file_not_symlink; /* fallback */ - remlen -= 2; /* Two L'\0' */ - - if (remote[remlen - 1] == L'\\') - remlen--; - WCHAR *p; - UNICODE_STRING rpath; - RtlInitCountedUnicodeString (&rpath, remote, - remlen * sizeof (WCHAR)); - const USHORT uncp_len = - ro_u_uncp.Length / sizeof (WCHAR) - 1; - if (RtlEqualUnicodePathPrefix (&rpath, &ro_u_uncp, TRUE)) + /* ...and the final path is an UNC path, revert to the + drive letter path syntax. */ + if (RtlEqualUnicodePathPrefix (&fpath, &ro_u_uncp, TRUE)) + { + if (!revert_virtual_drive (&upath, &fpath, true, + ci_flag)) + goto file_not_symlink; + } + /* ...otherwise, if the final path changes the drive + letter, let revert_virtual_drive check for a + virtual drive and revert that. */ + else if (upath.Buffer[5] == L':' + && (WCHAR) towupper (upath.Buffer[4]) + != (WCHAR) towupper (fpath.Buffer[4])) { - remlen -= uncp_len; - p = remote + uncp_len; + if (!revert_virtual_drive (&upath, &fpath, false, + ci_flag)) + goto file_not_symlink; } - else if ((p = wcschr (remote, L';')) - && p + 3 < remote + remlen - && wcsncmp (p + 1, drive, 2) == 0 - && (p = wcschr (p + 3, L'\\'))) - remlen -= p - remote; - else - goto file_not_symlink; /* fallback */ - if (wcsncasecmp (fpath.Buffer + uncp_len, p, remlen)) - goto file_not_symlink; /* fallback (not expected) */ - /* Hackfest */ - fpath.Buffer[4] = drive[0]; /* Drive letter */ - fpath.Buffer[5] = L':'; - WCHAR *to = fpath.Buffer + 6; /* Next to L':' */ - WCHAR *from = fpath.Buffer + uncp_len + remlen; - memmove (to, from, - (wcslen (from) + 1) * sizeof (WCHAR)); - fpath.Length -= (from - to) * sizeof (WCHAR); - if (RtlEqualUnicodeString (&upath, &fpath, !!ci_flag)) - goto file_not_symlink; } issymlink = true; /* upath.Buffer is big enough and unused from this point on. Reuse it here, avoiding yet another buffer allocation. */ char *nfpath = (char *) upath.Buffer; sys_wcstombs (nfpath, NT_MAX_PATH, fpbuf); - res = posixify (nfpath); - - /* If the incoming path consisted of a drive prefix only, - we just handle a virtual drive, created with, e.g. - - subst X: C:\foo\bar - - Treat it like a symlink. This is required to tell an - lstat caller that the "drive" is actually pointing - somewhere else, thus, it's a symlink in POSIX speak. */ - if (upath.Length == 14) /* \??\X:\ */ - { - fileattr &= ~FILE_ATTRIBUTE_DIRECTORY; - path_flags |= PATH_SYMLINK; - } /* For final paths differing in inner path components return length as negative value. This informs path_conv::check to skip realpath handling on the last path component. */ - else - res = -res; + res = -posixify (nfpath); break; } } From c8d521033751fbcccdc8ce93f22521e32c6fc6ed Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 10 Dec 2022 03:27:58 -0500 Subject: [PATCH 032/767] newlib: info: tweak iconv node to avoid collisions We have "Iconv" and "iconv" nodes which generates Iconv.html and iconv.html files. On a case-insensitive filesystem, these collide. Rename the "Iconv" node to match the chapter name that it's already using to avoid the issue. --- newlib/libc/iconv/iconv.tex | 2 +- newlib/libc/libc.texi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/libc/iconv/iconv.tex b/newlib/libc/iconv/iconv.tex index 42d04c0b61..5b1f7518a4 100644 --- a/newlib/libc/iconv/iconv.tex +++ b/newlib/libc/iconv/iconv.tex @@ -1,4 +1,4 @@ -@node Iconv +@node Encoding conversions @chapter Encoding conversions (@file{iconv.h}) This chapter describes the Newlib iconv library. diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi index d217d81182..72328e148b 100644 --- a/newlib/libc/libc.texi +++ b/newlib/libc/libc.texi @@ -151,7 +151,7 @@ into another language, under the above conditions for modified versions. * Posix:: * Syscalls:: * Arglists:: -* Iconv:: +* Encoding conversions:: * Overflow Protection:: * Document Index:: From f34db341fc8d6dbec37946dc537331be50f90343 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 13 Dec 2022 13:25:06 +0100 Subject: [PATCH 033/767] Cygwin: Makefile: only regenerate cygwin_version.c if it changes Make sure to create a new cygwin_version.c if it either doesn't exist yet, or if it would be different from the former file. This avoids unnecessary DLL rebuilding. Fixes: 97eb64b909bc ("Cygwin: uname: generate default release string from git as well") Fixes: 4949a82cde98 ("Cygwin: uname: fix building in non-git source dir") Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index e61f72716e..cf12b97f83 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -419,12 +419,20 @@ dirs = $(srcdir) $(srcdir)/fhandler $(srcdir)/lib $(srcdir)/libc $(srcdir)/math find_src_files = $(wildcard $(dir)/*.[chS]) $(wildcard $(dir)/*.cc) src_files := $(foreach dir,$(dirs),$(find_src_files)) +# Regenerate uname_version.c only if it doesn't exist or if it differs +# from the former uname_version.c uname_version.c: .FORCE $(AM_V_GEN)cd $(srcdir) && \ echo "const char *uname_dev_version = \ \"$$(git rev-parse --git-dir >/dev/null 2>&1 && \ git describe --dirty | sed -e 's/cygwin-//')\";" \ - > $(abs_builddir)/uname_version.c + > $(abs_builddir)/uname_version-pre.c && \ + if [ -f $(abs_builddir)/uname_version.c ] && \ + cmp $(abs_builddir)/uname_version.c \ + $(abs_builddir)/uname_version-pre.c >/dev/null 2>&1 ; \ + then :; else \ + mv $(abs_builddir)/uname_version-pre.c \ + $(abs_builddir)/uname_version.c; fi .FORCE: # mkvers.sh creates version.cc in the first place, winver.o always From 90236c3a2cf6eb9aecb6d103612c57db3c14b066 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 13 Dec 2022 13:28:16 +0100 Subject: [PATCH 034/767] Cygwin: Makefile: build new-cygwin1.dll in a single step The complicated build routine was only required because we needed the .cygheap section at the end of the file, and the debug sections broke this. Now that the cygheap is out of the way, we really don't have to do this anymore, and the build can just generate a DLL with integrated debug info. Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index cf12b97f83..167be8149a 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -40,8 +40,6 @@ toolincludedir=$(tooldir)/include # Parameters used in building the cygwin.dll. DLL_NAME=cygwin1.dll -PRE_DLL_NAME=cygwin0.dll -DBG_DLL_NAME=cygwin1.dbg NEW_DLL_NAME=new-cygwin1.dll DEF_FILE=cygwin.def LIB_NAME=libcygwin.a @@ -582,7 +580,7 @@ $(LDSCRIPT): $(LDSCRIPT).in $(AM_V_GEN)$(CC) -E - -P < $^ -o $@ # cygwin dll -$(PRE_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ +$(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libm.a $(newlib_build)/libc.a $(AM_V_CXXLD)$(CXX) $(CXXFLAGS) \ -mno-use-libstdc-wrappers \ @@ -597,19 +595,6 @@ $(PRE_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libc.a \ -lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map -# create cygwin1.dbg file -$(DBG_DLL_NAME): $(PRE_DLL_NAME) - $(AM_V_GEN)$(OBJCOPY) --add-gnu-debuglink=/dev/null \ - --only-keep-debug \ - $(PRE_DLL_NAME) \ - $(DBG_DLL_NAME) - -# create stripped release DLL, append .gnu_debuglink section -$(NEW_DLL_NAME): $(PRE_DLL_NAME) $(DBG_DLL_NAME) - $(AM_V_GEN)$(OBJCOPY) -g \ - --add-gnu-debuglink=$(DBG_DLL_NAME) \ - $(PRE_DLL_NAME) $(NEW_DLL_NAME) - # cygwin import library toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@ @@ -681,7 +666,7 @@ clean-local: -rm -f $(BUILT_SOURCES) -rm -f $(DEF_FILE) sigfe.s -rm -f cygwin.sc cygdll.a cygwin.map - -rm -f $(PRE_DLL_NAME) $(DBG_DLL_NAME) $(NEW_DLL_NAME) + -rm -f $(NEW_DLL_NAME) -rm -f $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS) -rm -f version.cc -rm -f tlsoffsets From 15ad816dddf836def06cd0330ec0efa9ce50e5bf Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Tue, 13 Dec 2022 14:51:28 +0000 Subject: [PATCH 035/767] libc: arm: fix setjmp abi non-conformance As per the arm Procedure Call Standard for the Arm Architecture section 6.1.2 [1], VFP registers s16-s31 (d8-d15, q4-q7) must be preserved across subroutine calls. The current setjmp/longjmp implementations preserve only the core registers, with the jump buffer size too small to store the required co-processor registers. In accordance with the C Library ABI for the Arm Architecture section 6.11 [2], this patch sets _JBTYPE to long long adjusting _JBLEN to 20. It also emits vfp load/store instructions depending on architectural support, predicated at compile time on ACLE feature-test macros. [1] https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst [2] https://github.com/ARM-software/abi-aa/blob/main/clibabi32/clibabi32.rst --- COPYING.NEWLIB | 2 +- newlib/libc/include/machine/setjmp.h | 8 ++- newlib/libc/machine/arm/setjmp.S | 74 +++++++++++++++------------- 3 files changed, 46 insertions(+), 38 deletions(-) diff --git a/COPYING.NEWLIB b/COPYING.NEWLIB index 2d1473639b..d54ed293dc 100644 --- a/COPYING.NEWLIB +++ b/COPYING.NEWLIB @@ -762,7 +762,7 @@ SUCH DAMAGE. (35) - Arm Ltd - Copyright (c) 2009-2018 Arm Ltd + Copyright (c) 2009-2022 Arm Ltd All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h index 53878a03d3..29b76cec1b 100644 --- a/newlib/libc/include/machine/setjmp.h +++ b/newlib/libc/include/machine/setjmp.h @@ -12,9 +12,13 @@ _BEGIN_STD_C #if defined(__arm__) || defined(__thumb__) /* * All callee preserved registers: - * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7 + * core registers: + * r4 - r10, fp, sp, lr + * VFP registers (architectural support dependent): + * d8 - d15 */ -#define _JBLEN 23 +#define _JBLEN 20 +#define _JBTYPE long long #endif #if defined(__aarch64__) diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 21d6ff9e7f..4cf0a8e3ff 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -27,34 +27,34 @@ The interworking scheme expects functions to use a BX instruction to return control to their parent. Since we need this code to work in both interworked and non-interworked environments as well as with - older processors which do not have the BX instruction we do the + older processors which do not have the BX instruction we do the following: Test the return address. If the bottom bit is clear perform an "old style" function exit. (We know that we are in ARM mode and returning to an ARM mode caller). Otherwise use the BX instruction to perform the function exit. - We know that we will never attempt to perform the BX instruction on - an older processor, because that kind of processor will never be - interworked, and a return address with the bottom bit set will never + We know that we will never attempt to perform the BX instruction on + an older processor, because that kind of processor will never be + interworked, and a return address with the bottom bit set will never be generated. In addition, we do not actually assemble the BX instruction as this would require us to tell the assembler that the processor is an ARM7TDMI and it would store this information in the binary. We want this binary to be able to be linked with binaries compiled for older processors however, so - we do not want such information stored there. + we do not want such information stored there. If we are running using the APCS-26 convention however, then we never - test the bottom bit, because this is part of the processor status. - Instead we just do a normal return, since we know that we cannot be + test the bottom bit, because this is part of the processor status. + Instead we just do a normal return, since we know that we cannot be returning to a Thumb caller - the Thumb does not support APCS-26. - - Function entry is much simpler. If we are compiling for the Thumb we + + Function entry is much simpler. If we are compiling for the Thumb we just switch into ARM mode and then drop through into the rest of the function. The function exit code will take care of the restore to Thumb mode. - + For Thumb-2 do everything in Thumb mode. */ .syntax unified @@ -115,15 +115,15 @@ SYM (longjmp): #else #define RET tst lr, #1; \ moveq pc, lr ; \ -.word 0xe12fff1e /* bx lr */ +.inst 0xe12fff1e /* bx lr */ #endif #ifdef __thumb2__ -.macro COND where when +.macro COND where when i\where \when .endm #else -.macro COND where when +.macro COND where when .endm #endif @@ -140,7 +140,7 @@ SYM (longjmp): .macro PROLOGUE name .code 16 bx pc - nop + nop .code 32 SYM (.arm_start_of.\name): .endm @@ -149,7 +149,7 @@ SYM (.arm_start_of.\name): .macro PROLOGUE name .endm #endif - + .macro FUNC_START name .text .align 2 @@ -164,61 +164,65 @@ SYM (\name): RET SIZE (\name) .endm - + /* -------------------------------------------------------------------- - int setjmp (jmp_buf); + int setjmp (jmp_buf); -------------------------------------------------------------------- */ - + FUNC_START setjmp /* Save all the callee-preserved registers into the jump buffer. */ #ifdef __thumb2__ mov ip, sp - stmea a1!, { v1-v7, fp, ip, lr } + stmia r0!, { r4-r10, fp, ip, lr } #else - stmea a1!, { v1-v7, fp, ip, sp, lr } + stmia r0!, { r4-r10, fp, sp, lr } +#endif +#if defined __ARM_FP || defined __ARM_FEATURE_MVE + vstm r0, { d8-d15 } #endif - + #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ /* Save the floating point registers. */ sfmea f4, 4, [a1] #endif -#endif +#endif /* When setting up the jump buffer return 0. */ - mov a1, #0 + mov r0, #0 FUNC_END setjmp - + /* -------------------------------------------------------------------- volatile void longjmp (jmp_buf, int); -------------------------------------------------------------------- */ - + FUNC_START longjmp /* If we have stack extension code it ought to be handled here. */ - + /* Restore the registers, retrieving the state when setjmp() was called. */ #ifdef __thumb2__ - ldmfd a1!, { v1-v7, fp, ip, lr } + ldmia r0!, { r4-r10, fp, ip, lr } mov sp, ip #else - ldmfd a1!, { v1-v7, fp, ip, sp, lr } + ldmia r0!, { r4-r10, fp, sp, lr } +#endif +#if defined __ARM_FP || defined __ARM_FEATURE_MVE + vldm r0, { d8-d15 } #endif - + #if 0 /* Simulator does not cope with FP instructions yet. */ #ifndef __SOFTFP__ /* Restore floating point registers as well. */ lfmfd f4, 4, [a1] #endif -#endif +#endif /* Put the return value into the integer result register. - But if it is zero then return 1 instead. */ - movs a1, a2 -#ifdef __thumb2__ + But if it is zero then return 1 instead. */ + movs r0, r1 it eq -#endif - moveq a1, #1 + moveq r0, #1 FUNC_END longjmp #endif From 42ddb40b58f7770e219928eb923f0ecee42bf5de Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 14 Dec 2022 04:07:12 -0500 Subject: [PATCH 036/767] libgloss: bfin: switch to CPPASCOMPILE for .S->.o We're compiling .S files, so use CPPAS instead of CC to compile since the point of CPPAS is to preprocess+assemble .S files. --- libgloss/Makefile.in | 16 ++++++++-------- libgloss/bfin/Makefile.inc | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 36ab3fbd34..760baa99d9 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -2983,21 +2983,21 @@ distclean-local: distclean-multi maintainer-clean-local: maintainer-clean-multi @CONFIG_BFIN_TRUE@bfin/basiccrt.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) @CONFIG_BFIN_TRUE@bfin/basiccrts.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) -D__BFIN_SDRAM +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) -D__BFIN_SDRAM @CONFIG_BFIN_TRUE@bfin/basiccrt561.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) @CONFIG_BFIN_TRUE@bfin/basiccrt561s.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__BFIN_SDRAM +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__BFIN_SDRAM @CONFIG_BFIN_TRUE@bfin/basiccrt561b.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__ADSPBF561_COREB__ +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__ADSPBF561_COREB__ @CONFIG_BFIN_TRUE@bfin/basiccrt60x.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) @CONFIG_BFIN_TRUE@bfin/basiccrt60xs.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__BFIN_SDRAM +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__BFIN_SDRAM @CONFIG_BFIN_TRUE@bfin/basiccrt60xc1.$(OBJEXT): bfin/basiccrt.S -@CONFIG_BFIN_TRUE@ $(AM_V_CC)$(COMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ +@CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/libgloss/bfin/Makefile.inc b/libgloss/bfin/Makefile.inc index 47ba12c064..8574ed51cc 100644 --- a/libgloss/bfin/Makefile.inc +++ b/libgloss/bfin/Makefile.inc @@ -56,18 +56,18 @@ multilibtool_LIBRARIES += %D%/libbfinbsp.a $(%C%_CPPFLAGS) %D%/basiccrt.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) %D%/basiccrts.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) -D__BFIN_SDRAM + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) -D__BFIN_SDRAM %D%/basiccrt561.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) %D%/basiccrt561s.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__BFIN_SDRAM + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__BFIN_SDRAM %D%/basiccrt561b.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__ADSPBF561_COREB__ + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf561-any,-mcpu=bf561-none) -D__ADSPBF561_COREB__ %D%/basiccrt60x.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) %D%/basiccrt60xs.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__BFIN_SDRAM + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__BFIN_SDRAM %D%/basiccrt60xc1.$(OBJEXT): %D%/basiccrt.S - $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ From 489300c89db626a7dd93d57592e9fb925f397410 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 14 Dec 2022 11:57:36 +0100 Subject: [PATCH 037/767] Cygwin: add release message for latest path handling patch 5ba5e09b9d39 ("Cygwin: path handling: never substitute virtual drive with target path") Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.3 | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 winsup/cygwin/release/3.4.3 diff --git a/winsup/cygwin/release/3.4.3 b/winsup/cygwin/release/3.4.3 new file mode 100644 index 0000000000..bd3e725e7c --- /dev/null +++ b/winsup/cygwin/release/3.4.3 @@ -0,0 +1,6 @@ +Bug Fixes +--------- + +- Fix path handling to make sure virtual drives are never treated + as symlinks. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252665.html From 242a2a5971fb4981ef539ad1f87eab4944d5a84f Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 16 Dec 2022 10:21:13 +0000 Subject: [PATCH 038/767] Revert "Cygwin: x86_64: add wmemset assembler entry point" This reverts commit 188d5f6c9ad5cbbd6f0fcb9aaf15bc9870597910. (cherry picked from commit 98fa366cb68a0c297bbb4a64a2d86649709aeabb) --- winsup/cygwin/x86_64/memset.s | 8 -------- 1 file changed, 8 deletions(-) diff --git a/winsup/cygwin/x86_64/memset.s b/winsup/cygwin/x86_64/memset.s index d3b95ecd26..ac73b6ace8 100644 --- a/winsup/cygwin/x86_64/memset.s +++ b/winsup/cygwin/x86_64/memset.s @@ -67,11 +67,3 @@ L1: rep movq 16(%rsp),%rdi ret .seh_endproc - - .globl wmemset - .seh_proc wmemset -wmemset: - .seh_endprologue - shlq $1,%r8 /* cnt * sizeof (wchar_t) */ - jmp memset - .seh_endproc From 8fdc201ec3a3c32f724d06f2859b700f95dced86 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 16 Dec 2022 10:34:38 +0000 Subject: [PATCH 039/767] Cygwin: Update 3.4.3 release note (cherry picked from commit 5366b3403c7008314ec45c1fff042d02df6be41e) --- winsup/cygwin/release/3.4.3 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.4.3 b/winsup/cygwin/release/3.4.3 index bd3e725e7c..eb1d6c6388 100644 --- a/winsup/cygwin/release/3.4.3 +++ b/winsup/cygwin/release/3.4.3 @@ -4,3 +4,6 @@ Bug Fixes - Fix path handling to make sure virtual drives are never treated as symlinks. Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252665.html + +- Revert incorrect optimization of wmemset() + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252699.html From 125e39bfea1a39341a60348c93a65cf4894e0f2a Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung Date: Fri, 2 Dec 2022 20:00:11 +0000 Subject: [PATCH 040/767] amdgcn: Add vectorized math routines This implements a set of vectorized math routines to be used by the compiler auto-vectorizer. Versions for vectors with 2 lanes up to 64 lanes (in powers of 2) are provided. These routines are based on the scalar versions of the math routines in libm/common, libm/math and libm/mathfp. They make extensive use of the GCC C vector extensions and GCN-specific builtins in GCC. --- newlib/Makefile.in | 1865 +++++++++++++++++- newlib/configure | 14 + newlib/configure.host | 1 + newlib/libm/Makefile.inc | 3 + newlib/libm/acinclude.m4 | 2 +- newlib/libm/machine/amdgcn/Makefile.inc | 91 + newlib/libm/machine/amdgcn/amdgcnmach.h | 484 +++++ newlib/libm/machine/amdgcn/v64_mathcnst.c | 23 + newlib/libm/machine/amdgcn/v64_reent.c | 10 + newlib/libm/machine/amdgcn/v64df_acos.c | 13 + newlib/libm/machine/amdgcn/v64df_acosh.c | 67 + newlib/libm/machine/amdgcn/v64df_asin.c | 12 + newlib/libm/machine/amdgcn/v64df_asine.c | 106 + newlib/libm/machine/amdgcn/v64df_asinh.c | 67 + newlib/libm/machine/amdgcn/v64df_atan.c | 14 + newlib/libm/machine/amdgcn/v64df_atan2.c | 12 + newlib/libm/machine/amdgcn/v64df_atangent.c | 132 ++ newlib/libm/machine/amdgcn/v64df_atanh.c | 61 + newlib/libm/machine/amdgcn/v64df_copysign.c | 29 + newlib/libm/machine/amdgcn/v64df_cos.c | 12 + newlib/libm/machine/amdgcn/v64df_cosh.c | 12 + newlib/libm/machine/amdgcn/v64df_erf.c | 171 ++ newlib/libm/machine/amdgcn/v64df_exp.c | 74 + newlib/libm/machine/amdgcn/v64df_exp2.c | 18 + newlib/libm/machine/amdgcn/v64df_finite.c | 24 + newlib/libm/machine/amdgcn/v64df_fmod.c | 185 ++ newlib/libm/machine/amdgcn/v64df_gamma.c | 10 + newlib/libm/machine/amdgcn/v64df_hypot.c | 113 ++ newlib/libm/machine/amdgcn/v64df_ilogb.c | 45 + newlib/libm/machine/amdgcn/v64df_isnan.c | 27 + newlib/libm/machine/amdgcn/v64df_ispos.c | 18 + newlib/libm/machine/amdgcn/v64df_lgamma.c | 30 + newlib/libm/machine/amdgcn/v64df_lgamma_r.c | 286 +++ newlib/libm/machine/amdgcn/v64df_log.c | 82 + newlib/libm/machine/amdgcn/v64df_log10.c | 21 + newlib/libm/machine/amdgcn/v64df_log2.c | 12 + newlib/libm/machine/amdgcn/v64df_modf.c | 66 + newlib/libm/machine/amdgcn/v64df_numtest.c | 31 + newlib/libm/machine/amdgcn/v64df_pow.c | 322 +++ newlib/libm/machine/amdgcn/v64df_remainder.c | 68 + newlib/libm/machine/amdgcn/v64df_rint.c | 69 + newlib/libm/machine/amdgcn/v64df_scalb.c | 50 + newlib/libm/machine/amdgcn/v64df_scalbn.c | 58 + newlib/libm/machine/amdgcn/v64df_signif.c | 25 + newlib/libm/machine/amdgcn/v64df_sin.c | 12 + newlib/libm/machine/amdgcn/v64df_sine.c | 97 + newlib/libm/machine/amdgcn/v64df_sineh.c | 101 + newlib/libm/machine/amdgcn/v64df_sinh.c | 12 + newlib/libm/machine/amdgcn/v64df_sqrt.c | 75 + newlib/libm/machine/amdgcn/v64df_tan.c | 142 ++ newlib/libm/machine/amdgcn/v64df_tanh.c | 63 + newlib/libm/machine/amdgcn/v64df_tgamma.c | 28 + newlib/libm/machine/amdgcn/v64sf_acos.c | 12 + newlib/libm/machine/amdgcn/v64sf_acosh.c | 66 + newlib/libm/machine/amdgcn/v64sf_asin.c | 12 + newlib/libm/machine/amdgcn/v64sf_asine.c | 98 + newlib/libm/machine/amdgcn/v64sf_asinh.c | 68 + newlib/libm/machine/amdgcn/v64sf_atan.c | 13 + newlib/libm/machine/amdgcn/v64sf_atan2.c | 12 + newlib/libm/machine/amdgcn/v64sf_atangent.c | 123 ++ newlib/libm/machine/amdgcn/v64sf_atanh.c | 61 + newlib/libm/machine/amdgcn/v64sf_copysign.c | 29 + newlib/libm/machine/amdgcn/v64sf_cos.c | 12 + newlib/libm/machine/amdgcn/v64sf_cosh.c | 12 + newlib/libm/machine/amdgcn/v64sf_erf.c | 172 ++ newlib/libm/machine/amdgcn/v64sf_exp.c | 88 + newlib/libm/machine/amdgcn/v64sf_exp2.c | 18 + newlib/libm/machine/amdgcn/v64sf_finite.c | 23 + newlib/libm/machine/amdgcn/v64sf_fmod.c | 133 ++ newlib/libm/machine/amdgcn/v64sf_gamma.c | 10 + newlib/libm/machine/amdgcn/v64sf_hypot.c | 104 + newlib/libm/machine/amdgcn/v64sf_ilogb.c | 42 + newlib/libm/machine/amdgcn/v64sf_isnan.c | 23 + newlib/libm/machine/amdgcn/v64sf_ispos.c | 11 + newlib/libm/machine/amdgcn/v64sf_lgamma.c | 30 + newlib/libm/machine/amdgcn/v64sf_lgamma_r.c | 286 +++ newlib/libm/machine/amdgcn/v64sf_log.c | 82 + newlib/libm/machine/amdgcn/v64sf_log10.c | 14 + newlib/libm/machine/amdgcn/v64sf_log2.c | 12 + newlib/libm/machine/amdgcn/v64sf_modf.c | 55 + newlib/libm/machine/amdgcn/v64sf_numtest.c | 30 + newlib/libm/machine/amdgcn/v64sf_pow.c | 292 +++ newlib/libm/machine/amdgcn/v64sf_remainder.c | 71 + newlib/libm/machine/amdgcn/v64sf_rint.c | 62 + newlib/libm/machine/amdgcn/v64sf_scalb.c | 59 + newlib/libm/machine/amdgcn/v64sf_scalbn.c | 78 + newlib/libm/machine/amdgcn/v64sf_signif.c | 24 + newlib/libm/machine/amdgcn/v64sf_sin.c | 12 + newlib/libm/machine/amdgcn/v64sf_sine.c | 93 + newlib/libm/machine/amdgcn/v64sf_sineh.c | 98 + newlib/libm/machine/amdgcn/v64sf_sinh.c | 12 + newlib/libm/machine/amdgcn/v64sf_sqrt.c | 74 + newlib/libm/machine/amdgcn/v64sf_tan.c | 138 ++ newlib/libm/machine/amdgcn/v64sf_tanh.c | 63 + newlib/libm/machine/amdgcn/v64sf_tgamma.c | 28 + 95 files changed, 8074 insertions(+), 46 deletions(-) create mode 100644 newlib/libm/machine/amdgcn/Makefile.inc create mode 100644 newlib/libm/machine/amdgcn/amdgcnmach.h create mode 100644 newlib/libm/machine/amdgcn/v64_mathcnst.c create mode 100644 newlib/libm/machine/amdgcn/v64_reent.c create mode 100644 newlib/libm/machine/amdgcn/v64df_acos.c create mode 100644 newlib/libm/machine/amdgcn/v64df_acosh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_asin.c create mode 100644 newlib/libm/machine/amdgcn/v64df_asine.c create mode 100644 newlib/libm/machine/amdgcn/v64df_asinh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atan.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atan2.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atangent.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atanh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_copysign.c create mode 100644 newlib/libm/machine/amdgcn/v64df_cos.c create mode 100644 newlib/libm/machine/amdgcn/v64df_cosh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_erf.c create mode 100644 newlib/libm/machine/amdgcn/v64df_exp.c create mode 100644 newlib/libm/machine/amdgcn/v64df_exp2.c create mode 100644 newlib/libm/machine/amdgcn/v64df_finite.c create mode 100644 newlib/libm/machine/amdgcn/v64df_fmod.c create mode 100644 newlib/libm/machine/amdgcn/v64df_gamma.c create mode 100644 newlib/libm/machine/amdgcn/v64df_hypot.c create mode 100644 newlib/libm/machine/amdgcn/v64df_ilogb.c create mode 100644 newlib/libm/machine/amdgcn/v64df_isnan.c create mode 100644 newlib/libm/machine/amdgcn/v64df_ispos.c create mode 100644 newlib/libm/machine/amdgcn/v64df_lgamma.c create mode 100644 newlib/libm/machine/amdgcn/v64df_lgamma_r.c create mode 100644 newlib/libm/machine/amdgcn/v64df_log.c create mode 100644 newlib/libm/machine/amdgcn/v64df_log10.c create mode 100644 newlib/libm/machine/amdgcn/v64df_log2.c create mode 100644 newlib/libm/machine/amdgcn/v64df_modf.c create mode 100644 newlib/libm/machine/amdgcn/v64df_numtest.c create mode 100644 newlib/libm/machine/amdgcn/v64df_pow.c create mode 100644 newlib/libm/machine/amdgcn/v64df_remainder.c create mode 100644 newlib/libm/machine/amdgcn/v64df_rint.c create mode 100644 newlib/libm/machine/amdgcn/v64df_scalb.c create mode 100644 newlib/libm/machine/amdgcn/v64df_scalbn.c create mode 100644 newlib/libm/machine/amdgcn/v64df_signif.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sin.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sine.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sineh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sinh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sqrt.c create mode 100644 newlib/libm/machine/amdgcn/v64df_tan.c create mode 100644 newlib/libm/machine/amdgcn/v64df_tanh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_tgamma.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_acos.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_acosh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_asin.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_asine.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_asinh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atan.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atan2.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atangent.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atanh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_copysign.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_cos.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_cosh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_erf.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_exp.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_exp2.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_finite.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_fmod.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_gamma.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_hypot.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_ilogb.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_isnan.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_ispos.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_lgamma.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_lgamma_r.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_log.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_log10.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_log2.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_modf.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_numtest.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_pow.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_remainder.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_rint.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_scalb.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_scalbn.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_signif.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sin.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sine.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sineh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sinh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sqrt.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_tan.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_tanh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_tgamma.c diff --git a/newlib/Makefile.in b/newlib/Makefile.in index cb7b693279..e81c3d3da0 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -910,18 +910,19 @@ check_PROGRAMS = @NEWLIB_HW_FP_FALSE@am__append_136 = libm/math/math.tex @HAVE_LONG_DOUBLE_TRUE@am__append_137 = $(libm_common_lsrc) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_138 = $(libm_machine_aarch64_src) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_139 = $(libm_machine_arm_src) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_140 = $(libm_machine_i386_src) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_141 = $(libm_machine_mips_src) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_142 = libm/machine/nds32/wf_sqrt.S -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/w_sqrt.S -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = $(libm_machine_nds32_src) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_145 = $(libm_machine_powerpc_src) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_146 = $(libm_machine_pru_src) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_147 = $(libm_machine_sparc_src) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_148 = $(libm_machine_spu_src) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_149 = $(libm_machine_riscv_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_150 = $(libm_machine_x86_64_src) +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_139 = $(libm_machine_amdgcn_src) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_140 = $(libm_machine_arm_src) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_141 = $(libm_machine_i386_src) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_142 = $(libm_machine_mips_src) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/wf_sqrt.S +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = libm/machine/nds32/w_sqrt.S +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_145 = $(libm_machine_nds32_src) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_146 = $(libm_machine_powerpc_src) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_147 = $(libm_machine_pru_src) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_148 = $(libm_machine_sparc_src) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_149 = $(libm_machine_spu_src) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_150 = $(libm_machine_riscv_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_151 = $(libm_machine_x86_64_src) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -3092,7 +3093,96 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_157 = $(am__objects_156) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_158 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_158 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atangent.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_copysign.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_cos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_cosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_erf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_exp.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_exp2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_finite.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_fmod.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_gamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_hypot.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_ilogb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_isnan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_ispos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_lgamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_lgamma_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log10.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_modf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_numtest.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_pow.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_remainder.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_rint.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_scalb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_scalbn.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_signif.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sineh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tgamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_acos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_acosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atangent.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_copysign.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_cos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_cosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_erf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_exp.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_exp2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_finite.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_fmod.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_gamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_hypot.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_ilogb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_isnan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_ispos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_lgamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_lgamma_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log10.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_modf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_numtest.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_pow.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_remainder.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_rint.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_scalb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_scalbn.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_signif.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sineh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT) +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_159 = $(am__objects_158) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_160 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_floor.$(OBJEXT) \ @@ -3123,8 +3213,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feenableexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-fedisableexcept.$(OBJEXT) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_159 = $(am__objects_158) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_160 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_161 = $(am__objects_160) +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_162 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_atan2f.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_exp.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_expf.$(OBJEXT) \ @@ -3161,8 +3251,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_161 = $(am__objects_160) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_162 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_163 = $(am__objects_162) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_164 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetround.$(OBJEXT) \ @@ -3174,13 +3264,13 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_163 = $(am__objects_162) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_164 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_165 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = $(am__objects_164) \ -@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_165) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = $(am__objects_166) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_168 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_165 = $(am__objects_164) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_168 = $(am__objects_166) \ +@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_167) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_169 = $(am__objects_168) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_170 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetround.$(OBJEXT) \ @@ -3192,8 +3282,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_169 = $(am__objects_168) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_170 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_171 = $(am__objects_170) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_172 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-fpclassifyf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinite.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinitef.$(OBJEXT) \ @@ -3203,8 +3293,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnanf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormalf.$(OBJEXT) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_171 = $(am__objects_170) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_172 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_173 = $(am__objects_172) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_174 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetround.$(OBJEXT) \ @@ -3216,8 +3306,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_173 = $(am__objects_172) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_174 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_175 = $(am__objects_174) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_176 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3342,8 +3432,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sinh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_175 = $(am__objects_174) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_176 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_177 = $(am__objects_176) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_178 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3383,8 +3473,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llrint.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-s_llround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llround.$(OBJEXT) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_177 = $(am__objects_176) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_178 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_179 = $(am__objects_178) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_180 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetround.$(OBJEXT) \ @@ -3396,14 +3486,15 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_179 = $(am__objects_178) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_181 = $(am__objects_180) am_libm_a_OBJECTS = $(am__objects_143) $(am__objects_147) \ $(am__objects_148) $(am__objects_149) $(am__objects_151) \ $(am__objects_152) $(am__objects_153) $(am__objects_154) \ $(am__objects_155) $(am__objects_157) $(am__objects_159) \ - $(am__objects_161) $(am__objects_163) $(am__objects_167) \ + $(am__objects_161) $(am__objects_163) $(am__objects_165) \ $(am__objects_169) $(am__objects_171) $(am__objects_173) \ - $(am__objects_175) $(am__objects_177) $(am__objects_179) + $(am__objects_175) $(am__objects_177) $(am__objects_179) \ + $(am__objects_181) libm_a_OBJECTS = $(am_libm_a_OBJECTS) am_libm_test_test_OBJECTS = libm/test/test.$(OBJEXT) \ libm/test/string.$(OBJEXT) libm/test/convert.$(OBJEXT) \ @@ -3953,9 +4044,10 @@ libm_a_SOURCES = $(am__append_131) $(am__append_134) \ $(libm_common_src) $(libm_common_fsrc) $(am__append_137) \ $(libm_complex_src) $(libm_complex_fsrc) $(libm_complex_lsrc) \ $(libm_fenv_src) $(am__append_138) $(am__append_139) \ - $(am__append_140) $(am__append_141) $(am__append_144) \ + $(am__append_140) $(am__append_141) $(am__append_142) \ $(am__append_145) $(am__append_146) $(am__append_147) \ - $(am__append_148) $(am__append_149) $(am__append_150) + $(am__append_148) $(am__append_149) $(am__append_150) \ + $(am__append_151) libm_a_CFLAGS = $(AM_CFLAGS) $(libm_a_CFLAGS_$(subst /,_,$(@D))) $(libm_a_CFLAGS_$(subst /,_,$(@D)_$( libm/machine/amdgcn/$(am__dirstamp) +libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libm/machine/amdgcn/$(DEPDIR) + @: > libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_asin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_asine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_asinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atan2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atangent.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_copysign.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_cos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_cosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_erf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_exp.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_exp2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_finite.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_fmod.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_gamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_hypot.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_ilogb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_isnan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_ispos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_lgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_lgamma_r.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_log.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_log10.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_log2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_modf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_numtest.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_pow.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_remainder.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_rint.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_scalb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_scalbn.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_signif.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sineh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sqrt.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_tan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_tanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_tgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_acos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_acosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_asin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_asine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_asinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atan2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atangent.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_copysign.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_cos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_cosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_erf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_exp.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_exp2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_finite.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_fmod.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_gamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_hypot.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_ilogb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_isnan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_ispos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_lgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_lgamma_r.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_log.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_log10.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_log2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_modf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_numtest.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_pow.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_remainder.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_rint.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_scalb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_scalbn.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_signif.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sineh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sqrt.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) libm/machine/arm/$(am__dirstamp): @$(MKDIR_P) libm/machine/arm @: > libm/machine/arm/$(am__dirstamp) @@ -11625,6 +12077,7 @@ mostlyclean-compile: -rm -f libm/complex/*.$(OBJEXT) -rm -f libm/fenv/*.$(OBJEXT) -rm -f libm/machine/aarch64/*.$(OBJEXT) + -rm -f libm/machine/amdgcn/*.$(OBJEXT) -rm -f libm/machine/arm/*.$(OBJEXT) -rm -f libm/machine/i386/*.$(OBJEXT) -rm -f libm/machine/mips/*.$(OBJEXT) @@ -13402,6 +13855,94 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_rint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_round.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_trunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-ef_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-fe_dfl_env.Po@am__quote@ @@ -42062,6 +42603,1238 @@ libm/machine/aarch64/libm_a-feupdateenv.obj: libm/machine/aarch64/feupdateenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-feupdateenv.obj `if test -f 'libm/machine/aarch64/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/aarch64/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/feupdateenv.c'; fi` +libm/machine/amdgcn/libm_a-v64_mathcnst.o: libm/machine/amdgcn/v64_mathcnst.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_mathcnst.c' object='libm/machine/amdgcn/libm_a-v64_mathcnst.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c + +libm/machine/amdgcn/libm_a-v64_mathcnst.obj: libm/machine/amdgcn/v64_mathcnst.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.obj `if test -f 'libm/machine/amdgcn/v64_mathcnst.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_mathcnst.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_mathcnst.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_mathcnst.c' object='libm/machine/amdgcn/libm_a-v64_mathcnst.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.obj `if test -f 'libm/machine/amdgcn/v64_mathcnst.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_mathcnst.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_mathcnst.c'; fi` + +libm/machine/amdgcn/libm_a-v64_reent.o: libm/machine/amdgcn/v64_reent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_reent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo -c -o libm/machine/amdgcn/libm_a-v64_reent.o `test -f 'libm/machine/amdgcn/v64_reent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_reent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_reent.c' object='libm/machine/amdgcn/libm_a-v64_reent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_reent.o `test -f 'libm/machine/amdgcn/v64_reent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_reent.c + +libm/machine/amdgcn/libm_a-v64_reent.obj: libm/machine/amdgcn/v64_reent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_reent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo -c -o libm/machine/amdgcn/libm_a-v64_reent.obj `if test -f 'libm/machine/amdgcn/v64_reent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_reent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_reent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_reent.c' object='libm/machine/amdgcn/libm_a-v64_reent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_reent.obj `if test -f 'libm/machine/amdgcn/v64_reent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_reent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_reent.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_acos.o: libm/machine/amdgcn/v64df_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acos.o `test -f 'libm/machine/amdgcn/v64df_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acos.c' object='libm/machine/amdgcn/libm_a-v64df_acos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acos.o `test -f 'libm/machine/amdgcn/v64df_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acos.c + +libm/machine/amdgcn/libm_a-v64df_acos.obj: libm/machine/amdgcn/v64df_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acos.obj `if test -f 'libm/machine/amdgcn/v64df_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acos.c' object='libm/machine/amdgcn/libm_a-v64df_acos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acos.obj `if test -f 'libm/machine/amdgcn/v64df_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acos.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_acosh.o: libm/machine/amdgcn/v64df_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acosh.o `test -f 'libm/machine/amdgcn/v64df_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acosh.c' object='libm/machine/amdgcn/libm_a-v64df_acosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acosh.o `test -f 'libm/machine/amdgcn/v64df_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acosh.c + +libm/machine/amdgcn/libm_a-v64df_acosh.obj: libm/machine/amdgcn/v64df_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acosh.obj `if test -f 'libm/machine/amdgcn/v64df_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acosh.c' object='libm/machine/amdgcn/libm_a-v64df_acosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acosh.obj `if test -f 'libm/machine/amdgcn/v64df_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_asin.o: libm/machine/amdgcn/v64df_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asin.o `test -f 'libm/machine/amdgcn/v64df_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asin.c' object='libm/machine/amdgcn/libm_a-v64df_asin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asin.o `test -f 'libm/machine/amdgcn/v64df_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asin.c + +libm/machine/amdgcn/libm_a-v64df_asin.obj: libm/machine/amdgcn/v64df_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asin.obj `if test -f 'libm/machine/amdgcn/v64df_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asin.c' object='libm/machine/amdgcn/libm_a-v64df_asin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asin.obj `if test -f 'libm/machine/amdgcn/v64df_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asin.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_asine.o: libm/machine/amdgcn/v64df_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asine.o `test -f 'libm/machine/amdgcn/v64df_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asine.c' object='libm/machine/amdgcn/libm_a-v64df_asine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asine.o `test -f 'libm/machine/amdgcn/v64df_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asine.c + +libm/machine/amdgcn/libm_a-v64df_asine.obj: libm/machine/amdgcn/v64df_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asine.obj `if test -f 'libm/machine/amdgcn/v64df_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asine.c' object='libm/machine/amdgcn/libm_a-v64df_asine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asine.obj `if test -f 'libm/machine/amdgcn/v64df_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asine.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_asinh.o: libm/machine/amdgcn/v64df_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asinh.o `test -f 'libm/machine/amdgcn/v64df_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asinh.c' object='libm/machine/amdgcn/libm_a-v64df_asinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asinh.o `test -f 'libm/machine/amdgcn/v64df_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asinh.c + +libm/machine/amdgcn/libm_a-v64df_asinh.obj: libm/machine/amdgcn/v64df_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asinh.obj `if test -f 'libm/machine/amdgcn/v64df_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asinh.c' object='libm/machine/amdgcn/libm_a-v64df_asinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asinh.obj `if test -f 'libm/machine/amdgcn/v64df_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atan.o: libm/machine/amdgcn/v64df_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan.o `test -f 'libm/machine/amdgcn/v64df_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan.c' object='libm/machine/amdgcn/libm_a-v64df_atan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan.o `test -f 'libm/machine/amdgcn/v64df_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan.c + +libm/machine/amdgcn/libm_a-v64df_atan.obj: libm/machine/amdgcn/v64df_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan.obj `if test -f 'libm/machine/amdgcn/v64df_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan.c' object='libm/machine/amdgcn/libm_a-v64df_atan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan.obj `if test -f 'libm/machine/amdgcn/v64df_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atan2.o: libm/machine/amdgcn/v64df_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan2.o `test -f 'libm/machine/amdgcn/v64df_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan2.c' object='libm/machine/amdgcn/libm_a-v64df_atan2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan2.o `test -f 'libm/machine/amdgcn/v64df_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan2.c + +libm/machine/amdgcn/libm_a-v64df_atan2.obj: libm/machine/amdgcn/v64df_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan2.obj `if test -f 'libm/machine/amdgcn/v64df_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan2.c' object='libm/machine/amdgcn/libm_a-v64df_atan2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan2.obj `if test -f 'libm/machine/amdgcn/v64df_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan2.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atangent.o: libm/machine/amdgcn/v64df_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atangent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atangent.o `test -f 'libm/machine/amdgcn/v64df_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atangent.c' object='libm/machine/amdgcn/libm_a-v64df_atangent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atangent.o `test -f 'libm/machine/amdgcn/v64df_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atangent.c + +libm/machine/amdgcn/libm_a-v64df_atangent.obj: libm/machine/amdgcn/v64df_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atangent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atangent.obj `if test -f 'libm/machine/amdgcn/v64df_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atangent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atangent.c' object='libm/machine/amdgcn/libm_a-v64df_atangent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atangent.obj `if test -f 'libm/machine/amdgcn/v64df_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atangent.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atanh.o: libm/machine/amdgcn/v64df_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atanh.o `test -f 'libm/machine/amdgcn/v64df_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atanh.c' object='libm/machine/amdgcn/libm_a-v64df_atanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atanh.o `test -f 'libm/machine/amdgcn/v64df_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atanh.c + +libm/machine/amdgcn/libm_a-v64df_atanh.obj: libm/machine/amdgcn/v64df_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atanh.obj `if test -f 'libm/machine/amdgcn/v64df_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atanh.c' object='libm/machine/amdgcn/libm_a-v64df_atanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atanh.obj `if test -f 'libm/machine/amdgcn/v64df_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_copysign.o: libm/machine/amdgcn/v64df_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_copysign.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_copysign.o `test -f 'libm/machine/amdgcn/v64df_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_copysign.c' object='libm/machine/amdgcn/libm_a-v64df_copysign.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_copysign.o `test -f 'libm/machine/amdgcn/v64df_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_copysign.c + +libm/machine/amdgcn/libm_a-v64df_copysign.obj: libm/machine/amdgcn/v64df_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_copysign.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_copysign.obj `if test -f 'libm/machine/amdgcn/v64df_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_copysign.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_copysign.c' object='libm/machine/amdgcn/libm_a-v64df_copysign.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_copysign.obj `if test -f 'libm/machine/amdgcn/v64df_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_copysign.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_cos.o: libm/machine/amdgcn/v64df_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cos.o `test -f 'libm/machine/amdgcn/v64df_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cos.c' object='libm/machine/amdgcn/libm_a-v64df_cos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cos.o `test -f 'libm/machine/amdgcn/v64df_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cos.c + +libm/machine/amdgcn/libm_a-v64df_cos.obj: libm/machine/amdgcn/v64df_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cos.obj `if test -f 'libm/machine/amdgcn/v64df_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cos.c' object='libm/machine/amdgcn/libm_a-v64df_cos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cos.obj `if test -f 'libm/machine/amdgcn/v64df_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cos.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_cosh.o: libm/machine/amdgcn/v64df_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cosh.o `test -f 'libm/machine/amdgcn/v64df_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cosh.c' object='libm/machine/amdgcn/libm_a-v64df_cosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cosh.o `test -f 'libm/machine/amdgcn/v64df_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cosh.c + +libm/machine/amdgcn/libm_a-v64df_cosh.obj: libm/machine/amdgcn/v64df_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cosh.obj `if test -f 'libm/machine/amdgcn/v64df_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cosh.c' object='libm/machine/amdgcn/libm_a-v64df_cosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cosh.obj `if test -f 'libm/machine/amdgcn/v64df_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_erf.o: libm/machine/amdgcn/v64df_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_erf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_erf.o `test -f 'libm/machine/amdgcn/v64df_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_erf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_erf.c' object='libm/machine/amdgcn/libm_a-v64df_erf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_erf.o `test -f 'libm/machine/amdgcn/v64df_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_erf.c + +libm/machine/amdgcn/libm_a-v64df_erf.obj: libm/machine/amdgcn/v64df_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_erf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_erf.obj `if test -f 'libm/machine/amdgcn/v64df_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_erf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_erf.c' object='libm/machine/amdgcn/libm_a-v64df_erf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_erf.obj `if test -f 'libm/machine/amdgcn/v64df_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_erf.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_exp.o: libm/machine/amdgcn/v64df_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp.o `test -f 'libm/machine/amdgcn/v64df_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp.c' object='libm/machine/amdgcn/libm_a-v64df_exp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp.o `test -f 'libm/machine/amdgcn/v64df_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp.c + +libm/machine/amdgcn/libm_a-v64df_exp.obj: libm/machine/amdgcn/v64df_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp.obj `if test -f 'libm/machine/amdgcn/v64df_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp.c' object='libm/machine/amdgcn/libm_a-v64df_exp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp.obj `if test -f 'libm/machine/amdgcn/v64df_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_exp2.o: libm/machine/amdgcn/v64df_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp2.o `test -f 'libm/machine/amdgcn/v64df_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp2.c' object='libm/machine/amdgcn/libm_a-v64df_exp2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp2.o `test -f 'libm/machine/amdgcn/v64df_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp2.c + +libm/machine/amdgcn/libm_a-v64df_exp2.obj: libm/machine/amdgcn/v64df_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp2.obj `if test -f 'libm/machine/amdgcn/v64df_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp2.c' object='libm/machine/amdgcn/libm_a-v64df_exp2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp2.obj `if test -f 'libm/machine/amdgcn/v64df_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp2.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_finite.o: libm/machine/amdgcn/v64df_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_finite.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_finite.o `test -f 'libm/machine/amdgcn/v64df_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_finite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_finite.c' object='libm/machine/amdgcn/libm_a-v64df_finite.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_finite.o `test -f 'libm/machine/amdgcn/v64df_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_finite.c + +libm/machine/amdgcn/libm_a-v64df_finite.obj: libm/machine/amdgcn/v64df_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_finite.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_finite.obj `if test -f 'libm/machine/amdgcn/v64df_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_finite.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_finite.c' object='libm/machine/amdgcn/libm_a-v64df_finite.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_finite.obj `if test -f 'libm/machine/amdgcn/v64df_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_finite.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_fmod.o: libm/machine/amdgcn/v64df_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_fmod.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_fmod.o `test -f 'libm/machine/amdgcn/v64df_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_fmod.c' object='libm/machine/amdgcn/libm_a-v64df_fmod.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_fmod.o `test -f 'libm/machine/amdgcn/v64df_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_fmod.c + +libm/machine/amdgcn/libm_a-v64df_fmod.obj: libm/machine/amdgcn/v64df_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_fmod.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_fmod.obj `if test -f 'libm/machine/amdgcn/v64df_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_fmod.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_fmod.c' object='libm/machine/amdgcn/libm_a-v64df_fmod.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_fmod.obj `if test -f 'libm/machine/amdgcn/v64df_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_fmod.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_gamma.o: libm/machine/amdgcn/v64df_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_gamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_gamma.o `test -f 'libm/machine/amdgcn/v64df_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_gamma.c' object='libm/machine/amdgcn/libm_a-v64df_gamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_gamma.o `test -f 'libm/machine/amdgcn/v64df_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_gamma.c + +libm/machine/amdgcn/libm_a-v64df_gamma.obj: libm/machine/amdgcn/v64df_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_gamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_gamma.obj `if test -f 'libm/machine/amdgcn/v64df_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_gamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_gamma.c' object='libm/machine/amdgcn/libm_a-v64df_gamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_gamma.obj `if test -f 'libm/machine/amdgcn/v64df_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_gamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_hypot.o: libm/machine/amdgcn/v64df_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_hypot.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_hypot.o `test -f 'libm/machine/amdgcn/v64df_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_hypot.c' object='libm/machine/amdgcn/libm_a-v64df_hypot.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_hypot.o `test -f 'libm/machine/amdgcn/v64df_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_hypot.c + +libm/machine/amdgcn/libm_a-v64df_hypot.obj: libm/machine/amdgcn/v64df_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_hypot.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_hypot.obj `if test -f 'libm/machine/amdgcn/v64df_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_hypot.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_hypot.c' object='libm/machine/amdgcn/libm_a-v64df_hypot.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_hypot.obj `if test -f 'libm/machine/amdgcn/v64df_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_hypot.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_ilogb.o: libm/machine/amdgcn/v64df_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ilogb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.o `test -f 'libm/machine/amdgcn/v64df_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ilogb.c' object='libm/machine/amdgcn/libm_a-v64df_ilogb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.o `test -f 'libm/machine/amdgcn/v64df_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ilogb.c + +libm/machine/amdgcn/libm_a-v64df_ilogb.obj: libm/machine/amdgcn/v64df_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ilogb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.obj `if test -f 'libm/machine/amdgcn/v64df_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ilogb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ilogb.c' object='libm/machine/amdgcn/libm_a-v64df_ilogb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.obj `if test -f 'libm/machine/amdgcn/v64df_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ilogb.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_isnan.o: libm/machine/amdgcn/v64df_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_isnan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_isnan.o `test -f 'libm/machine/amdgcn/v64df_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_isnan.c' object='libm/machine/amdgcn/libm_a-v64df_isnan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_isnan.o `test -f 'libm/machine/amdgcn/v64df_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_isnan.c + +libm/machine/amdgcn/libm_a-v64df_isnan.obj: libm/machine/amdgcn/v64df_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_isnan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_isnan.obj `if test -f 'libm/machine/amdgcn/v64df_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_isnan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_isnan.c' object='libm/machine/amdgcn/libm_a-v64df_isnan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_isnan.obj `if test -f 'libm/machine/amdgcn/v64df_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_isnan.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_ispos.o: libm/machine/amdgcn/v64df_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ispos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ispos.o `test -f 'libm/machine/amdgcn/v64df_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ispos.c' object='libm/machine/amdgcn/libm_a-v64df_ispos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ispos.o `test -f 'libm/machine/amdgcn/v64df_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ispos.c + +libm/machine/amdgcn/libm_a-v64df_ispos.obj: libm/machine/amdgcn/v64df_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ispos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ispos.obj `if test -f 'libm/machine/amdgcn/v64df_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ispos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ispos.c' object='libm/machine/amdgcn/libm_a-v64df_ispos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ispos.obj `if test -f 'libm/machine/amdgcn/v64df_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ispos.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_lgamma.o: libm/machine/amdgcn/v64df_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.o `test -f 'libm/machine/amdgcn/v64df_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.o `test -f 'libm/machine/amdgcn/v64df_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma.c + +libm/machine/amdgcn/libm_a-v64df_lgamma.obj: libm/machine/amdgcn/v64df_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_lgamma_r.o: libm/machine/amdgcn/v64df_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma_r.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.o `test -f 'libm/machine/amdgcn/v64df_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.o `test -f 'libm/machine/amdgcn/v64df_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma_r.c + +libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj: libm/machine/amdgcn/v64df_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma_r.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_log.o: libm/machine/amdgcn/v64df_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log.o `test -f 'libm/machine/amdgcn/v64df_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log.c' object='libm/machine/amdgcn/libm_a-v64df_log.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log.o `test -f 'libm/machine/amdgcn/v64df_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log.c + +libm/machine/amdgcn/libm_a-v64df_log.obj: libm/machine/amdgcn/v64df_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log.obj `if test -f 'libm/machine/amdgcn/v64df_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log.c' object='libm/machine/amdgcn/libm_a-v64df_log.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log.obj `if test -f 'libm/machine/amdgcn/v64df_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_log10.o: libm/machine/amdgcn/v64df_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log10.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log10.o `test -f 'libm/machine/amdgcn/v64df_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log10.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log10.c' object='libm/machine/amdgcn/libm_a-v64df_log10.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log10.o `test -f 'libm/machine/amdgcn/v64df_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log10.c + +libm/machine/amdgcn/libm_a-v64df_log10.obj: libm/machine/amdgcn/v64df_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log10.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log10.obj `if test -f 'libm/machine/amdgcn/v64df_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log10.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log10.c' object='libm/machine/amdgcn/libm_a-v64df_log10.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log10.obj `if test -f 'libm/machine/amdgcn/v64df_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log10.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_log2.o: libm/machine/amdgcn/v64df_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log2.o `test -f 'libm/machine/amdgcn/v64df_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log2.c' object='libm/machine/amdgcn/libm_a-v64df_log2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log2.o `test -f 'libm/machine/amdgcn/v64df_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log2.c + +libm/machine/amdgcn/libm_a-v64df_log2.obj: libm/machine/amdgcn/v64df_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log2.obj `if test -f 'libm/machine/amdgcn/v64df_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log2.c' object='libm/machine/amdgcn/libm_a-v64df_log2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log2.obj `if test -f 'libm/machine/amdgcn/v64df_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log2.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_modf.o: libm/machine/amdgcn/v64df_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_modf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_modf.o `test -f 'libm/machine/amdgcn/v64df_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_modf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_modf.c' object='libm/machine/amdgcn/libm_a-v64df_modf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_modf.o `test -f 'libm/machine/amdgcn/v64df_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_modf.c + +libm/machine/amdgcn/libm_a-v64df_modf.obj: libm/machine/amdgcn/v64df_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_modf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_modf.obj `if test -f 'libm/machine/amdgcn/v64df_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_modf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_modf.c' object='libm/machine/amdgcn/libm_a-v64df_modf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_modf.obj `if test -f 'libm/machine/amdgcn/v64df_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_modf.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_numtest.o: libm/machine/amdgcn/v64df_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_numtest.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_numtest.o `test -f 'libm/machine/amdgcn/v64df_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_numtest.c' object='libm/machine/amdgcn/libm_a-v64df_numtest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_numtest.o `test -f 'libm/machine/amdgcn/v64df_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_numtest.c + +libm/machine/amdgcn/libm_a-v64df_numtest.obj: libm/machine/amdgcn/v64df_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_numtest.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_numtest.obj `if test -f 'libm/machine/amdgcn/v64df_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_numtest.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_numtest.c' object='libm/machine/amdgcn/libm_a-v64df_numtest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_numtest.obj `if test -f 'libm/machine/amdgcn/v64df_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_numtest.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_pow.o: libm/machine/amdgcn/v64df_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_pow.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_pow.o `test -f 'libm/machine/amdgcn/v64df_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_pow.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_pow.c' object='libm/machine/amdgcn/libm_a-v64df_pow.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_pow.o `test -f 'libm/machine/amdgcn/v64df_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_pow.c + +libm/machine/amdgcn/libm_a-v64df_pow.obj: libm/machine/amdgcn/v64df_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_pow.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_pow.obj `if test -f 'libm/machine/amdgcn/v64df_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_pow.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_pow.c' object='libm/machine/amdgcn/libm_a-v64df_pow.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_pow.obj `if test -f 'libm/machine/amdgcn/v64df_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_pow.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_remainder.o: libm/machine/amdgcn/v64df_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_remainder.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_remainder.o `test -f 'libm/machine/amdgcn/v64df_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_remainder.c' object='libm/machine/amdgcn/libm_a-v64df_remainder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_remainder.o `test -f 'libm/machine/amdgcn/v64df_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_remainder.c + +libm/machine/amdgcn/libm_a-v64df_remainder.obj: libm/machine/amdgcn/v64df_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_remainder.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_remainder.obj `if test -f 'libm/machine/amdgcn/v64df_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_remainder.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_remainder.c' object='libm/machine/amdgcn/libm_a-v64df_remainder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_remainder.obj `if test -f 'libm/machine/amdgcn/v64df_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_remainder.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_rint.o: libm/machine/amdgcn/v64df_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_rint.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_rint.o `test -f 'libm/machine/amdgcn/v64df_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_rint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_rint.c' object='libm/machine/amdgcn/libm_a-v64df_rint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_rint.o `test -f 'libm/machine/amdgcn/v64df_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_rint.c + +libm/machine/amdgcn/libm_a-v64df_rint.obj: libm/machine/amdgcn/v64df_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_rint.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_rint.obj `if test -f 'libm/machine/amdgcn/v64df_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_rint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_rint.c' object='libm/machine/amdgcn/libm_a-v64df_rint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_rint.obj `if test -f 'libm/machine/amdgcn/v64df_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_rint.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_scalb.o: libm/machine/amdgcn/v64df_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalb.o `test -f 'libm/machine/amdgcn/v64df_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalb.c' object='libm/machine/amdgcn/libm_a-v64df_scalb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalb.o `test -f 'libm/machine/amdgcn/v64df_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalb.c + +libm/machine/amdgcn/libm_a-v64df_scalb.obj: libm/machine/amdgcn/v64df_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalb.obj `if test -f 'libm/machine/amdgcn/v64df_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalb.c' object='libm/machine/amdgcn/libm_a-v64df_scalb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalb.obj `if test -f 'libm/machine/amdgcn/v64df_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalb.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_scalbn.o: libm/machine/amdgcn/v64df_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalbn.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.o `test -f 'libm/machine/amdgcn/v64df_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalbn.c' object='libm/machine/amdgcn/libm_a-v64df_scalbn.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.o `test -f 'libm/machine/amdgcn/v64df_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalbn.c + +libm/machine/amdgcn/libm_a-v64df_scalbn.obj: libm/machine/amdgcn/v64df_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalbn.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.obj `if test -f 'libm/machine/amdgcn/v64df_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalbn.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalbn.c' object='libm/machine/amdgcn/libm_a-v64df_scalbn.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.obj `if test -f 'libm/machine/amdgcn/v64df_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalbn.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_signif.o: libm/machine/amdgcn/v64df_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_signif.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_signif.o `test -f 'libm/machine/amdgcn/v64df_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_signif.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_signif.c' object='libm/machine/amdgcn/libm_a-v64df_signif.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_signif.o `test -f 'libm/machine/amdgcn/v64df_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_signif.c + +libm/machine/amdgcn/libm_a-v64df_signif.obj: libm/machine/amdgcn/v64df_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_signif.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_signif.obj `if test -f 'libm/machine/amdgcn/v64df_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_signif.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_signif.c' object='libm/machine/amdgcn/libm_a-v64df_signif.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_signif.obj `if test -f 'libm/machine/amdgcn/v64df_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_signif.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sin.o: libm/machine/amdgcn/v64df_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sin.o `test -f 'libm/machine/amdgcn/v64df_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sin.c' object='libm/machine/amdgcn/libm_a-v64df_sin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sin.o `test -f 'libm/machine/amdgcn/v64df_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sin.c + +libm/machine/amdgcn/libm_a-v64df_sin.obj: libm/machine/amdgcn/v64df_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sin.obj `if test -f 'libm/machine/amdgcn/v64df_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sin.c' object='libm/machine/amdgcn/libm_a-v64df_sin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sin.obj `if test -f 'libm/machine/amdgcn/v64df_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sin.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sine.o: libm/machine/amdgcn/v64df_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sine.o `test -f 'libm/machine/amdgcn/v64df_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sine.c' object='libm/machine/amdgcn/libm_a-v64df_sine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sine.o `test -f 'libm/machine/amdgcn/v64df_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sine.c + +libm/machine/amdgcn/libm_a-v64df_sine.obj: libm/machine/amdgcn/v64df_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sine.obj `if test -f 'libm/machine/amdgcn/v64df_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sine.c' object='libm/machine/amdgcn/libm_a-v64df_sine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sine.obj `if test -f 'libm/machine/amdgcn/v64df_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sine.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sineh.o: libm/machine/amdgcn/v64df_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sineh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sineh.o `test -f 'libm/machine/amdgcn/v64df_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sineh.c' object='libm/machine/amdgcn/libm_a-v64df_sineh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sineh.o `test -f 'libm/machine/amdgcn/v64df_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sineh.c + +libm/machine/amdgcn/libm_a-v64df_sineh.obj: libm/machine/amdgcn/v64df_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sineh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sineh.obj `if test -f 'libm/machine/amdgcn/v64df_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sineh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sineh.c' object='libm/machine/amdgcn/libm_a-v64df_sineh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sineh.obj `if test -f 'libm/machine/amdgcn/v64df_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sineh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sinh.o: libm/machine/amdgcn/v64df_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sinh.o `test -f 'libm/machine/amdgcn/v64df_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sinh.c' object='libm/machine/amdgcn/libm_a-v64df_sinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sinh.o `test -f 'libm/machine/amdgcn/v64df_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sinh.c + +libm/machine/amdgcn/libm_a-v64df_sinh.obj: libm/machine/amdgcn/v64df_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sinh.obj `if test -f 'libm/machine/amdgcn/v64df_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sinh.c' object='libm/machine/amdgcn/libm_a-v64df_sinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sinh.obj `if test -f 'libm/machine/amdgcn/v64df_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sqrt.o: libm/machine/amdgcn/v64df_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sqrt.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.o `test -f 'libm/machine/amdgcn/v64df_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sqrt.c' object='libm/machine/amdgcn/libm_a-v64df_sqrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.o `test -f 'libm/machine/amdgcn/v64df_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sqrt.c + +libm/machine/amdgcn/libm_a-v64df_sqrt.obj: libm/machine/amdgcn/v64df_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sqrt.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.obj `if test -f 'libm/machine/amdgcn/v64df_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sqrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sqrt.c' object='libm/machine/amdgcn/libm_a-v64df_sqrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.obj `if test -f 'libm/machine/amdgcn/v64df_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sqrt.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_tan.o: libm/machine/amdgcn/v64df_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tan.o `test -f 'libm/machine/amdgcn/v64df_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tan.c' object='libm/machine/amdgcn/libm_a-v64df_tan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tan.o `test -f 'libm/machine/amdgcn/v64df_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tan.c + +libm/machine/amdgcn/libm_a-v64df_tan.obj: libm/machine/amdgcn/v64df_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tan.obj `if test -f 'libm/machine/amdgcn/v64df_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tan.c' object='libm/machine/amdgcn/libm_a-v64df_tan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tan.obj `if test -f 'libm/machine/amdgcn/v64df_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tan.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_tanh.o: libm/machine/amdgcn/v64df_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tanh.o `test -f 'libm/machine/amdgcn/v64df_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tanh.c' object='libm/machine/amdgcn/libm_a-v64df_tanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tanh.o `test -f 'libm/machine/amdgcn/v64df_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tanh.c + +libm/machine/amdgcn/libm_a-v64df_tanh.obj: libm/machine/amdgcn/v64df_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tanh.obj `if test -f 'libm/machine/amdgcn/v64df_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tanh.c' object='libm/machine/amdgcn/libm_a-v64df_tanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tanh.obj `if test -f 'libm/machine/amdgcn/v64df_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_tgamma.o: libm/machine/amdgcn/v64df_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.o `test -f 'libm/machine/amdgcn/v64df_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tgamma.c' object='libm/machine/amdgcn/libm_a-v64df_tgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.o `test -f 'libm/machine/amdgcn/v64df_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tgamma.c + +libm/machine/amdgcn/libm_a-v64df_tgamma.obj: libm/machine/amdgcn/v64df_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.obj `if test -f 'libm/machine/amdgcn/v64df_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tgamma.c' object='libm/machine/amdgcn/libm_a-v64df_tgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.obj `if test -f 'libm/machine/amdgcn/v64df_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tgamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_acos.o: libm/machine/amdgcn/v64sf_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acos.o `test -f 'libm/machine/amdgcn/v64sf_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acos.c' object='libm/machine/amdgcn/libm_a-v64sf_acos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acos.o `test -f 'libm/machine/amdgcn/v64sf_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acos.c + +libm/machine/amdgcn/libm_a-v64sf_acos.obj: libm/machine/amdgcn/v64sf_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acos.obj `if test -f 'libm/machine/amdgcn/v64sf_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acos.c' object='libm/machine/amdgcn/libm_a-v64sf_acos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acos.obj `if test -f 'libm/machine/amdgcn/v64sf_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acos.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_acosh.o: libm/machine/amdgcn/v64sf_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.o `test -f 'libm/machine/amdgcn/v64sf_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acosh.c' object='libm/machine/amdgcn/libm_a-v64sf_acosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.o `test -f 'libm/machine/amdgcn/v64sf_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acosh.c + +libm/machine/amdgcn/libm_a-v64sf_acosh.obj: libm/machine/amdgcn/v64sf_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.obj `if test -f 'libm/machine/amdgcn/v64sf_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acosh.c' object='libm/machine/amdgcn/libm_a-v64sf_acosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.obj `if test -f 'libm/machine/amdgcn/v64sf_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_asin.o: libm/machine/amdgcn/v64sf_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asin.o `test -f 'libm/machine/amdgcn/v64sf_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asin.c' object='libm/machine/amdgcn/libm_a-v64sf_asin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asin.o `test -f 'libm/machine/amdgcn/v64sf_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asin.c + +libm/machine/amdgcn/libm_a-v64sf_asin.obj: libm/machine/amdgcn/v64sf_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asin.obj `if test -f 'libm/machine/amdgcn/v64sf_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asin.c' object='libm/machine/amdgcn/libm_a-v64sf_asin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asin.obj `if test -f 'libm/machine/amdgcn/v64sf_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asin.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_asine.o: libm/machine/amdgcn/v64sf_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asine.o `test -f 'libm/machine/amdgcn/v64sf_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asine.c' object='libm/machine/amdgcn/libm_a-v64sf_asine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asine.o `test -f 'libm/machine/amdgcn/v64sf_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asine.c + +libm/machine/amdgcn/libm_a-v64sf_asine.obj: libm/machine/amdgcn/v64sf_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asine.obj `if test -f 'libm/machine/amdgcn/v64sf_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asine.c' object='libm/machine/amdgcn/libm_a-v64sf_asine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asine.obj `if test -f 'libm/machine/amdgcn/v64sf_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asine.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_asinh.o: libm/machine/amdgcn/v64sf_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.o `test -f 'libm/machine/amdgcn/v64sf_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asinh.c' object='libm/machine/amdgcn/libm_a-v64sf_asinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.o `test -f 'libm/machine/amdgcn/v64sf_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asinh.c + +libm/machine/amdgcn/libm_a-v64sf_asinh.obj: libm/machine/amdgcn/v64sf_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.obj `if test -f 'libm/machine/amdgcn/v64sf_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asinh.c' object='libm/machine/amdgcn/libm_a-v64sf_asinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.obj `if test -f 'libm/machine/amdgcn/v64sf_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atan.o: libm/machine/amdgcn/v64sf_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan.o `test -f 'libm/machine/amdgcn/v64sf_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan.c' object='libm/machine/amdgcn/libm_a-v64sf_atan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan.o `test -f 'libm/machine/amdgcn/v64sf_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan.c + +libm/machine/amdgcn/libm_a-v64sf_atan.obj: libm/machine/amdgcn/v64sf_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan.obj `if test -f 'libm/machine/amdgcn/v64sf_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan.c' object='libm/machine/amdgcn/libm_a-v64sf_atan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan.obj `if test -f 'libm/machine/amdgcn/v64sf_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atan2.o: libm/machine/amdgcn/v64sf_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.o `test -f 'libm/machine/amdgcn/v64sf_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan2.c' object='libm/machine/amdgcn/libm_a-v64sf_atan2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.o `test -f 'libm/machine/amdgcn/v64sf_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan2.c + +libm/machine/amdgcn/libm_a-v64sf_atan2.obj: libm/machine/amdgcn/v64sf_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.obj `if test -f 'libm/machine/amdgcn/v64sf_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan2.c' object='libm/machine/amdgcn/libm_a-v64sf_atan2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.obj `if test -f 'libm/machine/amdgcn/v64sf_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan2.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atangent.o: libm/machine/amdgcn/v64sf_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atangent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.o `test -f 'libm/machine/amdgcn/v64sf_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atangent.c' object='libm/machine/amdgcn/libm_a-v64sf_atangent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.o `test -f 'libm/machine/amdgcn/v64sf_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atangent.c + +libm/machine/amdgcn/libm_a-v64sf_atangent.obj: libm/machine/amdgcn/v64sf_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atangent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.obj `if test -f 'libm/machine/amdgcn/v64sf_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atangent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atangent.c' object='libm/machine/amdgcn/libm_a-v64sf_atangent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.obj `if test -f 'libm/machine/amdgcn/v64sf_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atangent.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atanh.o: libm/machine/amdgcn/v64sf_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.o `test -f 'libm/machine/amdgcn/v64sf_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atanh.c' object='libm/machine/amdgcn/libm_a-v64sf_atanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.o `test -f 'libm/machine/amdgcn/v64sf_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atanh.c + +libm/machine/amdgcn/libm_a-v64sf_atanh.obj: libm/machine/amdgcn/v64sf_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.obj `if test -f 'libm/machine/amdgcn/v64sf_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atanh.c' object='libm/machine/amdgcn/libm_a-v64sf_atanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.obj `if test -f 'libm/machine/amdgcn/v64sf_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_copysign.o: libm/machine/amdgcn/v64sf_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_copysign.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.o `test -f 'libm/machine/amdgcn/v64sf_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_copysign.c' object='libm/machine/amdgcn/libm_a-v64sf_copysign.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.o `test -f 'libm/machine/amdgcn/v64sf_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_copysign.c + +libm/machine/amdgcn/libm_a-v64sf_copysign.obj: libm/machine/amdgcn/v64sf_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_copysign.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.obj `if test -f 'libm/machine/amdgcn/v64sf_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_copysign.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_copysign.c' object='libm/machine/amdgcn/libm_a-v64sf_copysign.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.obj `if test -f 'libm/machine/amdgcn/v64sf_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_copysign.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_cos.o: libm/machine/amdgcn/v64sf_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cos.o `test -f 'libm/machine/amdgcn/v64sf_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cos.c' object='libm/machine/amdgcn/libm_a-v64sf_cos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cos.o `test -f 'libm/machine/amdgcn/v64sf_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cos.c + +libm/machine/amdgcn/libm_a-v64sf_cos.obj: libm/machine/amdgcn/v64sf_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cos.obj `if test -f 'libm/machine/amdgcn/v64sf_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cos.c' object='libm/machine/amdgcn/libm_a-v64sf_cos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cos.obj `if test -f 'libm/machine/amdgcn/v64sf_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cos.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_cosh.o: libm/machine/amdgcn/v64sf_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.o `test -f 'libm/machine/amdgcn/v64sf_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cosh.c' object='libm/machine/amdgcn/libm_a-v64sf_cosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.o `test -f 'libm/machine/amdgcn/v64sf_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cosh.c + +libm/machine/amdgcn/libm_a-v64sf_cosh.obj: libm/machine/amdgcn/v64sf_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.obj `if test -f 'libm/machine/amdgcn/v64sf_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cosh.c' object='libm/machine/amdgcn/libm_a-v64sf_cosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.obj `if test -f 'libm/machine/amdgcn/v64sf_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_erf.o: libm/machine/amdgcn/v64sf_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_erf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_erf.o `test -f 'libm/machine/amdgcn/v64sf_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_erf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_erf.c' object='libm/machine/amdgcn/libm_a-v64sf_erf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_erf.o `test -f 'libm/machine/amdgcn/v64sf_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_erf.c + +libm/machine/amdgcn/libm_a-v64sf_erf.obj: libm/machine/amdgcn/v64sf_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_erf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_erf.obj `if test -f 'libm/machine/amdgcn/v64sf_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_erf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_erf.c' object='libm/machine/amdgcn/libm_a-v64sf_erf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_erf.obj `if test -f 'libm/machine/amdgcn/v64sf_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_erf.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_exp.o: libm/machine/amdgcn/v64sf_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp.o `test -f 'libm/machine/amdgcn/v64sf_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp.c' object='libm/machine/amdgcn/libm_a-v64sf_exp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp.o `test -f 'libm/machine/amdgcn/v64sf_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp.c + +libm/machine/amdgcn/libm_a-v64sf_exp.obj: libm/machine/amdgcn/v64sf_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp.obj `if test -f 'libm/machine/amdgcn/v64sf_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp.c' object='libm/machine/amdgcn/libm_a-v64sf_exp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp.obj `if test -f 'libm/machine/amdgcn/v64sf_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_exp2.o: libm/machine/amdgcn/v64sf_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.o `test -f 'libm/machine/amdgcn/v64sf_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp2.c' object='libm/machine/amdgcn/libm_a-v64sf_exp2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.o `test -f 'libm/machine/amdgcn/v64sf_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp2.c + +libm/machine/amdgcn/libm_a-v64sf_exp2.obj: libm/machine/amdgcn/v64sf_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.obj `if test -f 'libm/machine/amdgcn/v64sf_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp2.c' object='libm/machine/amdgcn/libm_a-v64sf_exp2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.obj `if test -f 'libm/machine/amdgcn/v64sf_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp2.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_finite.o: libm/machine/amdgcn/v64sf_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_finite.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_finite.o `test -f 'libm/machine/amdgcn/v64sf_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_finite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_finite.c' object='libm/machine/amdgcn/libm_a-v64sf_finite.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_finite.o `test -f 'libm/machine/amdgcn/v64sf_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_finite.c + +libm/machine/amdgcn/libm_a-v64sf_finite.obj: libm/machine/amdgcn/v64sf_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_finite.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_finite.obj `if test -f 'libm/machine/amdgcn/v64sf_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_finite.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_finite.c' object='libm/machine/amdgcn/libm_a-v64sf_finite.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_finite.obj `if test -f 'libm/machine/amdgcn/v64sf_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_finite.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_fmod.o: libm/machine/amdgcn/v64sf_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_fmod.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.o `test -f 'libm/machine/amdgcn/v64sf_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_fmod.c' object='libm/machine/amdgcn/libm_a-v64sf_fmod.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.o `test -f 'libm/machine/amdgcn/v64sf_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_fmod.c + +libm/machine/amdgcn/libm_a-v64sf_fmod.obj: libm/machine/amdgcn/v64sf_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_fmod.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.obj `if test -f 'libm/machine/amdgcn/v64sf_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_fmod.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_fmod.c' object='libm/machine/amdgcn/libm_a-v64sf_fmod.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.obj `if test -f 'libm/machine/amdgcn/v64sf_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_fmod.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_gamma.o: libm/machine/amdgcn/v64sf_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_gamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.o `test -f 'libm/machine/amdgcn/v64sf_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_gamma.c' object='libm/machine/amdgcn/libm_a-v64sf_gamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.o `test -f 'libm/machine/amdgcn/v64sf_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_gamma.c + +libm/machine/amdgcn/libm_a-v64sf_gamma.obj: libm/machine/amdgcn/v64sf_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_gamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.obj `if test -f 'libm/machine/amdgcn/v64sf_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_gamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_gamma.c' object='libm/machine/amdgcn/libm_a-v64sf_gamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.obj `if test -f 'libm/machine/amdgcn/v64sf_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_gamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_hypot.o: libm/machine/amdgcn/v64sf_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_hypot.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.o `test -f 'libm/machine/amdgcn/v64sf_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_hypot.c' object='libm/machine/amdgcn/libm_a-v64sf_hypot.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.o `test -f 'libm/machine/amdgcn/v64sf_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_hypot.c + +libm/machine/amdgcn/libm_a-v64sf_hypot.obj: libm/machine/amdgcn/v64sf_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_hypot.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.obj `if test -f 'libm/machine/amdgcn/v64sf_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_hypot.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_hypot.c' object='libm/machine/amdgcn/libm_a-v64sf_hypot.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.obj `if test -f 'libm/machine/amdgcn/v64sf_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_hypot.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_ilogb.o: libm/machine/amdgcn/v64sf_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ilogb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.o `test -f 'libm/machine/amdgcn/v64sf_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ilogb.c' object='libm/machine/amdgcn/libm_a-v64sf_ilogb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.o `test -f 'libm/machine/amdgcn/v64sf_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ilogb.c + +libm/machine/amdgcn/libm_a-v64sf_ilogb.obj: libm/machine/amdgcn/v64sf_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ilogb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.obj `if test -f 'libm/machine/amdgcn/v64sf_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ilogb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ilogb.c' object='libm/machine/amdgcn/libm_a-v64sf_ilogb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.obj `if test -f 'libm/machine/amdgcn/v64sf_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ilogb.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_isnan.o: libm/machine/amdgcn/v64sf_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_isnan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.o `test -f 'libm/machine/amdgcn/v64sf_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_isnan.c' object='libm/machine/amdgcn/libm_a-v64sf_isnan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.o `test -f 'libm/machine/amdgcn/v64sf_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_isnan.c + +libm/machine/amdgcn/libm_a-v64sf_isnan.obj: libm/machine/amdgcn/v64sf_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_isnan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.obj `if test -f 'libm/machine/amdgcn/v64sf_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_isnan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_isnan.c' object='libm/machine/amdgcn/libm_a-v64sf_isnan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.obj `if test -f 'libm/machine/amdgcn/v64sf_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_isnan.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_ispos.o: libm/machine/amdgcn/v64sf_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ispos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.o `test -f 'libm/machine/amdgcn/v64sf_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ispos.c' object='libm/machine/amdgcn/libm_a-v64sf_ispos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.o `test -f 'libm/machine/amdgcn/v64sf_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ispos.c + +libm/machine/amdgcn/libm_a-v64sf_ispos.obj: libm/machine/amdgcn/v64sf_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ispos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.obj `if test -f 'libm/machine/amdgcn/v64sf_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ispos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ispos.c' object='libm/machine/amdgcn/libm_a-v64sf_ispos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.obj `if test -f 'libm/machine/amdgcn/v64sf_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ispos.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_lgamma.o: libm/machine/amdgcn/v64sf_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.o `test -f 'libm/machine/amdgcn/v64sf_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.o `test -f 'libm/machine/amdgcn/v64sf_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma.c + +libm/machine/amdgcn/libm_a-v64sf_lgamma.obj: libm/machine/amdgcn/v64sf_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o: libm/machine/amdgcn/v64sf_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o `test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o `test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma_r.c + +libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj: libm/machine/amdgcn/v64sf_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma_r.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_log.o: libm/machine/amdgcn/v64sf_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log.o `test -f 'libm/machine/amdgcn/v64sf_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log.c' object='libm/machine/amdgcn/libm_a-v64sf_log.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log.o `test -f 'libm/machine/amdgcn/v64sf_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log.c + +libm/machine/amdgcn/libm_a-v64sf_log.obj: libm/machine/amdgcn/v64sf_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log.obj `if test -f 'libm/machine/amdgcn/v64sf_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log.c' object='libm/machine/amdgcn/libm_a-v64sf_log.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log.obj `if test -f 'libm/machine/amdgcn/v64sf_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_log10.o: libm/machine/amdgcn/v64sf_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log10.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log10.o `test -f 'libm/machine/amdgcn/v64sf_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log10.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log10.c' object='libm/machine/amdgcn/libm_a-v64sf_log10.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log10.o `test -f 'libm/machine/amdgcn/v64sf_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log10.c + +libm/machine/amdgcn/libm_a-v64sf_log10.obj: libm/machine/amdgcn/v64sf_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log10.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log10.obj `if test -f 'libm/machine/amdgcn/v64sf_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log10.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log10.c' object='libm/machine/amdgcn/libm_a-v64sf_log10.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log10.obj `if test -f 'libm/machine/amdgcn/v64sf_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log10.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_log2.o: libm/machine/amdgcn/v64sf_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log2.o `test -f 'libm/machine/amdgcn/v64sf_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log2.c' object='libm/machine/amdgcn/libm_a-v64sf_log2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log2.o `test -f 'libm/machine/amdgcn/v64sf_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log2.c + +libm/machine/amdgcn/libm_a-v64sf_log2.obj: libm/machine/amdgcn/v64sf_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log2.obj `if test -f 'libm/machine/amdgcn/v64sf_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log2.c' object='libm/machine/amdgcn/libm_a-v64sf_log2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log2.obj `if test -f 'libm/machine/amdgcn/v64sf_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log2.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_modf.o: libm/machine/amdgcn/v64sf_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_modf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_modf.o `test -f 'libm/machine/amdgcn/v64sf_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_modf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_modf.c' object='libm/machine/amdgcn/libm_a-v64sf_modf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_modf.o `test -f 'libm/machine/amdgcn/v64sf_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_modf.c + +libm/machine/amdgcn/libm_a-v64sf_modf.obj: libm/machine/amdgcn/v64sf_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_modf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_modf.obj `if test -f 'libm/machine/amdgcn/v64sf_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_modf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_modf.c' object='libm/machine/amdgcn/libm_a-v64sf_modf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_modf.obj `if test -f 'libm/machine/amdgcn/v64sf_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_modf.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_numtest.o: libm/machine/amdgcn/v64sf_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_numtest.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.o `test -f 'libm/machine/amdgcn/v64sf_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_numtest.c' object='libm/machine/amdgcn/libm_a-v64sf_numtest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.o `test -f 'libm/machine/amdgcn/v64sf_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_numtest.c + +libm/machine/amdgcn/libm_a-v64sf_numtest.obj: libm/machine/amdgcn/v64sf_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_numtest.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.obj `if test -f 'libm/machine/amdgcn/v64sf_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_numtest.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_numtest.c' object='libm/machine/amdgcn/libm_a-v64sf_numtest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.obj `if test -f 'libm/machine/amdgcn/v64sf_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_numtest.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_pow.o: libm/machine/amdgcn/v64sf_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_pow.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_pow.o `test -f 'libm/machine/amdgcn/v64sf_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_pow.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_pow.c' object='libm/machine/amdgcn/libm_a-v64sf_pow.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_pow.o `test -f 'libm/machine/amdgcn/v64sf_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_pow.c + +libm/machine/amdgcn/libm_a-v64sf_pow.obj: libm/machine/amdgcn/v64sf_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_pow.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_pow.obj `if test -f 'libm/machine/amdgcn/v64sf_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_pow.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_pow.c' object='libm/machine/amdgcn/libm_a-v64sf_pow.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_pow.obj `if test -f 'libm/machine/amdgcn/v64sf_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_pow.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_remainder.o: libm/machine/amdgcn/v64sf_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_remainder.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.o `test -f 'libm/machine/amdgcn/v64sf_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_remainder.c' object='libm/machine/amdgcn/libm_a-v64sf_remainder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.o `test -f 'libm/machine/amdgcn/v64sf_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_remainder.c + +libm/machine/amdgcn/libm_a-v64sf_remainder.obj: libm/machine/amdgcn/v64sf_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_remainder.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.obj `if test -f 'libm/machine/amdgcn/v64sf_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_remainder.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_remainder.c' object='libm/machine/amdgcn/libm_a-v64sf_remainder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.obj `if test -f 'libm/machine/amdgcn/v64sf_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_remainder.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_rint.o: libm/machine/amdgcn/v64sf_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_rint.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_rint.o `test -f 'libm/machine/amdgcn/v64sf_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_rint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_rint.c' object='libm/machine/amdgcn/libm_a-v64sf_rint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_rint.o `test -f 'libm/machine/amdgcn/v64sf_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_rint.c + +libm/machine/amdgcn/libm_a-v64sf_rint.obj: libm/machine/amdgcn/v64sf_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_rint.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_rint.obj `if test -f 'libm/machine/amdgcn/v64sf_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_rint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_rint.c' object='libm/machine/amdgcn/libm_a-v64sf_rint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_rint.obj `if test -f 'libm/machine/amdgcn/v64sf_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_rint.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_scalb.o: libm/machine/amdgcn/v64sf_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.o `test -f 'libm/machine/amdgcn/v64sf_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalb.c' object='libm/machine/amdgcn/libm_a-v64sf_scalb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.o `test -f 'libm/machine/amdgcn/v64sf_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalb.c + +libm/machine/amdgcn/libm_a-v64sf_scalb.obj: libm/machine/amdgcn/v64sf_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.obj `if test -f 'libm/machine/amdgcn/v64sf_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalb.c' object='libm/machine/amdgcn/libm_a-v64sf_scalb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.obj `if test -f 'libm/machine/amdgcn/v64sf_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalb.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_scalbn.o: libm/machine/amdgcn/v64sf_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalbn.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.o `test -f 'libm/machine/amdgcn/v64sf_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalbn.c' object='libm/machine/amdgcn/libm_a-v64sf_scalbn.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.o `test -f 'libm/machine/amdgcn/v64sf_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalbn.c + +libm/machine/amdgcn/libm_a-v64sf_scalbn.obj: libm/machine/amdgcn/v64sf_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalbn.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.obj `if test -f 'libm/machine/amdgcn/v64sf_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalbn.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalbn.c' object='libm/machine/amdgcn/libm_a-v64sf_scalbn.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.obj `if test -f 'libm/machine/amdgcn/v64sf_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalbn.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_signif.o: libm/machine/amdgcn/v64sf_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_signif.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_signif.o `test -f 'libm/machine/amdgcn/v64sf_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_signif.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_signif.c' object='libm/machine/amdgcn/libm_a-v64sf_signif.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_signif.o `test -f 'libm/machine/amdgcn/v64sf_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_signif.c + +libm/machine/amdgcn/libm_a-v64sf_signif.obj: libm/machine/amdgcn/v64sf_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_signif.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_signif.obj `if test -f 'libm/machine/amdgcn/v64sf_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_signif.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_signif.c' object='libm/machine/amdgcn/libm_a-v64sf_signif.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_signif.obj `if test -f 'libm/machine/amdgcn/v64sf_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_signif.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sin.o: libm/machine/amdgcn/v64sf_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sin.o `test -f 'libm/machine/amdgcn/v64sf_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sin.c' object='libm/machine/amdgcn/libm_a-v64sf_sin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sin.o `test -f 'libm/machine/amdgcn/v64sf_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sin.c + +libm/machine/amdgcn/libm_a-v64sf_sin.obj: libm/machine/amdgcn/v64sf_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sin.obj `if test -f 'libm/machine/amdgcn/v64sf_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sin.c' object='libm/machine/amdgcn/libm_a-v64sf_sin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sin.obj `if test -f 'libm/machine/amdgcn/v64sf_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sin.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sine.o: libm/machine/amdgcn/v64sf_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sine.o `test -f 'libm/machine/amdgcn/v64sf_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sine.c' object='libm/machine/amdgcn/libm_a-v64sf_sine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sine.o `test -f 'libm/machine/amdgcn/v64sf_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sine.c + +libm/machine/amdgcn/libm_a-v64sf_sine.obj: libm/machine/amdgcn/v64sf_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sine.obj `if test -f 'libm/machine/amdgcn/v64sf_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sine.c' object='libm/machine/amdgcn/libm_a-v64sf_sine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sine.obj `if test -f 'libm/machine/amdgcn/v64sf_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sine.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sineh.o: libm/machine/amdgcn/v64sf_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sineh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.o `test -f 'libm/machine/amdgcn/v64sf_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sineh.c' object='libm/machine/amdgcn/libm_a-v64sf_sineh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.o `test -f 'libm/machine/amdgcn/v64sf_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sineh.c + +libm/machine/amdgcn/libm_a-v64sf_sineh.obj: libm/machine/amdgcn/v64sf_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sineh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.obj `if test -f 'libm/machine/amdgcn/v64sf_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sineh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sineh.c' object='libm/machine/amdgcn/libm_a-v64sf_sineh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.obj `if test -f 'libm/machine/amdgcn/v64sf_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sineh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sinh.o: libm/machine/amdgcn/v64sf_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.o `test -f 'libm/machine/amdgcn/v64sf_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sinh.c' object='libm/machine/amdgcn/libm_a-v64sf_sinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.o `test -f 'libm/machine/amdgcn/v64sf_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sinh.c + +libm/machine/amdgcn/libm_a-v64sf_sinh.obj: libm/machine/amdgcn/v64sf_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.obj `if test -f 'libm/machine/amdgcn/v64sf_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sinh.c' object='libm/machine/amdgcn/libm_a-v64sf_sinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.obj `if test -f 'libm/machine/amdgcn/v64sf_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sqrt.o: libm/machine/amdgcn/v64sf_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sqrt.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.o `test -f 'libm/machine/amdgcn/v64sf_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sqrt.c' object='libm/machine/amdgcn/libm_a-v64sf_sqrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.o `test -f 'libm/machine/amdgcn/v64sf_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sqrt.c + +libm/machine/amdgcn/libm_a-v64sf_sqrt.obj: libm/machine/amdgcn/v64sf_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sqrt.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.obj `if test -f 'libm/machine/amdgcn/v64sf_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sqrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sqrt.c' object='libm/machine/amdgcn/libm_a-v64sf_sqrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.obj `if test -f 'libm/machine/amdgcn/v64sf_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sqrt.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_tan.o: libm/machine/amdgcn/v64sf_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tan.o `test -f 'libm/machine/amdgcn/v64sf_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tan.c' object='libm/machine/amdgcn/libm_a-v64sf_tan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tan.o `test -f 'libm/machine/amdgcn/v64sf_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tan.c + +libm/machine/amdgcn/libm_a-v64sf_tan.obj: libm/machine/amdgcn/v64sf_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tan.obj `if test -f 'libm/machine/amdgcn/v64sf_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tan.c' object='libm/machine/amdgcn/libm_a-v64sf_tan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tan.obj `if test -f 'libm/machine/amdgcn/v64sf_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tan.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_tanh.o: libm/machine/amdgcn/v64sf_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.o `test -f 'libm/machine/amdgcn/v64sf_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tanh.c' object='libm/machine/amdgcn/libm_a-v64sf_tanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.o `test -f 'libm/machine/amdgcn/v64sf_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tanh.c + +libm/machine/amdgcn/libm_a-v64sf_tanh.obj: libm/machine/amdgcn/v64sf_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.obj `if test -f 'libm/machine/amdgcn/v64sf_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tanh.c' object='libm/machine/amdgcn/libm_a-v64sf_tanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.obj `if test -f 'libm/machine/amdgcn/v64sf_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_tgamma.o: libm/machine/amdgcn/v64sf_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.o `test -f 'libm/machine/amdgcn/v64sf_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_tgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.o `test -f 'libm/machine/amdgcn/v64sf_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tgamma.c + +libm/machine/amdgcn/libm_a-v64sf_tgamma.obj: libm/machine/amdgcn/v64sf_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_tgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tgamma.c'; fi` + libm/machine/arm/libm_a-e_sqrt.o: libm/machine/arm/e_sqrt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/arm/libm_a-e_sqrt.o -MD -MP -MF libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Tpo -c -o libm/machine/arm/libm_a-e_sqrt.o `test -f 'libm/machine/arm/e_sqrt.c' || echo '$(srcdir)/'`libm/machine/arm/e_sqrt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Tpo libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Po @@ -46518,6 +48291,8 @@ distclean-generic: -rm -f libm/fenv/$(am__dirstamp) -rm -f libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/aarch64/$(am__dirstamp) + -rm -f libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) + -rm -f libm/machine/amdgcn/$(am__dirstamp) -rm -f libm/machine/arm/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/arm/$(am__dirstamp) -rm -f libm/machine/i386/$(DEPDIR)/$(am__dirstamp) @@ -46555,7 +48330,7 @@ clean-am: clean-aminfo clean-checkPROGRAMS clean-generic clean-local \ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-compile \ distclean-generic distclean-hdr distclean-local distclean-tags @@ -46693,7 +48468,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/newlib/configure b/newlib/configure index 0b6ec15e98..f29aca5d39 100755 --- a/newlib/configure +++ b/newlib/configure @@ -623,6 +623,8 @@ HAVE_LIBM_MACHINE_I386_FALSE HAVE_LIBM_MACHINE_I386_TRUE HAVE_LIBM_MACHINE_ARM_FALSE HAVE_LIBM_MACHINE_ARM_TRUE +HAVE_LIBM_MACHINE_AMDGCN_FALSE +HAVE_LIBM_MACHINE_AMDGCN_TRUE HAVE_LIBM_MACHINE_AARCH64_FALSE HAVE_LIBM_MACHINE_AARCH64_TRUE HAS_NDS32_FPU_DP_FALSE @@ -6216,6 +6218,14 @@ else HAVE_LIBM_MACHINE_AARCH64_FALSE= fi + if test "${libm_machine_dir}" = "amdgcn"; then + HAVE_LIBM_MACHINE_AMDGCN_TRUE= + HAVE_LIBM_MACHINE_AMDGCN_FALSE='#' +else + HAVE_LIBM_MACHINE_AMDGCN_TRUE='#' + HAVE_LIBM_MACHINE_AMDGCN_FALSE= +fi + if test "${libm_machine_dir}" = "arm"; then HAVE_LIBM_MACHINE_ARM_TRUE= HAVE_LIBM_MACHINE_ARM_FALSE='#' @@ -7875,6 +7885,10 @@ if test -z "${HAVE_LIBM_MACHINE_AARCH64_TRUE}" && test -z "${HAVE_LIBM_MACHINE_A as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_LIBM_MACHINE_AMDGCN_TRUE}" && test -z "${HAVE_LIBM_MACHINE_AMDGCN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AMDGCN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_LIBM_MACHINE_ARM_TRUE}" && test -z "${HAVE_LIBM_MACHINE_ARM_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/newlib/configure.host b/newlib/configure.host index 32d1436baa..7157877ffa 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -119,6 +119,7 @@ case "${host_cpu}" in amdgcn*) newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__" machine_dir=amdgcn + libm_machine_dir=amdgcn newlib_cv_initfinit_array=yes ;; arc*) diff --git a/newlib/libm/Makefile.inc b/newlib/libm/Makefile.inc index 7fda120e53..9d1469555d 100644 --- a/newlib/libm/Makefile.inc +++ b/newlib/libm/Makefile.inc @@ -51,6 +51,9 @@ include %D%/test/Makefile.inc if HAVE_LIBM_MACHINE_AARCH64 include %D%/machine/aarch64/Makefile.inc endif +if HAVE_LIBM_MACHINE_AMDGCN +include %D%/machine/amdgcn/Makefile.inc +endif if HAVE_LIBM_MACHINE_ARM include %D%/machine/arm/Makefile.inc endif diff --git a/newlib/libm/acinclude.m4 b/newlib/libm/acinclude.m4 index 0be95a3b29..f7f9f534f8 100644 --- a/newlib/libm/acinclude.m4 +++ b/newlib/libm/acinclude.m4 @@ -4,7 +4,7 @@ m4_include([libm/machine/nds32/acinclude.m4]) dnl Define HAVE_LIBM_MACHINE_ automake conditionals. m4_foreach_w([MACHINE], [ - aarch64 arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 + aarch64 amdgcn arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 ], [dnl AM_CONDITIONAL([HAVE_LIBM_MACHINE_]m4_toupper(MACHINE), test "${libm_machine_dir}" = "MACHINE") ]) diff --git a/newlib/libm/machine/amdgcn/Makefile.inc b/newlib/libm/machine/amdgcn/Makefile.inc new file mode 100644 index 0000000000..9d6a18514b --- /dev/null +++ b/newlib/libm/machine/amdgcn/Makefile.inc @@ -0,0 +1,91 @@ +%C%_src = \ + %D%/v64_mathcnst.c \ + %D%/v64_reent.c \ + %D%/v64df_acos.c \ + %D%/v64df_acosh.c \ + %D%/v64df_asin.c \ + %D%/v64df_asine.c \ + %D%/v64df_asinh.c \ + %D%/v64df_atan.c \ + %D%/v64df_atan2.c \ + %D%/v64df_atangent.c \ + %D%/v64df_atanh.c \ + %D%/v64df_copysign.c \ + %D%/v64df_cos.c \ + %D%/v64df_cosh.c \ + %D%/v64df_erf.c \ + %D%/v64df_exp.c \ + %D%/v64df_exp2.c \ + %D%/v64df_finite.c \ + %D%/v64df_fmod.c \ + %D%/v64df_gamma.c \ + %D%/v64df_hypot.c \ + %D%/v64df_ilogb.c \ + %D%/v64df_isnan.c \ + %D%/v64df_ispos.c \ + %D%/v64df_lgamma.c \ + %D%/v64df_lgamma_r.c \ + %D%/v64df_log.c \ + %D%/v64df_log10.c \ + %D%/v64df_log2.c \ + %D%/v64df_modf.c \ + %D%/v64df_numtest.c \ + %D%/v64df_pow.c \ + %D%/v64df_remainder.c \ + %D%/v64df_rint.c \ + %D%/v64df_scalb.c \ + %D%/v64df_scalbn.c \ + %D%/v64df_signif.c \ + %D%/v64df_sin.c \ + %D%/v64df_sine.c \ + %D%/v64df_sineh.c \ + %D%/v64df_sinh.c \ + %D%/v64df_sqrt.c \ + %D%/v64df_tan.c \ + %D%/v64df_tanh.c \ + %D%/v64df_tgamma.c \ + %D%/v64sf_acos.c \ + %D%/v64sf_acosh.c \ + %D%/v64sf_asin.c \ + %D%/v64sf_asine.c \ + %D%/v64sf_asinh.c \ + %D%/v64sf_atan.c \ + %D%/v64sf_atan2.c \ + %D%/v64sf_atangent.c \ + %D%/v64sf_atanh.c \ + %D%/v64sf_copysign.c \ + %D%/v64sf_cos.c \ + %D%/v64sf_cosh.c \ + %D%/v64sf_erf.c \ + %D%/v64sf_exp.c \ + %D%/v64sf_exp2.c \ + %D%/v64sf_finite.c \ + %D%/v64sf_fmod.c \ + %D%/v64sf_gamma.c \ + %D%/v64sf_hypot.c \ + %D%/v64sf_ilogb.c \ + %D%/v64sf_isnan.c \ + %D%/v64sf_ispos.c \ + %D%/v64sf_lgamma.c \ + %D%/v64sf_lgamma_r.c \ + %D%/v64sf_log.c \ + %D%/v64sf_log10.c \ + %D%/v64sf_log2.c \ + %D%/v64sf_modf.c \ + %D%/v64sf_numtest.c \ + %D%/v64sf_pow.c \ + %D%/v64sf_remainder.c \ + %D%/v64sf_rint.c \ + %D%/v64sf_scalb.c \ + %D%/v64sf_scalbn.c \ + %D%/v64sf_signif.c \ + %D%/v64sf_sin.c \ + %D%/v64sf_sine.c \ + %D%/v64sf_sineh.c \ + %D%/v64sf_sinh.c \ + %D%/v64sf_sqrt.c \ + %D%/v64sf_tan.c \ + %D%/v64sf_tanh.c \ + %D%/v64sf_tgamma.c + +libm_a_SOURCES += $(%C%_src) diff --git a/newlib/libm/machine/amdgcn/amdgcnmach.h b/newlib/libm/machine/amdgcn/amdgcnmach.h new file mode 100644 index 0000000000..4436a95082 --- /dev/null +++ b/newlib/libm/machine/amdgcn/amdgcnmach.h @@ -0,0 +1,484 @@ +/* Optimization at -O2 and above currently result in ICEs when converting + between vector types. */ +#pragma GCC optimize ("O1") + +#include +#include +#include + +typedef float v2sf __attribute__ ((vector_size (8))); +typedef float v4sf __attribute__ ((vector_size (16))); +typedef float v8sf __attribute__ ((vector_size (32))); +typedef float v16sf __attribute__ ((vector_size (64))); +typedef float v32sf __attribute__ ((vector_size (128))); +typedef float v64sf __attribute__ ((vector_size (256))); + +typedef double v2df __attribute__ ((vector_size (16))); +typedef double v4df __attribute__ ((vector_size (32))); +typedef double v8df __attribute__ ((vector_size (64))); +typedef double v16df __attribute__ ((vector_size (128))); +typedef double v32df __attribute__ ((vector_size (256))); +typedef double v64df __attribute__ ((vector_size (512))); + +typedef int v2si __attribute__ ((vector_size (8))); +typedef int v4si __attribute__ ((vector_size (16))); +typedef int v8si __attribute__ ((vector_size (32))); +typedef int v16si __attribute__ ((vector_size (64))); +typedef int v32si __attribute__ ((vector_size (128))); +typedef int v64si __attribute__ ((vector_size (256))); + +typedef unsigned int v64usi __attribute__ ((vector_size (256))); + +typedef long v2di __attribute__ ((vector_size (16))); +typedef long v4di __attribute__ ((vector_size (32))); +typedef long v8di __attribute__ ((vector_size (64))); +typedef long v16di __attribute__ ((vector_size (128))); +typedef long v32di __attribute__ ((vector_size (256))); +typedef long v64di __attribute__ ((vector_size (512))); + +typedef union { + v2sf t_v2sf; + v4sf t_v4sf; + v8sf t_v8sf; + v16sf t_v16sf; + v32sf t_v32sf; + v64sf t_v64sf; + + v2df t_v2df; + v4df t_v4df; + v8df t_v8df; + v16df t_v16df; + v32df t_v32df; + v64df t_v64df; + + v2si t_v2si; + v4si t_v4si; + v8si t_v8si; + v16si t_v16si; + v32si t_v32si; + v64si t_v64si; + + v64usi t_v64usi; + + v2di t_v2di; + v4di t_v4di; + v8di t_v8di; + v16di t_v16di; + v32di t_v32di; + v64di t_v64di; +} vector_union; + +/* Cast between vectors with a different number of elements. */ + +#define RESIZE_VECTOR(to_t, from) \ +({ \ + __auto_type __from = (from); \ + *((to_t *) &__from); \ +}) + +/* Bit-wise cast vector FROM to type TO_T. */ + +#define CAST_VECTOR(to_t, from) \ +({ \ + _Static_assert (sizeof (to_t) == sizeof (from)); \ + union { \ + typeof (from) __from; \ + to_t __to; \ + } __tmp; \ + __tmp.__from = (from); \ + __tmp.__to; \ +}) + +#define EXTRACT_WORDS(hi, lo, x) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = (x); \ + hi = __builtin_convertvector (__tmp.t_v64di >> 32, typeof (hi)); \ + lo = __builtin_convertvector (__tmp.t_v64di & 0xffffffff, typeof (lo)); \ +} while (0) + +#define INSERT_WORDS(x, hi, lo, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64di = __builtin_convertvector (hi, v64di) << 32 | \ + __builtin_convertvector (lo, v64di) & 0xffffffff; \ + VECTOR_COND_MOVE (x, __tmp.t_v64df, cond); \ +} while (0) + +#define GET_HIGH_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = (y); \ + VECTOR_COND_MOVE (x, __builtin_convertvector (__tmp.t_v64di >> 32, v64si), \ + (cond)); \ +} while (0) + +#define GET_LOW_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = (y); \ + VECTOR_COND_MOVE (x, __builtin_convertvector (__tmp.t_v64di & 0xffffffff, \ + v64si), (cond)); \ +} while (0) + +#define SET_HIGH_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = x; \ + __tmp.t_v64di &= 0xffffffff; \ + __tmp.t_v64di |= __builtin_convertvector (y, v64di) << 32; \ + VECTOR_COND_MOVE (x, __tmp.t_v64df, (cond)); \ +} while (0) + +#define SET_LOW_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = x; \ + __tmp.t_v64di &= 0xffffffff00000000ULL; \ + __tmp.t_v64di |= __builtin_convertvector (y, v64di); \ + VECTOR_COND_MOVE (x, __tmp.t_v64df, (cond)); \ + } while (0) + +#define GET_FLOAT_WORD(x, y, cond) \ + VECTOR_COND_MOVE(x, CAST_VECTOR(v64si, (y)), (cond)) + +#define SET_FLOAT_WORD(x, y, cond) \ + VECTOR_COND_MOVE(x, CAST_VECTOR(v64sf, (y)), (cond)) + +#define NO_COND __mask + +/* Note - __mask is _not_ accounted for in VECTOR_MERGE! */ +#define VECTOR_MERGE(vec1, vec2, cond) \ +({ \ + _Static_assert (__builtin_types_compatible_p (typeof (vec1), typeof (vec2))); \ + union { \ + typeof (vec1) val; \ + v64si t_v64si; \ + v64di t_v64di; \ + } __vec1, __vec2, __res; \ + __vec1.val = (vec1); \ + __vec2.val = (vec2); \ + __builtin_choose_expr ( \ + sizeof (vec1) == sizeof (v64si), \ + ({ \ + v64si __bitmask = __builtin_convertvector ((cond), v64si); \ + __res.t_v64si = (__vec1.t_v64si & __bitmask) \ + | (__vec2.t_v64si & ~__bitmask); \ + }), \ + ({ \ + v64di __bitmask = __builtin_convertvector ((cond), v64di); \ + __res.t_v64di = (__vec1.t_v64di & __bitmask) \ + | (__vec2.t_v64di & ~__bitmask); \ + })); \ + __res.val; \ +}) + +#define VECTOR_RETURN(retval, cond) \ +do { \ + _Static_assert (__builtin_types_compatible_p (typeof (retval), typeof (__ret))); \ + __auto_type __cond = __builtin_convertvector ((cond), typeof (__mask)); \ + __auto_type __retval = (retval); \ + VECTOR_COND_MOVE (__ret, __retval, __cond); \ + __mask &= ~__cond; \ +} while (0) + +#define VECTOR_COND_MOVE(var, val, cond) \ +do { \ + _Static_assert (__builtin_types_compatible_p (typeof (var), typeof (val))); \ + __auto_type __cond = __builtin_convertvector ((cond), typeof (__mask)); \ + var = VECTOR_MERGE ((val), var, __cond & __mask); \ +} while (0) + +#define VECTOR_IF(cond, cond_var) \ +{ \ + __auto_type cond_var = (cond); \ + __auto_type __inv_cond = ~cond_var; \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSEIF(cond, cond_var) \ + } \ + cond_var = __inv_cond & (cond); \ + __inv_cond &= ~(cond); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSE(cond_var) \ + } \ + cond_var = __inv_cond; \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_IF2(cond, cond_var, prev_cond_var) \ +{ \ + __auto_type cond_var = (cond) & __builtin_convertvector (prev_cond_var, typeof (cond)); \ + __auto_type __inv_cond = ~(cond); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSEIF2(cond, cond_var, prev_cond_var) \ + } \ + cond_var = (cond) & __inv_cond & __builtin_convertvector (prev_cond_var, typeof (cond)); \ + __inv_cond &= ~(cond); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSE2(cond_var, prev_cond_var) \ + } \ + cond_var = __inv_cond & __builtin_convertvector (prev_cond_var, typeof (__inv_cond)); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + + +#define VECTOR_ENDIF \ + } \ +} + +#define VECTOR_INIT_AUX(x, type) \ +({ \ + typeof (x) __e = (x); \ + type __tmp = { \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e }; \ + __tmp; \ +}) + +#define VECTOR_INIT(x) \ + (_Generic ((x), int: VECTOR_INIT_AUX ((x), v64si), \ + unsigned: VECTOR_INIT_AUX ((x), v64usi), \ + long: VECTOR_INIT_AUX ((x), v64di), \ + float: VECTOR_INIT_AUX ((x), v64sf), \ + double: VECTOR_INIT_AUX ((x), v64df))) + +#define VECTOR_WIDTH(TYPE) (sizeof (TYPE) / (V_SF_SI_P (TYPE) ? 4 : 8)) + +#define V_SF_SI_P(TYPE) \ + (__builtin_types_compatible_p (TYPE, v2sf) \ + || __builtin_types_compatible_p (TYPE, v4sf) \ + || __builtin_types_compatible_p (TYPE, v8sf) \ + || __builtin_types_compatible_p (TYPE, v16sf) \ + || __builtin_types_compatible_p (TYPE, v32sf) \ + || __builtin_types_compatible_p (TYPE, v64sf) \ + || __builtin_types_compatible_p (TYPE, v2si) \ + || __builtin_types_compatible_p (TYPE, v4si) \ + || __builtin_types_compatible_p (TYPE, v8si) \ + || __builtin_types_compatible_p (TYPE, v16si) \ + || __builtin_types_compatible_p (TYPE, v32si) \ + || __builtin_types_compatible_p (TYPE, v64si)) + +#define VECTOR_INIT_MASK(TYPE) \ +({ \ + vector_union __mask; \ + __mask.t_v64di = VECTOR_INIT (0L); \ + for (int i = 0; i < VECTOR_WIDTH (TYPE); i++) \ + __mask.t_v64di[i] = -1; \ + __builtin_choose_expr (V_SF_SI_P (TYPE), __mask.t_v64si, __mask.t_v64di); \ +}) + +#define ALL_ZEROES_P(x) (COND_TO_BITMASK(x) == 0) + +#define COND_TO_BITMASK(x) \ +({ \ + long __tmp = 0; \ + __auto_type __x = __builtin_convertvector((x), typeof (__mask)) & __mask; \ + __builtin_choose_expr (sizeof (__mask) == 256, \ + ({ asm ("v_cmp_ne_u32_e64 %0, %1, 0" \ + : "=Sg" (__tmp) \ + : "v" (__x)); }), \ + ({ asm ("v_cmp_ne_u64_e64 %0, %1, 0" \ + : "=Sg" (__tmp) \ + : "v" (__x)); })); \ + __tmp; \ +}) + +#define VECTOR_WHILE(cond, cond_var, prev_cond_var) \ +{ \ + __auto_type cond_var = prev_cond_var; \ + for (;;) { \ + cond_var &= (cond); \ + if (ALL_ZEROES_P (cond_var)) \ + break; + +#define VECTOR_ENDWHILE \ + } \ +} + +#define DEF_VS_MATH_FUNC(rettype, name, args...) \ + rettype v64sf##_##name##_aux (args, v64si __mask) + +#define DEF_VD_MATH_FUNC(rettype, name, args...) \ + rettype v64df##_##name##_aux (args, v64di __mask) + +/* Use this for predicate functions that take a vector of doubles but + return a vector of ints. */ +#define DEF_VD_MATH_PRED(rettype, name, args...) \ + rettype v64df##_##name##_aux (args, v64si __mask) + +#define FUNCTION_INIT(rettype) \ + rettype __ret + +#define FUNCTION_RETURN \ + return __ret + +#define DEF_VARIANT(FUN, TRET, TARG, COUNT) \ +v##COUNT##TRET \ +v##COUNT##TARG##_##FUN (v##COUNT##TARG __arg) \ +{ \ + __auto_type __upsized_arg = RESIZE_VECTOR (v64##TARG, __arg); \ + __auto_type __mask = VECTOR_INIT_MASK (v##COUNT##TRET); \ + __auto_type __result = v64##TARG##_##FUN##_aux (__upsized_arg, __mask); \ + return RESIZE_VECTOR (v##COUNT##TRET, __result); \ +} + +#define DEF_VARIANT2(FUN, TRET, TARG, COUNT) \ +v##COUNT##TRET \ +v##COUNT##TARG##_##FUN (v##COUNT##TARG __arg1, v##COUNT##TARG __arg2) \ +{ \ + __auto_type __upsized_arg1 = RESIZE_VECTOR (v64##TARG, __arg1); \ + __auto_type __upsized_arg2 = RESIZE_VECTOR (v64##TARG, __arg2); \ + __auto_type __mask = VECTOR_INIT_MASK (v##COUNT##TRET); \ + __auto_type __result = v64##TARG##_##FUN##_aux (__upsized_arg1, __upsized_arg2, __mask); \ + return RESIZE_VECTOR (v##COUNT##TRET, __result); \ +} + +#define DEF_VARIANTS(FUN, RETTYPE, ARGTYPE) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 2) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 4) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 8) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 16) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 32) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 64) + +#define DEF_VARIANTS2(FUN, RETTYPE, ARGTYPE) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 2) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 4) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 8) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 16) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 32) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 64) + +/* From fdlibm.h */ + +#ifdef _FLT_LARGEST_EXPONENT_IS_NORMAL +#define FLT_UWORD_IS_FINITE(x) ((x) == (x)) +#define FLT_UWORD_IS_NAN(x) ((x) != (x)) +#define FLT_UWORD_IS_INFINITE(x) ((x) != (x)) +#define FLT_UWORD_MAX 0x7fffffff +#define FLT_UWORD_EXP_MAX 0x43010000 +#define FLT_UWORD_LOG_MAX 0x42b2d4fc +#define FLT_UWORD_LOG_2MAX 0x42b437e0 +#define HUGE ((float)0X1.FFFFFEP128) +#else +#define FLT_UWORD_IS_FINITE(x) ((x)<0x7f800000) +#define FLT_UWORD_IS_NAN(x) ((x)>0x7f800000) +#define FLT_UWORD_IS_INFINITE(x) ((x)==0x7f800000) +#define FLT_UWORD_MAX 0x7f7fffffL +#define FLT_UWORD_EXP_MAX 0x43000000 +#define FLT_UWORD_LOG_MAX 0x42b17217 +#define FLT_UWORD_LOG_2MAX 0x42b2d4fc +#define HUGE ((float)3.40282346638528860e+38) +#endif +#define FLT_UWORD_HALF_MAX (FLT_UWORD_MAX-(1L<<23)) +#define FLT_LARGEST_EXP (FLT_UWORD_MAX>>23) + +#ifdef _FLT_NO_DENORMALS +#define FLT_UWORD_IS_ZERO(x) ((x)<0x00800000) +#define FLT_UWORD_IS_SUBNORMAL(x) ((x) != (x)) +#define FLT_UWORD_MIN 0x00800000 +#define FLT_UWORD_EXP_MIN 0x42fc0000 +#define FLT_UWORD_LOG_MIN 0x42aeac50 +#define FLT_SMALLEST_EXP 1 +#else +#define FLT_UWORD_IS_ZERO(x) ((x)==0) +#define FLT_UWORD_IS_SUBNORMAL(x) ((x)<0x00800000) +#define FLT_UWORD_MIN 0x00000001 +#define FLT_UWORD_EXP_MIN 0x43160000 +#define FLT_UWORD_LOG_MIN 0x42cff1b5 +#define FLT_SMALLEST_EXP -22 +#endif + +/* From zmath.h */ + +#define NUM 3 +#define NAN 2 +#define INF 1 + +#define __PI 3.14159265358979323846 +#define __SQRT_HALF 0.70710678118654752440 +#define __PI_OVER_TWO 1.57079632679489661923132 +#define __INV_PI_OVER_TWO_2_24 10680707.430881743590348355907974 + +typedef const union +{ + unsigned int l[2]; + double d; +} udouble; + +typedef const union +{ + unsigned int l; + float f; +} ufloat; + +extern double BIGX; +extern double SMALLX; + +extern udouble z_infinity; +extern udouble z_notanum; +extern double z_rooteps; + +extern ufloat z_infinity_f; +extern ufloat z_notanum_f; +extern float z_rooteps_f; + +/* From math_errf.c */ + +static v64sf v64sf_math_oflowf (v64si sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p97f), + VECTOR_INIT (0x1p97f), sign) * 0x1p97f; +} + +static v64sf v64sf_math_uflowf (v64si sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p-95f), + VECTOR_INIT (0x1p-95f), sign) * 0x1p-95f; +} + +/* From math_config.h */ + +static v64si v64sf_issignalingf_inline (v64sf x) +{ + v64si __mask = VECTOR_INIT (-1); + v64si ix; + GET_FLOAT_WORD (ix, x, NO_COND); + /* Use IEEE-754 2008 encoding - i.e. exponent bits all 1, MSB of + significand is 0 for signalling NaN. */ + return ((ix & 0x7f800000) == 0x7f800000) & ((ix & 0x00400000) == 0); +} + +/* Vector extensions to sys/reent.h */ + +struct v64_reent { + v64si _v64si_gamma_signgam; +}; + +extern struct v64_reent *_v64_reent; +#define _V64_REENT _v64_reent + +#define _REENT_V64SI_SIGNGAM(ptr) ((ptr)->_v64si_gamma_signgam) + +/* Vector extensions to math.h */ + +#define v64si_signgam (*__v64si_signgam()) +extern v64si* __v64si_signgam (void); +#define __v64si_signgam_r(ptr) _REENT_V64SI_SIGNGAM(ptr) + diff --git a/newlib/libm/machine/amdgcn/v64_mathcnst.c b/newlib/libm/machine/amdgcn/v64_mathcnst.c new file mode 100644 index 0000000000..58cb99b015 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64_mathcnst.c @@ -0,0 +1,23 @@ +/* Based on newlib/libm/mathfp/s_mathcnst.c in Newlib. */ + +#include "amdgcnmach.h" + +double BIGX = 7.09782712893383973096e+02; +double SMALLX = -7.45133219101941108420e+02; +double z_rooteps = 7.4505859692e-9; +float z_rooteps_f = 1.7263349182589107e-4; + +ufloat z_hugeval_f = { 0x7f800000 }; +ufloat z_infinity_f = { 0x7f800000 }; +ufloat z_notanum_f = { 0x7fd00000 }; + +#ifdef __IEEE_BIG_ENDIAN +udouble z_hugeval = { 0x7ff00000, 0 }; +udouble z_infinity = { 0x7ff00000, 0 }; +udouble z_notanum = { 0xeff80000, 0 }; +#else /* __IEEE_LITTLE_ENDIAN */ +udouble z_hugeval = { 0, 0x7ff00000 }; +udouble z_infinity = { 0, 0x7ff00000 }; +udouble z_notanum = { 0, 0x7ff80000 }; +#endif /* __IEEE_LITTLE_ENDIAN */ + diff --git a/newlib/libm/machine/amdgcn/v64_reent.c b/newlib/libm/machine/amdgcn/v64_reent.c new file mode 100644 index 0000000000..e9c350a8d4 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64_reent.c @@ -0,0 +1,10 @@ +#include "amdgcnmach.h" + +static struct v64_reent __reent; +struct v64_reent *_v64_reent = &__reent; + +v64si* +__v64si_signgam (void) +{ + return &_REENT_V64SI_SIGNGAM(_V64_REENT); +} \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64df_acos.c b/newlib/libm/machine/amdgcn/v64df_acos.c new file mode 100644 index 0000000000..e965095695 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_acos.c @@ -0,0 +1,13 @@ +/* Based on newlib/libm/mathfp/s_acos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_asine_aux (v64df x, int acosine, v64di); + +DEF_VD_MATH_FUNC (v64df, acos, v64df x) +{ + return v64df_asine_aux(x, 1, __mask); +} + +DEF_VARIANTS (acos, df, df) + diff --git a/newlib/libm/machine/amdgcn/v64df_acosh.c b/newlib/libm/machine/amdgcn/v64df_acosh.c new file mode 100644 index 0000000000..ad7042ba1a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_acosh.c @@ -0,0 +1,67 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/e_acosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); +v64df v64df_log1p_aux (v64df, v64di); +v64df v64df_sqrt_aux (v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, acosh, v64df x) +{ + static const double one = 1.0; + static const double ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ + + FUNCTION_INIT (v64df); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + + VECTOR_IF (hx < 0x3ff00000, cond) // x < 1 */ + VECTOR_RETURN ((x-x) / (x-x), cond); + VECTOR_ENDIF + VECTOR_IF (hx >=0x41b00000, cond) // x > 2**28 */ + VECTOR_IF2 (hx >=0x7ff00000, cond2, cond) // x is inf of NaN */ + VECTOR_RETURN (x+x, cond2); + VECTOR_ELSE (cond2) + /* acosh(huge)=log(2x) */ + VECTOR_RETURN (v64df_log_aux (x, __mask) + ln2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (((hx - 0x3ff00000) | lx) == 0, cond) + /* acosh(1) = 0 */ + VECTOR_RETURN (VECTOR_INIT (0.0), cond); + VECTOR_ENDIF + VECTOR_IF (hx > 0x40000000, cond) /* 2**28 > x > 2 */ + { + v64df t = x * x; + VECTOR_RETURN (v64df_log_aux (2.0*x - one / + (x + v64df_sqrt_aux (t - one, __mask)), + __mask), + cond); + } + VECTOR_ELSE (cond) /* 1 0.5, cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (1 - acosine), cond); + + /* Check for range error. */ + VECTOR_IF2 (y > 1.0, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (g, (1.0 - y) / 2.0, cond); + VECTOR_COND_MOVE (y, -2.0 * v64df_sqrt_aux (g, __mask), cond); + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (acosine), cond); + VECTOR_IF2 (y < z_rooteps, cond2, cond) + VECTOR_COND_MOVE (res, y, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (g, y * y, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF ((y >= z_rooteps) | __builtin_convertvector(branch, v64di), cond) + { + /* Calculate the Taylor series. */ + v64df P = ((((p[4] * g + p[3]) * g + p[2]) * g + p[1]) * g + p[0]) * g; + v64df Q = ((((g + q[4]) * g + q[3]) * g + q[2]) * g + q[1]) * g + q[0]; + v64df R = P / Q; + + VECTOR_COND_MOVE (res, y + y * R, cond); + } + VECTOR_ENDIF + + v64df a_i = VECTOR_MERGE (VECTOR_INIT (a[1]), VECTOR_INIT (a[0]), i != 0); + + /* Calculate asine or acose. */ + if (acosine == 0) + { + VECTOR_COND_MOVE (res, (a_i + res) + a_i, NO_COND); + VECTOR_IF (x < 0.0, cond) + VECTOR_COND_MOVE (res, -res, cond); + VECTOR_ENDIF + } + else + { + v64df b_i = VECTOR_MERGE (VECTOR_INIT(b[1]), VECTOR_INIT(b[0]), i != 0); + + VECTOR_IF (x < 0.0, cond) + VECTOR_COND_MOVE (res, (b_i + res) + b_i, cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (res, (a_i - res) + a_i, cond); + VECTOR_ENDIF + } + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_asinh.c b/newlib/libm/machine/amdgcn/v64df_asinh.c new file mode 100644 index 0000000000..64924b7457 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_asinh.c @@ -0,0 +1,67 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_asinh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); +v64df v64df_log1p_aux (v64df, v64di); +v64df v64df_sqrt_aux (v64df, v64di); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, asinh, v64df x) +{ + static const double one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */ + static const double ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ + static const double huge = 1.00000000000000000000e+300; + + FUNCTION_INIT (v64df); + + v64df w; + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >=0x7ff00000, cond) /* x is inf or NaN */ + VECTOR_RETURN (x + x, cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x3e300000, cond) /* |x|<2**-28 */ + VECTOR_IF2 (__builtin_convertvector(huge+x > one, v64si), cond2, cond) /* return x inexact except 0 */ + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (ix > 0x41b00000, cond) /* x > 2**28 */ + VECTOR_COND_MOVE (w, v64df_log_aux (__builtin_gcn_fabsv (x), __mask) + ln2, + cond); + VECTOR_ELSEIF (ix > 0x40000000, cond) /* 2**28 > |x| > 2.0 */ + v64df t = __builtin_gcn_fabsv (x); + VECTOR_COND_MOVE (w, v64df_log_aux (2.0 * t + one / (v64df_sqrt_aux (x*x + one, __mask) + t), __mask), + cond); + VECTOR_ELSE (cond) /* 2.0 > |x| > 2**-28 */ + v64df t = x * x; + VECTOR_COND_MOVE (w, v64df_log1p_aux (__builtin_gcn_fabsv (x) + t / (one + v64df_sqrt_aux (one + t, __mask)), __mask), + cond); + VECTOR_ENDIF + + VECTOR_IF (hx > 0, cond) + VECTOR_RETURN (w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (asinh, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_atan.c b/newlib/libm/machine/amdgcn/v64df_atan.c new file mode 100644 index 0000000000..2bf88cf968 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atan.c @@ -0,0 +1,14 @@ +/* Based on newlib/libm/mathfp/s_atan.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_atangent_aux (v64df, v64df, v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, atan, v64df x) +{ + return v64df_atangent_aux (x, + VECTOR_INIT (0.0), + VECTOR_INIT (0.0), 0, __mask); +} + +DEF_VARIANTS (atan, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_atan2.c b/newlib/libm/machine/amdgcn/v64df_atan2.c new file mode 100644 index 0000000000..b486748f5b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atan2.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/s_atan2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_atangent_aux (v64df, v64df, v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, atan2, v64df v, v64df u) +{ + return (v64df_atangent_aux (VECTOR_INIT (0.0), v, u, 1, __mask)); +} + +DEF_VARIANTS2 (atan2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_atangent.c b/newlib/libm/machine/amdgcn/v64df_atangent.c new file mode 100644 index 0000000000..33ed558aa3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atangent.c @@ -0,0 +1,132 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_atangent.c in Newlib. */ + +#include +#include "amdgcnmach.h" + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_fabsv) \ + && __has_builtin (__builtin_gcn_frexpv_exp) + +DEF_VD_MATH_FUNC (v64df, atangent, v64df x, v64df v, v64df u, int arctan2) +{ + static const double ROOT3 = 1.73205080756887729353; + static const double a[] = { 0.0, 0.52359877559829887308, 1.57079632679489661923, + 1.04719755119659774615 }; + static const double q[] = { 0.41066306682575781263e+2, + 0.86157349597130242515e+2, + 0.59578436142597344465e+2, + 0.15024001160028576121e+2 }; + static const double p[] = { -0.13688768894191926929e+2, + -0.20505855195861651981e+2, + -0.84946240351320683534e+1, + -0.83758299368150059274 }; + static const float z_rooteps = 7.4505859692e-9; + + FUNCTION_INIT (v64df); + + v64df zero = VECTOR_INIT (0.0); + v64df pi = VECTOR_INIT (__PI); + v64df pi_over_two = VECTOR_INIT (__PI_OVER_TWO); + v64df res; + v64si branch = VECTOR_INIT (0); + + /* Preparation for calculating arctan2. */ + if (arctan2) + { + VECTOR_IF (u == 0.0, cond) + VECTOR_IF2 (v == 0.0, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (0.0), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, pi_over_two, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (~branch, cond) + /* Get the exponent values of the inputs. */ + v64si expv = __builtin_gcn_frexpv_exp (v); + v64si expu = __builtin_gcn_frexpv_exp (u); + + /* See if a divide will overflow. */ + v64si e = expv - expu; + + VECTOR_IF2 (e > DBL_MAX_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, pi_over_two, cond2); + VECTOR_ENDIF + + /* Also check for underflow. */ + VECTOR_IF2 (e < DBL_MIN_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, zero, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + } + + VECTOR_IF (~branch, cond) + v64df f; + v64si N = VECTOR_INIT (0); + + if (arctan2) + f = __builtin_gcn_fabsv (v / u); + else + f = __builtin_gcn_fabsv (x); + + VECTOR_IF2 (__builtin_convertvector(f > 1.0, v64si), cond2, cond) + VECTOR_COND_MOVE (f, 1.0 / f, cond2); + VECTOR_COND_MOVE (N, VECTOR_INIT (2), cond2); + VECTOR_ENDIF + + VECTOR_IF2 (__builtin_convertvector(f > (2.0 - ROOT3), v64si), cond2, cond) + double A = ROOT3 - 1.0; + VECTOR_COND_MOVE (f, (((A * f - 0.5) - 0.5) + f) / (ROOT3 + f), + cond2); + N += cond2 & 1; + VECTOR_ENDIF + + /* Check for values that are too small. */ + VECTOR_IF2 (__builtin_convertvector((-z_rooteps < f) & (f < z_rooteps), v64si), cond2, cond) + VECTOR_COND_MOVE (res, f, cond2); + + /* Calculate the Taylor series. */ + VECTOR_ELSE2 (cond2, cond) + v64df g = f * f; + v64df P = (((p[3] * g + p[2]) * g + p[1]) * g + p[0]) * g; + v64df Q = (((g + q[3]) * g + q[2]) * g + q[1]) * g + q[0]; + v64df R = P / Q; + + VECTOR_COND_MOVE (res, f + f * R, cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, cond & (N > 1)); + + res += VECTOR_MERGE (VECTOR_INIT (a[1]), zero, cond & (N == 1)); + res += VECTOR_MERGE (VECTOR_INIT (a[2]), zero, cond & (N == 2)); + res += VECTOR_MERGE (VECTOR_INIT (a[3]), zero, cond & (N == 3)); + VECTOR_ENDIF + + if (arctan2) + { + /*if (u < 0.0)*/ + VECTOR_COND_MOVE (res, pi - res, u < 0.0); + /*if (v < 0.0)*/ + VECTOR_COND_MOVE (res, -res, v < 0.0); + } + /*else if (x < 0.0) */ + else + VECTOR_COND_MOVE (res, -res, x < 0.0); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_atanh.c b/newlib/libm/machine/amdgcn/v64df_atanh.c new file mode 100644 index 0000000000..3890a63b86 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atanh.c @@ -0,0 +1,61 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/e_atanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log1p_aux (v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, atanh, v64df x) +{ + static const double zero = 0.0; + static const double one = 1.0, huge = 1e300; + + FUNCTION_INIT (v64df); + + v64df t; + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF ((ix | ((lx | (-lx)) >> 31)) > 0x3ff00000, cond) // |x|>1 + VECTOR_RETURN ((x - x)/(x - x), cond); + VECTOR_ENDIF + + VECTOR_IF (ix == 0x3ff00000, cond) + VECTOR_RETURN (x / zero, cond); + VECTOR_ENDIF + + VECTOR_IF ((ix < 0x3e300000) & __builtin_convertvector((huge + x) > zero, v64si), cond) // x<2**-28 + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + SET_HIGH_WORD (x, ix, NO_COND); + + VECTOR_IF (ix < 0x3fe00000, cond) // x < 0.5 */ + v64df t2 = x + x; + VECTOR_COND_MOVE (t, 0.5 * v64df_log1p_aux (t2 + t2 * x / (one - x), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (t, 0.5 * v64df_log1p_aux ((x + x) / (one - x), __mask), cond); + VECTOR_ENDIF + + VECTOR_IF (hx >= 0, cond) + VECTOR_RETURN (t, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-t, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (atanh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_copysign.c b/newlib/libm/machine/amdgcn/v64df_copysign.c new file mode 100644 index 0000000000..4c7587ee2f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_copysign.c @@ -0,0 +1,29 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_copysign.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_FUNC (v64df, copysign, v64df x, v64df y) +{ + FUNCTION_INIT (v64df); + + v64si hx, hy; + GET_HIGH_WORD(hx, x, NO_COND); + GET_HIGH_WORD(hy, y, NO_COND); + SET_HIGH_WORD(x, (hx & 0x7fffffff) | (hy & 0x80000000), NO_COND); + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (copysign, df, df) \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64df_cos.c b/newlib/libm/machine/amdgcn/v64df_cos.c new file mode 100644 index 0000000000..0c8c1634fe --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_cos.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/s_cos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sine_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, cos, v64df x) +{ + return v64df_sine_aux (x, 1, __mask); +} + +DEF_VARIANTS (cos, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_cosh.c b/newlib/libm/machine/amdgcn/v64df_cosh.c new file mode 100644 index 0000000000..a75e1ae42e --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_cosh.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/s_cosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sineh_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, cosh, v64df x) +{ + return v64df_sineh_aux (x, 1, __mask); +} + +DEF_VARIANTS (cosh, df, df) \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64df_erf.c b/newlib/libm/machine/amdgcn/v64df_erf.c new file mode 100644 index 0000000000..f7bced6836 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_erf.c @@ -0,0 +1,171 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_erf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df, v64di); + +static const double +tiny = 1e-300, +half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +two = 2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */ +/* c = (float)0.84506291151 */ +erx = 8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */ +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +efx = 1.28379167095512586316e-01, /* 0x3FC06EBA, 0x8214DB69 */ +efx8= 1.02703333676410069053e+00, /* 0x3FF06EBA, 0x8214DB69 */ +pp0 = 1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */ +pp1 = -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */ +pp2 = -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */ +pp3 = -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */ +pp4 = -2.37630166566501626084e-05, /* 0xBEF8EAD6, 0x120016AC */ +qq1 = 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */ +qq2 = 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */ +qq3 = 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */ +qq4 = 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */ +qq5 = -3.96022827877536812320e-06, /* 0xBED09C43, 0x42A26120 */ +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +pa0 = -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */ +pa1 = 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */ +pa2 = -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */ +pa3 = 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */ +pa4 = -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */ +pa5 = 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */ +pa6 = -2.16637559486879084300e-03, /* 0xBF61BF38, 0x0A96073F */ +qa1 = 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */ +qa2 = 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */ +qa3 = 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */ +qa4 = 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */ +qa5 = 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */ +qa6 = 1.19844998467991074170e-02, /* 0x3F888B54, 0x5735151D */ +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +ra0 = -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */ +ra1 = -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */ +ra2 = -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */ +ra3 = -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */ +ra4 = -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */ +ra5 = -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */ +ra6 = -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */ +ra7 = -9.81432934416914548592e+00, /* 0xC023A0EF, 0xC69AC25C */ +sa1 = 1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */ +sa2 = 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */ +sa3 = 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */ +sa4 = 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */ +sa5 = 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */ +sa6 = 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */ +sa7 = 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */ +sa8 = -6.04244152148580987438e-02, /* 0xBFAEEFF2, 0xEE749A62 */ +/* + * Coefficients for approximation to erfc in [1/.35,28] + */ +rb0 = -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */ +rb1 = -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */ +rb2 = -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */ +rb3 = -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */ +rb4 = -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */ +rb5 = -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */ +rb6 = -4.83519191608651397019e+02, /* 0xC07E384E, 0x9BDC383F */ +sb1 = 3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */ +sb2 = 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */ +sb3 = 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */ +sb4 = 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */ +sb5 = 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */ +sb6 = 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */ +sb7 = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */ + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, erf, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >= 0x7ff00000, cond) /* erf(nan)=nan */ + v64si i = (hx >> 31) << 1; + /* erf(+-inf)=+-1 */ + VECTOR_RETURN (__builtin_convertvector (1 - i, v64df) + one / x, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3feb0000, cond) /* |x|<0.84375 */ + VECTOR_IF2 (ix < 0x3e300000, cond2, cond) /* |x|<2**-28 */ + VECTOR_IF2 (ix < 0x00800000, cond3, cond2) /* avoid underflow */ + VECTOR_RETURN (0.125*(8.0*x + efx8*x), cond3); + VECTOR_ENDIF + VECTOR_RETURN (x + efx*x, cond2); + VECTOR_ENDIF + + v64df z = x*x; + v64df r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + v64df s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + v64df y = r/s; + + VECTOR_RETURN (x + x*y, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3ff40000, cond) /* 0.84375 <= |x| < 1.25 */ + v64df s = __builtin_gcn_fabsv (x) - one; + v64df P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + v64df Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (erx + P/Q, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (-erx - P/Q, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (ix >= 0x40180000, cond) /* inf>|x|>=6 */ + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0 - tiny), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (VECTOR_INIT (tiny - 1.0), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + x = __builtin_gcn_fabsv(x); + v64df s = 1.0 / (x*x); + v64df R, S; + VECTOR_IF (ix < 0x4006DB6E, cond) /* |x| < 1/0.35 */ + VECTOR_COND_MOVE (R, ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))), cond); + VECTOR_COND_MOVE (S, one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))), cond); + VECTOR_ELSE (cond) /* |x| >= 1/0.35 */ + VECTOR_COND_MOVE (R, rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))), cond); + VECTOR_COND_MOVE (S, one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))), cond); + VECTOR_ENDIF + + v64df z; + SET_LOW_WORD (z, VECTOR_INIT(0), NO_COND); + v64df r = v64df_exp_aux (-z*z - 0.5625, __mask) + * v64df_exp_aux ((z-x)*(z+x) + R/S, __mask); + VECTOR_RETURN (one - r/x, hx >= 0); + VECTOR_RETURN (r/x - one, hx < 0); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (erf, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_exp.c b/newlib/libm/machine/amdgcn/v64df_exp.c new file mode 100644 index 0000000000..f6bca1223d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_exp.c @@ -0,0 +1,74 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_exp.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_ispos (v64df); +v64si v64df_numtest (v64df); + +static const double INV_LN2 = 1.4426950408889634074; +static const double LN2 = 0.6931471805599453094172321; +static const double p[] = { 0.25, 0.75753180159422776666e-2, + 0.31555192765684646356e-4 }; +static const double q[] = { 0.5, 0.56817302698551221787e-1, + 0.63121894374398504557e-3, + 0.75104028399870046114e-6 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_ldexpv) + +DEF_VD_MATH_FUNC (v64df, exp, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity.d), + VECTOR_INIT (0.0), + v64df_ispos (x)), + cond); + VECTOR_ELSEIF (num_type == 0, cond) + VECTOR_RETURN (VECTOR_INIT (1.0), cond); + VECTOR_ENDIF + + /* Check for out of bounds. */ + VECTOR_IF ((x > BIGX) | (x < SMALLX), cond) + errno = ERANGE; + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + /* Check for a value too small to calculate. */ + VECTOR_RETURN (VECTOR_INIT (1.0), + (-z_rooteps_f < x) & (x < z_rooteps_f)); + + /* Calculate the exponent. */ + v64si Nneg = __builtin_convertvector (x * INV_LN2 - 0.5, v64si); + v64si Npos = __builtin_convertvector (x * INV_LN2 + 0.5, v64si); + v64si N = VECTOR_MERGE (Nneg, Npos, x < 0.0); + + /* Construct the mantissa. */ + v64df g = x - __builtin_convertvector (N, v64df) * LN2; + v64df z = g * g; + v64df P = g * ((p[2] * z + p[1]) * z + p[0]); + v64df Q = ((q[3] * z + q[2]) * z + q[1]) * z + q[0]; + v64df R = 0.5 + P / (Q - P); + + /* Return the floating point value. */ + N++; + VECTOR_RETURN (__builtin_gcn_ldexpv (R, N), NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (exp, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_exp2.c b/newlib/libm/machine/amdgcn/v64df_exp2.c new file mode 100644 index 0000000000..9a76fe1c06 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_exp2.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +/* Based on newlib/libm/mathfp/s_exp2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_pow_aux (v64df, v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, exp2, v64df x) +{ + return v64df_pow_aux (VECTOR_INIT (2.0), x, __mask); +} + +DEF_VARIANTS (exp2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_finite.c b/newlib/libm/machine/amdgcn/v64df_finite.c new file mode 100644 index 0000000000..41e188b024 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_finite.c @@ -0,0 +1,24 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_finite.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_PRED (v64si, finite, v64df x) +{ + FUNCTION_INIT (v64si); + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + return (((hx & 0x7fffffff) - 0x7ff00000) >> 31) != 0; +} + +DEF_VARIANTS (finite, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_fmod.c b/newlib/libm/machine/amdgcn/v64df_fmod.c new file mode 100644 index 0000000000..e583062cf2 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_fmod.c @@ -0,0 +1,185 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_fmod.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_FUNC (v64df, fmod, v64df x, v64df y) +{ + FUNCTION_INIT(v64df); + + v64si hx, hy, hz; + v64usi lx, ly, lz; + EXTRACT_WORDS (hx, lx, x); + EXTRACT_WORDS (hy, ly, y); + v64si sx = hx & 0x80000000; /* sign of x */ + hx ^=sx; /* |x| */ + hy &= 0x7fffffff; /* |y| */ + + v64df zeroes = VECTOR_MERGE (VECTOR_INIT (-0.0), + VECTOR_INIT (0.0), + sx != 0); + + /* purge off exception values */ + VECTOR_IF (((hy | ly) == 0) | (hx >= 0x7ff00000) + | ((hy | ((ly | -ly) >> 31)) > 0x7ff00000), cond) // y=0, or x not finite or y is NaN + VECTOR_RETURN ((x * y) / (x * y), cond); + VECTOR_ENDIF + VECTOR_IF (hx <= hy, cond) // |x|<|y| return x + VECTOR_IF2 ((hx < hy) | (lx < ly), cond2, cond) + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF2 (lx == ly, cond2, cond) + VECTOR_RETURN (zeroes, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + /* determine ix = ilogb(x) */ + v64si ix; + VECTOR_IF (hx < 0x00100000, cond) // subnormal x + VECTOR_IF2 (hx == 0, cond2, cond) + ix = VECTOR_INIT (-1043); + for (v64si i = __builtin_convertvector (lx, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ELSE2 (cond2, cond) + ix = VECTOR_INIT (-1022); + for (v64si i = __builtin_convertvector (hx << 11, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (ix, (hx >> 20) - 1023, cond); + VECTOR_ENDIF + + /* determine iy = ilogb(y) */ + v64si iy; + VECTOR_IF (hy < 0x00100000, cond) // subnormal y + VECTOR_IF2 (hy == 0, cond2, cond) + iy = VECTOR_INIT (-1043); + for (v64si i = __builtin_convertvector (ly, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (iy, iy - 1, cond2 & (i > 0)); + VECTOR_ELSE2 (cond2, cond) + iy = VECTOR_INIT (-1022); + for (v64si i = __builtin_convertvector (hy << 11, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (iy, iy - 1, cond2 & (i > 0)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (iy, (hy >> 20) - 1023, cond); + VECTOR_ENDIF + + +/* set up {hx,lx}, {hy,ly} and align y to x */ + VECTOR_IF (ix >= -1022, cond) + VECTOR_COND_MOVE (hx, 0x00100000 | (0x000fffff & hx), cond); + VECTOR_ELSE (cond) // subnormal x, shift x to normal + { + v64si n = -1022 - ix; + VECTOR_IF2 (n <= 31, cond2, cond) + VECTOR_COND_MOVE (hx, (hx << n) | (lx >> (32 - n)), cond2); + VECTOR_COND_MOVE (lx, lx << n, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (hx, __builtin_convertvector (lx << (n - 32), v64si), cond2); + VECTOR_COND_MOVE (lx, VECTOR_INIT (0U), cond2); + VECTOR_ENDIF + } + VECTOR_ENDIF + VECTOR_IF (iy >= -1022, cond) + VECTOR_COND_MOVE (hy, 0x00100000 | (0x000fffff & hy), cond); + VECTOR_ELSE (cond) // subnormal y, shift y to normal + { + v64si n = -1022 - iy; + VECTOR_IF2 (n <= 31, cond2, cond) + VECTOR_COND_MOVE (hy, (hy << n) | (ly >> (32 - n)), cond2); + VECTOR_COND_MOVE (ly, ly << n, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (hy, __builtin_convertvector (ly << (n - 32), v64si), cond2); + VECTOR_COND_MOVE (ly, VECTOR_INIT (0U), cond2); + VECTOR_ENDIF + } + VECTOR_ENDIF + +/* fix point fmod */ + v64si n = ix - iy; + v64si cond = n != 0; + + while (!ALL_ZEROES_P (cond)) + { + hz = hx - hy; + lz = lx - ly; + VECTOR_IF2 (lx < ly, cond2, cond) + VECTOR_COND_MOVE (hz, hz - 1, cond2); + VECTOR_ENDIF + VECTOR_IF2 (hz < 0, cond2, cond) + VECTOR_COND_MOVE (hx, hx + hx + (__builtin_convertvector(lx, v64usi) >> 31), cond2); + VECTOR_COND_MOVE (lx, lx + lx, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_IF2 ((hz | lz) == 0, cond3, cond2) // return sign(x)*0 + VECTOR_RETURN (zeroes, cond3); + VECTOR_ENDIF + VECTOR_COND_MOVE (hx, hz + hz + (__builtin_convertvector(lz, v64usi) >> 31), cond2); + VECTOR_COND_MOVE (lx, lz + lz, cond2); + VECTOR_ENDIF + + n += cond; // Active lanes should be -1 + cond &= (n != 0); + } + + hz = hx - hy; + lz = lx - ly; + VECTOR_COND_MOVE (hz, hz - 1, lx < ly); + VECTOR_IF (hz >= 0, cond) + VECTOR_COND_MOVE (hx, hz, cond); + VECTOR_COND_MOVE (lx, lz, cond); + VECTOR_ENDIF + + /* convert back to floating value and restore the sign */ + VECTOR_RETURN (zeroes, (hx | lx) == 0); // return sign(x)*0 + cond = hx < 0x00100000; + while (!ALL_ZEROES_P (cond)) // normalize x + { + VECTOR_COND_MOVE (hx, hx + hx + (lx >> 31), cond); + VECTOR_COND_MOVE (lx, lx + lx, cond); + iy += cond; // Active lanes should be -1 + + cond &= (hx < 0x00100000); + } + VECTOR_IF (iy >= -1022, cond) // normalize output + VECTOR_COND_MOVE (hx, (hx - 0x00100000) | ((iy + 1023) << 20), cond); + INSERT_WORDS (x, hx | sx, lx, cond); + VECTOR_ELSE (cond) // subnormal output */ + n = -1022 - iy; + VECTOR_IF2 (n <= 20, cond2, cond) + VECTOR_COND_MOVE (lx, (lx >> n) | (hx << (32 - n)), cond2); + VECTOR_COND_MOVE (hx, hx >> n, cond2); + VECTOR_ELSEIF2 (n <= 31, cond2, cond) + VECTOR_COND_MOVE (lx, __builtin_convertvector ((hx << (32 - n)) | (lx >> n), v64usi), cond2); + VECTOR_COND_MOVE (hx, sx, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (lx, __builtin_convertvector (hx >> (n - 32), v64usi), cond2); + VECTOR_COND_MOVE (hx, sx, cond2); + VECTOR_ENDIF + INSERT_WORDS (x, hx | sx, lx, cond); + x *= VECTOR_INIT (1.0); /* create necessary signal */ + VECTOR_ENDIF + + VECTOR_RETURN (x, NO_COND); /* exact output */ + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (fmod, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_gamma.c b/newlib/libm/machine/amdgcn/v64df_gamma.c new file mode 100644 index 0000000000..73f27a70c2 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_gamma.c @@ -0,0 +1,10 @@ +#include "amdgcnmach.h" + +v64df v64df_lgamma_aux (v64df x, v64di __mask); + +DEF_VD_MATH_FUNC (v64df, gamma, v64df x) +{ + return v64df_lgamma_aux(x, __mask); +} + +DEF_VARIANTS (gamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_hypot.c b/newlib/libm/machine/amdgcn/v64df_hypot.c new file mode 100644 index 0000000000..6cc9fe6ee5 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_hypot.c @@ -0,0 +1,113 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/e_hypot.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sqrt_aux (v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, hypot, v64df x, v64df y) +{ + FUNCTION_INIT (v64df); + + v64df a = x; + v64df b = y; + + v64si ha; + GET_HIGH_WORD (ha, x, NO_COND); + ha &= 0x7fffffffL; + v64si hb; + GET_HIGH_WORD (hb, y, NO_COND); + hb &= 0x7fffffffL; + + VECTOR_IF (hb > ha, cond) + VECTOR_COND_MOVE (a, y, cond); + VECTOR_COND_MOVE (b, x, cond); + v64si j = ha; + VECTOR_COND_MOVE (ha, hb, cond); + VECTOR_COND_MOVE (hb, j, cond); + VECTOR_ENDIF + SET_HIGH_WORD (a, ha, NO_COND); /* a <- |a| */ + SET_HIGH_WORD (b, hb, NO_COND); /* b <- |b| */ + VECTOR_IF((ha - hb) > 0x3c00000L, cond) // x/y > 2**60 */ + VECTOR_RETURN (a + b, cond); + VECTOR_ENDIF + + v64si k = VECTOR_INIT (0); + + VECTOR_IF (ha > 0x5f300000L, cond) /* a>2**500 */ + VECTOR_IF2 (ha >= 0x7ff00000L, cond2, cond) /* Inf or NaN */ + v64df w = a + b; // for sNaN */ + v64si low; + GET_LOW_WORD (low, a, cond2); + VECTOR_COND_MOVE (w, a, cond2 & (((ha & 0xfffff) | low) == 0)); + GET_LOW_WORD (low, b, cond2); + VECTOR_COND_MOVE (w, b, cond2 & (((hb & 0xfffff) | low) == 0)); + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + /* scale a and b by 2**-600 */ + VECTOR_COND_MOVE (ha, ha - 0x25800000, cond); + VECTOR_COND_MOVE (hb, hb - 0x25800000, cond); + VECTOR_COND_MOVE (k, k + 600, cond); + SET_HIGH_WORD (a, ha, cond); + SET_HIGH_WORD (b, hb, cond); + VECTOR_ENDIF + VECTOR_IF (hb < 0x20b00000, cond) /* b < 2**-500 */ + VECTOR_IF2 (hb <= 0x000fffff, cond2, cond) /* subnormal b or 0 */ + v64si low; + GET_LOW_WORD (low, b, cond); + VECTOR_RETURN (a, cond2 & ((hb | low) == 0)); + /* t1=2^1022 */ + v64df t1 = VECTOR_INIT (0.0); + SET_HIGH_WORD (t1, VECTOR_INIT (0x7fd00000), cond2); + VECTOR_COND_MOVE (b, b * t1, cond2); + VECTOR_COND_MOVE (a, a * t1, cond2); + VECTOR_COND_MOVE (k, k - 1022, cond2); + VECTOR_ELSE2 (cond2, cond) /* scale a and b by 2^600 */ + VECTOR_COND_MOVE (ha, ha + 0x25800000, cond2); /* a *= 2^600 */ + VECTOR_COND_MOVE (hb, hb + 0x25800000, cond2); /* b *= 2^600 */ + VECTOR_COND_MOVE (k, k - 600, cond2); + SET_HIGH_WORD (a, ha, cond2); + SET_HIGH_WORD (b, hb, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + /* medium size a and b */ + v64df w = a - b; + VECTOR_IF (w > b, cond) + v64df t1 = VECTOR_INIT (0.0); + SET_HIGH_WORD (t1, ha, cond); + v64df t2 = a - t1; + VECTOR_COND_MOVE (w, v64df_sqrt_aux (t1*t1 - (b*(-b) - t2 * (a + t1)), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (a, a+a, cond); + v64df y1 = VECTOR_INIT (0.0); + SET_HIGH_WORD (y1, hb, cond); + v64df y2 = b - y1; + v64df t1; + SET_HIGH_WORD (t1, ha + 0x00100000, cond); + v64df t2 = a - t1; + VECTOR_COND_MOVE (w, v64df_sqrt_aux (t1*y1 - (w*(-w) - (t1*y2 + t2*b)), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (k != 0, cond) + v64si high; + v64df t1 = VECTOR_INIT (1.0); + GET_HIGH_WORD (high, t1, cond); + SET_HIGH_WORD (t1, high + (k << 20), cond); + VECTOR_RETURN (t1 * w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (hypot, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_ilogb.c b/newlib/libm/machine/amdgcn/v64df_ilogb.c new file mode 100644 index 0000000000..ea51bf1052 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_ilogb.c @@ -0,0 +1,45 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_ilogb.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_PRED (v64si, ilogb, v64df x) +{ + FUNCTION_INIT(v64si); + v64si hx, lx, ix; + EXTRACT_WORDS (hx, lx, x); + hx &= 0x7fffffff; + VECTOR_IF (hx < 0x00100000, cond) + VECTOR_RETURN (VECTOR_INIT (-__INT_MAX__), cond & ((hx | lx) == 0)); // FP_ILOGB0 + VECTOR_IF2 (hx == 0, cond2, cond) + ix = VECTOR_INIT (-1043); + for (v64si i = lx; + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ELSE2 (cond2, cond) + ix = VECTOR_INIT (-1022); + for (v64si i = (hx << 11); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ENDIF + VECTOR_RETURN (ix, cond); + VECTOR_ENDIF + VECTOR_RETURN ((hx >> 20) - 1023, hx < 0x7ff00000); + VECTOR_RETURN (VECTOR_INIT (__INT_MAX__), NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (ilogb, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_isnan.c b/newlib/libm/machine/amdgcn/v64df_isnan.c new file mode 100644 index 0000000000..cf0020220f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_isnan.c @@ -0,0 +1,27 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_isnan.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_PRED (v64si, isnan, v64df x) +{ + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + hx &= 0x7fffffff; + hx |= (lx | (-lx)) >> 31; + hx = 0x7ff00000 - hx; + + return (hx >> 31) != 0; +} + +DEF_VARIANTS (isnan, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_ispos.c b/newlib/libm/machine/amdgcn/v64df_ispos.c new file mode 100644 index 0000000000..ee691be413 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_ispos.c @@ -0,0 +1,18 @@ +/* Based on newlib/libm/mathfp/s_ispos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64df_ispos (v64df x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64si); + + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + + VECTOR_RETURN ((hx & 0x80000000) == 0, NO_COND); + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_lgamma.c b/newlib/libm/machine/amdgcn/v64df_lgamma.c new file mode 100644 index 0000000000..4c982dff7f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_lgamma.c @@ -0,0 +1,30 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/w_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_finite_aux (v64df x, v64di __mask); +v64df v64df_lgamma_r_aux (v64df x, v64si *signgamp, v64di __mask); + +DEF_VD_MATH_FUNC (v64df, lgamma, v64df x) +{ + v64df y = v64df_lgamma_r_aux(x, &(_REENT_V64SI_SIGNGAM(_V64_REENT)), __mask); + if (ALL_ZEROES_P(v64df_finite_aux(y, __mask)) & !ALL_ZEROES_P(v64df_finite_aux(x, __mask))) { + /* lgamma(finite) overflow */ + errno = ERANGE; + } + return y; +} + +DEF_VARIANTS (lgamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_lgamma_r.c b/newlib/libm/machine/amdgcn/v64df_lgamma_r.c new file mode 100644 index 0000000000..a9a9a31b7f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_lgamma_r.c @@ -0,0 +1,286 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/er_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double two52= 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ +half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ +a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ +a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */ +a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */ +a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */ +a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */ +a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */ +a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */ +a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */ +a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */ +a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */ +a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */ +a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */ +tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */ +tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */ +/* tt = -(tail of tf) */ +tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */ +t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */ +t1 = -1.47587722994593911752e-01, /* 0xBFC2E427, 0x8DC6C509 */ +t2 = 6.46249402391333854778e-02, /* 0x3FB08B42, 0x94D5419B */ +t3 = -3.27885410759859649565e-02, /* 0xBFA0C9A8, 0xDF35B713 */ +t4 = 1.79706750811820387126e-02, /* 0x3F9266E7, 0x970AF9EC */ +t5 = -1.03142241298341437450e-02, /* 0xBF851F9F, 0xBA91EC6A */ +t6 = 6.10053870246291332635e-03, /* 0x3F78FCE0, 0xE370E344 */ +t7 = -3.68452016781138256760e-03, /* 0xBF6E2EFF, 0xB3E914D7 */ +t8 = 2.25964780900612472250e-03, /* 0x3F6282D3, 0x2E15C915 */ +t9 = -1.40346469989232843813e-03, /* 0xBF56FE8E, 0xBF2D1AF1 */ +t10 = 8.81081882437654011382e-04, /* 0x3F4CDF0C, 0xEF61A8E9 */ +t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */ +t12 = 3.15632070903625950361e-04, /* 0x3F34AF6D, 0x6C0EBBF7 */ +t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */ +t14 = 3.35529192635519073543e-04, /* 0x3F35FD3E, 0xE8C2D3F4 */ +u0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ +u1 = 6.32827064025093366517e-01, /* 0x3FE4401E, 0x8B005DFF */ +u2 = 1.45492250137234768737e+00, /* 0x3FF7475C, 0xD119BD6F */ +u3 = 9.77717527963372745603e-01, /* 0x3FEF4976, 0x44EA8450 */ +u4 = 2.28963728064692451092e-01, /* 0x3FCD4EAE, 0xF6010924 */ +u5 = 1.33810918536787660377e-02, /* 0x3F8B678B, 0xBF2BAB09 */ +v1 = 2.45597793713041134822e+00, /* 0x4003A5D7, 0xC2BD619C */ +v2 = 2.12848976379893395361e+00, /* 0x40010725, 0xA42B18F5 */ +v3 = 7.69285150456672783825e-01, /* 0x3FE89DFB, 0xE45050AF */ +v4 = 1.04222645593369134254e-01, /* 0x3FBAAE55, 0xD6537C88 */ +v5 = 3.21709242282423911810e-03, /* 0x3F6A5ABB, 0x57D0CF61 */ +s0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ +s1 = 2.14982415960608852501e-01, /* 0x3FCB848B, 0x36E20878 */ +s2 = 3.25778796408930981787e-01, /* 0x3FD4D98F, 0x4F139F59 */ +s3 = 1.46350472652464452805e-01, /* 0x3FC2BB9C, 0xBEE5F2F7 */ +s4 = 2.66422703033638609560e-02, /* 0x3F9B481C, 0x7E939961 */ +s5 = 1.84028451407337715652e-03, /* 0x3F5E26B6, 0x7368F239 */ +s6 = 3.19475326584100867617e-05, /* 0x3F00BFEC, 0xDD17E945 */ +r1 = 1.39200533467621045958e+00, /* 0x3FF645A7, 0x62C4AB74 */ +r2 = 7.21935547567138069525e-01, /* 0x3FE71A18, 0x93D3DCDC */ +r3 = 1.71933865632803078993e-01, /* 0x3FC601ED, 0xCCFBDF27 */ +r4 = 1.86459191715652901344e-02, /* 0x3F9317EA, 0x742ED475 */ +r5 = 7.77942496381893596434e-04, /* 0x3F497DDA, 0xCA41A95B */ +r6 = 7.32668430744625636189e-06, /* 0x3EDEBAF7, 0xA5B38140 */ +w0 = 4.18938533204672725052e-01, /* 0x3FDACFE3, 0x90C97D69 */ +w1 = 8.33333333333329678849e-02, /* 0x3FB55555, 0x5555553B */ +w2 = -2.77777777728775536470e-03, /* 0xBF66C16C, 0x16B02E5C */ +w3 = 7.93650558643019558500e-04, /* 0x3F4A019F, 0x98CF38B6 */ +w4 = -5.95187557450339963135e-04, /* 0xBF4380CB, 0x8C0FE741 */ +w5 = 8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */ +w6 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */ + +static const double zero= 0.00000000000000000000e+00; + +v64df v64df_cos_aux (v64df x, v64di __mask); +v64df v64df_log_aux (v64df x, v64di __mask); +v64df v64df_sin_aux (v64df x, v64di __mask); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_floorv) \ + && __has_builtin (__builtin_gcn_fabsv) + +static v64df +v64df_sin_pi (v64df x) +{ + // Explicitly create mask for internal function. + v64di __mask = VECTOR_INIT (-1L); + FUNCTION_INIT (v64df); + + v64df y, z; + v64si n, ix; + + GET_HIGH_WORD (ix, x, NO_COND); + ix &= 0x7fffffff; + + VECTOR_IF (ix < 0x3fd00000, cond) + VECTOR_RETURN (v64df_sin_aux (pi * x, __mask), cond); + VECTOR_ENDIF + y = -x; /* x is assume negative */ + + /* + * argument reduction, make sure inexact flag not raised if input + * is an integer + */ + z = __builtin_gcn_floorv (y); + VECTOR_IF (z != y, cond) + /* inexact anyway */ + VECTOR_COND_MOVE(y, y * 0.5, cond); + VECTOR_COND_MOVE(y, 2.0 * (y - __builtin_gcn_floorv (y)), cond); /* y = |x| mod 2.0 */ + VECTOR_COND_MOVE(n, __builtin_convertvector(y * 4.0, v64si), cond); + VECTOR_ELSE (cond) + VECTOR_IF2 (__builtin_convertvector(ix >= 0x43400000, v64di), cond2, cond) + VECTOR_COND_MOVE(y, VECTOR_INIT(zero), cond2); + VECTOR_COND_MOVE(n, VECTOR_INIT(0), cond2); /* y must be even */ + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE(z, y + two52 /* exact */, cond2 & __builtin_convertvector(ix < 0x43300000, v64di)); + GET_LOW_WORD (n, z, cond2); + VECTOR_COND_MOVE(n, n & 1, cond2); + VECTOR_COND_MOVE(y, __builtin_convertvector(n, v64df), cond2); + VECTOR_COND_MOVE(n, n << 2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (n == 0, cond) + VECTOR_COND_MOVE(y, v64df_sin_aux (pi * y, __mask), cond); + VECTOR_ELSEIF (n == 1 | n == 2, cond) + VECTOR_COND_MOVE(y, v64df_cos_aux (pi * (0.5 - y), __mask), cond); + VECTOR_ELSEIF (n == 3 | n == 4, cond) + VECTOR_COND_MOVE(y, v64df_sin_aux (pi * (VECTOR_INIT(one) - y), __mask), cond); + VECTOR_ELSEIF (n == 5 | n == 6, cond) + VECTOR_COND_MOVE(y, -v64df_cos_aux (pi * (y - 1.5), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE(y, v64df_sin_aux (pi * (y - 2.0), __mask), cond); + VECTOR_ENDIF + + VECTOR_RETURN(-y, NO_COND); + FUNCTION_RETURN; +} + +DEF_VD_MATH_FUNC (v64df, lgamma_r, v64df x, v64si *signgamp) +{ + FUNCTION_INIT (v64df); + + v64df t,y,z,nadj = VECTOR_INIT(0.0),p,p1,p2,p3,q,r,w; + v64si i,hx,lx,ix; + + EXTRACT_WORDS(hx,lx,x); + + /* purge off +-inf, NaN, +-0, and negative arguments */ + *signgamp = VECTOR_INIT(1); + ix = hx&0x7fffffff; + VECTOR_IF(ix>=0x7ff00000, cond) + VECTOR_RETURN (x*x, cond); + VECTOR_ENDIF + VECTOR_IF((ix|lx)==0, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (hx<0)); + VECTOR_RETURN(one/(x-x), cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x3b900000, cond) /* |x|<2**-70, return -log(|x|) */ + VECTOR_IF2(hx<0, cond2, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond); + VECTOR_RETURN (-v64df_log_aux(-x, __mask), cond2); + VECTOR_ELSE2(cond2, cond) + VECTOR_RETURN (-v64df_log_aux(x, __mask), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (hx < 0, cond) + VECTOR_IF2(ix>=0x43300000, cond2, cond) /* |x|>=2**52, must be -integer */ + VECTOR_RETURN(one/(x-x), cond2); /* -integer */ + VECTOR_ENDIF + VECTOR_COND_MOVE (t, v64df_sin_pi (x), cond); + VECTOR_IF2(__builtin_convertvector(t==zero, v64si), cond2, cond) + VECTOR_RETURN(one/(x-x), cond2); /* -integer */ + VECTOR_ENDIF + VECTOR_COND_MOVE(nadj, v64df_log_aux(VECTOR_INIT(pi)/__builtin_gcn_fabsv(t*x), __mask), cond); + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & __builtin_convertvector(t < zero, v64si)); + VECTOR_COND_MOVE(x, -x, cond); + VECTOR_ENDIF + + /* purge off 1 and 2 */ + VECTOR_IF((((ix-0x3ff00000)|lx)==0)|(((ix-0x40000000)|lx)==0), cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(0.0), cond); + /* for x < 2.0 */ + VECTOR_ELSEIF(ix<0x40000000, cond) + VECTOR_IF2(ix<=0x3feccccc, cond2, cond) + /* lgamma(x) = lgamma(x+1)-log(x) */ + r = -v64df_log_aux(x, __mask); + VECTOR_IF2(ix>=0x3FE76944, cond3, cond2) + VECTOR_COND_MOVE(y, one-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3FCDA661, cond3, cond2) + VECTOR_COND_MOVE(y, x-(tc-one), cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ELSE2(cond2, cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(zero), cond2); + VECTOR_IF2(ix>=0x3FFBB4C3, cond3, cond2) /* [1.7316,2] */ + VECTOR_COND_MOVE(y, VECTOR_INIT(2.0)-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3FF3B4C4, cond3, cond2) /* [1.23,1.73] */ + VECTOR_COND_MOVE(y, x-tc, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x-one, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF2(i==0, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(p1, a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))), cond2); + VECTOR_COND_MOVE(p2, z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))), cond2); + VECTOR_COND_MOVE(p, y*p1+p2, cond2); + VECTOR_COND_MOVE(r, r + (p-0.5*y), cond2); + VECTOR_ELSEIF2(i==1, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(w, z*y, cond2); + VECTOR_COND_MOVE(p1, t0+w*(t3+w*(t6+w*(t9 +w*t12))), cond2); /* parallel comp */ + VECTOR_COND_MOVE(p2, t1+w*(t4+w*(t7+w*(t10+w*t13))), cond2); + VECTOR_COND_MOVE(p3, t2+w*(t5+w*(t8+w*(t11+w*t14))), cond2); + VECTOR_COND_MOVE(p, z*p1-(tt-w*(p2+y*p3)), cond2); + VECTOR_COND_MOVE(r, r + (tf + p), cond2); + VECTOR_ELSEIF2(i==2, cond2, cond) + VECTOR_COND_MOVE(p1, y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))), cond2); + VECTOR_COND_MOVE(p2, one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))), cond2); + VECTOR_COND_MOVE(r, r + (-0.5*y + p1/p2), cond2); + VECTOR_ENDIF + VECTOR_ELSEIF(ix<0x40200000, cond) + /* x < 8.0 */ + VECTOR_COND_MOVE(i, __builtin_convertvector(x, v64si), cond); + VECTOR_COND_MOVE(t, VECTOR_INIT(zero), cond); + VECTOR_COND_MOVE(y, x-__builtin_convertvector(i, v64df), cond); + VECTOR_COND_MOVE(p, y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))), cond); + VECTOR_COND_MOVE(q, one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))), cond); + VECTOR_COND_MOVE(r, half*y+p/q, cond); + VECTOR_COND_MOVE(z, VECTOR_INIT(one), cond); /* lgamma(1+s) = log(s) + lgamma(s) */ + VECTOR_IF2(i==7, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+6.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i==7 | i==6, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+5.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=5, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+4.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=4, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+3.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=3, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+2.0), cond2); + VECTOR_COND_MOVE(r, r + v64df_log_aux(z, __mask), cond2); + VECTOR_ENDIF + /* 8.0 <= x < 2**58 */ + VECTOR_ELSEIF(ix < 0x43900000, cond) + VECTOR_COND_MOVE(t, v64df_log_aux(x, __mask), cond); + VECTOR_COND_MOVE(z, one/x, cond); + VECTOR_COND_MOVE(y, z*z, cond); + VECTOR_COND_MOVE(w, w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))), cond); + VECTOR_COND_MOVE(r, (x-half)*(t-one)+w, cond); + VECTOR_ELSE(cond) + /* 2**58 <= x <= inf */ + VECTOR_COND_MOVE(r, x*(v64df_log_aux(x, __mask)-one), cond); + VECTOR_ENDIF + VECTOR_IF(hx<0, cond) + VECTOR_COND_MOVE(r, nadj - r, cond); + VECTOR_ENDIF + + VECTOR_RETURN(r, NO_COND); + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_log.c b/newlib/libm/machine/amdgcn/v64df_log.c new file mode 100644 index 0000000000..8ed8dec909 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_log.c @@ -0,0 +1,82 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_logarithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_finite (v64df); +v64si v64df_isnan (v64df); + +static const double a[] = { -0.64124943423745581147e+02, + 0.16383943563021534222e+02, + -0.78956112887481257267 }; +static const double b[] = { -0.76949932108494879777e+03, + 0.31203222091924532844e+03, + -0.35667977739034646171e+02 }; +static const double C1 = 22713.0 / 32768.0; +static const double C2 = 1.428606820309417232e-06; + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpv_mant) \ + && __has_builtin (__builtin_gcn_frexpv_exp) \ + +DEF_VD_MATH_FUNC (v64df, log, v64df x) +{ + FUNCTION_INIT (v64df); + + /* Check for domain/range errors here. */ + VECTOR_IF (x == 0.0, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (-z_infinity.d), cond); + VECTOR_ELSEIF (x < 0.0, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); + VECTOR_ELSEIF (__builtin_convertvector (~v64df_finite (x), v64di), cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_notanum.d), + VECTOR_INIT (z_infinity.d), + v64df_isnan (x)), + cond); + VECTOR_ENDIF + + /* Get the exponent and mantissa where x = f * 2^N. */ + v64df f = __builtin_gcn_frexpv_mant (x); + v64si N = __builtin_gcn_frexpv_exp (x); + + v64df z = f - 0.5; + + VECTOR_IF (f > __SQRT_HALF, cond) + VECTOR_COND_MOVE (z, (z - 0.5) / (f * 0.5 + 0.5), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (N, N - 1, cond); + VECTOR_COND_MOVE (z, z / (z * 0.5 + 0.5), cond); + VECTOR_ENDIF + + v64df w = z * z; + + /* Use Newton's method with 4 terms. */ + z += z * w * ((a[2] * w + a[1]) * w + a[0]) / (((w + b[2]) * w + b[1]) * w + b[0]); + + v64df Nf = __builtin_convertvector (N, v64df); + VECTOR_COND_MOVE (z, (Nf * C2 + z) + Nf * C1, N != 0); + + VECTOR_RETURN (z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (log, df, df) + +DEF_VD_MATH_FUNC (v64df, log1p, v64df x) +{ + /* TODO: Implement algorithm with better precision. */ + return v64df_log_aux (1 + x, __mask); +} + +DEF_VARIANTS (log1p, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_log10.c b/newlib/libm/machine/amdgcn/v64df_log10.c new file mode 100644 index 0000000000..a3a8921a69 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_log10.c @@ -0,0 +1,21 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_algorithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); + +static const double C3 = 0.43429448190325182765; + +DEF_VD_MATH_FUNC (v64df, log10, v64df x) +{ + return v64df_log_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log10, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_log2.c b/newlib/libm/machine/amdgcn/v64df_log2.c new file mode 100644 index 0000000000..bb968a62b5 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_log2.c @@ -0,0 +1,12 @@ +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); + +static const double C3 = 1.4426950408889634073599246810019; + +DEF_VD_MATH_FUNC (v64df, log2, v64df x) +{ + return v64df_log_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_modf.c b/newlib/libm/machine/amdgcn/v64df_modf.c new file mode 100644 index 0000000000..1c14c790cc --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_modf.c @@ -0,0 +1,66 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_modf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_numtest (v64df); + +DEF_VD_MATH_FUNC (v64df, modf, v64df x, v64df *iptr) +{ + FUNCTION_INIT (v64df); + v64df ret_i; + + v64si i0, i1; + EXTRACT_WORDS(i0, i1, x); + v64si j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; /* exponent of x */ + v64df zero; + v64si i; + INSERT_WORDS (zero, i0 & 0x80000000, VECTOR_INIT (0), NO_COND); + + VECTOR_IF (j0 < 20, cond) /* integer part in x*/ + VECTOR_IF2 (j0 < 0, cond2, cond) /* |x|<1 */ + VECTOR_COND_MOVE (ret_i, zero, cond2); + VECTOR_RETURN (x, cond2); + VECTOR_ELSE2 (cond2, cond) + i = (0x000fffff) >> j0; + + VECTOR_IF2 (((i0 & i) | i1) == 0, cond3, cond2) /* x is integral */ + VECTOR_COND_MOVE (ret_i, x, cond3); + VECTOR_RETURN (zero, cond3); + VECTOR_ELSE2 (cond3, cond2) + INSERT_WORDS (ret_i, i0 & ~i, VECTOR_INIT (0), cond3); + VECTOR_RETURN (x - ret_i, cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ELSEIF (j0 > 51, cond) /* no fraction part */ + VECTOR_COND_MOVE (ret_i, x, cond); + VECTOR_IF2 (v64df_numtest (x) == NAN, cond2, cond) + VECTOR_COND_MOVE (ret_i, x + x, cond2); + VECTOR_RETURN (ret_i, cond2); /* x is NaN, return NaN */ + VECTOR_ENDIF + VECTOR_RETURN (zero, cond); /* return +- 0 */ + VECTOR_ELSE (cond) + i = 0xffffffff >> (j0 - 20); + VECTOR_IF2 ((i1 & i) == 0, cond2, cond) + VECTOR_COND_MOVE (ret_i, x, cond2); + INSERT_WORDS (x, i0 & 0x80000000, VECTOR_INIT (0), cond2); + VECTOR_RETURN (x, cond2); + VECTOR_ELSE2 (cond2, cond) + INSERT_WORDS (ret_i, i0, i1 & ~i, cond2); + VECTOR_RETURN (x - ret_i, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + *iptr = ret_i; + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_numtest.c b/newlib/libm/machine/amdgcn/v64df_numtest.c new file mode 100644 index 0000000000..00a5a2243d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_numtest.c @@ -0,0 +1,31 @@ +/* Based on newlib/libm/mathfp/s_numtest.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64df_numtest (v64df x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64si); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si exp = (hx & 0x7ff00000) >> 20; + + /* Check for a zero input. */ + VECTOR_RETURN (VECTOR_INIT (0), x == 0.0); + + /* Check for not a number or infinity. */ + VECTOR_IF (exp == 0x7ff, cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (NAN), + VECTOR_INIT (INF), + ((hx & 0xf0000) != 0) | (lx != 0)), + cond); + /* Otherwise it's a finite value. */ + VECTOR_ELSE (cond) + VECTOR_RETURN (VECTOR_INIT (NUM), cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_pow.c b/newlib/libm/machine/amdgcn/v64df_pow.c new file mode 100644 index 0000000000..19d5e6b051 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_pow.c @@ -0,0 +1,322 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/e_pow.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double +bp[] = {1.0, 1.5,}, +dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */ +dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */ +zero = 0.0, +one = 1.0, +two = 2.0, +two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */ + /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ +L1 = 5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */ +L2 = 4.28571428578550184252e-01, /* 0x3FDB6DB6, 0xDB6FABFF */ +L3 = 3.33333329818377432918e-01, /* 0x3FD55555, 0x518F264D */ +L4 = 2.72728123808534006489e-01, /* 0x3FD17460, 0xA91D4101 */ +L5 = 2.30660745775561754067e-01, /* 0x3FCD864A, 0x93C9DB65 */ +L6 = 2.06975017800338417784e-01, /* 0x3FCA7E28, 0x4A454EEF */ +P1 = 1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */ +P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */ +P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ +P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ +P5 = 4.13813679705723846039e-08, /* 0x3E663769, 0x72BEA4D0 */ +lg2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */ +lg2_h = 6.93147182464599609375e-01, /* 0x3FE62E43, 0x00000000 */ +lg2_l = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */ +ovt = 8.0085662595372944372e-0017, /* -(1024-log2(ovfl+.5ulp)) */ +cp = 9.61796693925975554329e-01, /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */ +cp_h = 9.61796700954437255859e-01, /* 0x3FEEC709, 0xE0000000 =(float)cp */ +cp_l = -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/ +ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */ +ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/ +ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ + +v64df v64df_sqrt_aux (v64df, v64di); +v64df v64df_scalbn_aux (v64df, v64si, v64di); + +static v64df v64df_math_oflow (v64di sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p769), + VECTOR_INIT (0x1p769), sign) * 0x1p769; +} + +static v64df v64df_math_uflow (v64di sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p-767), + VECTOR_INIT (0x1p-767), sign) * 0x1p-767; +} + +static v64si v64df_issignaling_inline (v64df x) +{ + v64si __mask = VECTOR_INIT (-1); + v64si ix; + GET_HIGH_WORD (ix, x, NO_COND); + /* Use IEEE-754 2008 encoding - i.e. exponent bits all 1, MSB of + significand is 0 for signalling NaN. */ + return ((ix & 0x7ff00000) == 0x7ff00000) & ((ix & 0x00080000) == 0); +} + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, pow, v64df x, v64df y) +{ + FUNCTION_INIT (v64df); + + v64si hx, hy, lx, ly; + EXTRACT_WORDS(hx,lx,x); + EXTRACT_WORDS(hy,ly,y); + v64si ix = hx&0x7fffffff; + v64si iy = hy&0x7fffffff; + + /* y==zero: x**0 = 1 unless x is snan */ + VECTOR_IF ((iy|ly)==0, cond) + VECTOR_RETURN (x + y, cond & v64df_issignaling_inline(x)); + VECTOR_RETURN (VECTOR_INIT (1.0), cond); + VECTOR_ENDIF + + /* x|y==NaN return NaN unless x==1 then return 1 */ + VECTOR_IF ((ix > 0x7ff00000) | ((ix==0x7ff00000)&(lx!=0)) + | (iy > 0x7ff00000) | ((iy==0x7ff00000)&(ly!=0)), cond) + VECTOR_RETURN (VECTOR_INIT (1.0), cond & ((hx-0x3ff00000)|lx)==0 + & ~v64df_issignaling_inline(y)); + VECTOR_RETURN (x + y, cond); + VECTOR_ENDIF + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + v64si yisint = VECTOR_INIT (0); + + VECTOR_IF (hx < 0, cond) + VECTOR_IF2(iy>=0x43400000, cond2, cond) + VECTOR_COND_MOVE (yisint, VECTOR_INIT (2), cond2); /* even integer y */ + VECTOR_ELSEIF2 (iy>=0x3ff00000, cond2, cond) + v64si k = (iy>>20)-0x3ff; /* exponent */ + VECTOR_IF2 (k>20, cond3, cond2) + v64si j = ly>>(52-k); + VECTOR_COND_MOVE (yisint, 2-(j&1), cond3 & (j<<(52-k))==ly); + VECTOR_ELSEIF2 (ly==0, cond3, cond2) + v64si j = iy>>(20-k); + VECTOR_COND_MOVE (yisint, 2-(j&1), cond3 & (j<<(20-k))==iy); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ENDIF + + /* special value of y */ + VECTOR_IF (ly==0, cond) + VECTOR_IF2 (iy==0x7ff00000, cond2, cond) /* y is +-inf */ + VECTOR_IF2 (((ix-0x3ff00000)|lx)==0, cond3, cond2) + VECTOR_RETURN (VECTOR_INIT (1.0), cond3); /* +-1**+-inf = 1 */ + VECTOR_ELSEIF2 (ix >= 0x3ff00000, cond3, cond2) /* (|x|>1)**+-inf = inf,0 */ + VECTOR_RETURN (y, cond3 & hy>=0); + VECTOR_RETURN (VECTOR_INIT (0.0), cond3); + VECTOR_ELSE2 (cond3, cond2) /* (|x|<1)**-,+inf = inf,0 */ + VECTOR_RETURN (-y, cond3 & hy<0); + VECTOR_RETURN (VECTOR_INIT (0.0), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF2 (iy==0x3ff00000, cond2, cond) /* y is +-1 */ + VECTOR_RETURN (VECTOR_INIT (1.0) / x, cond2 & hy<0); + VECTOR_RETURN (x, cond2); + VECTOR_ENDIF + VECTOR_RETURN (x*x, cond & hy==0x40000000); /* y is 2 */ + /* y is 0.5 */ + /* x >= +0 */ + VECTOR_RETURN (v64df_sqrt_aux (x, __mask), cond & (hy==0x3fe00000) & (hx>=0)); + VECTOR_ENDIF + + v64df ax = __builtin_gcn_fabsv(x); + /* special value of x */ + VECTOR_IF (lx==0, cond) + VECTOR_IF2 ((ix==0x7ff00000)|(ix==0)|(ix==0x3ff00000), cond2, cond) + v64df z = ax; /*x is +-0,+-inf,+-1*/ + VECTOR_COND_MOVE (z, VECTOR_INIT (1.0) / z, cond2 & (hy<0)); /* z = (1/|x|) */ + VECTOR_IF2 (hx<0, cond3, cond2) + VECTOR_IF2 (((ix-0x3ff00000)|yisint)==0, cond4, cond3) + VECTOR_COND_MOVE (z, (z-z)/(z-z), cond4); /* (-1)**non-int is NaN */ + VECTOR_ELSEIF2 (yisint==1, cond4, cond3) + VECTOR_COND_MOVE (z, -z, cond4); /* (x<0)**odd = -(|x|**odd) */ + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_RETURN (z, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + /* (x<0)**(non-int) is NaN */ + VECTOR_RETURN ((x-x)/(x-x), ((((hx >> 31) & 1) - 1)|yisint)==0); + + v64df t1, t2; + + /* |y| is huge */ + VECTOR_IF(iy>0x41e00000, cond) /* if |y| > 2**31 */ + VECTOR_IF2 (iy>0x43f00000, cond2, cond) /* if |y| > 2**64, must o/uflow */ + VECTOR_IF2 (ix<=0x3fefffff, cond3, cond2) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond3 & (hy<0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond3); + VECTOR_ENDIF + VECTOR_IF2 (ix>=0x3ff00000, cond3, cond2) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond3 & (hy>0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + /* over/underflow if x is not close to one */ + VECTOR_IF2 (ix<0x3fefffff, cond2, cond) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond2 & (hy<0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond2); + VECTOR_ENDIF + VECTOR_IF2 (ix>0x3ff00000, cond2, cond) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond2 & (hy>0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond2); + VECTOR_ENDIF + /* now |1-x| is tiny <= 2**-20, suffice to compute + log(x) by x-x^2/2+x^3/3-x^4/4 */ + v64df t = ax-1; /* t has 20 trailing zeros */ + v64df w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25)); + v64df u = ivln2_h*t; /* ivln2_h has 21 sig. bits */ + v64df v = t*ivln2_l-w*ivln2; + VECTOR_COND_MOVE (t1, u+v, cond); + SET_LOW_WORD (t1, VECTOR_INIT (0), cond); + VECTOR_COND_MOVE (t2, v-(t1-u), cond); + VECTOR_ELSE (cond) + v64si n = VECTOR_INIT (0); + /* take care subnormal number */ + VECTOR_IF2 (ix<0x00100000, cond2, cond) + VECTOR_COND_MOVE (ax, ax * two53, cond2); + VECTOR_COND_MOVE (n, n - 53, cond2); + GET_HIGH_WORD (ix, ax, cond2); + VECTOR_ENDIF + n += ((ix)>>20)-0x3ff; + v64si j = ix&0x000fffff; + /* determine interval */ + ix = j|0x3ff00000; /* normalize ix */ + v64si k; + VECTOR_IF2 (j<=0x3988E, cond2, cond) + VECTOR_COND_MOVE (k, VECTOR_INIT (0), cond2); /* |x|>1)|0x20000000)+0x00080000+(k<<18), cond); + v64df t_l = ax - (t_h-bp_k); + v64df s_l = v*((u-s_h*t_h)-s_h*t_l); + /* compute log(ax) */ + v64df s2 = s*s; + v64df r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); + r += s_l*(s_h+s); + s2 = s_h*s_h; + t_h = 3.0+s2+r; + SET_LOW_WORD (t_h, VECTOR_INIT (0), cond); + t_l = r-((t_h-3.0)-s2); + /* u+v = s*(1+...) */ + u = s_h*t_h; + v = s_l*t_h+t_l*s; + /* 2/(3log2)*(s+...) */ + v64df p_h = u+v; + SET_LOW_WORD (p_h, VECTOR_INIT (0), cond); + v64df p_l = v-(p_h-u); + v64df z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ + v64df dp_l_k = VECTOR_MERGE (VECTOR_INIT (dp_l[1]), VECTOR_INIT (dp_l[0]), k == 1); + v64df z_l = cp_l*p_h+p_l*cp+dp_l_k; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + v64df t = __builtin_convertvector (n, v64df); + v64df dp_h_k = VECTOR_MERGE (VECTOR_INIT (dp_h[1]), VECTOR_INIT (dp_h[0]), k == 1); + VECTOR_COND_MOVE (t1, ((z_h+z_l)+dp_h_k)+t, cond); + SET_LOW_WORD (t1, VECTOR_INIT (0), cond); + VECTOR_COND_MOVE (t2, z_l-(((t1-t)-dp_h_k)-z_h), cond); + VECTOR_ENDIF + + v64df s = VECTOR_INIT (1.0); /* s (sign of result -ve**odd) = -1 else = 1 */ + VECTOR_COND_MOVE (s, VECTOR_INIT (-1.0), /* (-ve)**(odd int) */ + ((hx>>31) != 0)&(yisint == 1)); + + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + v64df y1 = y; + SET_LOW_WORD (y1, VECTOR_INIT (0), NO_COND); + v64df p_l = (y-y1)*t1+y*t2; + v64df p_h = y1*t1; + v64df z = p_l+p_h; + v64si i, j; + EXTRACT_WORDS(j, i, z); + VECTOR_IF (j>=0x40900000, cond) /* z >= 1024 */ + /* if z > 1024 */ + v64di cond_di = __builtin_convertvector (cond, v64di); + VECTOR_RETURN (v64df_math_oflow(s<0), cond & (((j-0x40900000)|i)!=0)); /* overflow */ + VECTOR_RETURN (v64df_math_oflow(s<0), cond_di & (p_l+ovt>z-p_h)); /* overflow */ + VECTOR_ELSEIF ((j&0x7fffffff)>=0x4090cc00, cond) /* z <= -1075 */ + /* z < -1075 */ + v64di cond_di = __builtin_convertvector (cond, v64di); + VECTOR_RETURN (v64df_math_uflow(s<0), cond & (((j-0xc090cc00)|i)!=0)); /* underflow */ + VECTOR_RETURN (v64df_math_uflow(s<0), cond_di & (p_l<=z-p_h)); /* underflow */ + VECTOR_ENDIF + + /* + * compute 2**(p_h+p_l) + */ + i = j&0x7fffffff; + v64si k = (i>>20)-0x3ff; + v64si n = VECTOR_INIT (0); + VECTOR_IF (i>0x3fe00000, cond) /* if |z| > 0.5, set n = [z+0.5] */ + VECTOR_COND_MOVE (n, j+(0x00100000>>(k+1)), cond); + k = ((n&0x7fffffff)>>20)-0x3ff; /* new k for n */ + v64df t = VECTOR_INIT (0.0); + SET_HIGH_WORD(t, n&~(0x000fffff>>k), cond); + VECTOR_COND_MOVE (n, ((n&0x000fffff)|0x00100000)>>(20-k), cond); + VECTOR_COND_MOVE (n, -n, cond & (j<0)); + VECTOR_COND_MOVE (p_h, p_h - t, cond); + VECTOR_ENDIF + v64df t = p_l+p_h; + SET_LOW_WORD(t, VECTOR_INIT (0), NO_COND); + v64df u = t*lg2_h; + v64df v = (p_l-(t-p_h))*lg2+t*lg2_l; + z = u+v; + v64df w = v-(z-u); + t = z*z; + t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + v64df r = (z*t1)/(t1-two)-(w+z*w); + z = VECTOR_INIT (1.0)-(r-z); + GET_HIGH_WORD(j,z, NO_COND); + j += (n<<20); + VECTOR_IF ((j>>20)<=0, cond) + VECTOR_COND_MOVE (z, v64df_scalbn_aux (z, n, __mask), cond); /* subnormal output */ + VECTOR_ELSE (cond) + SET_HIGH_WORD(z,j, cond); + VECTOR_ENDIF + VECTOR_RETURN (s*z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (pow, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_remainder.c b/newlib/libm/machine/amdgcn/v64df_remainder.c new file mode 100644 index 0000000000..a524107c7d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_remainder.c @@ -0,0 +1,68 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/e_remainder.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_fmod_aux (v64df, v64df, v64di); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, remainder, v64df x, v64df p) +{ + FUNCTION_INIT (v64df); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si hp, lp; + EXTRACT_WORDS (hp, lp, p); + v64si sx = hx & 0x80000000; + hp &= 0x7fffffff; + hx &= 0x7fffffff; + + /* purge off exception values */ + VECTOR_RETURN ((x * p) / (x * p), ((hp | lp) == 0) | ((hx >= 0x7ff00000) + | /* x not finite */ + ((hp >= 0x7ff00000) & /* p is NaN */ + (((hp - 0x7ff00000) | lp) != 0)))); + + VECTOR_COND_MOVE (x, v64df_fmod_aux (x, p+p, __mask), hp <= 0x7fdfffff); // now x < 2p + + VECTOR_RETURN (0.0 * x, ((hx-hp)|(lx-lp))==0); + + x = __builtin_gcn_fabsv (x); + p = __builtin_gcn_fabsv (p); + + VECTOR_IF (hp < 0x00200000, cond) + VECTOR_IF2 (x + x > p, cond2, __builtin_convertvector(cond, v64di)) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x + x >= p)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + v64df p_half = 0.5 * p; + VECTOR_IF2 (x > p_half, cond2, __builtin_convertvector(cond, v64di)) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x >= p_half)); + VECTOR_ENDIF + VECTOR_ENDIF + + GET_HIGH_WORD (hx, x, NO_COND); + SET_HIGH_WORD (x, hx ^ sx, NO_COND); + + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (remainder, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_rint.c b/newlib/libm/machine/amdgcn/v64df_rint.c new file mode 100644 index 0000000000..561c9a2ac9 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_rint.c @@ -0,0 +1,69 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_rint.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double TWO52[2] = { + 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ + -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */ +}; + +DEF_VD_MATH_FUNC (v64df, rint, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si i0, i1; + EXTRACT_WORDS (i0, i1, x); + v64si sx = (i0 >> 31) & 1; + v64df two52 = VECTOR_MERGE (VECTOR_INIT (TWO52[1]), VECTOR_INIT (TWO52[0]), sx != 0); + v64si j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; + v64si i; + VECTOR_IF (j0 < 20, cond) + VECTOR_IF2 (j0 < 0, cond2, cond) + VECTOR_RETURN (x, cond2 & (((i0 & 0x7fffffff) | i1) == 0)); + VECTOR_COND_MOVE (i1, i1 | (i0 & 0x0fffff), cond2); + VECTOR_COND_MOVE (i0, i0 & 0xfffe0000, cond2); + VECTOR_COND_MOVE (i0, i0 | (((i1 | -i1) >> 12) & 0x80000), cond2); + SET_HIGH_WORD (x, i0, cond2); + v64df w = two52 + x; + v64df t = w - two52; + GET_HIGH_WORD (i0, t, cond2); + SET_HIGH_WORD (t, (i0&0x7fffffff)|(sx<<31), cond2); + VECTOR_RETURN (t, cond2); + VECTOR_ELSE2 (cond2, cond) + i = (0x000fffff) >> j0; + VECTOR_RETURN (x, cond2 & (((i0 & i) | i1) == 0)); /* x is integral */ + i >>= 1; + VECTOR_IF2 (((i0 & i) | i1) != 0, cond3, cond2) + VECTOR_COND_MOVE (i1, CAST_VECTOR(v64si, VECTOR_INIT (0x80000000)), cond3 & (j0 == 19)); + VECTOR_COND_MOVE (i1, VECTOR_INIT (0), cond3 & (j0 != 19)); + VECTOR_COND_MOVE (i0, (i0 & (~i)) | ((0x40000) >> j0), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ELSEIF (j0 > 51, cond) + VECTOR_RETURN (x + x, cond & (j0 == 0x400)); + VECTOR_RETURN (x, cond); + VECTOR_ELSE (cond) + i = CAST_VECTOR (v64si, VECTOR_INIT (0xffffffff) >> (j0 - 20)); + VECTOR_RETURN (x, cond & ((i1 & i) == 0)); + i >>= 1; + VECTOR_COND_MOVE (i1, (i1 & (~i)) | (0x40000000 >> (j0 - 20)), cond & ((i1 & i) != 0)); + VECTOR_ENDIF + INSERT_WORDS (x, i0, i1, NO_COND); + v64df w = two52 + x; + VECTOR_RETURN (w - two52, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (rint, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_scalb.c b/newlib/libm/machine/amdgcn/v64df_scalb.c new file mode 100644 index 0000000000..794045d4e9 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_scalb.c @@ -0,0 +1,50 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/e_scalb.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_isnan (v64df); +v64si v64df_finite (v64df); +v64df v64df_rint_aux (v64df, v64di); +v64df v64df_scalbn_aux (v64df, v64si, v64di); + +DEF_VD_MATH_FUNC (v64df, scalb, v64df x, v64df fn) +{ + FUNCTION_INIT (v64df); + + VECTOR_IF (v64df_isnan(x) | v64df_isnan(fn), cond) + VECTOR_RETURN (x * fn, cond); + VECTOR_ENDIF + VECTOR_IF (~v64df_finite (fn), cond) + VECTOR_IF2 (fn > 0.0, cond2, cond) + VECTOR_RETURN (x * fn, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (x / (-fn), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (v64df_rint_aux (fn, __mask) != fn, cond) + VECTOR_RETURN ((fn-fn)/(fn-fn), cond); + VECTOR_ENDIF + VECTOR_IF (fn > 65000.0, cond) + VECTOR_RETURN (v64df_scalbn_aux (x, VECTOR_INIT (65000), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (-fn > 65000.0, cond) + VECTOR_RETURN (v64df_scalbn_aux (x, VECTOR_INIT (-65000), __mask), cond); + VECTOR_ENDIF + VECTOR_RETURN (v64df_scalbn_aux (x, __builtin_convertvector (fn, v64si), __mask), + NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (scalb, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_scalbn.c b/newlib/libm/machine/amdgcn/v64df_scalbn.c new file mode 100644 index 0000000000..64dba67af4 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_scalbn.c @@ -0,0 +1,58 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_scalbn.c in Newlib. */ + +#include "amdgcnmach.h" +#include +#include + +static const double +two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ +twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ +huge = 1.0e+300, +tiny = 1.0e-300; + +v64df v64df_copysign_aux (v64df, v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, scalbn, v64df x, v64si n) +{ + FUNCTION_INIT (v64df); + + const v64df huge_v = VECTOR_INIT ((double) huge); + const v64df tiny_v = VECTOR_INIT ((double) tiny); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si k =(hx&0x7ff00000)>>20; /* extract exponent */ + VECTOR_IF (k == 0, cond) /* 0 or subnormal x */ + VECTOR_RETURN (x, cond & ((lx|(hx&0x7fffffff))==0)); /* +- 0 */ + VECTOR_COND_MOVE (x, x * two54, cond); + GET_HIGH_WORD (hx, x, cond); + VECTOR_COND_MOVE (k, ((hx&0x7ff00000)>>20) - 54, cond); + VECTOR_RETURN (tiny*x, cond & (n < -50000)); /*underflow*/ + VECTOR_ENDIF + VECTOR_RETURN (x+x, k == 0x7ff); /* NaN or Inf */ + /* in case integer overflow in n+k */ + VECTOR_RETURN (huge_v * v64df_copysign_aux (huge_v, x, __mask), n > 50000); + k = k + n; + VECTOR_RETURN (huge_v * v64df_copysign_aux (huge_v, x, __mask), k > 0x7fe); + VECTOR_IF (k > 0, cond) /* normal result */ + SET_HIGH_WORD (x, (hx&0x800fffff)|(k<<20), cond); + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_RETURN (tiny_v * v64df_copysign_aux (tiny_v, x, __mask), k <= -54); /*underflow*/ + k += 54; /* subnormal result */ + SET_HIGH_WORD (x, (hx&0x800fffff)|(k<<20), NO_COND); + VECTOR_RETURN (x * twom54, NO_COND); + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_signif.c b/newlib/libm/machine/amdgcn/v64df_signif.c new file mode 100644 index 0000000000..b28c8a68d8 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_signif.c @@ -0,0 +1,25 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_signif.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_scalb_aux (v64df x, v64df fn, v64di); +v64si v64df_ilogb_aux (v64df x, v64si); + +DEF_VD_MATH_FUNC (v64df, significand, v64df x) +{ + v64si si_mask = __builtin_convertvector (__mask, v64si); + return v64df_scalb_aux (x, -__builtin_convertvector (v64df_ilogb_aux (x, si_mask), v64df), __mask); +} + +DEF_VARIANTS (significand, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sin.c b/newlib/libm/machine/amdgcn/v64df_sin.c new file mode 100644 index 0000000000..3bd7f9a42b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sin.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/s_sin.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sine_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, sin, v64df x) +{ + return v64df_sine_aux (x, 0, __mask); +} + +DEF_VARIANTS (sin, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sine.c b/newlib/libm/machine/amdgcn/v64df_sine.c new file mode 100644 index 0000000000..0879bc246b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sine.c @@ -0,0 +1,97 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_sine.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_numtest (v64df x); + +static const double HALF_PI = 1.57079632679489661923; +static const double ONE_OVER_PI = 0.31830988618379067154; +static const double r[] = { -0.16666666666666665052, + 0.83333333333331650314e-02, + -0.19841269841201840457e-03, + 0.27557319210152756119e-05, + -0.25052106798274584544e-07, + 0.16058936490371589114e-09, + -0.76429178068910467734e-12, + 0.27204790957888846175e-14 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC(v64df, sine, v64df x, int cosine) +{ + const double YMAX = 210828714.0; + + FUNCTION_INIT (v64df); + + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); + VECTOR_ENDIF + + /* Use sin and cos properties to ease computations. */ + v64di sgn; + v64df y; + + if (cosine) + { + sgn = VECTOR_INIT (0L); + y = __builtin_gcn_fabsv (x) + HALF_PI; + } + else + { + sgn = x < 0.0; + y = VECTOR_MERGE (-x, x, x < 0.0); + } + + /* Check for values of y that will overflow here. */ + VECTOR_IF (y > YMAX, cond) + errno = ERANGE; + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + /* Calculate the exponent. */ + v64si Nneg = __builtin_convertvector (y * ONE_OVER_PI - 0.5, v64si); + v64si Npos = __builtin_convertvector (y * ONE_OVER_PI + 0.5, v64si); + v64si N = VECTOR_MERGE (Nneg, Npos, y < 0.0); + v64df XN = __builtin_convertvector (N, v64df); + + VECTOR_COND_MOVE (sgn, ~sgn, (N & 1) != 0); + + if (cosine) + XN -= 0.5; + + y = __builtin_gcn_fabsv (x) - XN * __PI; + + v64df res; + + VECTOR_IF ((-z_rooteps < y) & (y < z_rooteps), cond) + VECTOR_COND_MOVE (res, y, cond); + VECTOR_ELSE (cond) + v64df g = y * y; + + /* Calculate the Taylor series. */ + v64df R = (((((((r[6] * g + r[5]) * g + r[4]) * g + r[3]) * g + r[2]) * g + r[1]) * g + r[0]) * g); + + /* Finally, compute the result. */ + VECTOR_COND_MOVE (res, y + y * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_sineh.c b/newlib/libm/machine/amdgcn/v64df_sineh.c new file mode 100644 index 0000000000..007a149387 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sineh.c @@ -0,0 +1,101 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_sineh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df, v64di); +v64si v64df_numtest (v64df); +v64si v64df_ispos (v64df); + +static const double q[] = { -0.21108770058106271242e+7, + 0.36162723109421836460e+5, + -0.27773523119650701667e+3 }; +static const double p[] = { -0.35181283430177117881e+6, + -0.11563521196851768270e+5, + -0.16375798202630751372e+3, + -0.78966127417357099479 }; +static const double LNV = 0.6931610107421875000; +static const double INV_V2 = 0.24999308500451499336; +static const double V_OVER2_MINUS1 = 0.13830277879601902638e-4; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, sineh, v64df x, int cosineh) +{ + const double WBAR = 18.55; + + FUNCTION_INIT (v64df); + + v64si sgn = VECTOR_INIT (0); + v64di v_cosineh = VECTOR_INIT (cosineh ? -1L : 0L); + + /* Check for special values. */ + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity.d), + VECTOR_INIT (-z_infinity.d), + v64df_ispos (x)), + cond); + VECTOR_ENDIF + + v64df y = __builtin_gcn_fabsv (x); + + if (!cosineh) + VECTOR_COND_MOVE (sgn, VECTOR_INIT (-1), x < 0.0); + + v64df res; + + VECTOR_IF (((y > 1.0) & ~v_cosineh) | v_cosineh, cond) + VECTOR_IF2 (y > BIGX, cond2, cond) + v64df w = y - LNV; + + /* Check for w > maximum here. */ + VECTOR_IF2 (w > BIGX, cond3, cond2) + errno = ERANGE; + VECTOR_RETURN (x, cond3); + VECTOR_ENDIF + + v64df z = v64df_exp_aux (w, __mask); + + VECTOR_COND_MOVE (res, z * (V_OVER2_MINUS1 + 1.0), + cond2 & (w > WBAR)); + VECTOR_ELSE2 (cond2, cond) + v64df z = v64df_exp_aux (y, __mask); + if (cosineh) + VECTOR_COND_MOVE (res, (z + 1 / z) * 0.5, cond2); + else + VECTOR_COND_MOVE (res, (z - 1 / z) * 0.5, cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + VECTOR_ELSE (cond) + /* Check for y being too small. */ + VECTOR_IF2 (y < z_rooteps, cond2, cond); + VECTOR_COND_MOVE (res, x, cond2); + VECTOR_ELSE2 (cond2, cond) + /* Calculate the Taylor series. */ + v64df f = x * x; + v64df Q = ((f + q[2]) * f + q[1]) * f + q[0]; + v64df P = ((p[3] * f + p[2]) * f + p[1]) * f + p[0]; + v64df R = f * (P / Q); + + VECTOR_COND_MOVE (res, x + x * R, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_sinh.c b/newlib/libm/machine/amdgcn/v64df_sinh.c new file mode 100644 index 0000000000..280f76d417 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sinh.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/s_sinh.c. */ + +#include "amdgcnmach.h" + +v64df v64df_sineh_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, sinh, v64df x) +{ + return v64df_sineh_aux (x, 0, __mask); +} + +DEF_VARIANTS (sinh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sqrt.c b/newlib/libm/machine/amdgcn/v64df_sqrt.c new file mode 100644 index 0000000000..004823f925 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sqrt.c @@ -0,0 +1,75 @@ +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/s_sqrt.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_numtest (v64df); +v64si v64df_ispos (v64df); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpv_mant) \ + && __has_builtin (__builtin_gcn_frexpv_exp) \ + && __has_builtin (__builtin_gcn_ldexpv) + +DEF_VD_MATH_FUNC (v64df, sqrt, v64df x) +{ + FUNCTION_INIT (v64df); + + /* Check for special values. */ + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + VECTOR_IF2 (v64df_ispos (x), cond2, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond2); + VECTOR_ELSE2 (cond2,cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_infinity.d), cond); + VECTOR_ENDIF + VECTOR_ENDIF + + /* Initial checks are performed here. */ + VECTOR_IF (x == 0.0, cond) + VECTOR_RETURN (VECTOR_INIT (0.0), cond); + VECTOR_ENDIF + VECTOR_IF (x < 0.0, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); + VECTOR_ENDIF + + /* Find the exponent and mantissa for the form x = f * 2^exp. */ + v64df f = __builtin_gcn_frexpv_mant (x); + v64si exp = __builtin_gcn_frexpv_exp (x); + v64si odd = (exp & 1) != 0; + + /* Get the initial approximation. */ + v64df y = 0.41731 + 0.59016 * f; + + f *= 0.5f; + /* Calculate the remaining iterations. */ + y = y * 0.5f + f / y; + y = y * 0.5f + f / y; + y = y * 0.5f + f / y; + + /* Calculate the final value. */ + VECTOR_COND_MOVE (y, y * __SQRT_HALF, odd); + VECTOR_COND_MOVE (exp, exp + 1, odd); + exp >>= 1; + y = __builtin_gcn_ldexpv (y, exp); + + VECTOR_RETURN (y, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (sqrt, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tan.c b/newlib/libm/machine/amdgcn/v64df_tan.c new file mode 100644 index 0000000000..075375ae08 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_tan.c @@ -0,0 +1,142 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/kf_tan.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double +pio4 = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ +pio4lo= 3.06161699786838301793e-17, /* 0x3C81A626, 0x33145C07 */ +T[] = { + 3.33333333333334091986e-01, /* 0x3FD55555, 0x55555563 */ + 1.33333333333201242699e-01, /* 0x3FC11111, 0x1110FE7A */ + 5.39682539762260521377e-02, /* 0x3FABA1BA, 0x1BB341FE */ + 2.18694882948595424599e-02, /* 0x3F9664F4, 0x8406D637 */ + 8.86323982359930005737e-03, /* 0x3F8226E3, 0xE96E8493 */ + 3.59207910759131235356e-03, /* 0x3F6D6D22, 0xC9560328 */ + 1.45620945432529025516e-03, /* 0x3F57DBC8, 0xFEE08315 */ + 5.88041240820264096874e-04, /* 0x3F4344D8, 0xF2F26501 */ + 2.46463134818469906812e-04, /* 0x3F3026F7, 0x1A8D1068 */ + 7.81794442939557092300e-05, /* 0x3F147E88, 0xA03792A6 */ + 7.14072491382608190305e-05, /* 0x3F12B80F, 0x32F0A7E9 */ + -1.85586374855275456654e-05, /* 0xBEF375CB, 0xDB605373 */ + 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */ +}; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +static v64df +v64df_kernel_tan (v64df x, v64df y, v64si iy, v64di __mask) +{ + FUNCTION_INIT (v64df); + + v64si hx; + GET_HIGH_WORD(hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; /* high word of |x| */ + + VECTOR_IF (ix < 0x3e300000, cond) /* x < 2**-28 */ + VECTOR_IF2(__builtin_convertvector (x, v64si)==0, cond2, cond) /* generate inexact */ + v64si low; + GET_LOW_WORD (low, x, cond2); + VECTOR_RETURN (1.0 / __builtin_gcn_fabsv (x), ((ix|low)|(iy+1))==0); + VECTOR_RETURN (x, cond2 & (iy == 1)); + v64df z, w; + z = w = x + y; + SET_LOW_WORD (z, VECTOR_INIT (0.0), cond2); + v64df v = y - (z - x); + v64df t, a; + t = a = -1.0 / w; + SET_LOW_WORD(t, VECTOR_INIT (0.0), cond2); + v64df s = 1.0 + t * z; + VECTOR_RETURN ( t + a * (s + t * v), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF(ix>=0x3FE59428, cond) /* |x|>=0.6744 */ + VECTOR_COND_MOVE (x, -x, cond & (hx < 0)); + VECTOR_COND_MOVE (y, -y, cond & (hx < 0)); + v64df z = pio4-x; + v64df w = pio4lo-y; + VECTOR_COND_MOVE (x, z+w, cond); + VECTOR_COND_MOVE (y, VECTOR_INIT (0.0), cond); + VECTOR_ENDIF + v64df z = x*x; + v64df w = z*z; + /* Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + v64df r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11])))); + v64df v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12]))))); + v64df s = z*x; + r = y + z*(s*(r+v)+y); + r += T[0]*s; + w = x+r; + VECTOR_IF(ix>=0x3FE59428, cond) + v = __builtin_convertvector (iy, v64df); + VECTOR_RETURN (__builtin_convertvector (1-((hx>>30)&2), v64df) + * (v-2.0*(x-(w*w/(w+v)-r))), cond); + VECTOR_ENDIF + VECTOR_RETURN (w, iy == 1); + /* if allow error up to 2 ulp, + simply return -1.0/(x+r) here */ + /* compute -1.0/(x+r) accurately */ + z = w; + SET_LOW_WORD (z, VECTOR_INIT (0), NO_COND); + v = r - (z - x); /* z+v = r+x */ + v64df a, t; + t = a = -1.0/w; /* a = -1.0/w */ + SET_LOW_WORD(t, VECTOR_INIT (0), NO_COND); + s = 1.0+t*z; + VECTOR_RETURN (t+a*(s+t*v), NO_COND); + + FUNCTION_RETURN; +} + +static v64si +v64df_rem_pio2 (v64df x, v64df *y) +{ + v64df r = x * __INV_PI_OVER_TWO_2_24; + v64si n = (__builtin_convertvector (r, v64si) + 0x800000) >> 24; + x = x - __builtin_convertvector (n, v64df) * __PI_OVER_TWO; + + y[0] = x; + y[1] = x - y[0]; + return n; +} + +DEF_VD_MATH_FUNC (v64df, tan, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si ix; + GET_HIGH_WORD (ix, x, NO_COND); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + VECTOR_RETURN (v64df_kernel_tan (x, VECTOR_INIT (0.0), VECTOR_INIT (1), __mask), + ix <= 0x3fe921fb); + + /* tan(Inf or NaN) is NaN */ + VECTOR_RETURN (x-x, ix >= 0x7ff00000); /* NaN */ + + /* argument reduction needed */ + v64df y[2]; + v64si n = v64df_rem_pio2 (x,y); + VECTOR_RETURN (v64df_kernel_tan (y[0], y[1], 1-((n&1)<<1), __mask), // 1 -- n even + NO_COND); // -1 -- n odd + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tan, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tanh.c b/newlib/libm/machine/amdgcn/v64df_tanh.c new file mode 100644 index 0000000000..9b90f989bd --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_tanh.c @@ -0,0 +1,63 @@ +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/s_tanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df, v64di); + +static const double LN3_OVER2 = 0.54930614433405484570; +static const double p[] = { -0.16134119023996228053e+4, + -0.99225929672236083313e+2, + -0.96437492777225469787 }; +static const double q[] = { 0.48402357071988688686e+4, + 0.22337720718962312926e+4, + 0.11274474380534949335e+3 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, tanh, v64df x) +{ + FUNCTION_INIT (v64df); + + v64df f = __builtin_gcn_fabsv (x); + v64df res; + + /* Check if the input is too big. */ + VECTOR_IF (f > BIGX, cond) + VECTOR_COND_MOVE (res, VECTOR_INIT (1.0), cond); + + VECTOR_ELSEIF (f > LN3_OVER2, cond) + VECTOR_COND_MOVE (res, 1.0 - 2.0 / (v64df_exp_aux (2 * f, __mask) + 1.0), + cond); + + /* Check if the input is too small. */ + VECTOR_ELSEIF (f < z_rooteps, cond) + VECTOR_COND_MOVE (res, f, cond); + + /* Calculate the Taylor series. */ + VECTOR_ELSE (cond) + v64df g = f * f; + + v64df P = (p[2] * g + p[1]) * g + p[0]; + v64df Q = ((g + q[2]) * g + q[1]) * g + q[0]; + v64df R = g * (P / Q); + + VECTOR_COND_MOVE (res, f + f * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, x < 0.0); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tanh, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tgamma.c b/newlib/libm/machine/amdgcn/v64df_tgamma.c new file mode 100644 index 0000000000..3fd04931b8 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_tgamma.c @@ -0,0 +1,28 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/e_tgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df x, v64di __mask); +v64df v64df_lgamma_r_aux (v64df x, v64si *signgamp, v64di __mask); + +DEF_VD_MATH_FUNC (v64df, tgamma, v64df x) +{ + v64si signgam_local; + v64df y = v64df_exp_aux(v64df_lgamma_r_aux(x, &signgam_local, __mask), __mask); + VECTOR_COND_MOVE(y, -y, signgam_local < 0); + return y; +} + +DEF_VARIANTS (tgamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64sf_acos.c b/newlib/libm/machine/amdgcn/v64sf_acos.c new file mode 100644 index 0000000000..216df0ac91 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_acos.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/sf_acos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_asinef_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, acosf, v64sf x) +{ + return v64sf_asinef_aux(x, 1, __mask); +} + +DEF_VARIANTS (acosf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_acosh.c b/newlib/libm/machine/amdgcn/v64sf_acosh.c new file mode 100644 index 0000000000..e2a8cbd3e1 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_acosh.c @@ -0,0 +1,66 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/ef_acosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); +v64sf v64sf_log1pf_aux (v64sf, v64si); +v64sf v64sf_sqrtf_aux (v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, acoshf, v64sf x) +{ + static const float one = 1.0; + static const float ln2 = 6.9314718246e-01; /* 0x3f317218 */ + + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + + VECTOR_IF (hx < 0x3f800000, cond) // x < 1 */ + VECTOR_RETURN ((x-x) / (x-x), cond); + VECTOR_ENDIF + VECTOR_IF (hx >=0x4d800000, cond) // x > 2**28 */ + VECTOR_IF2 (hx >=0x7f800000, cond2, cond) // x is inf of NaN */ + VECTOR_RETURN (x+x, cond2); + VECTOR_ELSE (cond2) + /* acosh(huge)=log(2x) */ + VECTOR_RETURN (v64sf_logf_aux (x, __mask) + ln2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (hx == 0x3f800000, cond) + /* acosh(1) = 0 */ + VECTOR_RETURN (VECTOR_INIT (0.0f), cond); + VECTOR_ENDIF + VECTOR_IF (hx > 0x40000000, cond) /* 2**28 > x > 2 */ + { + v64sf t = x * x; + VECTOR_RETURN (v64sf_logf_aux (2.0f*x - 1.0f / + (x + v64sf_sqrtf_aux (t - 1.0f, __mask)), + __mask), + cond); + } + VECTOR_ELSE (cond) /* 1 0.5f, cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (1 - acosine), cond); + + /* Check for range error. */ + VECTOR_IF2 (y > 1.0f, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (g, (1.0f - y) / 2.0f, cond); + VECTOR_COND_MOVE (y, -2.0f * v64sf_sqrtf (g), cond); + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (acosine), cond); + VECTOR_IF2 (y < z_rooteps_f, cond2, cond) + VECTOR_COND_MOVE (res, y, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (g, y * y, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF ((y >= z_rooteps_f) | branch, cond) + { + /* Calculate the Taylor series. */ + v64sf P = (p[1] * g + p[0]) * g; + v64sf Q = (g + q[1]) * g + q[0]; + v64sf R = P / Q; + + VECTOR_COND_MOVE (res, y + y * R, cond); + } + VECTOR_ENDIF + + v64sf a_i = VECTOR_MERGE (VECTOR_INIT (a[1]), VECTOR_INIT (a[0]), i != 0); + + /* Calculate asine or acose. */ + if (acosine == 0) + { + VECTOR_COND_MOVE (res, (a_i + res) + a_i, NO_COND); + VECTOR_IF (x < 0.0f, cond) + VECTOR_COND_MOVE (res, -res, cond); + VECTOR_ENDIF + } + else + { + v64sf b_i = VECTOR_MERGE (VECTOR_INIT(b[1]), VECTOR_INIT(b[0]), i != 0); + + VECTOR_IF (x < 0.0f, cond) + VECTOR_COND_MOVE (res, (b_i + res) + b_i, cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (res, (a_i - res) + a_i, cond); + VECTOR_ENDIF + } + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_asinh.c b/newlib/libm/machine/amdgcn/v64sf_asinh.c new file mode 100644 index 0000000000..781d20638c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_asinh.c @@ -0,0 +1,68 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_asinh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); +v64sf v64sf_log1pf_aux (v64sf, v64si); +v64sf v64sf_sqrtf_aux (v64sf, v64si); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, asinhf, v64sf x) +{ + static const float one = 1.0000000000e+00; /* 0x3F800000 */ + static const float ln2 = 6.9314718246e-01; /* 0x3f317218 */ + static const float huge = 1.0000000000e+30; + + FUNCTION_INIT (v64sf); + + v64sf w; + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >=0x7f800000, cond) /* x is inf or NaN */ + VECTOR_RETURN (x + x, cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x31800000, cond) /* |x|<2**-28 */ + VECTOR_IF2 (huge+x > one, cond2, cond) /* return x inexact except 0 */ + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (ix > 0x4d800000, cond) /* x > 2**28 */ + VECTOR_COND_MOVE (w, v64sf_logf_aux (__builtin_gcn_fabsvf (x), __mask) + + ln2, + cond); + VECTOR_ELSEIF (ix > 0x40000000, cond) /* 2**28 > |x| > 2.0 */ + v64sf t = __builtin_gcn_fabsvf (x); + VECTOR_COND_MOVE (w, v64sf_logf_aux (2.0f * t + 1.0f / (v64sf_sqrtf_aux (x*x + 1.0f, __mask) + t), __mask), + cond); + VECTOR_ELSE (cond) /* 2.0 > |x| > 2**-28 */ + v64sf t = x * x; + VECTOR_COND_MOVE (w, v64sf_log1pf_aux (__builtin_gcn_fabsvf (x) + t / (1.0f + v64sf_sqrtf_aux (1.0f + t, __mask)), __mask), + cond); + VECTOR_ENDIF + + VECTOR_IF (hx > 0, cond) + VECTOR_RETURN (w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (asinhf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_atan.c b/newlib/libm/machine/amdgcn/v64sf_atan.c new file mode 100644 index 0000000000..e38d0c4f9b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atan.c @@ -0,0 +1,13 @@ +/* Based on newlib/libm/mathfp/sf_atan.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_atangentf_aux (v64sf, v64sf, v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, atanf, v64sf x) +{ + return (v64sf_atangentf_aux (x, VECTOR_INIT (0.0f), VECTOR_INIT (0.0f), + 0, __mask)); +} + +DEF_VARIANTS (atanf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_atan2.c b/newlib/libm/machine/amdgcn/v64sf_atan2.c new file mode 100644 index 0000000000..1718dfa96b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atan2.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/sf_atan2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_atangentf_aux (v64sf, v64sf, v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, atan2f, v64sf v, v64sf u) +{ + return v64sf_atangentf_aux (VECTOR_INIT (0.0f), v, u, 1, __mask); +} + +DEF_VARIANTS2 (atan2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_atangent.c b/newlib/libm/machine/amdgcn/v64sf_atangent.c new file mode 100644 index 0000000000..f99e844f6d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atangent.c @@ -0,0 +1,123 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_atangent.c in Newlib. */ + +#include +#include "amdgcnmach.h" + +static const float ROOT3 = 1.732050807; +static const float a[] = { 0.0, 0.523598775, 1.570796326, + 1.047197551 }; +static const float q[] = { 0.1412500740e+1 }; +static const float p[] = { -0.4708325141, -0.5090958253e-1 }; + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpvf_exp) \ + && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, atangentf, v64sf x, v64sf v, v64sf u, int arctan2) +{ + FUNCTION_INIT (v64sf); + + v64sf zero = VECTOR_INIT (0.0f); + v64sf res; + v64si branch = VECTOR_INIT (0); + + /* Preparation for calculating arctan2. */ + if (arctan2) + { + VECTOR_IF (u == 0.0f, cond) + VECTOR_IF2 (v == 0.0f, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, VECTOR_INIT ((float) __PI_OVER_TWO), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (~branch, cond) + /* Get the exponent values of the inputs. */ + v64si expv = __builtin_gcn_frexpvf_exp (v); + v64si expu = __builtin_gcn_frexpvf_exp (u); + + /* See if a divide will overflow. */ + v64si e = expv - expu; + + VECTOR_IF2 (e > FLT_MAX_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, VECTOR_INIT ((float) __PI_OVER_TWO), cond2); + VECTOR_ENDIF + + /* Also check for underflow. */ + VECTOR_IF2 (e < FLT_MIN_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, zero, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + } + + VECTOR_IF (~branch, cond) + v64sf f; + v64si N = VECTOR_INIT (0); + + if (arctan2) + f = __builtin_gcn_fabsvf (v / u); + else + f = __builtin_gcn_fabsvf (x); + + VECTOR_IF2 (f > 1.0f, cond2, cond) + VECTOR_COND_MOVE (f, 1.0f / f, cond2); + VECTOR_COND_MOVE (N, VECTOR_INIT (2), cond2); + VECTOR_ENDIF + + VECTOR_IF2 (f > (2.0f - ROOT3), cond2, cond) + float A = ROOT3 - 1.0f; + VECTOR_COND_MOVE (f, (((A * f - 0.5f) - 0.5f) + f) / (ROOT3 + f), + cond2); + N += cond2 & 1; + VECTOR_ENDIF + + /* Check for values that are too small. */ + VECTOR_IF2 ((-z_rooteps_f < f) & (f < z_rooteps_f), cond2, cond) + VECTOR_COND_MOVE (res, f, cond2); + + /* Calculate the Taylor series. */ + VECTOR_ELSE2 (cond2, cond) + v64sf g = f * f; + v64sf P = (p[1] * g + p[0]) * g; + v64sf Q = g + q[0]; + v64sf R = P / Q; + + VECTOR_COND_MOVE (res, f + f * R, cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, cond & (N > 1)); + + res += VECTOR_MERGE (VECTOR_INIT (a[1]), zero, cond & (N == 1)); + res += VECTOR_MERGE (VECTOR_INIT (a[2]), zero, cond & (N == 2)); + res += VECTOR_MERGE (VECTOR_INIT (a[3]), zero, cond & (N == 3)); + VECTOR_ENDIF + + if (arctan2) + { + /*if (u < 0.0)*/ + VECTOR_COND_MOVE (res, (float) __PI - res, u < 0.0f); + /*if (v < 0.0)*/ + VECTOR_COND_MOVE (res, -res, v < 0.0f); + } + /*else if (x < 0.0) */ + else + VECTOR_COND_MOVE (res, -res, x < 0.0f); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_atanh.c b/newlib/libm/machine/amdgcn/v64sf_atanh.c new file mode 100644 index 0000000000..f728bb2171 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atanh.c @@ -0,0 +1,61 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/ef_atanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_log1pf_aux (v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, atanhf, v64sf x) +{ + static const float zero = 0.0; + static const float one = 1.0, huge = 1e30; + + FUNCTION_INIT (v64sf); + + v64sf t; + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix > 0x3f800000, cond) // |x|>1 + VECTOR_RETURN ((x - x)/(x - x), cond); + VECTOR_ENDIF + + VECTOR_IF (ix == 0x3f800000, cond) + VECTOR_RETURN (x / zero, cond); + VECTOR_ENDIF + + VECTOR_IF ((ix < 0x31800000) & ((huge + x) > zero), cond) // x<2**-28 + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + SET_FLOAT_WORD (x, ix, NO_COND); + + VECTOR_IF (ix < 0x3f000000, cond) // x < 0.5 */ + v64sf t2 = x + x; + VECTOR_COND_MOVE (t, 0.5f * v64sf_log1pf_aux (t2 + t2 * x / (one - x), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (t, 0.5f * v64sf_log1pf_aux ((x + x) / (one - x), __mask), cond); + VECTOR_ENDIF + + VECTOR_IF (hx >= 0, cond) + VECTOR_RETURN (t, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-t, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (atanhf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_copysign.c b/newlib/libm/machine/amdgcn/v64sf_copysign.c new file mode 100644 index 0000000000..83fca440d7 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_copysign.c @@ -0,0 +1,29 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_copysign.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64sf, copysignf, v64sf x, v64sf y) +{ + FUNCTION_INIT (v64sf); + + v64si ix, iy; + GET_FLOAT_WORD (ix, x, NO_COND); + GET_FLOAT_WORD (iy, y, NO_COND); + SET_FLOAT_WORD (x, (ix & 0x7fffffff) | (iy & 0x80000000), NO_COND); + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (copysignf, sf, sf) \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64sf_cos.c b/newlib/libm/machine/amdgcn/v64sf_cos.c new file mode 100644 index 0000000000..d675a5c524 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_cos.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/sf_cos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinef_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, cosf, v64sf x) +{ + return v64sf_sinef_aux (x, 1, __mask); +} + +DEF_VARIANTS (cosf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_cosh.c b/newlib/libm/machine/amdgcn/v64sf_cosh.c new file mode 100644 index 0000000000..9167d9e312 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_cosh.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/sf_cosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinehf_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, coshf, v64sf x) +{ + return v64sf_sinehf_aux (x, 1, __mask); +} + +DEF_VARIANTS (coshf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_erf.c b/newlib/libm/machine/amdgcn/v64sf_erf.c new file mode 100644 index 0000000000..d044f57f5d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_erf.c @@ -0,0 +1,172 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_erf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf, v64si); + +static const float +tiny = 1e-30, +half= 5.0000000000e-01, /* 0x3F000000 */ +one = 1.0000000000e+00, /* 0x3F800000 */ +two = 2.0000000000e+00, /* 0x40000000 */ + /* c = (subfloat)0.84506291151 */ +erx = 8.4506291151e-01, /* 0x3f58560b */ +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +efx = 1.2837916613e-01, /* 0x3e0375d4 */ +efx8= 1.0270333290e+00, /* 0x3f8375d4 */ +pp0 = 1.2837916613e-01, /* 0x3e0375d4 */ +pp1 = -3.2504209876e-01, /* 0xbea66beb */ +pp2 = -2.8481749818e-02, /* 0xbce9528f */ +pp3 = -5.7702702470e-03, /* 0xbbbd1489 */ +pp4 = -2.3763017452e-05, /* 0xb7c756b1 */ +qq1 = 3.9791721106e-01, /* 0x3ecbbbce */ +qq2 = 6.5022252500e-02, /* 0x3d852a63 */ +qq3 = 5.0813062117e-03, /* 0x3ba68116 */ +qq4 = 1.3249473704e-04, /* 0x390aee49 */ +qq5 = -3.9602282413e-06, /* 0xb684e21a */ +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */ +pa1 = 4.1485610604e-01, /* 0x3ed46805 */ +pa2 = -3.7220788002e-01, /* 0xbebe9208 */ +pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */ +pa4 = -1.1089469492e-01, /* 0xbde31cc2 */ +pa5 = 3.5478305072e-02, /* 0x3d1151b3 */ +pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */ +qa1 = 1.0642088205e-01, /* 0x3dd9f331 */ +qa2 = 5.4039794207e-01, /* 0x3f0a5785 */ +qa3 = 7.1828655899e-02, /* 0x3d931ae7 */ +qa4 = 1.2617121637e-01, /* 0x3e013307 */ +qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */ +qa6 = 1.1984500103e-02, /* 0x3c445aa3 */ +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +ra0 = -9.8649440333e-03, /* 0xbc21a093 */ +ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */ +ra2 = -1.0558626175e+01, /* 0xc128f022 */ +ra3 = -6.2375331879e+01, /* 0xc2798057 */ +ra4 = -1.6239666748e+02, /* 0xc322658c */ +ra5 = -1.8460508728e+02, /* 0xc3389ae7 */ +ra6 = -8.1287437439e+01, /* 0xc2a2932b */ +ra7 = -9.8143291473e+00, /* 0xc11d077e */ +sa1 = 1.9651271820e+01, /* 0x419d35ce */ +sa2 = 1.3765776062e+02, /* 0x4309a863 */ +sa3 = 4.3456588745e+02, /* 0x43d9486f */ +sa4 = 6.4538726807e+02, /* 0x442158c9 */ +sa5 = 4.2900814819e+02, /* 0x43d6810b */ +sa6 = 1.0863500214e+02, /* 0x42d9451f */ +sa7 = 6.5702495575e+00, /* 0x40d23f7c */ +sa8 = -6.0424413532e-02, /* 0xbd777f97 */ +/* + * Coefficients for approximation to erfc in [1/.35,28] + */ +rb0 = -9.8649431020e-03, /* 0xbc21a092 */ +rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */ +rb2 = -1.7757955551e+01, /* 0xc18e104b */ +rb3 = -1.6063638306e+02, /* 0xc320a2ea */ +rb4 = -6.3756646729e+02, /* 0xc41f6441 */ +rb5 = -1.0250950928e+03, /* 0xc480230b */ +rb6 = -4.8351919556e+02, /* 0xc3f1c275 */ +sb1 = 3.0338060379e+01, /* 0x41f2b459 */ +sb2 = 3.2579251099e+02, /* 0x43a2e571 */ +sb3 = 1.5367296143e+03, /* 0x44c01759 */ +sb4 = 3.1998581543e+03, /* 0x4547fdbb */ +sb5 = 2.5530502930e+03, /* 0x451f90ce */ +sb6 = 4.7452853394e+02, /* 0x43ed43a7 */ +sb7 = -2.2440952301e+01; /* 0xc1b38712 */ + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, erff, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >= 0x7f800000, cond) /* erf(nan)=nan */ + v64si i = (hx >> 31) << 1; + /* erf(+-inf)=+-1 */ + VECTOR_RETURN (__builtin_convertvector (1 - i, v64sf) + 1.0f / x, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3f580000, cond) /* |x|<0.84375 */ + VECTOR_IF2 (ix < 0x31800000, cond2, cond) /* |x|<2**-28 */ + VECTOR_IF2 (ix < 0x04000000, cond3, cond2) /* avoid underflow */ + VECTOR_RETURN (0.125f*(8.0f*x + efx8*x), cond3); + VECTOR_ENDIF + VECTOR_RETURN (x + efx*x, cond2); + VECTOR_ENDIF + + v64sf z = x*x; + v64sf r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + v64sf s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + v64sf y = r/s; + + VECTOR_RETURN (x + x*y, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3fa00000, cond) /* 0.84375 <= |x| < 1.25 */ + v64sf s = __builtin_gcn_fabsvf (x) - 1.0f; + v64sf P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + v64sf Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (erx + P/Q, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (-erx - P/Q, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (ix >= 0x40c00000, cond) /* inf>|x|>=6 */ + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0f - tiny), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (VECTOR_INIT (tiny - 1.0f), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + x = __builtin_gcn_fabsvf(x); + v64sf s = 1.0f / (x*x); + v64sf R, S; + VECTOR_IF (ix < 0x4036DB6E, cond) /* |x| < 1/0.35 */ + VECTOR_COND_MOVE (R, ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))), cond); + VECTOR_COND_MOVE (S, one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))), cond); + VECTOR_ELSE (cond) /* |x| >= 1/0.35 */ + VECTOR_COND_MOVE (R, rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))), cond); + VECTOR_COND_MOVE (S, one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))), cond); + VECTOR_ENDIF + + GET_FLOAT_WORD (ix, x, NO_COND); + v64sf z; + SET_FLOAT_WORD (z, ix & 0xfffff000, NO_COND); + v64sf r = v64sf_expf_aux (-z*z - 0.5625f, __mask) + * v64sf_expf_aux ((z-x)*(z+x) + R/S, __mask); + VECTOR_RETURN (one - r/x, hx >= 0); + VECTOR_RETURN (r/x - one, hx < 0); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (erff, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_exp.c b/newlib/libm/machine/amdgcn/v64sf_exp.c new file mode 100644 index 0000000000..1bb16051e0 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_exp.c @@ -0,0 +1,88 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/ef_exp.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float +huge = 1.0e+30, +twom100 = 7.8886090522e-31, /* 2**-100=0x0d800000 */ +ln2HI[2] ={ 6.9313812256e-01, /* 0x3f317180 */ + -6.9313812256e-01,}, /* 0xbf317180 */ +ln2LO[2] ={ 9.0580006145e-06, /* 0x3717f7d1 */ + -9.0580006145e-06,}, /* 0xb717f7d1 */ +invln2 = 1.4426950216e+00, /* 0x3fb8aa3b */ +P1 = 1.6666667163e-01, /* 0x3e2aaaab */ +P2 = -2.7777778450e-03, /* 0xbb360b61 */ +P3 = 6.6137559770e-05, /* 0x388ab355 */ +P4 = -1.6533901999e-06, /* 0xb5ddea0e */ +P5 = 4.1381369442e-08; /* 0x3331bb4c */ + +DEF_VS_MATH_FUNC (v64sf, expf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si k = VECTOR_INIT (0); + v64si sx; + GET_FLOAT_WORD(sx, x, NO_COND); + v64si xsb = (sx>>31)&1; /* sign bit of x */ + v64si hx = sx & 0x7fffffff; /* high word of |x| */ + + /* filter out non-finite argument */ + VECTOR_RETURN (x+x, FLT_UWORD_IS_NAN(hx)); /* NaN */ + VECTOR_RETURN (x, FLT_UWORD_IS_INFINITE(hx) & (xsb == 0)); + VECTOR_RETURN (VECTOR_INIT (0.0f), FLT_UWORD_IS_INFINITE (hx)); /* exp(+-inf)={inf,0} */ + VECTOR_RETURN (v64sf_math_oflowf (VECTOR_INIT (0)), sx > FLT_UWORD_LOG_MAX); /* overflow */ + VECTOR_RETURN (v64sf_math_uflowf (VECTOR_INIT (0)), (sx < 0) & (hx > FLT_UWORD_LOG_MIN)); /* underflow */ + + /* argument reduction */ + v64sf hi, lo; + VECTOR_IF (hx > 0x3eb17218, cond) /* if |x| > 0.5 ln2 */ + VECTOR_IF2 (hx < 0x3F851592, cond2, cond) /* and |x| < 1.5 ln2 */ + VECTOR_COND_MOVE (hi, x-ln2HI[0], cond2 & (xsb == 0)); + VECTOR_COND_MOVE (hi, x-ln2HI[1], cond2 & (xsb == 1)); + VECTOR_COND_MOVE (lo, VECTOR_INIT (ln2LO[0]), cond2 & (xsb == 0)); + VECTOR_COND_MOVE (lo, VECTOR_INIT (ln2LO[1]), cond2 & (xsb == 1)); + VECTOR_COND_MOVE (k, 1-xsb-xsb, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (k, __builtin_convertvector (invln2*x + 0.5f, v64si), cond2 & (xsb == 0)); + VECTOR_COND_MOVE (k, __builtin_convertvector (invln2*x - 0.5f, v64si), cond2 & (xsb == 1)); + v64sf t = __builtin_convertvector (k, v64sf); + VECTOR_COND_MOVE (hi, x - t*ln2HI[0], cond2); /* t*ln2HI is exact here */ + VECTOR_COND_MOVE (lo, t*ln2LO[0], cond2); + VECTOR_ENDIF + VECTOR_COND_MOVE (x, hi - lo, cond); + VECTOR_ELSEIF (hx < 0x34000000, cond) /* when |x|<2**-23 */ + VECTOR_RETURN (1.0f+x, cond & (huge+x > 1.0f)); /* trigger inexact */ + VECTOR_ENDIF + + /* x is now in primary range */ + v64sf t = x*x; + v64sf c = x - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + VECTOR_RETURN (1.0f - ((x*c)/(c-2.0f)-x), k==0); + v64sf y = 1.0f - ((lo-(x*c)/(2.0f-c))-hi); + VECTOR_IF (k >= -125, cond) + v64si hy; + GET_FLOAT_WORD(hy, y, cond); + SET_FLOAT_WORD(y,hy+(k<<23), cond); /* add k to y's exponent */ + VECTOR_RETURN (y, cond); + VECTOR_ELSE (cond) + v64si hy; + GET_FLOAT_WORD(hy, y, cond); + SET_FLOAT_WORD(y, hy+((k+100)<<23), cond); /* add k to y's exponent */ + VECTOR_RETURN (y*twom100, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (expf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_exp2.c b/newlib/libm/machine/amdgcn/v64sf_exp2.c new file mode 100644 index 0000000000..aa5fefd79a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_exp2.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +/* Based on newlib/libm/mathfp/sf_exp2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_powf_aux (v64sf, v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, exp2f, v64sf x) +{ + return v64sf_powf_aux (VECTOR_INIT (2.0f), x, __mask); +} + +DEF_VARIANTS (exp2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_finite.c b/newlib/libm/machine/amdgcn/v64sf_finite.c new file mode 100644 index 0000000000..b1efd5b6e0 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_finite.c @@ -0,0 +1,23 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/v64sf_finite.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64si, finitef, v64sf x) +{ + v64si ix = CAST_VECTOR (v64si, x); + ix &= 0x7fffffff; + return FLT_UWORD_IS_FINITE(ix); +} + +DEF_VARIANTS (finitef, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_fmod.c b/newlib/libm/machine/amdgcn/v64sf_fmod.c new file mode 100644 index 0000000000..ccbd0db764 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_fmod.c @@ -0,0 +1,133 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_fmod.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64sf, fmodf, v64sf x, v64sf y) +{ + FUNCTION_INIT(v64sf); + + v64si hx, hy, hz; + GET_FLOAT_WORD (hx, x, NO_COND); + GET_FLOAT_WORD (hy, y, NO_COND); + v64si sx = hx & 0x80000000; /* sign of x */ + hx ^=sx; /* |x| */ + hy &= 0x7fffffff; /* |y| */ + + v64sf zeroes = VECTOR_MERGE (VECTOR_INIT (-0.0f), + VECTOR_INIT (0.0f), + sx != 0); + + /* purge off exception values */ + VECTOR_IF ((hy == 0) | (hx >= 0x7f800000) + | (hy > 0x7f800000), cond) // y=0, or x not finite or y is NaN + VECTOR_RETURN ((x * y) / (x * y), cond); + VECTOR_ENDIF + VECTOR_IF (hx < hy, cond) // |x|<|y| return x + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF (hx == hy, cond) + VECTOR_RETURN (zeroes, hx == hy); // |x|=|y| return x*0 + VECTOR_ENDIF + + /* determine ix = ilogb(x) */ + v64si ix; + VECTOR_IF (hx < 0x00800000, cond) // subnormal x + ix = VECTOR_INIT (-126); + for (v64si i = (hx << 8); + !ALL_ZEROES_P (cond & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond & (i > 0)); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (ix, (hx >> 23) - 127, cond); + VECTOR_ENDIF + + /* determine iy = ilogb(y) */ + v64si iy; + VECTOR_IF (hy < 0x00800000, cond) // subnormal y + iy = VECTOR_INIT (-126); + for (v64si i = (hy << 8); !ALL_ZEROES_P (cond & (i >= 0)); i <<= 1) + VECTOR_COND_MOVE (iy, iy - 1, cond & (i >= 0)); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (iy, (hy >> 23) - 127, cond); + VECTOR_ENDIF + +/* set up {hx,lx}, {hy,ly} and align y to x */ + VECTOR_IF (ix >= -126, cond) + VECTOR_COND_MOVE (hx, 0x00800000 | (0x007fffff & hx), cond); + VECTOR_ELSE (cond) // subnormal x, shift x to normal + { + v64si n = -126 - ix; + VECTOR_COND_MOVE (hx, hx << n, cond); + } + VECTOR_ENDIF + VECTOR_IF (iy >= -126, cond) + VECTOR_COND_MOVE (hy, 0x00800000 | (0x007fffff & hy), cond); + VECTOR_ELSE (cond) // subnormal y, shift y to normal + { + v64si n = -126 - iy; + VECTOR_COND_MOVE (hy, hy << n, cond); + } + VECTOR_ENDIF + +/* fix point fmod */ + v64si n = ix - iy; + v64si cond = n != 0; + + while (!ALL_ZEROES_P (cond)) + { + hz = hx - hy; + VECTOR_IF2 (hz < 0, cond2, cond) + VECTOR_COND_MOVE (hx, hx + hx, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_IF2 (hz == 0, cond3, cond2) // return sign(x)*0 + VECTOR_RETURN (zeroes, cond3); + VECTOR_ELSE2 (cond3, cond2) + VECTOR_COND_MOVE (hx, hz + hz, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + n += cond; // Active lanes should be -1 + cond &= (n != 0); + } + + hz = hx - hy; + VECTOR_COND_MOVE (hx, hz, hz >= 0); + + /* convert back to floating value and restore the sign */ + VECTOR_RETURN (zeroes, hx == 0); // return sign(x)*0 + + cond = hx < 0x00800000; + while (!ALL_ZEROES_P (cond)) // normalize x + { + VECTOR_COND_MOVE (hx, hx + hx, cond); + iy += cond; // Active lanes should be -1 + + cond &= (hx < 0x00800000); + } + VECTOR_IF (iy >= -126, cond) // normalize output + VECTOR_COND_MOVE (hx, (hx - 0x00800000) | ((iy + 127) << 23), cond); + SET_FLOAT_WORD (x, hx | sx, cond); + VECTOR_ELSE (cond) // subnormal output */ + n = -126 - iy; + hx >>= n; + SET_FLOAT_WORD (x, hx | sx, cond); + x *= VECTOR_INIT (1.0f); /* create necessary signal */ + VECTOR_ENDIF + + VECTOR_RETURN (x, NO_COND); /* exact output */ + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (fmodf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_gamma.c b/newlib/libm/machine/amdgcn/v64sf_gamma.c new file mode 100644 index 0000000000..93f9172789 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_gamma.c @@ -0,0 +1,10 @@ +#include "amdgcnmach.h" + +v64sf v64sf_lgammaf_aux (v64sf x, v64si __mask); + +DEF_VS_MATH_FUNC (v64sf, gammaf, v64sf x) +{ + return v64sf_lgammaf_aux(x, __mask); +} + +DEF_VARIANTS (gammaf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_hypot.c b/newlib/libm/machine/amdgcn/v64sf_hypot.c new file mode 100644 index 0000000000..20062cdf51 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_hypot.c @@ -0,0 +1,104 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/ef_hypot.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sqrtf_aux (v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, hypotf, v64sf x, v64sf y) +{ + FUNCTION_INIT (v64sf); + + v64sf a = x; + v64sf b = y; + + v64si ha; + GET_FLOAT_WORD (ha, x, NO_COND); + ha &= 0x7fffffffL; + v64si hb; + GET_FLOAT_WORD (hb, y, NO_COND); + hb &= 0x7fffffffL; + + VECTOR_IF (hb > ha, cond) + v64si j = ha; + VECTOR_COND_MOVE (ha, hb, cond); + VECTOR_COND_MOVE (hb, j, cond); + VECTOR_ENDIF + SET_FLOAT_WORD (a, ha, NO_COND); /* a <- |a| */ + SET_FLOAT_WORD (b, hb, NO_COND); /* b <- |b| */ + VECTOR_IF((ha - hb) > 0xf000000L, cond) // x/y > 2**30 */ + VECTOR_RETURN (a + b, cond); + VECTOR_ENDIF + + v64si k = VECTOR_INIT (0); + + VECTOR_IF (ha > 0x58800000L, cond) /* a>2**50 */ + VECTOR_IF2 (ha >= 0x7f800000L, cond2, cond) /* Inf or NaN */ + v64sf w = a + b; // for sNaN */ + VECTOR_COND_MOVE (w, a, cond2 & (ha == 0x7f800000)); + VECTOR_COND_MOVE (w, b, cond2 & (hb == 0x7f800000)); + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + /* scale a and b by 2**-60 */ + VECTOR_COND_MOVE (ha, ha - 0x5d800000, cond); + VECTOR_COND_MOVE (hb, hb - 0x5d800000, cond); + VECTOR_COND_MOVE (k, k + 60, cond); + SET_FLOAT_WORD (a, ha, cond); + SET_FLOAT_WORD (b, hb, cond); + VECTOR_ENDIF + VECTOR_IF (hb < 0x26800000, cond) /* b < 2**-50 */ + VECTOR_IF2 (hb <= 0x007fffff, cond2, cond) /* subnormal b or 0 */ + VECTOR_RETURN (a, cond2 & (hb == 0)); + /* t1=2^126 */ + v64sf t1; + SET_FLOAT_WORD (t1, VECTOR_INIT (0x3f000000), cond2); + VECTOR_COND_MOVE (b, b * t1, cond2); + VECTOR_COND_MOVE (a, a * t1, cond2); + VECTOR_COND_MOVE (k, k - 126, cond2); + VECTOR_ELSE2 (cond2, cond) /* scale a and b by 2^60 */ + VECTOR_COND_MOVE (ha, ha + 0x5d800000, cond2); /* a *= 2^60 */ + VECTOR_COND_MOVE (hb, hb + 0x5d800000, cond2); /* b *= 2^60 */ + VECTOR_COND_MOVE (k, k - 60, cond2); + SET_FLOAT_WORD (a, ha, cond2); + SET_FLOAT_WORD (b, hb, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + /* medium size a and b */ + v64sf w = a - b; + VECTOR_IF (w > b, cond) + v64sf t1; + SET_FLOAT_WORD (t1, ha & 0xfffff000, cond); + v64sf t2 = a - t1; + VECTOR_COND_MOVE (w, v64sf_sqrtf_aux (t1*t1 - (b*(-b) - t2 * (a + t1)), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (a, a+a, cond); + v64sf y1; + SET_FLOAT_WORD (y1, hb & 0xfffff000, cond); + v64sf y2 = b - y1; + v64sf t1; + SET_FLOAT_WORD (t1, ha + 0x00800000, cond); + v64sf t2 = a - t1; + VECTOR_COND_MOVE (w, v64sf_sqrtf_aux (t1*y1 - (w*(-w) - (t1*y2 + t2*b)), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (k != 0, cond) + v64sf t1; + SET_FLOAT_WORD (t1, 0x3f800000 + (k << 23), cond); + VECTOR_RETURN (t1 * w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (hypotf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_ilogb.c b/newlib/libm/machine/amdgcn/v64sf_ilogb.c new file mode 100644 index 0000000000..fb5ef76e4e --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_ilogb.c @@ -0,0 +1,42 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_ilogb.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64si, ilogbf, v64sf x) +{ + FUNCTION_INIT(v64si); + + v64si hx, ix; + GET_FLOAT_WORD (hx, x, NO_COND); + hx &= 0x7fffffff; + VECTOR_IF (FLT_UWORD_IS_ZERO (hx), cond) + VECTOR_RETURN (VECTOR_INIT (-__INT_MAX__), cond); // FP_ILOGB0 + VECTOR_ENDIF + VECTOR_IF (FLT_UWORD_IS_SUBNORMAL (hx), cond) + ix = VECTOR_INIT (-126); + for (v64si i = (hx << 8); + !ALL_ZEROES_P (cond & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond & (i > 0)); + VECTOR_RETURN (ix, cond); + VECTOR_ELSEIF (~FLT_UWORD_IS_FINITE (hx), cond) + VECTOR_RETURN (VECTOR_INIT (__INT_MAX__), cond); + VECTOR_ENDIF + + VECTOR_RETURN ((hx >> 23) - 127, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (ilogbf, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_isnan.c b/newlib/libm/machine/amdgcn/v64sf_isnan.c new file mode 100644 index 0000000000..d18d985a3f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_isnan.c @@ -0,0 +1,23 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_isnan.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64si, isnanf, v64sf x) +{ + v64si ix = CAST_VECTOR (v64si, x); + ix &= 0x7fffffff; + return FLT_UWORD_IS_NAN (ix); +} + +DEF_VARIANTS (isnanf, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_ispos.c b/newlib/libm/machine/amdgcn/v64sf_ispos.c new file mode 100644 index 0000000000..d790a76a5b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_ispos.c @@ -0,0 +1,11 @@ +/* Based on newlib/libm/mathfp/sf_ispos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64sf_isposf (v64sf x) +{ + v64si wx = CAST_VECTOR (v64si, x); + + return (wx & 0x80000000) == 0; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_lgamma.c b/newlib/libm/machine/amdgcn/v64sf_lgamma.c new file mode 100644 index 0000000000..8028626c60 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_lgamma.c @@ -0,0 +1,30 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/wf_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_finitef_aux (v64sf x, v64si __mask); +v64sf v64sf_lgammaf_r_aux (v64sf x, v64si *signgamp, v64si __mask); + +DEF_VS_MATH_FUNC (v64sf, lgammaf, v64sf x) +{ + v64sf y = v64sf_lgammaf_r_aux(x, &(_REENT_V64SI_SIGNGAM(_V64_REENT)), __mask); + if (ALL_ZEROES_P(v64sf_finitef_aux(y, __mask)) & !ALL_ZEROES_P(v64sf_finitef_aux(x, __mask))) { + /* lgamma(finite) overflow */ + errno = ERANGE; + } + return y; +} + +DEF_VARIANTS (lgammaf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c b/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c new file mode 100644 index 0000000000..9288235998 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c @@ -0,0 +1,286 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/erf_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float two23= 8.3886080000e+06, /* 0x4b000000 */ +half= 5.0000000000e-01, /* 0x3f000000 */ +one = 1.0000000000e+00, /* 0x3f800000 */ +pi = 3.1415927410e+00, /* 0x40490fdb */ +a0 = 7.7215664089e-02, /* 0x3d9e233f */ +a1 = 3.2246702909e-01, /* 0x3ea51a66 */ +a2 = 6.7352302372e-02, /* 0x3d89f001 */ +a3 = 2.0580807701e-02, /* 0x3ca89915 */ +a4 = 7.3855509982e-03, /* 0x3bf2027e */ +a5 = 2.8905137442e-03, /* 0x3b3d6ec6 */ +a6 = 1.1927076848e-03, /* 0x3a9c54a1 */ +a7 = 5.1006977446e-04, /* 0x3a05b634 */ +a8 = 2.2086278477e-04, /* 0x39679767 */ +a9 = 1.0801156895e-04, /* 0x38e28445 */ +a10 = 2.5214456400e-05, /* 0x37d383a2 */ +a11 = 4.4864096708e-05, /* 0x383c2c75 */ +tc = 1.4616321325e+00, /* 0x3fbb16c3 */ +tf = -1.2148628384e-01, /* 0xbdf8cdcd */ +/* tt = -(tail of tf) */ +tt = 6.6971006518e-09, /* 0x31e61c52 */ +t0 = 4.8383611441e-01, /* 0x3ef7b95e */ +t1 = -1.4758771658e-01, /* 0xbe17213c */ +t2 = 6.4624942839e-02, /* 0x3d845a15 */ +t3 = -3.2788541168e-02, /* 0xbd064d47 */ +t4 = 1.7970675603e-02, /* 0x3c93373d */ +t5 = -1.0314224288e-02, /* 0xbc28fcfe */ +t6 = 6.1005386524e-03, /* 0x3bc7e707 */ +t7 = -3.6845202558e-03, /* 0xbb7177fe */ +t8 = 2.2596477065e-03, /* 0x3b141699 */ +t9 = -1.4034647029e-03, /* 0xbab7f476 */ +t10 = 8.8108185446e-04, /* 0x3a66f867 */ +t11 = -5.3859531181e-04, /* 0xba0d3085 */ +t12 = 3.1563205994e-04, /* 0x39a57b6b */ +t13 = -3.1275415677e-04, /* 0xb9a3f927 */ +t14 = 3.3552918467e-04, /* 0x39afe9f7 */ +u0 = -7.7215664089e-02, /* 0xbd9e233f */ +u1 = 6.3282704353e-01, /* 0x3f2200f4 */ +u2 = 1.4549225569e+00, /* 0x3fba3ae7 */ +u3 = 9.7771751881e-01, /* 0x3f7a4bb2 */ +u4 = 2.2896373272e-01, /* 0x3e6a7578 */ +u5 = 1.3381091878e-02, /* 0x3c5b3c5e */ +v1 = 2.4559779167e+00, /* 0x401d2ebe */ +v2 = 2.1284897327e+00, /* 0x4008392d */ +v3 = 7.6928514242e-01, /* 0x3f44efdf */ +v4 = 1.0422264785e-01, /* 0x3dd572af */ +v5 = 3.2170924824e-03, /* 0x3b52d5db */ +s0 = -7.7215664089e-02, /* 0xbd9e233f */ +s1 = 2.1498242021e-01, /* 0x3e5c245a */ +s2 = 3.2577878237e-01, /* 0x3ea6cc7a */ +s3 = 1.4635047317e-01, /* 0x3e15dce6 */ +s4 = 2.6642270386e-02, /* 0x3cda40e4 */ +s5 = 1.8402845599e-03, /* 0x3af135b4 */ +s6 = 3.1947532989e-05, /* 0x3805ff67 */ +r1 = 1.3920053244e+00, /* 0x3fb22d3b */ +r2 = 7.2193557024e-01, /* 0x3f38d0c5 */ +r3 = 1.7193385959e-01, /* 0x3e300f6e */ +r4 = 1.8645919859e-02, /* 0x3c98bf54 */ +r5 = 7.7794247773e-04, /* 0x3a4beed6 */ +r6 = 7.3266842264e-06, /* 0x36f5d7bd */ +w0 = 4.1893854737e-01, /* 0x3ed67f1d */ +w1 = 8.3333335817e-02, /* 0x3daaaaab */ +w2 = -2.7777778450e-03, /* 0xbb360b61 */ +w3 = 7.9365057172e-04, /* 0x3a500cfd */ +w4 = -5.9518753551e-04, /* 0xba1c065c */ +w5 = 8.3633989561e-04, /* 0x3a5b3dd2 */ +w6 = -1.6309292987e-03; /* 0xbad5c4e8 */ +static const float zero= 0.0000000000e+00; + +v64sf v64sf_cosf_aux (v64sf x, v64si __mask); +v64sf v64sf_logf_aux (v64sf x, v64si __mask); +v64sf v64sf_sinf_aux (v64sf x, v64si __mask); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_floorvf) \ + && __has_builtin (__builtin_gcn_fabsvf) + +static v64sf +v64sf_sin_pif (v64sf x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64sf); + + v64sf y, z; + v64si n, ix; + + GET_FLOAT_WORD (ix, x, NO_COND); + ix &= 0x7fffffff; + + VECTOR_IF (ix < 0x3e800000, cond) + VECTOR_RETURN (v64sf_sinf_aux (pi * x, __mask), cond); + VECTOR_ENDIF + y = -x; /* x is assume negative */ + + /* + * argument reduction, make sure inexact flag not raised if input + * is an integer + */ + z = __builtin_gcn_floorvf (y); + VECTOR_IF (z != y, cond) + /* inexact anyway */ + VECTOR_COND_MOVE(y, y * 0.5F, cond); + VECTOR_COND_MOVE(y, 2.0F * (y - __builtin_gcn_floorvf (y)), cond); /* y = |x| mod 2.0 */ + VECTOR_COND_MOVE(n, __builtin_convertvector(y * 4.0F, v64si), cond); + VECTOR_ELSE (cond) + VECTOR_IF2 (ix >= 0x4b800000, cond2, cond) + VECTOR_COND_MOVE(y, VECTOR_INIT(zero), cond2); + VECTOR_COND_MOVE(n, VECTOR_INIT(0), cond2); /* y must be even */ + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE(z, y + two23 /* exact */, cond2 & (ix < 0x4b000000)); + GET_FLOAT_WORD (n, z, cond2); + VECTOR_COND_MOVE(n, n & 1, cond2); + VECTOR_COND_MOVE(y, __builtin_convertvector(n, v64sf), cond2); + VECTOR_COND_MOVE(n, n << 2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (n == 0, cond) + VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * y, __mask), cond); + VECTOR_ELSEIF (n == 1 | n == 2, cond) + VECTOR_COND_MOVE(y, v64sf_cosf_aux (pi * (0.5F - y), __mask), cond); + VECTOR_ELSEIF (n == 3 | n == 4, cond) + VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * (VECTOR_INIT(one) - y), __mask), cond); + VECTOR_ELSEIF (n == 5 | n == 6, cond) + VECTOR_COND_MOVE(y, -v64sf_cosf_aux (pi * (y - 1.5F), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * (y - 2.0F), __mask), cond); + VECTOR_ENDIF + + VECTOR_RETURN(-y, NO_COND); + FUNCTION_RETURN; +} + +DEF_VS_MATH_FUNC (v64sf, lgammaf_r, v64sf x, v64si *signgamp) +{ + FUNCTION_INIT (v64sf); + + v64sf t,y,z,nadj = VECTOR_INIT(0.0F),p,p1,p2,p3,q,r,w; + v64si i,hx,ix; + + GET_FLOAT_WORD(hx,x,NO_COND); + + /* purge off +-inf, NaN, +-0, and negative arguments */ + *signgamp = VECTOR_INIT(1); + ix = hx&0x7fffffff; + VECTOR_IF(ix>=0x7f800000, cond) + VECTOR_RETURN (x*x, cond); + VECTOR_ENDIF + VECTOR_IF(ix==0, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (hx<0)); + VECTOR_RETURN(one/(x-x), cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x30800000, cond) /* |x|<2**-30, return -log(|x|) */ + VECTOR_IF2(hx<0, cond2, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond); + VECTOR_RETURN (-v64sf_logf_aux(-x, __mask), cond2); + VECTOR_ELSE2(cond2, cond) + VECTOR_RETURN (-v64sf_logf_aux(x, __mask), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (hx < 0, cond) + VECTOR_IF2(ix>=0x4b000000, cond2, cond) /* |x|>=2**23, must be -integer */ + VECTOR_RETURN(one/(x-x), cond2); + VECTOR_ENDIF + VECTOR_COND_MOVE (t, v64sf_sin_pif (x), cond); + VECTOR_IF2(t==zero, cond2, cond) + /* tgamma wants NaN instead of INFINITY */ + VECTOR_RETURN(one/(x-x), cond2); /* -integer */ + VECTOR_ENDIF + VECTOR_COND_MOVE(nadj, v64sf_logf_aux(VECTOR_INIT(pi)/__builtin_gcn_fabsvf(t*x), __mask), cond); + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (t < zero)); + VECTOR_COND_MOVE(x, -x, cond); + VECTOR_ENDIF + + /* purge off 1 and 2 */ + VECTOR_IF(ix==0x3f800000|ix==0x40000000, cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(0.0F), cond); + /* for x < 2.0 */ + VECTOR_ELSEIF(ix<0x40000000, cond) + VECTOR_IF2(ix<=0x3f666666, cond2, cond) + /* lgamma(x) = lgamma(x+1)-log(x) */ + r = -v64sf_logf_aux(x, __mask); + VECTOR_IF2(ix>=0x3f3b4a20, cond3, cond2) + VECTOR_COND_MOVE(y, one-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3e6d3308, cond3, cond2) + VECTOR_COND_MOVE(y, x-(tc-one), cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ELSE2(cond2, cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(zero), cond2); + VECTOR_IF2(ix>=0x3fdda618, cond3, cond2) /* [1.7316,2] */ + VECTOR_COND_MOVE(y, VECTOR_INIT(2.0F)-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3F9da620, cond3, cond2) /* [1.23,1.73] */ + VECTOR_COND_MOVE(y, x-tc, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x-one, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF2(i==0, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(p1, a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))), cond2); + VECTOR_COND_MOVE(p2, z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))), cond2); + VECTOR_COND_MOVE(p, y*p1+p2, cond2); + VECTOR_COND_MOVE(r, r + (p-(float)0.5*y), cond2); + VECTOR_ELSEIF2(i==1, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(w, z*y, cond2); + VECTOR_COND_MOVE(p1, t0+w*(t3+w*(t6+w*(t9 +w*t12))), cond2); /* parallel comp */ + VECTOR_COND_MOVE(p2, t1+w*(t4+w*(t7+w*(t10+w*t13))), cond2); + VECTOR_COND_MOVE(p3, t2+w*(t5+w*(t8+w*(t11+w*t14))), cond2); + VECTOR_COND_MOVE(p, z*p1-(tt-w*(p2+y*p3)), cond2); + VECTOR_COND_MOVE(r, r + (tf + p), cond2); + VECTOR_ELSEIF2(i==2, cond2, cond) + VECTOR_COND_MOVE(p1, y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))), cond2); + VECTOR_COND_MOVE(p2, one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))), cond2); + VECTOR_COND_MOVE(r, r + (-(float)0.5*y + p1/p2), cond2); + VECTOR_ENDIF + VECTOR_ELSEIF(ix<0x41000000, cond) + /* x < 8.0 */ + VECTOR_COND_MOVE(i, __builtin_convertvector(x, v64si), cond); + VECTOR_COND_MOVE(t, VECTOR_INIT(zero), cond); + VECTOR_COND_MOVE(y, x-__builtin_convertvector(i, v64sf), cond); + VECTOR_COND_MOVE(p, y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))), cond); + VECTOR_COND_MOVE(q, one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))), cond); + VECTOR_COND_MOVE(r, half*y+p/q, cond); + VECTOR_COND_MOVE(z, VECTOR_INIT(one), cond); /* lgamma(1+s) = log(s) + lgamma(s) */ + VECTOR_IF2(i==7, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)6.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i==7 | i==6, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)5.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=5, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)4.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=4, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)3.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=3, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)2.0), cond2); + VECTOR_COND_MOVE(r, r + v64sf_logf_aux(z, __mask), cond2); + VECTOR_ENDIF + /* 8.0 <= x < 2**58 */ + VECTOR_ELSEIF(ix < 0x5c800000, cond) + VECTOR_COND_MOVE(t, v64sf_logf_aux(x, __mask), cond); + VECTOR_COND_MOVE(z, one/x, cond); + VECTOR_COND_MOVE(y, z*z, cond); + VECTOR_COND_MOVE(w, w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))), cond); + VECTOR_COND_MOVE(r, (x-half)*(t-one)+w, cond); + VECTOR_ELSE(cond) + /* 2**58 <= x <= inf */ + VECTOR_COND_MOVE(r, x*(v64sf_logf_aux(x, __mask)-one), cond); + VECTOR_ENDIF + VECTOR_IF(hx<0, cond) + VECTOR_COND_MOVE(r, nadj - r, cond); + VECTOR_ENDIF + + VECTOR_RETURN(r, NO_COND); + FUNCTION_RETURN; +} + +#endif \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64sf_log.c b/newlib/libm/machine/amdgcn/v64sf_log.c new file mode 100644 index 0000000000..1414913189 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_log.c @@ -0,0 +1,82 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_logarithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_finitef_aux (v64sf, v64si); +v64si v64sf_isnanf_aux (v64sf, v64si); + +static const float a[] = { -0.64124943423745581147e+02, + 0.16383943563021534222e+02, + -0.78956112887481257267 }; +static const float b[] = { -0.76949932108494879777e+03, + 0.31203222091924532844e+03, + -0.35667977739034646171e+02 }; +static const float C1 = 0.693145752; +static const float C2 = 1.428606820e-06; + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpvf_mant) \ + && __has_builtin (__builtin_gcn_frexpvf_exp) + +DEF_VS_MATH_FUNC (v64sf, logf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + /* Check for domain/range errors here. */ + VECTOR_IF (x == 0.0f, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (-z_infinity_f.f), cond); + VECTOR_ELSEIF (x < 0.0f, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); + VECTOR_ELSEIF (~v64sf_finitef_aux (x, __mask), cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_notanum_f.f), + VECTOR_INIT (z_infinity_f.f), + v64sf_isnanf_aux (x, __mask)), + cond); + VECTOR_ENDIF + + /* Get the exponent and mantissa where x = f * 2^N. */ + v64sf f = __builtin_gcn_frexpvf_mant (x); + v64si N = __builtin_gcn_frexpvf_exp (x); + + v64sf z = f - 0.5f; + + VECTOR_IF (f > (float) __SQRT_HALF, cond) + VECTOR_COND_MOVE (z, (z - 0.5f) / (f * 0.5f + 0.5f), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (N, N - 1, cond); + VECTOR_COND_MOVE (z, z / (z * 0.5f + 0.5f), cond); + VECTOR_ENDIF + + v64sf w = z * z; + + /* Use Newton's method with 4 terms. */ + z += z * w * ((a[2] * w + a[1]) * w + a[0]) / (((w + b[2]) * w + b[1]) * w + b[0]); + + v64sf Nf = __builtin_convertvector(N, v64sf); + VECTOR_COND_MOVE (z, (Nf * C2 + z) + Nf * C1, N != 0); + + VECTOR_RETURN (z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (logf, sf, sf) + +DEF_VS_MATH_FUNC (v64sf, log1pf, v64sf x) +{ + /* TODO: Implement algorithm with better precision. */ + return v64sf_logf_aux (1 + x, __mask); +} + +DEF_VARIANTS (log1pf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_log10.c b/newlib/libm/machine/amdgcn/v64sf_log10.c new file mode 100644 index 0000000000..12571b1c61 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_log10.c @@ -0,0 +1,14 @@ +/* Based on newlib/libm/mathfp/sf_log10.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); + +static const float C3 = 0.4342944819; + +DEF_VS_MATH_FUNC (v64sf, log10f, v64sf x) +{ + return v64sf_logf_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log10f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_log2.c b/newlib/libm/machine/amdgcn/v64sf_log2.c new file mode 100644 index 0000000000..74c9c4eb8c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_log2.c @@ -0,0 +1,12 @@ +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); + +static const float C3 = 1.4426950408889634073599246810019; + +DEF_VS_MATH_FUNC (v64sf, log2f, v64sf x) +{ + return v64sf_logf_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_modf.c b/newlib/libm/machine/amdgcn/v64sf_modf.c new file mode 100644 index 0000000000..ed56ef3be6 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_modf.c @@ -0,0 +1,55 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_modf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_numtestf (v64sf); + +DEF_VS_MATH_FUNC (v64sf, modff, v64sf x, v64sf *iptr) +{ + FUNCTION_INIT (v64sf); + v64sf ret_i; + + v64si i0; + GET_FLOAT_WORD (i0, x, NO_COND); + v64si j0 = ((i0 >> 23) & 0xff) - 0x7f; /* exponent of x */ + v64sf zero; + SET_FLOAT_WORD (zero, i0 & 0x80000000,NO_COND); + + VECTOR_IF (j0 < 23, cond) /* integer part in x*/ + VECTOR_IF2 (j0 < 0, cond2, cond) /* |x|<1 */ + VECTOR_COND_MOVE (ret_i, zero, cond2); + VECTOR_RETURN (x, cond2); + VECTOR_ELSE2 (cond2, cond) + v64si i = (0x007fffff) >> j0; + + VECTOR_IF2 ((i0 & i) == 0, cond3, cond2) /* x is integral */ + VECTOR_COND_MOVE (ret_i, x, cond3); + VECTOR_RETURN (zero, cond3); + VECTOR_ELSE2 (cond3, cond2) + SET_FLOAT_WORD (ret_i, i0 & ~i, cond3); + VECTOR_RETURN (x - ret_i, cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ELSE (cond) /* no fraction part */ + VECTOR_COND_MOVE (ret_i, x, cond); + VECTOR_IF2 (v64sf_numtestf (x) == NAN, cond2, cond) + VECTOR_COND_MOVE (ret_i, x + x, cond2); + VECTOR_RETURN (ret_i, cond2); /* x is NaN, return NaN */ + VECTOR_ENDIF + VECTOR_RETURN (zero, cond); /* return +- 0 */ + VECTOR_ENDIF + + *iptr = ret_i; + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_numtest.c b/newlib/libm/machine/amdgcn/v64sf_numtest.c new file mode 100644 index 0000000000..2dc670d7ba --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_numtest.c @@ -0,0 +1,30 @@ +/* Based on newlib/libm/mathfp/sf_numtest.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64sf_numtestf (v64sf x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64si); + + v64si wx; + GET_FLOAT_WORD (wx, x, NO_COND); + v64si exp = (wx & 0x7f800000) >> 23; + + /* Check for a zero input. */ + VECTOR_RETURN (VECTOR_INIT (0), x == 0.0); + + /* Check for not a number or infinity. */ + VECTOR_IF (exp == 0xff, cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (NAN), VECTOR_INIT (INF), + wx & 0x7fffff), + cond); + /* Otherwise it's a finite value. */ + VECTOR_ELSE (cond) + VECTOR_RETURN (VECTOR_INIT (NUM), cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_pow.c b/newlib/libm/machine/amdgcn/v64sf_pow.c new file mode 100644 index 0000000000..2a404a9e5a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_pow.c @@ -0,0 +1,292 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/ef_pow.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float +bp[] = {1.0, 1.5,}, +dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */ +dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */ +zero = 0.0, +one = 1.0, +two = 2.0, +two24 = 16777216.0, /* 0x4b800000 */ + /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ +L1 = 6.0000002384e-01, /* 0x3f19999a */ +L2 = 4.2857143283e-01, /* 0x3edb6db7 */ +L3 = 3.3333334327e-01, /* 0x3eaaaaab */ +L4 = 2.7272811532e-01, /* 0x3e8ba305 */ +L5 = 2.3066075146e-01, /* 0x3e6c3255 */ +L6 = 2.0697501302e-01, /* 0x3e53f142 */ +P1 = 1.6666667163e-01, /* 0x3e2aaaab */ +P2 = -2.7777778450e-03, /* 0xbb360b61 */ +P3 = 6.6137559770e-05, /* 0x388ab355 */ +P4 = -1.6533901999e-06, /* 0xb5ddea0e */ +P5 = 4.1381369442e-08, /* 0x3331bb4c */ +lg2 = 6.9314718246e-01, /* 0x3f317218 */ +lg2_h = 6.93145752e-01, /* 0x3f317200 */ +lg2_l = 1.42860654e-06, /* 0x35bfbe8c */ +ovt = 4.2995665694e-08, /* -(128-log2(ovfl+.5ulp)) */ +cp = 9.6179670095e-01, /* 0x3f76384f =2/(3ln2) */ +cp_h = 9.6179199219e-01, /* 0x3f763800 =head of cp */ +cp_l = 4.7017383622e-06, /* 0x369dc3a0 =tail of cp_h */ +ivln2 = 1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */ +ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/ +ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/ + +v64sf v64sf_sqrtf_aux (v64sf, v64si); +v64sf v64sf_scalbnf_aux (v64sf, v64si, v64si); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, powf, v64sf x, v64sf y) +{ + FUNCTION_INIT (v64sf); + + v64si hx, hy; + GET_FLOAT_WORD (hx,x, NO_COND); + GET_FLOAT_WORD (hy,y, NO_COND); + v64si ix = hx&0x7fffffff; + v64si iy = hy&0x7fffffff; + + /* y==zero: x**0 = 1 */ + VECTOR_IF (FLT_UWORD_IS_ZERO(iy), cond) + VECTOR_RETURN (x + y, cond & v64sf_issignalingf_inline(x)); + VECTOR_RETURN (VECTOR_INIT (1.0f), cond); + VECTOR_ENDIF + + /* x|y==NaN return NaN unless x==1 then return 1 */ + VECTOR_IF (FLT_UWORD_IS_NAN(ix) | FLT_UWORD_IS_NAN(iy), cond) + VECTOR_IF2 (hx==0x3f800000 & ~v64sf_issignalingf_inline(y), cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0f), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (x + y, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + v64si yisint = VECTOR_INIT (0); + + VECTOR_IF (hx < 0, cond) + VECTOR_IF2 (iy >= 0x4b800000, cond2, cond) + VECTOR_COND_MOVE (yisint, VECTOR_INIT (2), cond2); /* even integer y */ + VECTOR_ELSEIF2 (iy >= 0x3f800000, cond2, cond) + v64si k = (iy>>23)-0x7f; /* exponent */ + v64si j = iy>>(23-k); + VECTOR_COND_MOVE (yisint, 2-(j&1), cond2 & (j<<(23-k))==iy); + VECTOR_ENDIF + VECTOR_ENDIF + + /* special value of y */ + VECTOR_IF (FLT_UWORD_IS_INFINITE(iy), cond) /* y is +-inf */ + VECTOR_IF2 (ix==0x3f800000, cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0f), cond2); /* +-1**+-inf = 1 */ + VECTOR_ELSEIF2 (ix > 0x3f800000, cond2, cond) /* (|x|>1)**+-inf = inf,0 */ + VECTOR_RETURN (y, cond2 & (hy >= 0)); + VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); + VECTOR_ELSE2 (cond2, cond) /* (|x|<1)**-,+inf = inf,0 */ + VECTOR_RETURN (-y, cond2 & (hy<0)); + VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (iy==0x3f800000, cond) /* y is +-1 */ + VECTOR_RETURN (VECTOR_INIT (1.0f) / x, cond & (hy<0)); + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + VECTOR_RETURN (x*x, hy==0x40000000); /* y is 2 */ + /* y is 0.5 */ + /* x >= +0 */ + VECTOR_RETURN (v64sf_sqrtf_aux (x, __mask), (hy==0x3f000000) & (hx >= 0)); + + v64sf ax = __builtin_gcn_fabsvf(x); + /* special value of x */ + VECTOR_IF (FLT_UWORD_IS_INFINITE(ix)|FLT_UWORD_IS_ZERO(ix)|ix==0x3f800000, cond) + v64sf z = ax; /*x is +-0,+-inf,+-1*/ + VECTOR_COND_MOVE (z, VECTOR_INIT (1.0f) / z, cond & (hy < 0)); /* z = (1/|x|) */ + VECTOR_IF2 (hx<0, cond2, cond) + VECTOR_IF2 (((ix-0x3f800000)|yisint)==0, cond3, cond2) + /* (-1)**non-int is NaN */ + VECTOR_COND_MOVE (z, (z-z)/(z-z), cond3); + VECTOR_ELSEIF2 (yisint==1, cond3, cond2) + /* (x<0)**odd = -(|x|**odd) */ + VECTOR_COND_MOVE (z, -z, cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_RETURN (z, cond); + VECTOR_ENDIF + + /* (x<0)**(non-int) is NaN */ + VECTOR_RETURN ((x-x)/(x-x), ((((hx >> 31) & 1) - 1)|yisint)==0); + + v64sf t1, t2; + + /* |y| is huge */ + VECTOR_IF (iy>0x4d000000, cond) /* if |y| > 2**27 */ + /* over/underflow if x is not close to one */ + VECTOR_IF2(ix<0x3f7ffff4, cond2, cond) + VECTOR_RETURN (v64sf_math_oflowf(VECTOR_INIT (0)), cond2 & (hy < 0)); + VECTOR_RETURN (v64sf_math_uflowf(VECTOR_INIT (0)), cond2); + VECTOR_ENDIF + VECTOR_IF2(ix>0x3f800007, cond2, cond) + VECTOR_RETURN (v64sf_math_oflowf(VECTOR_INIT (0)), cond2 & (hy > 0)); + VECTOR_RETURN (v64sf_math_uflowf(VECTOR_INIT (0)), cond2); + VECTOR_ENDIF + /* now |1-x| is tiny <= 2**-20, suffice to compute + log(x) by x-x^2/2+x^3/3-x^4/4 */ + v64sf t = ax-1; /* t has 20 trailing zeros */ + v64sf w = (t*t)*(0.5f-t*(0.333333333333f-t*0.25f)); + v64sf u = ivln2_h*t; /* ivln2_h has 16 sig. bits */ + v64sf v = t*ivln2_l-w*ivln2; + VECTOR_COND_MOVE (t1, u+v, cond); + v64si is; + GET_FLOAT_WORD(is,t1, cond); + SET_FLOAT_WORD(t1,is&0xfffff000, cond); + VECTOR_COND_MOVE (t2, v-(t1-u), cond); + VECTOR_RETURN (VECTOR_INIT (0.123456f), cond); + VECTOR_ELSE (cond) + v64si n = VECTOR_INIT (0); + /* take care subnormal number */ + VECTOR_IF2 (FLT_UWORD_IS_SUBNORMAL(ix), cond2, cond) + VECTOR_COND_MOVE (ax, ax * two24, cond); + VECTOR_COND_MOVE (n, n - 24, cond2); + GET_FLOAT_WORD(ix,ax, cond2); + VECTOR_ENDIF + n += (ix>>23)-0x7f; + v64si j = ix&0x007fffff; + /* determine interval */ + v64si ix = j|0x3f800000; /* normalize ix */ + v64si k; + VECTOR_IF2 (j<=0x1cc471, cond2, cond) + VECTOR_COND_MOVE (k, VECTOR_INIT (0), cond2); /* |x|>1)|0x20000000)+0x0040000+(k<<21), cond); + v64sf t_l = ax - (t_h-bp_k); + v64sf s_l = v*((u-s_h*t_h)-s_h*t_l); + /* compute log(ax) */ + v64sf s2 = s*s; + v64sf r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); + r += s_l*(s_h+s); + s2 = s_h*s_h; + t_h = __builtin_convertvector(3.0f+s2+r, v64sf); + GET_FLOAT_WORD(is,t_h, cond); + SET_FLOAT_WORD(t_h,is&0xfffff000, cond); + t_l = r-((t_h-3.0f)-s2); + /* u+v = s*(1+...) */ + u = s_h*t_h; + v = s_l*t_h+t_l*s; + /* 2/(3log2)*(s+...) */ + v64sf p_h = u+v; + GET_FLOAT_WORD(is,p_h, cond); + SET_FLOAT_WORD(p_h,is&0xfffff000, cond); + v64sf p_l = v-(p_h-u); + v64sf z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ + v64sf dp_l_k = VECTOR_MERGE (VECTOR_INIT (dp_l[1]), VECTOR_INIT (dp_l[0]), k == 1); + v64sf z_l = cp_l*p_h+p_l*cp+dp_l_k; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + v64sf t = __builtin_convertvector (n, v64sf); + v64sf dp_h_k = VECTOR_MERGE (VECTOR_INIT (dp_h[1]), VECTOR_INIT (dp_h[0]), k == 1); + VECTOR_COND_MOVE (t1, (((z_h+z_l)+dp_h_k)+t), cond); + GET_FLOAT_WORD(is,t1, cond); + SET_FLOAT_WORD(t1,is&0xfffff000, cond); + VECTOR_COND_MOVE (t2, z_l-(((t1-t)-dp_h_k)-z_h), cond); + VECTOR_ENDIF + + v64sf s = VECTOR_INIT (1.0f); /* s (sign of result -ve**odd) = -1 else = 1 */ + VECTOR_COND_MOVE (s, VECTOR_INIT (-1.0f), /* (-ve)**(odd int) */ + ((hx>>31) != 0)&(yisint == 1)); + + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + v64si is; + GET_FLOAT_WORD(is,y, NO_COND); + v64sf y1; + SET_FLOAT_WORD(y1,is&0xfffff000, NO_COND); + v64sf p_l = (y-y1)*t1+y*t2; + v64sf p_h = y1*t1; + v64sf z = p_l+p_h; + v64si j; + GET_FLOAT_WORD(j,z, NO_COND); + v64si i = j&0x7fffffff; + VECTOR_IF (j>0, cond) + VECTOR_RETURN (v64sf_math_oflowf(s<0), cond & i>FLT_UWORD_EXP_MAX); /* overflow */ + VECTOR_RETURN (v64sf_math_oflowf(s<0), cond & (i==FLT_UWORD_EXP_MAX) + & (p_l+ovt>z-p_h)); /* overflow */ + VECTOR_ELSE (cond) + VECTOR_RETURN (v64sf_math_uflowf(s<0), cond & (i>FLT_UWORD_EXP_MIN)); /* underflow */ + VECTOR_RETURN (v64sf_math_uflowf(s<0), cond & (i==FLT_UWORD_EXP_MIN) + & (p_l<=z-p_h)); /* underflow */ + VECTOR_ENDIF + /* + * compute 2**(p_h+p_l) + */ + v64si k = (i>>23)-0x7f; + v64si n = VECTOR_INIT (0); + VECTOR_IF (i>0x3f000000, cond) /* if |z| > 0.5, set n = [z+0.5] */ + VECTOR_COND_MOVE (n, j+(0x00800000>>(k+1)), cond); + k = ((n&0x7fffffff)>>23)-0x7f; /* new k for n */ + v64sf t; + SET_FLOAT_WORD(t,n&~(0x007fffff>>k), cond); + VECTOR_COND_MOVE (n, ((n&0x007fffff)|0x00800000)>>(23-k), cond); + VECTOR_COND_MOVE (n, -n, cond & (j<0)); + VECTOR_COND_MOVE (p_h, p_h - t, cond); + VECTOR_ENDIF + v64sf t = p_l+p_h; + GET_FLOAT_WORD(is,t, NO_COND); + SET_FLOAT_WORD(t,is&0xfffff000, NO_COND); + v64sf u = t*lg2_h; + v64sf v = (p_l-(t-p_h))*lg2+t*lg2_l; + z = u+v; + v64sf w = v-(z-u); + t = z*z; + t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + v64sf r = (z*t1)/(t1-2.0f)-(w+z*w); + z = VECTOR_INIT (1.0f)-(r-z); + GET_FLOAT_WORD(j,z, NO_COND); + j += (n<<23); + VECTOR_IF ((j>>23)<=0, cond) + VECTOR_COND_MOVE (z, v64sf_scalbnf_aux(z, n, __mask), cond); /* subnormal output */ + VECTOR_ELSE (cond) + SET_FLOAT_WORD(z, j, cond); + VECTOR_ENDIF + VECTOR_RETURN (s*z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (powf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_remainder.c b/newlib/libm/machine/amdgcn/v64sf_remainder.c new file mode 100644 index 0000000000..bed40e5273 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_remainder.c @@ -0,0 +1,71 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/ef_remainder.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_fmodf_aux (v64sf, v64sf, v64si); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, remainderf, v64sf x, v64sf p) +{ + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si hp; + GET_FLOAT_WORD (hp, p, NO_COND); + v64si sx = hx & 0x80000000; + hp &= 0x7fffffff; + hx &= 0x7fffffff; + + /* purge off exception values */ + /*if(hp==0) // p = 0 */ + /*if((hx>=0x7f800000)|| // x not finite + ((hp>0x7f800000))) // p is NaN */ + VECTOR_RETURN ((x*p) / (x*p), + (hp == 0) | (hx >= 0x7f800000) | (hp > 0x7f800000)); + + /* if (hp<=0x7effffff) // now x < 2p */ + VECTOR_COND_MOVE (x, v64sf_fmodf_aux (x, p+p, __mask), hp <= 0x7effffff); + + /*if ((hx-hp)==0) */ + VECTOR_RETURN (0.0f * x, (hx-hp) == 0); + + x = __builtin_gcn_fabsvf (x); + p = __builtin_gcn_fabsvf (p); + + VECTOR_IF (hp < 0x01000000, cond) + VECTOR_IF2 (x + x > p, cond2, cond) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x + x >= p)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + v64sf p_half = 0.5f * p; + VECTOR_IF2 (x > p_half, cond2, cond) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x >= p_half)); + VECTOR_ENDIF + VECTOR_ENDIF + + GET_FLOAT_WORD (hx, x, NO_COND); + SET_FLOAT_WORD (x, hx ^ sx, NO_COND); + + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (remainderf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_rint.c b/newlib/libm/machine/amdgcn/v64sf_rint.c new file mode 100644 index 0000000000..8ebad4beae --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_rint.c @@ -0,0 +1,62 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_rint.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float TWO23[2] = { + 8.3886080000e+06, /* 0x4b000000 */ + -8.3886080000e+06, /* 0xcb000000 */ +}; + +DEF_VS_MATH_FUNC (v64sf, rintf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si i0; + GET_FLOAT_WORD (i0, x, NO_COND); + v64si sx = (i0 >> 31) & 1; + v64sf two23 = VECTOR_MERGE (TWO23[1] + x, TWO23[0] + x, sx != 0); + v64si ix = (i0 & 0x7fffffff); + v64si j0 = (ix >> 23) - 0x7f; + VECTOR_IF (j0 < 23, cond) + VECTOR_RETURN (x, cond & FLT_UWORD_IS_ZERO (ix)); + VECTOR_IF2 (j0 < 0, cond2, cond) + v64si i1 = (i0 & 0x07fffff); + VECTOR_COND_MOVE (i0, i0 & 0xfff00000, cond2); + VECTOR_COND_MOVE (i0, i0 | (((i1 | -i1) >> 9) & 0x400000), cond2); + SET_FLOAT_WORD (x, i0, cond2); + v64sf w = two23 + x; + v64sf t = w - two23; + GET_FLOAT_WORD (i0, t, cond2); + SET_FLOAT_WORD (t, (i0&0x7fffffff)|(sx<<31), cond2); + VECTOR_RETURN (t, cond2); + VECTOR_ELSE2 (cond2, cond) + v64si i = (0x007fffff) >> j0; + VECTOR_RETURN (x, cond2 & ((i0 & i) == 0)); /* x is integral */ + i >>= 1; + VECTOR_COND_MOVE (i0, (i0 & (~i)) | (0x200000 >> j0), + cond2 & ((i0 & i) != 0)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + VECTOR_RETURN (x + x, cond & ~FLT_UWORD_IS_FINITE (ix)); /* inf or NaN */ + VECTOR_RETURN (x, cond); /* x is integral */ + VECTOR_ENDIF + + SET_FLOAT_WORD (x, i0, NO_COND); + v64sf w = two23 + x; + VECTOR_RETURN (w - two23, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (rintf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_scalb.c b/newlib/libm/machine/amdgcn/v64sf_scalb.c new file mode 100644 index 0000000000..a2350c0445 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_scalb.c @@ -0,0 +1,59 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/ef_scalb.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_isnanf (v64sf); +v64si v64sf_finitef (v64sf); +v64sf v64sf_rintf_aux (v64sf, v64si); +v64sf v64sf_scalbnf_aux (v64sf, v64si, v64si); + +DEF_VS_MATH_FUNC (v64sf, scalbf, v64sf x, v64sf fn) +{ + FUNCTION_INIT (v64sf); + + VECTOR_IF (v64sf_isnanf(x) | v64sf_isnanf(fn), cond) + VECTOR_RETURN (x * fn, cond); + VECTOR_ENDIF + VECTOR_IF (~v64sf_finitef (fn), cond) + VECTOR_IF2 (fn > 0.0f, cond2, cond) + VECTOR_RETURN (x * fn, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (x / (-fn), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (v64sf_rintf_aux (fn, __mask) != fn, cond) + VECTOR_RETURN ((fn-fn)/(fn-fn), cond); + VECTOR_ENDIF +#if INT_MAX > 65000 + VECTOR_IF (fn > 65000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (65000), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (-fn > 65000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (-65000), __mask), cond); + VECTOR_ENDIF +#else + VECTOR_IF (fn > 32000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (32000), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (-fn > 32000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (-32000), __mask), cond); + VECTOR_ENDIF +#endif + VECTOR_RETURN (v64sf_scalbnf_aux (x, __builtin_convertvector (fn, v64si), __mask), + NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (scalbf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_scalbn.c b/newlib/libm/machine/amdgcn/v64sf_scalbn.c new file mode 100644 index 0000000000..d53e0a0f6c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_scalbn.c @@ -0,0 +1,78 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_scalbn.c in Newlib. */ + +#include "amdgcnmach.h" +#include +#include + +#if INT_MAX > 50000 +#define OVERFLOW_INT 50000 +#else +#define OVERFLOW_INT 30000 +#endif + +static const float +two25 = 3.355443200e+07, /* 0x4c000000 */ +twom25 = 2.9802322388e-08, /* 0x33000000 */ +huge = 1.0e+30, +tiny = 1.0e-30; + +v64sf v64sf_copysignf_aux (v64sf, v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, scalbnf, v64sf x, v64si n) +{ + FUNCTION_INIT (v64sf); + + const v64sf huge_v = VECTOR_INIT ((float) huge); + const v64sf tiny_v = VECTOR_INIT ((float) tiny); + + v64si ix; + GET_FLOAT_WORD (ix, x, NO_COND); + v64si hx = ix & 0x7fffffff; + v64si k = hx >> 23; /* extract exponent */ + VECTOR_IF (FLT_UWORD_IS_ZERO(hx), cond) + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF (~FLT_UWORD_IS_FINITE(hx), cond) /* NaN or Inf */ + VECTOR_RETURN (x + x, cond); + VECTOR_ENDIF + VECTOR_IF (FLT_UWORD_IS_SUBNORMAL (hx), cond); + VECTOR_COND_MOVE (x, x * two25, cond); + GET_FLOAT_WORD (ix, x, cond); + VECTOR_COND_MOVE (k, ((ix & 0x7f800000) >> 23) - 25, cond); + VECTOR_IF2 (n < -50000, cond2, cond) /*underflow*/ + VECTOR_RETURN (tiny * x, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (n > OVERFLOW_INT, cond) // in case integer overflow in n+k + VECTOR_RETURN (huge_v * v64sf_copysignf_aux (huge_v, x, __mask), cond); + VECTOR_ENDIF + k = k + n; + VECTOR_IF (k > FLT_LARGEST_EXP, cond) /* overflow */ + VECTOR_RETURN (huge_v * v64sf_copysignf_aux (huge_v, x, __mask), cond); + VECTOR_ENDIF + VECTOR_IF (k > 0, cond) /* normal result */ + SET_FLOAT_WORD (x, (ix & 0x807fffff) | (k << 23), cond); + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF (k < FLT_SMALLEST_EXP, cond) /*underflow*/ + VECTOR_RETURN (tiny_v * v64sf_copysignf_aux (tiny_v, x, __mask), + k < FLT_SMALLEST_EXP); + VECTOR_ENDIF + + k += 25; /* subnormal result */ + SET_FLOAT_WORD (x, (ix & 0x807fffff) | (k << 23), NO_COND); + VECTOR_RETURN (x * twom25, NO_COND); + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_signif.c b/newlib/libm/machine/amdgcn/v64sf_signif.c new file mode 100644 index 0000000000..aa1a56a3fc --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_signif.c @@ -0,0 +1,24 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_signif.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_scalbf_aux (v64sf x, v64sf fn, v64si); +v64si v64sf_ilogbf_aux (v64sf x, v64si); + +DEF_VS_MATH_FUNC (v64sf, significandf, v64sf x) +{ + return v64sf_scalbf_aux (x, -__builtin_convertvector (v64sf_ilogbf_aux (x, __mask), v64sf), __mask); +} + +DEF_VARIANTS (significandf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sin.c b/newlib/libm/machine/amdgcn/v64sf_sin.c new file mode 100644 index 0000000000..35e6381e77 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sin.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/sf_sin.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinef_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, sinf, v64sf x) +{ + return v64sf_sinef_aux (x, 0, __mask); +} + +DEF_VARIANTS (sinf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sine.c b/newlib/libm/machine/amdgcn/v64sf_sine.c new file mode 100644 index 0000000000..e818763f63 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sine.c @@ -0,0 +1,93 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_sine.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_numtestf (v64sf); + +static const float HALF_PI = 1.570796326; +static const float ONE_OVER_PI = 0.318309886; +static const float r[] = { -0.1666665668, + 0.8333025139e-02, + -0.1980741872e-03, + 0.2601903036e-5 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, sinef, v64sf x, int cosine) +{ + const float YMAX = 210828714.0; + + FUNCTION_INIT (v64sf); + + v64si num_type = v64sf_numtestf (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); + VECTOR_ENDIF + + /* Use sin and cos properties to ease computations. */ + v64si sgn; + v64sf y; + + if (cosine) + { + sgn = VECTOR_INIT (0); + y = __builtin_gcn_fabsvf (x) + HALF_PI; + } + else + { + sgn = x < 0.0f; + y = VECTOR_MERGE (-x, x, x < 0.0f); + } + + /* Check for values of y that will overflow here. */ + VECTOR_IF (y > YMAX, cond) + errno = ERANGE; + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + /* Calculate the exponent. */ + v64si Nneg = __builtin_convertvector (y * ONE_OVER_PI - 0.5f, v64si); + v64si Npos = __builtin_convertvector (y * ONE_OVER_PI + 0.5f, v64si); + v64si N = VECTOR_MERGE (Nneg, Npos, y < 0.0f); + v64sf XN = __builtin_convertvector (N, v64sf); + + VECTOR_COND_MOVE (sgn, ~sgn, (N & 1) != 0); + + if (cosine) + XN -= 0.5; + + y = __builtin_gcn_fabsvf (x) - XN * (float) __PI; + + v64sf res; + + VECTOR_IF ((-z_rooteps_f < y) & (y < z_rooteps_f), cond) + VECTOR_COND_MOVE (res, y, cond); + VECTOR_ELSE (cond) + v64sf g = y * y; + + /* Calculate the Taylor series. */ + v64sf R = (((r[3] * g + r[2]) * g + r[1]) * g + r[0]) * g; + + /* Finally, compute the result. */ + VECTOR_COND_MOVE (res, y + y * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_sineh.c b/newlib/libm/machine/amdgcn/v64sf_sineh.c new file mode 100644 index 0000000000..3f656867ff --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sineh.c @@ -0,0 +1,98 @@ +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based in newlib/libm/mathfp/sf_sineh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf, v64si); +v64si v64sf_numtestf (v64sf); +v64si v64sf_isposf (v64sf); + +static const float q[] = { -0.428277109e+2 }; +static const float p[] = { -0.713793159e+1, + -0.190333399 }; +static const float LNV = 0.6931610107; +static const float INV_V2 = 0.2499930850; +static const float V_OVER2_MINUS1 = 0.1383027787e-4; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, sinehf, v64sf x, int cosineh) +{ + const float WBAR = 18.55; + + FUNCTION_INIT (v64sf); + + v64si sgn = VECTOR_INIT (0); + v64si v_cosineh = VECTOR_INIT (cosineh ? -1 : 0); + + /* Check for special values. */ + v64si num_type = v64sf_numtestf (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity_f.f), + VECTOR_INIT (-z_infinity_f.f), + v64sf_isposf (x)), + cond); + VECTOR_ENDIF + + v64sf y = __builtin_gcn_fabsvf (x); + + if (!cosineh) + VECTOR_COND_MOVE (sgn, VECTOR_INIT (-1), x < 0.0f); + + v64sf res; + + VECTOR_IF (((y > 1.0f) & ~v_cosineh) | v_cosineh, cond) + VECTOR_IF2 (y > (float) BIGX, cond2, cond) + v64sf w = y - LNV; + + /* Check for w > maximum here. */ + VECTOR_IF2 (w > (float) BIGX, cond3, cond2) + errno = ERANGE; + VECTOR_RETURN (x, cond3); + VECTOR_ENDIF + + v64sf z = v64sf_expf_aux (w, __mask); + + VECTOR_COND_MOVE (res, z * (V_OVER2_MINUS1 + 1.0f), + cond2 & (w > WBAR)); + VECTOR_ELSE2 (cond2, cond) + v64sf z = v64sf_expf_aux (y, __mask); + if (cosineh) { + VECTOR_COND_MOVE (res, (z + 1 / z) * 0.5f, cond2); + } else { + VECTOR_COND_MOVE (res, (z - 1 / z) * 0.5f, cond2); + } + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + VECTOR_ELSE (cond) + /* Check for y being too small. */ + VECTOR_IF2 (y < z_rooteps_f, cond2, cond); + VECTOR_COND_MOVE (res, x, cond2); + VECTOR_ELSE2 (cond2, cond) + /* Calculate the Taylor series. */ + v64sf f = x * x; + v64sf Q = f + q[0]; + v64sf P = p[1] * f + p[0]; + v64sf R = f * (P / Q); + + VECTOR_COND_MOVE (res, x + x * R, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_sinh.c b/newlib/libm/machine/amdgcn/v64sf_sinh.c new file mode 100644 index 0000000000..ac779ac1c9 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sinh.c @@ -0,0 +1,12 @@ +/* Based on newlib/libm/mathfp/sf_sinh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinehf_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, sinhf, v64sf x) +{ + return v64sf_sinehf_aux (x, 0, __mask); +} + +DEF_VARIANTS (sinhf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sqrt.c b/newlib/libm/machine/amdgcn/v64sf_sqrt.c new file mode 100644 index 0000000000..b979a40789 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sqrt.c @@ -0,0 +1,74 @@ +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/sf_sqrt.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_numtestf (v64sf); +v64si v64sf_isposf (v64sf); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpvf_mant) \ + && __has_builtin (__builtin_gcn_frexpvf_exp) \ + && __has_builtin (__builtin_gcn_ldexpvf) + +DEF_VS_MATH_FUNC (v64sf, sqrtf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + /* Check for special values. */ + v64si num_type = v64sf_numtestf (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + VECTOR_IF2 (v64sf_isposf (x), cond2, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond2); + VECTOR_ELSE2 (cond2,cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_infinity_f.f), cond); + VECTOR_ENDIF + VECTOR_ENDIF + + /* Initial checks are performed here. */ + VECTOR_IF (x == 0.0f, cond) + VECTOR_RETURN (VECTOR_INIT (0.0f), cond); + VECTOR_ENDIF + VECTOR_IF (x < 0.0f, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); + VECTOR_ENDIF + + /* Find the exponent and mantissa for the form x = f * 2^exp. */ + v64sf f = __builtin_gcn_frexpvf_mant (x); + v64si exp = __builtin_gcn_frexpvf_exp (x); + v64si odd = (exp & 1) != 0; + + /* Get the initial approximation. */ + v64sf y = 0.41731f + 0.59016f * f; + + f *= 0.5f; + /* Calculate the remaining iterations. */ + y = y * 0.5f + f / y; + y = y * 0.5f + f / y; + + /* Calculate the final value. */ + VECTOR_COND_MOVE (y, y * (float) __SQRT_HALF, odd); + VECTOR_COND_MOVE (exp, exp + 1, odd); + exp >>= 1; + y = __builtin_gcn_ldexpvf (y, exp); + + VECTOR_RETURN (y, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (sqrtf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tan.c b/newlib/libm/machine/amdgcn/v64sf_tan.c new file mode 100644 index 0000000000..9f8bac1e40 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_tan.c @@ -0,0 +1,138 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/kf_tan.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float +one = 1.0000000000e+00, /* 0x3f800000 */ +pio4 = 7.8539812565e-01, /* 0x3f490fda */ +pio4lo= 3.7748947079e-08, /* 0x33222168 */ +T[] = { + 3.3333334327e-01, /* 0x3eaaaaab */ + 1.3333334029e-01, /* 0x3e088889 */ + 5.3968254477e-02, /* 0x3d5d0dd1 */ + 2.1869488060e-02, /* 0x3cb327a4 */ + 8.8632395491e-03, /* 0x3c11371f */ + 3.5920790397e-03, /* 0x3b6b6916 */ + 1.4562094584e-03, /* 0x3abede48 */ + 5.8804126456e-04, /* 0x3a1a26c8 */ + 2.4646313977e-04, /* 0x398137b9 */ + 7.8179444245e-05, /* 0x38a3f445 */ + 7.1407252108e-05, /* 0x3895c07a */ + -1.8558637748e-05, /* 0xb79bae5f */ + 2.5907305826e-05, /* 0x37d95384 */ +}; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +static v64sf +v64sf_kernel_tanf (v64sf x, v64sf y, v64si iy, v64si __mask) +{ + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD(hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; /* high word of |x| */ + + VECTOR_IF(ix<0x31800000, cond) /* x < 2**-28 */ + VECTOR_IF2(__builtin_convertvector (x, v64si)==0, cond2, cond) /* generate inexact */ + VECTOR_RETURN (1.0f / __builtin_gcn_fabsvf (x), (ix|(iy+1))==0); + VECTOR_RETURN (x, cond2 & (iy == 1)); + VECTOR_RETURN (-1.0f / x, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF(ix>=0x3f2ca140, cond) /* |x|>=0.6744 */ + VECTOR_COND_MOVE (x, -x, cond & (hx < 0)); + VECTOR_COND_MOVE (y, -y, cond & (hx < 0)); + v64sf z = pio4-x; + v64sf w = pio4lo-y; + VECTOR_COND_MOVE (x, z+w, cond); + VECTOR_COND_MOVE (y, VECTOR_INIT (0.0f), cond); + VECTOR_ENDIF + v64sf z = x*x; + v64sf w = z*z; + /* Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + v64sf r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11])))); + v64sf v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12]))))); + v64sf s = z*x; + r = y + z*(s*(r+v)+y); + r += T[0]*s; + w = x+r; + VECTOR_IF(ix>=0x3f2ca140, cond) + v = __builtin_convertvector (iy, v64sf); + VECTOR_RETURN (__builtin_convertvector (1-((hx>>30)&2), v64sf) + * (v-2.0f*(x-(w*w/(w+v)-r))), cond); + VECTOR_ENDIF + VECTOR_RETURN (w, iy == 1); + /* if allow error up to 2 ulp, + simply return -1.0/(x+r) here */ + /* compute -1.0/(x+r) accurately */ + z = w; + v64si i; + GET_FLOAT_WORD(i,z, NO_COND); + SET_FLOAT_WORD(z,i&0xfffff000, NO_COND); + v = r - (z - x); /* z+v = r+x */ + v64sf a, t; + t = a = -1.0f/w; /* a = -1.0/w */ + GET_FLOAT_WORD(i,t, NO_COND); + SET_FLOAT_WORD(t,i&0xfffff000, NO_COND); + s = 1.0f+t*z; + VECTOR_RETURN (t+a*(s+t*v), NO_COND); + + FUNCTION_RETURN; +} + +static v64si +v64sf_rem_pio2f (v64sf x, v64sf *y) +{ + /* Work in double-precision for better accuracy. */ + v64df dx = __builtin_convertvector (x, v64df); + v64df r = dx * __INV_PI_OVER_TWO_2_24; + v64si n = (__builtin_convertvector (r, v64si) + 0x800000) >> 24; + dx = dx - __builtin_convertvector (n, v64df) * __PI_OVER_TWO; + + y[0] = __builtin_convertvector (dx, v64sf); + y[1] = __builtin_convertvector (dx, v64sf) - y[0]; + return n; +} + +DEF_VS_MATH_FUNC (v64sf, tanf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si ix; + GET_FLOAT_WORD (ix, x, NO_COND); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + VECTOR_RETURN (v64sf_kernel_tanf (x, VECTOR_INIT (0.0f), VECTOR_INIT (1), __mask), + ix <= 0x3f490fda); + + /* tan(Inf or NaN) is NaN */ + VECTOR_RETURN (x-x, ~FLT_UWORD_IS_FINITE(ix)); /* NaN */ + + /* argument reduction needed */ + v64sf y[2]; + v64si n = v64sf_rem_pio2f (x,y); + VECTOR_RETURN (v64sf_kernel_tanf (y[0], y[1], 1-((n&1)<<1), __mask), // 1 -- n even + NO_COND); // -1 -- n odd + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tanf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tanh.c b/newlib/libm/machine/amdgcn/v64sf_tanh.c new file mode 100644 index 0000000000..904c6ebac2 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_tanh.c @@ -0,0 +1,63 @@ +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/sf_tanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf, v64si); + +static const float LN3_OVER2 = 0.54930614433405484570; +static const float p[] = { -0.16134119023996228053e+4, + -0.99225929672236083313e+2, + -0.96437492777225469787 }; +static const float q[] = { 0.48402357071988688686e+4, + 0.22337720718962312926e+4, + 0.11274474380534949335e+3 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, tanhf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64sf f = __builtin_gcn_fabsvf (x); + v64sf res; + + /* Check if the input is too big. */ + VECTOR_IF (f > (float) BIGX, cond) + VECTOR_COND_MOVE (res, VECTOR_INIT (1.0f), cond); + + VECTOR_ELSEIF (f > LN3_OVER2, cond) + VECTOR_COND_MOVE (res, 1.0f - 2.0f / (v64sf_expf_aux (2.0f * f, __mask) + 1.0f), + cond); + + /* Check if the input is too small. */ + VECTOR_ELSEIF (f < z_rooteps_f, cond) + VECTOR_COND_MOVE (res, f, cond); + + /* Calculate the Taylor series. */ + VECTOR_ELSE (cond) + v64sf g = f * f; + + v64sf P = (p[2] * g + p[1]) * g + p[0]; + v64sf Q = ((g + q[2]) * g + q[1]) * g + q[0]; + v64sf R = g * (P / Q); + + VECTOR_COND_MOVE (res, f + f * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, x < 0.0f); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tanhf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tgamma.c b/newlib/libm/machine/amdgcn/v64sf_tgamma.c new file mode 100644 index 0000000000..7eae92fcce --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_tgamma.c @@ -0,0 +1,28 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/ef_tgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf x, v64si __mask); +v64sf v64sf_lgammaf_r_aux (v64sf x, v64si *signgamp, v64si __mask); + +DEF_VS_MATH_FUNC (v64sf, tgammaf, v64sf x) +{ + v64si signgam_local; + v64sf y = v64sf_expf_aux(v64sf_lgammaf_r_aux(x, &signgam_local, __mask), __mask); + VECTOR_COND_MOVE(y, -y, signgam_local < 0); + return y; +} + +DEF_VARIANTS (tgammaf, sf, sf) From abf672604bd0d8a2ad9f2ec7cae76ad5905c3092 Mon Sep 17 00:00:00 2001 From: Nadav Rotem Date: Wed, 14 Dec 2022 19:53:47 -0800 Subject: [PATCH 041/767] Fix a typo in the comment. The implementation of expf() explains how approximation in the range [0 - 0.34] is done. The comment describes the "Reme" algorithm for constructing the polynomial. This is a typo and should be the "Remez" algorithm. The remez algorithm (or minimax) is used to calculate the coefficients of polynomials in other implementations of exp(0 and log(). See more: https://en.wikipedia.org/wiki/Remez_algorithm --- newlib/libm/math/e_exp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libm/math/e_exp.c b/newlib/libm/math/e_exp.c index ec26c20998..77652d687b 100644 --- a/newlib/libm/math/e_exp.c +++ b/newlib/libm/math/e_exp.c @@ -28,7 +28,7 @@ * the interval [0,0.34658]: * Write * R(r**2) = r*(exp(r)+1)/(exp(r)-1) = 2 + r*r/6 - r**4/360 + ... - * We use a special Reme algorithm on [0,0.34658] to generate + * We use a special Remez algorithm on [0,0.34658] to generate * a polynomial of degree 5 to approximate R. The maximum error * of this polynomial approximation is bounded by 2**-59. In * other words, From c04c01524d20611fc14a17d2607e9c50bf5cc83e Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 16 Dec 2022 12:28:48 -0500 Subject: [PATCH 042/767] Revert "amdgcn: Add vectorized math routines" This reverts commit 125e39bfea1a39341a60348c93a65cf4894e0f2a. --- newlib/Makefile.in | 1865 +----------------- newlib/configure | 14 - newlib/configure.host | 1 - newlib/libm/Makefile.inc | 3 - newlib/libm/acinclude.m4 | 2 +- newlib/libm/machine/amdgcn/Makefile.inc | 91 - newlib/libm/machine/amdgcn/amdgcnmach.h | 484 ----- newlib/libm/machine/amdgcn/v64_mathcnst.c | 23 - newlib/libm/machine/amdgcn/v64_reent.c | 10 - newlib/libm/machine/amdgcn/v64df_acos.c | 13 - newlib/libm/machine/amdgcn/v64df_acosh.c | 67 - newlib/libm/machine/amdgcn/v64df_asin.c | 12 - newlib/libm/machine/amdgcn/v64df_asine.c | 106 - newlib/libm/machine/amdgcn/v64df_asinh.c | 67 - newlib/libm/machine/amdgcn/v64df_atan.c | 14 - newlib/libm/machine/amdgcn/v64df_atan2.c | 12 - newlib/libm/machine/amdgcn/v64df_atangent.c | 132 -- newlib/libm/machine/amdgcn/v64df_atanh.c | 61 - newlib/libm/machine/amdgcn/v64df_copysign.c | 29 - newlib/libm/machine/amdgcn/v64df_cos.c | 12 - newlib/libm/machine/amdgcn/v64df_cosh.c | 12 - newlib/libm/machine/amdgcn/v64df_erf.c | 171 -- newlib/libm/machine/amdgcn/v64df_exp.c | 74 - newlib/libm/machine/amdgcn/v64df_exp2.c | 18 - newlib/libm/machine/amdgcn/v64df_finite.c | 24 - newlib/libm/machine/amdgcn/v64df_fmod.c | 185 -- newlib/libm/machine/amdgcn/v64df_gamma.c | 10 - newlib/libm/machine/amdgcn/v64df_hypot.c | 113 -- newlib/libm/machine/amdgcn/v64df_ilogb.c | 45 - newlib/libm/machine/amdgcn/v64df_isnan.c | 27 - newlib/libm/machine/amdgcn/v64df_ispos.c | 18 - newlib/libm/machine/amdgcn/v64df_lgamma.c | 30 - newlib/libm/machine/amdgcn/v64df_lgamma_r.c | 286 --- newlib/libm/machine/amdgcn/v64df_log.c | 82 - newlib/libm/machine/amdgcn/v64df_log10.c | 21 - newlib/libm/machine/amdgcn/v64df_log2.c | 12 - newlib/libm/machine/amdgcn/v64df_modf.c | 66 - newlib/libm/machine/amdgcn/v64df_numtest.c | 31 - newlib/libm/machine/amdgcn/v64df_pow.c | 322 --- newlib/libm/machine/amdgcn/v64df_remainder.c | 68 - newlib/libm/machine/amdgcn/v64df_rint.c | 69 - newlib/libm/machine/amdgcn/v64df_scalb.c | 50 - newlib/libm/machine/amdgcn/v64df_scalbn.c | 58 - newlib/libm/machine/amdgcn/v64df_signif.c | 25 - newlib/libm/machine/amdgcn/v64df_sin.c | 12 - newlib/libm/machine/amdgcn/v64df_sine.c | 97 - newlib/libm/machine/amdgcn/v64df_sineh.c | 101 - newlib/libm/machine/amdgcn/v64df_sinh.c | 12 - newlib/libm/machine/amdgcn/v64df_sqrt.c | 75 - newlib/libm/machine/amdgcn/v64df_tan.c | 142 -- newlib/libm/machine/amdgcn/v64df_tanh.c | 63 - newlib/libm/machine/amdgcn/v64df_tgamma.c | 28 - newlib/libm/machine/amdgcn/v64sf_acos.c | 12 - newlib/libm/machine/amdgcn/v64sf_acosh.c | 66 - newlib/libm/machine/amdgcn/v64sf_asin.c | 12 - newlib/libm/machine/amdgcn/v64sf_asine.c | 98 - newlib/libm/machine/amdgcn/v64sf_asinh.c | 68 - newlib/libm/machine/amdgcn/v64sf_atan.c | 13 - newlib/libm/machine/amdgcn/v64sf_atan2.c | 12 - newlib/libm/machine/amdgcn/v64sf_atangent.c | 123 -- newlib/libm/machine/amdgcn/v64sf_atanh.c | 61 - newlib/libm/machine/amdgcn/v64sf_copysign.c | 29 - newlib/libm/machine/amdgcn/v64sf_cos.c | 12 - newlib/libm/machine/amdgcn/v64sf_cosh.c | 12 - newlib/libm/machine/amdgcn/v64sf_erf.c | 172 -- newlib/libm/machine/amdgcn/v64sf_exp.c | 88 - newlib/libm/machine/amdgcn/v64sf_exp2.c | 18 - newlib/libm/machine/amdgcn/v64sf_finite.c | 23 - newlib/libm/machine/amdgcn/v64sf_fmod.c | 133 -- newlib/libm/machine/amdgcn/v64sf_gamma.c | 10 - newlib/libm/machine/amdgcn/v64sf_hypot.c | 104 - newlib/libm/machine/amdgcn/v64sf_ilogb.c | 42 - newlib/libm/machine/amdgcn/v64sf_isnan.c | 23 - newlib/libm/machine/amdgcn/v64sf_ispos.c | 11 - newlib/libm/machine/amdgcn/v64sf_lgamma.c | 30 - newlib/libm/machine/amdgcn/v64sf_lgamma_r.c | 286 --- newlib/libm/machine/amdgcn/v64sf_log.c | 82 - newlib/libm/machine/amdgcn/v64sf_log10.c | 14 - newlib/libm/machine/amdgcn/v64sf_log2.c | 12 - newlib/libm/machine/amdgcn/v64sf_modf.c | 55 - newlib/libm/machine/amdgcn/v64sf_numtest.c | 30 - newlib/libm/machine/amdgcn/v64sf_pow.c | 292 --- newlib/libm/machine/amdgcn/v64sf_remainder.c | 71 - newlib/libm/machine/amdgcn/v64sf_rint.c | 62 - newlib/libm/machine/amdgcn/v64sf_scalb.c | 59 - newlib/libm/machine/amdgcn/v64sf_scalbn.c | 78 - newlib/libm/machine/amdgcn/v64sf_signif.c | 24 - newlib/libm/machine/amdgcn/v64sf_sin.c | 12 - newlib/libm/machine/amdgcn/v64sf_sine.c | 93 - newlib/libm/machine/amdgcn/v64sf_sineh.c | 98 - newlib/libm/machine/amdgcn/v64sf_sinh.c | 12 - newlib/libm/machine/amdgcn/v64sf_sqrt.c | 74 - newlib/libm/machine/amdgcn/v64sf_tan.c | 138 -- newlib/libm/machine/amdgcn/v64sf_tanh.c | 63 - newlib/libm/machine/amdgcn/v64sf_tgamma.c | 28 - 95 files changed, 46 insertions(+), 8074 deletions(-) delete mode 100644 newlib/libm/machine/amdgcn/Makefile.inc delete mode 100644 newlib/libm/machine/amdgcn/amdgcnmach.h delete mode 100644 newlib/libm/machine/amdgcn/v64_mathcnst.c delete mode 100644 newlib/libm/machine/amdgcn/v64_reent.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_acos.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_acosh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_asin.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_asine.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_asinh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_atan.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_atan2.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_atangent.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_atanh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_copysign.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_cos.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_cosh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_erf.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_exp.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_exp2.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_finite.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_fmod.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_gamma.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_hypot.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_ilogb.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_isnan.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_ispos.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_lgamma.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_lgamma_r.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_log.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_log10.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_log2.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_modf.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_numtest.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_pow.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_remainder.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_rint.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_scalb.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_scalbn.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_signif.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_sin.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_sine.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_sineh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_sinh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_sqrt.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_tan.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_tanh.c delete mode 100644 newlib/libm/machine/amdgcn/v64df_tgamma.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_acos.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_acosh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_asin.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_asine.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_asinh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_atan.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_atan2.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_atangent.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_atanh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_copysign.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_cos.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_cosh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_erf.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_exp.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_exp2.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_finite.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_fmod.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_gamma.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_hypot.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_ilogb.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_isnan.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_ispos.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_lgamma.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_lgamma_r.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_log.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_log10.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_log2.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_modf.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_numtest.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_pow.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_remainder.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_rint.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_scalb.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_scalbn.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_signif.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_sin.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_sine.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_sineh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_sinh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_sqrt.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_tan.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_tanh.c delete mode 100644 newlib/libm/machine/amdgcn/v64sf_tgamma.c diff --git a/newlib/Makefile.in b/newlib/Makefile.in index e81c3d3da0..cb7b693279 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -910,19 +910,18 @@ check_PROGRAMS = @NEWLIB_HW_FP_FALSE@am__append_136 = libm/math/math.tex @HAVE_LONG_DOUBLE_TRUE@am__append_137 = $(libm_common_lsrc) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_138 = $(libm_machine_aarch64_src) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_139 = $(libm_machine_amdgcn_src) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_140 = $(libm_machine_arm_src) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_141 = $(libm_machine_i386_src) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_142 = $(libm_machine_mips_src) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/wf_sqrt.S -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = libm/machine/nds32/w_sqrt.S -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_145 = $(libm_machine_nds32_src) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_146 = $(libm_machine_powerpc_src) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_147 = $(libm_machine_pru_src) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_148 = $(libm_machine_sparc_src) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_149 = $(libm_machine_spu_src) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_150 = $(libm_machine_riscv_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_151 = $(libm_machine_x86_64_src) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_139 = $(libm_machine_arm_src) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_140 = $(libm_machine_i386_src) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_141 = $(libm_machine_mips_src) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_142 = libm/machine/nds32/wf_sqrt.S +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/w_sqrt.S +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = $(libm_machine_nds32_src) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_145 = $(libm_machine_powerpc_src) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_146 = $(libm_machine_pru_src) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_147 = $(libm_machine_sparc_src) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_148 = $(libm_machine_spu_src) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_149 = $(libm_machine_riscv_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_150 = $(libm_machine_x86_64_src) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -3093,96 +3092,7 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_157 = $(am__objects_156) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_158 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asin.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asine.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asinh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atan.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atan2.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atangent.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atanh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_copysign.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_cos.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_cosh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_erf.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_exp.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_exp2.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_finite.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_fmod.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_gamma.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_hypot.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_ilogb.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_isnan.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_ispos.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_lgamma.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_lgamma_r.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log10.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log2.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_modf.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_numtest.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_pow.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_remainder.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_rint.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_scalb.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_scalbn.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_signif.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sin.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sine.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sineh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sinh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sqrt.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tan.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tanh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tgamma.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_acos.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_acosh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asin.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asine.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asinh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atan.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atan2.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atangent.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atanh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_copysign.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_cos.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_cosh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_erf.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_exp.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_exp2.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_finite.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_fmod.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_gamma.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_hypot.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_ilogb.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_isnan.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_ispos.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_lgamma.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_lgamma_r.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log10.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log2.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_modf.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_numtest.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_pow.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_remainder.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_rint.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_scalb.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_scalbn.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_signif.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sin.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sine.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sineh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sinh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sqrt.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_159 = $(am__objects_158) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_160 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_158 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_floor.$(OBJEXT) \ @@ -3213,8 +3123,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feenableexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-fedisableexcept.$(OBJEXT) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_161 = $(am__objects_160) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_162 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_159 = $(am__objects_158) +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_160 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_atan2f.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_exp.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_expf.$(OBJEXT) \ @@ -3251,8 +3161,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_163 = $(am__objects_162) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_164 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_161 = $(am__objects_160) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_162 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetround.$(OBJEXT) \ @@ -3264,13 +3174,13 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_165 = $(am__objects_164) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_168 = $(am__objects_166) \ -@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_167) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_169 = $(am__objects_168) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_170 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_163 = $(am__objects_162) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_164 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_165 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = $(am__objects_164) \ +@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_165) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = $(am__objects_166) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_168 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetround.$(OBJEXT) \ @@ -3282,8 +3192,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_171 = $(am__objects_170) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_172 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_169 = $(am__objects_168) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_170 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-fpclassifyf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinite.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinitef.$(OBJEXT) \ @@ -3293,8 +3203,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnanf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormalf.$(OBJEXT) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_173 = $(am__objects_172) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_174 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_171 = $(am__objects_170) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_172 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetround.$(OBJEXT) \ @@ -3306,8 +3216,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_175 = $(am__objects_174) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_176 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_173 = $(am__objects_172) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_174 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3432,8 +3342,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sinh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_177 = $(am__objects_176) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_178 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_175 = $(am__objects_174) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_176 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3473,8 +3383,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llrint.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-s_llround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llround.$(OBJEXT) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_179 = $(am__objects_178) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_180 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_177 = $(am__objects_176) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_178 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetround.$(OBJEXT) \ @@ -3486,15 +3396,14 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_181 = $(am__objects_180) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_179 = $(am__objects_178) am_libm_a_OBJECTS = $(am__objects_143) $(am__objects_147) \ $(am__objects_148) $(am__objects_149) $(am__objects_151) \ $(am__objects_152) $(am__objects_153) $(am__objects_154) \ $(am__objects_155) $(am__objects_157) $(am__objects_159) \ - $(am__objects_161) $(am__objects_163) $(am__objects_165) \ + $(am__objects_161) $(am__objects_163) $(am__objects_167) \ $(am__objects_169) $(am__objects_171) $(am__objects_173) \ - $(am__objects_175) $(am__objects_177) $(am__objects_179) \ - $(am__objects_181) + $(am__objects_175) $(am__objects_177) $(am__objects_179) libm_a_OBJECTS = $(am_libm_a_OBJECTS) am_libm_test_test_OBJECTS = libm/test/test.$(OBJEXT) \ libm/test/string.$(OBJEXT) libm/test/convert.$(OBJEXT) \ @@ -4044,10 +3953,9 @@ libm_a_SOURCES = $(am__append_131) $(am__append_134) \ $(libm_common_src) $(libm_common_fsrc) $(am__append_137) \ $(libm_complex_src) $(libm_complex_fsrc) $(libm_complex_lsrc) \ $(libm_fenv_src) $(am__append_138) $(am__append_139) \ - $(am__append_140) $(am__append_141) $(am__append_142) \ + $(am__append_140) $(am__append_141) $(am__append_144) \ $(am__append_145) $(am__append_146) $(am__append_147) \ - $(am__append_148) $(am__append_149) $(am__append_150) \ - $(am__append_151) + $(am__append_148) $(am__append_149) $(am__append_150) libm_a_CFLAGS = $(AM_CFLAGS) $(libm_a_CFLAGS_$(subst /,_,$(@D))) $(libm_a_CFLAGS_$(subst /,_,$(@D)_$( libm/machine/amdgcn/$(am__dirstamp) -libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) libm/machine/amdgcn/$(DEPDIR) - @: > libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_asin.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_asine.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_asinh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_atan.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_atan2.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_atangent.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_atanh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_copysign.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_cos.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_cosh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_erf.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_exp.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_exp2.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_finite.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_fmod.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_gamma.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_hypot.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_ilogb.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_isnan.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_ispos.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_lgamma.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_lgamma_r.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_log.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_log10.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_log2.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_modf.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_numtest.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_pow.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_remainder.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_rint.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_scalb.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_scalbn.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_signif.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_sin.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_sine.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_sineh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_sinh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_sqrt.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_tan.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_tanh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64df_tgamma.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_acos.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_acosh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_asin.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_asine.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_asinh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_atan.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_atan2.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_atangent.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_atanh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_copysign.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_cos.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_cosh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_erf.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_exp.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_exp2.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_finite.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_fmod.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_gamma.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_hypot.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_ilogb.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_isnan.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_ispos.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_lgamma.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_lgamma_r.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_log.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_log10.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_log2.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_modf.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_numtest.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_pow.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_remainder.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_rint.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_scalb.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_scalbn.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_signif.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_sin.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_sine.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_sineh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_sinh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_sqrt.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT): \ - libm/machine/amdgcn/$(am__dirstamp) \ - libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) libm/machine/arm/$(am__dirstamp): @$(MKDIR_P) libm/machine/arm @: > libm/machine/arm/$(am__dirstamp) @@ -12077,7 +11625,6 @@ mostlyclean-compile: -rm -f libm/complex/*.$(OBJEXT) -rm -f libm/fenv/*.$(OBJEXT) -rm -f libm/machine/aarch64/*.$(OBJEXT) - -rm -f libm/machine/amdgcn/*.$(OBJEXT) -rm -f libm/machine/arm/*.$(OBJEXT) -rm -f libm/machine/i386/*.$(OBJEXT) -rm -f libm/machine/mips/*.$(OBJEXT) @@ -13855,94 +13402,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_rint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_round.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_trunc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-ef_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-fe_dfl_env.Po@am__quote@ @@ -42603,1238 +42062,6 @@ libm/machine/aarch64/libm_a-feupdateenv.obj: libm/machine/aarch64/feupdateenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-feupdateenv.obj `if test -f 'libm/machine/aarch64/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/aarch64/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/feupdateenv.c'; fi` -libm/machine/amdgcn/libm_a-v64_mathcnst.o: libm/machine/amdgcn/v64_mathcnst.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_mathcnst.c' object='libm/machine/amdgcn/libm_a-v64_mathcnst.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c - -libm/machine/amdgcn/libm_a-v64_mathcnst.obj: libm/machine/amdgcn/v64_mathcnst.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.obj `if test -f 'libm/machine/amdgcn/v64_mathcnst.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_mathcnst.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_mathcnst.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_mathcnst.c' object='libm/machine/amdgcn/libm_a-v64_mathcnst.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.obj `if test -f 'libm/machine/amdgcn/v64_mathcnst.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_mathcnst.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_mathcnst.c'; fi` - -libm/machine/amdgcn/libm_a-v64_reent.o: libm/machine/amdgcn/v64_reent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_reent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo -c -o libm/machine/amdgcn/libm_a-v64_reent.o `test -f 'libm/machine/amdgcn/v64_reent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_reent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_reent.c' object='libm/machine/amdgcn/libm_a-v64_reent.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_reent.o `test -f 'libm/machine/amdgcn/v64_reent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_reent.c - -libm/machine/amdgcn/libm_a-v64_reent.obj: libm/machine/amdgcn/v64_reent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_reent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo -c -o libm/machine/amdgcn/libm_a-v64_reent.obj `if test -f 'libm/machine/amdgcn/v64_reent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_reent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_reent.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_reent.c' object='libm/machine/amdgcn/libm_a-v64_reent.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_reent.obj `if test -f 'libm/machine/amdgcn/v64_reent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_reent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_reent.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_acos.o: libm/machine/amdgcn/v64df_acos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acos.o `test -f 'libm/machine/amdgcn/v64df_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acos.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acos.c' object='libm/machine/amdgcn/libm_a-v64df_acos.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acos.o `test -f 'libm/machine/amdgcn/v64df_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acos.c - -libm/machine/amdgcn/libm_a-v64df_acos.obj: libm/machine/amdgcn/v64df_acos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acos.obj `if test -f 'libm/machine/amdgcn/v64df_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acos.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acos.c' object='libm/machine/amdgcn/libm_a-v64df_acos.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acos.obj `if test -f 'libm/machine/amdgcn/v64df_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acos.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_acosh.o: libm/machine/amdgcn/v64df_acosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acosh.o `test -f 'libm/machine/amdgcn/v64df_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acosh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acosh.c' object='libm/machine/amdgcn/libm_a-v64df_acosh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acosh.o `test -f 'libm/machine/amdgcn/v64df_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acosh.c - -libm/machine/amdgcn/libm_a-v64df_acosh.obj: libm/machine/amdgcn/v64df_acosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acosh.obj `if test -f 'libm/machine/amdgcn/v64df_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acosh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acosh.c' object='libm/machine/amdgcn/libm_a-v64df_acosh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acosh.obj `if test -f 'libm/machine/amdgcn/v64df_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acosh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_asin.o: libm/machine/amdgcn/v64df_asin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asin.o `test -f 'libm/machine/amdgcn/v64df_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asin.c' object='libm/machine/amdgcn/libm_a-v64df_asin.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asin.o `test -f 'libm/machine/amdgcn/v64df_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asin.c - -libm/machine/amdgcn/libm_a-v64df_asin.obj: libm/machine/amdgcn/v64df_asin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asin.obj `if test -f 'libm/machine/amdgcn/v64df_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asin.c' object='libm/machine/amdgcn/libm_a-v64df_asin.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asin.obj `if test -f 'libm/machine/amdgcn/v64df_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asin.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_asine.o: libm/machine/amdgcn/v64df_asine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asine.o `test -f 'libm/machine/amdgcn/v64df_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asine.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asine.c' object='libm/machine/amdgcn/libm_a-v64df_asine.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asine.o `test -f 'libm/machine/amdgcn/v64df_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asine.c - -libm/machine/amdgcn/libm_a-v64df_asine.obj: libm/machine/amdgcn/v64df_asine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asine.obj `if test -f 'libm/machine/amdgcn/v64df_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asine.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asine.c' object='libm/machine/amdgcn/libm_a-v64df_asine.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asine.obj `if test -f 'libm/machine/amdgcn/v64df_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asine.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_asinh.o: libm/machine/amdgcn/v64df_asinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asinh.o `test -f 'libm/machine/amdgcn/v64df_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asinh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asinh.c' object='libm/machine/amdgcn/libm_a-v64df_asinh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asinh.o `test -f 'libm/machine/amdgcn/v64df_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asinh.c - -libm/machine/amdgcn/libm_a-v64df_asinh.obj: libm/machine/amdgcn/v64df_asinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asinh.obj `if test -f 'libm/machine/amdgcn/v64df_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asinh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asinh.c' object='libm/machine/amdgcn/libm_a-v64df_asinh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asinh.obj `if test -f 'libm/machine/amdgcn/v64df_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asinh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_atan.o: libm/machine/amdgcn/v64df_atan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan.o `test -f 'libm/machine/amdgcn/v64df_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan.c' object='libm/machine/amdgcn/libm_a-v64df_atan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan.o `test -f 'libm/machine/amdgcn/v64df_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan.c - -libm/machine/amdgcn/libm_a-v64df_atan.obj: libm/machine/amdgcn/v64df_atan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan.obj `if test -f 'libm/machine/amdgcn/v64df_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan.c' object='libm/machine/amdgcn/libm_a-v64df_atan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan.obj `if test -f 'libm/machine/amdgcn/v64df_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_atan2.o: libm/machine/amdgcn/v64df_atan2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan2.o `test -f 'libm/machine/amdgcn/v64df_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan2.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan2.c' object='libm/machine/amdgcn/libm_a-v64df_atan2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan2.o `test -f 'libm/machine/amdgcn/v64df_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan2.c - -libm/machine/amdgcn/libm_a-v64df_atan2.obj: libm/machine/amdgcn/v64df_atan2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan2.obj `if test -f 'libm/machine/amdgcn/v64df_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan2.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan2.c' object='libm/machine/amdgcn/libm_a-v64df_atan2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan2.obj `if test -f 'libm/machine/amdgcn/v64df_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan2.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_atangent.o: libm/machine/amdgcn/v64df_atangent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atangent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atangent.o `test -f 'libm/machine/amdgcn/v64df_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atangent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atangent.c' object='libm/machine/amdgcn/libm_a-v64df_atangent.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atangent.o `test -f 'libm/machine/amdgcn/v64df_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atangent.c - -libm/machine/amdgcn/libm_a-v64df_atangent.obj: libm/machine/amdgcn/v64df_atangent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atangent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atangent.obj `if test -f 'libm/machine/amdgcn/v64df_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atangent.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atangent.c' object='libm/machine/amdgcn/libm_a-v64df_atangent.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atangent.obj `if test -f 'libm/machine/amdgcn/v64df_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atangent.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_atanh.o: libm/machine/amdgcn/v64df_atanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atanh.o `test -f 'libm/machine/amdgcn/v64df_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atanh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atanh.c' object='libm/machine/amdgcn/libm_a-v64df_atanh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atanh.o `test -f 'libm/machine/amdgcn/v64df_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atanh.c - -libm/machine/amdgcn/libm_a-v64df_atanh.obj: libm/machine/amdgcn/v64df_atanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atanh.obj `if test -f 'libm/machine/amdgcn/v64df_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atanh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atanh.c' object='libm/machine/amdgcn/libm_a-v64df_atanh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atanh.obj `if test -f 'libm/machine/amdgcn/v64df_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atanh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_copysign.o: libm/machine/amdgcn/v64df_copysign.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_copysign.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_copysign.o `test -f 'libm/machine/amdgcn/v64df_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_copysign.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_copysign.c' object='libm/machine/amdgcn/libm_a-v64df_copysign.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_copysign.o `test -f 'libm/machine/amdgcn/v64df_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_copysign.c - -libm/machine/amdgcn/libm_a-v64df_copysign.obj: libm/machine/amdgcn/v64df_copysign.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_copysign.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_copysign.obj `if test -f 'libm/machine/amdgcn/v64df_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_copysign.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_copysign.c' object='libm/machine/amdgcn/libm_a-v64df_copysign.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_copysign.obj `if test -f 'libm/machine/amdgcn/v64df_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_copysign.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_cos.o: libm/machine/amdgcn/v64df_cos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cos.o `test -f 'libm/machine/amdgcn/v64df_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cos.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cos.c' object='libm/machine/amdgcn/libm_a-v64df_cos.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cos.o `test -f 'libm/machine/amdgcn/v64df_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cos.c - -libm/machine/amdgcn/libm_a-v64df_cos.obj: libm/machine/amdgcn/v64df_cos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cos.obj `if test -f 'libm/machine/amdgcn/v64df_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cos.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cos.c' object='libm/machine/amdgcn/libm_a-v64df_cos.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cos.obj `if test -f 'libm/machine/amdgcn/v64df_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cos.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_cosh.o: libm/machine/amdgcn/v64df_cosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cosh.o `test -f 'libm/machine/amdgcn/v64df_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cosh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cosh.c' object='libm/machine/amdgcn/libm_a-v64df_cosh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cosh.o `test -f 'libm/machine/amdgcn/v64df_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cosh.c - -libm/machine/amdgcn/libm_a-v64df_cosh.obj: libm/machine/amdgcn/v64df_cosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cosh.obj `if test -f 'libm/machine/amdgcn/v64df_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cosh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cosh.c' object='libm/machine/amdgcn/libm_a-v64df_cosh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cosh.obj `if test -f 'libm/machine/amdgcn/v64df_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cosh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_erf.o: libm/machine/amdgcn/v64df_erf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_erf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_erf.o `test -f 'libm/machine/amdgcn/v64df_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_erf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_erf.c' object='libm/machine/amdgcn/libm_a-v64df_erf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_erf.o `test -f 'libm/machine/amdgcn/v64df_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_erf.c - -libm/machine/amdgcn/libm_a-v64df_erf.obj: libm/machine/amdgcn/v64df_erf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_erf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_erf.obj `if test -f 'libm/machine/amdgcn/v64df_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_erf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_erf.c' object='libm/machine/amdgcn/libm_a-v64df_erf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_erf.obj `if test -f 'libm/machine/amdgcn/v64df_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_erf.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_exp.o: libm/machine/amdgcn/v64df_exp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp.o `test -f 'libm/machine/amdgcn/v64df_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp.c' object='libm/machine/amdgcn/libm_a-v64df_exp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp.o `test -f 'libm/machine/amdgcn/v64df_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp.c - -libm/machine/amdgcn/libm_a-v64df_exp.obj: libm/machine/amdgcn/v64df_exp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp.obj `if test -f 'libm/machine/amdgcn/v64df_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp.c' object='libm/machine/amdgcn/libm_a-v64df_exp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp.obj `if test -f 'libm/machine/amdgcn/v64df_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_exp2.o: libm/machine/amdgcn/v64df_exp2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp2.o `test -f 'libm/machine/amdgcn/v64df_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp2.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp2.c' object='libm/machine/amdgcn/libm_a-v64df_exp2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp2.o `test -f 'libm/machine/amdgcn/v64df_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp2.c - -libm/machine/amdgcn/libm_a-v64df_exp2.obj: libm/machine/amdgcn/v64df_exp2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp2.obj `if test -f 'libm/machine/amdgcn/v64df_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp2.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp2.c' object='libm/machine/amdgcn/libm_a-v64df_exp2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp2.obj `if test -f 'libm/machine/amdgcn/v64df_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp2.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_finite.o: libm/machine/amdgcn/v64df_finite.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_finite.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_finite.o `test -f 'libm/machine/amdgcn/v64df_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_finite.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_finite.c' object='libm/machine/amdgcn/libm_a-v64df_finite.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_finite.o `test -f 'libm/machine/amdgcn/v64df_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_finite.c - -libm/machine/amdgcn/libm_a-v64df_finite.obj: libm/machine/amdgcn/v64df_finite.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_finite.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_finite.obj `if test -f 'libm/machine/amdgcn/v64df_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_finite.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_finite.c' object='libm/machine/amdgcn/libm_a-v64df_finite.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_finite.obj `if test -f 'libm/machine/amdgcn/v64df_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_finite.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_fmod.o: libm/machine/amdgcn/v64df_fmod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_fmod.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_fmod.o `test -f 'libm/machine/amdgcn/v64df_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_fmod.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_fmod.c' object='libm/machine/amdgcn/libm_a-v64df_fmod.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_fmod.o `test -f 'libm/machine/amdgcn/v64df_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_fmod.c - -libm/machine/amdgcn/libm_a-v64df_fmod.obj: libm/machine/amdgcn/v64df_fmod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_fmod.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_fmod.obj `if test -f 'libm/machine/amdgcn/v64df_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_fmod.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_fmod.c' object='libm/machine/amdgcn/libm_a-v64df_fmod.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_fmod.obj `if test -f 'libm/machine/amdgcn/v64df_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_fmod.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_gamma.o: libm/machine/amdgcn/v64df_gamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_gamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_gamma.o `test -f 'libm/machine/amdgcn/v64df_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_gamma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_gamma.c' object='libm/machine/amdgcn/libm_a-v64df_gamma.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_gamma.o `test -f 'libm/machine/amdgcn/v64df_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_gamma.c - -libm/machine/amdgcn/libm_a-v64df_gamma.obj: libm/machine/amdgcn/v64df_gamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_gamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_gamma.obj `if test -f 'libm/machine/amdgcn/v64df_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_gamma.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_gamma.c' object='libm/machine/amdgcn/libm_a-v64df_gamma.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_gamma.obj `if test -f 'libm/machine/amdgcn/v64df_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_gamma.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_hypot.o: libm/machine/amdgcn/v64df_hypot.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_hypot.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_hypot.o `test -f 'libm/machine/amdgcn/v64df_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_hypot.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_hypot.c' object='libm/machine/amdgcn/libm_a-v64df_hypot.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_hypot.o `test -f 'libm/machine/amdgcn/v64df_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_hypot.c - -libm/machine/amdgcn/libm_a-v64df_hypot.obj: libm/machine/amdgcn/v64df_hypot.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_hypot.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_hypot.obj `if test -f 'libm/machine/amdgcn/v64df_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_hypot.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_hypot.c' object='libm/machine/amdgcn/libm_a-v64df_hypot.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_hypot.obj `if test -f 'libm/machine/amdgcn/v64df_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_hypot.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_ilogb.o: libm/machine/amdgcn/v64df_ilogb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ilogb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.o `test -f 'libm/machine/amdgcn/v64df_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ilogb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ilogb.c' object='libm/machine/amdgcn/libm_a-v64df_ilogb.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.o `test -f 'libm/machine/amdgcn/v64df_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ilogb.c - -libm/machine/amdgcn/libm_a-v64df_ilogb.obj: libm/machine/amdgcn/v64df_ilogb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ilogb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.obj `if test -f 'libm/machine/amdgcn/v64df_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ilogb.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ilogb.c' object='libm/machine/amdgcn/libm_a-v64df_ilogb.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.obj `if test -f 'libm/machine/amdgcn/v64df_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ilogb.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_isnan.o: libm/machine/amdgcn/v64df_isnan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_isnan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_isnan.o `test -f 'libm/machine/amdgcn/v64df_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_isnan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_isnan.c' object='libm/machine/amdgcn/libm_a-v64df_isnan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_isnan.o `test -f 'libm/machine/amdgcn/v64df_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_isnan.c - -libm/machine/amdgcn/libm_a-v64df_isnan.obj: libm/machine/amdgcn/v64df_isnan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_isnan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_isnan.obj `if test -f 'libm/machine/amdgcn/v64df_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_isnan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_isnan.c' object='libm/machine/amdgcn/libm_a-v64df_isnan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_isnan.obj `if test -f 'libm/machine/amdgcn/v64df_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_isnan.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_ispos.o: libm/machine/amdgcn/v64df_ispos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ispos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ispos.o `test -f 'libm/machine/amdgcn/v64df_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ispos.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ispos.c' object='libm/machine/amdgcn/libm_a-v64df_ispos.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ispos.o `test -f 'libm/machine/amdgcn/v64df_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ispos.c - -libm/machine/amdgcn/libm_a-v64df_ispos.obj: libm/machine/amdgcn/v64df_ispos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ispos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ispos.obj `if test -f 'libm/machine/amdgcn/v64df_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ispos.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ispos.c' object='libm/machine/amdgcn/libm_a-v64df_ispos.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ispos.obj `if test -f 'libm/machine/amdgcn/v64df_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ispos.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_lgamma.o: libm/machine/amdgcn/v64df_lgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.o `test -f 'libm/machine/amdgcn/v64df_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.o `test -f 'libm/machine/amdgcn/v64df_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma.c - -libm/machine/amdgcn/libm_a-v64df_lgamma.obj: libm/machine/amdgcn/v64df_lgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_lgamma_r.o: libm/machine/amdgcn/v64df_lgamma_r.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma_r.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.o `test -f 'libm/machine/amdgcn/v64df_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma_r.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma_r.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.o `test -f 'libm/machine/amdgcn/v64df_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma_r.c - -libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj: libm/machine/amdgcn/v64df_lgamma_r.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma_r.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma_r.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_log.o: libm/machine/amdgcn/v64df_log.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log.o `test -f 'libm/machine/amdgcn/v64df_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log.c' object='libm/machine/amdgcn/libm_a-v64df_log.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log.o `test -f 'libm/machine/amdgcn/v64df_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log.c - -libm/machine/amdgcn/libm_a-v64df_log.obj: libm/machine/amdgcn/v64df_log.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log.obj `if test -f 'libm/machine/amdgcn/v64df_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log.c' object='libm/machine/amdgcn/libm_a-v64df_log.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log.obj `if test -f 'libm/machine/amdgcn/v64df_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_log10.o: libm/machine/amdgcn/v64df_log10.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log10.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log10.o `test -f 'libm/machine/amdgcn/v64df_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log10.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log10.c' object='libm/machine/amdgcn/libm_a-v64df_log10.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log10.o `test -f 'libm/machine/amdgcn/v64df_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log10.c - -libm/machine/amdgcn/libm_a-v64df_log10.obj: libm/machine/amdgcn/v64df_log10.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log10.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log10.obj `if test -f 'libm/machine/amdgcn/v64df_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log10.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log10.c' object='libm/machine/amdgcn/libm_a-v64df_log10.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log10.obj `if test -f 'libm/machine/amdgcn/v64df_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log10.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_log2.o: libm/machine/amdgcn/v64df_log2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log2.o `test -f 'libm/machine/amdgcn/v64df_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log2.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log2.c' object='libm/machine/amdgcn/libm_a-v64df_log2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log2.o `test -f 'libm/machine/amdgcn/v64df_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log2.c - -libm/machine/amdgcn/libm_a-v64df_log2.obj: libm/machine/amdgcn/v64df_log2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log2.obj `if test -f 'libm/machine/amdgcn/v64df_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log2.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log2.c' object='libm/machine/amdgcn/libm_a-v64df_log2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log2.obj `if test -f 'libm/machine/amdgcn/v64df_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log2.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_modf.o: libm/machine/amdgcn/v64df_modf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_modf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_modf.o `test -f 'libm/machine/amdgcn/v64df_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_modf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_modf.c' object='libm/machine/amdgcn/libm_a-v64df_modf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_modf.o `test -f 'libm/machine/amdgcn/v64df_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_modf.c - -libm/machine/amdgcn/libm_a-v64df_modf.obj: libm/machine/amdgcn/v64df_modf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_modf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_modf.obj `if test -f 'libm/machine/amdgcn/v64df_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_modf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_modf.c' object='libm/machine/amdgcn/libm_a-v64df_modf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_modf.obj `if test -f 'libm/machine/amdgcn/v64df_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_modf.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_numtest.o: libm/machine/amdgcn/v64df_numtest.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_numtest.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_numtest.o `test -f 'libm/machine/amdgcn/v64df_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_numtest.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_numtest.c' object='libm/machine/amdgcn/libm_a-v64df_numtest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_numtest.o `test -f 'libm/machine/amdgcn/v64df_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_numtest.c - -libm/machine/amdgcn/libm_a-v64df_numtest.obj: libm/machine/amdgcn/v64df_numtest.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_numtest.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_numtest.obj `if test -f 'libm/machine/amdgcn/v64df_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_numtest.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_numtest.c' object='libm/machine/amdgcn/libm_a-v64df_numtest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_numtest.obj `if test -f 'libm/machine/amdgcn/v64df_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_numtest.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_pow.o: libm/machine/amdgcn/v64df_pow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_pow.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_pow.o `test -f 'libm/machine/amdgcn/v64df_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_pow.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_pow.c' object='libm/machine/amdgcn/libm_a-v64df_pow.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_pow.o `test -f 'libm/machine/amdgcn/v64df_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_pow.c - -libm/machine/amdgcn/libm_a-v64df_pow.obj: libm/machine/amdgcn/v64df_pow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_pow.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_pow.obj `if test -f 'libm/machine/amdgcn/v64df_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_pow.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_pow.c' object='libm/machine/amdgcn/libm_a-v64df_pow.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_pow.obj `if test -f 'libm/machine/amdgcn/v64df_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_pow.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_remainder.o: libm/machine/amdgcn/v64df_remainder.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_remainder.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_remainder.o `test -f 'libm/machine/amdgcn/v64df_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_remainder.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_remainder.c' object='libm/machine/amdgcn/libm_a-v64df_remainder.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_remainder.o `test -f 'libm/machine/amdgcn/v64df_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_remainder.c - -libm/machine/amdgcn/libm_a-v64df_remainder.obj: libm/machine/amdgcn/v64df_remainder.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_remainder.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_remainder.obj `if test -f 'libm/machine/amdgcn/v64df_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_remainder.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_remainder.c' object='libm/machine/amdgcn/libm_a-v64df_remainder.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_remainder.obj `if test -f 'libm/machine/amdgcn/v64df_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_remainder.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_rint.o: libm/machine/amdgcn/v64df_rint.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_rint.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_rint.o `test -f 'libm/machine/amdgcn/v64df_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_rint.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_rint.c' object='libm/machine/amdgcn/libm_a-v64df_rint.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_rint.o `test -f 'libm/machine/amdgcn/v64df_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_rint.c - -libm/machine/amdgcn/libm_a-v64df_rint.obj: libm/machine/amdgcn/v64df_rint.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_rint.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_rint.obj `if test -f 'libm/machine/amdgcn/v64df_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_rint.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_rint.c' object='libm/machine/amdgcn/libm_a-v64df_rint.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_rint.obj `if test -f 'libm/machine/amdgcn/v64df_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_rint.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_scalb.o: libm/machine/amdgcn/v64df_scalb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalb.o `test -f 'libm/machine/amdgcn/v64df_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalb.c' object='libm/machine/amdgcn/libm_a-v64df_scalb.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalb.o `test -f 'libm/machine/amdgcn/v64df_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalb.c - -libm/machine/amdgcn/libm_a-v64df_scalb.obj: libm/machine/amdgcn/v64df_scalb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalb.obj `if test -f 'libm/machine/amdgcn/v64df_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalb.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalb.c' object='libm/machine/amdgcn/libm_a-v64df_scalb.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalb.obj `if test -f 'libm/machine/amdgcn/v64df_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalb.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_scalbn.o: libm/machine/amdgcn/v64df_scalbn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalbn.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.o `test -f 'libm/machine/amdgcn/v64df_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalbn.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalbn.c' object='libm/machine/amdgcn/libm_a-v64df_scalbn.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.o `test -f 'libm/machine/amdgcn/v64df_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalbn.c - -libm/machine/amdgcn/libm_a-v64df_scalbn.obj: libm/machine/amdgcn/v64df_scalbn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalbn.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.obj `if test -f 'libm/machine/amdgcn/v64df_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalbn.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalbn.c' object='libm/machine/amdgcn/libm_a-v64df_scalbn.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.obj `if test -f 'libm/machine/amdgcn/v64df_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalbn.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_signif.o: libm/machine/amdgcn/v64df_signif.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_signif.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_signif.o `test -f 'libm/machine/amdgcn/v64df_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_signif.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_signif.c' object='libm/machine/amdgcn/libm_a-v64df_signif.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_signif.o `test -f 'libm/machine/amdgcn/v64df_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_signif.c - -libm/machine/amdgcn/libm_a-v64df_signif.obj: libm/machine/amdgcn/v64df_signif.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_signif.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_signif.obj `if test -f 'libm/machine/amdgcn/v64df_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_signif.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_signif.c' object='libm/machine/amdgcn/libm_a-v64df_signif.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_signif.obj `if test -f 'libm/machine/amdgcn/v64df_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_signif.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_sin.o: libm/machine/amdgcn/v64df_sin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sin.o `test -f 'libm/machine/amdgcn/v64df_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sin.c' object='libm/machine/amdgcn/libm_a-v64df_sin.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sin.o `test -f 'libm/machine/amdgcn/v64df_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sin.c - -libm/machine/amdgcn/libm_a-v64df_sin.obj: libm/machine/amdgcn/v64df_sin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sin.obj `if test -f 'libm/machine/amdgcn/v64df_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sin.c' object='libm/machine/amdgcn/libm_a-v64df_sin.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sin.obj `if test -f 'libm/machine/amdgcn/v64df_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sin.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_sine.o: libm/machine/amdgcn/v64df_sine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sine.o `test -f 'libm/machine/amdgcn/v64df_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sine.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sine.c' object='libm/machine/amdgcn/libm_a-v64df_sine.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sine.o `test -f 'libm/machine/amdgcn/v64df_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sine.c - -libm/machine/amdgcn/libm_a-v64df_sine.obj: libm/machine/amdgcn/v64df_sine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sine.obj `if test -f 'libm/machine/amdgcn/v64df_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sine.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sine.c' object='libm/machine/amdgcn/libm_a-v64df_sine.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sine.obj `if test -f 'libm/machine/amdgcn/v64df_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sine.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_sineh.o: libm/machine/amdgcn/v64df_sineh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sineh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sineh.o `test -f 'libm/machine/amdgcn/v64df_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sineh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sineh.c' object='libm/machine/amdgcn/libm_a-v64df_sineh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sineh.o `test -f 'libm/machine/amdgcn/v64df_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sineh.c - -libm/machine/amdgcn/libm_a-v64df_sineh.obj: libm/machine/amdgcn/v64df_sineh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sineh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sineh.obj `if test -f 'libm/machine/amdgcn/v64df_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sineh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sineh.c' object='libm/machine/amdgcn/libm_a-v64df_sineh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sineh.obj `if test -f 'libm/machine/amdgcn/v64df_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sineh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_sinh.o: libm/machine/amdgcn/v64df_sinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sinh.o `test -f 'libm/machine/amdgcn/v64df_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sinh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sinh.c' object='libm/machine/amdgcn/libm_a-v64df_sinh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sinh.o `test -f 'libm/machine/amdgcn/v64df_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sinh.c - -libm/machine/amdgcn/libm_a-v64df_sinh.obj: libm/machine/amdgcn/v64df_sinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sinh.obj `if test -f 'libm/machine/amdgcn/v64df_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sinh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sinh.c' object='libm/machine/amdgcn/libm_a-v64df_sinh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sinh.obj `if test -f 'libm/machine/amdgcn/v64df_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sinh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_sqrt.o: libm/machine/amdgcn/v64df_sqrt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sqrt.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.o `test -f 'libm/machine/amdgcn/v64df_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sqrt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sqrt.c' object='libm/machine/amdgcn/libm_a-v64df_sqrt.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.o `test -f 'libm/machine/amdgcn/v64df_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sqrt.c - -libm/machine/amdgcn/libm_a-v64df_sqrt.obj: libm/machine/amdgcn/v64df_sqrt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sqrt.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.obj `if test -f 'libm/machine/amdgcn/v64df_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sqrt.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sqrt.c' object='libm/machine/amdgcn/libm_a-v64df_sqrt.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.obj `if test -f 'libm/machine/amdgcn/v64df_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sqrt.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_tan.o: libm/machine/amdgcn/v64df_tan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tan.o `test -f 'libm/machine/amdgcn/v64df_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tan.c' object='libm/machine/amdgcn/libm_a-v64df_tan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tan.o `test -f 'libm/machine/amdgcn/v64df_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tan.c - -libm/machine/amdgcn/libm_a-v64df_tan.obj: libm/machine/amdgcn/v64df_tan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tan.obj `if test -f 'libm/machine/amdgcn/v64df_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tan.c' object='libm/machine/amdgcn/libm_a-v64df_tan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tan.obj `if test -f 'libm/machine/amdgcn/v64df_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tan.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_tanh.o: libm/machine/amdgcn/v64df_tanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tanh.o `test -f 'libm/machine/amdgcn/v64df_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tanh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tanh.c' object='libm/machine/amdgcn/libm_a-v64df_tanh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tanh.o `test -f 'libm/machine/amdgcn/v64df_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tanh.c - -libm/machine/amdgcn/libm_a-v64df_tanh.obj: libm/machine/amdgcn/v64df_tanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tanh.obj `if test -f 'libm/machine/amdgcn/v64df_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tanh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tanh.c' object='libm/machine/amdgcn/libm_a-v64df_tanh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tanh.obj `if test -f 'libm/machine/amdgcn/v64df_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tanh.c'; fi` - -libm/machine/amdgcn/libm_a-v64df_tgamma.o: libm/machine/amdgcn/v64df_tgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.o `test -f 'libm/machine/amdgcn/v64df_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tgamma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tgamma.c' object='libm/machine/amdgcn/libm_a-v64df_tgamma.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.o `test -f 'libm/machine/amdgcn/v64df_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tgamma.c - -libm/machine/amdgcn/libm_a-v64df_tgamma.obj: libm/machine/amdgcn/v64df_tgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.obj `if test -f 'libm/machine/amdgcn/v64df_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tgamma.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tgamma.c' object='libm/machine/amdgcn/libm_a-v64df_tgamma.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.obj `if test -f 'libm/machine/amdgcn/v64df_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tgamma.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_acos.o: libm/machine/amdgcn/v64sf_acos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acos.o `test -f 'libm/machine/amdgcn/v64sf_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acos.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acos.c' object='libm/machine/amdgcn/libm_a-v64sf_acos.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acos.o `test -f 'libm/machine/amdgcn/v64sf_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acos.c - -libm/machine/amdgcn/libm_a-v64sf_acos.obj: libm/machine/amdgcn/v64sf_acos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acos.obj `if test -f 'libm/machine/amdgcn/v64sf_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acos.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acos.c' object='libm/machine/amdgcn/libm_a-v64sf_acos.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acos.obj `if test -f 'libm/machine/amdgcn/v64sf_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acos.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_acosh.o: libm/machine/amdgcn/v64sf_acosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.o `test -f 'libm/machine/amdgcn/v64sf_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acosh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acosh.c' object='libm/machine/amdgcn/libm_a-v64sf_acosh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.o `test -f 'libm/machine/amdgcn/v64sf_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acosh.c - -libm/machine/amdgcn/libm_a-v64sf_acosh.obj: libm/machine/amdgcn/v64sf_acosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.obj `if test -f 'libm/machine/amdgcn/v64sf_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acosh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acosh.c' object='libm/machine/amdgcn/libm_a-v64sf_acosh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.obj `if test -f 'libm/machine/amdgcn/v64sf_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acosh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_asin.o: libm/machine/amdgcn/v64sf_asin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asin.o `test -f 'libm/machine/amdgcn/v64sf_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asin.c' object='libm/machine/amdgcn/libm_a-v64sf_asin.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asin.o `test -f 'libm/machine/amdgcn/v64sf_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asin.c - -libm/machine/amdgcn/libm_a-v64sf_asin.obj: libm/machine/amdgcn/v64sf_asin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asin.obj `if test -f 'libm/machine/amdgcn/v64sf_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asin.c' object='libm/machine/amdgcn/libm_a-v64sf_asin.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asin.obj `if test -f 'libm/machine/amdgcn/v64sf_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asin.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_asine.o: libm/machine/amdgcn/v64sf_asine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asine.o `test -f 'libm/machine/amdgcn/v64sf_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asine.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asine.c' object='libm/machine/amdgcn/libm_a-v64sf_asine.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asine.o `test -f 'libm/machine/amdgcn/v64sf_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asine.c - -libm/machine/amdgcn/libm_a-v64sf_asine.obj: libm/machine/amdgcn/v64sf_asine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asine.obj `if test -f 'libm/machine/amdgcn/v64sf_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asine.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asine.c' object='libm/machine/amdgcn/libm_a-v64sf_asine.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asine.obj `if test -f 'libm/machine/amdgcn/v64sf_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asine.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_asinh.o: libm/machine/amdgcn/v64sf_asinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.o `test -f 'libm/machine/amdgcn/v64sf_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asinh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asinh.c' object='libm/machine/amdgcn/libm_a-v64sf_asinh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.o `test -f 'libm/machine/amdgcn/v64sf_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asinh.c - -libm/machine/amdgcn/libm_a-v64sf_asinh.obj: libm/machine/amdgcn/v64sf_asinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.obj `if test -f 'libm/machine/amdgcn/v64sf_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asinh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asinh.c' object='libm/machine/amdgcn/libm_a-v64sf_asinh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.obj `if test -f 'libm/machine/amdgcn/v64sf_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asinh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_atan.o: libm/machine/amdgcn/v64sf_atan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan.o `test -f 'libm/machine/amdgcn/v64sf_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan.c' object='libm/machine/amdgcn/libm_a-v64sf_atan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan.o `test -f 'libm/machine/amdgcn/v64sf_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan.c - -libm/machine/amdgcn/libm_a-v64sf_atan.obj: libm/machine/amdgcn/v64sf_atan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan.obj `if test -f 'libm/machine/amdgcn/v64sf_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan.c' object='libm/machine/amdgcn/libm_a-v64sf_atan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan.obj `if test -f 'libm/machine/amdgcn/v64sf_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_atan2.o: libm/machine/amdgcn/v64sf_atan2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.o `test -f 'libm/machine/amdgcn/v64sf_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan2.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan2.c' object='libm/machine/amdgcn/libm_a-v64sf_atan2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.o `test -f 'libm/machine/amdgcn/v64sf_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan2.c - -libm/machine/amdgcn/libm_a-v64sf_atan2.obj: libm/machine/amdgcn/v64sf_atan2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.obj `if test -f 'libm/machine/amdgcn/v64sf_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan2.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan2.c' object='libm/machine/amdgcn/libm_a-v64sf_atan2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.obj `if test -f 'libm/machine/amdgcn/v64sf_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan2.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_atangent.o: libm/machine/amdgcn/v64sf_atangent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atangent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.o `test -f 'libm/machine/amdgcn/v64sf_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atangent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atangent.c' object='libm/machine/amdgcn/libm_a-v64sf_atangent.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.o `test -f 'libm/machine/amdgcn/v64sf_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atangent.c - -libm/machine/amdgcn/libm_a-v64sf_atangent.obj: libm/machine/amdgcn/v64sf_atangent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atangent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.obj `if test -f 'libm/machine/amdgcn/v64sf_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atangent.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atangent.c' object='libm/machine/amdgcn/libm_a-v64sf_atangent.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.obj `if test -f 'libm/machine/amdgcn/v64sf_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atangent.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_atanh.o: libm/machine/amdgcn/v64sf_atanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.o `test -f 'libm/machine/amdgcn/v64sf_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atanh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atanh.c' object='libm/machine/amdgcn/libm_a-v64sf_atanh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.o `test -f 'libm/machine/amdgcn/v64sf_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atanh.c - -libm/machine/amdgcn/libm_a-v64sf_atanh.obj: libm/machine/amdgcn/v64sf_atanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.obj `if test -f 'libm/machine/amdgcn/v64sf_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atanh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atanh.c' object='libm/machine/amdgcn/libm_a-v64sf_atanh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.obj `if test -f 'libm/machine/amdgcn/v64sf_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atanh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_copysign.o: libm/machine/amdgcn/v64sf_copysign.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_copysign.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.o `test -f 'libm/machine/amdgcn/v64sf_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_copysign.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_copysign.c' object='libm/machine/amdgcn/libm_a-v64sf_copysign.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.o `test -f 'libm/machine/amdgcn/v64sf_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_copysign.c - -libm/machine/amdgcn/libm_a-v64sf_copysign.obj: libm/machine/amdgcn/v64sf_copysign.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_copysign.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.obj `if test -f 'libm/machine/amdgcn/v64sf_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_copysign.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_copysign.c' object='libm/machine/amdgcn/libm_a-v64sf_copysign.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.obj `if test -f 'libm/machine/amdgcn/v64sf_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_copysign.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_cos.o: libm/machine/amdgcn/v64sf_cos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cos.o `test -f 'libm/machine/amdgcn/v64sf_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cos.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cos.c' object='libm/machine/amdgcn/libm_a-v64sf_cos.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cos.o `test -f 'libm/machine/amdgcn/v64sf_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cos.c - -libm/machine/amdgcn/libm_a-v64sf_cos.obj: libm/machine/amdgcn/v64sf_cos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cos.obj `if test -f 'libm/machine/amdgcn/v64sf_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cos.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cos.c' object='libm/machine/amdgcn/libm_a-v64sf_cos.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cos.obj `if test -f 'libm/machine/amdgcn/v64sf_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cos.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_cosh.o: libm/machine/amdgcn/v64sf_cosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.o `test -f 'libm/machine/amdgcn/v64sf_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cosh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cosh.c' object='libm/machine/amdgcn/libm_a-v64sf_cosh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.o `test -f 'libm/machine/amdgcn/v64sf_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cosh.c - -libm/machine/amdgcn/libm_a-v64sf_cosh.obj: libm/machine/amdgcn/v64sf_cosh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.obj `if test -f 'libm/machine/amdgcn/v64sf_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cosh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cosh.c' object='libm/machine/amdgcn/libm_a-v64sf_cosh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.obj `if test -f 'libm/machine/amdgcn/v64sf_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cosh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_erf.o: libm/machine/amdgcn/v64sf_erf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_erf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_erf.o `test -f 'libm/machine/amdgcn/v64sf_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_erf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_erf.c' object='libm/machine/amdgcn/libm_a-v64sf_erf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_erf.o `test -f 'libm/machine/amdgcn/v64sf_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_erf.c - -libm/machine/amdgcn/libm_a-v64sf_erf.obj: libm/machine/amdgcn/v64sf_erf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_erf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_erf.obj `if test -f 'libm/machine/amdgcn/v64sf_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_erf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_erf.c' object='libm/machine/amdgcn/libm_a-v64sf_erf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_erf.obj `if test -f 'libm/machine/amdgcn/v64sf_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_erf.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_exp.o: libm/machine/amdgcn/v64sf_exp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp.o `test -f 'libm/machine/amdgcn/v64sf_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp.c' object='libm/machine/amdgcn/libm_a-v64sf_exp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp.o `test -f 'libm/machine/amdgcn/v64sf_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp.c - -libm/machine/amdgcn/libm_a-v64sf_exp.obj: libm/machine/amdgcn/v64sf_exp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp.obj `if test -f 'libm/machine/amdgcn/v64sf_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp.c' object='libm/machine/amdgcn/libm_a-v64sf_exp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp.obj `if test -f 'libm/machine/amdgcn/v64sf_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_exp2.o: libm/machine/amdgcn/v64sf_exp2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.o `test -f 'libm/machine/amdgcn/v64sf_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp2.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp2.c' object='libm/machine/amdgcn/libm_a-v64sf_exp2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.o `test -f 'libm/machine/amdgcn/v64sf_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp2.c - -libm/machine/amdgcn/libm_a-v64sf_exp2.obj: libm/machine/amdgcn/v64sf_exp2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.obj `if test -f 'libm/machine/amdgcn/v64sf_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp2.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp2.c' object='libm/machine/amdgcn/libm_a-v64sf_exp2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.obj `if test -f 'libm/machine/amdgcn/v64sf_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp2.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_finite.o: libm/machine/amdgcn/v64sf_finite.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_finite.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_finite.o `test -f 'libm/machine/amdgcn/v64sf_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_finite.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_finite.c' object='libm/machine/amdgcn/libm_a-v64sf_finite.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_finite.o `test -f 'libm/machine/amdgcn/v64sf_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_finite.c - -libm/machine/amdgcn/libm_a-v64sf_finite.obj: libm/machine/amdgcn/v64sf_finite.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_finite.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_finite.obj `if test -f 'libm/machine/amdgcn/v64sf_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_finite.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_finite.c' object='libm/machine/amdgcn/libm_a-v64sf_finite.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_finite.obj `if test -f 'libm/machine/amdgcn/v64sf_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_finite.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_fmod.o: libm/machine/amdgcn/v64sf_fmod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_fmod.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.o `test -f 'libm/machine/amdgcn/v64sf_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_fmod.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_fmod.c' object='libm/machine/amdgcn/libm_a-v64sf_fmod.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.o `test -f 'libm/machine/amdgcn/v64sf_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_fmod.c - -libm/machine/amdgcn/libm_a-v64sf_fmod.obj: libm/machine/amdgcn/v64sf_fmod.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_fmod.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.obj `if test -f 'libm/machine/amdgcn/v64sf_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_fmod.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_fmod.c' object='libm/machine/amdgcn/libm_a-v64sf_fmod.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.obj `if test -f 'libm/machine/amdgcn/v64sf_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_fmod.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_gamma.o: libm/machine/amdgcn/v64sf_gamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_gamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.o `test -f 'libm/machine/amdgcn/v64sf_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_gamma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_gamma.c' object='libm/machine/amdgcn/libm_a-v64sf_gamma.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.o `test -f 'libm/machine/amdgcn/v64sf_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_gamma.c - -libm/machine/amdgcn/libm_a-v64sf_gamma.obj: libm/machine/amdgcn/v64sf_gamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_gamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.obj `if test -f 'libm/machine/amdgcn/v64sf_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_gamma.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_gamma.c' object='libm/machine/amdgcn/libm_a-v64sf_gamma.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.obj `if test -f 'libm/machine/amdgcn/v64sf_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_gamma.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_hypot.o: libm/machine/amdgcn/v64sf_hypot.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_hypot.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.o `test -f 'libm/machine/amdgcn/v64sf_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_hypot.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_hypot.c' object='libm/machine/amdgcn/libm_a-v64sf_hypot.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.o `test -f 'libm/machine/amdgcn/v64sf_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_hypot.c - -libm/machine/amdgcn/libm_a-v64sf_hypot.obj: libm/machine/amdgcn/v64sf_hypot.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_hypot.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.obj `if test -f 'libm/machine/amdgcn/v64sf_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_hypot.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_hypot.c' object='libm/machine/amdgcn/libm_a-v64sf_hypot.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.obj `if test -f 'libm/machine/amdgcn/v64sf_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_hypot.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_ilogb.o: libm/machine/amdgcn/v64sf_ilogb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ilogb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.o `test -f 'libm/machine/amdgcn/v64sf_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ilogb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ilogb.c' object='libm/machine/amdgcn/libm_a-v64sf_ilogb.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.o `test -f 'libm/machine/amdgcn/v64sf_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ilogb.c - -libm/machine/amdgcn/libm_a-v64sf_ilogb.obj: libm/machine/amdgcn/v64sf_ilogb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ilogb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.obj `if test -f 'libm/machine/amdgcn/v64sf_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ilogb.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ilogb.c' object='libm/machine/amdgcn/libm_a-v64sf_ilogb.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.obj `if test -f 'libm/machine/amdgcn/v64sf_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ilogb.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_isnan.o: libm/machine/amdgcn/v64sf_isnan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_isnan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.o `test -f 'libm/machine/amdgcn/v64sf_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_isnan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_isnan.c' object='libm/machine/amdgcn/libm_a-v64sf_isnan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.o `test -f 'libm/machine/amdgcn/v64sf_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_isnan.c - -libm/machine/amdgcn/libm_a-v64sf_isnan.obj: libm/machine/amdgcn/v64sf_isnan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_isnan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.obj `if test -f 'libm/machine/amdgcn/v64sf_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_isnan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_isnan.c' object='libm/machine/amdgcn/libm_a-v64sf_isnan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.obj `if test -f 'libm/machine/amdgcn/v64sf_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_isnan.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_ispos.o: libm/machine/amdgcn/v64sf_ispos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ispos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.o `test -f 'libm/machine/amdgcn/v64sf_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ispos.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ispos.c' object='libm/machine/amdgcn/libm_a-v64sf_ispos.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.o `test -f 'libm/machine/amdgcn/v64sf_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ispos.c - -libm/machine/amdgcn/libm_a-v64sf_ispos.obj: libm/machine/amdgcn/v64sf_ispos.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ispos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.obj `if test -f 'libm/machine/amdgcn/v64sf_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ispos.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ispos.c' object='libm/machine/amdgcn/libm_a-v64sf_ispos.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.obj `if test -f 'libm/machine/amdgcn/v64sf_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ispos.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_lgamma.o: libm/machine/amdgcn/v64sf_lgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.o `test -f 'libm/machine/amdgcn/v64sf_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.o `test -f 'libm/machine/amdgcn/v64sf_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma.c - -libm/machine/amdgcn/libm_a-v64sf_lgamma.obj: libm/machine/amdgcn/v64sf_lgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o: libm/machine/amdgcn/v64sf_lgamma_r.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o `test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma_r.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o `test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma_r.c - -libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj: libm/machine/amdgcn/v64sf_lgamma_r.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma_r.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma_r.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_log.o: libm/machine/amdgcn/v64sf_log.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log.o `test -f 'libm/machine/amdgcn/v64sf_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log.c' object='libm/machine/amdgcn/libm_a-v64sf_log.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log.o `test -f 'libm/machine/amdgcn/v64sf_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log.c - -libm/machine/amdgcn/libm_a-v64sf_log.obj: libm/machine/amdgcn/v64sf_log.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log.obj `if test -f 'libm/machine/amdgcn/v64sf_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log.c' object='libm/machine/amdgcn/libm_a-v64sf_log.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log.obj `if test -f 'libm/machine/amdgcn/v64sf_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_log10.o: libm/machine/amdgcn/v64sf_log10.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log10.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log10.o `test -f 'libm/machine/amdgcn/v64sf_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log10.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log10.c' object='libm/machine/amdgcn/libm_a-v64sf_log10.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log10.o `test -f 'libm/machine/amdgcn/v64sf_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log10.c - -libm/machine/amdgcn/libm_a-v64sf_log10.obj: libm/machine/amdgcn/v64sf_log10.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log10.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log10.obj `if test -f 'libm/machine/amdgcn/v64sf_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log10.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log10.c' object='libm/machine/amdgcn/libm_a-v64sf_log10.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log10.obj `if test -f 'libm/machine/amdgcn/v64sf_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log10.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_log2.o: libm/machine/amdgcn/v64sf_log2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log2.o `test -f 'libm/machine/amdgcn/v64sf_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log2.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log2.c' object='libm/machine/amdgcn/libm_a-v64sf_log2.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log2.o `test -f 'libm/machine/amdgcn/v64sf_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log2.c - -libm/machine/amdgcn/libm_a-v64sf_log2.obj: libm/machine/amdgcn/v64sf_log2.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log2.obj `if test -f 'libm/machine/amdgcn/v64sf_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log2.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log2.c' object='libm/machine/amdgcn/libm_a-v64sf_log2.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log2.obj `if test -f 'libm/machine/amdgcn/v64sf_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log2.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_modf.o: libm/machine/amdgcn/v64sf_modf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_modf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_modf.o `test -f 'libm/machine/amdgcn/v64sf_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_modf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_modf.c' object='libm/machine/amdgcn/libm_a-v64sf_modf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_modf.o `test -f 'libm/machine/amdgcn/v64sf_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_modf.c - -libm/machine/amdgcn/libm_a-v64sf_modf.obj: libm/machine/amdgcn/v64sf_modf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_modf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_modf.obj `if test -f 'libm/machine/amdgcn/v64sf_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_modf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_modf.c' object='libm/machine/amdgcn/libm_a-v64sf_modf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_modf.obj `if test -f 'libm/machine/amdgcn/v64sf_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_modf.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_numtest.o: libm/machine/amdgcn/v64sf_numtest.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_numtest.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.o `test -f 'libm/machine/amdgcn/v64sf_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_numtest.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_numtest.c' object='libm/machine/amdgcn/libm_a-v64sf_numtest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.o `test -f 'libm/machine/amdgcn/v64sf_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_numtest.c - -libm/machine/amdgcn/libm_a-v64sf_numtest.obj: libm/machine/amdgcn/v64sf_numtest.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_numtest.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.obj `if test -f 'libm/machine/amdgcn/v64sf_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_numtest.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_numtest.c' object='libm/machine/amdgcn/libm_a-v64sf_numtest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.obj `if test -f 'libm/machine/amdgcn/v64sf_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_numtest.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_pow.o: libm/machine/amdgcn/v64sf_pow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_pow.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_pow.o `test -f 'libm/machine/amdgcn/v64sf_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_pow.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_pow.c' object='libm/machine/amdgcn/libm_a-v64sf_pow.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_pow.o `test -f 'libm/machine/amdgcn/v64sf_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_pow.c - -libm/machine/amdgcn/libm_a-v64sf_pow.obj: libm/machine/amdgcn/v64sf_pow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_pow.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_pow.obj `if test -f 'libm/machine/amdgcn/v64sf_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_pow.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_pow.c' object='libm/machine/amdgcn/libm_a-v64sf_pow.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_pow.obj `if test -f 'libm/machine/amdgcn/v64sf_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_pow.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_remainder.o: libm/machine/amdgcn/v64sf_remainder.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_remainder.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.o `test -f 'libm/machine/amdgcn/v64sf_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_remainder.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_remainder.c' object='libm/machine/amdgcn/libm_a-v64sf_remainder.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.o `test -f 'libm/machine/amdgcn/v64sf_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_remainder.c - -libm/machine/amdgcn/libm_a-v64sf_remainder.obj: libm/machine/amdgcn/v64sf_remainder.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_remainder.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.obj `if test -f 'libm/machine/amdgcn/v64sf_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_remainder.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_remainder.c' object='libm/machine/amdgcn/libm_a-v64sf_remainder.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.obj `if test -f 'libm/machine/amdgcn/v64sf_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_remainder.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_rint.o: libm/machine/amdgcn/v64sf_rint.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_rint.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_rint.o `test -f 'libm/machine/amdgcn/v64sf_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_rint.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_rint.c' object='libm/machine/amdgcn/libm_a-v64sf_rint.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_rint.o `test -f 'libm/machine/amdgcn/v64sf_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_rint.c - -libm/machine/amdgcn/libm_a-v64sf_rint.obj: libm/machine/amdgcn/v64sf_rint.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_rint.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_rint.obj `if test -f 'libm/machine/amdgcn/v64sf_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_rint.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_rint.c' object='libm/machine/amdgcn/libm_a-v64sf_rint.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_rint.obj `if test -f 'libm/machine/amdgcn/v64sf_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_rint.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_scalb.o: libm/machine/amdgcn/v64sf_scalb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.o `test -f 'libm/machine/amdgcn/v64sf_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalb.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalb.c' object='libm/machine/amdgcn/libm_a-v64sf_scalb.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.o `test -f 'libm/machine/amdgcn/v64sf_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalb.c - -libm/machine/amdgcn/libm_a-v64sf_scalb.obj: libm/machine/amdgcn/v64sf_scalb.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.obj `if test -f 'libm/machine/amdgcn/v64sf_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalb.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalb.c' object='libm/machine/amdgcn/libm_a-v64sf_scalb.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.obj `if test -f 'libm/machine/amdgcn/v64sf_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalb.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_scalbn.o: libm/machine/amdgcn/v64sf_scalbn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalbn.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.o `test -f 'libm/machine/amdgcn/v64sf_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalbn.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalbn.c' object='libm/machine/amdgcn/libm_a-v64sf_scalbn.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.o `test -f 'libm/machine/amdgcn/v64sf_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalbn.c - -libm/machine/amdgcn/libm_a-v64sf_scalbn.obj: libm/machine/amdgcn/v64sf_scalbn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalbn.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.obj `if test -f 'libm/machine/amdgcn/v64sf_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalbn.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalbn.c' object='libm/machine/amdgcn/libm_a-v64sf_scalbn.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.obj `if test -f 'libm/machine/amdgcn/v64sf_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalbn.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_signif.o: libm/machine/amdgcn/v64sf_signif.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_signif.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_signif.o `test -f 'libm/machine/amdgcn/v64sf_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_signif.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_signif.c' object='libm/machine/amdgcn/libm_a-v64sf_signif.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_signif.o `test -f 'libm/machine/amdgcn/v64sf_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_signif.c - -libm/machine/amdgcn/libm_a-v64sf_signif.obj: libm/machine/amdgcn/v64sf_signif.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_signif.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_signif.obj `if test -f 'libm/machine/amdgcn/v64sf_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_signif.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_signif.c' object='libm/machine/amdgcn/libm_a-v64sf_signif.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_signif.obj `if test -f 'libm/machine/amdgcn/v64sf_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_signif.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_sin.o: libm/machine/amdgcn/v64sf_sin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sin.o `test -f 'libm/machine/amdgcn/v64sf_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sin.c' object='libm/machine/amdgcn/libm_a-v64sf_sin.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sin.o `test -f 'libm/machine/amdgcn/v64sf_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sin.c - -libm/machine/amdgcn/libm_a-v64sf_sin.obj: libm/machine/amdgcn/v64sf_sin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sin.obj `if test -f 'libm/machine/amdgcn/v64sf_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sin.c' object='libm/machine/amdgcn/libm_a-v64sf_sin.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sin.obj `if test -f 'libm/machine/amdgcn/v64sf_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sin.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_sine.o: libm/machine/amdgcn/v64sf_sine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sine.o `test -f 'libm/machine/amdgcn/v64sf_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sine.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sine.c' object='libm/machine/amdgcn/libm_a-v64sf_sine.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sine.o `test -f 'libm/machine/amdgcn/v64sf_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sine.c - -libm/machine/amdgcn/libm_a-v64sf_sine.obj: libm/machine/amdgcn/v64sf_sine.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sine.obj `if test -f 'libm/machine/amdgcn/v64sf_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sine.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sine.c' object='libm/machine/amdgcn/libm_a-v64sf_sine.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sine.obj `if test -f 'libm/machine/amdgcn/v64sf_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sine.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_sineh.o: libm/machine/amdgcn/v64sf_sineh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sineh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.o `test -f 'libm/machine/amdgcn/v64sf_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sineh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sineh.c' object='libm/machine/amdgcn/libm_a-v64sf_sineh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.o `test -f 'libm/machine/amdgcn/v64sf_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sineh.c - -libm/machine/amdgcn/libm_a-v64sf_sineh.obj: libm/machine/amdgcn/v64sf_sineh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sineh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.obj `if test -f 'libm/machine/amdgcn/v64sf_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sineh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sineh.c' object='libm/machine/amdgcn/libm_a-v64sf_sineh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.obj `if test -f 'libm/machine/amdgcn/v64sf_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sineh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_sinh.o: libm/machine/amdgcn/v64sf_sinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.o `test -f 'libm/machine/amdgcn/v64sf_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sinh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sinh.c' object='libm/machine/amdgcn/libm_a-v64sf_sinh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.o `test -f 'libm/machine/amdgcn/v64sf_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sinh.c - -libm/machine/amdgcn/libm_a-v64sf_sinh.obj: libm/machine/amdgcn/v64sf_sinh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.obj `if test -f 'libm/machine/amdgcn/v64sf_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sinh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sinh.c' object='libm/machine/amdgcn/libm_a-v64sf_sinh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.obj `if test -f 'libm/machine/amdgcn/v64sf_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sinh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_sqrt.o: libm/machine/amdgcn/v64sf_sqrt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sqrt.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.o `test -f 'libm/machine/amdgcn/v64sf_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sqrt.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sqrt.c' object='libm/machine/amdgcn/libm_a-v64sf_sqrt.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.o `test -f 'libm/machine/amdgcn/v64sf_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sqrt.c - -libm/machine/amdgcn/libm_a-v64sf_sqrt.obj: libm/machine/amdgcn/v64sf_sqrt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sqrt.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.obj `if test -f 'libm/machine/amdgcn/v64sf_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sqrt.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sqrt.c' object='libm/machine/amdgcn/libm_a-v64sf_sqrt.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.obj `if test -f 'libm/machine/amdgcn/v64sf_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sqrt.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_tan.o: libm/machine/amdgcn/v64sf_tan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tan.o `test -f 'libm/machine/amdgcn/v64sf_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tan.c' object='libm/machine/amdgcn/libm_a-v64sf_tan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tan.o `test -f 'libm/machine/amdgcn/v64sf_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tan.c - -libm/machine/amdgcn/libm_a-v64sf_tan.obj: libm/machine/amdgcn/v64sf_tan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tan.obj `if test -f 'libm/machine/amdgcn/v64sf_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tan.c' object='libm/machine/amdgcn/libm_a-v64sf_tan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tan.obj `if test -f 'libm/machine/amdgcn/v64sf_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tan.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_tanh.o: libm/machine/amdgcn/v64sf_tanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.o `test -f 'libm/machine/amdgcn/v64sf_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tanh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tanh.c' object='libm/machine/amdgcn/libm_a-v64sf_tanh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.o `test -f 'libm/machine/amdgcn/v64sf_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tanh.c - -libm/machine/amdgcn/libm_a-v64sf_tanh.obj: libm/machine/amdgcn/v64sf_tanh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.obj `if test -f 'libm/machine/amdgcn/v64sf_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tanh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tanh.c' object='libm/machine/amdgcn/libm_a-v64sf_tanh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.obj `if test -f 'libm/machine/amdgcn/v64sf_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tanh.c'; fi` - -libm/machine/amdgcn/libm_a-v64sf_tgamma.o: libm/machine/amdgcn/v64sf_tgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.o `test -f 'libm/machine/amdgcn/v64sf_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tgamma.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_tgamma.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.o `test -f 'libm/machine/amdgcn/v64sf_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tgamma.c - -libm/machine/amdgcn/libm_a-v64sf_tgamma.obj: libm/machine/amdgcn/v64sf_tgamma.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tgamma.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_tgamma.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tgamma.c'; fi` - libm/machine/arm/libm_a-e_sqrt.o: libm/machine/arm/e_sqrt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/arm/libm_a-e_sqrt.o -MD -MP -MF libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Tpo -c -o libm/machine/arm/libm_a-e_sqrt.o `test -f 'libm/machine/arm/e_sqrt.c' || echo '$(srcdir)/'`libm/machine/arm/e_sqrt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Tpo libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Po @@ -48291,8 +46518,6 @@ distclean-generic: -rm -f libm/fenv/$(am__dirstamp) -rm -f libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/aarch64/$(am__dirstamp) - -rm -f libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) - -rm -f libm/machine/amdgcn/$(am__dirstamp) -rm -f libm/machine/arm/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/arm/$(am__dirstamp) -rm -f libm/machine/i386/$(DEPDIR)/$(am__dirstamp) @@ -48330,7 +46555,7 @@ clean-am: clean-aminfo clean-checkPROGRAMS clean-generic clean-local \ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-compile \ distclean-generic distclean-hdr distclean-local distclean-tags @@ -48468,7 +46693,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/newlib/configure b/newlib/configure index f29aca5d39..0b6ec15e98 100755 --- a/newlib/configure +++ b/newlib/configure @@ -623,8 +623,6 @@ HAVE_LIBM_MACHINE_I386_FALSE HAVE_LIBM_MACHINE_I386_TRUE HAVE_LIBM_MACHINE_ARM_FALSE HAVE_LIBM_MACHINE_ARM_TRUE -HAVE_LIBM_MACHINE_AMDGCN_FALSE -HAVE_LIBM_MACHINE_AMDGCN_TRUE HAVE_LIBM_MACHINE_AARCH64_FALSE HAVE_LIBM_MACHINE_AARCH64_TRUE HAS_NDS32_FPU_DP_FALSE @@ -6218,14 +6216,6 @@ else HAVE_LIBM_MACHINE_AARCH64_FALSE= fi - if test "${libm_machine_dir}" = "amdgcn"; then - HAVE_LIBM_MACHINE_AMDGCN_TRUE= - HAVE_LIBM_MACHINE_AMDGCN_FALSE='#' -else - HAVE_LIBM_MACHINE_AMDGCN_TRUE='#' - HAVE_LIBM_MACHINE_AMDGCN_FALSE= -fi - if test "${libm_machine_dir}" = "arm"; then HAVE_LIBM_MACHINE_ARM_TRUE= HAVE_LIBM_MACHINE_ARM_FALSE='#' @@ -7885,10 +7875,6 @@ if test -z "${HAVE_LIBM_MACHINE_AARCH64_TRUE}" && test -z "${HAVE_LIBM_MACHINE_A as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${HAVE_LIBM_MACHINE_AMDGCN_TRUE}" && test -z "${HAVE_LIBM_MACHINE_AMDGCN_FALSE}"; then - as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AMDGCN\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${HAVE_LIBM_MACHINE_ARM_TRUE}" && test -z "${HAVE_LIBM_MACHINE_ARM_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/newlib/configure.host b/newlib/configure.host index 7157877ffa..32d1436baa 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -119,7 +119,6 @@ case "${host_cpu}" in amdgcn*) newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__" machine_dir=amdgcn - libm_machine_dir=amdgcn newlib_cv_initfinit_array=yes ;; arc*) diff --git a/newlib/libm/Makefile.inc b/newlib/libm/Makefile.inc index 9d1469555d..7fda120e53 100644 --- a/newlib/libm/Makefile.inc +++ b/newlib/libm/Makefile.inc @@ -51,9 +51,6 @@ include %D%/test/Makefile.inc if HAVE_LIBM_MACHINE_AARCH64 include %D%/machine/aarch64/Makefile.inc endif -if HAVE_LIBM_MACHINE_AMDGCN -include %D%/machine/amdgcn/Makefile.inc -endif if HAVE_LIBM_MACHINE_ARM include %D%/machine/arm/Makefile.inc endif diff --git a/newlib/libm/acinclude.m4 b/newlib/libm/acinclude.m4 index f7f9f534f8..0be95a3b29 100644 --- a/newlib/libm/acinclude.m4 +++ b/newlib/libm/acinclude.m4 @@ -4,7 +4,7 @@ m4_include([libm/machine/nds32/acinclude.m4]) dnl Define HAVE_LIBM_MACHINE_ automake conditionals. m4_foreach_w([MACHINE], [ - aarch64 amdgcn arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 + aarch64 arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 ], [dnl AM_CONDITIONAL([HAVE_LIBM_MACHINE_]m4_toupper(MACHINE), test "${libm_machine_dir}" = "MACHINE") ]) diff --git a/newlib/libm/machine/amdgcn/Makefile.inc b/newlib/libm/machine/amdgcn/Makefile.inc deleted file mode 100644 index 9d6a18514b..0000000000 --- a/newlib/libm/machine/amdgcn/Makefile.inc +++ /dev/null @@ -1,91 +0,0 @@ -%C%_src = \ - %D%/v64_mathcnst.c \ - %D%/v64_reent.c \ - %D%/v64df_acos.c \ - %D%/v64df_acosh.c \ - %D%/v64df_asin.c \ - %D%/v64df_asine.c \ - %D%/v64df_asinh.c \ - %D%/v64df_atan.c \ - %D%/v64df_atan2.c \ - %D%/v64df_atangent.c \ - %D%/v64df_atanh.c \ - %D%/v64df_copysign.c \ - %D%/v64df_cos.c \ - %D%/v64df_cosh.c \ - %D%/v64df_erf.c \ - %D%/v64df_exp.c \ - %D%/v64df_exp2.c \ - %D%/v64df_finite.c \ - %D%/v64df_fmod.c \ - %D%/v64df_gamma.c \ - %D%/v64df_hypot.c \ - %D%/v64df_ilogb.c \ - %D%/v64df_isnan.c \ - %D%/v64df_ispos.c \ - %D%/v64df_lgamma.c \ - %D%/v64df_lgamma_r.c \ - %D%/v64df_log.c \ - %D%/v64df_log10.c \ - %D%/v64df_log2.c \ - %D%/v64df_modf.c \ - %D%/v64df_numtest.c \ - %D%/v64df_pow.c \ - %D%/v64df_remainder.c \ - %D%/v64df_rint.c \ - %D%/v64df_scalb.c \ - %D%/v64df_scalbn.c \ - %D%/v64df_signif.c \ - %D%/v64df_sin.c \ - %D%/v64df_sine.c \ - %D%/v64df_sineh.c \ - %D%/v64df_sinh.c \ - %D%/v64df_sqrt.c \ - %D%/v64df_tan.c \ - %D%/v64df_tanh.c \ - %D%/v64df_tgamma.c \ - %D%/v64sf_acos.c \ - %D%/v64sf_acosh.c \ - %D%/v64sf_asin.c \ - %D%/v64sf_asine.c \ - %D%/v64sf_asinh.c \ - %D%/v64sf_atan.c \ - %D%/v64sf_atan2.c \ - %D%/v64sf_atangent.c \ - %D%/v64sf_atanh.c \ - %D%/v64sf_copysign.c \ - %D%/v64sf_cos.c \ - %D%/v64sf_cosh.c \ - %D%/v64sf_erf.c \ - %D%/v64sf_exp.c \ - %D%/v64sf_exp2.c \ - %D%/v64sf_finite.c \ - %D%/v64sf_fmod.c \ - %D%/v64sf_gamma.c \ - %D%/v64sf_hypot.c \ - %D%/v64sf_ilogb.c \ - %D%/v64sf_isnan.c \ - %D%/v64sf_ispos.c \ - %D%/v64sf_lgamma.c \ - %D%/v64sf_lgamma_r.c \ - %D%/v64sf_log.c \ - %D%/v64sf_log10.c \ - %D%/v64sf_log2.c \ - %D%/v64sf_modf.c \ - %D%/v64sf_numtest.c \ - %D%/v64sf_pow.c \ - %D%/v64sf_remainder.c \ - %D%/v64sf_rint.c \ - %D%/v64sf_scalb.c \ - %D%/v64sf_scalbn.c \ - %D%/v64sf_signif.c \ - %D%/v64sf_sin.c \ - %D%/v64sf_sine.c \ - %D%/v64sf_sineh.c \ - %D%/v64sf_sinh.c \ - %D%/v64sf_sqrt.c \ - %D%/v64sf_tan.c \ - %D%/v64sf_tanh.c \ - %D%/v64sf_tgamma.c - -libm_a_SOURCES += $(%C%_src) diff --git a/newlib/libm/machine/amdgcn/amdgcnmach.h b/newlib/libm/machine/amdgcn/amdgcnmach.h deleted file mode 100644 index 4436a95082..0000000000 --- a/newlib/libm/machine/amdgcn/amdgcnmach.h +++ /dev/null @@ -1,484 +0,0 @@ -/* Optimization at -O2 and above currently result in ICEs when converting - between vector types. */ -#pragma GCC optimize ("O1") - -#include -#include -#include - -typedef float v2sf __attribute__ ((vector_size (8))); -typedef float v4sf __attribute__ ((vector_size (16))); -typedef float v8sf __attribute__ ((vector_size (32))); -typedef float v16sf __attribute__ ((vector_size (64))); -typedef float v32sf __attribute__ ((vector_size (128))); -typedef float v64sf __attribute__ ((vector_size (256))); - -typedef double v2df __attribute__ ((vector_size (16))); -typedef double v4df __attribute__ ((vector_size (32))); -typedef double v8df __attribute__ ((vector_size (64))); -typedef double v16df __attribute__ ((vector_size (128))); -typedef double v32df __attribute__ ((vector_size (256))); -typedef double v64df __attribute__ ((vector_size (512))); - -typedef int v2si __attribute__ ((vector_size (8))); -typedef int v4si __attribute__ ((vector_size (16))); -typedef int v8si __attribute__ ((vector_size (32))); -typedef int v16si __attribute__ ((vector_size (64))); -typedef int v32si __attribute__ ((vector_size (128))); -typedef int v64si __attribute__ ((vector_size (256))); - -typedef unsigned int v64usi __attribute__ ((vector_size (256))); - -typedef long v2di __attribute__ ((vector_size (16))); -typedef long v4di __attribute__ ((vector_size (32))); -typedef long v8di __attribute__ ((vector_size (64))); -typedef long v16di __attribute__ ((vector_size (128))); -typedef long v32di __attribute__ ((vector_size (256))); -typedef long v64di __attribute__ ((vector_size (512))); - -typedef union { - v2sf t_v2sf; - v4sf t_v4sf; - v8sf t_v8sf; - v16sf t_v16sf; - v32sf t_v32sf; - v64sf t_v64sf; - - v2df t_v2df; - v4df t_v4df; - v8df t_v8df; - v16df t_v16df; - v32df t_v32df; - v64df t_v64df; - - v2si t_v2si; - v4si t_v4si; - v8si t_v8si; - v16si t_v16si; - v32si t_v32si; - v64si t_v64si; - - v64usi t_v64usi; - - v2di t_v2di; - v4di t_v4di; - v8di t_v8di; - v16di t_v16di; - v32di t_v32di; - v64di t_v64di; -} vector_union; - -/* Cast between vectors with a different number of elements. */ - -#define RESIZE_VECTOR(to_t, from) \ -({ \ - __auto_type __from = (from); \ - *((to_t *) &__from); \ -}) - -/* Bit-wise cast vector FROM to type TO_T. */ - -#define CAST_VECTOR(to_t, from) \ -({ \ - _Static_assert (sizeof (to_t) == sizeof (from)); \ - union { \ - typeof (from) __from; \ - to_t __to; \ - } __tmp; \ - __tmp.__from = (from); \ - __tmp.__to; \ -}) - -#define EXTRACT_WORDS(hi, lo, x) \ -do { \ - vector_union __tmp; \ - __tmp.t_v64df = (x); \ - hi = __builtin_convertvector (__tmp.t_v64di >> 32, typeof (hi)); \ - lo = __builtin_convertvector (__tmp.t_v64di & 0xffffffff, typeof (lo)); \ -} while (0) - -#define INSERT_WORDS(x, hi, lo, cond) \ -do { \ - vector_union __tmp; \ - __tmp.t_v64di = __builtin_convertvector (hi, v64di) << 32 | \ - __builtin_convertvector (lo, v64di) & 0xffffffff; \ - VECTOR_COND_MOVE (x, __tmp.t_v64df, cond); \ -} while (0) - -#define GET_HIGH_WORD(x, y, cond) \ -do { \ - vector_union __tmp; \ - __tmp.t_v64df = (y); \ - VECTOR_COND_MOVE (x, __builtin_convertvector (__tmp.t_v64di >> 32, v64si), \ - (cond)); \ -} while (0) - -#define GET_LOW_WORD(x, y, cond) \ -do { \ - vector_union __tmp; \ - __tmp.t_v64df = (y); \ - VECTOR_COND_MOVE (x, __builtin_convertvector (__tmp.t_v64di & 0xffffffff, \ - v64si), (cond)); \ -} while (0) - -#define SET_HIGH_WORD(x, y, cond) \ -do { \ - vector_union __tmp; \ - __tmp.t_v64df = x; \ - __tmp.t_v64di &= 0xffffffff; \ - __tmp.t_v64di |= __builtin_convertvector (y, v64di) << 32; \ - VECTOR_COND_MOVE (x, __tmp.t_v64df, (cond)); \ -} while (0) - -#define SET_LOW_WORD(x, y, cond) \ -do { \ - vector_union __tmp; \ - __tmp.t_v64df = x; \ - __tmp.t_v64di &= 0xffffffff00000000ULL; \ - __tmp.t_v64di |= __builtin_convertvector (y, v64di); \ - VECTOR_COND_MOVE (x, __tmp.t_v64df, (cond)); \ - } while (0) - -#define GET_FLOAT_WORD(x, y, cond) \ - VECTOR_COND_MOVE(x, CAST_VECTOR(v64si, (y)), (cond)) - -#define SET_FLOAT_WORD(x, y, cond) \ - VECTOR_COND_MOVE(x, CAST_VECTOR(v64sf, (y)), (cond)) - -#define NO_COND __mask - -/* Note - __mask is _not_ accounted for in VECTOR_MERGE! */ -#define VECTOR_MERGE(vec1, vec2, cond) \ -({ \ - _Static_assert (__builtin_types_compatible_p (typeof (vec1), typeof (vec2))); \ - union { \ - typeof (vec1) val; \ - v64si t_v64si; \ - v64di t_v64di; \ - } __vec1, __vec2, __res; \ - __vec1.val = (vec1); \ - __vec2.val = (vec2); \ - __builtin_choose_expr ( \ - sizeof (vec1) == sizeof (v64si), \ - ({ \ - v64si __bitmask = __builtin_convertvector ((cond), v64si); \ - __res.t_v64si = (__vec1.t_v64si & __bitmask) \ - | (__vec2.t_v64si & ~__bitmask); \ - }), \ - ({ \ - v64di __bitmask = __builtin_convertvector ((cond), v64di); \ - __res.t_v64di = (__vec1.t_v64di & __bitmask) \ - | (__vec2.t_v64di & ~__bitmask); \ - })); \ - __res.val; \ -}) - -#define VECTOR_RETURN(retval, cond) \ -do { \ - _Static_assert (__builtin_types_compatible_p (typeof (retval), typeof (__ret))); \ - __auto_type __cond = __builtin_convertvector ((cond), typeof (__mask)); \ - __auto_type __retval = (retval); \ - VECTOR_COND_MOVE (__ret, __retval, __cond); \ - __mask &= ~__cond; \ -} while (0) - -#define VECTOR_COND_MOVE(var, val, cond) \ -do { \ - _Static_assert (__builtin_types_compatible_p (typeof (var), typeof (val))); \ - __auto_type __cond = __builtin_convertvector ((cond), typeof (__mask)); \ - var = VECTOR_MERGE ((val), var, __cond & __mask); \ -} while (0) - -#define VECTOR_IF(cond, cond_var) \ -{ \ - __auto_type cond_var = (cond); \ - __auto_type __inv_cond = ~cond_var; \ - if (!ALL_ZEROES_P (cond_var)) \ - { - -#define VECTOR_ELSEIF(cond, cond_var) \ - } \ - cond_var = __inv_cond & (cond); \ - __inv_cond &= ~(cond); \ - if (!ALL_ZEROES_P (cond_var)) \ - { - -#define VECTOR_ELSE(cond_var) \ - } \ - cond_var = __inv_cond; \ - if (!ALL_ZEROES_P (cond_var)) \ - { - -#define VECTOR_IF2(cond, cond_var, prev_cond_var) \ -{ \ - __auto_type cond_var = (cond) & __builtin_convertvector (prev_cond_var, typeof (cond)); \ - __auto_type __inv_cond = ~(cond); \ - if (!ALL_ZEROES_P (cond_var)) \ - { - -#define VECTOR_ELSEIF2(cond, cond_var, prev_cond_var) \ - } \ - cond_var = (cond) & __inv_cond & __builtin_convertvector (prev_cond_var, typeof (cond)); \ - __inv_cond &= ~(cond); \ - if (!ALL_ZEROES_P (cond_var)) \ - { - -#define VECTOR_ELSE2(cond_var, prev_cond_var) \ - } \ - cond_var = __inv_cond & __builtin_convertvector (prev_cond_var, typeof (__inv_cond)); \ - if (!ALL_ZEROES_P (cond_var)) \ - { - - -#define VECTOR_ENDIF \ - } \ -} - -#define VECTOR_INIT_AUX(x, type) \ -({ \ - typeof (x) __e = (x); \ - type __tmp = { \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e, \ - __e, __e, __e, __e, __e, __e, __e, __e }; \ - __tmp; \ -}) - -#define VECTOR_INIT(x) \ - (_Generic ((x), int: VECTOR_INIT_AUX ((x), v64si), \ - unsigned: VECTOR_INIT_AUX ((x), v64usi), \ - long: VECTOR_INIT_AUX ((x), v64di), \ - float: VECTOR_INIT_AUX ((x), v64sf), \ - double: VECTOR_INIT_AUX ((x), v64df))) - -#define VECTOR_WIDTH(TYPE) (sizeof (TYPE) / (V_SF_SI_P (TYPE) ? 4 : 8)) - -#define V_SF_SI_P(TYPE) \ - (__builtin_types_compatible_p (TYPE, v2sf) \ - || __builtin_types_compatible_p (TYPE, v4sf) \ - || __builtin_types_compatible_p (TYPE, v8sf) \ - || __builtin_types_compatible_p (TYPE, v16sf) \ - || __builtin_types_compatible_p (TYPE, v32sf) \ - || __builtin_types_compatible_p (TYPE, v64sf) \ - || __builtin_types_compatible_p (TYPE, v2si) \ - || __builtin_types_compatible_p (TYPE, v4si) \ - || __builtin_types_compatible_p (TYPE, v8si) \ - || __builtin_types_compatible_p (TYPE, v16si) \ - || __builtin_types_compatible_p (TYPE, v32si) \ - || __builtin_types_compatible_p (TYPE, v64si)) - -#define VECTOR_INIT_MASK(TYPE) \ -({ \ - vector_union __mask; \ - __mask.t_v64di = VECTOR_INIT (0L); \ - for (int i = 0; i < VECTOR_WIDTH (TYPE); i++) \ - __mask.t_v64di[i] = -1; \ - __builtin_choose_expr (V_SF_SI_P (TYPE), __mask.t_v64si, __mask.t_v64di); \ -}) - -#define ALL_ZEROES_P(x) (COND_TO_BITMASK(x) == 0) - -#define COND_TO_BITMASK(x) \ -({ \ - long __tmp = 0; \ - __auto_type __x = __builtin_convertvector((x), typeof (__mask)) & __mask; \ - __builtin_choose_expr (sizeof (__mask) == 256, \ - ({ asm ("v_cmp_ne_u32_e64 %0, %1, 0" \ - : "=Sg" (__tmp) \ - : "v" (__x)); }), \ - ({ asm ("v_cmp_ne_u64_e64 %0, %1, 0" \ - : "=Sg" (__tmp) \ - : "v" (__x)); })); \ - __tmp; \ -}) - -#define VECTOR_WHILE(cond, cond_var, prev_cond_var) \ -{ \ - __auto_type cond_var = prev_cond_var; \ - for (;;) { \ - cond_var &= (cond); \ - if (ALL_ZEROES_P (cond_var)) \ - break; - -#define VECTOR_ENDWHILE \ - } \ -} - -#define DEF_VS_MATH_FUNC(rettype, name, args...) \ - rettype v64sf##_##name##_aux (args, v64si __mask) - -#define DEF_VD_MATH_FUNC(rettype, name, args...) \ - rettype v64df##_##name##_aux (args, v64di __mask) - -/* Use this for predicate functions that take a vector of doubles but - return a vector of ints. */ -#define DEF_VD_MATH_PRED(rettype, name, args...) \ - rettype v64df##_##name##_aux (args, v64si __mask) - -#define FUNCTION_INIT(rettype) \ - rettype __ret - -#define FUNCTION_RETURN \ - return __ret - -#define DEF_VARIANT(FUN, TRET, TARG, COUNT) \ -v##COUNT##TRET \ -v##COUNT##TARG##_##FUN (v##COUNT##TARG __arg) \ -{ \ - __auto_type __upsized_arg = RESIZE_VECTOR (v64##TARG, __arg); \ - __auto_type __mask = VECTOR_INIT_MASK (v##COUNT##TRET); \ - __auto_type __result = v64##TARG##_##FUN##_aux (__upsized_arg, __mask); \ - return RESIZE_VECTOR (v##COUNT##TRET, __result); \ -} - -#define DEF_VARIANT2(FUN, TRET, TARG, COUNT) \ -v##COUNT##TRET \ -v##COUNT##TARG##_##FUN (v##COUNT##TARG __arg1, v##COUNT##TARG __arg2) \ -{ \ - __auto_type __upsized_arg1 = RESIZE_VECTOR (v64##TARG, __arg1); \ - __auto_type __upsized_arg2 = RESIZE_VECTOR (v64##TARG, __arg2); \ - __auto_type __mask = VECTOR_INIT_MASK (v##COUNT##TRET); \ - __auto_type __result = v64##TARG##_##FUN##_aux (__upsized_arg1, __upsized_arg2, __mask); \ - return RESIZE_VECTOR (v##COUNT##TRET, __result); \ -} - -#define DEF_VARIANTS(FUN, RETTYPE, ARGTYPE) \ - DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 2) \ - DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 4) \ - DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 8) \ - DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 16) \ - DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 32) \ - DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 64) - -#define DEF_VARIANTS2(FUN, RETTYPE, ARGTYPE) \ - DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 2) \ - DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 4) \ - DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 8) \ - DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 16) \ - DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 32) \ - DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 64) - -/* From fdlibm.h */ - -#ifdef _FLT_LARGEST_EXPONENT_IS_NORMAL -#define FLT_UWORD_IS_FINITE(x) ((x) == (x)) -#define FLT_UWORD_IS_NAN(x) ((x) != (x)) -#define FLT_UWORD_IS_INFINITE(x) ((x) != (x)) -#define FLT_UWORD_MAX 0x7fffffff -#define FLT_UWORD_EXP_MAX 0x43010000 -#define FLT_UWORD_LOG_MAX 0x42b2d4fc -#define FLT_UWORD_LOG_2MAX 0x42b437e0 -#define HUGE ((float)0X1.FFFFFEP128) -#else -#define FLT_UWORD_IS_FINITE(x) ((x)<0x7f800000) -#define FLT_UWORD_IS_NAN(x) ((x)>0x7f800000) -#define FLT_UWORD_IS_INFINITE(x) ((x)==0x7f800000) -#define FLT_UWORD_MAX 0x7f7fffffL -#define FLT_UWORD_EXP_MAX 0x43000000 -#define FLT_UWORD_LOG_MAX 0x42b17217 -#define FLT_UWORD_LOG_2MAX 0x42b2d4fc -#define HUGE ((float)3.40282346638528860e+38) -#endif -#define FLT_UWORD_HALF_MAX (FLT_UWORD_MAX-(1L<<23)) -#define FLT_LARGEST_EXP (FLT_UWORD_MAX>>23) - -#ifdef _FLT_NO_DENORMALS -#define FLT_UWORD_IS_ZERO(x) ((x)<0x00800000) -#define FLT_UWORD_IS_SUBNORMAL(x) ((x) != (x)) -#define FLT_UWORD_MIN 0x00800000 -#define FLT_UWORD_EXP_MIN 0x42fc0000 -#define FLT_UWORD_LOG_MIN 0x42aeac50 -#define FLT_SMALLEST_EXP 1 -#else -#define FLT_UWORD_IS_ZERO(x) ((x)==0) -#define FLT_UWORD_IS_SUBNORMAL(x) ((x)<0x00800000) -#define FLT_UWORD_MIN 0x00000001 -#define FLT_UWORD_EXP_MIN 0x43160000 -#define FLT_UWORD_LOG_MIN 0x42cff1b5 -#define FLT_SMALLEST_EXP -22 -#endif - -/* From zmath.h */ - -#define NUM 3 -#define NAN 2 -#define INF 1 - -#define __PI 3.14159265358979323846 -#define __SQRT_HALF 0.70710678118654752440 -#define __PI_OVER_TWO 1.57079632679489661923132 -#define __INV_PI_OVER_TWO_2_24 10680707.430881743590348355907974 - -typedef const union -{ - unsigned int l[2]; - double d; -} udouble; - -typedef const union -{ - unsigned int l; - float f; -} ufloat; - -extern double BIGX; -extern double SMALLX; - -extern udouble z_infinity; -extern udouble z_notanum; -extern double z_rooteps; - -extern ufloat z_infinity_f; -extern ufloat z_notanum_f; -extern float z_rooteps_f; - -/* From math_errf.c */ - -static v64sf v64sf_math_oflowf (v64si sign) -{ - errno = ERANGE; - return VECTOR_MERGE (VECTOR_INIT (-0x1p97f), - VECTOR_INIT (0x1p97f), sign) * 0x1p97f; -} - -static v64sf v64sf_math_uflowf (v64si sign) -{ - errno = ERANGE; - return VECTOR_MERGE (VECTOR_INIT (-0x1p-95f), - VECTOR_INIT (0x1p-95f), sign) * 0x1p-95f; -} - -/* From math_config.h */ - -static v64si v64sf_issignalingf_inline (v64sf x) -{ - v64si __mask = VECTOR_INIT (-1); - v64si ix; - GET_FLOAT_WORD (ix, x, NO_COND); - /* Use IEEE-754 2008 encoding - i.e. exponent bits all 1, MSB of - significand is 0 for signalling NaN. */ - return ((ix & 0x7f800000) == 0x7f800000) & ((ix & 0x00400000) == 0); -} - -/* Vector extensions to sys/reent.h */ - -struct v64_reent { - v64si _v64si_gamma_signgam; -}; - -extern struct v64_reent *_v64_reent; -#define _V64_REENT _v64_reent - -#define _REENT_V64SI_SIGNGAM(ptr) ((ptr)->_v64si_gamma_signgam) - -/* Vector extensions to math.h */ - -#define v64si_signgam (*__v64si_signgam()) -extern v64si* __v64si_signgam (void); -#define __v64si_signgam_r(ptr) _REENT_V64SI_SIGNGAM(ptr) - diff --git a/newlib/libm/machine/amdgcn/v64_mathcnst.c b/newlib/libm/machine/amdgcn/v64_mathcnst.c deleted file mode 100644 index 58cb99b015..0000000000 --- a/newlib/libm/machine/amdgcn/v64_mathcnst.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Based on newlib/libm/mathfp/s_mathcnst.c in Newlib. */ - -#include "amdgcnmach.h" - -double BIGX = 7.09782712893383973096e+02; -double SMALLX = -7.45133219101941108420e+02; -double z_rooteps = 7.4505859692e-9; -float z_rooteps_f = 1.7263349182589107e-4; - -ufloat z_hugeval_f = { 0x7f800000 }; -ufloat z_infinity_f = { 0x7f800000 }; -ufloat z_notanum_f = { 0x7fd00000 }; - -#ifdef __IEEE_BIG_ENDIAN -udouble z_hugeval = { 0x7ff00000, 0 }; -udouble z_infinity = { 0x7ff00000, 0 }; -udouble z_notanum = { 0xeff80000, 0 }; -#else /* __IEEE_LITTLE_ENDIAN */ -udouble z_hugeval = { 0, 0x7ff00000 }; -udouble z_infinity = { 0, 0x7ff00000 }; -udouble z_notanum = { 0, 0x7ff80000 }; -#endif /* __IEEE_LITTLE_ENDIAN */ - diff --git a/newlib/libm/machine/amdgcn/v64_reent.c b/newlib/libm/machine/amdgcn/v64_reent.c deleted file mode 100644 index e9c350a8d4..0000000000 --- a/newlib/libm/machine/amdgcn/v64_reent.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "amdgcnmach.h" - -static struct v64_reent __reent; -struct v64_reent *_v64_reent = &__reent; - -v64si* -__v64si_signgam (void) -{ - return &_REENT_V64SI_SIGNGAM(_V64_REENT); -} \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64df_acos.c b/newlib/libm/machine/amdgcn/v64df_acos.c deleted file mode 100644 index e965095695..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_acos.c +++ /dev/null @@ -1,13 +0,0 @@ -/* Based on newlib/libm/mathfp/s_acos.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_asine_aux (v64df x, int acosine, v64di); - -DEF_VD_MATH_FUNC (v64df, acos, v64df x) -{ - return v64df_asine_aux(x, 1, __mask); -} - -DEF_VARIANTS (acos, df, df) - diff --git a/newlib/libm/machine/amdgcn/v64df_acosh.c b/newlib/libm/machine/amdgcn/v64df_acosh.c deleted file mode 100644 index ad7042ba1a..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_acosh.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/mathfp/e_acosh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_log_aux (v64df, v64di); -v64df v64df_log1p_aux (v64df, v64di); -v64df v64df_sqrt_aux (v64df, v64di); - -DEF_VD_MATH_FUNC (v64df, acosh, v64df x) -{ - static const double one = 1.0; - static const double ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ - - FUNCTION_INIT (v64df); - - v64si hx, lx; - EXTRACT_WORDS (hx, lx, x); - - VECTOR_IF (hx < 0x3ff00000, cond) // x < 1 */ - VECTOR_RETURN ((x-x) / (x-x), cond); - VECTOR_ENDIF - VECTOR_IF (hx >=0x41b00000, cond) // x > 2**28 */ - VECTOR_IF2 (hx >=0x7ff00000, cond2, cond) // x is inf of NaN */ - VECTOR_RETURN (x+x, cond2); - VECTOR_ELSE (cond2) - /* acosh(huge)=log(2x) */ - VECTOR_RETURN (v64df_log_aux (x, __mask) + ln2, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (((hx - 0x3ff00000) | lx) == 0, cond) - /* acosh(1) = 0 */ - VECTOR_RETURN (VECTOR_INIT (0.0), cond); - VECTOR_ENDIF - VECTOR_IF (hx > 0x40000000, cond) /* 2**28 > x > 2 */ - { - v64df t = x * x; - VECTOR_RETURN (v64df_log_aux (2.0*x - one / - (x + v64df_sqrt_aux (t - one, __mask)), - __mask), - cond); - } - VECTOR_ELSE (cond) /* 1 0.5, cond) - VECTOR_COND_MOVE (i, VECTOR_INIT (1 - acosine), cond); - - /* Check for range error. */ - VECTOR_IF2 (y > 1.0, cond2, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond2); - VECTOR_ENDIF - - VECTOR_COND_MOVE (g, (1.0 - y) / 2.0, cond); - VECTOR_COND_MOVE (y, -2.0 * v64df_sqrt_aux (g, __mask), cond); - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (i, VECTOR_INIT (acosine), cond); - VECTOR_IF2 (y < z_rooteps, cond2, cond) - VECTOR_COND_MOVE (res, y, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (g, y * y, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF ((y >= z_rooteps) | __builtin_convertvector(branch, v64di), cond) - { - /* Calculate the Taylor series. */ - v64df P = ((((p[4] * g + p[3]) * g + p[2]) * g + p[1]) * g + p[0]) * g; - v64df Q = ((((g + q[4]) * g + q[3]) * g + q[2]) * g + q[1]) * g + q[0]; - v64df R = P / Q; - - VECTOR_COND_MOVE (res, y + y * R, cond); - } - VECTOR_ENDIF - - v64df a_i = VECTOR_MERGE (VECTOR_INIT (a[1]), VECTOR_INIT (a[0]), i != 0); - - /* Calculate asine or acose. */ - if (acosine == 0) - { - VECTOR_COND_MOVE (res, (a_i + res) + a_i, NO_COND); - VECTOR_IF (x < 0.0, cond) - VECTOR_COND_MOVE (res, -res, cond); - VECTOR_ENDIF - } - else - { - v64df b_i = VECTOR_MERGE (VECTOR_INIT(b[1]), VECTOR_INIT(b[0]), i != 0); - - VECTOR_IF (x < 0.0, cond) - VECTOR_COND_MOVE (res, (b_i + res) + b_i, cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (res, (a_i - res) + a_i, cond); - VECTOR_ENDIF - } - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_asinh.c b/newlib/libm/machine/amdgcn/v64df_asinh.c deleted file mode 100644 index 64924b7457..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_asinh.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/s_asinh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_log_aux (v64df, v64di); -v64df v64df_log1p_aux (v64df, v64di); -v64df v64df_sqrt_aux (v64df, v64di); - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC (v64df, asinh, v64df x) -{ - static const double one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */ - static const double ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ - static const double huge = 1.00000000000000000000e+300; - - FUNCTION_INIT (v64df); - - v64df w; - v64si hx; - GET_HIGH_WORD (hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; - - VECTOR_IF (ix >=0x7ff00000, cond) /* x is inf or NaN */ - VECTOR_RETURN (x + x, cond); - VECTOR_ENDIF - VECTOR_IF (ix < 0x3e300000, cond) /* |x|<2**-28 */ - VECTOR_IF2 (__builtin_convertvector(huge+x > one, v64si), cond2, cond) /* return x inexact except 0 */ - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (ix > 0x41b00000, cond) /* x > 2**28 */ - VECTOR_COND_MOVE (w, v64df_log_aux (__builtin_gcn_fabsv (x), __mask) + ln2, - cond); - VECTOR_ELSEIF (ix > 0x40000000, cond) /* 2**28 > |x| > 2.0 */ - v64df t = __builtin_gcn_fabsv (x); - VECTOR_COND_MOVE (w, v64df_log_aux (2.0 * t + one / (v64df_sqrt_aux (x*x + one, __mask) + t), __mask), - cond); - VECTOR_ELSE (cond) /* 2.0 > |x| > 2**-28 */ - v64df t = x * x; - VECTOR_COND_MOVE (w, v64df_log1p_aux (__builtin_gcn_fabsv (x) + t / (one + v64df_sqrt_aux (one + t, __mask)), __mask), - cond); - VECTOR_ENDIF - - VECTOR_IF (hx > 0, cond) - VECTOR_RETURN (w, cond); - VECTOR_ELSE (cond) - VECTOR_RETURN (-w, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS (asinh, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_atan.c b/newlib/libm/machine/amdgcn/v64df_atan.c deleted file mode 100644 index 2bf88cf968..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_atan.c +++ /dev/null @@ -1,14 +0,0 @@ -/* Based on newlib/libm/mathfp/s_atan.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_atangent_aux (v64df, v64df, v64df, int, v64di); - -DEF_VD_MATH_FUNC (v64df, atan, v64df x) -{ - return v64df_atangent_aux (x, - VECTOR_INIT (0.0), - VECTOR_INIT (0.0), 0, __mask); -} - -DEF_VARIANTS (atan, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_atan2.c b/newlib/libm/machine/amdgcn/v64df_atan2.c deleted file mode 100644 index b486748f5b..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_atan2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/s_atan2.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_atangent_aux (v64df, v64df, v64df, int, v64di); - -DEF_VD_MATH_FUNC (v64df, atan2, v64df v, v64df u) -{ - return (v64df_atangent_aux (VECTOR_INIT (0.0), v, u, 1, __mask)); -} - -DEF_VARIANTS2 (atan2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_atangent.c b/newlib/libm/machine/amdgcn/v64df_atangent.c deleted file mode 100644 index 33ed558aa3..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_atangent.c +++ /dev/null @@ -1,132 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/s_atangent.c in Newlib. */ - -#include -#include "amdgcnmach.h" - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_fabsv) \ - && __has_builtin (__builtin_gcn_frexpv_exp) - -DEF_VD_MATH_FUNC (v64df, atangent, v64df x, v64df v, v64df u, int arctan2) -{ - static const double ROOT3 = 1.73205080756887729353; - static const double a[] = { 0.0, 0.52359877559829887308, 1.57079632679489661923, - 1.04719755119659774615 }; - static const double q[] = { 0.41066306682575781263e+2, - 0.86157349597130242515e+2, - 0.59578436142597344465e+2, - 0.15024001160028576121e+2 }; - static const double p[] = { -0.13688768894191926929e+2, - -0.20505855195861651981e+2, - -0.84946240351320683534e+1, - -0.83758299368150059274 }; - static const float z_rooteps = 7.4505859692e-9; - - FUNCTION_INIT (v64df); - - v64df zero = VECTOR_INIT (0.0); - v64df pi = VECTOR_INIT (__PI); - v64df pi_over_two = VECTOR_INIT (__PI_OVER_TWO); - v64df res; - v64si branch = VECTOR_INIT (0); - - /* Preparation for calculating arctan2. */ - if (arctan2) - { - VECTOR_IF (u == 0.0, cond) - VECTOR_IF2 (v == 0.0, cond2, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (0.0), cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); - VECTOR_COND_MOVE (res, pi_over_two, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF (~branch, cond) - /* Get the exponent values of the inputs. */ - v64si expv = __builtin_gcn_frexpv_exp (v); - v64si expu = __builtin_gcn_frexpv_exp (u); - - /* See if a divide will overflow. */ - v64si e = expv - expu; - - VECTOR_IF2 (e > DBL_MAX_EXP, cond2, cond) - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); - VECTOR_COND_MOVE (res, pi_over_two, cond2); - VECTOR_ENDIF - - /* Also check for underflow. */ - VECTOR_IF2 (e < DBL_MIN_EXP, cond2, cond) - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); - VECTOR_COND_MOVE (res, zero, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - } - - VECTOR_IF (~branch, cond) - v64df f; - v64si N = VECTOR_INIT (0); - - if (arctan2) - f = __builtin_gcn_fabsv (v / u); - else - f = __builtin_gcn_fabsv (x); - - VECTOR_IF2 (__builtin_convertvector(f > 1.0, v64si), cond2, cond) - VECTOR_COND_MOVE (f, 1.0 / f, cond2); - VECTOR_COND_MOVE (N, VECTOR_INIT (2), cond2); - VECTOR_ENDIF - - VECTOR_IF2 (__builtin_convertvector(f > (2.0 - ROOT3), v64si), cond2, cond) - double A = ROOT3 - 1.0; - VECTOR_COND_MOVE (f, (((A * f - 0.5) - 0.5) + f) / (ROOT3 + f), - cond2); - N += cond2 & 1; - VECTOR_ENDIF - - /* Check for values that are too small. */ - VECTOR_IF2 (__builtin_convertvector((-z_rooteps < f) & (f < z_rooteps), v64si), cond2, cond) - VECTOR_COND_MOVE (res, f, cond2); - - /* Calculate the Taylor series. */ - VECTOR_ELSE2 (cond2, cond) - v64df g = f * f; - v64df P = (((p[3] * g + p[2]) * g + p[1]) * g + p[0]) * g; - v64df Q = (((g + q[3]) * g + q[2]) * g + q[1]) * g + q[0]; - v64df R = P / Q; - - VECTOR_COND_MOVE (res, f + f * R, cond2); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, cond & (N > 1)); - - res += VECTOR_MERGE (VECTOR_INIT (a[1]), zero, cond & (N == 1)); - res += VECTOR_MERGE (VECTOR_INIT (a[2]), zero, cond & (N == 2)); - res += VECTOR_MERGE (VECTOR_INIT (a[3]), zero, cond & (N == 3)); - VECTOR_ENDIF - - if (arctan2) - { - /*if (u < 0.0)*/ - VECTOR_COND_MOVE (res, pi - res, u < 0.0); - /*if (v < 0.0)*/ - VECTOR_COND_MOVE (res, -res, v < 0.0); - } - /*else if (x < 0.0) */ - else - VECTOR_COND_MOVE (res, -res, x < 0.0); - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_atanh.c b/newlib/libm/machine/amdgcn/v64df_atanh.c deleted file mode 100644 index 3890a63b86..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_atanh.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/mathfp/e_atanh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_log1p_aux (v64df, v64di); - -DEF_VD_MATH_FUNC (v64df, atanh, v64df x) -{ - static const double zero = 0.0; - static const double one = 1.0, huge = 1e300; - - FUNCTION_INIT (v64df); - - v64df t; - v64si hx, lx; - EXTRACT_WORDS (hx, lx, x); - v64si ix = hx & 0x7fffffff; - - VECTOR_IF ((ix | ((lx | (-lx)) >> 31)) > 0x3ff00000, cond) // |x|>1 - VECTOR_RETURN ((x - x)/(x - x), cond); - VECTOR_ENDIF - - VECTOR_IF (ix == 0x3ff00000, cond) - VECTOR_RETURN (x / zero, cond); - VECTOR_ENDIF - - VECTOR_IF ((ix < 0x3e300000) & __builtin_convertvector((huge + x) > zero, v64si), cond) // x<2**-28 - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - - SET_HIGH_WORD (x, ix, NO_COND); - - VECTOR_IF (ix < 0x3fe00000, cond) // x < 0.5 */ - v64df t2 = x + x; - VECTOR_COND_MOVE (t, 0.5 * v64df_log1p_aux (t2 + t2 * x / (one - x), __mask), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (t, 0.5 * v64df_log1p_aux ((x + x) / (one - x), __mask), cond); - VECTOR_ENDIF - - VECTOR_IF (hx >= 0, cond) - VECTOR_RETURN (t, cond); - VECTOR_ELSE (cond) - VECTOR_RETURN (-t, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS (atanh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_copysign.c b/newlib/libm/machine/amdgcn/v64df_copysign.c deleted file mode 100644 index 4c7587ee2f..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_copysign.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_copysign.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VD_MATH_FUNC (v64df, copysign, v64df x, v64df y) -{ - FUNCTION_INIT (v64df); - - v64si hx, hy; - GET_HIGH_WORD(hx, x, NO_COND); - GET_HIGH_WORD(hy, y, NO_COND); - SET_HIGH_WORD(x, (hx & 0x7fffffff) | (hy & 0x80000000), NO_COND); - VECTOR_RETURN (x, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (copysign, df, df) \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64df_cos.c b/newlib/libm/machine/amdgcn/v64df_cos.c deleted file mode 100644 index 0c8c1634fe..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_cos.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/s_cos.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_sine_aux (v64df, int, v64di); - -DEF_VD_MATH_FUNC (v64df, cos, v64df x) -{ - return v64df_sine_aux (x, 1, __mask); -} - -DEF_VARIANTS (cos, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_cosh.c b/newlib/libm/machine/amdgcn/v64df_cosh.c deleted file mode 100644 index a75e1ae42e..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_cosh.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/s_cosh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_sineh_aux (v64df, int, v64di); - -DEF_VD_MATH_FUNC (v64df, cosh, v64df x) -{ - return v64df_sineh_aux (x, 1, __mask); -} - -DEF_VARIANTS (cosh, df, df) \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64df_erf.c b/newlib/libm/machine/amdgcn/v64df_erf.c deleted file mode 100644 index f7bced6836..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_erf.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/s_erf.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_exp_aux (v64df, v64di); - -static const double -tiny = 1e-300, -half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ -one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ -two = 2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */ -/* c = (float)0.84506291151 */ -erx = 8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */ -/* - * Coefficients for approximation to erf on [0,0.84375] - */ -efx = 1.28379167095512586316e-01, /* 0x3FC06EBA, 0x8214DB69 */ -efx8= 1.02703333676410069053e+00, /* 0x3FF06EBA, 0x8214DB69 */ -pp0 = 1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */ -pp1 = -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */ -pp2 = -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */ -pp3 = -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */ -pp4 = -2.37630166566501626084e-05, /* 0xBEF8EAD6, 0x120016AC */ -qq1 = 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */ -qq2 = 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */ -qq3 = 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */ -qq4 = 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */ -qq5 = -3.96022827877536812320e-06, /* 0xBED09C43, 0x42A26120 */ -/* - * Coefficients for approximation to erf in [0.84375,1.25] - */ -pa0 = -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */ -pa1 = 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */ -pa2 = -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */ -pa3 = 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */ -pa4 = -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */ -pa5 = 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */ -pa6 = -2.16637559486879084300e-03, /* 0xBF61BF38, 0x0A96073F */ -qa1 = 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */ -qa2 = 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */ -qa3 = 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */ -qa4 = 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */ -qa5 = 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */ -qa6 = 1.19844998467991074170e-02, /* 0x3F888B54, 0x5735151D */ -/* - * Coefficients for approximation to erfc in [1.25,1/0.35] - */ -ra0 = -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */ -ra1 = -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */ -ra2 = -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */ -ra3 = -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */ -ra4 = -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */ -ra5 = -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */ -ra6 = -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */ -ra7 = -9.81432934416914548592e+00, /* 0xC023A0EF, 0xC69AC25C */ -sa1 = 1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */ -sa2 = 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */ -sa3 = 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */ -sa4 = 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */ -sa5 = 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */ -sa6 = 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */ -sa7 = 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */ -sa8 = -6.04244152148580987438e-02, /* 0xBFAEEFF2, 0xEE749A62 */ -/* - * Coefficients for approximation to erfc in [1/.35,28] - */ -rb0 = -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */ -rb1 = -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */ -rb2 = -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */ -rb3 = -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */ -rb4 = -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */ -rb5 = -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */ -rb6 = -4.83519191608651397019e+02, /* 0xC07E384E, 0x9BDC383F */ -sb1 = 3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */ -sb2 = 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */ -sb3 = 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */ -sb4 = 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */ -sb5 = 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */ -sb6 = 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */ -sb7 = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */ - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC (v64df, erf, v64df x) -{ - FUNCTION_INIT (v64df); - - v64si hx; - GET_HIGH_WORD (hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; - - VECTOR_IF (ix >= 0x7ff00000, cond) /* erf(nan)=nan */ - v64si i = (hx >> 31) << 1; - /* erf(+-inf)=+-1 */ - VECTOR_RETURN (__builtin_convertvector (1 - i, v64df) + one / x, cond); - VECTOR_ENDIF - - VECTOR_IF (ix < 0x3feb0000, cond) /* |x|<0.84375 */ - VECTOR_IF2 (ix < 0x3e300000, cond2, cond) /* |x|<2**-28 */ - VECTOR_IF2 (ix < 0x00800000, cond3, cond2) /* avoid underflow */ - VECTOR_RETURN (0.125*(8.0*x + efx8*x), cond3); - VECTOR_ENDIF - VECTOR_RETURN (x + efx*x, cond2); - VECTOR_ENDIF - - v64df z = x*x; - v64df r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); - v64df s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); - v64df y = r/s; - - VECTOR_RETURN (x + x*y, cond); - VECTOR_ENDIF - - VECTOR_IF (ix < 0x3ff40000, cond) /* 0.84375 <= |x| < 1.25 */ - v64df s = __builtin_gcn_fabsv (x) - one; - v64df P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); - v64df Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); - VECTOR_IF2 (hx >= 0, cond2, cond) - VECTOR_RETURN (erx + P/Q, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (-erx - P/Q, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF (ix >= 0x40180000, cond) /* inf>|x|>=6 */ - VECTOR_IF2 (hx >= 0, cond2, cond) - VECTOR_RETURN (VECTOR_INIT (1.0 - tiny), cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (VECTOR_INIT (tiny - 1.0), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - x = __builtin_gcn_fabsv(x); - v64df s = 1.0 / (x*x); - v64df R, S; - VECTOR_IF (ix < 0x4006DB6E, cond) /* |x| < 1/0.35 */ - VECTOR_COND_MOVE (R, ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( - ra5+s*(ra6+s*ra7)))))), cond); - VECTOR_COND_MOVE (S, one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( - sa5+s*(sa6+s*(sa7+s*sa8))))))), cond); - VECTOR_ELSE (cond) /* |x| >= 1/0.35 */ - VECTOR_COND_MOVE (R, rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( - rb5+s*rb6))))), cond); - VECTOR_COND_MOVE (S, one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( - sb5+s*(sb6+s*sb7)))))), cond); - VECTOR_ENDIF - - v64df z; - SET_LOW_WORD (z, VECTOR_INIT(0), NO_COND); - v64df r = v64df_exp_aux (-z*z - 0.5625, __mask) - * v64df_exp_aux ((z-x)*(z+x) + R/S, __mask); - VECTOR_RETURN (one - r/x, hx >= 0); - VECTOR_RETURN (r/x - one, hx < 0); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (erf, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_exp.c b/newlib/libm/machine/amdgcn/v64df_exp.c deleted file mode 100644 index f6bca1223d..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_exp.c +++ /dev/null @@ -1,74 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/s_exp.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_ispos (v64df); -v64si v64df_numtest (v64df); - -static const double INV_LN2 = 1.4426950408889634074; -static const double LN2 = 0.6931471805599453094172321; -static const double p[] = { 0.25, 0.75753180159422776666e-2, - 0.31555192765684646356e-4 }; -static const double q[] = { 0.5, 0.56817302698551221787e-1, - 0.63121894374398504557e-3, - 0.75104028399870046114e-6 }; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_ldexpv) - -DEF_VD_MATH_FUNC (v64df, exp, v64df x) -{ - FUNCTION_INIT (v64df); - - v64si num_type = v64df_numtest (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity.d), - VECTOR_INIT (0.0), - v64df_ispos (x)), - cond); - VECTOR_ELSEIF (num_type == 0, cond) - VECTOR_RETURN (VECTOR_INIT (1.0), cond); - VECTOR_ENDIF - - /* Check for out of bounds. */ - VECTOR_IF ((x > BIGX) | (x < SMALLX), cond) - errno = ERANGE; - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - - /* Check for a value too small to calculate. */ - VECTOR_RETURN (VECTOR_INIT (1.0), - (-z_rooteps_f < x) & (x < z_rooteps_f)); - - /* Calculate the exponent. */ - v64si Nneg = __builtin_convertvector (x * INV_LN2 - 0.5, v64si); - v64si Npos = __builtin_convertvector (x * INV_LN2 + 0.5, v64si); - v64si N = VECTOR_MERGE (Nneg, Npos, x < 0.0); - - /* Construct the mantissa. */ - v64df g = x - __builtin_convertvector (N, v64df) * LN2; - v64df z = g * g; - v64df P = g * ((p[2] * z + p[1]) * z + p[0]); - v64df Q = ((q[3] * z + q[2]) * z + q[1]) * z + q[0]; - v64df R = 0.5 + P / (Q - P); - - /* Return the floating point value. */ - N++; - VECTOR_RETURN (__builtin_gcn_ldexpv (R, N), NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (exp, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_exp2.c b/newlib/libm/machine/amdgcn/v64df_exp2.c deleted file mode 100644 index 9a76fe1c06..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_exp2.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. - * - * Permission to use, copy, modify, and distribute this software - * is freely granted, provided that this notice is preserved. - */ - -/* Based on newlib/libm/mathfp/s_exp2.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_pow_aux (v64df, v64df, v64di); - -DEF_VD_MATH_FUNC (v64df, exp2, v64df x) -{ - return v64df_pow_aux (VECTOR_INIT (2.0), x, __mask); -} - -DEF_VARIANTS (exp2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_finite.c b/newlib/libm/machine/amdgcn/v64df_finite.c deleted file mode 100644 index 41e188b024..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_finite.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_finite.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VD_MATH_PRED (v64si, finite, v64df x) -{ - FUNCTION_INIT (v64si); - v64si hx; - GET_HIGH_WORD (hx, x, NO_COND); - return (((hx & 0x7fffffff) - 0x7ff00000) >> 31) != 0; -} - -DEF_VARIANTS (finite, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_fmod.c b/newlib/libm/machine/amdgcn/v64df_fmod.c deleted file mode 100644 index e583062cf2..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_fmod.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/s_fmod.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VD_MATH_FUNC (v64df, fmod, v64df x, v64df y) -{ - FUNCTION_INIT(v64df); - - v64si hx, hy, hz; - v64usi lx, ly, lz; - EXTRACT_WORDS (hx, lx, x); - EXTRACT_WORDS (hy, ly, y); - v64si sx = hx & 0x80000000; /* sign of x */ - hx ^=sx; /* |x| */ - hy &= 0x7fffffff; /* |y| */ - - v64df zeroes = VECTOR_MERGE (VECTOR_INIT (-0.0), - VECTOR_INIT (0.0), - sx != 0); - - /* purge off exception values */ - VECTOR_IF (((hy | ly) == 0) | (hx >= 0x7ff00000) - | ((hy | ((ly | -ly) >> 31)) > 0x7ff00000), cond) // y=0, or x not finite or y is NaN - VECTOR_RETURN ((x * y) / (x * y), cond); - VECTOR_ENDIF - VECTOR_IF (hx <= hy, cond) // |x|<|y| return x - VECTOR_IF2 ((hx < hy) | (lx < ly), cond2, cond) - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_IF2 (lx == ly, cond2, cond) - VECTOR_RETURN (zeroes, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - /* determine ix = ilogb(x) */ - v64si ix; - VECTOR_IF (hx < 0x00100000, cond) // subnormal x - VECTOR_IF2 (hx == 0, cond2, cond) - ix = VECTOR_INIT (-1043); - for (v64si i = __builtin_convertvector (lx, v64si); - !ALL_ZEROES_P (cond2 & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); - VECTOR_ELSE2 (cond2, cond) - ix = VECTOR_INIT (-1022); - for (v64si i = __builtin_convertvector (hx << 11, v64si); - !ALL_ZEROES_P (cond2 & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); - VECTOR_ENDIF - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (ix, (hx >> 20) - 1023, cond); - VECTOR_ENDIF - - /* determine iy = ilogb(y) */ - v64si iy; - VECTOR_IF (hy < 0x00100000, cond) // subnormal y - VECTOR_IF2 (hy == 0, cond2, cond) - iy = VECTOR_INIT (-1043); - for (v64si i = __builtin_convertvector (ly, v64si); - !ALL_ZEROES_P (cond2 & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (iy, iy - 1, cond2 & (i > 0)); - VECTOR_ELSE2 (cond2, cond) - iy = VECTOR_INIT (-1022); - for (v64si i = __builtin_convertvector (hy << 11, v64si); - !ALL_ZEROES_P (cond2 & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (iy, iy - 1, cond2 & (i > 0)); - VECTOR_ENDIF - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (iy, (hy >> 20) - 1023, cond); - VECTOR_ENDIF - - -/* set up {hx,lx}, {hy,ly} and align y to x */ - VECTOR_IF (ix >= -1022, cond) - VECTOR_COND_MOVE (hx, 0x00100000 | (0x000fffff & hx), cond); - VECTOR_ELSE (cond) // subnormal x, shift x to normal - { - v64si n = -1022 - ix; - VECTOR_IF2 (n <= 31, cond2, cond) - VECTOR_COND_MOVE (hx, (hx << n) | (lx >> (32 - n)), cond2); - VECTOR_COND_MOVE (lx, lx << n, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (hx, __builtin_convertvector (lx << (n - 32), v64si), cond2); - VECTOR_COND_MOVE (lx, VECTOR_INIT (0U), cond2); - VECTOR_ENDIF - } - VECTOR_ENDIF - VECTOR_IF (iy >= -1022, cond) - VECTOR_COND_MOVE (hy, 0x00100000 | (0x000fffff & hy), cond); - VECTOR_ELSE (cond) // subnormal y, shift y to normal - { - v64si n = -1022 - iy; - VECTOR_IF2 (n <= 31, cond2, cond) - VECTOR_COND_MOVE (hy, (hy << n) | (ly >> (32 - n)), cond2); - VECTOR_COND_MOVE (ly, ly << n, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (hy, __builtin_convertvector (ly << (n - 32), v64si), cond2); - VECTOR_COND_MOVE (ly, VECTOR_INIT (0U), cond2); - VECTOR_ENDIF - } - VECTOR_ENDIF - -/* fix point fmod */ - v64si n = ix - iy; - v64si cond = n != 0; - - while (!ALL_ZEROES_P (cond)) - { - hz = hx - hy; - lz = lx - ly; - VECTOR_IF2 (lx < ly, cond2, cond) - VECTOR_COND_MOVE (hz, hz - 1, cond2); - VECTOR_ENDIF - VECTOR_IF2 (hz < 0, cond2, cond) - VECTOR_COND_MOVE (hx, hx + hx + (__builtin_convertvector(lx, v64usi) >> 31), cond2); - VECTOR_COND_MOVE (lx, lx + lx, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_IF2 ((hz | lz) == 0, cond3, cond2) // return sign(x)*0 - VECTOR_RETURN (zeroes, cond3); - VECTOR_ENDIF - VECTOR_COND_MOVE (hx, hz + hz + (__builtin_convertvector(lz, v64usi) >> 31), cond2); - VECTOR_COND_MOVE (lx, lz + lz, cond2); - VECTOR_ENDIF - - n += cond; // Active lanes should be -1 - cond &= (n != 0); - } - - hz = hx - hy; - lz = lx - ly; - VECTOR_COND_MOVE (hz, hz - 1, lx < ly); - VECTOR_IF (hz >= 0, cond) - VECTOR_COND_MOVE (hx, hz, cond); - VECTOR_COND_MOVE (lx, lz, cond); - VECTOR_ENDIF - - /* convert back to floating value and restore the sign */ - VECTOR_RETURN (zeroes, (hx | lx) == 0); // return sign(x)*0 - cond = hx < 0x00100000; - while (!ALL_ZEROES_P (cond)) // normalize x - { - VECTOR_COND_MOVE (hx, hx + hx + (lx >> 31), cond); - VECTOR_COND_MOVE (lx, lx + lx, cond); - iy += cond; // Active lanes should be -1 - - cond &= (hx < 0x00100000); - } - VECTOR_IF (iy >= -1022, cond) // normalize output - VECTOR_COND_MOVE (hx, (hx - 0x00100000) | ((iy + 1023) << 20), cond); - INSERT_WORDS (x, hx | sx, lx, cond); - VECTOR_ELSE (cond) // subnormal output */ - n = -1022 - iy; - VECTOR_IF2 (n <= 20, cond2, cond) - VECTOR_COND_MOVE (lx, (lx >> n) | (hx << (32 - n)), cond2); - VECTOR_COND_MOVE (hx, hx >> n, cond2); - VECTOR_ELSEIF2 (n <= 31, cond2, cond) - VECTOR_COND_MOVE (lx, __builtin_convertvector ((hx << (32 - n)) | (lx >> n), v64usi), cond2); - VECTOR_COND_MOVE (hx, sx, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (lx, __builtin_convertvector (hx >> (n - 32), v64usi), cond2); - VECTOR_COND_MOVE (hx, sx, cond2); - VECTOR_ENDIF - INSERT_WORDS (x, hx | sx, lx, cond); - x *= VECTOR_INIT (1.0); /* create necessary signal */ - VECTOR_ENDIF - - VECTOR_RETURN (x, NO_COND); /* exact output */ - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (fmod, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_gamma.c b/newlib/libm/machine/amdgcn/v64df_gamma.c deleted file mode 100644 index 73f27a70c2..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_gamma.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "amdgcnmach.h" - -v64df v64df_lgamma_aux (v64df x, v64di __mask); - -DEF_VD_MATH_FUNC (v64df, gamma, v64df x) -{ - return v64df_lgamma_aux(x, __mask); -} - -DEF_VARIANTS (gamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_hypot.c b/newlib/libm/machine/amdgcn/v64df_hypot.c deleted file mode 100644 index 6cc9fe6ee5..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_hypot.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/e_hypot.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_sqrt_aux (v64df, v64di); - -DEF_VD_MATH_FUNC (v64df, hypot, v64df x, v64df y) -{ - FUNCTION_INIT (v64df); - - v64df a = x; - v64df b = y; - - v64si ha; - GET_HIGH_WORD (ha, x, NO_COND); - ha &= 0x7fffffffL; - v64si hb; - GET_HIGH_WORD (hb, y, NO_COND); - hb &= 0x7fffffffL; - - VECTOR_IF (hb > ha, cond) - VECTOR_COND_MOVE (a, y, cond); - VECTOR_COND_MOVE (b, x, cond); - v64si j = ha; - VECTOR_COND_MOVE (ha, hb, cond); - VECTOR_COND_MOVE (hb, j, cond); - VECTOR_ENDIF - SET_HIGH_WORD (a, ha, NO_COND); /* a <- |a| */ - SET_HIGH_WORD (b, hb, NO_COND); /* b <- |b| */ - VECTOR_IF((ha - hb) > 0x3c00000L, cond) // x/y > 2**60 */ - VECTOR_RETURN (a + b, cond); - VECTOR_ENDIF - - v64si k = VECTOR_INIT (0); - - VECTOR_IF (ha > 0x5f300000L, cond) /* a>2**500 */ - VECTOR_IF2 (ha >= 0x7ff00000L, cond2, cond) /* Inf or NaN */ - v64df w = a + b; // for sNaN */ - v64si low; - GET_LOW_WORD (low, a, cond2); - VECTOR_COND_MOVE (w, a, cond2 & (((ha & 0xfffff) | low) == 0)); - GET_LOW_WORD (low, b, cond2); - VECTOR_COND_MOVE (w, b, cond2 & (((hb & 0xfffff) | low) == 0)); - VECTOR_RETURN (w, cond); - VECTOR_ENDIF - /* scale a and b by 2**-600 */ - VECTOR_COND_MOVE (ha, ha - 0x25800000, cond); - VECTOR_COND_MOVE (hb, hb - 0x25800000, cond); - VECTOR_COND_MOVE (k, k + 600, cond); - SET_HIGH_WORD (a, ha, cond); - SET_HIGH_WORD (b, hb, cond); - VECTOR_ENDIF - VECTOR_IF (hb < 0x20b00000, cond) /* b < 2**-500 */ - VECTOR_IF2 (hb <= 0x000fffff, cond2, cond) /* subnormal b or 0 */ - v64si low; - GET_LOW_WORD (low, b, cond); - VECTOR_RETURN (a, cond2 & ((hb | low) == 0)); - /* t1=2^1022 */ - v64df t1 = VECTOR_INIT (0.0); - SET_HIGH_WORD (t1, VECTOR_INIT (0x7fd00000), cond2); - VECTOR_COND_MOVE (b, b * t1, cond2); - VECTOR_COND_MOVE (a, a * t1, cond2); - VECTOR_COND_MOVE (k, k - 1022, cond2); - VECTOR_ELSE2 (cond2, cond) /* scale a and b by 2^600 */ - VECTOR_COND_MOVE (ha, ha + 0x25800000, cond2); /* a *= 2^600 */ - VECTOR_COND_MOVE (hb, hb + 0x25800000, cond2); /* b *= 2^600 */ - VECTOR_COND_MOVE (k, k - 600, cond2); - SET_HIGH_WORD (a, ha, cond2); - SET_HIGH_WORD (b, hb, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - /* medium size a and b */ - v64df w = a - b; - VECTOR_IF (w > b, cond) - v64df t1 = VECTOR_INIT (0.0); - SET_HIGH_WORD (t1, ha, cond); - v64df t2 = a - t1; - VECTOR_COND_MOVE (w, v64df_sqrt_aux (t1*t1 - (b*(-b) - t2 * (a + t1)), __mask), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (a, a+a, cond); - v64df y1 = VECTOR_INIT (0.0); - SET_HIGH_WORD (y1, hb, cond); - v64df y2 = b - y1; - v64df t1; - SET_HIGH_WORD (t1, ha + 0x00100000, cond); - v64df t2 = a - t1; - VECTOR_COND_MOVE (w, v64df_sqrt_aux (t1*y1 - (w*(-w) - (t1*y2 + t2*b)), __mask), cond); - VECTOR_ENDIF - VECTOR_IF (k != 0, cond) - v64si high; - v64df t1 = VECTOR_INIT (1.0); - GET_HIGH_WORD (high, t1, cond); - SET_HIGH_WORD (t1, high + (k << 20), cond); - VECTOR_RETURN (t1 * w, cond); - VECTOR_ELSE (cond) - VECTOR_RETURN (w, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (hypot, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_ilogb.c b/newlib/libm/machine/amdgcn/v64df_ilogb.c deleted file mode 100644 index ea51bf1052..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_ilogb.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_ilogb.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VD_MATH_PRED (v64si, ilogb, v64df x) -{ - FUNCTION_INIT(v64si); - v64si hx, lx, ix; - EXTRACT_WORDS (hx, lx, x); - hx &= 0x7fffffff; - VECTOR_IF (hx < 0x00100000, cond) - VECTOR_RETURN (VECTOR_INIT (-__INT_MAX__), cond & ((hx | lx) == 0)); // FP_ILOGB0 - VECTOR_IF2 (hx == 0, cond2, cond) - ix = VECTOR_INIT (-1043); - for (v64si i = lx; - !ALL_ZEROES_P (cond2 & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); - VECTOR_ELSE2 (cond2, cond) - ix = VECTOR_INIT (-1022); - for (v64si i = (hx << 11); - !ALL_ZEROES_P (cond2 & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); - VECTOR_ENDIF - VECTOR_RETURN (ix, cond); - VECTOR_ENDIF - VECTOR_RETURN ((hx >> 20) - 1023, hx < 0x7ff00000); - VECTOR_RETURN (VECTOR_INIT (__INT_MAX__), NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (ilogb, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_isnan.c b/newlib/libm/machine/amdgcn/v64df_isnan.c deleted file mode 100644 index cf0020220f..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_isnan.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_isnan.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VD_MATH_PRED (v64si, isnan, v64df x) -{ - v64si hx, lx; - EXTRACT_WORDS (hx, lx, x); - hx &= 0x7fffffff; - hx |= (lx | (-lx)) >> 31; - hx = 0x7ff00000 - hx; - - return (hx >> 31) != 0; -} - -DEF_VARIANTS (isnan, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_ispos.c b/newlib/libm/machine/amdgcn/v64df_ispos.c deleted file mode 100644 index ee691be413..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_ispos.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Based on newlib/libm/mathfp/s_ispos.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si -v64df_ispos (v64df x) -{ - // Explicitly create mask for internal function. - v64si __mask = VECTOR_INIT (-1); - FUNCTION_INIT (v64si); - - v64si hx; - GET_HIGH_WORD (hx, x, NO_COND); - - VECTOR_RETURN ((hx & 0x80000000) == 0, NO_COND); - - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64df_lgamma.c b/newlib/libm/machine/amdgcn/v64df_lgamma.c deleted file mode 100644 index 4c982dff7f..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_lgamma.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/math/w_lgamma.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_finite_aux (v64df x, v64di __mask); -v64df v64df_lgamma_r_aux (v64df x, v64si *signgamp, v64di __mask); - -DEF_VD_MATH_FUNC (v64df, lgamma, v64df x) -{ - v64df y = v64df_lgamma_r_aux(x, &(_REENT_V64SI_SIGNGAM(_V64_REENT)), __mask); - if (ALL_ZEROES_P(v64df_finite_aux(y, __mask)) & !ALL_ZEROES_P(v64df_finite_aux(x, __mask))) { - /* lgamma(finite) overflow */ - errno = ERANGE; - } - return y; -} - -DEF_VARIANTS (lgamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_lgamma_r.c b/newlib/libm/machine/amdgcn/v64df_lgamma_r.c deleted file mode 100644 index a9a9a31b7f..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_lgamma_r.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/math/er_lgamma.c in Newlib. */ - -#include "amdgcnmach.h" - -static const double two52= 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ -half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ -one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ -pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ -a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ -a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */ -a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */ -a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */ -a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */ -a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */ -a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */ -a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */ -a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */ -a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */ -a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */ -a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */ -tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */ -tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */ -/* tt = -(tail of tf) */ -tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */ -t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */ -t1 = -1.47587722994593911752e-01, /* 0xBFC2E427, 0x8DC6C509 */ -t2 = 6.46249402391333854778e-02, /* 0x3FB08B42, 0x94D5419B */ -t3 = -3.27885410759859649565e-02, /* 0xBFA0C9A8, 0xDF35B713 */ -t4 = 1.79706750811820387126e-02, /* 0x3F9266E7, 0x970AF9EC */ -t5 = -1.03142241298341437450e-02, /* 0xBF851F9F, 0xBA91EC6A */ -t6 = 6.10053870246291332635e-03, /* 0x3F78FCE0, 0xE370E344 */ -t7 = -3.68452016781138256760e-03, /* 0xBF6E2EFF, 0xB3E914D7 */ -t8 = 2.25964780900612472250e-03, /* 0x3F6282D3, 0x2E15C915 */ -t9 = -1.40346469989232843813e-03, /* 0xBF56FE8E, 0xBF2D1AF1 */ -t10 = 8.81081882437654011382e-04, /* 0x3F4CDF0C, 0xEF61A8E9 */ -t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */ -t12 = 3.15632070903625950361e-04, /* 0x3F34AF6D, 0x6C0EBBF7 */ -t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */ -t14 = 3.35529192635519073543e-04, /* 0x3F35FD3E, 0xE8C2D3F4 */ -u0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ -u1 = 6.32827064025093366517e-01, /* 0x3FE4401E, 0x8B005DFF */ -u2 = 1.45492250137234768737e+00, /* 0x3FF7475C, 0xD119BD6F */ -u3 = 9.77717527963372745603e-01, /* 0x3FEF4976, 0x44EA8450 */ -u4 = 2.28963728064692451092e-01, /* 0x3FCD4EAE, 0xF6010924 */ -u5 = 1.33810918536787660377e-02, /* 0x3F8B678B, 0xBF2BAB09 */ -v1 = 2.45597793713041134822e+00, /* 0x4003A5D7, 0xC2BD619C */ -v2 = 2.12848976379893395361e+00, /* 0x40010725, 0xA42B18F5 */ -v3 = 7.69285150456672783825e-01, /* 0x3FE89DFB, 0xE45050AF */ -v4 = 1.04222645593369134254e-01, /* 0x3FBAAE55, 0xD6537C88 */ -v5 = 3.21709242282423911810e-03, /* 0x3F6A5ABB, 0x57D0CF61 */ -s0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ -s1 = 2.14982415960608852501e-01, /* 0x3FCB848B, 0x36E20878 */ -s2 = 3.25778796408930981787e-01, /* 0x3FD4D98F, 0x4F139F59 */ -s3 = 1.46350472652464452805e-01, /* 0x3FC2BB9C, 0xBEE5F2F7 */ -s4 = 2.66422703033638609560e-02, /* 0x3F9B481C, 0x7E939961 */ -s5 = 1.84028451407337715652e-03, /* 0x3F5E26B6, 0x7368F239 */ -s6 = 3.19475326584100867617e-05, /* 0x3F00BFEC, 0xDD17E945 */ -r1 = 1.39200533467621045958e+00, /* 0x3FF645A7, 0x62C4AB74 */ -r2 = 7.21935547567138069525e-01, /* 0x3FE71A18, 0x93D3DCDC */ -r3 = 1.71933865632803078993e-01, /* 0x3FC601ED, 0xCCFBDF27 */ -r4 = 1.86459191715652901344e-02, /* 0x3F9317EA, 0x742ED475 */ -r5 = 7.77942496381893596434e-04, /* 0x3F497DDA, 0xCA41A95B */ -r6 = 7.32668430744625636189e-06, /* 0x3EDEBAF7, 0xA5B38140 */ -w0 = 4.18938533204672725052e-01, /* 0x3FDACFE3, 0x90C97D69 */ -w1 = 8.33333333333329678849e-02, /* 0x3FB55555, 0x5555553B */ -w2 = -2.77777777728775536470e-03, /* 0xBF66C16C, 0x16B02E5C */ -w3 = 7.93650558643019558500e-04, /* 0x3F4A019F, 0x98CF38B6 */ -w4 = -5.95187557450339963135e-04, /* 0xBF4380CB, 0x8C0FE741 */ -w5 = 8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */ -w6 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */ - -static const double zero= 0.00000000000000000000e+00; - -v64df v64df_cos_aux (v64df x, v64di __mask); -v64df v64df_log_aux (v64df x, v64di __mask); -v64df v64df_sin_aux (v64df x, v64di __mask); - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_floorv) \ - && __has_builtin (__builtin_gcn_fabsv) - -static v64df -v64df_sin_pi (v64df x) -{ - // Explicitly create mask for internal function. - v64di __mask = VECTOR_INIT (-1L); - FUNCTION_INIT (v64df); - - v64df y, z; - v64si n, ix; - - GET_HIGH_WORD (ix, x, NO_COND); - ix &= 0x7fffffff; - - VECTOR_IF (ix < 0x3fd00000, cond) - VECTOR_RETURN (v64df_sin_aux (pi * x, __mask), cond); - VECTOR_ENDIF - y = -x; /* x is assume negative */ - - /* - * argument reduction, make sure inexact flag not raised if input - * is an integer - */ - z = __builtin_gcn_floorv (y); - VECTOR_IF (z != y, cond) - /* inexact anyway */ - VECTOR_COND_MOVE(y, y * 0.5, cond); - VECTOR_COND_MOVE(y, 2.0 * (y - __builtin_gcn_floorv (y)), cond); /* y = |x| mod 2.0 */ - VECTOR_COND_MOVE(n, __builtin_convertvector(y * 4.0, v64si), cond); - VECTOR_ELSE (cond) - VECTOR_IF2 (__builtin_convertvector(ix >= 0x43400000, v64di), cond2, cond) - VECTOR_COND_MOVE(y, VECTOR_INIT(zero), cond2); - VECTOR_COND_MOVE(n, VECTOR_INIT(0), cond2); /* y must be even */ - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE(z, y + two52 /* exact */, cond2 & __builtin_convertvector(ix < 0x43300000, v64di)); - GET_LOW_WORD (n, z, cond2); - VECTOR_COND_MOVE(n, n & 1, cond2); - VECTOR_COND_MOVE(y, __builtin_convertvector(n, v64df), cond2); - VECTOR_COND_MOVE(n, n << 2, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF (n == 0, cond) - VECTOR_COND_MOVE(y, v64df_sin_aux (pi * y, __mask), cond); - VECTOR_ELSEIF (n == 1 | n == 2, cond) - VECTOR_COND_MOVE(y, v64df_cos_aux (pi * (0.5 - y), __mask), cond); - VECTOR_ELSEIF (n == 3 | n == 4, cond) - VECTOR_COND_MOVE(y, v64df_sin_aux (pi * (VECTOR_INIT(one) - y), __mask), cond); - VECTOR_ELSEIF (n == 5 | n == 6, cond) - VECTOR_COND_MOVE(y, -v64df_cos_aux (pi * (y - 1.5), __mask), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE(y, v64df_sin_aux (pi * (y - 2.0), __mask), cond); - VECTOR_ENDIF - - VECTOR_RETURN(-y, NO_COND); - FUNCTION_RETURN; -} - -DEF_VD_MATH_FUNC (v64df, lgamma_r, v64df x, v64si *signgamp) -{ - FUNCTION_INIT (v64df); - - v64df t,y,z,nadj = VECTOR_INIT(0.0),p,p1,p2,p3,q,r,w; - v64si i,hx,lx,ix; - - EXTRACT_WORDS(hx,lx,x); - - /* purge off +-inf, NaN, +-0, and negative arguments */ - *signgamp = VECTOR_INIT(1); - ix = hx&0x7fffffff; - VECTOR_IF(ix>=0x7ff00000, cond) - VECTOR_RETURN (x*x, cond); - VECTOR_ENDIF - VECTOR_IF((ix|lx)==0, cond) - VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (hx<0)); - VECTOR_RETURN(one/(x-x), cond); - VECTOR_ENDIF - VECTOR_IF (ix < 0x3b900000, cond) /* |x|<2**-70, return -log(|x|) */ - VECTOR_IF2(hx<0, cond2, cond) - VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond); - VECTOR_RETURN (-v64df_log_aux(-x, __mask), cond2); - VECTOR_ELSE2(cond2, cond) - VECTOR_RETURN (-v64df_log_aux(x, __mask), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (hx < 0, cond) - VECTOR_IF2(ix>=0x43300000, cond2, cond) /* |x|>=2**52, must be -integer */ - VECTOR_RETURN(one/(x-x), cond2); /* -integer */ - VECTOR_ENDIF - VECTOR_COND_MOVE (t, v64df_sin_pi (x), cond); - VECTOR_IF2(__builtin_convertvector(t==zero, v64si), cond2, cond) - VECTOR_RETURN(one/(x-x), cond2); /* -integer */ - VECTOR_ENDIF - VECTOR_COND_MOVE(nadj, v64df_log_aux(VECTOR_INIT(pi)/__builtin_gcn_fabsv(t*x), __mask), cond); - VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & __builtin_convertvector(t < zero, v64si)); - VECTOR_COND_MOVE(x, -x, cond); - VECTOR_ENDIF - - /* purge off 1 and 2 */ - VECTOR_IF((((ix-0x3ff00000)|lx)==0)|(((ix-0x40000000)|lx)==0), cond) - VECTOR_COND_MOVE(r, VECTOR_INIT(0.0), cond); - /* for x < 2.0 */ - VECTOR_ELSEIF(ix<0x40000000, cond) - VECTOR_IF2(ix<=0x3feccccc, cond2, cond) - /* lgamma(x) = lgamma(x+1)-log(x) */ - r = -v64df_log_aux(x, __mask); - VECTOR_IF2(ix>=0x3FE76944, cond3, cond2) - VECTOR_COND_MOVE(y, one-x, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); - VECTOR_ELSEIF2(ix>=0x3FCDA661, cond3, cond2) - VECTOR_COND_MOVE(y, x-(tc-one), cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); - VECTOR_ELSE2(cond3, cond2) - VECTOR_COND_MOVE(y, x, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); - VECTOR_ENDIF - VECTOR_ELSE2(cond2, cond) - VECTOR_COND_MOVE(r, VECTOR_INIT(zero), cond2); - VECTOR_IF2(ix>=0x3FFBB4C3, cond3, cond2) /* [1.7316,2] */ - VECTOR_COND_MOVE(y, VECTOR_INIT(2.0)-x, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); - VECTOR_ELSEIF2(ix>=0x3FF3B4C4, cond3, cond2) /* [1.23,1.73] */ - VECTOR_COND_MOVE(y, x-tc, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); - VECTOR_ELSE2(cond3, cond2) - VECTOR_COND_MOVE(y, x-one, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF2(i==0, cond2, cond) - VECTOR_COND_MOVE(z, y*y, cond2); - VECTOR_COND_MOVE(p1, a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))), cond2); - VECTOR_COND_MOVE(p2, z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))), cond2); - VECTOR_COND_MOVE(p, y*p1+p2, cond2); - VECTOR_COND_MOVE(r, r + (p-0.5*y), cond2); - VECTOR_ELSEIF2(i==1, cond2, cond) - VECTOR_COND_MOVE(z, y*y, cond2); - VECTOR_COND_MOVE(w, z*y, cond2); - VECTOR_COND_MOVE(p1, t0+w*(t3+w*(t6+w*(t9 +w*t12))), cond2); /* parallel comp */ - VECTOR_COND_MOVE(p2, t1+w*(t4+w*(t7+w*(t10+w*t13))), cond2); - VECTOR_COND_MOVE(p3, t2+w*(t5+w*(t8+w*(t11+w*t14))), cond2); - VECTOR_COND_MOVE(p, z*p1-(tt-w*(p2+y*p3)), cond2); - VECTOR_COND_MOVE(r, r + (tf + p), cond2); - VECTOR_ELSEIF2(i==2, cond2, cond) - VECTOR_COND_MOVE(p1, y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))), cond2); - VECTOR_COND_MOVE(p2, one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))), cond2); - VECTOR_COND_MOVE(r, r + (-0.5*y + p1/p2), cond2); - VECTOR_ENDIF - VECTOR_ELSEIF(ix<0x40200000, cond) - /* x < 8.0 */ - VECTOR_COND_MOVE(i, __builtin_convertvector(x, v64si), cond); - VECTOR_COND_MOVE(t, VECTOR_INIT(zero), cond); - VECTOR_COND_MOVE(y, x-__builtin_convertvector(i, v64df), cond); - VECTOR_COND_MOVE(p, y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))), cond); - VECTOR_COND_MOVE(q, one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))), cond); - VECTOR_COND_MOVE(r, half*y+p/q, cond); - VECTOR_COND_MOVE(z, VECTOR_INIT(one), cond); /* lgamma(1+s) = log(s) + lgamma(s) */ - VECTOR_IF2(i==7, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+6.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i==7 | i==6, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+5.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i<=7 & i>=5, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+4.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i<=7 & i>=4, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+3.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i<=7 & i>=3, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+2.0), cond2); - VECTOR_COND_MOVE(r, r + v64df_log_aux(z, __mask), cond2); - VECTOR_ENDIF - /* 8.0 <= x < 2**58 */ - VECTOR_ELSEIF(ix < 0x43900000, cond) - VECTOR_COND_MOVE(t, v64df_log_aux(x, __mask), cond); - VECTOR_COND_MOVE(z, one/x, cond); - VECTOR_COND_MOVE(y, z*z, cond); - VECTOR_COND_MOVE(w, w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))), cond); - VECTOR_COND_MOVE(r, (x-half)*(t-one)+w, cond); - VECTOR_ELSE(cond) - /* 2**58 <= x <= inf */ - VECTOR_COND_MOVE(r, x*(v64df_log_aux(x, __mask)-one), cond); - VECTOR_ENDIF - VECTOR_IF(hx<0, cond) - VECTOR_COND_MOVE(r, nadj - r, cond); - VECTOR_ENDIF - - VECTOR_RETURN(r, NO_COND); - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_log.c b/newlib/libm/machine/amdgcn/v64df_log.c deleted file mode 100644 index 8ed8dec909..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_log.c +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/s_logarithm.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_finite (v64df); -v64si v64df_isnan (v64df); - -static const double a[] = { -0.64124943423745581147e+02, - 0.16383943563021534222e+02, - -0.78956112887481257267 }; -static const double b[] = { -0.76949932108494879777e+03, - 0.31203222091924532844e+03, - -0.35667977739034646171e+02 }; -static const double C1 = 22713.0 / 32768.0; -static const double C2 = 1.428606820309417232e-06; - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_frexpv_mant) \ - && __has_builtin (__builtin_gcn_frexpv_exp) \ - -DEF_VD_MATH_FUNC (v64df, log, v64df x) -{ - FUNCTION_INIT (v64df); - - /* Check for domain/range errors here. */ - VECTOR_IF (x == 0.0, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (-z_infinity.d), cond); - VECTOR_ELSEIF (x < 0.0, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); - VECTOR_ELSEIF (__builtin_convertvector (~v64df_finite (x), v64di), cond) - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_notanum.d), - VECTOR_INIT (z_infinity.d), - v64df_isnan (x)), - cond); - VECTOR_ENDIF - - /* Get the exponent and mantissa where x = f * 2^N. */ - v64df f = __builtin_gcn_frexpv_mant (x); - v64si N = __builtin_gcn_frexpv_exp (x); - - v64df z = f - 0.5; - - VECTOR_IF (f > __SQRT_HALF, cond) - VECTOR_COND_MOVE (z, (z - 0.5) / (f * 0.5 + 0.5), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (N, N - 1, cond); - VECTOR_COND_MOVE (z, z / (z * 0.5 + 0.5), cond); - VECTOR_ENDIF - - v64df w = z * z; - - /* Use Newton's method with 4 terms. */ - z += z * w * ((a[2] * w + a[1]) * w + a[0]) / (((w + b[2]) * w + b[1]) * w + b[0]); - - v64df Nf = __builtin_convertvector (N, v64df); - VECTOR_COND_MOVE (z, (Nf * C2 + z) + Nf * C1, N != 0); - - VECTOR_RETURN (z, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (log, df, df) - -DEF_VD_MATH_FUNC (v64df, log1p, v64df x) -{ - /* TODO: Implement algorithm with better precision. */ - return v64df_log_aux (1 + x, __mask); -} - -DEF_VARIANTS (log1p, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_log10.c b/newlib/libm/machine/amdgcn/v64df_log10.c deleted file mode 100644 index a3a8921a69..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_log10.c +++ /dev/null @@ -1,21 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/s_algorithm.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_log_aux (v64df, v64di); - -static const double C3 = 0.43429448190325182765; - -DEF_VD_MATH_FUNC (v64df, log10, v64df x) -{ - return v64df_log_aux (x, __mask) * C3; -} - -DEF_VARIANTS (log10, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_log2.c b/newlib/libm/machine/amdgcn/v64df_log2.c deleted file mode 100644 index bb968a62b5..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_log2.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "amdgcnmach.h" - -v64df v64df_log_aux (v64df, v64di); - -static const double C3 = 1.4426950408889634073599246810019; - -DEF_VD_MATH_FUNC (v64df, log2, v64df x) -{ - return v64df_log_aux (x, __mask) * C3; -} - -DEF_VARIANTS (log2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_modf.c b/newlib/libm/machine/amdgcn/v64df_modf.c deleted file mode 100644 index 1c14c790cc..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_modf.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_modf.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_numtest (v64df); - -DEF_VD_MATH_FUNC (v64df, modf, v64df x, v64df *iptr) -{ - FUNCTION_INIT (v64df); - v64df ret_i; - - v64si i0, i1; - EXTRACT_WORDS(i0, i1, x); - v64si j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; /* exponent of x */ - v64df zero; - v64si i; - INSERT_WORDS (zero, i0 & 0x80000000, VECTOR_INIT (0), NO_COND); - - VECTOR_IF (j0 < 20, cond) /* integer part in x*/ - VECTOR_IF2 (j0 < 0, cond2, cond) /* |x|<1 */ - VECTOR_COND_MOVE (ret_i, zero, cond2); - VECTOR_RETURN (x, cond2); - VECTOR_ELSE2 (cond2, cond) - i = (0x000fffff) >> j0; - - VECTOR_IF2 (((i0 & i) | i1) == 0, cond3, cond2) /* x is integral */ - VECTOR_COND_MOVE (ret_i, x, cond3); - VECTOR_RETURN (zero, cond3); - VECTOR_ELSE2 (cond3, cond2) - INSERT_WORDS (ret_i, i0 & ~i, VECTOR_INIT (0), cond3); - VECTOR_RETURN (x - ret_i, cond3); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_ELSEIF (j0 > 51, cond) /* no fraction part */ - VECTOR_COND_MOVE (ret_i, x, cond); - VECTOR_IF2 (v64df_numtest (x) == NAN, cond2, cond) - VECTOR_COND_MOVE (ret_i, x + x, cond2); - VECTOR_RETURN (ret_i, cond2); /* x is NaN, return NaN */ - VECTOR_ENDIF - VECTOR_RETURN (zero, cond); /* return +- 0 */ - VECTOR_ELSE (cond) - i = 0xffffffff >> (j0 - 20); - VECTOR_IF2 ((i1 & i) == 0, cond2, cond) - VECTOR_COND_MOVE (ret_i, x, cond2); - INSERT_WORDS (x, i0 & 0x80000000, VECTOR_INIT (0), cond2); - VECTOR_RETURN (x, cond2); - VECTOR_ELSE2 (cond2, cond) - INSERT_WORDS (ret_i, i0, i1 & ~i, cond2); - VECTOR_RETURN (x - ret_i, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - *iptr = ret_i; - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64df_numtest.c b/newlib/libm/machine/amdgcn/v64df_numtest.c deleted file mode 100644 index 00a5a2243d..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_numtest.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Based on newlib/libm/mathfp/s_numtest.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si -v64df_numtest (v64df x) -{ - // Explicitly create mask for internal function. - v64si __mask = VECTOR_INIT (-1); - FUNCTION_INIT (v64si); - - v64si hx, lx; - EXTRACT_WORDS (hx, lx, x); - v64si exp = (hx & 0x7ff00000) >> 20; - - /* Check for a zero input. */ - VECTOR_RETURN (VECTOR_INIT (0), x == 0.0); - - /* Check for not a number or infinity. */ - VECTOR_IF (exp == 0x7ff, cond) - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (NAN), - VECTOR_INIT (INF), - ((hx & 0xf0000) != 0) | (lx != 0)), - cond); - /* Otherwise it's a finite value. */ - VECTOR_ELSE (cond) - VECTOR_RETURN (VECTOR_INIT (NUM), cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64df_pow.c b/newlib/libm/machine/amdgcn/v64df_pow.c deleted file mode 100644 index 19d5e6b051..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_pow.c +++ /dev/null @@ -1,322 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/math/e_pow.c in Newlib. */ - -#include "amdgcnmach.h" - -static const double -bp[] = {1.0, 1.5,}, -dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */ -dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */ -zero = 0.0, -one = 1.0, -two = 2.0, -two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */ - /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ -L1 = 5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */ -L2 = 4.28571428578550184252e-01, /* 0x3FDB6DB6, 0xDB6FABFF */ -L3 = 3.33333329818377432918e-01, /* 0x3FD55555, 0x518F264D */ -L4 = 2.72728123808534006489e-01, /* 0x3FD17460, 0xA91D4101 */ -L5 = 2.30660745775561754067e-01, /* 0x3FCD864A, 0x93C9DB65 */ -L6 = 2.06975017800338417784e-01, /* 0x3FCA7E28, 0x4A454EEF */ -P1 = 1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */ -P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */ -P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ -P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ -P5 = 4.13813679705723846039e-08, /* 0x3E663769, 0x72BEA4D0 */ -lg2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */ -lg2_h = 6.93147182464599609375e-01, /* 0x3FE62E43, 0x00000000 */ -lg2_l = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */ -ovt = 8.0085662595372944372e-0017, /* -(1024-log2(ovfl+.5ulp)) */ -cp = 9.61796693925975554329e-01, /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */ -cp_h = 9.61796700954437255859e-01, /* 0x3FEEC709, 0xE0000000 =(float)cp */ -cp_l = -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/ -ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */ -ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/ -ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ - -v64df v64df_sqrt_aux (v64df, v64di); -v64df v64df_scalbn_aux (v64df, v64si, v64di); - -static v64df v64df_math_oflow (v64di sign) -{ - errno = ERANGE; - return VECTOR_MERGE (VECTOR_INIT (-0x1p769), - VECTOR_INIT (0x1p769), sign) * 0x1p769; -} - -static v64df v64df_math_uflow (v64di sign) -{ - errno = ERANGE; - return VECTOR_MERGE (VECTOR_INIT (-0x1p-767), - VECTOR_INIT (0x1p-767), sign) * 0x1p-767; -} - -static v64si v64df_issignaling_inline (v64df x) -{ - v64si __mask = VECTOR_INIT (-1); - v64si ix; - GET_HIGH_WORD (ix, x, NO_COND); - /* Use IEEE-754 2008 encoding - i.e. exponent bits all 1, MSB of - significand is 0 for signalling NaN. */ - return ((ix & 0x7ff00000) == 0x7ff00000) & ((ix & 0x00080000) == 0); -} - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC (v64df, pow, v64df x, v64df y) -{ - FUNCTION_INIT (v64df); - - v64si hx, hy, lx, ly; - EXTRACT_WORDS(hx,lx,x); - EXTRACT_WORDS(hy,ly,y); - v64si ix = hx&0x7fffffff; - v64si iy = hy&0x7fffffff; - - /* y==zero: x**0 = 1 unless x is snan */ - VECTOR_IF ((iy|ly)==0, cond) - VECTOR_RETURN (x + y, cond & v64df_issignaling_inline(x)); - VECTOR_RETURN (VECTOR_INIT (1.0), cond); - VECTOR_ENDIF - - /* x|y==NaN return NaN unless x==1 then return 1 */ - VECTOR_IF ((ix > 0x7ff00000) | ((ix==0x7ff00000)&(lx!=0)) - | (iy > 0x7ff00000) | ((iy==0x7ff00000)&(ly!=0)), cond) - VECTOR_RETURN (VECTOR_INIT (1.0), cond & ((hx-0x3ff00000)|lx)==0 - & ~v64df_issignaling_inline(y)); - VECTOR_RETURN (x + y, cond); - VECTOR_ENDIF - - /* determine if y is an odd int when x < 0 - * yisint = 0 ... y is not an integer - * yisint = 1 ... y is an odd int - * yisint = 2 ... y is an even int - */ - v64si yisint = VECTOR_INIT (0); - - VECTOR_IF (hx < 0, cond) - VECTOR_IF2(iy>=0x43400000, cond2, cond) - VECTOR_COND_MOVE (yisint, VECTOR_INIT (2), cond2); /* even integer y */ - VECTOR_ELSEIF2 (iy>=0x3ff00000, cond2, cond) - v64si k = (iy>>20)-0x3ff; /* exponent */ - VECTOR_IF2 (k>20, cond3, cond2) - v64si j = ly>>(52-k); - VECTOR_COND_MOVE (yisint, 2-(j&1), cond3 & (j<<(52-k))==ly); - VECTOR_ELSEIF2 (ly==0, cond3, cond2) - v64si j = iy>>(20-k); - VECTOR_COND_MOVE (yisint, 2-(j&1), cond3 & (j<<(20-k))==iy); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_ENDIF - - /* special value of y */ - VECTOR_IF (ly==0, cond) - VECTOR_IF2 (iy==0x7ff00000, cond2, cond) /* y is +-inf */ - VECTOR_IF2 (((ix-0x3ff00000)|lx)==0, cond3, cond2) - VECTOR_RETURN (VECTOR_INIT (1.0), cond3); /* +-1**+-inf = 1 */ - VECTOR_ELSEIF2 (ix >= 0x3ff00000, cond3, cond2) /* (|x|>1)**+-inf = inf,0 */ - VECTOR_RETURN (y, cond3 & hy>=0); - VECTOR_RETURN (VECTOR_INIT (0.0), cond3); - VECTOR_ELSE2 (cond3, cond2) /* (|x|<1)**-,+inf = inf,0 */ - VECTOR_RETURN (-y, cond3 & hy<0); - VECTOR_RETURN (VECTOR_INIT (0.0), cond3); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF2 (iy==0x3ff00000, cond2, cond) /* y is +-1 */ - VECTOR_RETURN (VECTOR_INIT (1.0) / x, cond2 & hy<0); - VECTOR_RETURN (x, cond2); - VECTOR_ENDIF - VECTOR_RETURN (x*x, cond & hy==0x40000000); /* y is 2 */ - /* y is 0.5 */ - /* x >= +0 */ - VECTOR_RETURN (v64df_sqrt_aux (x, __mask), cond & (hy==0x3fe00000) & (hx>=0)); - VECTOR_ENDIF - - v64df ax = __builtin_gcn_fabsv(x); - /* special value of x */ - VECTOR_IF (lx==0, cond) - VECTOR_IF2 ((ix==0x7ff00000)|(ix==0)|(ix==0x3ff00000), cond2, cond) - v64df z = ax; /*x is +-0,+-inf,+-1*/ - VECTOR_COND_MOVE (z, VECTOR_INIT (1.0) / z, cond2 & (hy<0)); /* z = (1/|x|) */ - VECTOR_IF2 (hx<0, cond3, cond2) - VECTOR_IF2 (((ix-0x3ff00000)|yisint)==0, cond4, cond3) - VECTOR_COND_MOVE (z, (z-z)/(z-z), cond4); /* (-1)**non-int is NaN */ - VECTOR_ELSEIF2 (yisint==1, cond4, cond3) - VECTOR_COND_MOVE (z, -z, cond4); /* (x<0)**odd = -(|x|**odd) */ - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_RETURN (z, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - /* (x<0)**(non-int) is NaN */ - VECTOR_RETURN ((x-x)/(x-x), ((((hx >> 31) & 1) - 1)|yisint)==0); - - v64df t1, t2; - - /* |y| is huge */ - VECTOR_IF(iy>0x41e00000, cond) /* if |y| > 2**31 */ - VECTOR_IF2 (iy>0x43f00000, cond2, cond) /* if |y| > 2**64, must o/uflow */ - VECTOR_IF2 (ix<=0x3fefffff, cond3, cond2) - VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond3 & (hy<0)); - VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond3); - VECTOR_ENDIF - VECTOR_IF2 (ix>=0x3ff00000, cond3, cond2) - VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond3 & (hy>0)); - VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond3); - VECTOR_ENDIF - VECTOR_ENDIF - /* over/underflow if x is not close to one */ - VECTOR_IF2 (ix<0x3fefffff, cond2, cond) - VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond2 & (hy<0)); - VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond2); - VECTOR_ENDIF - VECTOR_IF2 (ix>0x3ff00000, cond2, cond) - VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond2 & (hy>0)); - VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond2); - VECTOR_ENDIF - /* now |1-x| is tiny <= 2**-20, suffice to compute - log(x) by x-x^2/2+x^3/3-x^4/4 */ - v64df t = ax-1; /* t has 20 trailing zeros */ - v64df w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25)); - v64df u = ivln2_h*t; /* ivln2_h has 21 sig. bits */ - v64df v = t*ivln2_l-w*ivln2; - VECTOR_COND_MOVE (t1, u+v, cond); - SET_LOW_WORD (t1, VECTOR_INIT (0), cond); - VECTOR_COND_MOVE (t2, v-(t1-u), cond); - VECTOR_ELSE (cond) - v64si n = VECTOR_INIT (0); - /* take care subnormal number */ - VECTOR_IF2 (ix<0x00100000, cond2, cond) - VECTOR_COND_MOVE (ax, ax * two53, cond2); - VECTOR_COND_MOVE (n, n - 53, cond2); - GET_HIGH_WORD (ix, ax, cond2); - VECTOR_ENDIF - n += ((ix)>>20)-0x3ff; - v64si j = ix&0x000fffff; - /* determine interval */ - ix = j|0x3ff00000; /* normalize ix */ - v64si k; - VECTOR_IF2 (j<=0x3988E, cond2, cond) - VECTOR_COND_MOVE (k, VECTOR_INIT (0), cond2); /* |x|>1)|0x20000000)+0x00080000+(k<<18), cond); - v64df t_l = ax - (t_h-bp_k); - v64df s_l = v*((u-s_h*t_h)-s_h*t_l); - /* compute log(ax) */ - v64df s2 = s*s; - v64df r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); - r += s_l*(s_h+s); - s2 = s_h*s_h; - t_h = 3.0+s2+r; - SET_LOW_WORD (t_h, VECTOR_INIT (0), cond); - t_l = r-((t_h-3.0)-s2); - /* u+v = s*(1+...) */ - u = s_h*t_h; - v = s_l*t_h+t_l*s; - /* 2/(3log2)*(s+...) */ - v64df p_h = u+v; - SET_LOW_WORD (p_h, VECTOR_INIT (0), cond); - v64df p_l = v-(p_h-u); - v64df z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ - v64df dp_l_k = VECTOR_MERGE (VECTOR_INIT (dp_l[1]), VECTOR_INIT (dp_l[0]), k == 1); - v64df z_l = cp_l*p_h+p_l*cp+dp_l_k; - /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ - v64df t = __builtin_convertvector (n, v64df); - v64df dp_h_k = VECTOR_MERGE (VECTOR_INIT (dp_h[1]), VECTOR_INIT (dp_h[0]), k == 1); - VECTOR_COND_MOVE (t1, ((z_h+z_l)+dp_h_k)+t, cond); - SET_LOW_WORD (t1, VECTOR_INIT (0), cond); - VECTOR_COND_MOVE (t2, z_l-(((t1-t)-dp_h_k)-z_h), cond); - VECTOR_ENDIF - - v64df s = VECTOR_INIT (1.0); /* s (sign of result -ve**odd) = -1 else = 1 */ - VECTOR_COND_MOVE (s, VECTOR_INIT (-1.0), /* (-ve)**(odd int) */ - ((hx>>31) != 0)&(yisint == 1)); - - /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ - v64df y1 = y; - SET_LOW_WORD (y1, VECTOR_INIT (0), NO_COND); - v64df p_l = (y-y1)*t1+y*t2; - v64df p_h = y1*t1; - v64df z = p_l+p_h; - v64si i, j; - EXTRACT_WORDS(j, i, z); - VECTOR_IF (j>=0x40900000, cond) /* z >= 1024 */ - /* if z > 1024 */ - v64di cond_di = __builtin_convertvector (cond, v64di); - VECTOR_RETURN (v64df_math_oflow(s<0), cond & (((j-0x40900000)|i)!=0)); /* overflow */ - VECTOR_RETURN (v64df_math_oflow(s<0), cond_di & (p_l+ovt>z-p_h)); /* overflow */ - VECTOR_ELSEIF ((j&0x7fffffff)>=0x4090cc00, cond) /* z <= -1075 */ - /* z < -1075 */ - v64di cond_di = __builtin_convertvector (cond, v64di); - VECTOR_RETURN (v64df_math_uflow(s<0), cond & (((j-0xc090cc00)|i)!=0)); /* underflow */ - VECTOR_RETURN (v64df_math_uflow(s<0), cond_di & (p_l<=z-p_h)); /* underflow */ - VECTOR_ENDIF - - /* - * compute 2**(p_h+p_l) - */ - i = j&0x7fffffff; - v64si k = (i>>20)-0x3ff; - v64si n = VECTOR_INIT (0); - VECTOR_IF (i>0x3fe00000, cond) /* if |z| > 0.5, set n = [z+0.5] */ - VECTOR_COND_MOVE (n, j+(0x00100000>>(k+1)), cond); - k = ((n&0x7fffffff)>>20)-0x3ff; /* new k for n */ - v64df t = VECTOR_INIT (0.0); - SET_HIGH_WORD(t, n&~(0x000fffff>>k), cond); - VECTOR_COND_MOVE (n, ((n&0x000fffff)|0x00100000)>>(20-k), cond); - VECTOR_COND_MOVE (n, -n, cond & (j<0)); - VECTOR_COND_MOVE (p_h, p_h - t, cond); - VECTOR_ENDIF - v64df t = p_l+p_h; - SET_LOW_WORD(t, VECTOR_INIT (0), NO_COND); - v64df u = t*lg2_h; - v64df v = (p_l-(t-p_h))*lg2+t*lg2_l; - z = u+v; - v64df w = v-(z-u); - t = z*z; - t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); - v64df r = (z*t1)/(t1-two)-(w+z*w); - z = VECTOR_INIT (1.0)-(r-z); - GET_HIGH_WORD(j,z, NO_COND); - j += (n<<20); - VECTOR_IF ((j>>20)<=0, cond) - VECTOR_COND_MOVE (z, v64df_scalbn_aux (z, n, __mask), cond); /* subnormal output */ - VECTOR_ELSE (cond) - SET_HIGH_WORD(z,j, cond); - VECTOR_ENDIF - VECTOR_RETURN (s*z, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (pow, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_remainder.c b/newlib/libm/machine/amdgcn/v64df_remainder.c deleted file mode 100644 index a524107c7d..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_remainder.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/e_remainder.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_fmod_aux (v64df, v64df, v64di); - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC (v64df, remainder, v64df x, v64df p) -{ - FUNCTION_INIT (v64df); - - v64si hx, lx; - EXTRACT_WORDS (hx, lx, x); - v64si hp, lp; - EXTRACT_WORDS (hp, lp, p); - v64si sx = hx & 0x80000000; - hp &= 0x7fffffff; - hx &= 0x7fffffff; - - /* purge off exception values */ - VECTOR_RETURN ((x * p) / (x * p), ((hp | lp) == 0) | ((hx >= 0x7ff00000) - | /* x not finite */ - ((hp >= 0x7ff00000) & /* p is NaN */ - (((hp - 0x7ff00000) | lp) != 0)))); - - VECTOR_COND_MOVE (x, v64df_fmod_aux (x, p+p, __mask), hp <= 0x7fdfffff); // now x < 2p - - VECTOR_RETURN (0.0 * x, ((hx-hp)|(lx-lp))==0); - - x = __builtin_gcn_fabsv (x); - p = __builtin_gcn_fabsv (p); - - VECTOR_IF (hp < 0x00200000, cond) - VECTOR_IF2 (x + x > p, cond2, __builtin_convertvector(cond, v64di)) - VECTOR_COND_MOVE (x, x - p, cond2); - VECTOR_COND_MOVE (x, x - p, cond2 & (x + x >= p)); - VECTOR_ENDIF - VECTOR_ELSE (cond) - v64df p_half = 0.5 * p; - VECTOR_IF2 (x > p_half, cond2, __builtin_convertvector(cond, v64di)) - VECTOR_COND_MOVE (x, x - p, cond2); - VECTOR_COND_MOVE (x, x - p, cond2 & (x >= p_half)); - VECTOR_ENDIF - VECTOR_ENDIF - - GET_HIGH_WORD (hx, x, NO_COND); - SET_HIGH_WORD (x, hx ^ sx, NO_COND); - - VECTOR_RETURN (x, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (remainder, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_rint.c b/newlib/libm/machine/amdgcn/v64df_rint.c deleted file mode 100644 index 561c9a2ac9..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_rint.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_rint.c in Newlib. */ - -#include "amdgcnmach.h" - -static const double TWO52[2] = { - 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ - -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */ -}; - -DEF_VD_MATH_FUNC (v64df, rint, v64df x) -{ - FUNCTION_INIT (v64df); - - v64si i0, i1; - EXTRACT_WORDS (i0, i1, x); - v64si sx = (i0 >> 31) & 1; - v64df two52 = VECTOR_MERGE (VECTOR_INIT (TWO52[1]), VECTOR_INIT (TWO52[0]), sx != 0); - v64si j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; - v64si i; - VECTOR_IF (j0 < 20, cond) - VECTOR_IF2 (j0 < 0, cond2, cond) - VECTOR_RETURN (x, cond2 & (((i0 & 0x7fffffff) | i1) == 0)); - VECTOR_COND_MOVE (i1, i1 | (i0 & 0x0fffff), cond2); - VECTOR_COND_MOVE (i0, i0 & 0xfffe0000, cond2); - VECTOR_COND_MOVE (i0, i0 | (((i1 | -i1) >> 12) & 0x80000), cond2); - SET_HIGH_WORD (x, i0, cond2); - v64df w = two52 + x; - v64df t = w - two52; - GET_HIGH_WORD (i0, t, cond2); - SET_HIGH_WORD (t, (i0&0x7fffffff)|(sx<<31), cond2); - VECTOR_RETURN (t, cond2); - VECTOR_ELSE2 (cond2, cond) - i = (0x000fffff) >> j0; - VECTOR_RETURN (x, cond2 & (((i0 & i) | i1) == 0)); /* x is integral */ - i >>= 1; - VECTOR_IF2 (((i0 & i) | i1) != 0, cond3, cond2) - VECTOR_COND_MOVE (i1, CAST_VECTOR(v64si, VECTOR_INIT (0x80000000)), cond3 & (j0 == 19)); - VECTOR_COND_MOVE (i1, VECTOR_INIT (0), cond3 & (j0 != 19)); - VECTOR_COND_MOVE (i0, (i0 & (~i)) | ((0x40000) >> j0), cond3); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_ELSEIF (j0 > 51, cond) - VECTOR_RETURN (x + x, cond & (j0 == 0x400)); - VECTOR_RETURN (x, cond); - VECTOR_ELSE (cond) - i = CAST_VECTOR (v64si, VECTOR_INIT (0xffffffff) >> (j0 - 20)); - VECTOR_RETURN (x, cond & ((i1 & i) == 0)); - i >>= 1; - VECTOR_COND_MOVE (i1, (i1 & (~i)) | (0x40000000 >> (j0 - 20)), cond & ((i1 & i) != 0)); - VECTOR_ENDIF - INSERT_WORDS (x, i0, i1, NO_COND); - v64df w = two52 + x; - VECTOR_RETURN (w - two52, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (rint, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_scalb.c b/newlib/libm/machine/amdgcn/v64df_scalb.c deleted file mode 100644 index 794045d4e9..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_scalb.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/e_scalb.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_isnan (v64df); -v64si v64df_finite (v64df); -v64df v64df_rint_aux (v64df, v64di); -v64df v64df_scalbn_aux (v64df, v64si, v64di); - -DEF_VD_MATH_FUNC (v64df, scalb, v64df x, v64df fn) -{ - FUNCTION_INIT (v64df); - - VECTOR_IF (v64df_isnan(x) | v64df_isnan(fn), cond) - VECTOR_RETURN (x * fn, cond); - VECTOR_ENDIF - VECTOR_IF (~v64df_finite (fn), cond) - VECTOR_IF2 (fn > 0.0, cond2, cond) - VECTOR_RETURN (x * fn, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (x / (-fn), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (v64df_rint_aux (fn, __mask) != fn, cond) - VECTOR_RETURN ((fn-fn)/(fn-fn), cond); - VECTOR_ENDIF - VECTOR_IF (fn > 65000.0, cond) - VECTOR_RETURN (v64df_scalbn_aux (x, VECTOR_INIT (65000), __mask), cond); - VECTOR_ENDIF - VECTOR_IF (-fn > 65000.0, cond) - VECTOR_RETURN (v64df_scalbn_aux (x, VECTOR_INIT (-65000), __mask), cond); - VECTOR_ENDIF - VECTOR_RETURN (v64df_scalbn_aux (x, __builtin_convertvector (fn, v64si), __mask), - NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (scalb, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_scalbn.c b/newlib/libm/machine/amdgcn/v64df_scalbn.c deleted file mode 100644 index 64dba67af4..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_scalbn.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/s_scalbn.c in Newlib. */ - -#include "amdgcnmach.h" -#include -#include - -static const double -two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ -twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ -huge = 1.0e+300, -tiny = 1.0e-300; - -v64df v64df_copysign_aux (v64df, v64df, v64di); - -DEF_VD_MATH_FUNC (v64df, scalbn, v64df x, v64si n) -{ - FUNCTION_INIT (v64df); - - const v64df huge_v = VECTOR_INIT ((double) huge); - const v64df tiny_v = VECTOR_INIT ((double) tiny); - - v64si hx, lx; - EXTRACT_WORDS (hx, lx, x); - v64si k =(hx&0x7ff00000)>>20; /* extract exponent */ - VECTOR_IF (k == 0, cond) /* 0 or subnormal x */ - VECTOR_RETURN (x, cond & ((lx|(hx&0x7fffffff))==0)); /* +- 0 */ - VECTOR_COND_MOVE (x, x * two54, cond); - GET_HIGH_WORD (hx, x, cond); - VECTOR_COND_MOVE (k, ((hx&0x7ff00000)>>20) - 54, cond); - VECTOR_RETURN (tiny*x, cond & (n < -50000)); /*underflow*/ - VECTOR_ENDIF - VECTOR_RETURN (x+x, k == 0x7ff); /* NaN or Inf */ - /* in case integer overflow in n+k */ - VECTOR_RETURN (huge_v * v64df_copysign_aux (huge_v, x, __mask), n > 50000); - k = k + n; - VECTOR_RETURN (huge_v * v64df_copysign_aux (huge_v, x, __mask), k > 0x7fe); - VECTOR_IF (k > 0, cond) /* normal result */ - SET_HIGH_WORD (x, (hx&0x800fffff)|(k<<20), cond); - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_RETURN (tiny_v * v64df_copysign_aux (tiny_v, x, __mask), k <= -54); /*underflow*/ - k += 54; /* subnormal result */ - SET_HIGH_WORD (x, (hx&0x800fffff)|(k<<20), NO_COND); - VECTOR_RETURN (x * twom54, NO_COND); - - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64df_signif.c b/newlib/libm/machine/amdgcn/v64df_signif.c deleted file mode 100644 index b28c8a68d8..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_signif.c +++ /dev/null @@ -1,25 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/s_signif.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_scalb_aux (v64df x, v64df fn, v64di); -v64si v64df_ilogb_aux (v64df x, v64si); - -DEF_VD_MATH_FUNC (v64df, significand, v64df x) -{ - v64si si_mask = __builtin_convertvector (__mask, v64si); - return v64df_scalb_aux (x, -__builtin_convertvector (v64df_ilogb_aux (x, si_mask), v64df), __mask); -} - -DEF_VARIANTS (significand, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sin.c b/newlib/libm/machine/amdgcn/v64df_sin.c deleted file mode 100644 index 3bd7f9a42b..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_sin.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/s_sin.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_sine_aux (v64df, int, v64di); - -DEF_VD_MATH_FUNC (v64df, sin, v64df x) -{ - return v64df_sine_aux (x, 0, __mask); -} - -DEF_VARIANTS (sin, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sine.c b/newlib/libm/machine/amdgcn/v64df_sine.c deleted file mode 100644 index 0879bc246b..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_sine.c +++ /dev/null @@ -1,97 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/s_sine.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_numtest (v64df x); - -static const double HALF_PI = 1.57079632679489661923; -static const double ONE_OVER_PI = 0.31830988618379067154; -static const double r[] = { -0.16666666666666665052, - 0.83333333333331650314e-02, - -0.19841269841201840457e-03, - 0.27557319210152756119e-05, - -0.25052106798274584544e-07, - 0.16058936490371589114e-09, - -0.76429178068910467734e-12, - 0.27204790957888846175e-14 }; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC(v64df, sine, v64df x, int cosine) -{ - const double YMAX = 210828714.0; - - FUNCTION_INIT (v64df); - - v64si num_type = v64df_numtest (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); - VECTOR_ENDIF - - /* Use sin and cos properties to ease computations. */ - v64di sgn; - v64df y; - - if (cosine) - { - sgn = VECTOR_INIT (0L); - y = __builtin_gcn_fabsv (x) + HALF_PI; - } - else - { - sgn = x < 0.0; - y = VECTOR_MERGE (-x, x, x < 0.0); - } - - /* Check for values of y that will overflow here. */ - VECTOR_IF (y > YMAX, cond) - errno = ERANGE; - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - - /* Calculate the exponent. */ - v64si Nneg = __builtin_convertvector (y * ONE_OVER_PI - 0.5, v64si); - v64si Npos = __builtin_convertvector (y * ONE_OVER_PI + 0.5, v64si); - v64si N = VECTOR_MERGE (Nneg, Npos, y < 0.0); - v64df XN = __builtin_convertvector (N, v64df); - - VECTOR_COND_MOVE (sgn, ~sgn, (N & 1) != 0); - - if (cosine) - XN -= 0.5; - - y = __builtin_gcn_fabsv (x) - XN * __PI; - - v64df res; - - VECTOR_IF ((-z_rooteps < y) & (y < z_rooteps), cond) - VECTOR_COND_MOVE (res, y, cond); - VECTOR_ELSE (cond) - v64df g = y * y; - - /* Calculate the Taylor series. */ - v64df R = (((((((r[6] * g + r[5]) * g + r[4]) * g + r[3]) * g + r[2]) * g + r[1]) * g + r[0]) * g); - - /* Finally, compute the result. */ - VECTOR_COND_MOVE (res, y + y * R, cond); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, sgn); - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_sineh.c b/newlib/libm/machine/amdgcn/v64df_sineh.c deleted file mode 100644 index 007a149387..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_sineh.c +++ /dev/null @@ -1,101 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/s_sineh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_exp_aux (v64df, v64di); -v64si v64df_numtest (v64df); -v64si v64df_ispos (v64df); - -static const double q[] = { -0.21108770058106271242e+7, - 0.36162723109421836460e+5, - -0.27773523119650701667e+3 }; -static const double p[] = { -0.35181283430177117881e+6, - -0.11563521196851768270e+5, - -0.16375798202630751372e+3, - -0.78966127417357099479 }; -static const double LNV = 0.6931610107421875000; -static const double INV_V2 = 0.24999308500451499336; -static const double V_OVER2_MINUS1 = 0.13830277879601902638e-4; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC (v64df, sineh, v64df x, int cosineh) -{ - const double WBAR = 18.55; - - FUNCTION_INIT (v64df); - - v64si sgn = VECTOR_INIT (0); - v64di v_cosineh = VECTOR_INIT (cosineh ? -1L : 0L); - - /* Check for special values. */ - v64si num_type = v64df_numtest (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity.d), - VECTOR_INIT (-z_infinity.d), - v64df_ispos (x)), - cond); - VECTOR_ENDIF - - v64df y = __builtin_gcn_fabsv (x); - - if (!cosineh) - VECTOR_COND_MOVE (sgn, VECTOR_INIT (-1), x < 0.0); - - v64df res; - - VECTOR_IF (((y > 1.0) & ~v_cosineh) | v_cosineh, cond) - VECTOR_IF2 (y > BIGX, cond2, cond) - v64df w = y - LNV; - - /* Check for w > maximum here. */ - VECTOR_IF2 (w > BIGX, cond3, cond2) - errno = ERANGE; - VECTOR_RETURN (x, cond3); - VECTOR_ENDIF - - v64df z = v64df_exp_aux (w, __mask); - - VECTOR_COND_MOVE (res, z * (V_OVER2_MINUS1 + 1.0), - cond2 & (w > WBAR)); - VECTOR_ELSE2 (cond2, cond) - v64df z = v64df_exp_aux (y, __mask); - if (cosineh) - VECTOR_COND_MOVE (res, (z + 1 / z) * 0.5, cond2); - else - VECTOR_COND_MOVE (res, (z - 1 / z) * 0.5, cond2); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, sgn); - VECTOR_ELSE (cond) - /* Check for y being too small. */ - VECTOR_IF2 (y < z_rooteps, cond2, cond); - VECTOR_COND_MOVE (res, x, cond2); - VECTOR_ELSE2 (cond2, cond) - /* Calculate the Taylor series. */ - v64df f = x * x; - v64df Q = ((f + q[2]) * f + q[1]) * f + q[0]; - v64df P = ((p[3] * f + p[2]) * f + p[1]) * f + p[0]; - v64df R = f * (P / Q); - - VECTOR_COND_MOVE (res, x + x * R, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_sinh.c b/newlib/libm/machine/amdgcn/v64df_sinh.c deleted file mode 100644 index 280f76d417..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_sinh.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/s_sinh.c. */ - -#include "amdgcnmach.h" - -v64df v64df_sineh_aux (v64df, int, v64di); - -DEF_VD_MATH_FUNC (v64df, sinh, v64df x) -{ - return v64df_sineh_aux (x, 0, __mask); -} - -DEF_VARIANTS (sinh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sqrt.c b/newlib/libm/machine/amdgcn/v64df_sqrt.c deleted file mode 100644 index 004823f925..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_sqrt.c +++ /dev/null @@ -1,75 +0,0 @@ -/***************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - *****************************************************************/ - -/* Based on newlib/libm/mathfp/s_sqrt.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64df_numtest (v64df); -v64si v64df_ispos (v64df); - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_frexpv_mant) \ - && __has_builtin (__builtin_gcn_frexpv_exp) \ - && __has_builtin (__builtin_gcn_ldexpv) - -DEF_VD_MATH_FUNC (v64df, sqrt, v64df x) -{ - FUNCTION_INIT (v64df); - - /* Check for special values. */ - v64si num_type = v64df_numtest (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - VECTOR_IF2 (v64df_ispos (x), cond2, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond2); - VECTOR_ELSE2 (cond2,cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (z_infinity.d), cond); - VECTOR_ENDIF - VECTOR_ENDIF - - /* Initial checks are performed here. */ - VECTOR_IF (x == 0.0, cond) - VECTOR_RETURN (VECTOR_INIT (0.0), cond); - VECTOR_ENDIF - VECTOR_IF (x < 0.0, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); - VECTOR_ENDIF - - /* Find the exponent and mantissa for the form x = f * 2^exp. */ - v64df f = __builtin_gcn_frexpv_mant (x); - v64si exp = __builtin_gcn_frexpv_exp (x); - v64si odd = (exp & 1) != 0; - - /* Get the initial approximation. */ - v64df y = 0.41731 + 0.59016 * f; - - f *= 0.5f; - /* Calculate the remaining iterations. */ - y = y * 0.5f + f / y; - y = y * 0.5f + f / y; - y = y * 0.5f + f / y; - - /* Calculate the final value. */ - VECTOR_COND_MOVE (y, y * __SQRT_HALF, odd); - VECTOR_COND_MOVE (exp, exp + 1, odd); - exp >>= 1; - y = __builtin_gcn_ldexpv (y, exp); - - VECTOR_RETURN (y, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (sqrt, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tan.c b/newlib/libm/machine/amdgcn/v64df_tan.c deleted file mode 100644 index 075375ae08..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_tan.c +++ /dev/null @@ -1,142 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/math/kf_tan.c in Newlib. */ - -#include "amdgcnmach.h" - -static const double -pio4 = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ -pio4lo= 3.06161699786838301793e-17, /* 0x3C81A626, 0x33145C07 */ -T[] = { - 3.33333333333334091986e-01, /* 0x3FD55555, 0x55555563 */ - 1.33333333333201242699e-01, /* 0x3FC11111, 0x1110FE7A */ - 5.39682539762260521377e-02, /* 0x3FABA1BA, 0x1BB341FE */ - 2.18694882948595424599e-02, /* 0x3F9664F4, 0x8406D637 */ - 8.86323982359930005737e-03, /* 0x3F8226E3, 0xE96E8493 */ - 3.59207910759131235356e-03, /* 0x3F6D6D22, 0xC9560328 */ - 1.45620945432529025516e-03, /* 0x3F57DBC8, 0xFEE08315 */ - 5.88041240820264096874e-04, /* 0x3F4344D8, 0xF2F26501 */ - 2.46463134818469906812e-04, /* 0x3F3026F7, 0x1A8D1068 */ - 7.81794442939557092300e-05, /* 0x3F147E88, 0xA03792A6 */ - 7.14072491382608190305e-05, /* 0x3F12B80F, 0x32F0A7E9 */ - -1.85586374855275456654e-05, /* 0xBEF375CB, 0xDB605373 */ - 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */ -}; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -static v64df -v64df_kernel_tan (v64df x, v64df y, v64si iy, v64di __mask) -{ - FUNCTION_INIT (v64df); - - v64si hx; - GET_HIGH_WORD(hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; /* high word of |x| */ - - VECTOR_IF (ix < 0x3e300000, cond) /* x < 2**-28 */ - VECTOR_IF2(__builtin_convertvector (x, v64si)==0, cond2, cond) /* generate inexact */ - v64si low; - GET_LOW_WORD (low, x, cond2); - VECTOR_RETURN (1.0 / __builtin_gcn_fabsv (x), ((ix|low)|(iy+1))==0); - VECTOR_RETURN (x, cond2 & (iy == 1)); - v64df z, w; - z = w = x + y; - SET_LOW_WORD (z, VECTOR_INIT (0.0), cond2); - v64df v = y - (z - x); - v64df t, a; - t = a = -1.0 / w; - SET_LOW_WORD(t, VECTOR_INIT (0.0), cond2); - v64df s = 1.0 + t * z; - VECTOR_RETURN ( t + a * (s + t * v), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF(ix>=0x3FE59428, cond) /* |x|>=0.6744 */ - VECTOR_COND_MOVE (x, -x, cond & (hx < 0)); - VECTOR_COND_MOVE (y, -y, cond & (hx < 0)); - v64df z = pio4-x; - v64df w = pio4lo-y; - VECTOR_COND_MOVE (x, z+w, cond); - VECTOR_COND_MOVE (y, VECTOR_INIT (0.0), cond); - VECTOR_ENDIF - v64df z = x*x; - v64df w = z*z; - /* Break x^5*(T[1]+x^2*T[2]+...) into - * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + - * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) - */ - v64df r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11])))); - v64df v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12]))))); - v64df s = z*x; - r = y + z*(s*(r+v)+y); - r += T[0]*s; - w = x+r; - VECTOR_IF(ix>=0x3FE59428, cond) - v = __builtin_convertvector (iy, v64df); - VECTOR_RETURN (__builtin_convertvector (1-((hx>>30)&2), v64df) - * (v-2.0*(x-(w*w/(w+v)-r))), cond); - VECTOR_ENDIF - VECTOR_RETURN (w, iy == 1); - /* if allow error up to 2 ulp, - simply return -1.0/(x+r) here */ - /* compute -1.0/(x+r) accurately */ - z = w; - SET_LOW_WORD (z, VECTOR_INIT (0), NO_COND); - v = r - (z - x); /* z+v = r+x */ - v64df a, t; - t = a = -1.0/w; /* a = -1.0/w */ - SET_LOW_WORD(t, VECTOR_INIT (0), NO_COND); - s = 1.0+t*z; - VECTOR_RETURN (t+a*(s+t*v), NO_COND); - - FUNCTION_RETURN; -} - -static v64si -v64df_rem_pio2 (v64df x, v64df *y) -{ - v64df r = x * __INV_PI_OVER_TWO_2_24; - v64si n = (__builtin_convertvector (r, v64si) + 0x800000) >> 24; - x = x - __builtin_convertvector (n, v64df) * __PI_OVER_TWO; - - y[0] = x; - y[1] = x - y[0]; - return n; -} - -DEF_VD_MATH_FUNC (v64df, tan, v64df x) -{ - FUNCTION_INIT (v64df); - - v64si ix; - GET_HIGH_WORD (ix, x, NO_COND); - - /* |x| ~< pi/4 */ - ix &= 0x7fffffff; - VECTOR_RETURN (v64df_kernel_tan (x, VECTOR_INIT (0.0), VECTOR_INIT (1), __mask), - ix <= 0x3fe921fb); - - /* tan(Inf or NaN) is NaN */ - VECTOR_RETURN (x-x, ix >= 0x7ff00000); /* NaN */ - - /* argument reduction needed */ - v64df y[2]; - v64si n = v64df_rem_pio2 (x,y); - VECTOR_RETURN (v64df_kernel_tan (y[0], y[1], 1-((n&1)<<1), __mask), // 1 -- n even - NO_COND); // -1 -- n odd - - FUNCTION_RETURN; -} - -DEF_VARIANTS (tan, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tanh.c b/newlib/libm/machine/amdgcn/v64df_tanh.c deleted file mode 100644 index 9b90f989bd..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_tanh.c +++ /dev/null @@ -1,63 +0,0 @@ -/***************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - *****************************************************************/ - -/* Based on newlib/libm/mathfp/s_tanh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_exp_aux (v64df, v64di); - -static const double LN3_OVER2 = 0.54930614433405484570; -static const double p[] = { -0.16134119023996228053e+4, - -0.99225929672236083313e+2, - -0.96437492777225469787 }; -static const double q[] = { 0.48402357071988688686e+4, - 0.22337720718962312926e+4, - 0.11274474380534949335e+3 }; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) - -DEF_VD_MATH_FUNC (v64df, tanh, v64df x) -{ - FUNCTION_INIT (v64df); - - v64df f = __builtin_gcn_fabsv (x); - v64df res; - - /* Check if the input is too big. */ - VECTOR_IF (f > BIGX, cond) - VECTOR_COND_MOVE (res, VECTOR_INIT (1.0), cond); - - VECTOR_ELSEIF (f > LN3_OVER2, cond) - VECTOR_COND_MOVE (res, 1.0 - 2.0 / (v64df_exp_aux (2 * f, __mask) + 1.0), - cond); - - /* Check if the input is too small. */ - VECTOR_ELSEIF (f < z_rooteps, cond) - VECTOR_COND_MOVE (res, f, cond); - - /* Calculate the Taylor series. */ - VECTOR_ELSE (cond) - v64df g = f * f; - - v64df P = (p[2] * g + p[1]) * g + p[0]; - v64df Q = ((g + q[2]) * g + q[1]) * g + q[0]; - v64df R = g * (P / Q); - - VECTOR_COND_MOVE (res, f + f * R, cond); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, x < 0.0); - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (tanh, df, df) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tgamma.c b/newlib/libm/machine/amdgcn/v64df_tgamma.c deleted file mode 100644 index 3fd04931b8..0000000000 --- a/newlib/libm/machine/amdgcn/v64df_tgamma.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/math/e_tgamma.c in Newlib. */ - -#include "amdgcnmach.h" - -v64df v64df_exp_aux (v64df x, v64di __mask); -v64df v64df_lgamma_r_aux (v64df x, v64si *signgamp, v64di __mask); - -DEF_VD_MATH_FUNC (v64df, tgamma, v64df x) -{ - v64si signgam_local; - v64df y = v64df_exp_aux(v64df_lgamma_r_aux(x, &signgam_local, __mask), __mask); - VECTOR_COND_MOVE(y, -y, signgam_local < 0); - return y; -} - -DEF_VARIANTS (tgamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64sf_acos.c b/newlib/libm/machine/amdgcn/v64sf_acos.c deleted file mode 100644 index 216df0ac91..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_acos.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_acos.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_asinef_aux (v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, acosf, v64sf x) -{ - return v64sf_asinef_aux(x, 1, __mask); -} - -DEF_VARIANTS (acosf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_acosh.c b/newlib/libm/machine/amdgcn/v64sf_acosh.c deleted file mode 100644 index e2a8cbd3e1..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_acosh.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/mathfp/ef_acosh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_logf_aux (v64sf, v64si); -v64sf v64sf_log1pf_aux (v64sf, v64si); -v64sf v64sf_sqrtf_aux (v64sf, v64si); - -DEF_VS_MATH_FUNC (v64sf, acoshf, v64sf x) -{ - static const float one = 1.0; - static const float ln2 = 6.9314718246e-01; /* 0x3f317218 */ - - FUNCTION_INIT (v64sf); - - v64si hx; - GET_FLOAT_WORD (hx, x, NO_COND); - - VECTOR_IF (hx < 0x3f800000, cond) // x < 1 */ - VECTOR_RETURN ((x-x) / (x-x), cond); - VECTOR_ENDIF - VECTOR_IF (hx >=0x4d800000, cond) // x > 2**28 */ - VECTOR_IF2 (hx >=0x7f800000, cond2, cond) // x is inf of NaN */ - VECTOR_RETURN (x+x, cond2); - VECTOR_ELSE (cond2) - /* acosh(huge)=log(2x) */ - VECTOR_RETURN (v64sf_logf_aux (x, __mask) + ln2, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (hx == 0x3f800000, cond) - /* acosh(1) = 0 */ - VECTOR_RETURN (VECTOR_INIT (0.0f), cond); - VECTOR_ENDIF - VECTOR_IF (hx > 0x40000000, cond) /* 2**28 > x > 2 */ - { - v64sf t = x * x; - VECTOR_RETURN (v64sf_logf_aux (2.0f*x - 1.0f / - (x + v64sf_sqrtf_aux (t - 1.0f, __mask)), - __mask), - cond); - } - VECTOR_ELSE (cond) /* 1 0.5f, cond) - VECTOR_COND_MOVE (i, VECTOR_INIT (1 - acosine), cond); - - /* Check for range error. */ - VECTOR_IF2 (y > 1.0f, cond2, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond2); - VECTOR_ENDIF - - VECTOR_COND_MOVE (g, (1.0f - y) / 2.0f, cond); - VECTOR_COND_MOVE (y, -2.0f * v64sf_sqrtf (g), cond); - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (i, VECTOR_INIT (acosine), cond); - VECTOR_IF2 (y < z_rooteps_f, cond2, cond) - VECTOR_COND_MOVE (res, y, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (g, y * y, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF ((y >= z_rooteps_f) | branch, cond) - { - /* Calculate the Taylor series. */ - v64sf P = (p[1] * g + p[0]) * g; - v64sf Q = (g + q[1]) * g + q[0]; - v64sf R = P / Q; - - VECTOR_COND_MOVE (res, y + y * R, cond); - } - VECTOR_ENDIF - - v64sf a_i = VECTOR_MERGE (VECTOR_INIT (a[1]), VECTOR_INIT (a[0]), i != 0); - - /* Calculate asine or acose. */ - if (acosine == 0) - { - VECTOR_COND_MOVE (res, (a_i + res) + a_i, NO_COND); - VECTOR_IF (x < 0.0f, cond) - VECTOR_COND_MOVE (res, -res, cond); - VECTOR_ENDIF - } - else - { - v64sf b_i = VECTOR_MERGE (VECTOR_INIT(b[1]), VECTOR_INIT(b[0]), i != 0); - - VECTOR_IF (x < 0.0f, cond) - VECTOR_COND_MOVE (res, (b_i + res) + b_i, cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (res, (a_i - res) + a_i, cond); - VECTOR_ENDIF - } - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_asinh.c b/newlib/libm/machine/amdgcn/v64sf_asinh.c deleted file mode 100644 index 781d20638c..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_asinh.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/sf_asinh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_logf_aux (v64sf, v64si); -v64sf v64sf_log1pf_aux (v64sf, v64si); -v64sf v64sf_sqrtf_aux (v64sf, v64si); - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, asinhf, v64sf x) -{ - static const float one = 1.0000000000e+00; /* 0x3F800000 */ - static const float ln2 = 6.9314718246e-01; /* 0x3f317218 */ - static const float huge = 1.0000000000e+30; - - FUNCTION_INIT (v64sf); - - v64sf w; - v64si hx; - GET_FLOAT_WORD (hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; - - VECTOR_IF (ix >=0x7f800000, cond) /* x is inf or NaN */ - VECTOR_RETURN (x + x, cond); - VECTOR_ENDIF - VECTOR_IF (ix < 0x31800000, cond) /* |x|<2**-28 */ - VECTOR_IF2 (huge+x > one, cond2, cond) /* return x inexact except 0 */ - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (ix > 0x4d800000, cond) /* x > 2**28 */ - VECTOR_COND_MOVE (w, v64sf_logf_aux (__builtin_gcn_fabsvf (x), __mask) + - ln2, - cond); - VECTOR_ELSEIF (ix > 0x40000000, cond) /* 2**28 > |x| > 2.0 */ - v64sf t = __builtin_gcn_fabsvf (x); - VECTOR_COND_MOVE (w, v64sf_logf_aux (2.0f * t + 1.0f / (v64sf_sqrtf_aux (x*x + 1.0f, __mask) + t), __mask), - cond); - VECTOR_ELSE (cond) /* 2.0 > |x| > 2**-28 */ - v64sf t = x * x; - VECTOR_COND_MOVE (w, v64sf_log1pf_aux (__builtin_gcn_fabsvf (x) + t / (1.0f + v64sf_sqrtf_aux (1.0f + t, __mask)), __mask), - cond); - VECTOR_ENDIF - - VECTOR_IF (hx > 0, cond) - VECTOR_RETURN (w, cond); - VECTOR_ELSE (cond) - VECTOR_RETURN (-w, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS (asinhf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_atan.c b/newlib/libm/machine/amdgcn/v64sf_atan.c deleted file mode 100644 index e38d0c4f9b..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_atan.c +++ /dev/null @@ -1,13 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_atan.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_atangentf_aux (v64sf, v64sf, v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, atanf, v64sf x) -{ - return (v64sf_atangentf_aux (x, VECTOR_INIT (0.0f), VECTOR_INIT (0.0f), - 0, __mask)); -} - -DEF_VARIANTS (atanf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_atan2.c b/newlib/libm/machine/amdgcn/v64sf_atan2.c deleted file mode 100644 index 1718dfa96b..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_atan2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_atan2.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_atangentf_aux (v64sf, v64sf, v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, atan2f, v64sf v, v64sf u) -{ - return v64sf_atangentf_aux (VECTOR_INIT (0.0f), v, u, 1, __mask); -} - -DEF_VARIANTS2 (atan2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_atangent.c b/newlib/libm/machine/amdgcn/v64sf_atangent.c deleted file mode 100644 index f99e844f6d..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_atangent.c +++ /dev/null @@ -1,123 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/sf_atangent.c in Newlib. */ - -#include -#include "amdgcnmach.h" - -static const float ROOT3 = 1.732050807; -static const float a[] = { 0.0, 0.523598775, 1.570796326, - 1.047197551 }; -static const float q[] = { 0.1412500740e+1 }; -static const float p[] = { -0.4708325141, -0.5090958253e-1 }; - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_frexpvf_exp) \ - && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, atangentf, v64sf x, v64sf v, v64sf u, int arctan2) -{ - FUNCTION_INIT (v64sf); - - v64sf zero = VECTOR_INIT (0.0f); - v64sf res; - v64si branch = VECTOR_INIT (0); - - /* Preparation for calculating arctan2. */ - if (arctan2) - { - VECTOR_IF (u == 0.0f, cond) - VECTOR_IF2 (v == 0.0f, cond2, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); - VECTOR_COND_MOVE (res, VECTOR_INIT ((float) __PI_OVER_TWO), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF (~branch, cond) - /* Get the exponent values of the inputs. */ - v64si expv = __builtin_gcn_frexpvf_exp (v); - v64si expu = __builtin_gcn_frexpvf_exp (u); - - /* See if a divide will overflow. */ - v64si e = expv - expu; - - VECTOR_IF2 (e > FLT_MAX_EXP, cond2, cond) - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); - VECTOR_COND_MOVE (res, VECTOR_INIT ((float) __PI_OVER_TWO), cond2); - VECTOR_ENDIF - - /* Also check for underflow. */ - VECTOR_IF2 (e < FLT_MIN_EXP, cond2, cond) - VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); - VECTOR_COND_MOVE (res, zero, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - } - - VECTOR_IF (~branch, cond) - v64sf f; - v64si N = VECTOR_INIT (0); - - if (arctan2) - f = __builtin_gcn_fabsvf (v / u); - else - f = __builtin_gcn_fabsvf (x); - - VECTOR_IF2 (f > 1.0f, cond2, cond) - VECTOR_COND_MOVE (f, 1.0f / f, cond2); - VECTOR_COND_MOVE (N, VECTOR_INIT (2), cond2); - VECTOR_ENDIF - - VECTOR_IF2 (f > (2.0f - ROOT3), cond2, cond) - float A = ROOT3 - 1.0f; - VECTOR_COND_MOVE (f, (((A * f - 0.5f) - 0.5f) + f) / (ROOT3 + f), - cond2); - N += cond2 & 1; - VECTOR_ENDIF - - /* Check for values that are too small. */ - VECTOR_IF2 ((-z_rooteps_f < f) & (f < z_rooteps_f), cond2, cond) - VECTOR_COND_MOVE (res, f, cond2); - - /* Calculate the Taylor series. */ - VECTOR_ELSE2 (cond2, cond) - v64sf g = f * f; - v64sf P = (p[1] * g + p[0]) * g; - v64sf Q = g + q[0]; - v64sf R = P / Q; - - VECTOR_COND_MOVE (res, f + f * R, cond2); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, cond & (N > 1)); - - res += VECTOR_MERGE (VECTOR_INIT (a[1]), zero, cond & (N == 1)); - res += VECTOR_MERGE (VECTOR_INIT (a[2]), zero, cond & (N == 2)); - res += VECTOR_MERGE (VECTOR_INIT (a[3]), zero, cond & (N == 3)); - VECTOR_ENDIF - - if (arctan2) - { - /*if (u < 0.0)*/ - VECTOR_COND_MOVE (res, (float) __PI - res, u < 0.0f); - /*if (v < 0.0)*/ - VECTOR_COND_MOVE (res, -res, v < 0.0f); - } - /*else if (x < 0.0) */ - else - VECTOR_COND_MOVE (res, -res, x < 0.0f); - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_atanh.c b/newlib/libm/machine/amdgcn/v64sf_atanh.c deleted file mode 100644 index f728bb2171..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_atanh.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/mathfp/ef_atanh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_log1pf_aux (v64sf, v64si); - -DEF_VS_MATH_FUNC (v64sf, atanhf, v64sf x) -{ - static const float zero = 0.0; - static const float one = 1.0, huge = 1e30; - - FUNCTION_INIT (v64sf); - - v64sf t; - v64si hx; - GET_FLOAT_WORD (hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; - - VECTOR_IF (ix > 0x3f800000, cond) // |x|>1 - VECTOR_RETURN ((x - x)/(x - x), cond); - VECTOR_ENDIF - - VECTOR_IF (ix == 0x3f800000, cond) - VECTOR_RETURN (x / zero, cond); - VECTOR_ENDIF - - VECTOR_IF ((ix < 0x31800000) & ((huge + x) > zero), cond) // x<2**-28 - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - - SET_FLOAT_WORD (x, ix, NO_COND); - - VECTOR_IF (ix < 0x3f000000, cond) // x < 0.5 */ - v64sf t2 = x + x; - VECTOR_COND_MOVE (t, 0.5f * v64sf_log1pf_aux (t2 + t2 * x / (one - x), __mask), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (t, 0.5f * v64sf_log1pf_aux ((x + x) / (one - x), __mask), cond); - VECTOR_ENDIF - - VECTOR_IF (hx >= 0, cond) - VECTOR_RETURN (t, cond); - VECTOR_ELSE (cond) - VECTOR_RETURN (-t, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS (atanhf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_copysign.c b/newlib/libm/machine/amdgcn/v64sf_copysign.c deleted file mode 100644 index 83fca440d7..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_copysign.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/sf_copysign.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VS_MATH_FUNC (v64sf, copysignf, v64sf x, v64sf y) -{ - FUNCTION_INIT (v64sf); - - v64si ix, iy; - GET_FLOAT_WORD (ix, x, NO_COND); - GET_FLOAT_WORD (iy, y, NO_COND); - SET_FLOAT_WORD (x, (ix & 0x7fffffff) | (iy & 0x80000000), NO_COND); - VECTOR_RETURN (x, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (copysignf, sf, sf) \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64sf_cos.c b/newlib/libm/machine/amdgcn/v64sf_cos.c deleted file mode 100644 index d675a5c524..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_cos.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_cos.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_sinef_aux (v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, cosf, v64sf x) -{ - return v64sf_sinef_aux (x, 1, __mask); -} - -DEF_VARIANTS (cosf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_cosh.c b/newlib/libm/machine/amdgcn/v64sf_cosh.c deleted file mode 100644 index 9167d9e312..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_cosh.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_cosh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_sinehf_aux (v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, coshf, v64sf x) -{ - return v64sf_sinehf_aux (x, 1, __mask); -} - -DEF_VARIANTS (coshf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_erf.c b/newlib/libm/machine/amdgcn/v64sf_erf.c deleted file mode 100644 index d044f57f5d..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_erf.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/sf_erf.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_expf_aux (v64sf, v64si); - -static const float -tiny = 1e-30, -half= 5.0000000000e-01, /* 0x3F000000 */ -one = 1.0000000000e+00, /* 0x3F800000 */ -two = 2.0000000000e+00, /* 0x40000000 */ - /* c = (subfloat)0.84506291151 */ -erx = 8.4506291151e-01, /* 0x3f58560b */ -/* - * Coefficients for approximation to erf on [0,0.84375] - */ -efx = 1.2837916613e-01, /* 0x3e0375d4 */ -efx8= 1.0270333290e+00, /* 0x3f8375d4 */ -pp0 = 1.2837916613e-01, /* 0x3e0375d4 */ -pp1 = -3.2504209876e-01, /* 0xbea66beb */ -pp2 = -2.8481749818e-02, /* 0xbce9528f */ -pp3 = -5.7702702470e-03, /* 0xbbbd1489 */ -pp4 = -2.3763017452e-05, /* 0xb7c756b1 */ -qq1 = 3.9791721106e-01, /* 0x3ecbbbce */ -qq2 = 6.5022252500e-02, /* 0x3d852a63 */ -qq3 = 5.0813062117e-03, /* 0x3ba68116 */ -qq4 = 1.3249473704e-04, /* 0x390aee49 */ -qq5 = -3.9602282413e-06, /* 0xb684e21a */ -/* - * Coefficients for approximation to erf in [0.84375,1.25] - */ -pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */ -pa1 = 4.1485610604e-01, /* 0x3ed46805 */ -pa2 = -3.7220788002e-01, /* 0xbebe9208 */ -pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */ -pa4 = -1.1089469492e-01, /* 0xbde31cc2 */ -pa5 = 3.5478305072e-02, /* 0x3d1151b3 */ -pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */ -qa1 = 1.0642088205e-01, /* 0x3dd9f331 */ -qa2 = 5.4039794207e-01, /* 0x3f0a5785 */ -qa3 = 7.1828655899e-02, /* 0x3d931ae7 */ -qa4 = 1.2617121637e-01, /* 0x3e013307 */ -qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */ -qa6 = 1.1984500103e-02, /* 0x3c445aa3 */ -/* - * Coefficients for approximation to erfc in [1.25,1/0.35] - */ -ra0 = -9.8649440333e-03, /* 0xbc21a093 */ -ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */ -ra2 = -1.0558626175e+01, /* 0xc128f022 */ -ra3 = -6.2375331879e+01, /* 0xc2798057 */ -ra4 = -1.6239666748e+02, /* 0xc322658c */ -ra5 = -1.8460508728e+02, /* 0xc3389ae7 */ -ra6 = -8.1287437439e+01, /* 0xc2a2932b */ -ra7 = -9.8143291473e+00, /* 0xc11d077e */ -sa1 = 1.9651271820e+01, /* 0x419d35ce */ -sa2 = 1.3765776062e+02, /* 0x4309a863 */ -sa3 = 4.3456588745e+02, /* 0x43d9486f */ -sa4 = 6.4538726807e+02, /* 0x442158c9 */ -sa5 = 4.2900814819e+02, /* 0x43d6810b */ -sa6 = 1.0863500214e+02, /* 0x42d9451f */ -sa7 = 6.5702495575e+00, /* 0x40d23f7c */ -sa8 = -6.0424413532e-02, /* 0xbd777f97 */ -/* - * Coefficients for approximation to erfc in [1/.35,28] - */ -rb0 = -9.8649431020e-03, /* 0xbc21a092 */ -rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */ -rb2 = -1.7757955551e+01, /* 0xc18e104b */ -rb3 = -1.6063638306e+02, /* 0xc320a2ea */ -rb4 = -6.3756646729e+02, /* 0xc41f6441 */ -rb5 = -1.0250950928e+03, /* 0xc480230b */ -rb6 = -4.8351919556e+02, /* 0xc3f1c275 */ -sb1 = 3.0338060379e+01, /* 0x41f2b459 */ -sb2 = 3.2579251099e+02, /* 0x43a2e571 */ -sb3 = 1.5367296143e+03, /* 0x44c01759 */ -sb4 = 3.1998581543e+03, /* 0x4547fdbb */ -sb5 = 2.5530502930e+03, /* 0x451f90ce */ -sb6 = 4.7452853394e+02, /* 0x43ed43a7 */ -sb7 = -2.2440952301e+01; /* 0xc1b38712 */ - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, erff, v64sf x) -{ - FUNCTION_INIT (v64sf); - - v64si hx; - GET_FLOAT_WORD (hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; - - VECTOR_IF (ix >= 0x7f800000, cond) /* erf(nan)=nan */ - v64si i = (hx >> 31) << 1; - /* erf(+-inf)=+-1 */ - VECTOR_RETURN (__builtin_convertvector (1 - i, v64sf) + 1.0f / x, cond); - VECTOR_ENDIF - - VECTOR_IF (ix < 0x3f580000, cond) /* |x|<0.84375 */ - VECTOR_IF2 (ix < 0x31800000, cond2, cond) /* |x|<2**-28 */ - VECTOR_IF2 (ix < 0x04000000, cond3, cond2) /* avoid underflow */ - VECTOR_RETURN (0.125f*(8.0f*x + efx8*x), cond3); - VECTOR_ENDIF - VECTOR_RETURN (x + efx*x, cond2); - VECTOR_ENDIF - - v64sf z = x*x; - v64sf r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); - v64sf s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); - v64sf y = r/s; - - VECTOR_RETURN (x + x*y, cond); - VECTOR_ENDIF - - VECTOR_IF (ix < 0x3fa00000, cond) /* 0.84375 <= |x| < 1.25 */ - v64sf s = __builtin_gcn_fabsvf (x) - 1.0f; - v64sf P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); - v64sf Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); - VECTOR_IF2 (hx >= 0, cond2, cond) - VECTOR_RETURN (erx + P/Q, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (-erx - P/Q, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF (ix >= 0x40c00000, cond) /* inf>|x|>=6 */ - VECTOR_IF2 (hx >= 0, cond2, cond) - VECTOR_RETURN (VECTOR_INIT (1.0f - tiny), cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (VECTOR_INIT (tiny - 1.0f), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - x = __builtin_gcn_fabsvf(x); - v64sf s = 1.0f / (x*x); - v64sf R, S; - VECTOR_IF (ix < 0x4036DB6E, cond) /* |x| < 1/0.35 */ - VECTOR_COND_MOVE (R, ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( - ra5+s*(ra6+s*ra7)))))), cond); - VECTOR_COND_MOVE (S, one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( - sa5+s*(sa6+s*(sa7+s*sa8))))))), cond); - VECTOR_ELSE (cond) /* |x| >= 1/0.35 */ - VECTOR_COND_MOVE (R, rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( - rb5+s*rb6))))), cond); - VECTOR_COND_MOVE (S, one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( - sb5+s*(sb6+s*sb7)))))), cond); - VECTOR_ENDIF - - GET_FLOAT_WORD (ix, x, NO_COND); - v64sf z; - SET_FLOAT_WORD (z, ix & 0xfffff000, NO_COND); - v64sf r = v64sf_expf_aux (-z*z - 0.5625f, __mask) - * v64sf_expf_aux ((z-x)*(z+x) + R/S, __mask); - VECTOR_RETURN (one - r/x, hx >= 0); - VECTOR_RETURN (r/x - one, hx < 0); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (erff, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_exp.c b/newlib/libm/machine/amdgcn/v64sf_exp.c deleted file mode 100644 index 1bb16051e0..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_exp.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/math/ef_exp.c in Newlib. */ - -#include "amdgcnmach.h" - -static const float -huge = 1.0e+30, -twom100 = 7.8886090522e-31, /* 2**-100=0x0d800000 */ -ln2HI[2] ={ 6.9313812256e-01, /* 0x3f317180 */ - -6.9313812256e-01,}, /* 0xbf317180 */ -ln2LO[2] ={ 9.0580006145e-06, /* 0x3717f7d1 */ - -9.0580006145e-06,}, /* 0xb717f7d1 */ -invln2 = 1.4426950216e+00, /* 0x3fb8aa3b */ -P1 = 1.6666667163e-01, /* 0x3e2aaaab */ -P2 = -2.7777778450e-03, /* 0xbb360b61 */ -P3 = 6.6137559770e-05, /* 0x388ab355 */ -P4 = -1.6533901999e-06, /* 0xb5ddea0e */ -P5 = 4.1381369442e-08; /* 0x3331bb4c */ - -DEF_VS_MATH_FUNC (v64sf, expf, v64sf x) -{ - FUNCTION_INIT (v64sf); - - v64si k = VECTOR_INIT (0); - v64si sx; - GET_FLOAT_WORD(sx, x, NO_COND); - v64si xsb = (sx>>31)&1; /* sign bit of x */ - v64si hx = sx & 0x7fffffff; /* high word of |x| */ - - /* filter out non-finite argument */ - VECTOR_RETURN (x+x, FLT_UWORD_IS_NAN(hx)); /* NaN */ - VECTOR_RETURN (x, FLT_UWORD_IS_INFINITE(hx) & (xsb == 0)); - VECTOR_RETURN (VECTOR_INIT (0.0f), FLT_UWORD_IS_INFINITE (hx)); /* exp(+-inf)={inf,0} */ - VECTOR_RETURN (v64sf_math_oflowf (VECTOR_INIT (0)), sx > FLT_UWORD_LOG_MAX); /* overflow */ - VECTOR_RETURN (v64sf_math_uflowf (VECTOR_INIT (0)), (sx < 0) & (hx > FLT_UWORD_LOG_MIN)); /* underflow */ - - /* argument reduction */ - v64sf hi, lo; - VECTOR_IF (hx > 0x3eb17218, cond) /* if |x| > 0.5 ln2 */ - VECTOR_IF2 (hx < 0x3F851592, cond2, cond) /* and |x| < 1.5 ln2 */ - VECTOR_COND_MOVE (hi, x-ln2HI[0], cond2 & (xsb == 0)); - VECTOR_COND_MOVE (hi, x-ln2HI[1], cond2 & (xsb == 1)); - VECTOR_COND_MOVE (lo, VECTOR_INIT (ln2LO[0]), cond2 & (xsb == 0)); - VECTOR_COND_MOVE (lo, VECTOR_INIT (ln2LO[1]), cond2 & (xsb == 1)); - VECTOR_COND_MOVE (k, 1-xsb-xsb, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE (k, __builtin_convertvector (invln2*x + 0.5f, v64si), cond2 & (xsb == 0)); - VECTOR_COND_MOVE (k, __builtin_convertvector (invln2*x - 0.5f, v64si), cond2 & (xsb == 1)); - v64sf t = __builtin_convertvector (k, v64sf); - VECTOR_COND_MOVE (hi, x - t*ln2HI[0], cond2); /* t*ln2HI is exact here */ - VECTOR_COND_MOVE (lo, t*ln2LO[0], cond2); - VECTOR_ENDIF - VECTOR_COND_MOVE (x, hi - lo, cond); - VECTOR_ELSEIF (hx < 0x34000000, cond) /* when |x|<2**-23 */ - VECTOR_RETURN (1.0f+x, cond & (huge+x > 1.0f)); /* trigger inexact */ - VECTOR_ENDIF - - /* x is now in primary range */ - v64sf t = x*x; - v64sf c = x - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); - VECTOR_RETURN (1.0f - ((x*c)/(c-2.0f)-x), k==0); - v64sf y = 1.0f - ((lo-(x*c)/(2.0f-c))-hi); - VECTOR_IF (k >= -125, cond) - v64si hy; - GET_FLOAT_WORD(hy, y, cond); - SET_FLOAT_WORD(y,hy+(k<<23), cond); /* add k to y's exponent */ - VECTOR_RETURN (y, cond); - VECTOR_ELSE (cond) - v64si hy; - GET_FLOAT_WORD(hy, y, cond); - SET_FLOAT_WORD(y, hy+((k+100)<<23), cond); /* add k to y's exponent */ - VECTOR_RETURN (y*twom100, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS (expf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_exp2.c b/newlib/libm/machine/amdgcn/v64sf_exp2.c deleted file mode 100644 index aa5fefd79a..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_exp2.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. - * - * Permission to use, copy, modify, and distribute this software - * is freely granted, provided that this notice is preserved. - */ - -/* Based on newlib/libm/mathfp/sf_exp2.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_powf_aux (v64sf, v64sf, v64si); - -DEF_VS_MATH_FUNC (v64sf, exp2f, v64sf x) -{ - return v64sf_powf_aux (VECTOR_INIT (2.0f), x, __mask); -} - -DEF_VARIANTS (exp2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_finite.c b/newlib/libm/machine/amdgcn/v64sf_finite.c deleted file mode 100644 index b1efd5b6e0..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_finite.c +++ /dev/null @@ -1,23 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/v64sf_finite.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VS_MATH_FUNC (v64si, finitef, v64sf x) -{ - v64si ix = CAST_VECTOR (v64si, x); - ix &= 0x7fffffff; - return FLT_UWORD_IS_FINITE(ix); -} - -DEF_VARIANTS (finitef, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_fmod.c b/newlib/libm/machine/amdgcn/v64sf_fmod.c deleted file mode 100644 index ccbd0db764..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_fmod.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/sf_fmod.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VS_MATH_FUNC (v64sf, fmodf, v64sf x, v64sf y) -{ - FUNCTION_INIT(v64sf); - - v64si hx, hy, hz; - GET_FLOAT_WORD (hx, x, NO_COND); - GET_FLOAT_WORD (hy, y, NO_COND); - v64si sx = hx & 0x80000000; /* sign of x */ - hx ^=sx; /* |x| */ - hy &= 0x7fffffff; /* |y| */ - - v64sf zeroes = VECTOR_MERGE (VECTOR_INIT (-0.0f), - VECTOR_INIT (0.0f), - sx != 0); - - /* purge off exception values */ - VECTOR_IF ((hy == 0) | (hx >= 0x7f800000) - | (hy > 0x7f800000), cond) // y=0, or x not finite or y is NaN - VECTOR_RETURN ((x * y) / (x * y), cond); - VECTOR_ENDIF - VECTOR_IF (hx < hy, cond) // |x|<|y| return x - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_IF (hx == hy, cond) - VECTOR_RETURN (zeroes, hx == hy); // |x|=|y| return x*0 - VECTOR_ENDIF - - /* determine ix = ilogb(x) */ - v64si ix; - VECTOR_IF (hx < 0x00800000, cond) // subnormal x - ix = VECTOR_INIT (-126); - for (v64si i = (hx << 8); - !ALL_ZEROES_P (cond & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (ix, ix - 1, cond & (i > 0)); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (ix, (hx >> 23) - 127, cond); - VECTOR_ENDIF - - /* determine iy = ilogb(y) */ - v64si iy; - VECTOR_IF (hy < 0x00800000, cond) // subnormal y - iy = VECTOR_INIT (-126); - for (v64si i = (hy << 8); !ALL_ZEROES_P (cond & (i >= 0)); i <<= 1) - VECTOR_COND_MOVE (iy, iy - 1, cond & (i >= 0)); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (iy, (hy >> 23) - 127, cond); - VECTOR_ENDIF - -/* set up {hx,lx}, {hy,ly} and align y to x */ - VECTOR_IF (ix >= -126, cond) - VECTOR_COND_MOVE (hx, 0x00800000 | (0x007fffff & hx), cond); - VECTOR_ELSE (cond) // subnormal x, shift x to normal - { - v64si n = -126 - ix; - VECTOR_COND_MOVE (hx, hx << n, cond); - } - VECTOR_ENDIF - VECTOR_IF (iy >= -126, cond) - VECTOR_COND_MOVE (hy, 0x00800000 | (0x007fffff & hy), cond); - VECTOR_ELSE (cond) // subnormal y, shift y to normal - { - v64si n = -126 - iy; - VECTOR_COND_MOVE (hy, hy << n, cond); - } - VECTOR_ENDIF - -/* fix point fmod */ - v64si n = ix - iy; - v64si cond = n != 0; - - while (!ALL_ZEROES_P (cond)) - { - hz = hx - hy; - VECTOR_IF2 (hz < 0, cond2, cond) - VECTOR_COND_MOVE (hx, hx + hx, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_IF2 (hz == 0, cond3, cond2) // return sign(x)*0 - VECTOR_RETURN (zeroes, cond3); - VECTOR_ELSE2 (cond3, cond2) - VECTOR_COND_MOVE (hx, hz + hz, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - n += cond; // Active lanes should be -1 - cond &= (n != 0); - } - - hz = hx - hy; - VECTOR_COND_MOVE (hx, hz, hz >= 0); - - /* convert back to floating value and restore the sign */ - VECTOR_RETURN (zeroes, hx == 0); // return sign(x)*0 - - cond = hx < 0x00800000; - while (!ALL_ZEROES_P (cond)) // normalize x - { - VECTOR_COND_MOVE (hx, hx + hx, cond); - iy += cond; // Active lanes should be -1 - - cond &= (hx < 0x00800000); - } - VECTOR_IF (iy >= -126, cond) // normalize output - VECTOR_COND_MOVE (hx, (hx - 0x00800000) | ((iy + 127) << 23), cond); - SET_FLOAT_WORD (x, hx | sx, cond); - VECTOR_ELSE (cond) // subnormal output */ - n = -126 - iy; - hx >>= n; - SET_FLOAT_WORD (x, hx | sx, cond); - x *= VECTOR_INIT (1.0f); /* create necessary signal */ - VECTOR_ENDIF - - VECTOR_RETURN (x, NO_COND); /* exact output */ - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (fmodf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_gamma.c b/newlib/libm/machine/amdgcn/v64sf_gamma.c deleted file mode 100644 index 93f9172789..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_gamma.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "amdgcnmach.h" - -v64sf v64sf_lgammaf_aux (v64sf x, v64si __mask); - -DEF_VS_MATH_FUNC (v64sf, gammaf, v64sf x) -{ - return v64sf_lgammaf_aux(x, __mask); -} - -DEF_VARIANTS (gammaf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_hypot.c b/newlib/libm/machine/amdgcn/v64sf_hypot.c deleted file mode 100644 index 20062cdf51..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_hypot.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/ef_hypot.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_sqrtf_aux (v64sf, v64si); - -DEF_VS_MATH_FUNC (v64sf, hypotf, v64sf x, v64sf y) -{ - FUNCTION_INIT (v64sf); - - v64sf a = x; - v64sf b = y; - - v64si ha; - GET_FLOAT_WORD (ha, x, NO_COND); - ha &= 0x7fffffffL; - v64si hb; - GET_FLOAT_WORD (hb, y, NO_COND); - hb &= 0x7fffffffL; - - VECTOR_IF (hb > ha, cond) - v64si j = ha; - VECTOR_COND_MOVE (ha, hb, cond); - VECTOR_COND_MOVE (hb, j, cond); - VECTOR_ENDIF - SET_FLOAT_WORD (a, ha, NO_COND); /* a <- |a| */ - SET_FLOAT_WORD (b, hb, NO_COND); /* b <- |b| */ - VECTOR_IF((ha - hb) > 0xf000000L, cond) // x/y > 2**30 */ - VECTOR_RETURN (a + b, cond); - VECTOR_ENDIF - - v64si k = VECTOR_INIT (0); - - VECTOR_IF (ha > 0x58800000L, cond) /* a>2**50 */ - VECTOR_IF2 (ha >= 0x7f800000L, cond2, cond) /* Inf or NaN */ - v64sf w = a + b; // for sNaN */ - VECTOR_COND_MOVE (w, a, cond2 & (ha == 0x7f800000)); - VECTOR_COND_MOVE (w, b, cond2 & (hb == 0x7f800000)); - VECTOR_RETURN (w, cond); - VECTOR_ENDIF - /* scale a and b by 2**-60 */ - VECTOR_COND_MOVE (ha, ha - 0x5d800000, cond); - VECTOR_COND_MOVE (hb, hb - 0x5d800000, cond); - VECTOR_COND_MOVE (k, k + 60, cond); - SET_FLOAT_WORD (a, ha, cond); - SET_FLOAT_WORD (b, hb, cond); - VECTOR_ENDIF - VECTOR_IF (hb < 0x26800000, cond) /* b < 2**-50 */ - VECTOR_IF2 (hb <= 0x007fffff, cond2, cond) /* subnormal b or 0 */ - VECTOR_RETURN (a, cond2 & (hb == 0)); - /* t1=2^126 */ - v64sf t1; - SET_FLOAT_WORD (t1, VECTOR_INIT (0x3f000000), cond2); - VECTOR_COND_MOVE (b, b * t1, cond2); - VECTOR_COND_MOVE (a, a * t1, cond2); - VECTOR_COND_MOVE (k, k - 126, cond2); - VECTOR_ELSE2 (cond2, cond) /* scale a and b by 2^60 */ - VECTOR_COND_MOVE (ha, ha + 0x5d800000, cond2); /* a *= 2^60 */ - VECTOR_COND_MOVE (hb, hb + 0x5d800000, cond2); /* b *= 2^60 */ - VECTOR_COND_MOVE (k, k - 60, cond2); - SET_FLOAT_WORD (a, ha, cond2); - SET_FLOAT_WORD (b, hb, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - /* medium size a and b */ - v64sf w = a - b; - VECTOR_IF (w > b, cond) - v64sf t1; - SET_FLOAT_WORD (t1, ha & 0xfffff000, cond); - v64sf t2 = a - t1; - VECTOR_COND_MOVE (w, v64sf_sqrtf_aux (t1*t1 - (b*(-b) - t2 * (a + t1)), __mask), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (a, a+a, cond); - v64sf y1; - SET_FLOAT_WORD (y1, hb & 0xfffff000, cond); - v64sf y2 = b - y1; - v64sf t1; - SET_FLOAT_WORD (t1, ha + 0x00800000, cond); - v64sf t2 = a - t1; - VECTOR_COND_MOVE (w, v64sf_sqrtf_aux (t1*y1 - (w*(-w) - (t1*y2 + t2*b)), __mask), cond); - VECTOR_ENDIF - VECTOR_IF (k != 0, cond) - v64sf t1; - SET_FLOAT_WORD (t1, 0x3f800000 + (k << 23), cond); - VECTOR_RETURN (t1 * w, cond); - VECTOR_ELSE (cond) - VECTOR_RETURN (w, cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (hypotf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_ilogb.c b/newlib/libm/machine/amdgcn/v64sf_ilogb.c deleted file mode 100644 index fb5ef76e4e..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_ilogb.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/sf_ilogb.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VS_MATH_FUNC (v64si, ilogbf, v64sf x) -{ - FUNCTION_INIT(v64si); - - v64si hx, ix; - GET_FLOAT_WORD (hx, x, NO_COND); - hx &= 0x7fffffff; - VECTOR_IF (FLT_UWORD_IS_ZERO (hx), cond) - VECTOR_RETURN (VECTOR_INIT (-__INT_MAX__), cond); // FP_ILOGB0 - VECTOR_ENDIF - VECTOR_IF (FLT_UWORD_IS_SUBNORMAL (hx), cond) - ix = VECTOR_INIT (-126); - for (v64si i = (hx << 8); - !ALL_ZEROES_P (cond & (i > 0)); - i <<= 1) - VECTOR_COND_MOVE (ix, ix - 1, cond & (i > 0)); - VECTOR_RETURN (ix, cond); - VECTOR_ELSEIF (~FLT_UWORD_IS_FINITE (hx), cond) - VECTOR_RETURN (VECTOR_INIT (__INT_MAX__), cond); - VECTOR_ENDIF - - VECTOR_RETURN ((hx >> 23) - 127, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (ilogbf, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_isnan.c b/newlib/libm/machine/amdgcn/v64sf_isnan.c deleted file mode 100644 index d18d985a3f..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_isnan.c +++ /dev/null @@ -1,23 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/sf_isnan.c in Newlib. */ - -#include "amdgcnmach.h" - -DEF_VS_MATH_FUNC (v64si, isnanf, v64sf x) -{ - v64si ix = CAST_VECTOR (v64si, x); - ix &= 0x7fffffff; - return FLT_UWORD_IS_NAN (ix); -} - -DEF_VARIANTS (isnanf, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_ispos.c b/newlib/libm/machine/amdgcn/v64sf_ispos.c deleted file mode 100644 index d790a76a5b..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_ispos.c +++ /dev/null @@ -1,11 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_ispos.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si -v64sf_isposf (v64sf x) -{ - v64si wx = CAST_VECTOR (v64si, x); - - return (wx & 0x80000000) == 0; -} diff --git a/newlib/libm/machine/amdgcn/v64sf_lgamma.c b/newlib/libm/machine/amdgcn/v64sf_lgamma.c deleted file mode 100644 index 8028626c60..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_lgamma.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/math/wf_lgamma.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64sf_finitef_aux (v64sf x, v64si __mask); -v64sf v64sf_lgammaf_r_aux (v64sf x, v64si *signgamp, v64si __mask); - -DEF_VS_MATH_FUNC (v64sf, lgammaf, v64sf x) -{ - v64sf y = v64sf_lgammaf_r_aux(x, &(_REENT_V64SI_SIGNGAM(_V64_REENT)), __mask); - if (ALL_ZEROES_P(v64sf_finitef_aux(y, __mask)) & !ALL_ZEROES_P(v64sf_finitef_aux(x, __mask))) { - /* lgamma(finite) overflow */ - errno = ERANGE; - } - return y; -} - -DEF_VARIANTS (lgammaf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c b/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c deleted file mode 100644 index 9288235998..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/math/erf_lgamma.c in Newlib. */ - -#include "amdgcnmach.h" - -static const float two23= 8.3886080000e+06, /* 0x4b000000 */ -half= 5.0000000000e-01, /* 0x3f000000 */ -one = 1.0000000000e+00, /* 0x3f800000 */ -pi = 3.1415927410e+00, /* 0x40490fdb */ -a0 = 7.7215664089e-02, /* 0x3d9e233f */ -a1 = 3.2246702909e-01, /* 0x3ea51a66 */ -a2 = 6.7352302372e-02, /* 0x3d89f001 */ -a3 = 2.0580807701e-02, /* 0x3ca89915 */ -a4 = 7.3855509982e-03, /* 0x3bf2027e */ -a5 = 2.8905137442e-03, /* 0x3b3d6ec6 */ -a6 = 1.1927076848e-03, /* 0x3a9c54a1 */ -a7 = 5.1006977446e-04, /* 0x3a05b634 */ -a8 = 2.2086278477e-04, /* 0x39679767 */ -a9 = 1.0801156895e-04, /* 0x38e28445 */ -a10 = 2.5214456400e-05, /* 0x37d383a2 */ -a11 = 4.4864096708e-05, /* 0x383c2c75 */ -tc = 1.4616321325e+00, /* 0x3fbb16c3 */ -tf = -1.2148628384e-01, /* 0xbdf8cdcd */ -/* tt = -(tail of tf) */ -tt = 6.6971006518e-09, /* 0x31e61c52 */ -t0 = 4.8383611441e-01, /* 0x3ef7b95e */ -t1 = -1.4758771658e-01, /* 0xbe17213c */ -t2 = 6.4624942839e-02, /* 0x3d845a15 */ -t3 = -3.2788541168e-02, /* 0xbd064d47 */ -t4 = 1.7970675603e-02, /* 0x3c93373d */ -t5 = -1.0314224288e-02, /* 0xbc28fcfe */ -t6 = 6.1005386524e-03, /* 0x3bc7e707 */ -t7 = -3.6845202558e-03, /* 0xbb7177fe */ -t8 = 2.2596477065e-03, /* 0x3b141699 */ -t9 = -1.4034647029e-03, /* 0xbab7f476 */ -t10 = 8.8108185446e-04, /* 0x3a66f867 */ -t11 = -5.3859531181e-04, /* 0xba0d3085 */ -t12 = 3.1563205994e-04, /* 0x39a57b6b */ -t13 = -3.1275415677e-04, /* 0xb9a3f927 */ -t14 = 3.3552918467e-04, /* 0x39afe9f7 */ -u0 = -7.7215664089e-02, /* 0xbd9e233f */ -u1 = 6.3282704353e-01, /* 0x3f2200f4 */ -u2 = 1.4549225569e+00, /* 0x3fba3ae7 */ -u3 = 9.7771751881e-01, /* 0x3f7a4bb2 */ -u4 = 2.2896373272e-01, /* 0x3e6a7578 */ -u5 = 1.3381091878e-02, /* 0x3c5b3c5e */ -v1 = 2.4559779167e+00, /* 0x401d2ebe */ -v2 = 2.1284897327e+00, /* 0x4008392d */ -v3 = 7.6928514242e-01, /* 0x3f44efdf */ -v4 = 1.0422264785e-01, /* 0x3dd572af */ -v5 = 3.2170924824e-03, /* 0x3b52d5db */ -s0 = -7.7215664089e-02, /* 0xbd9e233f */ -s1 = 2.1498242021e-01, /* 0x3e5c245a */ -s2 = 3.2577878237e-01, /* 0x3ea6cc7a */ -s3 = 1.4635047317e-01, /* 0x3e15dce6 */ -s4 = 2.6642270386e-02, /* 0x3cda40e4 */ -s5 = 1.8402845599e-03, /* 0x3af135b4 */ -s6 = 3.1947532989e-05, /* 0x3805ff67 */ -r1 = 1.3920053244e+00, /* 0x3fb22d3b */ -r2 = 7.2193557024e-01, /* 0x3f38d0c5 */ -r3 = 1.7193385959e-01, /* 0x3e300f6e */ -r4 = 1.8645919859e-02, /* 0x3c98bf54 */ -r5 = 7.7794247773e-04, /* 0x3a4beed6 */ -r6 = 7.3266842264e-06, /* 0x36f5d7bd */ -w0 = 4.1893854737e-01, /* 0x3ed67f1d */ -w1 = 8.3333335817e-02, /* 0x3daaaaab */ -w2 = -2.7777778450e-03, /* 0xbb360b61 */ -w3 = 7.9365057172e-04, /* 0x3a500cfd */ -w4 = -5.9518753551e-04, /* 0xba1c065c */ -w5 = 8.3633989561e-04, /* 0x3a5b3dd2 */ -w6 = -1.6309292987e-03; /* 0xbad5c4e8 */ -static const float zero= 0.0000000000e+00; - -v64sf v64sf_cosf_aux (v64sf x, v64si __mask); -v64sf v64sf_logf_aux (v64sf x, v64si __mask); -v64sf v64sf_sinf_aux (v64sf x, v64si __mask); - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_floorvf) \ - && __has_builtin (__builtin_gcn_fabsvf) - -static v64sf -v64sf_sin_pif (v64sf x) -{ - // Explicitly create mask for internal function. - v64si __mask = VECTOR_INIT (-1); - FUNCTION_INIT (v64sf); - - v64sf y, z; - v64si n, ix; - - GET_FLOAT_WORD (ix, x, NO_COND); - ix &= 0x7fffffff; - - VECTOR_IF (ix < 0x3e800000, cond) - VECTOR_RETURN (v64sf_sinf_aux (pi * x, __mask), cond); - VECTOR_ENDIF - y = -x; /* x is assume negative */ - - /* - * argument reduction, make sure inexact flag not raised if input - * is an integer - */ - z = __builtin_gcn_floorvf (y); - VECTOR_IF (z != y, cond) - /* inexact anyway */ - VECTOR_COND_MOVE(y, y * 0.5F, cond); - VECTOR_COND_MOVE(y, 2.0F * (y - __builtin_gcn_floorvf (y)), cond); /* y = |x| mod 2.0 */ - VECTOR_COND_MOVE(n, __builtin_convertvector(y * 4.0F, v64si), cond); - VECTOR_ELSE (cond) - VECTOR_IF2 (ix >= 0x4b800000, cond2, cond) - VECTOR_COND_MOVE(y, VECTOR_INIT(zero), cond2); - VECTOR_COND_MOVE(n, VECTOR_INIT(0), cond2); /* y must be even */ - VECTOR_ELSE2 (cond2, cond) - VECTOR_COND_MOVE(z, y + two23 /* exact */, cond2 & (ix < 0x4b000000)); - GET_FLOAT_WORD (n, z, cond2); - VECTOR_COND_MOVE(n, n & 1, cond2); - VECTOR_COND_MOVE(y, __builtin_convertvector(n, v64sf), cond2); - VECTOR_COND_MOVE(n, n << 2, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF (n == 0, cond) - VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * y, __mask), cond); - VECTOR_ELSEIF (n == 1 | n == 2, cond) - VECTOR_COND_MOVE(y, v64sf_cosf_aux (pi * (0.5F - y), __mask), cond); - VECTOR_ELSEIF (n == 3 | n == 4, cond) - VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * (VECTOR_INIT(one) - y), __mask), cond); - VECTOR_ELSEIF (n == 5 | n == 6, cond) - VECTOR_COND_MOVE(y, -v64sf_cosf_aux (pi * (y - 1.5F), __mask), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * (y - 2.0F), __mask), cond); - VECTOR_ENDIF - - VECTOR_RETURN(-y, NO_COND); - FUNCTION_RETURN; -} - -DEF_VS_MATH_FUNC (v64sf, lgammaf_r, v64sf x, v64si *signgamp) -{ - FUNCTION_INIT (v64sf); - - v64sf t,y,z,nadj = VECTOR_INIT(0.0F),p,p1,p2,p3,q,r,w; - v64si i,hx,ix; - - GET_FLOAT_WORD(hx,x,NO_COND); - - /* purge off +-inf, NaN, +-0, and negative arguments */ - *signgamp = VECTOR_INIT(1); - ix = hx&0x7fffffff; - VECTOR_IF(ix>=0x7f800000, cond) - VECTOR_RETURN (x*x, cond); - VECTOR_ENDIF - VECTOR_IF(ix==0, cond) - VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (hx<0)); - VECTOR_RETURN(one/(x-x), cond); - VECTOR_ENDIF - VECTOR_IF (ix < 0x30800000, cond) /* |x|<2**-30, return -log(|x|) */ - VECTOR_IF2(hx<0, cond2, cond) - VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond); - VECTOR_RETURN (-v64sf_logf_aux(-x, __mask), cond2); - VECTOR_ELSE2(cond2, cond) - VECTOR_RETURN (-v64sf_logf_aux(x, __mask), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (hx < 0, cond) - VECTOR_IF2(ix>=0x4b000000, cond2, cond) /* |x|>=2**23, must be -integer */ - VECTOR_RETURN(one/(x-x), cond2); - VECTOR_ENDIF - VECTOR_COND_MOVE (t, v64sf_sin_pif (x), cond); - VECTOR_IF2(t==zero, cond2, cond) - /* tgamma wants NaN instead of INFINITY */ - VECTOR_RETURN(one/(x-x), cond2); /* -integer */ - VECTOR_ENDIF - VECTOR_COND_MOVE(nadj, v64sf_logf_aux(VECTOR_INIT(pi)/__builtin_gcn_fabsvf(t*x), __mask), cond); - VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (t < zero)); - VECTOR_COND_MOVE(x, -x, cond); - VECTOR_ENDIF - - /* purge off 1 and 2 */ - VECTOR_IF(ix==0x3f800000|ix==0x40000000, cond) - VECTOR_COND_MOVE(r, VECTOR_INIT(0.0F), cond); - /* for x < 2.0 */ - VECTOR_ELSEIF(ix<0x40000000, cond) - VECTOR_IF2(ix<=0x3f666666, cond2, cond) - /* lgamma(x) = lgamma(x+1)-log(x) */ - r = -v64sf_logf_aux(x, __mask); - VECTOR_IF2(ix>=0x3f3b4a20, cond3, cond2) - VECTOR_COND_MOVE(y, one-x, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); - VECTOR_ELSEIF2(ix>=0x3e6d3308, cond3, cond2) - VECTOR_COND_MOVE(y, x-(tc-one), cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); - VECTOR_ELSE2(cond3, cond2) - VECTOR_COND_MOVE(y, x, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); - VECTOR_ENDIF - VECTOR_ELSE2(cond2, cond) - VECTOR_COND_MOVE(r, VECTOR_INIT(zero), cond2); - VECTOR_IF2(ix>=0x3fdda618, cond3, cond2) /* [1.7316,2] */ - VECTOR_COND_MOVE(y, VECTOR_INIT(2.0F)-x, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); - VECTOR_ELSEIF2(ix>=0x3F9da620, cond3, cond2) /* [1.23,1.73] */ - VECTOR_COND_MOVE(y, x-tc, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); - VECTOR_ELSE2(cond3, cond2) - VECTOR_COND_MOVE(y, x-one, cond3); - VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_IF2(i==0, cond2, cond) - VECTOR_COND_MOVE(z, y*y, cond2); - VECTOR_COND_MOVE(p1, a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))), cond2); - VECTOR_COND_MOVE(p2, z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))), cond2); - VECTOR_COND_MOVE(p, y*p1+p2, cond2); - VECTOR_COND_MOVE(r, r + (p-(float)0.5*y), cond2); - VECTOR_ELSEIF2(i==1, cond2, cond) - VECTOR_COND_MOVE(z, y*y, cond2); - VECTOR_COND_MOVE(w, z*y, cond2); - VECTOR_COND_MOVE(p1, t0+w*(t3+w*(t6+w*(t9 +w*t12))), cond2); /* parallel comp */ - VECTOR_COND_MOVE(p2, t1+w*(t4+w*(t7+w*(t10+w*t13))), cond2); - VECTOR_COND_MOVE(p3, t2+w*(t5+w*(t8+w*(t11+w*t14))), cond2); - VECTOR_COND_MOVE(p, z*p1-(tt-w*(p2+y*p3)), cond2); - VECTOR_COND_MOVE(r, r + (tf + p), cond2); - VECTOR_ELSEIF2(i==2, cond2, cond) - VECTOR_COND_MOVE(p1, y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))), cond2); - VECTOR_COND_MOVE(p2, one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))), cond2); - VECTOR_COND_MOVE(r, r + (-(float)0.5*y + p1/p2), cond2); - VECTOR_ENDIF - VECTOR_ELSEIF(ix<0x41000000, cond) - /* x < 8.0 */ - VECTOR_COND_MOVE(i, __builtin_convertvector(x, v64si), cond); - VECTOR_COND_MOVE(t, VECTOR_INIT(zero), cond); - VECTOR_COND_MOVE(y, x-__builtin_convertvector(i, v64sf), cond); - VECTOR_COND_MOVE(p, y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))), cond); - VECTOR_COND_MOVE(q, one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))), cond); - VECTOR_COND_MOVE(r, half*y+p/q, cond); - VECTOR_COND_MOVE(z, VECTOR_INIT(one), cond); /* lgamma(1+s) = log(s) + lgamma(s) */ - VECTOR_IF2(i==7, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+(float)6.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i==7 | i==6, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+(float)5.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i<=7 & i>=5, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+(float)4.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i<=7 & i>=4, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+(float)3.0), cond2); - VECTOR_ENDIF - VECTOR_IF2(i<=7 & i>=3, cond2, cond) - VECTOR_COND_MOVE(z, z * (y+(float)2.0), cond2); - VECTOR_COND_MOVE(r, r + v64sf_logf_aux(z, __mask), cond2); - VECTOR_ENDIF - /* 8.0 <= x < 2**58 */ - VECTOR_ELSEIF(ix < 0x5c800000, cond) - VECTOR_COND_MOVE(t, v64sf_logf_aux(x, __mask), cond); - VECTOR_COND_MOVE(z, one/x, cond); - VECTOR_COND_MOVE(y, z*z, cond); - VECTOR_COND_MOVE(w, w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))), cond); - VECTOR_COND_MOVE(r, (x-half)*(t-one)+w, cond); - VECTOR_ELSE(cond) - /* 2**58 <= x <= inf */ - VECTOR_COND_MOVE(r, x*(v64sf_logf_aux(x, __mask)-one), cond); - VECTOR_ENDIF - VECTOR_IF(hx<0, cond) - VECTOR_COND_MOVE(r, nadj - r, cond); - VECTOR_ENDIF - - VECTOR_RETURN(r, NO_COND); - FUNCTION_RETURN; -} - -#endif \ No newline at end of file diff --git a/newlib/libm/machine/amdgcn/v64sf_log.c b/newlib/libm/machine/amdgcn/v64sf_log.c deleted file mode 100644 index 1414913189..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_log.c +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/sf_logarithm.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64sf_finitef_aux (v64sf, v64si); -v64si v64sf_isnanf_aux (v64sf, v64si); - -static const float a[] = { -0.64124943423745581147e+02, - 0.16383943563021534222e+02, - -0.78956112887481257267 }; -static const float b[] = { -0.76949932108494879777e+03, - 0.31203222091924532844e+03, - -0.35667977739034646171e+02 }; -static const float C1 = 0.693145752; -static const float C2 = 1.428606820e-06; - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_frexpvf_mant) \ - && __has_builtin (__builtin_gcn_frexpvf_exp) - -DEF_VS_MATH_FUNC (v64sf, logf, v64sf x) -{ - FUNCTION_INIT (v64sf); - - /* Check for domain/range errors here. */ - VECTOR_IF (x == 0.0f, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (-z_infinity_f.f), cond); - VECTOR_ELSEIF (x < 0.0f, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); - VECTOR_ELSEIF (~v64sf_finitef_aux (x, __mask), cond) - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_notanum_f.f), - VECTOR_INIT (z_infinity_f.f), - v64sf_isnanf_aux (x, __mask)), - cond); - VECTOR_ENDIF - - /* Get the exponent and mantissa where x = f * 2^N. */ - v64sf f = __builtin_gcn_frexpvf_mant (x); - v64si N = __builtin_gcn_frexpvf_exp (x); - - v64sf z = f - 0.5f; - - VECTOR_IF (f > (float) __SQRT_HALF, cond) - VECTOR_COND_MOVE (z, (z - 0.5f) / (f * 0.5f + 0.5f), cond); - VECTOR_ELSE (cond) - VECTOR_COND_MOVE (N, N - 1, cond); - VECTOR_COND_MOVE (z, z / (z * 0.5f + 0.5f), cond); - VECTOR_ENDIF - - v64sf w = z * z; - - /* Use Newton's method with 4 terms. */ - z += z * w * ((a[2] * w + a[1]) * w + a[0]) / (((w + b[2]) * w + b[1]) * w + b[0]); - - v64sf Nf = __builtin_convertvector(N, v64sf); - VECTOR_COND_MOVE (z, (Nf * C2 + z) + Nf * C1, N != 0); - - VECTOR_RETURN (z, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (logf, sf, sf) - -DEF_VS_MATH_FUNC (v64sf, log1pf, v64sf x) -{ - /* TODO: Implement algorithm with better precision. */ - return v64sf_logf_aux (1 + x, __mask); -} - -DEF_VARIANTS (log1pf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_log10.c b/newlib/libm/machine/amdgcn/v64sf_log10.c deleted file mode 100644 index 12571b1c61..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_log10.c +++ /dev/null @@ -1,14 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_log10.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_logf_aux (v64sf, v64si); - -static const float C3 = 0.4342944819; - -DEF_VS_MATH_FUNC (v64sf, log10f, v64sf x) -{ - return v64sf_logf_aux (x, __mask) * C3; -} - -DEF_VARIANTS (log10f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_log2.c b/newlib/libm/machine/amdgcn/v64sf_log2.c deleted file mode 100644 index 74c9c4eb8c..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_log2.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "amdgcnmach.h" - -v64sf v64sf_logf_aux (v64sf, v64si); - -static const float C3 = 1.4426950408889634073599246810019; - -DEF_VS_MATH_FUNC (v64sf, log2f, v64sf x) -{ - return v64sf_logf_aux (x, __mask) * C3; -} - -DEF_VARIANTS (log2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_modf.c b/newlib/libm/machine/amdgcn/v64sf_modf.c deleted file mode 100644 index ed56ef3be6..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_modf.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/sf_modf.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64sf_numtestf (v64sf); - -DEF_VS_MATH_FUNC (v64sf, modff, v64sf x, v64sf *iptr) -{ - FUNCTION_INIT (v64sf); - v64sf ret_i; - - v64si i0; - GET_FLOAT_WORD (i0, x, NO_COND); - v64si j0 = ((i0 >> 23) & 0xff) - 0x7f; /* exponent of x */ - v64sf zero; - SET_FLOAT_WORD (zero, i0 & 0x80000000,NO_COND); - - VECTOR_IF (j0 < 23, cond) /* integer part in x*/ - VECTOR_IF2 (j0 < 0, cond2, cond) /* |x|<1 */ - VECTOR_COND_MOVE (ret_i, zero, cond2); - VECTOR_RETURN (x, cond2); - VECTOR_ELSE2 (cond2, cond) - v64si i = (0x007fffff) >> j0; - - VECTOR_IF2 ((i0 & i) == 0, cond3, cond2) /* x is integral */ - VECTOR_COND_MOVE (ret_i, x, cond3); - VECTOR_RETURN (zero, cond3); - VECTOR_ELSE2 (cond3, cond2) - SET_FLOAT_WORD (ret_i, i0 & ~i, cond3); - VECTOR_RETURN (x - ret_i, cond3); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_ELSE (cond) /* no fraction part */ - VECTOR_COND_MOVE (ret_i, x, cond); - VECTOR_IF2 (v64sf_numtestf (x) == NAN, cond2, cond) - VECTOR_COND_MOVE (ret_i, x + x, cond2); - VECTOR_RETURN (ret_i, cond2); /* x is NaN, return NaN */ - VECTOR_ENDIF - VECTOR_RETURN (zero, cond); /* return +- 0 */ - VECTOR_ENDIF - - *iptr = ret_i; - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64sf_numtest.c b/newlib/libm/machine/amdgcn/v64sf_numtest.c deleted file mode 100644 index 2dc670d7ba..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_numtest.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_numtest.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si -v64sf_numtestf (v64sf x) -{ - // Explicitly create mask for internal function. - v64si __mask = VECTOR_INIT (-1); - FUNCTION_INIT (v64si); - - v64si wx; - GET_FLOAT_WORD (wx, x, NO_COND); - v64si exp = (wx & 0x7f800000) >> 23; - - /* Check for a zero input. */ - VECTOR_RETURN (VECTOR_INIT (0), x == 0.0); - - /* Check for not a number or infinity. */ - VECTOR_IF (exp == 0xff, cond) - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (NAN), VECTOR_INIT (INF), - wx & 0x7fffff), - cond); - /* Otherwise it's a finite value. */ - VECTOR_ELSE (cond) - VECTOR_RETURN (VECTOR_INIT (NUM), cond); - VECTOR_ENDIF - - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64sf_pow.c b/newlib/libm/machine/amdgcn/v64sf_pow.c deleted file mode 100644 index 2a404a9e5a..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_pow.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/math/ef_pow.c in Newlib. */ - -#include "amdgcnmach.h" - -static const float -bp[] = {1.0, 1.5,}, -dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */ -dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */ -zero = 0.0, -one = 1.0, -two = 2.0, -two24 = 16777216.0, /* 0x4b800000 */ - /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ -L1 = 6.0000002384e-01, /* 0x3f19999a */ -L2 = 4.2857143283e-01, /* 0x3edb6db7 */ -L3 = 3.3333334327e-01, /* 0x3eaaaaab */ -L4 = 2.7272811532e-01, /* 0x3e8ba305 */ -L5 = 2.3066075146e-01, /* 0x3e6c3255 */ -L6 = 2.0697501302e-01, /* 0x3e53f142 */ -P1 = 1.6666667163e-01, /* 0x3e2aaaab */ -P2 = -2.7777778450e-03, /* 0xbb360b61 */ -P3 = 6.6137559770e-05, /* 0x388ab355 */ -P4 = -1.6533901999e-06, /* 0xb5ddea0e */ -P5 = 4.1381369442e-08, /* 0x3331bb4c */ -lg2 = 6.9314718246e-01, /* 0x3f317218 */ -lg2_h = 6.93145752e-01, /* 0x3f317200 */ -lg2_l = 1.42860654e-06, /* 0x35bfbe8c */ -ovt = 4.2995665694e-08, /* -(128-log2(ovfl+.5ulp)) */ -cp = 9.6179670095e-01, /* 0x3f76384f =2/(3ln2) */ -cp_h = 9.6179199219e-01, /* 0x3f763800 =head of cp */ -cp_l = 4.7017383622e-06, /* 0x369dc3a0 =tail of cp_h */ -ivln2 = 1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */ -ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/ -ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/ - -v64sf v64sf_sqrtf_aux (v64sf, v64si); -v64sf v64sf_scalbnf_aux (v64sf, v64si, v64si); - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, powf, v64sf x, v64sf y) -{ - FUNCTION_INIT (v64sf); - - v64si hx, hy; - GET_FLOAT_WORD (hx,x, NO_COND); - GET_FLOAT_WORD (hy,y, NO_COND); - v64si ix = hx&0x7fffffff; - v64si iy = hy&0x7fffffff; - - /* y==zero: x**0 = 1 */ - VECTOR_IF (FLT_UWORD_IS_ZERO(iy), cond) - VECTOR_RETURN (x + y, cond & v64sf_issignalingf_inline(x)); - VECTOR_RETURN (VECTOR_INIT (1.0f), cond); - VECTOR_ENDIF - - /* x|y==NaN return NaN unless x==1 then return 1 */ - VECTOR_IF (FLT_UWORD_IS_NAN(ix) | FLT_UWORD_IS_NAN(iy), cond) - VECTOR_IF2 (hx==0x3f800000 & ~v64sf_issignalingf_inline(y), cond2, cond) - VECTOR_RETURN (VECTOR_INIT (1.0f), cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (x + y, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - /* determine if y is an odd int when x < 0 - * yisint = 0 ... y is not an integer - * yisint = 1 ... y is an odd int - * yisint = 2 ... y is an even int - */ - v64si yisint = VECTOR_INIT (0); - - VECTOR_IF (hx < 0, cond) - VECTOR_IF2 (iy >= 0x4b800000, cond2, cond) - VECTOR_COND_MOVE (yisint, VECTOR_INIT (2), cond2); /* even integer y */ - VECTOR_ELSEIF2 (iy >= 0x3f800000, cond2, cond) - v64si k = (iy>>23)-0x7f; /* exponent */ - v64si j = iy>>(23-k); - VECTOR_COND_MOVE (yisint, 2-(j&1), cond2 & (j<<(23-k))==iy); - VECTOR_ENDIF - VECTOR_ENDIF - - /* special value of y */ - VECTOR_IF (FLT_UWORD_IS_INFINITE(iy), cond) /* y is +-inf */ - VECTOR_IF2 (ix==0x3f800000, cond2, cond) - VECTOR_RETURN (VECTOR_INIT (1.0f), cond2); /* +-1**+-inf = 1 */ - VECTOR_ELSEIF2 (ix > 0x3f800000, cond2, cond) /* (|x|>1)**+-inf = inf,0 */ - VECTOR_RETURN (y, cond2 & (hy >= 0)); - VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); - VECTOR_ELSE2 (cond2, cond) /* (|x|<1)**-,+inf = inf,0 */ - VECTOR_RETURN (-y, cond2 & (hy<0)); - VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (iy==0x3f800000, cond) /* y is +-1 */ - VECTOR_RETURN (VECTOR_INIT (1.0f) / x, cond & (hy<0)); - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - - VECTOR_RETURN (x*x, hy==0x40000000); /* y is 2 */ - /* y is 0.5 */ - /* x >= +0 */ - VECTOR_RETURN (v64sf_sqrtf_aux (x, __mask), (hy==0x3f000000) & (hx >= 0)); - - v64sf ax = __builtin_gcn_fabsvf(x); - /* special value of x */ - VECTOR_IF (FLT_UWORD_IS_INFINITE(ix)|FLT_UWORD_IS_ZERO(ix)|ix==0x3f800000, cond) - v64sf z = ax; /*x is +-0,+-inf,+-1*/ - VECTOR_COND_MOVE (z, VECTOR_INIT (1.0f) / z, cond & (hy < 0)); /* z = (1/|x|) */ - VECTOR_IF2 (hx<0, cond2, cond) - VECTOR_IF2 (((ix-0x3f800000)|yisint)==0, cond3, cond2) - /* (-1)**non-int is NaN */ - VECTOR_COND_MOVE (z, (z-z)/(z-z), cond3); - VECTOR_ELSEIF2 (yisint==1, cond3, cond2) - /* (x<0)**odd = -(|x|**odd) */ - VECTOR_COND_MOVE (z, -z, cond3); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_RETURN (z, cond); - VECTOR_ENDIF - - /* (x<0)**(non-int) is NaN */ - VECTOR_RETURN ((x-x)/(x-x), ((((hx >> 31) & 1) - 1)|yisint)==0); - - v64sf t1, t2; - - /* |y| is huge */ - VECTOR_IF (iy>0x4d000000, cond) /* if |y| > 2**27 */ - /* over/underflow if x is not close to one */ - VECTOR_IF2(ix<0x3f7ffff4, cond2, cond) - VECTOR_RETURN (v64sf_math_oflowf(VECTOR_INIT (0)), cond2 & (hy < 0)); - VECTOR_RETURN (v64sf_math_uflowf(VECTOR_INIT (0)), cond2); - VECTOR_ENDIF - VECTOR_IF2(ix>0x3f800007, cond2, cond) - VECTOR_RETURN (v64sf_math_oflowf(VECTOR_INIT (0)), cond2 & (hy > 0)); - VECTOR_RETURN (v64sf_math_uflowf(VECTOR_INIT (0)), cond2); - VECTOR_ENDIF - /* now |1-x| is tiny <= 2**-20, suffice to compute - log(x) by x-x^2/2+x^3/3-x^4/4 */ - v64sf t = ax-1; /* t has 20 trailing zeros */ - v64sf w = (t*t)*(0.5f-t*(0.333333333333f-t*0.25f)); - v64sf u = ivln2_h*t; /* ivln2_h has 16 sig. bits */ - v64sf v = t*ivln2_l-w*ivln2; - VECTOR_COND_MOVE (t1, u+v, cond); - v64si is; - GET_FLOAT_WORD(is,t1, cond); - SET_FLOAT_WORD(t1,is&0xfffff000, cond); - VECTOR_COND_MOVE (t2, v-(t1-u), cond); - VECTOR_RETURN (VECTOR_INIT (0.123456f), cond); - VECTOR_ELSE (cond) - v64si n = VECTOR_INIT (0); - /* take care subnormal number */ - VECTOR_IF2 (FLT_UWORD_IS_SUBNORMAL(ix), cond2, cond) - VECTOR_COND_MOVE (ax, ax * two24, cond); - VECTOR_COND_MOVE (n, n - 24, cond2); - GET_FLOAT_WORD(ix,ax, cond2); - VECTOR_ENDIF - n += (ix>>23)-0x7f; - v64si j = ix&0x007fffff; - /* determine interval */ - v64si ix = j|0x3f800000; /* normalize ix */ - v64si k; - VECTOR_IF2 (j<=0x1cc471, cond2, cond) - VECTOR_COND_MOVE (k, VECTOR_INIT (0), cond2); /* |x|>1)|0x20000000)+0x0040000+(k<<21), cond); - v64sf t_l = ax - (t_h-bp_k); - v64sf s_l = v*((u-s_h*t_h)-s_h*t_l); - /* compute log(ax) */ - v64sf s2 = s*s; - v64sf r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); - r += s_l*(s_h+s); - s2 = s_h*s_h; - t_h = __builtin_convertvector(3.0f+s2+r, v64sf); - GET_FLOAT_WORD(is,t_h, cond); - SET_FLOAT_WORD(t_h,is&0xfffff000, cond); - t_l = r-((t_h-3.0f)-s2); - /* u+v = s*(1+...) */ - u = s_h*t_h; - v = s_l*t_h+t_l*s; - /* 2/(3log2)*(s+...) */ - v64sf p_h = u+v; - GET_FLOAT_WORD(is,p_h, cond); - SET_FLOAT_WORD(p_h,is&0xfffff000, cond); - v64sf p_l = v-(p_h-u); - v64sf z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ - v64sf dp_l_k = VECTOR_MERGE (VECTOR_INIT (dp_l[1]), VECTOR_INIT (dp_l[0]), k == 1); - v64sf z_l = cp_l*p_h+p_l*cp+dp_l_k; - /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ - v64sf t = __builtin_convertvector (n, v64sf); - v64sf dp_h_k = VECTOR_MERGE (VECTOR_INIT (dp_h[1]), VECTOR_INIT (dp_h[0]), k == 1); - VECTOR_COND_MOVE (t1, (((z_h+z_l)+dp_h_k)+t), cond); - GET_FLOAT_WORD(is,t1, cond); - SET_FLOAT_WORD(t1,is&0xfffff000, cond); - VECTOR_COND_MOVE (t2, z_l-(((t1-t)-dp_h_k)-z_h), cond); - VECTOR_ENDIF - - v64sf s = VECTOR_INIT (1.0f); /* s (sign of result -ve**odd) = -1 else = 1 */ - VECTOR_COND_MOVE (s, VECTOR_INIT (-1.0f), /* (-ve)**(odd int) */ - ((hx>>31) != 0)&(yisint == 1)); - - /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ - v64si is; - GET_FLOAT_WORD(is,y, NO_COND); - v64sf y1; - SET_FLOAT_WORD(y1,is&0xfffff000, NO_COND); - v64sf p_l = (y-y1)*t1+y*t2; - v64sf p_h = y1*t1; - v64sf z = p_l+p_h; - v64si j; - GET_FLOAT_WORD(j,z, NO_COND); - v64si i = j&0x7fffffff; - VECTOR_IF (j>0, cond) - VECTOR_RETURN (v64sf_math_oflowf(s<0), cond & i>FLT_UWORD_EXP_MAX); /* overflow */ - VECTOR_RETURN (v64sf_math_oflowf(s<0), cond & (i==FLT_UWORD_EXP_MAX) - & (p_l+ovt>z-p_h)); /* overflow */ - VECTOR_ELSE (cond) - VECTOR_RETURN (v64sf_math_uflowf(s<0), cond & (i>FLT_UWORD_EXP_MIN)); /* underflow */ - VECTOR_RETURN (v64sf_math_uflowf(s<0), cond & (i==FLT_UWORD_EXP_MIN) - & (p_l<=z-p_h)); /* underflow */ - VECTOR_ENDIF - /* - * compute 2**(p_h+p_l) - */ - v64si k = (i>>23)-0x7f; - v64si n = VECTOR_INIT (0); - VECTOR_IF (i>0x3f000000, cond) /* if |z| > 0.5, set n = [z+0.5] */ - VECTOR_COND_MOVE (n, j+(0x00800000>>(k+1)), cond); - k = ((n&0x7fffffff)>>23)-0x7f; /* new k for n */ - v64sf t; - SET_FLOAT_WORD(t,n&~(0x007fffff>>k), cond); - VECTOR_COND_MOVE (n, ((n&0x007fffff)|0x00800000)>>(23-k), cond); - VECTOR_COND_MOVE (n, -n, cond & (j<0)); - VECTOR_COND_MOVE (p_h, p_h - t, cond); - VECTOR_ENDIF - v64sf t = p_l+p_h; - GET_FLOAT_WORD(is,t, NO_COND); - SET_FLOAT_WORD(t,is&0xfffff000, NO_COND); - v64sf u = t*lg2_h; - v64sf v = (p_l-(t-p_h))*lg2+t*lg2_l; - z = u+v; - v64sf w = v-(z-u); - t = z*z; - t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); - v64sf r = (z*t1)/(t1-2.0f)-(w+z*w); - z = VECTOR_INIT (1.0f)-(r-z); - GET_FLOAT_WORD(j,z, NO_COND); - j += (n<<23); - VECTOR_IF ((j>>23)<=0, cond) - VECTOR_COND_MOVE (z, v64sf_scalbnf_aux(z, n, __mask), cond); /* subnormal output */ - VECTOR_ELSE (cond) - SET_FLOAT_WORD(z, j, cond); - VECTOR_ENDIF - VECTOR_RETURN (s*z, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (powf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_remainder.c b/newlib/libm/machine/amdgcn/v64sf_remainder.c deleted file mode 100644 index bed40e5273..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_remainder.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/ef_remainder.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_fmodf_aux (v64sf, v64sf, v64si); - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, remainderf, v64sf x, v64sf p) -{ - FUNCTION_INIT (v64sf); - - v64si hx; - GET_FLOAT_WORD (hx, x, NO_COND); - v64si hp; - GET_FLOAT_WORD (hp, p, NO_COND); - v64si sx = hx & 0x80000000; - hp &= 0x7fffffff; - hx &= 0x7fffffff; - - /* purge off exception values */ - /*if(hp==0) // p = 0 */ - /*if((hx>=0x7f800000)|| // x not finite - ((hp>0x7f800000))) // p is NaN */ - VECTOR_RETURN ((x*p) / (x*p), - (hp == 0) | (hx >= 0x7f800000) | (hp > 0x7f800000)); - - /* if (hp<=0x7effffff) // now x < 2p */ - VECTOR_COND_MOVE (x, v64sf_fmodf_aux (x, p+p, __mask), hp <= 0x7effffff); - - /*if ((hx-hp)==0) */ - VECTOR_RETURN (0.0f * x, (hx-hp) == 0); - - x = __builtin_gcn_fabsvf (x); - p = __builtin_gcn_fabsvf (p); - - VECTOR_IF (hp < 0x01000000, cond) - VECTOR_IF2 (x + x > p, cond2, cond) - VECTOR_COND_MOVE (x, x - p, cond2); - VECTOR_COND_MOVE (x, x - p, cond2 & (x + x >= p)); - VECTOR_ENDIF - VECTOR_ELSE (cond) - v64sf p_half = 0.5f * p; - VECTOR_IF2 (x > p_half, cond2, cond) - VECTOR_COND_MOVE (x, x - p, cond2); - VECTOR_COND_MOVE (x, x - p, cond2 & (x >= p_half)); - VECTOR_ENDIF - VECTOR_ENDIF - - GET_FLOAT_WORD (hx, x, NO_COND); - SET_FLOAT_WORD (x, hx ^ sx, NO_COND); - - VECTOR_RETURN (x, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (remainderf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_rint.c b/newlib/libm/machine/amdgcn/v64sf_rint.c deleted file mode 100644 index 8ebad4beae..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_rint.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/sf_rint.c in Newlib. */ - -#include "amdgcnmach.h" - -static const float TWO23[2] = { - 8.3886080000e+06, /* 0x4b000000 */ - -8.3886080000e+06, /* 0xcb000000 */ -}; - -DEF_VS_MATH_FUNC (v64sf, rintf, v64sf x) -{ - FUNCTION_INIT (v64sf); - - v64si i0; - GET_FLOAT_WORD (i0, x, NO_COND); - v64si sx = (i0 >> 31) & 1; - v64sf two23 = VECTOR_MERGE (TWO23[1] + x, TWO23[0] + x, sx != 0); - v64si ix = (i0 & 0x7fffffff); - v64si j0 = (ix >> 23) - 0x7f; - VECTOR_IF (j0 < 23, cond) - VECTOR_RETURN (x, cond & FLT_UWORD_IS_ZERO (ix)); - VECTOR_IF2 (j0 < 0, cond2, cond) - v64si i1 = (i0 & 0x07fffff); - VECTOR_COND_MOVE (i0, i0 & 0xfff00000, cond2); - VECTOR_COND_MOVE (i0, i0 | (((i1 | -i1) >> 9) & 0x400000), cond2); - SET_FLOAT_WORD (x, i0, cond2); - v64sf w = two23 + x; - v64sf t = w - two23; - GET_FLOAT_WORD (i0, t, cond2); - SET_FLOAT_WORD (t, (i0&0x7fffffff)|(sx<<31), cond2); - VECTOR_RETURN (t, cond2); - VECTOR_ELSE2 (cond2, cond) - v64si i = (0x007fffff) >> j0; - VECTOR_RETURN (x, cond2 & ((i0 & i) == 0)); /* x is integral */ - i >>= 1; - VECTOR_COND_MOVE (i0, (i0 & (~i)) | (0x200000 >> j0), - cond2 & ((i0 & i) != 0)); - VECTOR_ENDIF - VECTOR_ELSE (cond) - VECTOR_RETURN (x + x, cond & ~FLT_UWORD_IS_FINITE (ix)); /* inf or NaN */ - VECTOR_RETURN (x, cond); /* x is integral */ - VECTOR_ENDIF - - SET_FLOAT_WORD (x, i0, NO_COND); - v64sf w = two23 + x; - VECTOR_RETURN (w - two23, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (rintf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_scalb.c b/newlib/libm/machine/amdgcn/v64sf_scalb.c deleted file mode 100644 index a2350c0445..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_scalb.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/ef_scalb.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64sf_isnanf (v64sf); -v64si v64sf_finitef (v64sf); -v64sf v64sf_rintf_aux (v64sf, v64si); -v64sf v64sf_scalbnf_aux (v64sf, v64si, v64si); - -DEF_VS_MATH_FUNC (v64sf, scalbf, v64sf x, v64sf fn) -{ - FUNCTION_INIT (v64sf); - - VECTOR_IF (v64sf_isnanf(x) | v64sf_isnanf(fn), cond) - VECTOR_RETURN (x * fn, cond); - VECTOR_ENDIF - VECTOR_IF (~v64sf_finitef (fn), cond) - VECTOR_IF2 (fn > 0.0f, cond2, cond) - VECTOR_RETURN (x * fn, cond2); - VECTOR_ELSE2 (cond2, cond) - VECTOR_RETURN (x / (-fn), cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (v64sf_rintf_aux (fn, __mask) != fn, cond) - VECTOR_RETURN ((fn-fn)/(fn-fn), cond); - VECTOR_ENDIF -#if INT_MAX > 65000 - VECTOR_IF (fn > 65000.0f, cond) - VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (65000), __mask), cond); - VECTOR_ENDIF - VECTOR_IF (-fn > 65000.0f, cond) - VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (-65000), __mask), cond); - VECTOR_ENDIF -#else - VECTOR_IF (fn > 32000.0f, cond) - VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (32000), __mask), cond); - VECTOR_ENDIF - VECTOR_IF (-fn > 32000.0f, cond) - VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (-32000), __mask), cond); - VECTOR_ENDIF -#endif - VECTOR_RETURN (v64sf_scalbnf_aux (x, __builtin_convertvector (fn, v64si), __mask), - NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS2 (scalbf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_scalbn.c b/newlib/libm/machine/amdgcn/v64sf_scalbn.c deleted file mode 100644 index d53e0a0f6c..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_scalbn.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/common/sf_scalbn.c in Newlib. */ - -#include "amdgcnmach.h" -#include -#include - -#if INT_MAX > 50000 -#define OVERFLOW_INT 50000 -#else -#define OVERFLOW_INT 30000 -#endif - -static const float -two25 = 3.355443200e+07, /* 0x4c000000 */ -twom25 = 2.9802322388e-08, /* 0x33000000 */ -huge = 1.0e+30, -tiny = 1.0e-30; - -v64sf v64sf_copysignf_aux (v64sf, v64sf, v64si); - -DEF_VS_MATH_FUNC (v64sf, scalbnf, v64sf x, v64si n) -{ - FUNCTION_INIT (v64sf); - - const v64sf huge_v = VECTOR_INIT ((float) huge); - const v64sf tiny_v = VECTOR_INIT ((float) tiny); - - v64si ix; - GET_FLOAT_WORD (ix, x, NO_COND); - v64si hx = ix & 0x7fffffff; - v64si k = hx >> 23; /* extract exponent */ - VECTOR_IF (FLT_UWORD_IS_ZERO(hx), cond) - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_IF (~FLT_UWORD_IS_FINITE(hx), cond) /* NaN or Inf */ - VECTOR_RETURN (x + x, cond); - VECTOR_ENDIF - VECTOR_IF (FLT_UWORD_IS_SUBNORMAL (hx), cond); - VECTOR_COND_MOVE (x, x * two25, cond); - GET_FLOAT_WORD (ix, x, cond); - VECTOR_COND_MOVE (k, ((ix & 0x7f800000) >> 23) - 25, cond); - VECTOR_IF2 (n < -50000, cond2, cond) /*underflow*/ - VECTOR_RETURN (tiny * x, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF (n > OVERFLOW_INT, cond) // in case integer overflow in n+k - VECTOR_RETURN (huge_v * v64sf_copysignf_aux (huge_v, x, __mask), cond); - VECTOR_ENDIF - k = k + n; - VECTOR_IF (k > FLT_LARGEST_EXP, cond) /* overflow */ - VECTOR_RETURN (huge_v * v64sf_copysignf_aux (huge_v, x, __mask), cond); - VECTOR_ENDIF - VECTOR_IF (k > 0, cond) /* normal result */ - SET_FLOAT_WORD (x, (ix & 0x807fffff) | (k << 23), cond); - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - VECTOR_IF (k < FLT_SMALLEST_EXP, cond) /*underflow*/ - VECTOR_RETURN (tiny_v * v64sf_copysignf_aux (tiny_v, x, __mask), - k < FLT_SMALLEST_EXP); - VECTOR_ENDIF - - k += 25; /* subnormal result */ - SET_FLOAT_WORD (x, (ix & 0x807fffff) | (k << 23), NO_COND); - VECTOR_RETURN (x * twom25, NO_COND); - - FUNCTION_RETURN; -} diff --git a/newlib/libm/machine/amdgcn/v64sf_signif.c b/newlib/libm/machine/amdgcn/v64sf_signif.c deleted file mode 100644 index aa1a56a3fc..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_signif.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/mathfp/sf_signif.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_scalbf_aux (v64sf x, v64sf fn, v64si); -v64si v64sf_ilogbf_aux (v64sf x, v64si); - -DEF_VS_MATH_FUNC (v64sf, significandf, v64sf x) -{ - return v64sf_scalbf_aux (x, -__builtin_convertvector (v64sf_ilogbf_aux (x, __mask), v64sf), __mask); -} - -DEF_VARIANTS (significandf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sin.c b/newlib/libm/machine/amdgcn/v64sf_sin.c deleted file mode 100644 index 35e6381e77..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_sin.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_sin.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_sinef_aux (v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, sinf, v64sf x) -{ - return v64sf_sinef_aux (x, 0, __mask); -} - -DEF_VARIANTS (sinf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sine.c b/newlib/libm/machine/amdgcn/v64sf_sine.c deleted file mode 100644 index e818763f63..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_sine.c +++ /dev/null @@ -1,93 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based on newlib/libm/mathfp/sf_sine.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64sf_numtestf (v64sf); - -static const float HALF_PI = 1.570796326; -static const float ONE_OVER_PI = 0.318309886; -static const float r[] = { -0.1666665668, - 0.8333025139e-02, - -0.1980741872e-03, - 0.2601903036e-5 }; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, sinef, v64sf x, int cosine) -{ - const float YMAX = 210828714.0; - - FUNCTION_INIT (v64sf); - - v64si num_type = v64sf_numtestf (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); - VECTOR_ENDIF - - /* Use sin and cos properties to ease computations. */ - v64si sgn; - v64sf y; - - if (cosine) - { - sgn = VECTOR_INIT (0); - y = __builtin_gcn_fabsvf (x) + HALF_PI; - } - else - { - sgn = x < 0.0f; - y = VECTOR_MERGE (-x, x, x < 0.0f); - } - - /* Check for values of y that will overflow here. */ - VECTOR_IF (y > YMAX, cond) - errno = ERANGE; - VECTOR_RETURN (x, cond); - VECTOR_ENDIF - - /* Calculate the exponent. */ - v64si Nneg = __builtin_convertvector (y * ONE_OVER_PI - 0.5f, v64si); - v64si Npos = __builtin_convertvector (y * ONE_OVER_PI + 0.5f, v64si); - v64si N = VECTOR_MERGE (Nneg, Npos, y < 0.0f); - v64sf XN = __builtin_convertvector (N, v64sf); - - VECTOR_COND_MOVE (sgn, ~sgn, (N & 1) != 0); - - if (cosine) - XN -= 0.5; - - y = __builtin_gcn_fabsvf (x) - XN * (float) __PI; - - v64sf res; - - VECTOR_IF ((-z_rooteps_f < y) & (y < z_rooteps_f), cond) - VECTOR_COND_MOVE (res, y, cond); - VECTOR_ELSE (cond) - v64sf g = y * y; - - /* Calculate the Taylor series. */ - v64sf R = (((r[3] * g + r[2]) * g + r[1]) * g + r[0]) * g; - - /* Finally, compute the result. */ - VECTOR_COND_MOVE (res, y + y * R, cond); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, sgn); - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_sineh.c b/newlib/libm/machine/amdgcn/v64sf_sineh.c deleted file mode 100644 index 3f656867ff..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_sineh.c +++ /dev/null @@ -1,98 +0,0 @@ -/****************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - ******************************************************************/ - -/* Based in newlib/libm/mathfp/sf_sineh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_expf_aux (v64sf, v64si); -v64si v64sf_numtestf (v64sf); -v64si v64sf_isposf (v64sf); - -static const float q[] = { -0.428277109e+2 }; -static const float p[] = { -0.713793159e+1, - -0.190333399 }; -static const float LNV = 0.6931610107; -static const float INV_V2 = 0.2499930850; -static const float V_OVER2_MINUS1 = 0.1383027787e-4; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, sinehf, v64sf x, int cosineh) -{ - const float WBAR = 18.55; - - FUNCTION_INIT (v64sf); - - v64si sgn = VECTOR_INIT (0); - v64si v_cosineh = VECTOR_INIT (cosineh ? -1 : 0); - - /* Check for special values. */ - v64si num_type = v64sf_numtestf (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity_f.f), - VECTOR_INIT (-z_infinity_f.f), - v64sf_isposf (x)), - cond); - VECTOR_ENDIF - - v64sf y = __builtin_gcn_fabsvf (x); - - if (!cosineh) - VECTOR_COND_MOVE (sgn, VECTOR_INIT (-1), x < 0.0f); - - v64sf res; - - VECTOR_IF (((y > 1.0f) & ~v_cosineh) | v_cosineh, cond) - VECTOR_IF2 (y > (float) BIGX, cond2, cond) - v64sf w = y - LNV; - - /* Check for w > maximum here. */ - VECTOR_IF2 (w > (float) BIGX, cond3, cond2) - errno = ERANGE; - VECTOR_RETURN (x, cond3); - VECTOR_ENDIF - - v64sf z = v64sf_expf_aux (w, __mask); - - VECTOR_COND_MOVE (res, z * (V_OVER2_MINUS1 + 1.0f), - cond2 & (w > WBAR)); - VECTOR_ELSE2 (cond2, cond) - v64sf z = v64sf_expf_aux (y, __mask); - if (cosineh) { - VECTOR_COND_MOVE (res, (z + 1 / z) * 0.5f, cond2); - } else { - VECTOR_COND_MOVE (res, (z - 1 / z) * 0.5f, cond2); - } - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, sgn); - VECTOR_ELSE (cond) - /* Check for y being too small. */ - VECTOR_IF2 (y < z_rooteps_f, cond2, cond); - VECTOR_COND_MOVE (res, x, cond2); - VECTOR_ELSE2 (cond2, cond) - /* Calculate the Taylor series. */ - v64sf f = x * x; - v64sf Q = f + q[0]; - v64sf P = p[1] * f + p[0]; - v64sf R = f * (P / Q); - - VECTOR_COND_MOVE (res, x + x * R, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_sinh.c b/newlib/libm/machine/amdgcn/v64sf_sinh.c deleted file mode 100644 index ac779ac1c9..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_sinh.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Based on newlib/libm/mathfp/sf_sinh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_sinehf_aux (v64sf, int, v64si); - -DEF_VS_MATH_FUNC (v64sf, sinhf, v64sf x) -{ - return v64sf_sinehf_aux (x, 0, __mask); -} - -DEF_VARIANTS (sinhf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sqrt.c b/newlib/libm/machine/amdgcn/v64sf_sqrt.c deleted file mode 100644 index b979a40789..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_sqrt.c +++ /dev/null @@ -1,74 +0,0 @@ -/***************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - *****************************************************************/ - -/* Based on newlib/libm/mathfp/sf_sqrt.c in Newlib. */ - -#include "amdgcnmach.h" - -v64si v64sf_numtestf (v64sf); -v64si v64sf_isposf (v64sf); - -#if defined (__has_builtin) \ - && __has_builtin (__builtin_gcn_frexpvf_mant) \ - && __has_builtin (__builtin_gcn_frexpvf_exp) \ - && __has_builtin (__builtin_gcn_ldexpvf) - -DEF_VS_MATH_FUNC (v64sf, sqrtf, v64sf x) -{ - FUNCTION_INIT (v64sf); - - /* Check for special values. */ - v64si num_type = v64sf_numtestf (x); - VECTOR_IF (num_type == NAN, cond) - errno = EDOM; - VECTOR_RETURN (x, cond); - VECTOR_ELSEIF (num_type == INF, cond) - VECTOR_IF2 (v64sf_isposf (x), cond2, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond2); - VECTOR_ELSE2 (cond2,cond) - errno = ERANGE; - VECTOR_RETURN (VECTOR_INIT (z_infinity_f.f), cond); - VECTOR_ENDIF - VECTOR_ENDIF - - /* Initial checks are performed here. */ - VECTOR_IF (x == 0.0f, cond) - VECTOR_RETURN (VECTOR_INIT (0.0f), cond); - VECTOR_ENDIF - VECTOR_IF (x < 0.0f, cond) - errno = EDOM; - VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); - VECTOR_ENDIF - - /* Find the exponent and mantissa for the form x = f * 2^exp. */ - v64sf f = __builtin_gcn_frexpvf_mant (x); - v64si exp = __builtin_gcn_frexpvf_exp (x); - v64si odd = (exp & 1) != 0; - - /* Get the initial approximation. */ - v64sf y = 0.41731f + 0.59016f * f; - - f *= 0.5f; - /* Calculate the remaining iterations. */ - y = y * 0.5f + f / y; - y = y * 0.5f + f / y; - - /* Calculate the final value. */ - VECTOR_COND_MOVE (y, y * (float) __SQRT_HALF, odd); - VECTOR_COND_MOVE (exp, exp + 1, odd); - exp >>= 1; - y = __builtin_gcn_ldexpvf (y, exp); - - VECTOR_RETURN (y, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (sqrtf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tan.c b/newlib/libm/machine/amdgcn/v64sf_tan.c deleted file mode 100644 index 9f8bac1e40..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_tan.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* Based on newlib/libm/math/kf_tan.c in Newlib. */ - -#include "amdgcnmach.h" - -static const float -one = 1.0000000000e+00, /* 0x3f800000 */ -pio4 = 7.8539812565e-01, /* 0x3f490fda */ -pio4lo= 3.7748947079e-08, /* 0x33222168 */ -T[] = { - 3.3333334327e-01, /* 0x3eaaaaab */ - 1.3333334029e-01, /* 0x3e088889 */ - 5.3968254477e-02, /* 0x3d5d0dd1 */ - 2.1869488060e-02, /* 0x3cb327a4 */ - 8.8632395491e-03, /* 0x3c11371f */ - 3.5920790397e-03, /* 0x3b6b6916 */ - 1.4562094584e-03, /* 0x3abede48 */ - 5.8804126456e-04, /* 0x3a1a26c8 */ - 2.4646313977e-04, /* 0x398137b9 */ - 7.8179444245e-05, /* 0x38a3f445 */ - 7.1407252108e-05, /* 0x3895c07a */ - -1.8558637748e-05, /* 0xb79bae5f */ - 2.5907305826e-05, /* 0x37d95384 */ -}; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -static v64sf -v64sf_kernel_tanf (v64sf x, v64sf y, v64si iy, v64si __mask) -{ - FUNCTION_INIT (v64sf); - - v64si hx; - GET_FLOAT_WORD(hx, x, NO_COND); - v64si ix = hx & 0x7fffffff; /* high word of |x| */ - - VECTOR_IF(ix<0x31800000, cond) /* x < 2**-28 */ - VECTOR_IF2(__builtin_convertvector (x, v64si)==0, cond2, cond) /* generate inexact */ - VECTOR_RETURN (1.0f / __builtin_gcn_fabsvf (x), (ix|(iy+1))==0); - VECTOR_RETURN (x, cond2 & (iy == 1)); - VECTOR_RETURN (-1.0f / x, cond2); - VECTOR_ENDIF - VECTOR_ENDIF - VECTOR_IF(ix>=0x3f2ca140, cond) /* |x|>=0.6744 */ - VECTOR_COND_MOVE (x, -x, cond & (hx < 0)); - VECTOR_COND_MOVE (y, -y, cond & (hx < 0)); - v64sf z = pio4-x; - v64sf w = pio4lo-y; - VECTOR_COND_MOVE (x, z+w, cond); - VECTOR_COND_MOVE (y, VECTOR_INIT (0.0f), cond); - VECTOR_ENDIF - v64sf z = x*x; - v64sf w = z*z; - /* Break x^5*(T[1]+x^2*T[2]+...) into - * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + - * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) - */ - v64sf r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11])))); - v64sf v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12]))))); - v64sf s = z*x; - r = y + z*(s*(r+v)+y); - r += T[0]*s; - w = x+r; - VECTOR_IF(ix>=0x3f2ca140, cond) - v = __builtin_convertvector (iy, v64sf); - VECTOR_RETURN (__builtin_convertvector (1-((hx>>30)&2), v64sf) - * (v-2.0f*(x-(w*w/(w+v)-r))), cond); - VECTOR_ENDIF - VECTOR_RETURN (w, iy == 1); - /* if allow error up to 2 ulp, - simply return -1.0/(x+r) here */ - /* compute -1.0/(x+r) accurately */ - z = w; - v64si i; - GET_FLOAT_WORD(i,z, NO_COND); - SET_FLOAT_WORD(z,i&0xfffff000, NO_COND); - v = r - (z - x); /* z+v = r+x */ - v64sf a, t; - t = a = -1.0f/w; /* a = -1.0/w */ - GET_FLOAT_WORD(i,t, NO_COND); - SET_FLOAT_WORD(t,i&0xfffff000, NO_COND); - s = 1.0f+t*z; - VECTOR_RETURN (t+a*(s+t*v), NO_COND); - - FUNCTION_RETURN; -} - -static v64si -v64sf_rem_pio2f (v64sf x, v64sf *y) -{ - /* Work in double-precision for better accuracy. */ - v64df dx = __builtin_convertvector (x, v64df); - v64df r = dx * __INV_PI_OVER_TWO_2_24; - v64si n = (__builtin_convertvector (r, v64si) + 0x800000) >> 24; - dx = dx - __builtin_convertvector (n, v64df) * __PI_OVER_TWO; - - y[0] = __builtin_convertvector (dx, v64sf); - y[1] = __builtin_convertvector (dx, v64sf) - y[0]; - return n; -} - -DEF_VS_MATH_FUNC (v64sf, tanf, v64sf x) -{ - FUNCTION_INIT (v64sf); - - v64si ix; - GET_FLOAT_WORD (ix, x, NO_COND); - - /* |x| ~< pi/4 */ - ix &= 0x7fffffff; - VECTOR_RETURN (v64sf_kernel_tanf (x, VECTOR_INIT (0.0f), VECTOR_INIT (1), __mask), - ix <= 0x3f490fda); - - /* tan(Inf or NaN) is NaN */ - VECTOR_RETURN (x-x, ~FLT_UWORD_IS_FINITE(ix)); /* NaN */ - - /* argument reduction needed */ - v64sf y[2]; - v64si n = v64sf_rem_pio2f (x,y); - VECTOR_RETURN (v64sf_kernel_tanf (y[0], y[1], 1-((n&1)<<1), __mask), // 1 -- n even - NO_COND); // -1 -- n odd - - FUNCTION_RETURN; -} - -DEF_VARIANTS (tanf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tanh.c b/newlib/libm/machine/amdgcn/v64sf_tanh.c deleted file mode 100644 index 904c6ebac2..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_tanh.c +++ /dev/null @@ -1,63 +0,0 @@ -/***************************************************************** - * The following routines are coded directly from the algorithms - * and coefficients given in "Software Manual for the Elementary - * Functions" by William J. Cody, Jr. and William Waite, Prentice - * Hall, 1980. - *****************************************************************/ - -/* Based on newlib/libm/mathfp/sf_tanh.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_expf_aux (v64sf, v64si); - -static const float LN3_OVER2 = 0.54930614433405484570; -static const float p[] = { -0.16134119023996228053e+4, - -0.99225929672236083313e+2, - -0.96437492777225469787 }; -static const float q[] = { 0.48402357071988688686e+4, - 0.22337720718962312926e+4, - 0.11274474380534949335e+3 }; - -#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) - -DEF_VS_MATH_FUNC (v64sf, tanhf, v64sf x) -{ - FUNCTION_INIT (v64sf); - - v64sf f = __builtin_gcn_fabsvf (x); - v64sf res; - - /* Check if the input is too big. */ - VECTOR_IF (f > (float) BIGX, cond) - VECTOR_COND_MOVE (res, VECTOR_INIT (1.0f), cond); - - VECTOR_ELSEIF (f > LN3_OVER2, cond) - VECTOR_COND_MOVE (res, 1.0f - 2.0f / (v64sf_expf_aux (2.0f * f, __mask) + 1.0f), - cond); - - /* Check if the input is too small. */ - VECTOR_ELSEIF (f < z_rooteps_f, cond) - VECTOR_COND_MOVE (res, f, cond); - - /* Calculate the Taylor series. */ - VECTOR_ELSE (cond) - v64sf g = f * f; - - v64sf P = (p[2] * g + p[1]) * g + p[0]; - v64sf Q = ((g + q[2]) * g + q[1]) * g + q[0]; - v64sf R = g * (P / Q); - - VECTOR_COND_MOVE (res, f + f * R, cond); - VECTOR_ENDIF - - VECTOR_COND_MOVE (res, -res, x < 0.0f); - - VECTOR_RETURN (res, NO_COND); - - FUNCTION_RETURN; -} - -DEF_VARIANTS (tanhf, sf, sf) - -#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tgamma.c b/newlib/libm/machine/amdgcn/v64sf_tgamma.c deleted file mode 100644 index 7eae92fcce..0000000000 --- a/newlib/libm/machine/amdgcn/v64sf_tgamma.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - * - */ - -/* Based on newlib/libm/math/ef_tgamma.c in Newlib. */ - -#include "amdgcnmach.h" - -v64sf v64sf_expf_aux (v64sf x, v64si __mask); -v64sf v64sf_lgammaf_r_aux (v64sf x, v64si *signgamp, v64si __mask); - -DEF_VS_MATH_FUNC (v64sf, tgammaf, v64sf x) -{ - v64si signgam_local; - v64sf y = v64sf_expf_aux(v64sf_lgammaf_r_aux(x, &signgam_local, __mask), __mask); - VECTOR_COND_MOVE(y, -y, signgam_local < 0); - return y; -} - -DEF_VARIANTS (tgammaf, sf, sf) From c8130c3fe8c7c662a94cd720bf62883bd628850f Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 16 Dec 2022 14:18:56 -0500 Subject: [PATCH 043/767] Fix 3 other instances of Reme typo (should be Remez) --- newlib/libm/common/s_expm1.c | 2 +- newlib/libm/common/s_log1p.c | 2 +- newlib/libm/math/e_log.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/newlib/libm/common/s_expm1.c b/newlib/libm/common/s_expm1.c index 10b0c8efb4..51cdd2188a 100644 --- a/newlib/libm/common/s_expm1.c +++ b/newlib/libm/common/s_expm1.c @@ -68,7 +68,7 @@ PORTABILITY * R1(r**2) = 6/r *((exp(r)+1)/(exp(r)-1) - 2/r) * = 6/r * ( 1 + 2.0*(1/(exp(r)-1) - 1/r)) * = 1 - r^2/60 + r^4/2520 - r^6/100800 + ... - * We use a special Reme algorithm on [0,0.347] to generate + * We use a special Remez algorithm on [0,0.347] to generate * a polynomial of degree 5 in r*r to approximate R1. The * maximum error of this polynomial approximation is bounded * by 2**-61. In other words, diff --git a/newlib/libm/common/s_log1p.c b/newlib/libm/common/s_log1p.c index c44461e8d5..e3a3d9d9cd 100644 --- a/newlib/libm/common/s_log1p.c +++ b/newlib/libm/common/s_log1p.c @@ -65,7 +65,7 @@ Interface Definition (Issue 2). * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s) * = 2s + 2/3 s**3 + 2/5 s**5 + ....., * = 2s + s*R - * We use a special Reme algorithm on [0,0.1716] to generate + * We use a special Remez algorithm on [0,0.1716] to generate * a polynomial of degree 14 to approximate R The maximum error * of this polynomial approximation is bounded by 2**-58.45. In * other words, diff --git a/newlib/libm/math/e_log.c b/newlib/libm/math/e_log.c index ac4a950689..461ae0309a 100644 --- a/newlib/libm/math/e_log.c +++ b/newlib/libm/math/e_log.c @@ -23,7 +23,7 @@ * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s) * = 2s + 2/3 s**3 + 2/5 s**5 + ....., * = 2s + s*R - * We use a special Reme algorithm on [0,0.1716] to generate + * We use a special Remez algorithm on [0,0.1716] to generate * a polynomial of degree 14 to approximate R The maximum error * of this polynomial approximation is bounded by 2**-58.45. In * other words, From 9bba9c2bdd22b2011f1fa6da36e6bc6a70af42ec Mon Sep 17 00:00:00 2001 From: Giovanni Bajo Date: Sat, 17 Dec 2022 15:47:23 +0100 Subject: [PATCH 044/767] Fix a bug in setjmp for MIPS o32/o64 FPXX/FP64 It seems there is a swapped logic in one of the subcases of setjmp.S for MIPS: when the FPU registers are 64-bit within a 32-bit aligned jmp_buf, the code realigns the pointers before doing 64-bit writes, but the branch logic is swapped: we must avoid the address adjustement when bit 2 is zero (that is, the address is already 8-byte aligned). This always triggers an address error when run, as tested on a MIPS VR4300 with O64 ABI. --- newlib/libc/machine/mips/setjmp.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/machine/mips/setjmp.S b/newlib/libc/machine/mips/setjmp.S index 9a8b31d092..cfc1d517a0 100644 --- a/newlib/libc/machine/mips/setjmp.S +++ b/newlib/libc/machine/mips/setjmp.S @@ -68,7 +68,7 @@ #define FPR_LAYOUT \ and $8, $4, 4; \ - bne $8, $0, 1f; \ + beq $8, $0, 1f; \ GPR_OFFSET ($31, 22); \ addiu $4, $4, -4; \ 1: \ From 57a08d6b9a01ed56ff80905d0b3cb30fe217f1d3 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 14 Dec 2022 16:46:33 +0000 Subject: [PATCH 045/767] libc: arm: setjmp.S code cleanup The code for setjmp and longjmp contains unconditionally-disabled legacy FPA code. Given the code is not used by any targets, remove the code. --- newlib/libc/machine/arm/setjmp.S | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 4cf0a8e3ff..d814afea8c 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -182,12 +182,6 @@ SYM (\name): vstm r0, { d8-d15 } #endif -#if 0 /* Simulator does not cope with FP instructions yet. */ -#ifndef __SOFTFP__ - /* Save the floating point registers. */ - sfmea f4, 4, [a1] -#endif -#endif /* When setting up the jump buffer return 0. */ mov r0, #0 @@ -212,12 +206,6 @@ SYM (\name): vldm r0, { d8-d15 } #endif -#if 0 /* Simulator does not cope with FP instructions yet. */ -#ifndef __SOFTFP__ - /* Restore floating point registers as well. */ - lfmfd f4, 4, [a1] -#endif -#endif /* Put the return value into the integer result register. But if it is zero then return 1 instead. */ movs r0, r1 From 171d6fc1dcaf2aadd2fbe33b3a452a7b274f4e73 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 13 Dec 2022 21:04:48 -0500 Subject: [PATCH 046/767] libgloss: aarch64: delete unused multi-build logic This logic looks like it was copied from the arm port, but it isn't actually used here. Since no other port uses this custom libgloss multi-build.in logic, and it's making things difficult to unify, and aarch64 isn't even using it, drop it all. The set of installed objects and their content should be the same. Once we move this to unified automake, if we want to readd support for subdir multi-builds, it'll be a lot easier as we can just add another set of objects with custom flags. None of this should be confused with the common multilib logic. This *multi-build* which is processed in parallel. --- libgloss/aarch64/Makefile.in | 59 ++++++++++-------------------------- 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/libgloss/aarch64/Makefile.in b/libgloss/aarch64/Makefile.in index e84aa6927a..5d7012023d 100644 --- a/libgloss/aarch64/Makefile.in +++ b/libgloss/aarch64/Makefile.in @@ -52,11 +52,8 @@ MULTISRCTOP = MULTIBUILDTOP = MULTIDIRS = MULTISUBDIR = -MULTILIBNAME = MULTIDO = true MULTICLEAN = true -MULTI_FLAGS_FOR_TARGET = MULTI_DEFAULT_FLAGS -MULTI_DEFAULT_FLAGS = -DSEMIHOST_V2 SHELL = /bin/sh @@ -82,17 +79,15 @@ OBJS = ftruncate.o libcfunc.o syscalls.o truncate.o _exit.o _kill.o CRT0 = crt0.o CRT0_INSTALL = install-crt0 -RDIMON_CRT0 = rdimon-crt0${${MULTILIBNAME}}.o -RDIMON_BSP = librdimon${${MULTILIBNAME}}.a +RDIMON_CRT0 = rdimon-crt0.o +RDIMON_BSP = librdimon.a RDIMON_OBJS = $(patsubst %,rdimon-%,$(OBJS)) -RDIMON_SCRIPTS = rdimon${${MULTILIBNAME}}.specs \ - aem-ve${${MULTILIBNAME}}.specs \ - aem-validation${${MULTILIBNAME}}.specs \ - aem-v8-r${${MULTILIBNAME}}.specs +RDIMON_SCRIPTS = rdimon.specs \ + aem-ve.specs \ + aem-validation.specs \ + aem-v8-r.specs RDIMON_INSTALL = install-rdimon -CFLAGS = -g - # Host specific makefile fragment comes in here. @host_makefile_frag@ @@ -111,7 +106,6 @@ all: ${CRT0} ${RDIMON_CRT0} ${RDIMON_BSP} ${RDIMON_SCRIPTS} else true; fi; \ else true; fi; \ done - $(MAKE) $(AM_MAKEFLAGS) all-recursive # # here's where we build the test programs for each target @@ -121,53 +115,36 @@ test: # crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -o $@ -c $< -rdimon-crt0${${MULTILIBNAME}}.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< +rdimon-crt0.o: crt0.S + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< #rdimon-trap.o: trap.S -# $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< +# $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-_exit.o: _exit.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-ftruncate.o: ftruncate.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-_kill.o: _kill.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-libcfunc.o: libcfunc.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-syscalls.o: syscalls.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-truncate.o: truncate.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< $(RDIMON_BSP): $(RDIMON_OBJS) ${AR} ${ARFLAGS} $@ $^ ${RANLIB} $@ -# Multilib support. -.PHONY: libgloss-multi-do all-multi clean-multi install-multi - -all-recursive: all-multi -clean-recursive: clean-multi -install-recursive: install-multi - -# The $(MAKE) comments below are to enable parallel building. -all-multi: - $(MAKE) $(AM_MAKEFLAGS) DO=all libgloss-multi-do - -clean-multi: - $(MAKE) $(AM_MAKEFLAGS) DO=clean libgloss-multi-do - -install-multi: - $(MAKE) $(AM_MAKEFLAGS) DO=install libgloss-multi-do - clean mostlyclean: rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) ${RDIMON_SCRIPTS} @rootpre=`pwd`/; export rootpre; \ @@ -179,7 +156,6 @@ clean mostlyclean: else true; fi; \ else true; fi; \ done - $(MAKE) $(AM_MAKEFLAGS) clean-recursive distclean maintainer-clean realclean: clean rm -f Makefile config.status *~ @@ -195,7 +171,6 @@ install: ${CRT0_INSTALL} ${RDIMON_INSTALL} else true; fi; \ else true; fi; \ done - $(MAKE) $(AM_MAKEFLAGS) install-recursive install-crt0: ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} @@ -220,5 +195,3 @@ Makefile: Makefile.in config.status @host_makefile_frag_path@ config.status: configure $(SHELL) config.status --recheck - -include $(srcdir)/../multi-build.in From 6668403d2da566e5f269e20c428a2e813dc00eba Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 13 Dec 2022 21:08:04 -0500 Subject: [PATCH 047/767] libgloss: arm: inline multi-build logic Since no other port uses this custom libgloss multi-build.in logic, and it's making things difficult to unify, drop it all. The set of installed objects and their content should be the same. There is a difference in the builds: currently we compile all the objects in this subdir twice, but only a subset of them use a diff set of flags, and are actually installed (the librdimon.a and its objects). So this change speeds things up by removing the duplicate compilation. There is a short term cost in having to duplicate the compile rules for the files that are different, but this is minor when compared to being able to delete the unused multi-build logic (which we'll do in a sep commit), and we'll be able to clean this up when we move the code to unified automake. None of this should be confused with the common multilib logic. This is *multi-build* which is processed in parallel. --- libgloss/arm/Makefile.in | 92 ++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in index 45d889409a..5dab75f750 100644 --- a/libgloss/arm/Makefile.in +++ b/libgloss/arm/Makefile.in @@ -29,15 +29,8 @@ MULTISRCTOP = MULTIBUILDTOP = MULTIDIRS = MULTISUBDIR = -MULTILIBNAME = MULTIDO = true MULTICLEAN = true -MULTI_FLAGS_FOR_TARGET = MULTI_DEFAULT_FLAGS -MULTI_DEFAULT_FLAGS = -DSEMIHOST_V2 - -MULTIDIRS += semihv2m -MULTIDIR_semihv2m_FLAGS = $(MULTI_DEFAULT_FLAGS) -DSEMIHOST_V2_MIXED_MODE -MULTIDIR_semihv2m_NAME = -v2m SHELL = /bin/sh @@ -84,15 +77,15 @@ RDPMON_OBJS = ftruncate.o libcfunc.o syscalls.o trap.o truncate.o _exit.o _kill. RDPMON_SCRIPTS = rdpmon.specs RDPMON_INSTALL = install-rdpmon -RDIMON_CRT0 = rdimon-crt0${${MULTILIBNAME}}.o -RDIMON_BSP = librdimon${${MULTILIBNAME}}.a +RDIMON_CRT0 = rdimon-crt0.o rdimon-crt0-v2m.o +RDIMON_BSP = librdimon.a librdimon-v2m.a RDIMON_OBJS = $(patsubst %,rdimon-%,$(RDPMON_OBJS)) -RDIMON_SCRIPTS = rdimon${${MULTILIBNAME}}.specs \ - aprofile-validation${${MULTILIBNAME}}.specs \ - aprofile-ve${${MULTILIBNAME}}.specs +_RDIMON_SCRIPTS = rdimon.specs \ + aprofile-validation.specs \ + aprofile-ve.specs +RDIMON_SCRIPTS = $(_RDIMON_SCRIPTS) $(patsubst %.specs,%-v2m.specs,$(_RDIMON_SCRIPTS)) RDIMON_INSTALL = install-rdimon - -CFLAGS = -g +RDIMON_SEMIHV2M_OBJS = $(patsubst %.o,rdimon-%-v2m.o,$(RDPMON_OBJS)) # Here is all of the eval board stuff PID_SCRIPTS = pid.specs @@ -121,7 +114,6 @@ all: ${CRT0} ${LINUX_CRT0} ${LINUX_BSP} ${REDBOOT_CRT0} ${REDBOOT_OBJS} ${RDPMON else true; fi; \ else true; fi; \ done - $(MAKE) $(AM_MAKEFLAGS) all-recursive # # here's where we build the test programs for each target @@ -133,34 +125,58 @@ test: crt0.o: crt0.S redboot-crt0.o: redboot-crt0.S redboot-syscalls.o: redboot-syscalls.c $(srcdir)/../syscall.h - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -o $@ -c $< rdpmon-crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDP_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDP_MONITOR -o $@ -c $< -rdimon-crt0${${MULTILIBNAME}}.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< +rdimon-crt0.o: crt0.S + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-ftruncate.o: ftruncate.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-trap.o: trap.S - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-truncate.o: truncate.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-_exit.o: _exit.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-_kill.o: _kill.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-syscalls.o: syscalls.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< rdimon-libcfunc.o: libcfunc.c - $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-crt0-v2m.o: crt0.S + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-ftruncate-v2m.o: ftruncate.c + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-trap-v2m.o: trap.S + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-truncate-v2m.o: truncate.c + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-_exit-v2m.o: _exit.c + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-_kill-v2m.o: _kill.c + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-syscalls-v2m.o: syscalls.c + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< + +rdimon-libcfunc-v2m.o: libcfunc.c + $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< $(LINUX_BSP): $(LINUX_OBJS) ${AR} ${ARFLAGS} $@ $^ @@ -170,27 +186,17 @@ $(RDPMON_BSP): $(RDPMON_OBJS) ${AR} ${ARFLAGS} $@ $^ ${RANLIB} $@ -$(RDIMON_BSP): $(RDIMON_OBJS) +librdimon.a: $(RDIMON_OBJS) + ${AR} ${ARFLAGS} $@ $^ + ${RANLIB} $@ + +librdimon-v2m.a: $(RDIMON_SEMIHV2M_OBJS) ${AR} ${ARFLAGS} $@ $^ ${RANLIB} $@ # Multilib support. .PHONY: libgloss-multi-do all-multi clean-multi install-multi -all-recursive: all-multi -clean-recursive: clean-multi -install-recursive: install-multi - -# The $(MAKE) comments below are to enable parallel building. -all-multi: - $(MAKE) $(AM_MAKEFLAGS) DO=all libgloss-multi-do - -clean-multi: - $(MAKE) $(AM_MAKEFLAGS) DO=clean libgloss-multi-do - -install-multi: - $(MAKE) $(AM_MAKEFLAGS) DO=install libgloss-multi-do - clean mostlyclean: rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP) @rootpre=`pwd`/; export rootpre; \ @@ -202,7 +208,6 @@ clean mostlyclean: else true; fi; \ else true; fi; \ done - $(MAKE) $(AM_MAKEFLAGS) clean-recursive distclean maintainer-clean realclean: clean rm -f Makefile config.status *~ @@ -218,7 +223,6 @@ install: ${CRT0_INSTALL} ${LINUX_INSTALL} ${REDBOOT_INSTALL} ${RDPMON_INSTALL} $ else true; fi; \ else true; fi; \ done - $(MAKE) $(AM_MAKEFLAGS) install-recursive install-nano: ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} @@ -268,5 +272,3 @@ Makefile: Makefile.in config.status @host_makefile_frag_path@ config.status: configure $(SHELL) config.status --recheck - -include $(srcdir)/../multi-build.in From 2dfc4a9e973dd6c74b61b1f25630080de23580dd Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 13 Dec 2022 21:12:02 -0500 Subject: [PATCH 048/767] libgloss: drop unused multi-build logic Now that aarch64 & arm have migrated off this, we can punt it. --- libgloss/doc/porting.texi | 4 +-- libgloss/multi-build.in | 66 --------------------------------------- 2 files changed, 1 insertion(+), 69 deletions(-) delete mode 100644 libgloss/multi-build.in diff --git a/libgloss/doc/porting.texi b/libgloss/doc/porting.texi index 496fae3521..15f214d026 100644 --- a/libgloss/doc/porting.texi +++ b/libgloss/doc/porting.texi @@ -398,9 +398,7 @@ any target that has migrated to @value{automake}. Libgloss automatically builds itself for all multilib configurations that the active toolchain supports. This logic is provided by common code from the -combined toolchain source tree. This should @strong{not} be confused with the -Libgloss-specific @file{multi-build.in} file. That is used by a few ports to -further produce multiple targets. +combined toolchain source tree. @node GCC, Libraries, Libgloss, Top @chapter Porting GCC diff --git a/libgloss/multi-build.in b/libgloss/multi-build.in deleted file mode 100644 index 80919ed6f8..0000000000 --- a/libgloss/multi-build.in +++ /dev/null @@ -1,66 +0,0 @@ -# This is like ../multilib.am and ../config-ml.in and ../config/multi.m4 mashed -# into one file. It relies on some custom hardcoded MULTI* variables in the -# respective Makefile.in instead of dynamic compiler probing that ../multilib.am -# does. - -PWD_COMMAND=$${PWDCMD-pwd} - -# FIXME: There should be an @-sign in front of the `if'. -# Leave out until this is tested a bit more. -libgloss-multi-do: - if [ -z "$(MULTIDIRS)" ]; then \ - true; \ - else \ - rootpre=`${PWD_COMMAND}`/; export rootpre; \ - srcrootpre=`cd $(srcdir); ${PWD_COMMAND}`/; export srcrootpre; \ - lib=`echo "$${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; export lib; \ - compiler="$(CC)"; \ - for dir in $(MULTIDIRS); do \ - if [ "$${dir}" = "." ]; then \ - true; \ - else \ - destpre=`echo $${rootpre}/$${dir}`/; export destpre; \ - if ! test -d $${destpre} ; then \ - mkdir -p $${destpre}; \ - cd $${destpre}; \ - config_cmd=`../config.status --config | sed -re "s:--srcdir=([^/]):--srcdir=../\1:"`; \ - $(SHELL) -c "$(SHELL) $${srcrootpre}/configure $${config_cmd}";\ - sed -e "s:^MULTIDIRS[[:space:]]*+=.*$$:MULTIDIRS = :" \ - -e "s:^MULTILIBNAME[[:space:]]*=.*$$:MULTILIBNAME = MULTIDIR_$${dir}_NAME:" \ - -e "s:^MULTI_FLAGS_FOR_TARGET[[:space:]]*=.*$$:MULTI_FLAGS_FOR_TARGET = MULTIDIR_$${dir}_FLAGS:" \ - -e "s:^objdir[[:space:]]*=.*$$:objdir = ..:" \ - Makefile > Makefile.tem; \ - rm -f Makefile; \ - mv Makefile.tem Makefile; \ - else \ - cd $${destpre}; \ - fi; \ - if ($(MAKE) $(FLAGS_TO_PASS) \ - CFLAGS="$(CFLAGS)" \ - CCASFLAGS="$(CCASFLAGS)" \ - FCFLAGS="$(FCFLAGS)" \ - FFLAGS="$(FFLAGS)" \ - ADAFLAGS="$(ADAFLAGS)" \ - prefix="$(prefix)" \ - exec_prefix="$(exec_prefix)" \ - GCJFLAGS="$(GCJFLAGS)" \ - GOCFLAGS="$(GOCFLAGS)" \ - CXXFLAGS="$(CXXFLAGS)" \ - LIBCFLAGS="$(LIBCFLAGS)" \ - LIBCXXFLAGS="$(LIBCXXFLAGS)" \ - LDFLAGS="$(LDFLAGS)" \ - MULTIFLAGS="" \ - DESTDIR="$(DESTDIR)" \ - SOURCE="${srcdir}/" \ - INSTALL="$(INSTALL)" \ - INSTALL_DATA="$(INSTALL_DATA)" \ - INSTALL_PROGRAM="$(INSTALL_PROGRAM)" \ - INSTALL_SCRIPT="$(INSTALL_SCRIPT)" \ - $(DO)); then \ - cd $${rootpre}; \ - else \ - exit 1; \ - fi; \ - fi; \ - done; \ - fi From 8893cd10067ceed80e427d0103e123e89f91bc67 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 18 Feb 2022 22:14:13 -0500 Subject: [PATCH 049/767] libgloss: merge aarch64 configure script up a level Move the minor aarch64-specific logic to a dedicated variable so we can merge its configure logic up a level. --- libgloss/Makefile.in | 15 +- libgloss/aarch64/Makefile.in | 41 +- libgloss/aarch64/acinclude.m4 | 7 + libgloss/aarch64/aclocal.m4 | 546 --- libgloss/aarch64/configure | 4784 ------------------------- libgloss/aarch64/configure.ac | 49 - libgloss/aarch64/cpu-init/Makefile.in | 7 +- libgloss/configure | 23 +- libgloss/configure.ac | 4 +- 9 files changed, 45 insertions(+), 5431 deletions(-) create mode 100644 libgloss/aarch64/acinclude.m4 delete mode 100644 libgloss/aarch64/aclocal.m4 delete mode 100755 libgloss/aarch64/configure delete mode 100644 libgloss/aarch64/configure.ac diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 760baa99d9..6cecbbc73e 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -157,6 +157,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ + $(top_srcdir)/aarch64/acinclude.m4 \ $(top_srcdir)/i386/acinclude.m4 \ $(top_srcdir)/libnosys/acinclude.m4 \ $(top_srcdir)/m68k/acinclude.m4 \ @@ -172,10 +173,11 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = arc/Makefile csky/Makefile epiphany/Makefile \ - i386/Makefile m32r/Makefile m68hc11/Makefile nds32/Makefile \ - m68k/Makefile pa/Makefile i960/Makefile sparc_leon/Makefile \ - sparc/Makefile mips/Makefile rs6000/Makefile mn10200/Makefile \ +CONFIG_CLEAN_FILES = aarch64/Makefile aarch64/cpu-init/Makefile \ + arc/Makefile csky/Makefile epiphany/Makefile i386/Makefile \ + m32r/Makefile m68hc11/Makefile nds32/Makefile m68k/Makefile \ + pa/Makefile i960/Makefile sparc_leon/Makefile sparc/Makefile \ + mips/Makefile rs6000/Makefile mn10200/Makefile \ mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ d30v/Makefile fr30/Makefile frv/Makefile ft32/Makefile \ mcore/Makefile mep/Makefile moxie/Makefile microblaze/Makefile \ @@ -505,6 +507,7 @@ CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) VPATH = @srcdir@ $(am__append_20) +AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -852,6 +855,10 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) distclean-hdr: -rm -f config.h stamp-h1 +aarch64/Makefile: $(top_builddir)/config.status $(top_srcdir)/aarch64/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +aarch64/cpu-init/Makefile: $(top_builddir)/config.status $(top_srcdir)/aarch64/cpu-init/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ arc/Makefile: $(top_builddir)/config.status $(top_srcdir)/arc/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ csky/Makefile: $(top_builddir)/config.status $(top_srcdir)/csky/Makefile.in diff --git a/libgloss/aarch64/Makefile.in b/libgloss/aarch64/Makefile.in index 5d7012023d..980c75858d 100644 --- a/libgloss/aarch64/Makefile.in +++ b/libgloss/aarch64/Makefile.in @@ -26,6 +26,7 @@ DESTDIR = VPATH = @srcdir@ @srcdir@/.. srcdir = @srcdir@ +abs_srcdir = @abs_srcdir@ objdir = . srcroot = $(srcdir)/../.. objroot = $(objdir)/../.. @@ -40,7 +41,7 @@ bindir = @bindir@ libdir = @libdir@ tooldir = $(exec_prefix)/$(target_alias) -objtype = @objtype@ +objtype = @AARCH64_OBJTYPE@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -66,8 +67,6 @@ AR = @AR@ LD = @LD@ RANLIB = @RANLIB@ -SUBDIRS = @subdirs@ - OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ then echo ${objroot}/../binutils/objdump ; \ else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` @@ -97,15 +96,6 @@ RDIMON_INSTALL = install-rdimon # all: ${CRT0} ${RDIMON_CRT0} ${RDIMON_BSP} ${RDIMON_SCRIPTS} - @rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ - for dir in .. ${SUBDIRS}; do \ - if [ x$$dir != x.. ]; then \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) $(FLAGS_TO_PASS)); \ - else true; fi; \ - else true; fi; \ - done # # here's where we build the test programs for each target @@ -147,30 +137,12 @@ $(RDIMON_BSP): $(RDIMON_OBJS) clean mostlyclean: rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) ${RDIMON_SCRIPTS} - @rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ - for dir in .. ${SUBDIRS}; do \ - if [ x$$dir != x.. ]; then \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) $(FLAGS_TO_PASS) clean); \ - else true; fi; \ - else true; fi; \ - done distclean maintainer-clean realclean: clean - rm -f Makefile config.status *~ + rm -f Makefile *~ .PHONY: install info install-info clean-info install: ${CRT0_INSTALL} ${RDIMON_INSTALL} - @rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ - for dir in .. ${SUBDIRS}; do \ - if [ x$$dir != x.. ]; then \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) $(FLAGS_TO_PASS) install); \ - else true; fi; \ - else true; fi; \ - done install-crt0: ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} @@ -190,8 +162,5 @@ info: install-info: clean-info: -Makefile: Makefile.in config.status @host_makefile_frag_path@ - $(SHELL) config.status - -config.status: configure - $(SHELL) config.status --recheck +Makefile: Makefile.in ../config.status + cd .. && $(SHELL) config.status diff --git a/libgloss/aarch64/acinclude.m4 b/libgloss/aarch64/acinclude.m4 new file mode 100644 index 0000000000..df08e871a1 --- /dev/null +++ b/libgloss/aarch64/acinclude.m4 @@ -0,0 +1,7 @@ +AARCH64_OBJTYPE= +case "${target}" in + *-*-elf) + AARCH64_OBJTYPE=elf- + ;; +esac +AC_SUBST(AARCH64_OBJTYPE) diff --git a/libgloss/aarch64/aclocal.m4 b/libgloss/aarch64/aclocal.m4 deleted file mode 100644 index 36a6b1f3af..0000000000 --- a/libgloss/aarch64/aclocal.m4 +++ /dev/null @@ -1,546 +0,0 @@ -# generated automatically by aclocal 1.15.1 -*- Autoconf -*- - -# Copyright (C) 1996-2017 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -# Copyright (C) 2011-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AR([ACT-IF-FAIL]) -# ------------------------- -# Try to determine the archiver interface, and trigger the ar-lib wrapper -# if it is needed. If the detection of archiver interface fails, run -# ACT-IF-FAIL (default is to abort configure with a proper error message). -AC_DEFUN([AM_PROG_AR], -[AC_BEFORE([$0], [LT_INIT])dnl -AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([ar-lib])dnl -AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) -: ${AR=ar} - -AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], - [AC_LANG_PUSH([C]) - am_cv_ar_interface=ar - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], - [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - ]) - AC_LANG_POP([C])]) - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - m4_default([$1], - [AC_MSG_ERROR([could not determine $AR interface])]) - ;; -esac -AC_SUBST([AR])dnl -]) - -# Figure out how to run the assembler. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AS -# ---------- -AC_DEFUN([AM_PROG_AS], -[# By default we simply use the C compiler to build assembly code. -AC_REQUIRE([AC_PROG_CC]) -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS -AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) -AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) -_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl -]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 2006-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -m4_include([../../config/depstand.m4]) -m4_include([../../config/lead-dot.m4]) -m4_include([../../config/multi.m4]) -m4_include([../../config/override.m4]) diff --git a/libgloss/aarch64/configure b/libgloss/aarch64/configure deleted file mode 100755 index 4408ef6c34..0000000000 --- a/libgloss/aarch64/configure +++ /dev/null @@ -1,4784 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="crt0.S" -ac_no_link=no -ac_subst_vars='LTLIBOBJS -LIBOBJS -multi_basedir -subdirs -host_makefile_frag_path -objtype -RANLIB -LD -ac_ct_AR -AR -am__fastdepCCAS_FALSE -am__fastdepCCAS_TRUE -CCASDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -am__leading_dot -CCASFLAGS -CCAS -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='host_makefile_frag' -ac_user_opts=' -enable_option_checking -enable_dependency_tracking -enable_multilib -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCAS -CCASFLAGS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-multilib build many library versions (default) - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - -ac_aux_dir= -for ac_dir in ../.. "$srcdir"/../..; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../.. \"$srcdir\"/../.." "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - ac_no_link=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save - -else - rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.o conftest.obj conftest.dSYM - ac_no_link=yes - # Setting cross_compile will disable run tests; it will - # also disable AC_CHECK_FILE but that's generally - # correct if we can't link. - cross_compiling=yes - EXEEXT= - # Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -# By default we simply use the C compiler to build assembly code. - -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - -depcc="$CCAS" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CCAS_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CCAS_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CCAS_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } -CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then - am__fastdepCCAS_TRUE= - am__fastdepCCAS_FALSE='#' -else - am__fastdepCCAS_TRUE='#' - am__fastdepCCAS_FALSE= -fi - - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar lib "link -lib" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar lib "link -lib" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - am_cv_ar_interface=ar - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int some_variable = 0; -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - as_fn_error $? "could not determine $AR interface" "$LINENO" 5 - ;; -esac - -LD=${LD-ld} - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - -case "${target}" in - *-*-elf) - objtype=elf- - ;; -esac - - - -host_makefile_frag=`cd $srcdir/../config;pwd`/default.mh - -host_makefile_frag_path=$host_makefile_frag - - - -# Configure cpu init plug-ins -if test -d "${srcdir}/cpu-init"; then - subdirs="${subdirs} cpu-init" - ac_config_files="$ac_config_files cpu-init/Makefile" - - -fi - -# Default to --enable-multilib -# Check whether --enable-multilib was given. -if test "${enable_multilib+set}" = set; then : - enableval=$enable_multilib; case "$enableval" in - yes) multilib=yes ;; - no) multilib=no ;; - *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; - esac -else - multilib=yes -fi - - -# We may get other options which we leave undocumented: -# --with-target-subdir, --with-multisrctop, --with-multisubdir -# See config-ml.in if you want the gory details. - -if test "$srcdir" = "."; then - if test "$with_target_subdir" != "."; then - multi_basedir="$srcdir/$with_multisrctop../../.." - else - multi_basedir="$srcdir/$with_multisrctop../.." - fi -else - multi_basedir="$srcdir/../.." -fi - - -# Even if the default multilib is not a cross compilation, -# it may be that some of the other multilibs are. -if test $cross_compiling = no && test $multilib = yes \ - && test "x${with_multisubdir}" != x ; then - cross_compiling=maybe -fi - -ac_config_commands="$ac_config_commands default-1" - - -ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -srcdir="$srcdir" -host="$host" -target="$target" -with_multisubdir="$with_multisubdir" -with_multisrctop="$with_multisrctop" -with_target_subdir="$with_target_subdir" -ac_configure_args="${multilib_arg} ${ac_configure_args}" -multi_basedir="$multi_basedir" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC" -CXX="$CXX" -GFORTRAN="$GFORTRAN" -GCJ="$GCJ" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "cpu-init/Makefile") CONFIG_FILES="$CONFIG_FILES cpu-init/Makefile" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - -if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then - ac_cs_awk_getline=: - ac_cs_awk_pipe_init= - ac_cs_awk_read_file=' - while ((getline aline < (F[key])) > 0) - print(aline) - close(F[key])' - ac_cs_awk_pipe_fini= -else - ac_cs_awk_getline=false - ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" - ac_cs_awk_read_file=' - print "|#_!!_#|" - print "cat " F[key] " &&" - '$ac_cs_awk_pipe_init - # The final `:' finishes the AND list. - ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' -fi -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - -# Create commands to substitute file output variables. -{ - echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && - echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && - echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && - echo "_ACAWK" && - echo "_ACEOF" -} >conf$$files.sh && -. ./conf$$files.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -rm -f conf$$files.sh - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - \$ac_cs_awk_pipe_init -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - if (nfields == 3 && !substed) { - key = field[2] - if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { - \$ac_cs_awk_read_file - next - } - } - print line -} -\$ac_cs_awk_pipe_fini -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | -if $ac_cs_awk_getline; then - $AWK -f "$ac_tmp/subs.awk" -else - $AWK -f "$ac_tmp/subs.awk" | $SHELL -fi \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "cpu-init/Makefile":F) ac_file=cpu-init/Makefile . ${srcdir}/../../config-ml.in - ;; - "default-1":C) -# Only add multilib support code if we just rebuilt the top-level -# Makefile. -case " $CONFIG_FILES " in - *" Makefile "*) - ac_file=Makefile . ${multi_basedir}/config-ml.in - ;; -esac ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/libgloss/aarch64/configure.ac b/libgloss/aarch64/configure.ac deleted file mode 100644 index d691f11a71..0000000000 --- a/libgloss/aarch64/configure.ac +++ /dev/null @@ -1,49 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(crt0.S) - -AC_CONFIG_AUX_DIR(../..) - -AC_CANONICAL_SYSTEM -AC_ARG_PROGRAM - -AC_PROG_INSTALL - -AC_NO_EXECUTABLES -AC_PROG_CC -AM_PROG_AS -AM_PROG_AR -LD=${LD-ld} -AC_SUBST(LD) -AC_PROG_RANLIB - -case "${target}" in - *-*-elf) - objtype=elf- - ;; -esac - -AC_SUBST(objtype) - -host_makefile_frag=`cd $srcdir/../config;pwd`/default.mh - -dnl We have to assign the same value to other variables because autoconf -dnl doesn't provide a mechanism to substitute a replacement keyword with -dnl arbitrary data or pathnames. -dnl -host_makefile_frag_path=$host_makefile_frag -AC_SUBST(host_makefile_frag_path) -AC_SUBST_FILE(host_makefile_frag) - -# Configure cpu init plug-ins -if test -d "${srcdir}/cpu-init"; then - subdirs="${subdirs} cpu-init" - AC_CONFIG_FILES([cpu-init/Makefile], [dnl - ac_file=cpu-init/Makefile . ${srcdir}/../../config-ml.in - ]) - AC_SUBST(subdirs) -fi - -AM_ENABLE_MULTILIB(, ../..) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/libgloss/aarch64/cpu-init/Makefile.in b/libgloss/aarch64/cpu-init/Makefile.in index 22648b2af9..4aef917ebe 100644 --- a/libgloss/aarch64/cpu-init/Makefile.in +++ b/libgloss/aarch64/cpu-init/Makefile.in @@ -103,8 +103,5 @@ info: install-info: clean-info: -Makefile: Makefile.in ../config.status @host_makefile_frag_path@ - $(SHELL) ../config.status --file cpu-init/Makefile - -../config.status: ../configure - $(SHELL) ../config.status --recheck +Makefile: Makefile.in ../../config.status + cd ../.. && $(SHELL) ./config.status --file aarch64/cpu-init/Makefile diff --git a/libgloss/configure b/libgloss/configure index 81ac9cc6c4..64a6a7bdab 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -602,6 +602,7 @@ MIPS_PART_SPECIFIC_OBJ MCORE_BSP_PREFIX M68K_TARGET I386_CPPFLAGS +AARCH64_OBJTYPE CPP RANLIB LD @@ -747,8 +748,7 @@ CPPFLAGS CCAS CCASFLAGS CPP' -ac_subdirs_all='aarch64 -arm' +ac_subdirs_all='arm' # Initialize some variables set by options. ac_init_help= @@ -2726,10 +2726,9 @@ target_makefile_frag=${srcdir}/config/default.mt case "${target}" in aarch64*-*-*) + ac_config_files="$ac_config_files aarch64/Makefile aarch64/cpu-init/Makefile" - -subdirs="$subdirs aarch64" - + subdirs="$subdirs aarch64 aarch64/cpu-init" config_testsuite=true ;; arc*-*-*) @@ -2933,7 +2932,9 @@ subdirs="$subdirs aarch64" subdirs="$subdirs rx" ;; arm*-*-elf | arm*-*-coff | arm*-*-*) - subdirs="$subdirs arm" + + +subdirs="$subdirs arm" ;; spu-*-elf) @@ -4833,6 +4834,14 @@ cat >>confdefs.h <<_ACEOF _ACEOF +AARCH64_OBJTYPE= +case "${target}" in + *-*-elf) + AARCH64_OBJTYPE=elf- + ;; +esac + + I386_CPPFLAGS= case "${target}" in i[3456]86-*-coff) @@ -5859,6 +5868,8 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "aarch64/Makefile") CONFIG_FILES="$CONFIG_FILES aarch64/Makefile" ;; + "aarch64/cpu-init/Makefile") CONFIG_FILES="$CONFIG_FILES aarch64/cpu-init/Makefile" ;; "arc/Makefile") CONFIG_FILES="$CONFIG_FILES arc/Makefile" ;; "csky/Makefile") CONFIG_FILES="$CONFIG_FILES csky/Makefile" ;; "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index b683ef65d1..931e3f6de4 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -36,7 +36,8 @@ target_makefile_frag=${srcdir}/config/default.mt case "${target}" in aarch64*-*-*) - AC_CONFIG_SUBDIRS(aarch64) + AC_CONFIG_FILES([aarch64/Makefile aarch64/cpu-init/Makefile]) + subdirs="$subdirs aarch64 aarch64/cpu-init" config_testsuite=true ;; arc*-*-*) @@ -330,6 +331,7 @@ dnl rm -f conftest* ]) AC_DEFINE_UNQUOTED(__SYMBOL_PREFIX, "$libc_cv_symbol_prefix", [symbol prefix]) +m4_include([aarch64/acinclude.m4]) m4_include([i386/acinclude.m4]) m4_include([libnosys/acinclude.m4]) m4_include([m68k/acinclude.m4]) From 04411f45d0d4fe09fcdcad050a9ad7c833b8af0a Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 18 Feb 2022 22:38:41 -0500 Subject: [PATCH 050/767] libgloss: merge arm configure script up a level Move the minor arm-specific logic to a dedicated variable so we can merge its configure logic up a level. --- libgloss/Makefile.in | 13 +- libgloss/arm/Makefile.in | 49 +- libgloss/arm/acinclude.m4 | 20 + libgloss/arm/aclocal.m4 | 546 ---- libgloss/arm/configure | 4813 ----------------------------- libgloss/arm/configure.ac | 72 - libgloss/arm/cpu-init/Makefile.in | 7 +- libgloss/configure | 207 +- libgloss/configure.ac | 15 +- 9 files changed, 99 insertions(+), 5643 deletions(-) create mode 100644 libgloss/arm/acinclude.m4 delete mode 100644 libgloss/arm/aclocal.m4 delete mode 100755 libgloss/arm/configure delete mode 100644 libgloss/arm/configure.ac diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 6cecbbc73e..7288c6c41f 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -158,7 +158,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ $(top_srcdir)/aarch64/acinclude.m4 \ - $(top_srcdir)/i386/acinclude.m4 \ + $(top_srcdir)/arm/acinclude.m4 $(top_srcdir)/i386/acinclude.m4 \ $(top_srcdir)/libnosys/acinclude.m4 \ $(top_srcdir)/m68k/acinclude.m4 \ $(top_srcdir)/mcore/acinclude.m4 \ @@ -183,8 +183,8 @@ CONFIG_CLEAN_FILES = aarch64/Makefile aarch64/cpu-init/Makefile \ mcore/Makefile mep/Makefile moxie/Makefile microblaze/Makefile \ mt/Makefile v850/Makefile visium/Makefile xc16x/Makefile \ xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ - rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ - pru/Makefile nios2/Makefile + rx/Makefile arm/Makefile arm/cpu-init/Makefile spu/Makefile \ + tic6x/Makefile or1k/Makefile pru/Makefile nios2/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -512,6 +512,9 @@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ +ARM_BUILD_CRT0_FALSE = @ARM_BUILD_CRT0_FALSE@ +ARM_BUILD_CRT0_TRUE = @ARM_BUILD_CRT0_TRUE@ +ARM_OBJTYPE = @ARM_OBJTYPE@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ @@ -931,6 +934,10 @@ rl78/Makefile: $(top_builddir)/config.status $(top_srcdir)/rl78/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rx/Makefile: $(top_builddir)/config.status $(top_srcdir)/rx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ +arm/Makefile: $(top_builddir)/config.status $(top_srcdir)/arm/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +arm/cpu-init/Makefile: $(top_builddir)/config.status $(top_srcdir)/arm/cpu-init/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ tic6x/Makefile: $(top_builddir)/config.status $(top_srcdir)/tic6x/Makefile.in diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in index 5dab75f750..06fae10c1f 100644 --- a/libgloss/arm/Makefile.in +++ b/libgloss/arm/Makefile.in @@ -3,6 +3,7 @@ DESTDIR = VPATH = @srcdir@ @srcdir@/.. srcdir = @srcdir@ +abs_srcdir = @abs_srcdir@ objdir = . srcroot = $(srcdir)/../.. objroot = $(objdir)/../.. @@ -17,7 +18,7 @@ bindir = @bindir@ libdir = @libdir@ tooldir = $(exec_prefix)/$(target_alias) -objtype = @objtype@ +objtype = @ARM_OBJTYPE@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -43,8 +44,6 @@ AR = @AR@ LD = @LD@ RANLIB = @RANLIB@ -SUBDIRS = @subdirs@ - OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ then echo ${objroot}/../binutils/objdump ; \ else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` @@ -52,10 +51,10 @@ OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ then echo ${objroot}/../binutils/objcopy ; \ else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` -@BUILD_CRT0_TRUE@CRT0 = crt0.o -@BUILD_CRT0_TRUE@CRT0_INSTALL = install-crt0 -@BUILD_CRT0_FALSE@CRT0 = -@BUILD_CRT0_FALSE@CRT0_INSTALL = +@ARM_BUILD_CRT0_TRUE@CRT0 = crt0.o +@ARM_BUILD_CRT0_TRUE@CRT0_INSTALL = install-crt0 +@ARM_BUILD_CRT0_FALSE@CRT0 = +@ARM_BUILD_CRT0_FALSE@CRT0_INSTALL = NANO_SCRIPTS=nano.specs NANO_INSTALL=install-nano @@ -105,15 +104,6 @@ INCLUDES += `if [ -d ${objroot}/newlib ]; then echo -I$(srcroot)/newlib/libc/mac # it to link is a good test, so we ignore all the errors for now. # all: ${CRT0} ${LINUX_CRT0} ${LINUX_BSP} ${REDBOOT_CRT0} ${REDBOOT_OBJS} ${RDPMON_CRT0} ${RDPMON_BSP} ${RDIMON_CRT0} ${RDIMON_BSP} - @rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ - for dir in .. ${SUBDIRS}; do \ - if [ x$$dir != x.. ]; then \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) $(FLAGS_TO_PASS)); \ - else true; fi; \ - else true; fi; \ - done # # here's where we build the test programs for each target @@ -199,30 +189,12 @@ librdimon-v2m.a: $(RDIMON_SEMIHV2M_OBJS) clean mostlyclean: rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP) - @rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ - for dir in .. ${SUBDIRS}; do \ - if [ x$$dir != x.. ]; then \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) $(FLAGS_TO_PASS) clean); \ - else true; fi; \ - else true; fi; \ - done distclean maintainer-clean realclean: clean - rm -f Makefile config.status *~ + rm -f Makefile *~ .PHONY: install info install-info clean-info install: ${CRT0_INSTALL} ${LINUX_INSTALL} ${REDBOOT_INSTALL} ${RDPMON_INSTALL} ${RDIMON_INSTALL} ${IQ80310_INSTALL} ${PID_INSTALL} ${NANO_INSTALL} - @rootpre=`pwd`/; export rootpre; \ - srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \ - for dir in .. ${SUBDIRS}; do \ - if [ x$$dir != x.. ]; then \ - if [ -d $$dir ]; then \ - (cd $$dir; $(MAKE) $(FLAGS_TO_PASS) install); \ - else true; fi; \ - else true; fi; \ - done install-nano: ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} @@ -267,8 +239,5 @@ info: install-info: clean-info: -Makefile: Makefile.in config.status @host_makefile_frag_path@ - $(SHELL) config.status - -config.status: configure - $(SHELL) config.status --recheck +Makefile: Makefile.in ../config.status + cd .. && $(SHELL) ./config.status diff --git a/libgloss/arm/acinclude.m4 b/libgloss/arm/acinclude.m4 new file mode 100644 index 0000000000..b34a40f9c6 --- /dev/null +++ b/libgloss/arm/acinclude.m4 @@ -0,0 +1,20 @@ +if test "x$newlib_may_supply_syscalls" = "xyes"; then + ARM_BUILD_CRT0_TRUE='#' + ARM_BUILD_CRT0_FALSE= +else + ARM_BUILD_CRT0_TRUE= + ARM_BUILD_CRT0_FALSE='#' +fi +AC_SUBST(ARM_BUILD_CRT0_TRUE) +AC_SUBST(ARM_BUILD_CRT0_FALSE) + +ARM_OBJTYPE= +case "${target}" in + *-*-elf | *-*-eabi* | *-*-tirtos*) + ARM_OBJTYPE=elf- + ;; + *-*-coff) + ARM_OBJTYPE=coff- + ;; +esac +AC_SUBST(ARM_OBJTYPE) diff --git a/libgloss/arm/aclocal.m4 b/libgloss/arm/aclocal.m4 deleted file mode 100644 index 36a6b1f3af..0000000000 --- a/libgloss/arm/aclocal.m4 +++ /dev/null @@ -1,546 +0,0 @@ -# generated automatically by aclocal 1.15.1 -*- Autoconf -*- - -# Copyright (C) 1996-2017 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -# Copyright (C) 2011-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AR([ACT-IF-FAIL]) -# ------------------------- -# Try to determine the archiver interface, and trigger the ar-lib wrapper -# if it is needed. If the detection of archiver interface fails, run -# ACT-IF-FAIL (default is to abort configure with a proper error message). -AC_DEFUN([AM_PROG_AR], -[AC_BEFORE([$0], [LT_INIT])dnl -AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([ar-lib])dnl -AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) -: ${AR=ar} - -AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], - [AC_LANG_PUSH([C]) - am_cv_ar_interface=ar - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], - [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - ]) - AC_LANG_POP([C])]) - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - m4_default([$1], - [AC_MSG_ERROR([could not determine $AR interface])]) - ;; -esac -AC_SUBST([AR])dnl -]) - -# Figure out how to run the assembler. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AS -# ---------- -AC_DEFUN([AM_PROG_AS], -[# By default we simply use the C compiler to build assembly code. -AC_REQUIRE([AC_PROG_CC]) -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS -AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) -AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) -_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl -]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 2006-2017 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -m4_include([../../config/depstand.m4]) -m4_include([../../config/lead-dot.m4]) -m4_include([../../config/multi.m4]) -m4_include([../../config/override.m4]) diff --git a/libgloss/arm/configure b/libgloss/arm/configure deleted file mode 100755 index b5ac9db2c0..0000000000 --- a/libgloss/arm/configure +++ /dev/null @@ -1,4813 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="redboot-crt0.S" -ac_no_link=no -ac_subst_vars='LTLIBOBJS -LIBOBJS -multi_basedir -subdirs -host_makefile_frag_path -objtype -RANLIB -LD -ac_ct_AR -AR -am__fastdepCCAS_FALSE -am__fastdepCCAS_TRUE -CCASDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -am__leading_dot -CCASFLAGS -CCAS -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_os -target_vendor -target_cpu -target -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -BUILD_CRT0_FALSE -BUILD_CRT0_TRUE -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='host_makefile_frag' -ac_user_opts=' -enable_option_checking -enable_newlib_supplied_syscalls -enable_dependency_tracking -enable_multilib -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CCAS -CCASFLAGS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-newlib-supplied-syscalls disable newlib from supplying syscalls - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-multilib build many library versions (default) - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - -# Check whether --enable-newlib-supplied-syscalls was given. -if test "${enable_newlib_supplied_syscalls+set}" = set; then : - enableval=$enable_newlib_supplied_syscalls; case "${enableval}" in - yes) newlib_may_supply_syscalls=yes ;; - no) newlib_may_supply_syscalls=no ;; - *) as_fn_error $? "bad value ${enableval} for newlib-supplied-syscalls option" "$LINENO" 5 ;; - esac -else - newlib_may_supply_syscalls=yes -fi - -if test "x$newlib_may_supply_syscalls" = "xyes"; then - BUILD_CRT0_TRUE='#' - BUILD_CRT0_FALSE= -else - BUILD_CRT0_TRUE= - BUILD_CRT0_FALSE='#' -fi - - - - -ac_aux_dir= -for ac_dir in ../.. "$srcdir"/../..; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../.. \"$srcdir\"/../.." "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; -esac -target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - ac_no_link=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save - -else - rm -f -r a.out a.exe b.out conftest.$ac_ext conftest.o conftest.obj conftest.dSYM - ac_no_link=yes - # Setting cross_compile will disable run tests; it will - # also disable AC_CHECK_FILE but that's generally - # correct if we can't link. - cross_compiling=yes - EXEEXT= - # Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -# By default we simply use the C compiler to build assembly code. - -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - -depcc="$CCAS" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CCAS_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CCAS_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CCAS_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } -CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then - am__fastdepCCAS_TRUE= - am__fastdepCCAS_FALSE='#' -else - am__fastdepCCAS_TRUE='#' - am__fastdepCCAS_FALSE= -fi - - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar lib "link -lib" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar lib "link -lib" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - am_cv_ar_interface=ar - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int some_variable = 0; -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - as_fn_error $? "could not determine $AR interface" "$LINENO" 5 - ;; -esac - -LD=${LD-ld} - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - -case "${target}" in - *-*-elf | *-*-eabi* | *-*-tirtos*) - objtype=elf- - ;; - *-*-coff) - objtype=coff- - ;; -esac - - - -host_makefile_frag=`cd $srcdir/../config;pwd`/default.mh - -host_makefile_frag_path=$host_makefile_frag - - - -# Configure cpu init plug-ins -if test -d "${srcdir}/cpu-init"; then - subdirs="${subdirs} cpu-init" - ac_config_files="$ac_config_files cpu-init/Makefile" - - -fi - -# Default to --enable-multilib -# Check whether --enable-multilib was given. -if test "${enable_multilib+set}" = set; then : - enableval=$enable_multilib; case "$enableval" in - yes) multilib=yes ;; - no) multilib=no ;; - *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; - esac -else - multilib=yes -fi - - -# We may get other options which we leave undocumented: -# --with-target-subdir, --with-multisrctop, --with-multisubdir -# See config-ml.in if you want the gory details. - -if test "$srcdir" = "."; then - if test "$with_target_subdir" != "."; then - multi_basedir="$srcdir/$with_multisrctop../../.." - else - multi_basedir="$srcdir/$with_multisrctop../.." - fi -else - multi_basedir="$srcdir/../.." -fi - - -# Even if the default multilib is not a cross compilation, -# it may be that some of the other multilibs are. -if test $cross_compiling = no && test $multilib = yes \ - && test "x${with_multisubdir}" != x ; then - cross_compiling=maybe -fi - -ac_config_commands="$ac_config_commands default-1" - - -ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -srcdir="$srcdir" -host="$host" -target="$target" -with_multisubdir="$with_multisubdir" -with_multisrctop="$with_multisrctop" -with_target_subdir="$with_target_subdir" -ac_configure_args="${multilib_arg} ${ac_configure_args}" -multi_basedir="$multi_basedir" -CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC" -CXX="$CXX" -GFORTRAN="$GFORTRAN" -GCJ="$GCJ" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "cpu-init/Makefile") CONFIG_FILES="$CONFIG_FILES cpu-init/Makefile" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - -if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then - ac_cs_awk_getline=: - ac_cs_awk_pipe_init= - ac_cs_awk_read_file=' - while ((getline aline < (F[key])) > 0) - print(aline) - close(F[key])' - ac_cs_awk_pipe_fini= -else - ac_cs_awk_getline=false - ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" - ac_cs_awk_read_file=' - print "|#_!!_#|" - print "cat " F[key] " &&" - '$ac_cs_awk_pipe_init - # The final `:' finishes the AND list. - ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' -fi -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - -# Create commands to substitute file output variables. -{ - echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && - echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && - echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && - echo "_ACAWK" && - echo "_ACEOF" -} >conf$$files.sh && -. ./conf$$files.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -rm -f conf$$files.sh - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - \$ac_cs_awk_pipe_init -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - if (nfields == 3 && !substed) { - key = field[2] - if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { - \$ac_cs_awk_read_file - next - } - } - print line -} -\$ac_cs_awk_pipe_fini -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | -if $ac_cs_awk_getline; then - $AWK -f "$ac_tmp/subs.awk" -else - $AWK -f "$ac_tmp/subs.awk" | $SHELL -fi \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "cpu-init/Makefile":F) ac_file=cpu-init/Makefile . ${srcdir}/../../config-ml.in - ;; - "default-1":C) -# Only add multilib support code if we just rebuilt the top-level -# Makefile. -case " $CONFIG_FILES " in - *" Makefile "*) - ac_file=Makefile . ${multi_basedir}/config-ml.in - ;; -esac ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/libgloss/arm/configure.ac b/libgloss/arm/configure.ac deleted file mode 100644 index 44f5f73962..0000000000 --- a/libgloss/arm/configure.ac +++ /dev/null @@ -1,72 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(redboot-crt0.S) - -dnl Support --disable-newlib-supplied-syscalls -AC_ARG_ENABLE(newlib-supplied-syscalls, -[ --disable-newlib-supplied-syscalls disable newlib from supplying syscalls], -[case "${enableval}" in - yes) newlib_may_supply_syscalls=yes ;; - no) newlib_may_supply_syscalls=no ;; - *) AC_MSG_ERROR(bad value ${enableval} for newlib-supplied-syscalls option) ;; - esac], [newlib_may_supply_syscalls=yes])dnl - -if test "x$newlib_may_supply_syscalls" = "xyes"; then - BUILD_CRT0_TRUE='#' - BUILD_CRT0_FALSE= -else - BUILD_CRT0_TRUE= - BUILD_CRT0_FALSE='#' -fi - -AC_SUBST(BUILD_CRT0_TRUE) -AC_SUBST(BUILD_CRT0_FALSE) - -AC_CONFIG_AUX_DIR(../..) - -AC_CANONICAL_SYSTEM -AC_ARG_PROGRAM - -AC_PROG_INSTALL - -AC_NO_EXECUTABLES -AC_PROG_CC -AM_PROG_AS -AM_PROG_AR -LD=${LD-ld} -AC_SUBST(LD) -AC_PROG_RANLIB - -case "${target}" in - *-*-elf | *-*-eabi* | *-*-tirtos*) - objtype=elf- - ;; - *-*-coff) - objtype=coff- - ;; -esac - -AC_SUBST(objtype) - -host_makefile_frag=`cd $srcdir/../config;pwd`/default.mh - -dnl We have to assign the same value to other variables because autoconf -dnl doesn't provide a mechanism to substitute a replacement keyword with -dnl arbitrary data or pathnames. -dnl -host_makefile_frag_path=$host_makefile_frag -AC_SUBST(host_makefile_frag_path) -AC_SUBST_FILE(host_makefile_frag) - -# Configure cpu init plug-ins -if test -d "${srcdir}/cpu-init"; then - subdirs="${subdirs} cpu-init" - AC_CONFIG_FILES([cpu-init/Makefile], [dnl - ac_file=cpu-init/Makefile . ${srcdir}/../../config-ml.in - ]) - AC_SUBST(subdirs) -fi - -AM_ENABLE_MULTILIB(, ../..) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/libgloss/arm/cpu-init/Makefile.in b/libgloss/arm/cpu-init/Makefile.in index 547c58daf8..49ad53818d 100644 --- a/libgloss/arm/cpu-init/Makefile.in +++ b/libgloss/arm/cpu-init/Makefile.in @@ -80,8 +80,5 @@ info: install-info: clean-info: -Makefile: Makefile.in ../config.status @host_makefile_frag_path@ - $(SHELL) ../config.status --file cpu-init/Makefile - -../config.status: ../configure - $(SHELL) ../config.status --recheck +Makefile: Makefile.in ../../config.status + cd ../.. && $(SHELL) ./config.status --file arm/cpu-init/Makefile diff --git a/libgloss/configure b/libgloss/configure index 64a6a7bdab..8de7e1f154 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -582,7 +582,6 @@ PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_no_link=no -enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS @@ -602,6 +601,9 @@ MIPS_PART_SPECIFIC_OBJ MCORE_BSP_PREFIX M68K_TARGET I386_CPPFLAGS +ARM_OBJTYPE +ARM_BUILD_CRT0_FALSE +ARM_BUILD_CRT0_TRUE AARCH64_OBJTYPE CPP RANLIB @@ -708,7 +710,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -732,6 +733,7 @@ ac_subst_files='host_makefile_frag target_makefile_frag' ac_user_opts=' enable_option_checking +enable_newlib_supplied_syscalls enable_silent_rules enable_maintainer_mode enable_dependency_tracking @@ -748,7 +750,7 @@ CPPFLAGS CCAS CCASFLAGS CPP' -ac_subdirs_all='arm' + # Initialize some variables set by options. ac_init_help= @@ -786,7 +788,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1039,15 +1040,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1185,7 +1177,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1338,7 +1330,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1378,6 +1369,7 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-newlib-supplied-syscalls disable newlib from supplying syscalls --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode @@ -1948,6 +1940,17 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +# Check whether --enable-newlib-supplied-syscalls was given. +if test "${enable_newlib_supplied_syscalls+set}" = set; then : + enableval=$enable_newlib_supplied_syscalls; case "${enableval}" in + yes) newlib_may_supply_syscalls=yes ;; + no) newlib_may_supply_syscalls=no ;; + *) as_fn_error $? "bad value ${enableval} for newlib-supplied-syscalls option" "$LINENO" 5 ;; + esac +else + newlib_may_supply_syscalls=yes +fi + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -2932,10 +2935,9 @@ case "${target}" in subdirs="$subdirs rx" ;; arm*-*-elf | arm*-*-coff | arm*-*-*) + ac_config_files="$ac_config_files arm/Makefile arm/cpu-init/Makefile" - -subdirs="$subdirs arm" - + subdirs="$subdirs arm arm/cpu-init" ;; spu-*-elf) ac_config_files="$ac_config_files spu/Makefile" @@ -2971,6 +2973,7 @@ subdirs="$subdirs arm" ;; esac + if test x$config_bfin = xtrue; then CONFIG_BFIN_TRUE= CONFIG_BFIN_FALSE='#' @@ -4842,6 +4845,27 @@ case "${target}" in esac +if test "x$newlib_may_supply_syscalls" = "xyes"; then + ARM_BUILD_CRT0_TRUE='#' + ARM_BUILD_CRT0_FALSE= +else + ARM_BUILD_CRT0_TRUE= + ARM_BUILD_CRT0_FALSE='#' +fi + + + +ARM_OBJTYPE= +case "${target}" in + *-*-elf | *-*-eabi* | *-*-tirtos*) + ARM_OBJTYPE=elf- + ;; + *-*-coff) + ARM_OBJTYPE=coff- + ;; +esac + + I386_CPPFLAGS= case "${target}" in i[3456]86-*-coff) @@ -5906,6 +5930,8 @@ do "msp430/Makefile") CONFIG_FILES="$CONFIG_FILES msp430/Makefile" ;; "rl78/Makefile") CONFIG_FILES="$CONFIG_FILES rl78/Makefile" ;; "rx/Makefile") CONFIG_FILES="$CONFIG_FILES rx/Makefile" ;; + "arm/Makefile") CONFIG_FILES="$CONFIG_FILES arm/Makefile" ;; + "arm/cpu-init/Makefile") CONFIG_FILES="$CONFIG_FILES arm/cpu-init/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; @@ -6691,151 +6717,6 @@ if test "$no_create" != yes; then # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi - -# -# CONFIG_SUBDIRS section. -# -if test "$no_recursion" != yes; then - - # Remove --cache-file, --srcdir, and --disable-option-checking arguments - # so they do not pile up. - ac_sub_configure_args= - ac_prev= - eval "set x $ac_configure_args" - shift - for ac_arg - do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case $ac_arg in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ - | --c=*) - ;; - --config-cache | -C) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - ;; - --disable-option-checking) - ;; - *) - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_sub_configure_args " '$ac_arg'" ;; - esac - done - - # Always prepend --prefix to ensure using the same prefix - # in subdir configurations. - ac_arg="--prefix=$prefix" - case $ac_arg in - *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" - - # Pass --silent - if test "$silent" = yes; then - ac_sub_configure_args="--silent $ac_sub_configure_args" - fi - - # Always prepend --disable-option-checking to silence warnings, since - # different subdirs can have different --enable and --with options. - ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" - - ac_popdir=`pwd` - for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - test -d "$srcdir/$ac_dir" || continue - - ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 - $as_echo "$ac_msg" >&6 - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - cd "$ac_dir" - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f "$ac_srcdir/configure.gnu"; then - ac_sub_configure=$ac_srcdir/configure.gnu - elif test -f "$ac_srcdir/configure"; then - ac_sub_configure=$ac_srcdir/configure - elif test -f "$ac_srcdir/configure.in"; then - # This should be Cygnus configure. - ac_sub_configure=$ac_aux_dir/configure - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 -$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - # Make the cache file name correct relative to the subdirectory. - case $cache_file in - [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; - *) # Relative name. - ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} - # The eval makes quoting arguments work. - eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ - --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 - fi - - cd "$ac_popdir" - done -fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 931e3f6de4..9906781a72 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -8,6 +8,16 @@ fi AC_CONFIG_AUX_DIR(..) +dnl Support --disable-newlib-supplied-syscalls +dnl NB: This is kept in sync with the newlib/acinclude.m4 option code. +AC_ARG_ENABLE(newlib-supplied-syscalls, +[ --disable-newlib-supplied-syscalls disable newlib from supplying syscalls], +[case "${enableval}" in + yes) newlib_may_supply_syscalls=yes ;; + no) newlib_may_supply_syscalls=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for newlib-supplied-syscalls option) ;; + esac], [newlib_may_supply_syscalls=yes])dnl + AC_PROG_INSTALL AC_CANONICAL_SYSTEM @@ -205,7 +215,8 @@ case "${target}" in subdirs="$subdirs rx" ;; arm*-*-elf | arm*-*-coff | arm*-*-*) - AC_CONFIG_SUBDIRS([arm]) + AC_CONFIG_FILES([arm/Makefile arm/cpu-init/Makefile]) + subdirs="$subdirs arm arm/cpu-init" ;; spu-*-elf) AC_CONFIG_FILES([spu/Makefile]) @@ -235,6 +246,7 @@ case "${target}" in subdirs="$subdirs nios2" ;; esac +AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! @@ -332,6 +344,7 @@ dnl AC_DEFINE_UNQUOTED(__SYMBOL_PREFIX, "$libc_cv_symbol_prefix", [symbol prefix]) m4_include([aarch64/acinclude.m4]) +m4_include([arm/acinclude.m4]) m4_include([i386/acinclude.m4]) m4_include([libnosys/acinclude.m4]) m4_include([m68k/acinclude.m4]) From d6468d6b9f7c88fccd64c13470d1cf3938fe3f17 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 14 Dec 2022 07:55:49 -0500 Subject: [PATCH 051/767] libgloss: rs6000: fix incorrect install dir for xil files The install steps were missing the multilib qualifier causing them to always install in the same location and stomp each other. --- libgloss/rs6000/Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libgloss/rs6000/Makefile.in b/libgloss/rs6000/Makefile.in index 815cbd33ba..489903645a 100644 --- a/libgloss/rs6000/Makefile.in +++ b/libgloss/rs6000/Makefile.in @@ -389,8 +389,8 @@ install-mbx: install-xil: ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${XIL_CRT0} ${XIL_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib/$$x; done - set -e; for x in ${XIL_SCRIPTS} ${XIL_SPECS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib/$$x; done + set -e; for x in ${XIL_CRT0} ${XIL_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done + set -e; for x in ${XIL_SCRIPTS} ${XIL_SPECS}; do ${INSTALL_DATA} $(srcdir)/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done doc: info: From fd3ce87f734526e1fd389c027f189a21e6e01322 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 19 Dec 2022 12:47:42 +0100 Subject: [PATCH 052/767] Cygwin: check_reparse_point_target: fix comment format Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index c044d5295e..4df389bba2 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2565,10 +2565,10 @@ check_reparse_point_target (HANDLE h, bool remote, PREPARSE_DATA_BUFFER rp, } if (rp->ReparseTag == IO_REPARSE_TAG_SYMLINK) { - /* Windows evaluates native symlink literally. If a remote symlink points - to, say, C:\foo, it will be handled as if the target is the local file - C:\foo. That comes in handy since that's how symlinks are treated under - POSIX as well. */ + /* Windows evaluates native symlink literally. If a remote symlink + points to, say, C:\foo, it will be handled as if the target is the + local file C:\foo. That comes in handy since that's how symlinks + are treated under POSIX as well. */ RtlInitCountedUnicodeString (psymbuf, (PWCHAR)((PBYTE) rp->SymbolicLinkReparseBuffer.PathBuffer + rp->SymbolicLinkReparseBuffer.SubstituteNameOffset), From a25730119cc9a2fd840295970fcbcc5676a2b9af Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 19 Dec 2022 12:46:53 +0100 Subject: [PATCH 053/767] Cygwin: use .S suffix for assembler files Automake generates different recipies for .s.o vs. .S.o rules. Signed-off-by: Corinna Vinschen --- winsup/cygwin/x86_64/{memcpy.s => memcpy.S} | 0 winsup/cygwin/x86_64/{memset.s => memset.S} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename winsup/cygwin/x86_64/{memcpy.s => memcpy.S} (100%) rename winsup/cygwin/x86_64/{memset.s => memset.S} (100%) diff --git a/winsup/cygwin/x86_64/memcpy.s b/winsup/cygwin/x86_64/memcpy.S similarity index 100% rename from winsup/cygwin/x86_64/memcpy.s rename to winsup/cygwin/x86_64/memcpy.S diff --git a/winsup/cygwin/x86_64/memset.s b/winsup/cygwin/x86_64/memset.S similarity index 100% rename from winsup/cygwin/x86_64/memset.s rename to winsup/cygwin/x86_64/memset.S From 8e83ca675f522d132ca35d847aa35f310951702e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Dec 2022 09:56:39 +0100 Subject: [PATCH 054/767] Cygwin: add local machine/asm.h header This header supports including BSD assembler sources. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/machine/asm.h | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 winsup/cygwin/local_includes/machine/asm.h diff --git a/winsup/cygwin/local_includes/machine/asm.h b/winsup/cygwin/local_includes/machine/asm.h new file mode 100644 index 0000000000..12b0285396 --- /dev/null +++ b/winsup/cygwin/local_includes/machine/asm.h @@ -0,0 +1,78 @@ +#ifndef _MACHINE_ASM_H +#define _MACHINE_ASM_H + +/* Macros for importing FreeBSD/OpenBSD/NetBSD assembler code. */ + +#ifdef __x86_64__ + +#define _ALIGN_TEXT .p2align 4,0x90 + +/* The NATIVE_ENTRY macro just adds the required gas macros. It can be + used stand-alone if the code is so short that it's better to change the + argument registeres rather than adding the code overhead. */ + +#define NATIVE_ENTRY(__sym) \ + .text ;\ + .p2align 4 ;\ + .globl __sym ;\ + .seh_proc __sym ;\ + __sym: \ + +/* The ENTRY macros cover the difference in argument passing between + MS-ABI and SysV ABI. Note especially that RSI/RDI are always saved + in the stack shadow space defined by the MS_ABI, and restored when + calling ret (see the "ret" macro below). */ + +#define __ENTRY(__sym) \ + NATIVE_ENTRY(__sym) \ + movq %rsi,8(%rsp) ;\ + movq %rdi,16(%rsp) ; + +/* ENTRY1 for functions with 1 arg */ +#define ENTRY1(__sym) \ + __ENTRY(__sym) \ + movq %rcx,%rdi ;\ + .seh_endprologue ; + +/* ENTRY2 for functions with 2 args */ +#define ENTRY2(__sym) \ + __ENTRY(__sym) \ + movq %rcx,%rdi ;\ + movq %rdx,%rsi ;\ + .seh_endprologue ; + +/* ENTRY3 for functions with 3 args */ +#define ENTRY3(__sym) \ + __ENTRY(__sym) \ + movq %rcx,%rdi ;\ + movq %rdx,%rsi ;\ + movq %r8,%rdx ;\ + .seh_endprologue ; + +/* ENTRY4 for functions with 4 args */ +#define ENTRY4(__sym) \ + __ENTRY(__sym) \ + movq %rcx,%rdi ;\ + movq %rdx,%rsi ;\ + movq %r8,%rdx ;\ + movq %r9,%rcx ;\ + .seh_endprologue ; + +#define ret \ + movq 8(%rsp),%rsi ;\ + movq 16(%rsp),%rdi ;\ + retq ;\ + +#define END(__sym) \ + .seh_endproc + +#endif /* __x86_64__ */ + +#define __FBSDID(s) \ + .ident s + +#define STRONG_ALIAS(__a,__s) \ + .globl __a ;\ + __a = __s ; + +#endif /* _MACHINE_ASM_H */ From 3830325502a64c303f9296b7f1e670022da8fa53 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Dec 2022 10:03:17 +0100 Subject: [PATCH 055/767] Cygwin: x86_64: import new memset.S from NetBSD Signed-off-by: Corinna Vinschen --- winsup/cygwin/x86_64/memset.S | 138 ++++++++++++++++++++-------------- 1 file changed, 81 insertions(+), 57 deletions(-) diff --git a/winsup/cygwin/x86_64/memset.S b/winsup/cygwin/x86_64/memset.S index ac73b6ace8..f91d134efd 100644 --- a/winsup/cygwin/x86_64/memset.S +++ b/winsup/cygwin/x86_64/memset.S @@ -1,69 +1,93 @@ -/* These functions are almost verbatim FreeBSD code (even if the header of - one file mentiones NetBSD), just wrapped in the minimum required code to - make them work under the MS AMD64 ABI. - See FreeBSD src/lib/libc/amd64/string/memset.S */ +/* $NetBSD: memset.S,v 1.5 2014/05/22 16:47:31 pooka Exp $ */ -/* - * Written by J.T. Conklin . - * Public domain. - * Adapted for NetBSD/x86_64 by - * Frank van der Linden +/*- + * Copyright (c) 2009 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by David Laight. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. */ - .globl memset - .seh_proc memset -memset: - movq %rsi,8(%rsp) - movq %rdi,16(%rsp) - .seh_endprologue - movq %rcx,%rdi - movq %rdx,%rsi - movq %r8,%rdx - - movq %rsi,%rax - andq $0xff,%rax - movq %rdx,%rcx - movq %rdi,%r11 - - cld /* set fill direction forward */ +#include - /* if the string is too short, it's really not worth the - * overhead of aligning to word boundries, etc. So we jump to - * a plain unaligned set. */ - cmpq $0x0f,%rcx - jle L1 +#if defined(LIBC_SCCS) + RCSID("$NetBSD: memset.S,v 1.5 2014/05/22 16:47:31 pooka Exp $") +#endif - movb %al,%ah /* copy char to all bytes in word */ - movl %eax,%edx - sall $16,%eax - orl %edx,%eax +#ifndef _KERNEL +/* bzero, %rdi is buffer, %rsi length */ - movl %eax,%edx - salq $32,%rax - orq %rdx,%rax +ENTRY2(bzero) + mov %rsi,%rdx /* length */ + xor %eax,%eax /* value to write */ + jmp 1f +END(bzero) +#endif - movq %rdi,%rdx /* compute misalignment */ - negq %rdx - andq $7,%rdx - movq %rcx,%r8 - subq %rdx,%r8 +/* memset, %rdi is buffer, %rsi char to fill, %rdx length */ - movq %rdx,%rcx /* set until word aligned */ - rep - stosb +ENTRY3(memset) + movzbq %sil,%rax /* byte value to fill */ + mov %rdx,%rsi /* copy of length */ + mov $0x0101010101010101,%r9 + imul %r9,%rax /* fill value in all bytes */ - movq %r8,%rcx - shrq $3,%rcx /* set by words */ - rep - stosq +1: + mov %rdi,%r9 /* Need to return buffer address */ + or %edi,%edx /* address | length */ + mov %rsi,%rcx + cmp $7,%rsi + jbe 10f /* jump if short fill */ + test $7,%dl /* check for misaligned fill */ + jnz 20f /* jump if misaligned */ - movq %r8,%rcx /* set remainder by bytes */ - andq $7,%rcx -L1: rep - stosb - movq %r11,%rax +/* Target aligned and length multiple of 8 */ +2: + shr $3,%rcx + rep stosq + mov %r9,%rax + ret - movq 8(%rsp),%rsi - movq 16(%rsp),%rdi +/* + * Short transfer, any faffing here will generate mispredicted branches. + * So we keep it simple. + */ +10: rep stosb + mov %r9,%rax ret - .seh_endproc + +/* + * Buffer or length misaligned. + * Write pattern to first and last word of buffer, then fill middle. + * (This writes to some bytes more than once - possibly three times!.) + */ +20: + mov %rax,(%rdi) + movzbq %dil,%rdx /* low address for alignment */ + mov %rax,-8(%rcx,%rdi) + and $7,%dl /* offset in word */ + sub %rdx,%rcx /* adjust length ... */ + add %rdx,%rdi /* ... and target */ + jmp 2b +END(memset) From b09617a828e8b1a372847d52673171d78b7dede1 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Dec 2022 10:09:01 +0100 Subject: [PATCH 056/767] Cygwin: x86_64: import memchr.S from NetBSD Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 5 +- winsup/cygwin/x86_64/memchr.S | 109 ++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 winsup/cygwin/x86_64/memchr.S diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 167be8149a..f63e895914 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -52,8 +52,9 @@ TEST_LIB_NAME=libcygwin0.a # These objects are included directly into the import library if TARGET_X86_64 TARGET_FILES= \ - x86_64/memcpy.s \ - x86_64/memset.s + x86_64/memchr.S \ + x86_64/memcpy.S \ + x86_64/memset.S endif LIB_FILES= \ diff --git a/winsup/cygwin/x86_64/memchr.S b/winsup/cygwin/x86_64/memchr.S new file mode 100644 index 0000000000..34fd5fe8db --- /dev/null +++ b/winsup/cygwin/x86_64/memchr.S @@ -0,0 +1,109 @@ +/* $NetBSD: memchr.S,v 1.6 2014/03/22 19:16:34 jakllsch Exp $ */ + +/*- + * Copyright (c) 2009 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by David Laight. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#if defined(LIBC_SCCS) + RCSID("$NetBSD: memchr.S,v 1.6 2014/03/22 19:16:34 jakllsch Exp $") +#endif + +/* + * The instruction sequences used try to avoid data dependencies + * between adjacent instructions (to allow parallel execution). + * The 'imul' for %r9 could be put into the delay following the + * memory read (ie inside the loop) at no obvious cost - except + * that the loop is currently exactly 32 bytes - 2 fetch blocks!. + * + * I don't think aligning any of the other branch targets is useful. + */ + +ENTRY3(memchr) + movabsq $0x0101010101010101,%r8 + lea (%rdi,%rdx),%r10 /* limit of buffer to scan */ + movzbq %sil,%rsi /* mask high bits! */ + + /* 'directpath' imuls can execute 3 at a time ... (amd) */ + imul %r8,%rsi /* search byte replicated in word */ + imul $0x80,%r8,%r9 /* 0x8080808080808080 */ + test $7,%dil + jnz 20f /* jump if misaligned */ + jmp 1f /* jump to avoid 4 nops (13 bytes) in gap */ + + _ALIGN_TEXT /* entire loop now in 32 aligned bytes */ +1: + cmpq %r10,%rdi /* end of buffer ? */ + jae 30f /* jump if so */ + + movq (%rdi),%rax /* value to check */ + addq $8,%rdi + xorq %rsi,%rax /* now looking for zeros */ +2: + mov %rax,%rcx + subq %r8,%rax /* x - 0x01 */ + not %rcx + andq %r9,%rax /* (x - 0x01) & 0x80 */ + andq %rcx,%rax /* ((x - 0x01) & 0x80) & ~x */ + je 1b /* jump if not found */ + +/* Found byte in word, get its address */ + bsf %rax,%rax + shr $3,%eax + lea -8(%rax,%rdi),%rax + cmpq %r10,%rax /* need to check not beyond buffer */ + jae 30f + rep + ret /* amd - no ret after jmp */ + +/* Input misaligned, read aligned and make low bytes invalid */ +20: + mov %dil,%cl /* misalignment amount 1..7 (+high bits )*/ + and $~7,%dil /* %rdi now start of word */ + test %rdx,%rdx /* zero length, don't read */ + jz 30f + + neg %cl /* 7..1 (+high bits) */ + mov (%rdi),%rax /* word containing first byte */ + addq $8,%rdi + and $7,%cl /* 7..1 */ + + mov %r8,%r11 /* any value with bits in each byte */ + shl $3,%cl /* 56..8 */ + xorq %rsi,%rax /* now looking for zeros */ + + /* Set low bytes non-zero */ + shr %cl,%r11 /* non-zero in unwanted bytes */ + or %r11,%rax /* low bytes now set */ + jmp 2b + +/* Not found */ +30: xorq %rax,%rax + ret +END(memchr) From 43743ed754727a0ab5bbe9b15068d3256791f011 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Dec 2022 10:13:38 +0100 Subject: [PATCH 057/767] Cygwin: x86_64: import latest NetBSD bcopy.S Tweak slightly to allow implementing entire {w}mem{p}{cpy,move} family: Add WIDE macro processing for wmem* and POST macro processing for memp* functions. Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 8 +- winsup/cygwin/x86_64/bcopy.S | 192 ++++++++++++++++++++++++++++++++ winsup/cygwin/x86_64/memcpy.S | 133 +--------------------- winsup/cygwin/x86_64/memmove.S | 4 + winsup/cygwin/x86_64/mempcpy.S | 5 + winsup/cygwin/x86_64/wmemcpy.S | 5 + winsup/cygwin/x86_64/wmemmove.S | 5 + winsup/cygwin/x86_64/wmempcpy.S | 6 + 8 files changed, 227 insertions(+), 131 deletions(-) create mode 100644 winsup/cygwin/x86_64/bcopy.S create mode 100644 winsup/cygwin/x86_64/memmove.S create mode 100644 winsup/cygwin/x86_64/mempcpy.S create mode 100644 winsup/cygwin/x86_64/wmemcpy.S create mode 100644 winsup/cygwin/x86_64/wmemmove.S create mode 100644 winsup/cygwin/x86_64/wmempcpy.S diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index f63e895914..f8c249f527 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -52,9 +52,15 @@ TEST_LIB_NAME=libcygwin0.a # These objects are included directly into the import library if TARGET_X86_64 TARGET_FILES= \ + x86_64/bcopy.S \ x86_64/memchr.S \ x86_64/memcpy.S \ - x86_64/memset.S + x86_64/memmove.S \ + x86_64/mempcpy.S \ + x86_64/memset.S \ + x86_64/wmemcpy.S \ + x86_64/wmemmove.S \ + x86_64/wmempcpy.S endif LIB_FILES= \ diff --git a/winsup/cygwin/x86_64/bcopy.S b/winsup/cygwin/x86_64/bcopy.S new file mode 100644 index 0000000000..84dba1223e --- /dev/null +++ b/winsup/cygwin/x86_64/bcopy.S @@ -0,0 +1,192 @@ +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from locore.s. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#if defined(LIBC_SCCS) + RCSID("$NetBSD: bcopy.S,v 1.5 2014/03/22 19:16:34 jakllsch Exp $") +#endif + + /* + * (ov)bcopy (src,dst,cnt) + * ws@tools.de (Wolfgang Solfrank, TooLs GmbH) +49-228-985800 + * + * Hacked about by dsl@netbsd.org + */ + +#ifdef MEMCOPY +#ifdef WIDE +#ifdef POST +ENTRY3(wmempcpy) +#else +ENTRY3(wmemcpy) +#endif +#else +#ifdef POST +ENTRY3(mempcpy) +#else +ENTRY3(memcpy) +#endif +#endif +#define NO_OVERLAP +#else +#ifdef MEMMOVE +#ifdef WIDE +ENTRY3(wmemmove) +#else +ENTRY3(memmove) +#endif +#else +ENTRY3(bcopy) +#endif +#endif +#ifdef WIDE + shlq $1,%rdx /* cnt * sizeof (wchar_t) */ +#endif + movq %rdx,%rcx +#if defined(MEMCOPY) || defined(MEMMOVE) + movq %rdi,%rax /* must return destination address */ +#ifdef POST + addq %rdx,%rax /* + n */ +#endif + mov %rdi,%r11 /* for misaligned check */ +#else + mov %rsi,%r11 /* for misaligned check */ + xchgq %rdi,%rsi /* bcopy() has arg order reversed */ +#endif + +#if !defined(NO_OVERLAP) + movq %rdi,%r8 + subq %rsi,%r8 +#endif + + shrq $3,%rcx /* count for copy by words */ + jz 8f /* j if less than 8 bytes */ + + lea -8(%rdi,%rdx),%r9 /* target address of last 8 */ + mov -8(%rsi,%rdx),%r10 /* get last word */ +#if !defined(NO_OVERLAP) + cmpq %rdx,%r8 /* overlapping? */ + jb 10f +#endif + +/* + * Non-overlaping, copy forwards. + * Newer Intel cpus (Nehalem) will do 16byte read/write transfers + * if %ecx is more than 76. + * AMD might do something similar some day. + */ + and $7,%r11 /* destination misaligned ? */ + jnz 2f + rep + movsq + mov %r10,(%r9) /* write last word */ + ret + +/* + * Destination misaligned + * AMD say it is better to align the destination (not the source). + * This will also re-align copies if the source and dest are both + * misaligned by the same amount) + * (I think Nehalem will use its accelerated copy if the source + * and destination have the same alignment.) + */ +2: + lea -9(%r11,%rdx),%rcx /* post re-alignment count */ + neg %r11 /* now -1 .. -7 */ + mov (%rsi),%rdx /* get first word */ + mov %rdi,%r8 /* target for first word */ + lea 8(%rsi,%r11),%rsi + lea 8(%rdi,%r11),%rdi + shr $3,%rcx + rep + movsq + mov %rdx,(%r8) /* write first word */ + mov %r10,(%r9) /* write last word */ + ret + +#if !defined(NO_OVERLAP) +/* Must copy backwards. + * Reverse copy is probably easy to code faster than 'rep movds' + * since that requires (IIRC) an extra clock every 3 iterations (AMD). + * However I don't suppose anything cares that much! + * The big cost is the std/cld pair - reputedly 50+ cycles on Netburst P4. + * The copy is aligned with the buffer start (more likely to + * be a multiple of 8 than the end). + */ +10: + lea -8(%rsi,%rcx,8),%rsi + lea -8(%rdi,%rcx,8),%rdi + std + rep + movsq + cld + mov %r10,(%r9) /* write last bytes */ + ret +#endif + +/* Less than 8 bytes to copy, copy by bytes */ +/* Intel Nehalem optimise 'rep movsb' for <= 7 bytes (9-15 clocks). + * For longer transfers it is 50+ ! + */ +8: mov %rdx,%rcx + +#if !defined(NO_OVERLAP) + cmpq %rdx,%r8 /* overlapping? */ + jb 81f +#endif + + /* nope, copy forwards. */ + rep + movsb + ret + +#if !defined(NO_OVERLAP) +/* Must copy backwards */ +81: + lea -1(%rsi,%rcx),%rsi + lea -1(%rdi,%rcx),%rdi + std + rep + movsb + cld + ret +#endif + +#ifdef MEMCOPY +END(memcpy) +#else +#ifdef MEMMOVE +END(memmove) +#else +END(bcopy) +#endif +#endif diff --git a/winsup/cygwin/x86_64/memcpy.S b/winsup/cygwin/x86_64/memcpy.S index 4be7a01459..a53243b5ff 100644 --- a/winsup/cygwin/x86_64/memcpy.S +++ b/winsup/cygwin/x86_64/memcpy.S @@ -1,131 +1,4 @@ -/* These functions are almost verbatim FreeBSD code (even if the header of - one file mentiones NetBSD), just wrapped in the minimum required code to - make them work under the MS AMD64 ABI. - See FreeBSD src/lib/libc/amd64/string/bcopy.S */ +/* $NetBSD: memcpy.S,v 1.1 2005/12/20 19:28:51 christos Exp $ */ -/*- - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from locore.s. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name of the University nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - */ - - .seh_proc _memcpy -_memcpy: - movq %rsi,8(%rsp) - movq %rdi,16(%rsp) - .seh_endprologue - movq %rcx,%rdi - movq %rdx,%rsi - movq %r8,%rdx - - movq %rdx,%rcx - movq %rdi,%r8 - subq %rsi,%r8 - cmpq %rcx,%r8 /* overlapping? */ - jb 1f - cld /* nope, copy forwards. */ - shrq $3,%rcx /* copy by words */ - rep movsq - movq %rdx,%rcx - andq $7,%rcx /* any bytes left? */ - rep movsb - jmp 2f -1: - addq %rcx,%rdi /* copy backwards. */ - addq %rcx,%rsi - std - andq $7,%rcx /* any fractional bytes? */ - decq %rdi - decq %rsi - rep movsb - movq %rdx,%rcx /* copy remainder by words */ - shrq $3,%rcx - subq $7,%rsi - subq $7,%rdi - rep movsq - cld -2: - movq 8(%rsp),%rsi - movq 16(%rsp),%rdi - ret - .seh_endproc - - .globl memmove - .seh_proc memmove -memmove: - .seh_endprologue - movq %rcx,%rax /* return dst */ - jmp _memcpy - .seh_endproc - - .globl memcpy - .seh_proc memcpy -memcpy: - .seh_endprologue - movq %rcx,%rax /* return dst */ - jmp _memcpy - .seh_endproc - - .globl mempcpy - .seh_proc mempcpy -mempcpy: - .seh_endprologue - movq %rcx,%rax /* return dst */ - addq %r8,%rax /* + n */ - jmp _memcpy - .seh_endproc - - .globl wmemmove - .seh_proc wmemmove -wmemmove: - .seh_endprologue - shlq $1,%r8 /* cnt * sizeof (wchar_t) */ - movq %rcx,%rax /* return dst */ - jmp _memcpy - .seh_endproc - - .globl wmemcpy - .seh_proc wmemcpy -wmemcpy: - .seh_endprologue - shlq $1,%r8 /* cnt * sizeof (wchar_t) */ - movq %rcx,%rax /* return dst */ - jmp _memcpy - .seh_endproc - - .globl wmempcpy - .seh_proc wmempcpy -wmempcpy: - .seh_endprologue - shlq $1,%r8 /* cnt * sizeof (wchar_t) */ - movq %rcx,%rax /* return dst */ - addq %r8,%rax /* + n */ - jmp _memcpy - .seh_endproc +#define MEMCOPY +#include "bcopy.S" diff --git a/winsup/cygwin/x86_64/memmove.S b/winsup/cygwin/x86_64/memmove.S new file mode 100644 index 0000000000..f4b7b08257 --- /dev/null +++ b/winsup/cygwin/x86_64/memmove.S @@ -0,0 +1,4 @@ +/* $NetBSD: memmove.S,v 1.1 2005/12/20 19:28:51 christos Exp $ */ + +#define MEMMOVE +#include "bcopy.S" diff --git a/winsup/cygwin/x86_64/mempcpy.S b/winsup/cygwin/x86_64/mempcpy.S new file mode 100644 index 0000000000..7ccb4f1d9c --- /dev/null +++ b/winsup/cygwin/x86_64/mempcpy.S @@ -0,0 +1,5 @@ +/* $NetBSD: memcpy.S,v 1.1 2005/12/20 19:28:51 christos Exp $ */ + +#define MEMCOPY +#define POST +#include "bcopy.S" diff --git a/winsup/cygwin/x86_64/wmemcpy.S b/winsup/cygwin/x86_64/wmemcpy.S new file mode 100644 index 0000000000..c998ecac58 --- /dev/null +++ b/winsup/cygwin/x86_64/wmemcpy.S @@ -0,0 +1,5 @@ +/* $NetBSD: memcpy.S,v 1.1 2005/12/20 19:28:51 christos Exp $ */ + +#define MEMCOPY +#define WIDE +#include "bcopy.S" diff --git a/winsup/cygwin/x86_64/wmemmove.S b/winsup/cygwin/x86_64/wmemmove.S new file mode 100644 index 0000000000..e7ee8efeb6 --- /dev/null +++ b/winsup/cygwin/x86_64/wmemmove.S @@ -0,0 +1,5 @@ +/* $NetBSD: memmove.S,v 1.1 2005/12/20 19:28:51 christos Exp $ */ + +#define MEMMOVE +#define WIDE +#include "bcopy.S" diff --git a/winsup/cygwin/x86_64/wmempcpy.S b/winsup/cygwin/x86_64/wmempcpy.S new file mode 100644 index 0000000000..53f4ceb2e8 --- /dev/null +++ b/winsup/cygwin/x86_64/wmempcpy.S @@ -0,0 +1,6 @@ +/* $NetBSD: memcpy.S,v 1.1 2005/12/20 19:28:51 christos Exp $ */ + +#define MEMCOPY +#define WIDE +#define POST +#include "bcopy.S" From 2af7dd95671197f43fb8c2c6d30461c143d63b03 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Dec 2022 10:19:23 +0100 Subject: [PATCH 058/767] Cygwin: x86_64: import swab.S from NetBSD Signed-off-by: Corinna Vinschen --- winsup/cygwin/Makefile.am | 1 + winsup/cygwin/x86_64/swab.S | 47 +++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 winsup/cygwin/x86_64/swab.S diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index f8c249f527..0200f6e2a4 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -58,6 +58,7 @@ TARGET_FILES= \ x86_64/memmove.S \ x86_64/mempcpy.S \ x86_64/memset.S \ + x86_64/swab.S \ x86_64/wmemcpy.S \ x86_64/wmemmove.S \ x86_64/wmempcpy.S diff --git a/winsup/cygwin/x86_64/swab.S b/winsup/cygwin/x86_64/swab.S new file mode 100644 index 0000000000..ae73d11247 --- /dev/null +++ b/winsup/cygwin/x86_64/swab.S @@ -0,0 +1,47 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#if defined(LIBC_SCCS) + RCSID("$NetBSD: swab.S,v 1.4 2014/05/22 15:01:57 uebayasi Exp $") +#endif + +#define LOAD_SWAP_STORE_WORD \ + lodsw ; \ + xchgb %al,%ah ; \ + stosw + +ENTRY3(swab) + xchgq %rdi,%rsi + cld # set direction forward + + shrq $1,%rdx + testq $7,%rdx # copy first group of 1 to 7 words + jz L2 # while swapping alternate bytes. +L1: lodsw + rorw $8,%ax + stosw + decq %rdx + testq $7,%rdx + jnz L1 + +L2: shrq $3,%rdx # copy remainder 8 words at a time + jz L4 # while swapping alternate bytes. +L3: + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + LOAD_SWAP_STORE_WORD + + decq %rdx + jnz L3 +L4: + ret +END(swab) From 87968453dda533a21a4a8dccd2c573cd16c40695 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 13 Dec 2022 22:22:20 +0000 Subject: [PATCH 059/767] Cygwin: FAQ: Mention configure options to build with reduced dependencies --- winsup/doc/faq-programming.xml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index 632d1a173d..a24b781cff 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -679,14 +679,21 @@ rewriting the runtime library in question from specs... installed; you at least need gcc-g++, make, automake, autoconf, git, perl, +cocom and patch. + + + +Additionally, building the dumper utility requires gettext-devel, libiconv-devel -zlib-devel, cocom and patch. +zlib-devel. -Building for 64-bit Cygwin also requires -mingw64-x86_64-gcc-g++ and -mingw64-x86_64-zlib. +Building those Cygwin utilities which are not themselves Cygwin programs +(e.g. cygcheck and strace) also requires +mingw64-x86_64-gcc-g++ and mingw64-x86_64-zlib. +Building these programs can be disabled with the --without-cross-bootstrap +option to configure. From 1b5fc91a1daa90fb955f57937f4590c5079dd161 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 13 Dec 2022 23:17:48 +0000 Subject: [PATCH 060/767] Cygwin: configure: Add option to disable building 'dumper' Rather than guessing, based on just the presence of libbfd, add an explicit configuration option, to build dumper or not, defaulting to building it. This might have some use when bootstrapping Cygwin for a new architecture, or when building your own Cygwin-targetted cross-compiler, rather than installing one from the copr, along with the dependencies of libbfd. --- winsup/configure.ac | 8 +++++--- winsup/doc/faq-programming.xml | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/winsup/configure.ac b/winsup/configure.ac index 9205a8886e..7a2121dae2 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -111,10 +111,12 @@ AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" != "xyes"]) AC_EXEEXT -AC_CHECK_LIB([bfd], [bfd_init], [true], - AC_MSG_WARN([Not building dumper.exe since some required libraries or headers are missing])) +AC_ARG_ENABLE([dumper], + [AS_HELP_STRING([--disable-dumper], [do not build the 'dumper' utility])], + [build_dumper=$enableval], + [build_dumper=yes]) -AM_CONDITIONAL(BUILD_DUMPER, [test "x$ac_cv_lib_bfd_bfd_init" = "xyes"]) +AM_CONDITIONAL(BUILD_DUMPER, [test "x$build_dumper" = "xyes"]) AC_CONFIG_FILES([ Makefile diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index a24b781cff..24c7f928ea 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -685,7 +685,8 @@ installed; you at least need gcc-g++, Additionally, building the dumper utility requires gettext-devel, libiconv-devel -zlib-devel. +zlib-devel. Building this program can be disabled with the +--disable-dumper option to configure. From 09cb4cd2940ff4c8b863cfa2fd2b043b8da0dca2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 21 Dec 2022 13:08:39 +0100 Subject: [PATCH 061/767] Cygwin: path_conv: make sure sym.path_flags is always initialized Commit c1023ee353705 introduced a split between mount flags and path flags. It didn't initialize symlink_info::path_flags in path_conv::check, because that's done in symlink_info::check. However, there are two code paths expecting symlink_info::path_flags being already initialized and both skip symlink_info::check. Make sure symlink_info::path_flags is initalized to 0 early in path_conv::check. Fixes: c1023ee353705 ("Cygwin: path_conv: decouple path_types from mount types") Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 2 +- winsup/cygwin/release/3.4.4 | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 winsup/cygwin/release/3.4.4 diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 4df389bba2..eaf695b818 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -718,6 +718,7 @@ path_conv::check (const char *src, unsigned opt, /* FIXME: Do we have to worry about multiple \'s here? */ component = 0; // Number of translated components sym.contents[0] = '\0'; + sym.path_flags = 0; int symlen = 0; @@ -912,7 +913,6 @@ path_conv::check (const char *src, unsigned opt, { fileattr = 0; mount_flags = sym.mount_flags; - path_flags = sym.path_flags; if (component) { error = ENOTDIR; diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 new file mode 100644 index 0000000000..6ac702375c --- /dev/null +++ b/winsup/cygwin/release/3.4.4 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +- Fix an uninitialized variable having weird side-effects in path handling. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252734.html From 4e7817498efc8ad74b7266d034abc5c4e45de44e Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 21 Dec 2022 13:29:49 +0000 Subject: [PATCH 062/767] Cygwin: Makefile: Drop all the "test dll" considerations After 90236c3a2cf6, the testsuite is failing, as the cygwin0.dll referenced by the implib that testsuite programs are linked with doesn't exist anymore. We don't need to make and link the testsuite with a specially named DLL, as the cygwin DLL (since 526b0fbca377) takes into consideration the path it's executing from to define separate "Cygwin installations", which don't interact. Fixes: 90236c3a2cf6 ("Cygwin: Makefile: build new-cygwin1.dll in a single step") --- winsup/cygwin/Makefile.am | 9 ++------- winsup/testsuite/winsup.api/winsup.exp | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 0200f6e2a4..2faa867f9f 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -43,7 +43,6 @@ DLL_NAME=cygwin1.dll NEW_DLL_NAME=new-cygwin1.dll DEF_FILE=cygwin.def LIB_NAME=libcygwin.a -TEST_LIB_NAME=libcygwin0.a # # sources @@ -618,10 +617,6 @@ LIBCOS=$(addsuffix .o,$(basename $(LIB_FILES))) $(LIB_NAME): $(DEF_FILE) $(LIBCOS) | $(NEW_DLL_NAME) $(AM_V_GEN)$(srcdir)/scripts/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ cygdll.a $(wordlist 2,99,$^) -# cygwin import library used by testsuite -$(TEST_LIB_NAME): $(LIB_NAME) - $(AM_V_GEN)perl -p -e 'BEGIN{binmode(STDIN); binmode(STDOUT);}; s/cygwin1/cygwin0/g' < $? > $@ - # sublibs # import libraries for some subset of symbols indicated by given objects speclib=\ @@ -664,7 +659,7 @@ libssp.a: $(LIB_NAME) $(wildcard $(newlib_build)/libc/ssp/*.o) # all # -all-local: $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS) +all-local: $(LIB_NAME) $(SUBLIBS) # # clean @@ -675,7 +670,7 @@ clean-local: -rm -f $(DEF_FILE) sigfe.s -rm -f cygwin.sc cygdll.a cygwin.map -rm -f $(NEW_DLL_NAME) - -rm -f $(LIB_NAME) $(TEST_LIB_NAME) $(SUBLIBS) + -rm -f $(LIB_NAME) $(SUBLIBS) -rm -f version.cc -rm -f tlsoffsets diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp index 584aa57554..f755c82d96 100644 --- a/winsup/testsuite/winsup.api/winsup.exp +++ b/winsup/testsuite/winsup.api/winsup.exp @@ -61,7 +61,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc if [ file exists "$srcdir/$subdir/$basename.exp" ] then { source "$srcdir/$subdir/$basename.exp" } else { - ws_spawn "$CC -nodefaultlibs -mwin32 $CFLAGS $src $add_includes $add_libs $runtime_root/binmode.o -lgcc $runtime_root/libcygwin0.a -lkernel32 -luser32 -o $base.exe" + ws_spawn "$CC -nodefaultlibs -mwin32 $CFLAGS $src $add_includes $add_libs $runtime_root/binmode.o -lgcc $runtime_root/libcygwin.a -lkernel32 -luser32 -o $base.exe" if { $rv } { fail "$testcase (compile)" } else { From 0a7bf8fc4c061d550bae6668a6e2cd03c67dce46 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 21 Dec 2022 22:38:57 -0500 Subject: [PATCH 063/767] remove +x bit on source files These should never be marked executable as they have no shebang and are pure source files. --- include/elf/epiphany.h | 0 include/opcode/bfin.h | 0 newlib/libc/machine/w65/lshrhi.S | 0 newlib/libc/machine/w65/sdivhi3.S | 0 newlib/libc/machine/w65/smulhi3.S | 0 newlib/libc/machine/w65/udivhi3.S | 0 newlib/libc/machine/w65/umodhi3.S | 0 newlib/libc/sys/rdos/chown.c | 0 newlib/libc/sys/rdos/fork.c | 0 newlib/libc/sys/rdos/fstat.c | 0 newlib/libc/sys/rdos/lseek.c | 0 newlib/libc/sys/rdos/open.c | 0 newlib/libc/sys/rdos/rdos.h | 0 newlib/libc/sys/rdos/readlink.c | 0 newlib/libc/sys/rdos/stat.c | 0 newlib/libc/sys/rdos/symlink.c | 0 16 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 include/elf/epiphany.h mode change 100755 => 100644 include/opcode/bfin.h mode change 100755 => 100644 newlib/libc/machine/w65/lshrhi.S mode change 100755 => 100644 newlib/libc/machine/w65/sdivhi3.S mode change 100755 => 100644 newlib/libc/machine/w65/smulhi3.S mode change 100755 => 100644 newlib/libc/machine/w65/udivhi3.S mode change 100755 => 100644 newlib/libc/machine/w65/umodhi3.S mode change 100755 => 100644 newlib/libc/sys/rdos/chown.c mode change 100755 => 100644 newlib/libc/sys/rdos/fork.c mode change 100755 => 100644 newlib/libc/sys/rdos/fstat.c mode change 100755 => 100644 newlib/libc/sys/rdos/lseek.c mode change 100755 => 100644 newlib/libc/sys/rdos/open.c mode change 100755 => 100644 newlib/libc/sys/rdos/rdos.h mode change 100755 => 100644 newlib/libc/sys/rdos/readlink.c mode change 100755 => 100644 newlib/libc/sys/rdos/stat.c mode change 100755 => 100644 newlib/libc/sys/rdos/symlink.c diff --git a/include/elf/epiphany.h b/include/elf/epiphany.h old mode 100755 new mode 100644 diff --git a/include/opcode/bfin.h b/include/opcode/bfin.h old mode 100755 new mode 100644 diff --git a/newlib/libc/machine/w65/lshrhi.S b/newlib/libc/machine/w65/lshrhi.S old mode 100755 new mode 100644 diff --git a/newlib/libc/machine/w65/sdivhi3.S b/newlib/libc/machine/w65/sdivhi3.S old mode 100755 new mode 100644 diff --git a/newlib/libc/machine/w65/smulhi3.S b/newlib/libc/machine/w65/smulhi3.S old mode 100755 new mode 100644 diff --git a/newlib/libc/machine/w65/udivhi3.S b/newlib/libc/machine/w65/udivhi3.S old mode 100755 new mode 100644 diff --git a/newlib/libc/machine/w65/umodhi3.S b/newlib/libc/machine/w65/umodhi3.S old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/chown.c b/newlib/libc/sys/rdos/chown.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/fork.c b/newlib/libc/sys/rdos/fork.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/fstat.c b/newlib/libc/sys/rdos/fstat.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/lseek.c b/newlib/libc/sys/rdos/lseek.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/open.c b/newlib/libc/sys/rdos/open.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/rdos.h b/newlib/libc/sys/rdos/rdos.h old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/readlink.c b/newlib/libc/sys/rdos/readlink.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/stat.c b/newlib/libc/sys/rdos/stat.c old mode 100755 new mode 100644 diff --git a/newlib/libc/sys/rdos/symlink.c b/newlib/libc/sys/rdos/symlink.c old mode 100755 new mode 100644 From f6e4e98d3071c8e41f50773ec3c7683fb104b3ab Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 22 Dec 2022 20:25:22 +0900 Subject: [PATCH 064/767] Cygwin: console: Fix hangup of less on quit after the window is resized. https://cygwin.com/pipermail/cygwin/2022-December/252737.html If the less is started from non-cygwin shell and window size is changed, it will hang-up when quitting. The cause of the proglem is that less uses longjump() in signal handler. If the signal handler is called while cygwin is acquiring the mutex, cygwin loses the chance to release mutex. With this patch, the mutex is released just before calling kill_pgrp() and re-acquired when kill_pgrp() returns. Reported-by: Gregory Mason Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 4 ++++ winsup/cygwin/release/3.4.4 | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index bbf4b0103b..ee07c84f88 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -928,7 +928,11 @@ fhandler_console::send_winch_maybe () if (wincap.has_con_24bit_colors () && !con_is_legacy && wincap.has_con_broken_tabs ()) fix_tab_position (get_output_handle ()); + /* longjmp() may be called in the signal handler like less, + so release input_mutex temporarily before kill_pgrp(). */ + release_input_mutex (); get_ttyp ()->kill_pgrp (SIGWINCH); + acquire_input_mutex (mutex_timeout); return true; } return false; diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 index 6ac702375c..3331b31666 100644 --- a/winsup/cygwin/release/3.4.4 +++ b/winsup/cygwin/release/3.4.4 @@ -3,3 +3,7 @@ Bug Fixes - Fix an uninitialized variable having weird side-effects in path handling. Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252734.html + +- Fix hang-up of less on quit which occurs when it is started from non-cygwin + shell and window is resized. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252737.html From 5841b2f6a4208682264d03e3edfa0a09881932a6 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 24 Nov 2022 12:45:15 +0100 Subject: [PATCH 065/767] nvptx: Implement '_exit' instead of 'exit' ... so that all of 'exit', '_exit', '_Exit' work. 'exit' thus becomes the standard 'newlib/libc/stdlib/exit.c' -- and functions registered via 'atexit' are now called at return from 'main' or manual 'exit' invocation. --- newlib/Makefile.in | 43 ++++++++++--------- newlib/libc/machine/nvptx/Makefile.inc | 3 +- newlib/libc/machine/nvptx/{exit.c => _exit.c} | 4 +- 3 files changed, 26 insertions(+), 24 deletions(-) rename newlib/libc/machine/nvptx/{exit.c => _exit.c} (96%) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index cb7b693279..2d8bfadedb 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -761,9 +761,10 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_NECV70_TRUE@am__append_105 = libc/machine/necv70/fastmath.S libc/machine/necv70/setjmp.S @HAVE_LIBC_MACHINE_NIOS2_TRUE@am__append_106 = libc/machine/nios2/setjmp.s @HAVE_LIBC_MACHINE_NVPTX_TRUE@am__append_107 = \ +@HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/_exit.c \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/calloc.c libc/machine/nvptx/callocr.c libc/machine/nvptx/malloc.c libc/machine/nvptx/mallocr.c libc/machine/nvptx/realloc.c libc/machine/nvptx/reallocr.c \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/free.c libc/machine/nvptx/write.c libc/machine/nvptx/assert.c libc/machine/nvptx/puts.c libc/machine/nvptx/putchar.c libc/machine/nvptx/printf.c libc/machine/nvptx/abort.c \ -@HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/exit.c libc/machine/nvptx/misc.c libc/machine/nvptx/clock.c +@HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/misc.c libc/machine/nvptx/clock.c @HAVE_LIBC_MACHINE_OR1K_TRUE@am__append_108 = libc/machine/or1k/setjmp.S @HAVE_LIBC_MACHINE_POWERPC_TRUE@am__append_109 = libc/machine/powerpc/setjmp.S @@ -2024,7 +2025,8 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NECV70_TRUE@am__objects_115 = libc/machine/necv70/libc_a-fastmath.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NECV70_TRUE@ libc/machine/necv70/libc_a-setjmp.$(OBJEXT) @HAVE_LIBC_MACHINE_NIOS2_TRUE@am__objects_116 = libc/machine/nios2/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__objects_117 = libc/machine/nvptx/libc_a-calloc.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__objects_117 = libc/machine/nvptx/libc_a-_exit.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-calloc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-callocr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-malloc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-mallocr.$(OBJEXT) \ @@ -2037,7 +2039,6 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-putchar.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-printf.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-abort.$(OBJEXT) \ -@HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-exit.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-misc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-clock.$(OBJEXT) @HAVE_LIBC_MACHINE_OR1K_TRUE@am__objects_118 = libc/machine/or1k/libc_a-setjmp.$(OBJEXT) @@ -8447,6 +8448,9 @@ libc/machine/nvptx/$(am__dirstamp): libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) libc/machine/nvptx/$(DEPDIR) @: > libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp) +libc/machine/nvptx/libc_a-_exit.$(OBJEXT): \ + libc/machine/nvptx/$(am__dirstamp) \ + libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp) libc/machine/nvptx/libc_a-calloc.$(OBJEXT): \ libc/machine/nvptx/$(am__dirstamp) \ libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp) @@ -8486,9 +8490,6 @@ libc/machine/nvptx/libc_a-printf.$(OBJEXT): \ libc/machine/nvptx/libc_a-abort.$(OBJEXT): \ libc/machine/nvptx/$(am__dirstamp) \ libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp) -libc/machine/nvptx/libc_a-exit.$(OBJEXT): \ - libc/machine/nvptx/$(am__dirstamp) \ - libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp) libc/machine/nvptx/libc_a-misc.$(OBJEXT): \ libc/machine/nvptx/$(am__dirstamp) \ libc/machine/nvptx/$(DEPDIR)/$(am__dirstamp) @@ -12016,12 +12017,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nds32/$(DEPDIR)/libc_a-strcpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/necv70/$(DEPDIR)/libc_a-fastmath.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/necv70/$(DEPDIR)/libc_a-setjmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-abort.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-assert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-calloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-callocr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-clock.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-free.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/nvptx/$(DEPDIR)/libc_a-mallocr.Po@am__quote@ @@ -32486,6 +32487,20 @@ libc/machine/nds32/libc_a-abort.obj: libc/machine/nds32/abort.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/nds32/libc_a-abort.obj `if test -f 'libc/machine/nds32/abort.c'; then $(CYGPATH_W) 'libc/machine/nds32/abort.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/nds32/abort.c'; fi` +libc/machine/nvptx/libc_a-_exit.o: libc/machine/nvptx/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/nvptx/libc_a-_exit.o -MD -MP -MF libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Tpo -c -o libc/machine/nvptx/libc_a-_exit.o `test -f 'libc/machine/nvptx/_exit.c' || echo '$(srcdir)/'`libc/machine/nvptx/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Tpo libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/nvptx/_exit.c' object='libc/machine/nvptx/libc_a-_exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/nvptx/libc_a-_exit.o `test -f 'libc/machine/nvptx/_exit.c' || echo '$(srcdir)/'`libc/machine/nvptx/_exit.c + +libc/machine/nvptx/libc_a-_exit.obj: libc/machine/nvptx/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/nvptx/libc_a-_exit.obj -MD -MP -MF libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Tpo -c -o libc/machine/nvptx/libc_a-_exit.obj `if test -f 'libc/machine/nvptx/_exit.c'; then $(CYGPATH_W) 'libc/machine/nvptx/_exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/nvptx/_exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Tpo libc/machine/nvptx/$(DEPDIR)/libc_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/nvptx/_exit.c' object='libc/machine/nvptx/libc_a-_exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/nvptx/libc_a-_exit.obj `if test -f 'libc/machine/nvptx/_exit.c'; then $(CYGPATH_W) 'libc/machine/nvptx/_exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/nvptx/_exit.c'; fi` + libc/machine/nvptx/libc_a-calloc.o: libc/machine/nvptx/calloc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/nvptx/libc_a-calloc.o -MD -MP -MF libc/machine/nvptx/$(DEPDIR)/libc_a-calloc.Tpo -c -o libc/machine/nvptx/libc_a-calloc.o `test -f 'libc/machine/nvptx/calloc.c' || echo '$(srcdir)/'`libc/machine/nvptx/calloc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/nvptx/$(DEPDIR)/libc_a-calloc.Tpo libc/machine/nvptx/$(DEPDIR)/libc_a-calloc.Po @@ -32668,20 +32683,6 @@ libc/machine/nvptx/libc_a-abort.obj: libc/machine/nvptx/abort.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/nvptx/libc_a-abort.obj `if test -f 'libc/machine/nvptx/abort.c'; then $(CYGPATH_W) 'libc/machine/nvptx/abort.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/nvptx/abort.c'; fi` -libc/machine/nvptx/libc_a-exit.o: libc/machine/nvptx/exit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/nvptx/libc_a-exit.o -MD -MP -MF libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Tpo -c -o libc/machine/nvptx/libc_a-exit.o `test -f 'libc/machine/nvptx/exit.c' || echo '$(srcdir)/'`libc/machine/nvptx/exit.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Tpo libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/nvptx/exit.c' object='libc/machine/nvptx/libc_a-exit.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/nvptx/libc_a-exit.o `test -f 'libc/machine/nvptx/exit.c' || echo '$(srcdir)/'`libc/machine/nvptx/exit.c - -libc/machine/nvptx/libc_a-exit.obj: libc/machine/nvptx/exit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/nvptx/libc_a-exit.obj -MD -MP -MF libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Tpo -c -o libc/machine/nvptx/libc_a-exit.obj `if test -f 'libc/machine/nvptx/exit.c'; then $(CYGPATH_W) 'libc/machine/nvptx/exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/nvptx/exit.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Tpo libc/machine/nvptx/$(DEPDIR)/libc_a-exit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/nvptx/exit.c' object='libc/machine/nvptx/libc_a-exit.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/nvptx/libc_a-exit.obj `if test -f 'libc/machine/nvptx/exit.c'; then $(CYGPATH_W) 'libc/machine/nvptx/exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/nvptx/exit.c'; fi` - libc/machine/nvptx/libc_a-misc.o: libc/machine/nvptx/misc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/nvptx/libc_a-misc.o -MD -MP -MF libc/machine/nvptx/$(DEPDIR)/libc_a-misc.Tpo -c -o libc/machine/nvptx/libc_a-misc.o `test -f 'libc/machine/nvptx/misc.c' || echo '$(srcdir)/'`libc/machine/nvptx/misc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/nvptx/$(DEPDIR)/libc_a-misc.Tpo libc/machine/nvptx/$(DEPDIR)/libc_a-misc.Po diff --git a/newlib/libc/machine/nvptx/Makefile.inc b/newlib/libc/machine/nvptx/Makefile.inc index c4c3a5cb39..9dc50dc34f 100644 --- a/newlib/libc/machine/nvptx/Makefile.inc +++ b/newlib/libc/machine/nvptx/Makefile.inc @@ -1,4 +1,5 @@ libc_a_SOURCES += \ + %D%/_exit.c \ %D%/calloc.c %D%/callocr.c %D%/malloc.c %D%/mallocr.c %D%/realloc.c %D%/reallocr.c \ %D%/free.c %D%/write.c %D%/assert.c %D%/puts.c %D%/putchar.c %D%/printf.c %D%/abort.c \ - %D%/exit.c %D%/misc.c %D%/clock.c + %D%/misc.c %D%/clock.c diff --git a/newlib/libc/machine/nvptx/exit.c b/newlib/libc/machine/nvptx/_exit.c similarity index 96% rename from newlib/libc/machine/nvptx/exit.c rename to newlib/libc/machine/nvptx/_exit.c index de82bf3847..ae434c9300 100644 --- a/newlib/libc/machine/nvptx/exit.c +++ b/newlib/libc/machine/nvptx/_exit.c @@ -13,7 +13,7 @@ * they apply. */ -#include +#include /* Sadly, PTX doesn't support weak declarations, only weak definitions. Weakly define it here in case we're not using crt0 @@ -23,7 +23,7 @@ int *__attribute((weak)) __exitval_ptr; void __attribute__((noreturn)) -exit (int status) +_exit (int status) { if (__exitval_ptr) *__exitval_ptr = status; From 25c4ad6ea52fc5451193dc98fc5ab04b1f509302 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 20 Dec 2022 20:26:36 +0900 Subject: [PATCH 066/767] Cygwin: pinfo: Align CTTY behavior to the statement of POSIX. POSIX states "A terminal may be the controlling terminal for at most one session." https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap11.html However, in cygwin, multiple sessions could be associated with the same TTY. This patch aligns CTTY behavior to the statement of POSIX. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/termios.cc | 6 ++++- winsup/cygwin/mm/cygheap.cc | 2 ++ winsup/cygwin/pinfo.cc | 38 ++++++++++++++++++------------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/winsup/cygwin/fhandler/termios.cc b/winsup/cygwin/fhandler/termios.cc index fe4dfd13ec..f94e20ff61 100644 --- a/winsup/cygwin/fhandler/termios.cc +++ b/winsup/cygwin/fhandler/termios.cc @@ -737,7 +737,11 @@ fhandler_termios::ioctl (int cmd, void *varg) } myself->ctty = -1; - myself->set_ctty (this, 0); + if (!myself->set_ctty (this, 0)) + { + set_errno (EPERM); + return -1; + } return 0; } diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index a305570dfa..72861d8d70 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -127,6 +127,8 @@ void init_cygheap::close_ctty () { debug_printf ("closing cygheap->ctty %p", cygheap->ctty); + if (cygheap->ctty->tc ()->getsid () == pid) + cygheap->ctty->tc ()->setsid (0); /* Release CTTY ownership */ cygheap->ctty->close_with_arch (); cygheap->ctty = NULL; } diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index e086ab9a84..586a4204d1 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -530,24 +530,30 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) debug_printf ("old %s, ctty device number %y, tc.ntty device number %y flags & O_NOCTTY %y", __ctty (), ctty, tc.ntty, flags & O_NOCTTY); if (fh && (ctty <= 0 || ctty == tc.ntty) && !(flags & O_NOCTTY)) { - ctty = tc.ntty; - if (cygheap->ctty != fh->archetype) + if (tc.getsid () && tc.getsid () != sid) + ; /* Do nothing if another session is associated with the TTY. */ + else { - debug_printf ("cygheap->ctty %p, archetype %p", cygheap->ctty, fh->archetype); - if (!cygheap->ctty) - syscall_printf ("ctty was NULL"); - else - { - syscall_printf ("ctty %p, usecount %d", cygheap->ctty, - cygheap->ctty->archetype_usecount (0)); - cygheap->ctty->close (); - } - cygheap->ctty = (fhandler_termios *) fh->archetype; - if (cygheap->ctty) + ctty = tc.ntty; + if (cygheap->ctty != fh->archetype) { - fh->archetype_usecount (1); - /* guard ctty fh */ - report_tty_counts (cygheap->ctty, "ctty", ""); + debug_printf ("cygheap->ctty %p, archetype %p", + cygheap->ctty, fh->archetype); + if (!cygheap->ctty) + syscall_printf ("ctty was NULL"); + else + { + syscall_printf ("ctty %p, usecount %d", cygheap->ctty, + cygheap->ctty->archetype_usecount (0)); + cygheap->ctty->close (); + } + cygheap->ctty = (fhandler_termios *) fh->archetype; + if (cygheap->ctty) + { + fh->archetype_usecount (1); + /* guard ctty fh */ + report_tty_counts (cygheap->ctty, "ctty", ""); + } } } From 043b6089e2006dcde31811e35a5de6619a0e0098 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 21 Dec 2022 10:06:10 +0900 Subject: [PATCH 067/767] Cygwin: devices: Make generic console devices invisible from pty. The devices /dev/conin,conout,console were wrongly visible from ptys, though they are inaccessible. This is because fhandler_console::exists() returns true due to existing invisible console. This patch makes these devices invisible from ptys. Signed-off-by: Takashi Yano --- winsup/cygwin/devices.cc | 5 ++++- winsup/cygwin/devices.in | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index a0762f292c..9f6e80acbb 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -9,6 +9,8 @@ #include "path.h" #include "fhandler.h" #include "ntdll.h" +#include "dtable.h" +#include "cygheap.h" typedef const _device *KR_device_t; @@ -76,7 +78,8 @@ exists_console (const device& dev) case FH_CONSOLE: case FH_CONIN: case FH_CONOUT: - return fhandler_console::exists (); + return cygheap && cygheap->ctty && cygheap->ctty->is_console () + && fhandler_console::exists (); default: /* Only show my own console device (for now?) */ return iscons_dev (myself->ctty) && myself->ctty == devn; diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 7506dfe9cb..48199f46cd 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -8,6 +8,8 @@ #include "path.h" #include "fhandler.h" #include "ntdll.h" +#include "dtable.h" +#include "cygheap.h" typedef const _device *KR_device_t; } @@ -72,7 +74,8 @@ exists_console (const device& dev) case FH_CONSOLE: case FH_CONIN: case FH_CONOUT: - return fhandler_console::exists (); + return cygheap && cygheap->ctty && cygheap->ctty->is_console () + && fhandler_console::exists (); default: /* Only show my own console device (for now?) */ return iscons_dev (myself->ctty) && myself->ctty == devn; From 3721a756b0d8067cf070e2aedcf3ea5e32e47270 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 22 Dec 2022 21:05:31 +0900 Subject: [PATCH 068/767] Cygwin: console: Make the console accessible from other terminals. Previously, the console device could not be accessed from other terminals. Due to this limitation, GNU screen and tmux cannot be opened in console. With this patch, console device can be accessed from other TTYs, such as other consoles or ptys. Thanks to this patch, screen and tmux get working in console. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/devices.cc | 24 +- winsup/cygwin/devices.in | 24 +- winsup/cygwin/fhandler/console.cc | 474 ++++++++++++++++++------ winsup/cygwin/fhandler/pty.cc | 4 +- winsup/cygwin/local_includes/fhandler.h | 27 +- winsup/cygwin/local_includes/winsup.h | 1 - winsup/cygwin/select.cc | 2 + 7 files changed, 418 insertions(+), 138 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 9f6e80acbb..747dcc8c6c 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -69,6 +69,21 @@ exists_ntdev_silent (const device& dev) return exists_ntdev (dev) ? -1 : false; } +static BOOL CALLBACK +enum_cons_dev (HWND hw, LPARAM lp) +{ + unsigned long *bitmask = (unsigned long *) lp; + HANDLE h = NULL; + fhandler_console::console_state *cs; + if ((cs = fhandler_console::open_shared_console (hw, h))) + { + *bitmask |= (1UL << cs->tty_min_state.getntty ()); + UnmapViewOfFile ((void *) cs); + CloseHandle (h); + } + return TRUE; +} + static int exists_console (const device& dev) { @@ -81,8 +96,13 @@ exists_console (const device& dev) return cygheap && cygheap->ctty && cygheap->ctty->is_console () && fhandler_console::exists (); default: - /* Only show my own console device (for now?) */ - return iscons_dev (myself->ctty) && myself->ctty == devn; + if (dev.get_minor () < MAX_CONS_DEV) + { + unsigned long bitmask = 0; + EnumWindows (enum_cons_dev, (LPARAM) &bitmask); + return bitmask & (1UL << dev.get_minor ()); + } + return false; } } diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 48199f46cd..a467cb593c 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -65,6 +65,21 @@ exists_ntdev_silent (const device& dev) return exists_ntdev (dev) ? -1 : false; } +static BOOL CALLBACK +enum_cons_dev (HWND hw, LPARAM lp) +{ + unsigned long *bitmask = (unsigned long *) lp; + HANDLE h = NULL; + fhandler_console::console_state *cs; + if ((cs = fhandler_console::open_shared_console (hw, h))) + { + *bitmask |= (1UL << cs->tty_min_state.getntty ()); + UnmapViewOfFile ((void *) cs); + CloseHandle (h); + } + return TRUE; +} + static int exists_console (const device& dev) { @@ -77,8 +92,13 @@ exists_console (const device& dev) return cygheap && cygheap->ctty && cygheap->ctty->is_console () && fhandler_console::exists (); default: - /* Only show my own console device (for now?) */ - return iscons_dev (myself->ctty) && myself->ctty == devn; + if (dev.get_minor () < MAX_CONS_DEV) + { + unsigned long bitmask = 0; + EnumWindows (enum_cons_dev, (LPARAM) &bitmask); + return bitmask & (1UL << dev.get_minor ()); + } + return false; } } diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index ee07c84f88..ee392fda25 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -41,19 +41,20 @@ details. */ #define ALT_PRESSED (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED) #define CTRL_PRESSED (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED) -#define con (shared_console_info->con) +#define con (shared_console_info[unit]->con) #define srTop (con.b.srWindow.Top + con.scroll_region.Top) #define srBottom ((con.scroll_region.Bottom < 0) ? \ con.b.srWindow.Bottom : \ con.b.srWindow.Top + con.scroll_region.Bottom) -#define con_is_legacy (shared_console_info && con.is_legacy) +#define con_is_legacy (shared_console_info[unit] && con.is_legacy) #define CONS_THREAD_SYNC "cygcons.thread_sync" static bool NO_COPY master_thread_started = false; const unsigned fhandler_console::MAX_WRITE_CHARS = 16384; -fhandler_console::console_state NO_COPY *fhandler_console::shared_console_info; +fhandler_console::console_state NO_COPY + *fhandler_console::shared_console_info[MAX_CONS_DEV + 1]; bool NO_COPY fhandler_console::invisible_console; @@ -65,6 +66,56 @@ static struct fhandler_base::rabuf_t con_ra; in xterm compatible mode */ static wchar_t last_char; +DWORD +fhandler_console::attach_console (pid_t owner, bool *err) +{ + DWORD resume_pid = (DWORD) -1; + pinfo p (owner); + if (p) + { + DWORD attached = + fhandler_pty_common::get_console_process_id (p->dwProcessId, + true, false, false); + if (!attached) + { + resume_pid = + fhandler_pty_common::get_console_process_id (myself->dwProcessId, + false, false, false); + FreeConsole (); + BOOL r = AttachConsole (p->dwProcessId); + if (!r) + { + if (resume_pid) + AttachConsole (resume_pid); + if (err) + *err = true; + return (DWORD) -1; + } + } + } + return resume_pid; +} + +void +fhandler_console::detach_console (DWORD resume_pid, pid_t owner) +{ + if (resume_pid == (DWORD) -1) + return; + if (resume_pid) + { + FreeConsole (); + AttachConsole (resume_pid); + } + else if (myself->pid != owner) + FreeConsole (); +} + +pid_t +fhandler_console::get_owner () +{ + return con.owner; +} + /* simple helper class to accumulate output in a buffer and send that to the console on request: */ static class write_pending_buffer @@ -73,21 +124,19 @@ static class write_pending_buffer static const size_t WPBUF_LEN = 256u; char buf[WPBUF_LEN]; size_t ixput; - HANDLE output_handle; public: - void init (HANDLE &handle) + void init () { - output_handle = handle; empty (); } - inline void put (char x) + inline void put (HANDLE output_handle, pid_t owner, char x) { if (ixput == WPBUF_LEN) - send (); + send (output_handle, owner); buf[ixput++] = x; } inline void empty () { ixput = 0u; } - inline void send () + inline void send (HANDLE output_handle, pid_t owner) { if (!output_handle) { @@ -125,11 +174,25 @@ static class write_pending_buffer } } acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); WriteConsoleW (output_handle, bufw, len, NULL, 0); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); } } wpbuf; +void +fhandler_console::wpbuf_put (char c) +{ + wpbuf.put (get_output_handle (), con.owner, c); +} + +void +fhandler_console::wpbuf_send () +{ + wpbuf.send (get_output_handle (), con.owner); +} + static void beep () { @@ -155,7 +218,7 @@ fhandler_console::open_shared_console (HWND hw, HANDLE& h, bool& create) shared_locations m = create ? SH_SHARED_CONSOLE : SH_JUSTOPEN; console_state *res = (console_state *) - open_shared (namebuf, 0, h, sizeof (*shared_console_info), &m); + open_shared (namebuf, 0, h, sizeof (console_state), &m); create = m != SH_JUSTOPEN; return res; } @@ -182,7 +245,7 @@ enum_windows (HWND hw, LPARAM lp) fhandler_console::console_state *cs; if ((cs = fhandler_console::open_shared_console (hw, h))) { - this1->bitmask ^= 1 << cs->tty_min_state.getntty (); + this1->bitmask ^= 1UL << cs->tty_min_state.getntty (); UnmapViewOfFile ((void *) cs); CloseHandle (h); } @@ -190,12 +253,12 @@ enum_windows (HWND hw, LPARAM lp) } console_unit::console_unit (HWND me0): - bitmask (0xffffffff), me (me0) + bitmask (~0UL), me (me0) { EnumWindows (enum_windows, (LPARAM) this); n = (_minor_t) ffs (bitmask) - 1; if (n < 0) - api_fatal ("console device allocation failure - too many consoles in use, max consoles is 32"); + api_fatal ("console device allocation failure - too many consoles in use, max consoles is 64"); } static DWORD @@ -286,6 +349,7 @@ inrec_eq (const INPUT_RECORD *a, const INPUT_RECORD *b, DWORD n) void fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) { + const _minor_t unit = p->unit; const int additional_space = 128; /* Possible max number of incoming events during the process. Additional space should be left for writeback fix. */ @@ -436,7 +500,7 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) con.scroll_region.Bottom = -1; if (wincap.has_con_24bit_colors () && !con_is_legacy && wincap.has_con_broken_tabs ()) - fix_tab_position (p->output_handle); + fix_tab_position (p->output_handle, con.owner); ttyp->kill_pgrp (SIGWINCH); } processed = true; @@ -562,49 +626,95 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) free (input_tmp); } +struct scan_console_args_t +{ + _minor_t unit; + fhandler_console::console_state **shared_console_info; +}; + +BOOL CALLBACK +scan_console (HWND hw, LPARAM lp) +{ + scan_console_args_t *p = (scan_console_args_t *) lp; + HANDLE h = NULL; + fhandler_console::console_state *cs; + if ((cs = fhandler_console::open_shared_console (hw, h))) + { + if (p->unit == minor (cs->tty_min_state.getntty ())) + { + *p->shared_console_info = cs; + CloseHandle (h); + return TRUE; + } + UnmapViewOfFile ((void *) cs); + CloseHandle (h); + } + return TRUE; +} + bool fhandler_console::set_unit () { - bool created; + bool created = false; fh_devices devset; lock_ttys here; HWND me; fh_devices this_unit = dev (); - bool generic_console = this_unit == FH_CONIN || this_unit == FH_CONOUT; - if (shared_console_info) - { - fh_devices shared_unit = - (fh_devices) shared_console_info->tty_min_state.getntty (); - devset = (shared_unit == this_unit || this_unit == FH_CONSOLE - || generic_console - || this_unit == FH_TTY) ? - shared_unit : FH_ERROR; - created = false; - } - else if ((!generic_console && - (myself->ctty != -1 && !iscons_dev (myself->ctty))) - || !(me = GetConsoleWindow ())) + bool generic_console = + this_unit == FH_CONSOLE || this_unit == FH_CONIN || this_unit == FH_CONOUT; + if (!generic_console && this_unit != FH_TTY) + unit = get_minor (); + else if (myself->ctty != -1) + unit = device::minor (myself->ctty); + + if (shared_console_info[unit]) + ; /* Do nothing */ + else if (generic_console && myself->ctty != -1 && !iscons_dev (myself->ctty)) devset = FH_ERROR; else { - created = true; - shared_console_info = - open_shared_console (me, cygheap->console_h, created); - ProtectHandleINH (cygheap->console_h); - if (created) - shared_console_info-> - tty_min_state.setntty (DEV_CONS_MAJOR, console_unit (me)); - devset = (fh_devices) shared_console_info->tty_min_state.getntty (); - if (created) - con.owner = myself->pid; + if (!generic_console && (dev_t) myself->ctty != get_device ()) + { + /* Scan for existing shared console info */ + scan_console_args_t arg = { unit, &shared_console_info[unit] }; + EnumWindows (scan_console, (LPARAM) &arg); + } + if (generic_console || !shared_console_info[unit]) + { + me = GetConsoleWindow (); + if (!me) + devset = FH_ERROR; + else + { + created = true; + fhandler_console::console_state *cs = + open_shared_console (me, cygheap->console_h, created); + ProtectHandleINH (cygheap->console_h); + if (created) + { + unit = console_unit (me); + cs->tty_min_state.setntty (DEV_CONS_MAJOR, unit); + } + else + unit = device::minor (cs->tty_min_state.ntty); + shared_console_info[unit] = cs; + if (created) + con.owner = myself->pid; + } + } } - if (!created && shared_console_info) + if (shared_console_info[unit]) { - while (con.owner > MAX_PID) - Sleep (1); - pinfo p (con.owner); - if (!p) - con.owner = myself->pid; + devset = (fh_devices) shared_console_info[unit]->tty_min_state.getntty (); + _tc = &(shared_console_info[unit]->tty_min_state); + if (!created) + { + while (con.owner > MAX_PID) + Sleep (1); + pinfo p (con.owner); + if (!p) + con.owner = myself->pid; + } } dev ().parse (devset); @@ -651,7 +761,7 @@ fhandler_console::setup () con.set_default_attr (); con.backspace_keycode = CERASE; con.cons_rapoi = NULL; - shared_console_info->tty_min_state.is_console = true; + shared_console_info[unit]->tty_min_state.is_console = true; con.cursor_key_app_mode = false; con.disable_master_thread = true; con.master_thread_suspended = false; @@ -695,9 +805,11 @@ void fhandler_console::set_input_mode (tty::cons_mode m, const termios *t, const handle_set_t *p) { + const _minor_t unit = p->unit; DWORD oflags; WaitForSingleObject (p->input_mutex, mutex_timeout); acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); GetConsoleMode (p->input_handle, &oflags); DWORD flags = oflags & (ENABLE_EXTENDED_FLAGS | ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE); @@ -736,6 +848,7 @@ fhandler_console::set_input_mode (tty::cons_mode m, const termios *t, set_output_mode (tty::cygwin, t, p); WriteConsoleW (p->output_handle, L"\033[?1h", 5, NULL, 0); } + detach_console (resume_pid, con.owner); release_attach_mutex (); ReleaseMutex (p->input_mutex); } @@ -744,6 +857,7 @@ void fhandler_console::set_output_mode (tty::cons_mode m, const termios *t, const handle_set_t *p) { + const _minor_t unit = p->unit; DWORD flags = ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT; if (con.orig_virtual_terminal_processing_mode) flags |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; @@ -763,7 +877,9 @@ fhandler_console::set_output_mode (tty::cons_mode m, const termios *t, break; } acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); SetConsoleMode (p->output_handle, flags); + detach_console (resume_pid, con.owner); release_attach_mutex (); ReleaseMutex (p->output_mutex); } @@ -786,9 +902,10 @@ fhandler_console::setup_for_non_cygwin_app () void fhandler_console::cleanup_for_non_cygwin_app (handle_set_t *p) { + const _minor_t unit = p->unit; termios dummy = {0, }; - termios *ti = - shared_console_info ? &(shared_console_info->tty_min_state.ti) : &dummy; + termios *ti = shared_console_info[unit] ? + &(shared_console_info[unit]->tty_min_state.ti) : &dummy; /* Cleaning-up console mode for non-cygwin app. */ /* conmode can be tty::restore when non-cygwin app is exec'ed from login shell. */ @@ -805,11 +922,12 @@ tty_min * tty_list::get_cttyp () { dev_t n = myself->ctty; + const _minor_t unit = device::minor (n); if (iscons_dev (n)) - return fhandler_console::shared_console_info ? - &fhandler_console::shared_console_info->tty_min_state : NULL; + return fhandler_console::shared_console_info[unit] ? + &fhandler_console::shared_console_info[unit]->tty_min_state : NULL; else if (istty_slave_dev (n)) - return &ttys[device::minor (n)]; + return &ttys[unit]; else return NULL; } @@ -851,6 +969,10 @@ fhandler_console::setup_io_mutex (void) } if (res == WAIT_OBJECT_0) release_output_mutex (); + + extern HANDLE attach_mutex; + if (!attach_mutex) + attach_mutex = CreateMutex (&sec_none_nih, FALSE, NULL); } inline DWORD @@ -893,7 +1015,9 @@ fhandler_console::set_cursor_maybe () con.dwLastCursorPosition.Y != con.b.dwCursorPosition.Y) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); SetConsoleCursorPosition (get_output_handle (), con.b.dwCursorPosition); + detach_console (resume_pid, con.owner); release_attach_mutex (); con.dwLastCursorPosition = con.b.dwCursorPosition; } @@ -902,15 +1026,17 @@ fhandler_console::set_cursor_maybe () /* Workaround for a bug of windows xterm compatible mode. */ /* The horizontal tab positions are broken after resize. */ void -fhandler_console::fix_tab_position (HANDLE h) +fhandler_console::fix_tab_position (HANDLE h, pid_t owner) { /* Re-setting ENABLE_VIRTUAL_TERMINAL_PROCESSING fixes the tab position. */ DWORD mode; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (owner); GetConsoleMode (h, &mode); SetConsoleMode (h, mode & ~ENABLE_VIRTUAL_TERMINAL_PROCESSING); SetConsoleMode (h, mode); + detach_console (resume_pid, owner); release_attach_mutex (); } @@ -927,7 +1053,7 @@ fhandler_console::send_winch_maybe () con.scroll_region.Bottom = -1; if (wincap.has_con_24bit_colors () && !con_is_legacy && wincap.has_con_broken_tabs ()) - fix_tab_position (get_output_handle ()); + fix_tab_position (get_output_handle (), con.owner); /* longjmp() may be called in the signal handler like less, so release input_mutex temporarily before kill_pgrp(). */ release_input_mutex (); @@ -949,7 +1075,9 @@ fhandler_console::mouse_aware (MOUSE_EVENT_RECORD& mouse_event) and remember adjusted position in state for use by read() */ CONSOLE_SCREEN_BUFFER_INFO now; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); BOOL r = GetConsoleScreenBufferInfo (get_output_handle (), &now); + detach_console (resume_pid, con.owner); release_attach_mutex (); if (!r) /* Cannot adjust position by window scroll buffer offset */ @@ -1028,7 +1156,9 @@ fhandler_console::read (void *pv, size_t& buflen) { /* Confirm the handle is still valid */ DWORD mode; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); BOOL res = GetConsoleMode (get_handle (), &mode); + detach_console (resume_pid, con.owner); release_attach_mutex (); if (res) goto wait_retry; @@ -1098,7 +1228,7 @@ fhandler_console::process_input_message (void) { char tmp[60]; - if (!shared_console_info) + if (!shared_console_info[unit]) return input_error; termios *ti = &(get_ttyp ()->ti); @@ -1108,8 +1238,10 @@ fhandler_console::process_input_message (void) INPUT_RECORD input_rec[INREC_SIZE]; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); BOOL r = PeekConsoleInputW (get_handle (), input_rec, INREC_SIZE, &total_read); + detach_console (resume_pid, con.owner); release_attach_mutex (); if (!r) { @@ -1498,7 +1630,9 @@ fhandler_console::process_input_message (void) { DWORD discarded; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); ReadConsoleInputW (get_handle (), input_rec, discard_len, &discarded); + detach_console (resume_pid, con.owner); release_attach_mutex (); con.num_processed -= min (con.num_processed, discarded); } @@ -1509,7 +1643,9 @@ bool dev_console::fillin (HANDLE h) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); bool ret = GetConsoleScreenBufferInfo (h, &b); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); if (ret) @@ -1564,7 +1700,9 @@ dev_console::scroll_buffer (HANDLE h, int x1, int y1, int x2, int y2, dest.X = xn >= 0 ? xn : dwWinSize.X - 1; dest.Y = yn >= 0 ? yn : b.srWindow.Bottom; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); ScrollConsoleScreenBufferW (h, &sr1, &sr2, dest, &fill); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); } @@ -1616,9 +1754,17 @@ fhandler_console::open (int flags, mode_t) set_output_handle (NULL); /* Open the input handle as handle_ */ + bool err = false; + DWORD resume_pid = attach_console (con.owner, &err); + if (err) + { + set_errno (EACCES); + return 0; + } h = CreateFileW (L"CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &sec_none, OPEN_EXISTING, 0, 0); + detach_console (resume_pid, con.owner); if (h == INVALID_HANDLE_VALUE) { @@ -1628,9 +1774,16 @@ fhandler_console::open (int flags, mode_t) set_handle (h); handle_set.input_handle = h; + resume_pid = attach_console (con.owner, &err); + if (err) + { + set_errno (EACCES); + return 0; + } h = CreateFileW (L"CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &sec_none, OPEN_EXISTING, 0, 0); + detach_console (resume_pid, con.owner); if (h == INVALID_HANDLE_VALUE) { @@ -1639,12 +1792,14 @@ fhandler_console::open (int flags, mode_t) } set_output_handle (h); handle_set.output_handle = h; - wpbuf.init (get_output_handle ()); + wpbuf.init (); setup_io_mutex (); handle_set.input_mutex = input_mutex; handle_set.output_mutex = output_mutex; + handle_set.unit = unit; + if (con.fillin (get_output_handle ())) { con.current_win32_attr = con.b.wAttributes; @@ -1661,6 +1816,7 @@ fhandler_console::open (int flags, mode_t) DWORD dwMode; /* Check xterm compatible mode in output */ acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); GetConsoleMode (get_output_handle (), &dwMode); con.orig_virtual_terminal_processing_mode = !!(dwMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING); @@ -1674,6 +1830,7 @@ fhandler_console::open (int flags, mode_t) dwMode | ENABLE_VIRTUAL_TERMINAL_INPUT)) is_legacy = true; SetConsoleMode (get_handle (), dwMode); + detach_console (resume_pid, con.owner); release_attach_mutex (); con.is_legacy = is_legacy; extern int sawTERM; @@ -1729,14 +1886,15 @@ fhandler_console::close () acquire_output_mutex (mutex_timeout); - if (shared_console_info) + if (shared_console_info[unit]) { /* Restore console mode if this is the last closure. */ OBJECT_BASIC_INFORMATION obi; NTSTATUS status; status = NtQueryObject (get_handle (), ObjectBasicInformation, &obi, sizeof obi, NULL); - if ((NT_SUCCESS (status) && obi.HandleCount == 1) + if ((NT_SUCCESS (status) && obi.HandleCount == 1 + && (dev_t) myself->ctty == get_device ()) || myself->pid == con.owner) { /* Cleaning-up console mode for cygwin apps. */ @@ -1748,7 +1906,7 @@ fhandler_console::close () release_output_mutex (); - if (shared_console_info && con.owner == myself->pid + if (shared_console_info[unit] && con.owner == myself->pid && master_thread_started) { char name[MAX_PATH]; @@ -1770,9 +1928,16 @@ fhandler_console::close () if (con_ra.rabuf) free (con_ra.rabuf); + memset (&con_ra, 0, sizeof (con_ra)); - if (!have_execed && !invisible_console) + if (!have_execed && !invisible_console + && (myself->ctty <= 0 || get_device () == (dev_t) myself->ctty)) free_console (); + + if (shared_console_info[unit]) + UnmapViewOfFile ((void *) shared_console_info[unit]); + shared_console_info[unit] = NULL; + return 0; } @@ -1847,7 +2012,9 @@ fhandler_console::ioctl (unsigned int cmd, void *arg) int ret = 0; INPUT_RECORD inp[INREC_SIZE]; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); BOOL r = PeekConsoleInputW (get_handle (), inp, INREC_SIZE, &n); + detach_console (resume_pid, con.owner); release_attach_mutex (); if (!r) { @@ -1906,7 +2073,9 @@ fhandler_console::tcflush (int queue) || queue == TCIOFLUSH) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); BOOL r = FlushConsoleInputBuffer (get_handle ()); + detach_console (resume_pid, con.owner); release_attach_mutex (); if (!r) { @@ -1933,15 +2102,14 @@ fhandler_console::tcgetattr (struct termios *t) return 0; } -fhandler_console::fhandler_console (fh_devices unit) : +fhandler_console::fhandler_console (fh_devices devunit) : fhandler_termios (), input_ready (false), thread_sync_event (NULL), - input_mutex (NULL), output_mutex (NULL) + input_mutex (NULL), output_mutex (NULL), unit (MAX_CONS_DEV) { - if (unit > 0) - dev ().parse (unit); + if (devunit > 0) + dev ().parse (devunit); setup (); trunc_buf.len = 0; - _tc = &(shared_console_info->tty_min_state); } void @@ -1982,7 +2150,9 @@ dev_console::set_color (HANDLE h) if (h) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); SetConsoleTextAttribute (h, current_win32_attr); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); } } @@ -2039,6 +2209,7 @@ dev_console::scroll_window (HANDLE h, int x1, int y1, int x2, int y2) sr.Left = sr.Right = dwEnd.X = 0; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); if (b.srWindow.Bottom + toscroll >= b.dwSize.Y) { /* So we're at the end of the buffer and scrolling the console window @@ -2093,6 +2264,7 @@ dev_console::scroll_window (HANDLE h, int x1, int y1, int x2, int y2) /* Eventually set cursor to new end position at the top of the window. */ dwEnd.Y++; SetConsoleCursorPosition (h, dwEnd); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); /* Fix up console buffer info. */ fillin (h); @@ -2151,8 +2323,10 @@ dev_console::clear_screen (HANDLE h, int x1, int y1, int x2, int y2) tlc.Y = y2; } acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); FillConsoleOutputCharacterW (h, L' ', num, tlc, &done); FillConsoleOutputAttribute (h, current_win32_attr, num, tlc, &done); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); } @@ -2187,7 +2361,9 @@ fhandler_console::cursor_set (bool rel_to_top, int x, int y) pos.X = x; pos.Y = y; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); SetConsoleCursorPosition (get_output_handle (), pos); + detach_console (resume_pid, con.owner); release_attach_mutex (); } @@ -2261,7 +2437,9 @@ fhandler_console::write_console (PWCHAR buf, DWORD len, DWORD& done) { DWORD nbytes = len > MAX_WRITE_CHARS ? MAX_WRITE_CHARS : len; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); BOOL r = WriteConsoleW (get_output_handle (), buf, nbytes, &done, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); if (!r) { @@ -2313,9 +2491,7 @@ ReadConsoleOutputWrapper (HANDLE h, PCHAR_INFO buf, COORD bufsiz, if ((width == 0) || (height == 0)) return TRUE; - acquire_attach_mutex (mutex_timeout); BOOL success = ReadConsoleOutputW (h, buf, bufsiz, coord, ®ion); - release_attach_mutex (); if (success) /* it worked */; else if (GetLastError () == ERROR_NOT_ENOUGH_MEMORY && (width * height) > 1) @@ -2351,14 +2527,20 @@ dev_console::save_restore (HANDLE h, char c) SMALL_RECT now = {}; /* Read the whole buffer */ now.Bottom = save_bufsize.Y - 1; now.Right = save_bufsize.X - 1; + acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); if (!ReadConsoleOutputWrapper (h, save_buf, save_bufsize, now)) debug_printf ("ReadConsoleOutputWrapper(h, ...) failed during save, %E"); + fhandler_console::detach_console (resume_pid, owner); + release_attach_mutex (); /* Position at top of buffer */ COORD cob = {}; acquire_attach_mutex (mutex_timeout); + resume_pid = fhandler_console::attach_console (owner); if (!SetConsoleCursorPosition (h, cob)) debug_printf ("SetConsoleCursorInfo(%p, ...) failed during save, %E", h); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); /* Clear entire buffer */ @@ -2374,7 +2556,9 @@ dev_console::save_restore (HANDLE h, char c) /* Restore whole buffer */ clear_screen (h, 0, 0, b.dwSize.X - 1, b.dwSize.Y - 1); acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); BOOL res = WriteConsoleOutputW (h, save_buf, save_bufsize, cob, &now); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); if (!res) debug_printf ("WriteConsoleOutputW failed, %E"); @@ -2387,11 +2571,13 @@ dev_console::save_restore (HANDLE h, char c) /* CGF: NOOP? Doesn't seem to position screen as expected */ /* Temporarily position at top of screen */ acquire_attach_mutex (mutex_timeout); + resume_pid = fhandler_console::attach_console (owner); if (!SetConsoleCursorPosition (h, cob)) debug_printf ("SetConsoleCursorInfo(%p, cob) failed during restore, %E", h); /* Position where we were previously */ if (!SetConsoleCursorPosition (h, save_cursor)) debug_printf ("SetConsoleCursorInfo(%p, save_cursor) failed during restore, %E", h); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); /* Get back correct version of buffer information */ dwEnd.X = dwEnd.Y = 0; @@ -2507,24 +2693,26 @@ fhandler_console::char_command (char c) break; #endif case 'b': /* REP */ - wpbuf.put (c); + wpbuf_put (c); if (wincap.has_con_esc_rep ()) /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); else if (last_char && last_char != L'\n') { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); for (int i = 0; i < con.args[0]; i++) WriteConsoleW (get_output_handle (), &last_char, 1, 0, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); } break; case 'r': /* DECSTBM */ con.scroll_region.Top = con.args[0] ? con.args[0] - 1 : 0; con.scroll_region.Bottom = con.args[1] ? con.args[1] - 1 : -1; - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); break; case 'L': /* IL */ if (wincap.has_con_broken_il_dl ()) @@ -2536,11 +2724,14 @@ fhandler_console::char_command (char c) if (y == con.b.srWindow.Bottom) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); WriteConsoleW (get_output_handle (), L"\033[2K", 4, 0, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); break; } acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); if (y == con.b.srWindow.Top && srBottom == con.b.srWindow.Bottom) { @@ -2556,8 +2747,8 @@ fhandler_console::char_command (char c) y + 1 - con.b.srWindow.Top, srBottom + 1 - con.b.srWindow.Top); WriteConsoleW (get_output_handle (), bufw, wcslen (bufw), 0, 0); - wpbuf.put ('T'); - wpbuf.send (); + wpbuf_put ('T'); + wpbuf_send (); __small_swprintf (bufw, L"\033[%d;%dr", srTop + 1 - con.b.srWindow.Top, srBottom + 1 - con.b.srWindow.Top); @@ -2565,13 +2756,14 @@ fhandler_console::char_command (char c) __small_swprintf (bufw, L"\033[%d;%dH", y + 1 - con.b.srWindow.Top, x + 1); WriteConsoleW (get_output_handle (), bufw, wcslen (bufw), 0, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); } else { - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); } break; case 'M': /* DL */ @@ -2584,7 +2776,9 @@ fhandler_console::char_command (char c) if (y == con.b.srWindow.Bottom) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); WriteConsoleW (get_output_handle (), L"\033[2K", 4, 0, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); break; } @@ -2592,9 +2786,10 @@ fhandler_console::char_command (char c) y + 1 - con.b.srWindow.Top, srBottom + 1 - con.b.srWindow.Top); acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); WriteConsoleW (get_output_handle (), bufw, wcslen (bufw), 0, 0); - wpbuf.put ('S'); - wpbuf.send (); + wpbuf_put ('S'); + wpbuf_send (); __small_swprintf (bufw, L"\033[%d;%dr", srTop + 1 - con.b.srWindow.Top, srBottom + 1 - con.b.srWindow.Top); @@ -2602,17 +2797,18 @@ fhandler_console::char_command (char c) __small_swprintf (bufw, L"\033[%d;%dH", y + 1 - con.b.srWindow.Top, x + 1); WriteConsoleW (get_output_handle (), bufw, wcslen (bufw), 0, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); } else { - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); } break; case 'J': /* ED */ - wpbuf.put (c); + wpbuf_put (c); if (con.args[0] == 3 && con.savey >= 0) { con.fillin (get_output_handle ()); @@ -2622,6 +2818,7 @@ fhandler_console::char_command (char c) { /* Workaround for broken CSI3J in Win10 1809 */ CONSOLE_SCREEN_BUFFER_INFO sbi; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); GetConsoleScreenBufferInfo (get_output_handle (), &sbi); SMALL_RECT r = {0, sbi.srWindow.Top, (SHORT) (sbi.dwSize.X - 1), (SHORT) (sbi.dwSize.Y - 1)}; @@ -2633,17 +2830,18 @@ fhandler_console::char_command (char c) d = sbi.dwCursorPosition; d.Y -= sbi.srWindow.Top; SetConsoleCursorPosition (get_output_handle (), d); + detach_console (resume_pid, con.owner); release_attach_mutex (); } else /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); break; case 'h': /* DECSET */ case 'l': /* DECRST */ - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); if (con.saw_question_mark) { bool need_fix_tab_position = false; @@ -2659,7 +2857,7 @@ fhandler_console::char_command (char c) } /* Call fix_tab_position() if screen has been alternated. */ if (need_fix_tab_position) - fix_tab_position (get_output_handle ()); + fix_tab_position (get_output_handle (), con.owner); } break; case 'p': @@ -2670,23 +2868,23 @@ fhandler_console::char_command (char c) con.savex = con.savey = -1; con.cursor_key_app_mode = false; } - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); break; case 'm': if (con.saw_greater_than_sign) break; /* Ignore unsupported CSI > Pm m */ /* Text attribute settings */ - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); break; default: /* Other escape sequences */ - wpbuf.put (c); + wpbuf_put (c); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); break; } return; @@ -2871,6 +3069,7 @@ fhandler_console::char_command (char c) { CONSOLE_CURSOR_INFO console_cursor_info; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); GetConsoleCursorInfo (get_output_handle (), &console_cursor_info); switch (con.args[0]) { @@ -2893,6 +3092,7 @@ fhandler_console::char_command (char c) &console_cursor_info); break; } + detach_console (resume_pid, con.owner); release_attach_mutex (); } break; @@ -2916,12 +3116,14 @@ fhandler_console::char_command (char c) { CONSOLE_CURSOR_INFO console_cursor_info; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); GetConsoleCursorInfo (get_output_handle (), & console_cursor_info); if (c == 'h') console_cursor_info.bVisible = TRUE; else console_cursor_info.bVisible = FALSE; SetConsoleCursorInfo (get_output_handle (), & console_cursor_info); + detach_console (resume_pid, con.owner); release_attach_mutex (); break; } @@ -3168,14 +3370,16 @@ enum_proc (const LOGFONTW *lf, const TEXTMETRICW *tm, } static void -check_font (HANDLE hdl) +check_font (HANDLE hdl, pid_t owner) { CONSOLE_FONT_INFOEX cfi; LOGFONTW lf; cfi.cbSize = sizeof cfi; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fhandler_console::attach_console (owner); BOOL r = GetCurrentConsoleFontEx (hdl, 0, &cfi); + fhandler_console::detach_console (resume_pid, owner); release_attach_mutex (); if (!r) return; @@ -3246,11 +3450,13 @@ check_font (HANDLE hdl) inline void fhandler_console::write_replacement_char () { - check_font (get_output_handle ()); + check_font (get_output_handle (), unit); DWORD done; acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); WriteConsoleW (get_output_handle (), &rp_char, 1, &done, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); } @@ -3401,7 +3607,7 @@ fhandler_console::write_normal (const unsigned char *src, break; case ESC: con.state = gotesc; - wpbuf.put (*found); + wpbuf_put (*found); break; case DWN: cursor_get (&x, &y); @@ -3410,7 +3616,9 @@ fhandler_console::write_normal (const unsigned char *src, if (y >= con.b.srWindow.Bottom && !con.scroll_region.Top) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); WriteConsoleW (get_output_handle (), L"\n", 1, &done, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); } else @@ -3448,12 +3656,14 @@ fhandler_console::write_normal (const unsigned char *src, if (ret != -1) { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); while (ret-- > 0) { WCHAR w = *(found + 1); WriteConsoleW (get_output_handle (), &w, 1, &done, 0); found++; } + detach_console (resume_pid, con.owner); release_attach_mutex (); } } @@ -3521,7 +3731,7 @@ fhandler_console::write (const void *vsrc, size_t len) case gotesc: if (*src == '[') /* CSI Control Sequence Introducer */ { - wpbuf.put (*src); + wpbuf_put (*src); con.state = gotsquare; memset (con.args, 0, sizeof con.args); con.nargs = 0; @@ -3536,8 +3746,8 @@ fhandler_console::write (const void *vsrc, size_t len) { /* For xterm mode only */ /* Just send the sequence */ - wpbuf.put (*src); - wpbuf.send (); + wpbuf_put (*src); + wpbuf_send (); } else if (con.savex >= 0 && con.savey >= 0) cursor_set (false, con.savex, con.savey); @@ -3550,8 +3760,8 @@ fhandler_console::write (const void *vsrc, size_t len) { /* For xterm mode only */ /* Just send the sequence */ - wpbuf.put (*src); - wpbuf.send (); + wpbuf_put (*src); + wpbuf_send (); } else cursor_get (&con.savex, &con.savey); @@ -3574,23 +3784,25 @@ fhandler_console::write (const void *vsrc, size_t len) srBottom - con.b.srWindow.Top + 1, y + 1 - con.b.srWindow.Top, x + 1); acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); WriteConsoleW (get_output_handle (), buf, wcslen (buf), 0, 0); + detach_console (resume_pid, con.owner); release_attach_mutex (); } /* Substitute "CSI Ps T" */ - wpbuf.put ('['); - wpbuf.put ('T'); + wpbuf_put ('['); + wpbuf_put ('T'); } else - wpbuf.put (*src); - wpbuf.send (); + wpbuf_put (*src); + wpbuf_send (); con.state = normal; wpbuf.empty(); } else if (*src == ']') /* OSC Operating System Command */ { - wpbuf.put (*src); + wpbuf_put (*src); con.rarg = 0; con.my_title_buf[0] = '\0'; con.state = gotrsquare; @@ -3607,20 +3819,20 @@ fhandler_console::write (const void *vsrc, size_t len) /* ESC sequences below (e.g. OSC, etc) are left to xterm emulation in xterm compatible mode, therefore, are not handled and just sent them. */ - wpbuf.put (*src); + wpbuf_put (*src); /* Just send the sequence */ - wpbuf.send (); + wpbuf_send (); con.state = normal; wpbuf.empty(); } else if (*src == '(') /* Designate G0 character set */ { - wpbuf.put (*src); + wpbuf_put (*src); con.state = gotparen; } else if (*src == ')') /* Designate G1 character set */ { - wpbuf.put (*src); + wpbuf_put (*src); con.state = gotrparen; } else if (*src == 'M') /* Reverse Index (scroll down) */ @@ -3658,19 +3870,19 @@ fhandler_console::write (const void *vsrc, size_t len) { if (con.nargs < MAXARGS) con.args[con.nargs] = con.args[con.nargs] * 10 + *src - '0'; - wpbuf.put (*src); + wpbuf_put (*src); src++; } else if (*src == ';') { - wpbuf.put (*src); + wpbuf_put (*src); src++; if (con.nargs < MAXARGS) con.nargs++; } else if (*src == ' ') { - wpbuf.put (*src); + wpbuf_put (*src); src++; con.saw_space = true; con.state = gotcommand; @@ -3704,26 +3916,26 @@ fhandler_console::write (const void *vsrc, size_t len) con.state = endpalette; else if (*src == '\007') { - wpbuf.put (*src); + wpbuf_put (*src); if (wincap.has_con_24bit_colors () && !con_is_legacy) - wpbuf.send (); + wpbuf_send (); wpbuf.empty (); con.state = normal; src++; break; } - wpbuf.put (*src); + wpbuf_put (*src); src++; break; case eattitle: case gettitle: { - wpbuf.put (*src); + wpbuf_put (*src); int n = strlen (con.my_title_buf); if (*src < ' ') { if (wincap.has_con_24bit_colors () && !con_is_legacy) - wpbuf.send (); + wpbuf_send (); else if (*src == '\007' && con.state == gettitle) set_console_title (con.my_title_buf); con.state = normal; @@ -3738,7 +3950,7 @@ fhandler_console::write (const void *vsrc, size_t len) break; } case eatpalette: - wpbuf.put (*src); + wpbuf_put (*src); if (*src == '?') con.saw_question_mark = true; else if (*src == '\033') @@ -3748,20 +3960,20 @@ fhandler_console::write (const void *vsrc, size_t len) /* Send OSC Ps; Pt BEL other than OSC Ps; ? BEL */ if (wincap.has_con_24bit_colors () && !con_is_legacy && !con.saw_question_mark) - wpbuf.send (); + wpbuf_send (); con.state = normal; wpbuf.empty(); } src++; break; case endpalette: - wpbuf.put (*src); + wpbuf_put (*src); if (*src == '\\') { /* Send OSC Ps; Pt ST other than OSC Ps; ? ST */ if (wincap.has_con_24bit_colors () && !con_is_legacy && !con.saw_question_mark) - wpbuf.send (); + wpbuf_send (); con.state = normal; } else @@ -3774,7 +3986,7 @@ fhandler_console::write (const void *vsrc, size_t len) if (*src == ';') { con.state = gotarg1; - wpbuf.put (*src); + wpbuf_put (*src); if (con.nargs < MAXARGS) con.nargs++; src++; @@ -3789,7 +4001,7 @@ fhandler_console::write (const void *vsrc, size_t len) con.saw_greater_than_sign = true; else if (*src == '!') con.saw_exclamation_mark = true; - wpbuf.put (*src); + wpbuf_put (*src); /* ignore any extra chars between [ and first arg or command */ src++; } @@ -3940,13 +4152,15 @@ fhandler_console::set_close_on_exec (bool val) } void -set_console_title (char *title) +fhandler_console::set_console_title (char *title) { wchar_t buf[TITLESIZE + 1]; sys_mbstowcs (buf, TITLESIZE + 1, title); lock_ttys here (15000); acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = attach_console (con.owner); SetConsoleTitleW (buf); + detach_console (resume_pid, con.owner); release_attach_mutex (); debug_printf ("title '%W'", buf); } @@ -4035,7 +4249,7 @@ fhandler_console::fixup_after_fork_exec (bool execing) { set_unit (); setup_io_mutex (); - wpbuf.init (get_output_handle ()); + wpbuf.init (); if (!execing) return; @@ -4285,6 +4499,7 @@ fhandler_console::get_duplicated_handle_set (handle_set_t *p) DuplicateHandle (GetCurrentProcess (), output_mutex, GetCurrentProcess (), &p->output_mutex, 0, FALSE, DUPLICATE_SAME_ACCESS); + p->unit = unit; } /* The function close_handle_set() should be static so that they can @@ -4311,6 +4526,7 @@ fhandler_console::need_console_handler () void fhandler_console::set_disable_master_thread (bool x, fhandler_console *cons) { + const _minor_t unit = cons->get_minor (); if (con.disable_master_thread == x) return; if (cons == NULL) @@ -4324,3 +4540,17 @@ fhandler_console::set_disable_master_thread (bool x, fhandler_console *cons) con.disable_master_thread = x; cons->release_input_mutex (); } + +int +fhandler_console::fstat (struct stat *st) +{ + fhandler_base::fstat (st); + st->st_mode = S_IFCHR | S_IRUSR | S_IWUSR; + pinfo p (get_ttyp ()->getsid ()); + if (p) + { + st->st_uid = p->uid; + st->st_gid = p->gid; + } + return 0; +} diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index c9b05e3d76..7187095804 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -58,7 +58,7 @@ struct pipe_reply { DWORD error; }; -HANDLE attach_mutex; +HANDLE NO_COPY attach_mutex; DWORD acquire_attach_mutex (DWORD t) { @@ -2993,7 +2993,7 @@ fhandler_pty_master::setup () goto err; if (!attach_mutex) - attach_mutex = CreateMutex (&sa, FALSE, NULL); + attach_mutex = CreateMutex (&sec_none_nih, FALSE, NULL); /* Create master control pipe which allows the master to duplicate the pty pipe handles to processes which deserve it. */ diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 8c320421b6..8406dff64e 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2001,6 +2001,7 @@ class fhandler_termios: public fhandler_base HANDLE output_handle; HANDLE input_mutex; HANDLE output_mutex; + _minor_t unit; }; class spawn_worker { @@ -2147,6 +2148,8 @@ class dev_console friend class fhandler_console; }; +#define MAX_CONS_DEV (sizeof (unsigned long) * 8) + /* This is a input and output console handle */ class fhandler_console: public fhandler_termios { @@ -2169,10 +2172,11 @@ class fhandler_console: public fhandler_termios HANDLE thread_sync_event; private: static const unsigned MAX_WRITE_CHARS; - static console_state *shared_console_info; + static console_state *shared_console_info[MAX_CONS_DEV + 1]; static bool invisible_console; HANDLE input_mutex, output_mutex; handle_set_t handle_set; + _minor_t unit; /* Used when we encounter a truncated multi-byte sequence. The lead bytes are stored here and revisited in the next write call. */ @@ -2196,13 +2200,14 @@ class fhandler_console: public fhandler_termios const unsigned char *write_normal (unsigned const char*, unsigned const char *); void char_command (char); bool set_raw_win32_keyboard_mode (bool); + void set_console_title (char *); /* Input calls */ int igncr_enabled (); void set_cursor_maybe (); static bool create_invisible_console_workaround (bool force); static console_state *open_shared_console (HWND, HANDLE&, bool&); - static void fix_tab_position (HANDLE h); + static void fix_tab_position (HANDLE h, pid_t owner); /* console mode calls */ const handle_set_t *get_handle_set (void) {return &handle_set;} @@ -2214,8 +2219,8 @@ class fhandler_console: public fhandler_termios public: pid_t tc_getpgid () { - return shared_console_info ? - shared_console_info->tty_min_state.getpgid () : 0; + return shared_console_info[unit] ? + shared_console_info[unit]->tty_min_state.getpgid () : 0; } fhandler_console (fh_devices); static console_state *open_shared_console (HWND hw, HANDLE& h) @@ -2252,12 +2257,12 @@ class fhandler_console: public fhandler_termios int ioctl (unsigned int cmd, void *); int init (HANDLE, DWORD, mode_t); bool mouse_aware (MOUSE_EVENT_RECORD& mouse_event); - bool focus_aware () {return shared_console_info->con.use_focus;} + bool focus_aware () {return shared_console_info[unit]->con.use_focus;} bool get_cons_readahead_valid () { acquire_input_mutex (INFINITE); - bool ret = shared_console_info->con.cons_rapoi != NULL && - *shared_console_info->con.cons_rapoi; + bool ret = shared_console_info[unit]->con.cons_rapoi != NULL && + *shared_console_info[unit]->con.cons_rapoi; release_input_mutex (); return ret; } @@ -2302,11 +2307,9 @@ class fhandler_console: public fhandler_termios void acquire_input_mutex_if_necessary (DWORD ms) { acquire_input_mutex (ms); - acquire_attach_mutex (ms); } void release_input_mutex_if_necessary (void) { - release_attach_mutex (); release_input_mutex (); } @@ -2325,6 +2328,12 @@ class fhandler_console: public fhandler_termios static void set_console_mode_to_native (); bool need_console_handler (); static void set_disable_master_thread (bool x, fhandler_console *cons = NULL); + static DWORD attach_console (pid_t, bool *err = NULL); + static void detach_console (DWORD, pid_t); + pid_t get_owner (); + void wpbuf_put (char c); + void wpbuf_send (); + int fstat (struct stat *buf); friend tty_min * tty_list::get_cttyp (); }; diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index 44c7f08f8a..c54440fa80 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -202,7 +202,6 @@ void timespec_to_filetime (const struct timespec *, PLARGE_INTEGER); bool timeval_to_ms (const struct timeval *, DWORD &); /* Console related */ -void set_console_title (char *); void init_console_handler (bool); extern bool wsock_started; diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 2fd7b72b6c..bad4c37f3b 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1141,7 +1141,9 @@ peek_console (select_record *me, bool) else { acquire_attach_mutex (mutex_timeout); + DWORD resume_pid = fh->attach_console (fh->get_owner ()); BOOL r = PeekConsoleInputW (h, &irec, 1, &events_read); + fh->detach_console (resume_pid, fh->get_owner ()); release_attach_mutex (); if (!r || !events_read) break; From d0bad6996d62f4b897269be4407ca463b2ef30ff Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 22 Dec 2022 23:15:32 +0900 Subject: [PATCH 069/767] Cygwin: Add release message for latest console change. 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Signed-off-by: Takashi Yano --- winsup/cygwin/release/3.5.0 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 11c9aa0c9a..bc63659936 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -3,3 +3,6 @@ What's new: - Drop support for Windows 7, Windows 8, Server 2008 R2 and Server 2012. +- The console device gets accessible from other terminals such as other + consoles and ptys. Thanks to this new feature, GNU screen and tmux + now work in the console. From 8a003605c1df0d43ab30258667107c467e0b499c Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Thu, 22 Dec 2022 13:26:09 -0700 Subject: [PATCH 070/767] fhandler/proc.cc(format_proc_cpuinfo): add Linux 6.1 cpuinfo Intel 0x00000007:1 EAX:26 lam Linear Address Masking (& recent entries) --- winsup/cygwin/fhandler/proc.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 332bf2a7ea..181652a086 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -1475,6 +1475,10 @@ format_proc_cpuinfo (void *, char *&destbuf) ftcprint (features1, 4, "avx_vnni"); /* vex enc NN vec */ ftcprint (features1, 5, "avx512_bf16"); /* vec bfloat16 short */ +/* ftcprint (features1, 7, "cmpccxadd"); */ /* CMPccXADD instructions */ +/* ftcprint (features1, 21, "amx_fp16"); */ /* AMX fp16 Support */ +/* ftcprint (features1, 23, "avx_ifma"); */ /* Support for VPMADD52[H,L]UQ */ + ftcprint (features1, 26, "lam"); /* Linear Address Masking */ } /* AMD cpuid 0x80000008 ebx */ From b5d4245d5f99b61a64e65be45872a2f56fd3e37e Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 1 Sep 2022 14:07:26 +0100 Subject: [PATCH 071/767] Cygwin: CI: Fix thinko of 'ncores' for 'nproc' --- .github/workflows/cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 7ad5ccf5f0..ac167e7483 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -101,7 +101,7 @@ jobs: (cd winsup; ./autogen.sh) && cd build && ../configure --prefix=$(realpath $(pwd)/../install) -v && - export MAKEFLAGS=-j$(ncores) && + export MAKEFLAGS=-j$(nproc) && make && make install && (cd */newlib; make info man) && From ad3f9820b16a3dc5ea6237106436f565fcb2ed3e Mon Sep 17 00:00:00 2001 From: CompilerAI Research Group Date: Tue, 3 Jan 2023 14:45:37 -0500 Subject: [PATCH 072/767] Fix memccpy to handle end char >= x80 - use unsigned char variables for optimized version of memccpy --- newlib/libc/string/memccpy.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/newlib/libc/string/memccpy.c b/newlib/libc/string/memccpy.c index 1f5f55c505..6757cb34cb 100644 --- a/newlib/libc/string/memccpy.c +++ b/newlib/libc/string/memccpy.c @@ -80,11 +80,11 @@ memccpy (void *__restrict dst0, return ptr; #else void *ptr = NULL; - char *dst = dst0; - const char *src = src0; + unsigned char *dst = dst0; + const unsigned char *src = src0; long *aligned_dst; const long *aligned_src; - char endchar = endchar0 & 0xff; + unsigned char endchar = endchar0 & 0xff; /* If the size is small, or either SRC or DST is unaligned, then punt into the byte copy loop. This should be rare. */ From 7886327fbf92e6ad8bd3f27ea9fa8bd54cc44bdd Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 9 Jan 2023 13:35:32 +0100 Subject: [PATCH 073/767] Cygwin: reinstantiate exporting _alloca This basically reverts commit 1556b96b1b3b03112f271dfe30e043ed538354fd. Turns out that _alloca is actually used, for instance, by clang. --- winsup/cygwin/cygwin.din | 1 + winsup/cygwin/include/cygwin/version.h | 3 ++- winsup/cygwin/release/3.4.4 | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index f1371af1b6..c6768e4fce 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -133,6 +133,7 @@ __xdrrec_getrec SIGFE __xdrrec_setnonblock SIGFE __xpg_sigpause SIGFE __xpg_strerror_r SIGFE +_alloca = __alloca NOSIGFE _dll_crt0 NOSIGFE _Exit SIGFE _exit SIGFE diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index fb24fc61f7..0644311a0b 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -478,12 +478,13 @@ details. */ 342: Remove cleanup_glue. 343: Change FD_SETSIZE and NOFILE. 344: Remove _alloca. + 345: Reinstantiate _alloca. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 344 +#define CYGWIN_VERSION_API_MINOR 345 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible changes are made to the shared diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 index 3331b31666..a653b08a1a 100644 --- a/winsup/cygwin/release/3.4.4 +++ b/winsup/cygwin/release/3.4.4 @@ -7,3 +7,6 @@ Bug Fixes - Fix hang-up of less on quit which occurs when it is started from non-cygwin shell and window is resized. Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252737.html + +- Reinstantiate exporting _alloca. + Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252797.html From 9ee1e1b693ad7785e07f126ec725279fe605d621 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 9 Jan 2023 18:02:14 +0100 Subject: [PATCH 074/767] Cygwin: /proc//status: simplify code generating signal info The code generating the signal info in _pinfo::siginfo() and in commune_process() are doing the same thing. Create a local static function commune_process_siginfo() to have the code in one place only. Remove a useless sigpending() call. Fixes: 9a3c058f6612 ("Cygwin: /proc//status: Fill SigPnd, SigBlk and SigIgn values with life") Signed-off-by: Corinna Vinschen --- winsup/cygwin/pinfo.cc | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 586a4204d1..ff10d9cf8c 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -603,6 +603,19 @@ _pinfo::alive () return !!h; } +static commune_result +commune_process_siginfo () +{ + commune_result res = { 0 }; + + res.pnd = sig_send (myself, __SIGPENDINGALL, NULL); + res.blk = cygheap->compute_sigblkmask (); + for (int sig = 1; sig < NSIG; ++sig) + if (global_sigs[sig].sa_handler == SIG_IGN) + res.ign |= SIGTOMASK (sig); + return res; +} + DWORD commune_process (void *arg) { @@ -679,13 +692,7 @@ commune_process (void *arg) case PICOM_SIGINFO: { sigproc_printf ("processing PICOM_SIGINFO"); - commune_result cr; - sigpending (&cr.pnd); - cr.pnd = sig_send (myself, __SIGPENDINGALL, NULL); - cr.blk = cygheap->compute_sigblkmask (); - for (int sig = 1; sig < NSIG; ++sig) - if (global_sigs[sig].sa_handler == SIG_IGN) - cr.ign |= SIGTOMASK (sig); + commune_result cr = commune_process_siginfo (); if (!WritePipeOverlapped (tothem, &cr, sizeof cr, &nr, 1000L)) sigproc_printf ("WritePipeOverlapped siginfo failed, %E"); break; @@ -1026,24 +1033,17 @@ _pinfo::root (size_t& n) int _pinfo::siginfo (sigset_t &pnd, sigset_t &blk, sigset_t &ign) { + commune_result cr; + if (!pid) return -1; if (pid != myself->pid && !ISSTATE (this, PID_NOTCYGWIN)) - { - commune_result cr = commune_request (PICOM_SIGINFO); - pnd = cr.pnd; - blk = cr.blk; - ign = cr.ign; - } + cr = commune_request (PICOM_SIGINFO); else - { - pnd = sig_send (myself, __SIGPENDINGALL, NULL); - blk = cygheap->compute_sigblkmask (); - ign = 0; - for (int sig = 1; sig < NSIG; ++sig) - if (global_sigs[sig].sa_handler == SIG_IGN) - ign |= SIGTOMASK (sig); - } + cr = commune_process_siginfo (); + pnd = cr.pnd; + blk = cr.blk; + ign = cr.ign; return -1; } From 13a7b16ea3ad64794b1cd7651ecfef9c258f3a6c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 13 Dec 2022 21:54:54 -0500 Subject: [PATCH 075/767] libgloss: merge aarch64 into top-level Makefile Avoid a recursive make to speed things up a bit. --- libgloss/Makefile.am | 4 + libgloss/Makefile.in | 333 ++++++++++++++++++++----- libgloss/aarch64/Makefile.in | 166 ------------ libgloss/aarch64/Makefile.inc | 34 +++ libgloss/aarch64/cpu-init/Makefile.in | 107 -------- libgloss/aarch64/cpu-init/Makefile.inc | 20 ++ libgloss/configure | 20 +- libgloss/configure.ac | 5 +- 8 files changed, 342 insertions(+), 347 deletions(-) delete mode 100644 libgloss/aarch64/Makefile.in create mode 100644 libgloss/aarch64/Makefile.inc delete mode 100644 libgloss/aarch64/cpu-init/Makefile.in create mode 100644 libgloss/aarch64/cpu-init/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 5464eb8bdb..5b5f0fd541 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -6,6 +6,7 @@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config bin_PROGRAMS = check_PROGRAMS = info_TEXINFOS = +CLEANFILES = PHONY = SUBDIRS = @subdirs@ . @@ -59,6 +60,9 @@ TEXINFO_TEX = ../texinfo/texinfo.tex if HAVE_DOC include doc/Makefile.inc endif +if CONFIG_AARCH64 +include aarch64/Makefile.inc +endif if CONFIG_BFIN include bfin/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 7288c6c41f..cd60857d1f 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -93,13 +93,21 @@ target_triplet = @target@ bin_PROGRAMS = $(am__EXEEXT_1) check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @HAVE_DOC_TRUE@am__append_1 = doc/porting.texi +@CONFIG_AARCH64_TRUE@am__append_2 = aarch64/librdimon.a +@CONFIG_AARCH64_TRUE@am__append_3 = \ +@CONFIG_AARCH64_TRUE@ aarch64/crt0.o \ +@CONFIG_AARCH64_TRUE@ aarch64/rdimon-crt0.o \ +@CONFIG_AARCH64_TRUE@ $(aarch64_SPECS) + +@CONFIG_AARCH64_TRUE@am__append_4 = $(aarch64_SPECS) \ +@CONFIG_AARCH64_TRUE@ $(aarch64_cpu_initcpuinit_DATA) # Here is all of the simulator stuff. -@CONFIG_BFIN_TRUE@am__append_2 = bfin/libsim.a bfin/libbfinbsp.a -@CONFIG_BFIN_TRUE@am__append_3 = bfin/sim-test +@CONFIG_BFIN_TRUE@am__append_5 = bfin/libsim.a bfin/libbfinbsp.a +@CONFIG_BFIN_TRUE@am__append_6 = bfin/sim-test # Here is all of the development board stuff. -@CONFIG_BFIN_TRUE@am__append_4 = \ +@CONFIG_BFIN_TRUE@am__append_7 = \ @CONFIG_BFIN_TRUE@ bfin/crt0.o \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.o \ @CONFIG_BFIN_TRUE@ bfin/basiccrts.o \ @@ -110,11 +118,11 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) # bfin/basiccrt60x.o \ # bfin/basiccrt60xs.o \ # bfin/basiccrt60xc1.o -@CONFIG_BFIN_TRUE@am__append_5 = \ +@CONFIG_BFIN_TRUE@am__append_8 = \ @CONFIG_BFIN_TRUE@ bfin/crt0.S \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.S -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_6 = \ +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_9 = \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bfin-common-sc.ld bfin/bfin-common-mc.ld bfin/bfin-common-mc0.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf504.ld bfin/bf506.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf512.ld bfin/bf514.ld bfin/bf516.ld bfin/bf518.ld \ @@ -130,27 +138,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf609.ld bfin/bf609c0.ld bfin/bf609c1.ld bfin/bf609m.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf592.ld -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_7 = $(wildcard $(srcdir)/bfin/include/*.h) -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_8 = $(wildcard $(srcdir)/bfin/include/sys/*.h) -@CONFIG_IQ2000_TRUE@am__append_9 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_10 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_11 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_12 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_13 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_14 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_15 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_16 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_17 = lm32/crt0.S -@CONFIG_RISCV_TRUE@am__append_18 = \ +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_10 = $(wildcard $(srcdir)/bfin/include/*.h) +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_11 = $(wildcard $(srcdir)/bfin/include/sys/*.h) +@CONFIG_IQ2000_TRUE@am__append_12 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_13 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_14 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_15 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_16 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_17 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_18 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_19 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_20 = lm32/crt0.S +@CONFIG_RISCV_TRUE@am__append_21 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_19 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_22 = riscv/libgloss.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_20 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_21 = wince/stub.exe +@CONFIG_WINCE_TRUE@am__append_23 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_24 = wince/stub.exe subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -173,11 +181,10 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = aarch64/Makefile aarch64/cpu-init/Makefile \ - arc/Makefile csky/Makefile epiphany/Makefile i386/Makefile \ - m32r/Makefile m68hc11/Makefile nds32/Makefile m68k/Makefile \ - pa/Makefile i960/Makefile sparc_leon/Makefile sparc/Makefile \ - mips/Makefile rs6000/Makefile mn10200/Makefile \ +CONFIG_CLEAN_FILES = arc/Makefile csky/Makefile epiphany/Makefile \ + i386/Makefile m32r/Makefile m68hc11/Makefile nds32/Makefile \ + m68k/Makefile pa/Makefile i960/Makefile sparc_leon/Makefile \ + sparc/Makefile mips/Makefile rs6000/Makefile mn10200/Makefile \ mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ d30v/Makefile fr30/Makefile frv/Makefile ft32/Makefile \ mcore/Makefile mep/Makefile moxie/Makefile microblaze/Makefile \ @@ -214,7 +221,9 @@ am__uninstall_files_from_dir = { \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(infodir)" "$(DESTDIR)$(includemachinetooldir)" \ + "$(DESTDIR)$(infodir)" \ + "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" \ + "$(DESTDIR)$(includemachinetooldir)" \ "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" \ "$(DESTDIR)$(multilibtooldir)" LIBRARIES = $(multilibtool_LIBRARIES) $(noinst_LIBRARIES) @@ -223,9 +232,18 @@ AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = +aarch64_librdimon_a_AR = $(AR) $(ARFLAGS) +aarch64_librdimon_a_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +@CONFIG_AARCH64_TRUE@am_aarch64_librdimon_a_OBJECTS = aarch64/aarch64_librdimon_a-_exit.$(OBJEXT) \ +@CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-_kill.$(OBJEXT) \ +@CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-ftruncate.$(OBJEXT) \ +@CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-libcfunc.$(OBJEXT) \ +@CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-syscalls.$(OBJEXT) \ +@CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-truncate.$(OBJEXT) +aarch64_librdimon_a_OBJECTS = $(am_aarch64_librdimon_a_OBJECTS) bfin_libbfinbsp_a_AR = $(AR) $(ARFLAGS) bfin_libbfinbsp_a_LIBADD = -am__dirstamp = $(am__leading_dot)dirstamp @CONFIG_BFIN_TRUE@am_bfin_libbfinbsp_a_OBJECTS = bfin/bfin_libbfinbsp_a-clear_cache_range.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/bfin_libbfinbsp_a-_exit.$(OBJEXT) bfin_libbfinbsp_a_OBJECTS = $(am_bfin_libbfinbsp_a_OBJECTS) @@ -416,11 +434,12 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ - $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ - $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - bfin/sim-test.c iq2000/test.c $(wince_stub_exe_SOURCES) +SOURCES = $(aarch64_librdimon_a_SOURCES) $(bfin_libbfinbsp_a_SOURCES) \ + $(bfin_libsim_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ + $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) bfin/sim-test.c iq2000/test.c \ + $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -474,8 +493,9 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac -DATA = $(includemachinetool_DATA) $(includesystool_DATA) \ - $(includetool_DATA) $(multilibtool_DATA) +DATA = $(aarch64_cpu_initcpuinit_DATA) $(includemachinetool_DATA) \ + $(includesystool_DATA) $(includetool_DATA) \ + $(multilibtool_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ @@ -506,7 +526,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_20) +VPATH = @srcdir@ $(am__append_23) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -634,23 +654,26 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) +CLEANFILES = $(am__append_4) PHONY = SUBDIRS = @subdirs@ . tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) -multilibtool_DATA = $(am__append_4) $(am__append_6) $(am__append_9) \ - $(am__append_13) $(am__append_15) $(am__append_18) -multilibtool_LIBRARIES = $(am__append_2) $(am__append_10) \ - $(am__append_14) $(am__append_16) $(am__append_19) +multilibtool_DATA = $(am__append_3) $(am__append_7) $(am__append_9) \ + $(am__append_12) $(am__append_16) $(am__append_18) \ + $(am__append_21) +multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ + $(am__append_13) $(am__append_17) $(am__append_19) \ + $(am__append_22) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_7) +includetool_DATA = $(am__append_10) includesystooldir = $(tooldir)/include/sys -includesystool_DATA = $(am__append_8) +includesystool_DATA = $(am__append_11) # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_5) $(am__append_11) $(am__append_17) +libobjs_a_SOURCES = $(am__append_8) $(am__append_14) $(am__append_20) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -681,6 +704,30 @@ MULTISUBDIR = MULTIDO = true MULTICLEAN = true TEXINFO_TEX = ../texinfo/texinfo.tex +@CONFIG_AARCH64_TRUE@aarch64_librdimon_a_SOURCES = \ +@CONFIG_AARCH64_TRUE@ aarch64/_exit.c \ +@CONFIG_AARCH64_TRUE@ aarch64/_kill.c \ +@CONFIG_AARCH64_TRUE@ aarch64/ftruncate.c \ +@CONFIG_AARCH64_TRUE@ aarch64/libcfunc.c \ +@CONFIG_AARCH64_TRUE@ aarch64/syscalls.c \ +@CONFIG_AARCH64_TRUE@ aarch64/truncate.c + +@CONFIG_AARCH64_TRUE@aarch64_librdimon_a_CPPFLAGS = \ +@CONFIG_AARCH64_TRUE@ $(AM_CPPFLAGS) \ +@CONFIG_AARCH64_TRUE@ -DSEMIHOST_V2 -DARM_RDI_MONITOR + +@CONFIG_AARCH64_TRUE@aarch64_SPECS = \ +@CONFIG_AARCH64_TRUE@ aarch64/aem-v8-r.specs \ +@CONFIG_AARCH64_TRUE@ aarch64/aem-validation.specs \ +@CONFIG_AARCH64_TRUE@ aarch64/aem-ve.specs \ +@CONFIG_AARCH64_TRUE@ aarch64/rdimon.specs + +@CONFIG_AARCH64_TRUE@aarch64_cpu_init_CPPFLAGS = -I$(srcdir)/aarch64/cpu-init/.. +@CONFIG_AARCH64_TRUE@aarch64_cpu_initcpuinitdir = $(tooldir)/lib$(MULTISUBDIR)/cpu-init +@CONFIG_AARCH64_TRUE@aarch64_cpu_initcpuinit_DATA = \ +@CONFIG_AARCH64_TRUE@ aarch64/cpu-init/rdimon-aem-el3.o \ +@CONFIG_AARCH64_TRUE@ aarch64/cpu-init/rdimon-aem-v8-r.o + @CONFIG_BFIN_TRUE@bfin_CPPFLAGS = -I$(srcdir)/bfin/include @CONFIG_BFIN_TRUE@bfin_libsim_a_SOURCES = \ @CONFIG_BFIN_TRUE@ bfin/clear_cache_range.c \ @@ -811,7 +858,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -833,7 +880,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -858,10 +905,6 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) distclean-hdr: -rm -f config.h stamp-h1 -aarch64/Makefile: $(top_builddir)/config.status $(top_srcdir)/aarch64/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -aarch64/cpu-init/Makefile: $(top_builddir)/config.status $(top_srcdir)/aarch64/cpu-init/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ arc/Makefile: $(top_builddir)/config.status $(top_srcdir)/arc/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ csky/Makefile: $(top_builddir)/config.status $(top_srcdir)/csky/Makefile.in @@ -982,6 +1025,29 @@ clean-multilibtoolLIBRARIES: clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +aarch64/$(am__dirstamp): + @$(MKDIR_P) aarch64 + @: > aarch64/$(am__dirstamp) +aarch64/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) aarch64/$(DEPDIR) + @: > aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/aarch64_librdimon_a-_exit.$(OBJEXT): aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/aarch64_librdimon_a-_kill.$(OBJEXT): aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/aarch64_librdimon_a-ftruncate.$(OBJEXT): \ + aarch64/$(am__dirstamp) aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/aarch64_librdimon_a-libcfunc.$(OBJEXT): \ + aarch64/$(am__dirstamp) aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/aarch64_librdimon_a-syscalls.$(OBJEXT): \ + aarch64/$(am__dirstamp) aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/aarch64_librdimon_a-truncate.$(OBJEXT): \ + aarch64/$(am__dirstamp) aarch64/$(DEPDIR)/$(am__dirstamp) + +aarch64/librdimon.a: $(aarch64_librdimon_a_OBJECTS) $(aarch64_librdimon_a_DEPENDENCIES) $(EXTRA_aarch64_librdimon_a_DEPENDENCIES) aarch64/$(am__dirstamp) + $(AM_V_at)-rm -f aarch64/librdimon.a + $(AM_V_AR)$(aarch64_librdimon_a_AR) aarch64/librdimon.a $(aarch64_librdimon_a_OBJECTS) $(aarch64_librdimon_a_LIBADD) + $(AM_V_at)$(RANLIB) aarch64/librdimon.a bfin/$(am__dirstamp): @$(MKDIR_P) bfin @: > bfin/$(am__dirstamp) @@ -1343,6 +1409,7 @@ wince/stub.exe$(EXEEXT): $(wince_stub_exe_OBJECTS) $(wince_stub_exe_DEPENDENCIES mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f aarch64/*.$(OBJEXT) -rm -f bfin/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) @@ -1353,6 +1420,12 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wince_stub_exe-wince-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/basiccrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libbfinbsp_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Po@am__quote@ @@ -1500,6 +1573,90 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +aarch64/aarch64_librdimon_a-_exit.o: aarch64/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-_exit.o -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Tpo -c -o aarch64/aarch64_librdimon_a-_exit.o `test -f 'aarch64/_exit.c' || echo '$(srcdir)/'`aarch64/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/_exit.c' object='aarch64/aarch64_librdimon_a-_exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-_exit.o `test -f 'aarch64/_exit.c' || echo '$(srcdir)/'`aarch64/_exit.c + +aarch64/aarch64_librdimon_a-_exit.obj: aarch64/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-_exit.obj -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Tpo -c -o aarch64/aarch64_librdimon_a-_exit.obj `if test -f 'aarch64/_exit.c'; then $(CYGPATH_W) 'aarch64/_exit.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/_exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/_exit.c' object='aarch64/aarch64_librdimon_a-_exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-_exit.obj `if test -f 'aarch64/_exit.c'; then $(CYGPATH_W) 'aarch64/_exit.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/_exit.c'; fi` + +aarch64/aarch64_librdimon_a-_kill.o: aarch64/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-_kill.o -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Tpo -c -o aarch64/aarch64_librdimon_a-_kill.o `test -f 'aarch64/_kill.c' || echo '$(srcdir)/'`aarch64/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/_kill.c' object='aarch64/aarch64_librdimon_a-_kill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-_kill.o `test -f 'aarch64/_kill.c' || echo '$(srcdir)/'`aarch64/_kill.c + +aarch64/aarch64_librdimon_a-_kill.obj: aarch64/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-_kill.obj -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Tpo -c -o aarch64/aarch64_librdimon_a-_kill.obj `if test -f 'aarch64/_kill.c'; then $(CYGPATH_W) 'aarch64/_kill.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/_kill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/_kill.c' object='aarch64/aarch64_librdimon_a-_kill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-_kill.obj `if test -f 'aarch64/_kill.c'; then $(CYGPATH_W) 'aarch64/_kill.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/_kill.c'; fi` + +aarch64/aarch64_librdimon_a-ftruncate.o: aarch64/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-ftruncate.o -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Tpo -c -o aarch64/aarch64_librdimon_a-ftruncate.o `test -f 'aarch64/ftruncate.c' || echo '$(srcdir)/'`aarch64/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/ftruncate.c' object='aarch64/aarch64_librdimon_a-ftruncate.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-ftruncate.o `test -f 'aarch64/ftruncate.c' || echo '$(srcdir)/'`aarch64/ftruncate.c + +aarch64/aarch64_librdimon_a-ftruncate.obj: aarch64/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-ftruncate.obj -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Tpo -c -o aarch64/aarch64_librdimon_a-ftruncate.obj `if test -f 'aarch64/ftruncate.c'; then $(CYGPATH_W) 'aarch64/ftruncate.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/ftruncate.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/ftruncate.c' object='aarch64/aarch64_librdimon_a-ftruncate.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-ftruncate.obj `if test -f 'aarch64/ftruncate.c'; then $(CYGPATH_W) 'aarch64/ftruncate.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/ftruncate.c'; fi` + +aarch64/aarch64_librdimon_a-libcfunc.o: aarch64/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-libcfunc.o -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Tpo -c -o aarch64/aarch64_librdimon_a-libcfunc.o `test -f 'aarch64/libcfunc.c' || echo '$(srcdir)/'`aarch64/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/libcfunc.c' object='aarch64/aarch64_librdimon_a-libcfunc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-libcfunc.o `test -f 'aarch64/libcfunc.c' || echo '$(srcdir)/'`aarch64/libcfunc.c + +aarch64/aarch64_librdimon_a-libcfunc.obj: aarch64/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-libcfunc.obj -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Tpo -c -o aarch64/aarch64_librdimon_a-libcfunc.obj `if test -f 'aarch64/libcfunc.c'; then $(CYGPATH_W) 'aarch64/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/libcfunc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/libcfunc.c' object='aarch64/aarch64_librdimon_a-libcfunc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-libcfunc.obj `if test -f 'aarch64/libcfunc.c'; then $(CYGPATH_W) 'aarch64/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/libcfunc.c'; fi` + +aarch64/aarch64_librdimon_a-syscalls.o: aarch64/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-syscalls.o -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Tpo -c -o aarch64/aarch64_librdimon_a-syscalls.o `test -f 'aarch64/syscalls.c' || echo '$(srcdir)/'`aarch64/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/syscalls.c' object='aarch64/aarch64_librdimon_a-syscalls.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-syscalls.o `test -f 'aarch64/syscalls.c' || echo '$(srcdir)/'`aarch64/syscalls.c + +aarch64/aarch64_librdimon_a-syscalls.obj: aarch64/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-syscalls.obj -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Tpo -c -o aarch64/aarch64_librdimon_a-syscalls.obj `if test -f 'aarch64/syscalls.c'; then $(CYGPATH_W) 'aarch64/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/syscalls.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/syscalls.c' object='aarch64/aarch64_librdimon_a-syscalls.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-syscalls.obj `if test -f 'aarch64/syscalls.c'; then $(CYGPATH_W) 'aarch64/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/syscalls.c'; fi` + +aarch64/aarch64_librdimon_a-truncate.o: aarch64/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-truncate.o -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Tpo -c -o aarch64/aarch64_librdimon_a-truncate.o `test -f 'aarch64/truncate.c' || echo '$(srcdir)/'`aarch64/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/truncate.c' object='aarch64/aarch64_librdimon_a-truncate.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-truncate.o `test -f 'aarch64/truncate.c' || echo '$(srcdir)/'`aarch64/truncate.c + +aarch64/aarch64_librdimon_a-truncate.obj: aarch64/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT aarch64/aarch64_librdimon_a-truncate.obj -MD -MP -MF aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Tpo -c -o aarch64/aarch64_librdimon_a-truncate.obj `if test -f 'aarch64/truncate.c'; then $(CYGPATH_W) 'aarch64/truncate.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/truncate.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Tpo aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='aarch64/truncate.c' object='aarch64/aarch64_librdimon_a-truncate.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-truncate.obj `if test -f 'aarch64/truncate.c'; then $(CYGPATH_W) 'aarch64/truncate.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/truncate.c'; fi` + bfin/bfin_libbfinbsp_a-clear_cache_range.o: bfin/clear_cache_range.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bfin_libbfinbsp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bfin/bfin_libbfinbsp_a-clear_cache_range.o -MD -MP -MF bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Tpo -c -o bfin/bfin_libbfinbsp_a-clear_cache_range.o `test -f 'bfin/clear_cache_range.c' || echo '$(srcdir)/'`bfin/clear_cache_range.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Tpo bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Po @@ -2521,6 +2678,27 @@ maintainer-clean-aminfo: echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done +install-aarch64_cpu_initcpuinitDATA: $(aarch64_cpu_initcpuinit_DATA) + @$(NORMAL_INSTALL) + @list='$(aarch64_cpu_initcpuinit_DATA)'; test -n "$(aarch64_cpu_initcpuinitdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(aarch64_cpu_initcpuinitdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(aarch64_cpu_initcpuinitdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" || exit $$?; \ + done + +uninstall-aarch64_cpu_initcpuinitDATA: + @$(NORMAL_UNINSTALL) + @list='$(aarch64_cpu_initcpuinit_DATA)'; test -n "$(aarch64_cpu_initcpuinitdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(aarch64_cpu_initcpuinitdir)'; $(am__uninstall_files_from_dir) install-includemachinetoolDATA: $(includemachinetool_DATA) @$(NORMAL_INSTALL) @list='$(includemachinetool_DATA)'; test -n "$(includemachinetooldir)" || list=; \ @@ -2718,7 +2896,7 @@ all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \ config.h all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ + for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -2743,10 +2921,13 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f aarch64/$(DEPDIR)/$(am__dirstamp) + -rm -f aarch64/$(am__dirstamp) -rm -f bfin/$(DEPDIR)/$(am__dirstamp) -rm -f bfin/$(am__dirstamp) -rm -f doc/$(am__dirstamp) @@ -2771,7 +2952,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -2788,10 +2969,10 @@ info: info-recursive info-am: $(INFO_DEPS) -install-data-am: install-includemachinetoolDATA \ - install-includesystoolDATA install-includetoolDATA \ - install-info-am install-multilibtoolDATA \ - install-multilibtoolLIBRARIES +install-data-am: install-aarch64_cpu_initcpuinitDATA \ + install-includemachinetoolDATA install-includesystoolDATA \ + install-includetoolDATA install-info-am \ + install-multilibtoolDATA install-multilibtoolLIBRARIES install-dvi: install-dvi-recursive @@ -2913,7 +3094,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -2931,7 +3112,8 @@ ps: ps-recursive ps-am: $(PSS) -uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ +uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ + uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ uninstall-includetoolDATA uninstall-info-am \ uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ @@ -2946,10 +3128,11 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ clean-noinstLIBRARIES cscope cscopelist-am ctags ctags-am \ dist-info distclean distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags dvi dvi-am html \ - html-am info info-am install install-am install-binPROGRAMS \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-exec-local install-html \ - install-html-am install-includemachinetoolDATA \ + html-am info info-am install \ + install-aarch64_cpu_initcpuinitDATA install-am \ + install-binPROGRAMS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-local \ + install-html install-html-am install-includemachinetoolDATA \ install-includesystoolDATA install-includetoolDATA \ install-info install-info-am install-man \ install-multilibtoolDATA install-multilibtoolLIBRARIES \ @@ -2959,12 +3142,12 @@ uninstall-am: uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ maintainer-clean-generic maintainer-clean-local mostlyclean \ mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-dvi-am \ - uninstall-html-am uninstall-includemachinetoolDATA \ - uninstall-includesystoolDATA uninstall-includetoolDATA \ - uninstall-info-am uninstall-multilibtoolDATA \ - uninstall-multilibtoolLIBRARIES uninstall-pdf-am \ - uninstall-ps-am + uninstall-aarch64_cpu_initcpuinitDATA uninstall-am \ + uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ + uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ + uninstall-includetoolDATA uninstall-info-am \ + uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ + uninstall-pdf-am uninstall-ps-am .PRECIOUS: Makefile @@ -2996,6 +3179,24 @@ clean-local: clean-multi distclean-local: distclean-multi maintainer-clean-local: maintainer-clean-multi +@CONFIG_AARCH64_TRUE@aarch64/crt0.$(OBJEXT): aarch64/crt0.S +@CONFIG_AARCH64_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -o $@ -c $< +@CONFIG_AARCH64_TRUE@aarch64/rdimon-crt0.$(OBJEXT): aarch64/crt0.S +@CONFIG_AARCH64_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< + +@CONFIG_AARCH64_TRUE@aarch64/%.specs: aarch64/$(AARCH64_OBJTYPE)%.specs +@CONFIG_AARCH64_TRUE@ $(AM_V_GEN)cp $< $@ + +@CONFIG_AARCH64_TRUE@aarch64/cpu-init/$(am__dirstamp): +@CONFIG_AARCH64_TRUE@ @$(MKDIR_P) aarch64/cpu-init +@CONFIG_AARCH64_TRUE@ @: > $@ + +@CONFIG_AARCH64_TRUE@aarch64/cpu-init/rdimon-aem-el3.$(OBJEXT): aarch64/cpu-init/rdimon-aem-el3.S aarch64/cpu-init/$(am__dirstamp) +@CONFIG_AARCH64_TRUE@ $(AM_V_CC)$(COMPILE) $(aarch64_cpu_init_CPPFLAGS) -DARM_RDI_MONITOR -o $@ -c $< + +@CONFIG_AARCH64_TRUE@aarch64/cpu-init/rdimon-aem-v8-r.$(OBJEXT): aarch64/cpu-init/rdimon-aem-el3.S aarch64/cpu-init/$(am__dirstamp) +@CONFIG_AARCH64_TRUE@ $(AM_V_CC)$(COMPILE) $(aarch64_cpu_init_CPPFLAGS) -DARM_RDI_MONITOR -DBUILD_FOR_R_PROFILE -o $@ -c $< + @CONFIG_BFIN_TRUE@bfin/basiccrt.$(OBJEXT): bfin/basiccrt.S @CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) @CONFIG_BFIN_TRUE@bfin/basiccrts.$(OBJEXT): bfin/basiccrt.S diff --git a/libgloss/aarch64/Makefile.in b/libgloss/aarch64/Makefile.in deleted file mode 100644 index 980c75858d..0000000000 --- a/libgloss/aarch64/Makefile.in +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright (c) 2012 ARM Ltd. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. The name of the company may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -abs_srcdir = @abs_srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -objtype = @AARCH64_OBJTYPE@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -OBJS = ftruncate.o libcfunc.o syscalls.o truncate.o _exit.o _kill.o -CRT0 = crt0.o -CRT0_INSTALL = install-crt0 - -RDIMON_CRT0 = rdimon-crt0.o -RDIMON_BSP = librdimon.a -RDIMON_OBJS = $(patsubst %,rdimon-%,$(OBJS)) -RDIMON_SCRIPTS = rdimon.specs \ - aem-ve.specs \ - aem-validation.specs \ - aem-v8-r.specs -RDIMON_INSTALL = install-rdimon - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# - -all: ${CRT0} ${RDIMON_CRT0} ${RDIMON_BSP} ${RDIMON_SCRIPTS} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: - -# -crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -o $@ -c $< - -rdimon-crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -#rdimon-trap.o: trap.S -# $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-_exit.o: _exit.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-ftruncate.o: ftruncate.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-_kill.o: _kill.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-libcfunc.o: libcfunc.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-syscalls.o: syscalls.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-truncate.o: truncate.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -$(RDIMON_BSP): $(RDIMON_OBJS) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) ${RDIMON_SCRIPTS} - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${CRT0_INSTALL} ${RDIMON_INSTALL} - -install-crt0: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - ${INSTALL_DATA} ${CRT0} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x - -install-rdimon: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${RDIMON_CRT0} ${RDIMON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${RDIMON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -# Make copies of the scripts to facilitate in-tree bootstrapping. -${RDIMON_SCRIPTS}: %: ${objtype}% - cp $< $@ - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/aarch64/Makefile.inc b/libgloss/aarch64/Makefile.inc new file mode 100644 index 0000000000..b9c8d98336 --- /dev/null +++ b/libgloss/aarch64/Makefile.inc @@ -0,0 +1,34 @@ +multilibtool_LIBRARIES += %D%/librdimon.a +%C%_librdimon_a_SOURCES = \ + %D%/_exit.c \ + %D%/_kill.c \ + %D%/ftruncate.c \ + %D%/libcfunc.c \ + %D%/syscalls.c \ + %D%/truncate.c +%C%_librdimon_a_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DSEMIHOST_V2 -DARM_RDI_MONITOR + +%C%_SPECS = \ + %D%/aem-v8-r.specs \ + %D%/aem-validation.specs \ + %D%/aem-ve.specs \ + %D%/rdimon.specs +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/rdimon-crt0.o \ + $(%C%_SPECS) + +%D%/crt0.$(OBJEXT): %D%/crt0.S + $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -o $@ -c $< +%D%/rdimon-crt0.$(OBJEXT): %D%/crt0.S + $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< + +## Make copies of the scripts to facilitate in-tree bootstrapping. +%D%/%.specs: %D%/$(AARCH64_OBJTYPE)%.specs + $(AM_V_GEN)cp $< $@ + +CLEANFILES += $(%C%_SPECS) + +include %D%/cpu-init/Makefile.inc diff --git a/libgloss/aarch64/cpu-init/Makefile.in b/libgloss/aarch64/cpu-init/Makefile.in deleted file mode 100644 index 4aef917ebe..0000000000 --- a/libgloss/aarch64/cpu-init/Makefile.in +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (c) 2012 ARM Ltd. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. The name of the company may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. @srcdir@/../.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../../.. -objroot = $(objdir)/../../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -SHELL = /bin/sh - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -CPU_INIT_OBJS = rdimon-aem-el3.o rdimon-aem-v8-r.o -CPU_INIT_INSTALL = install-cpu-init - -CFLAGS = -g - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -.PHONY: all -all: ${CPU_INIT_OBJS} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: - -rdimon-aem-el3.o : rdimon-aem-el3.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-aem-v8-r.o : rdimon-aem-el3.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -DBUILD_FOR_R_PROFILE -o $@ -c $< - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${CPU_INIT_INSTALL} - -install-cpu-init: - test -d $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init || mkdir $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init - set -e; for x in ${CPU_INIT_OBJS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init/$$x; done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../../config.status - cd ../.. && $(SHELL) ./config.status --file aarch64/cpu-init/Makefile diff --git a/libgloss/aarch64/cpu-init/Makefile.inc b/libgloss/aarch64/cpu-init/Makefile.inc new file mode 100644 index 0000000000..031369ee7e --- /dev/null +++ b/libgloss/aarch64/cpu-init/Makefile.inc @@ -0,0 +1,20 @@ +%C%_CPPFLAGS = -I$(srcdir)/%D%/.. + +%C%cpuinitdir = $(tooldir)/lib$(MULTISUBDIR)/cpu-init +%C%cpuinit_DATA = \ + %D%/rdimon-aem-el3.o \ + %D%/rdimon-aem-v8-r.o + +## The manual dirstamp is needed as automake doesn't recognize compile rules +## via DATA. If we ever add rules it does know about, we can drop this. +%D%/$(am__dirstamp): + @$(MKDIR_P) %D% + @: > $@ + +%D%/rdimon-aem-el3.$(OBJEXT): %D%/rdimon-aem-el3.S %D%/$(am__dirstamp) + $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -DARM_RDI_MONITOR -o $@ -c $< + +%D%/rdimon-aem-v8-r.$(OBJEXT): %D%/rdimon-aem-el3.S %D%/$(am__dirstamp) + $(AM_V_CC)$(COMPILE) $(%C%_CPPFLAGS) -DARM_RDI_MONITOR -DBUILD_FOR_R_PROFILE -o $@ -c $< + +CLEANFILES += $(%C%cpuinit_DATA) diff --git a/libgloss/configure b/libgloss/configure index 8de7e1f154..d89ba5b517 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -644,6 +644,8 @@ CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE CONFIG_BFIN_FALSE CONFIG_BFIN_TRUE +CONFIG_AARCH64_FALSE +CONFIG_AARCH64_TRUE subdirs HAVE_MULTISUBDIR_FALSE HAVE_MULTISUBDIR_TRUE @@ -2729,9 +2731,7 @@ target_makefile_frag=${srcdir}/config/default.mt case "${target}" in aarch64*-*-*) - ac_config_files="$ac_config_files aarch64/Makefile aarch64/cpu-init/Makefile" - - subdirs="$subdirs aarch64 aarch64/cpu-init" + config_aarch64=true config_testsuite=true ;; arc*-*-*) @@ -2974,6 +2974,14 @@ case "${target}" in esac + if test x$config_aarch64 = xtrue; then + CONFIG_AARCH64_TRUE= + CONFIG_AARCH64_FALSE='#' +else + CONFIG_AARCH64_TRUE='#' + CONFIG_AARCH64_FALSE= +fi + if test x$config_bfin = xtrue; then CONFIG_BFIN_TRUE= CONFIG_BFIN_FALSE='#' @@ -5248,6 +5256,10 @@ if test -z "${HAVE_MULTISUBDIR_TRUE}" && test -z "${HAVE_MULTISUBDIR_FALSE}"; th as_fn_error $? "conditional \"HAVE_MULTISUBDIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_AARCH64_TRUE}" && test -z "${CONFIG_AARCH64_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_AARCH64\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_BFIN_TRUE}" && test -z "${CONFIG_BFIN_FALSE}"; then as_fn_error $? "conditional \"CONFIG_BFIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5892,8 +5904,6 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "aarch64/Makefile") CONFIG_FILES="$CONFIG_FILES aarch64/Makefile" ;; - "aarch64/cpu-init/Makefile") CONFIG_FILES="$CONFIG_FILES aarch64/cpu-init/Makefile" ;; "arc/Makefile") CONFIG_FILES="$CONFIG_FILES arc/Makefile" ;; "csky/Makefile") CONFIG_FILES="$CONFIG_FILES csky/Makefile" ;; "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 9906781a72..33026534ff 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -46,8 +46,7 @@ target_makefile_frag=${srcdir}/config/default.mt case "${target}" in aarch64*-*-*) - AC_CONFIG_FILES([aarch64/Makefile aarch64/cpu-init/Makefile]) - subdirs="$subdirs aarch64 aarch64/cpu-init" + config_aarch64=true config_testsuite=true ;; arc*-*-*) @@ -251,7 +250,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - bfin iq2000 libnosys lm32 riscv wince + aarch64 bfin iq2000 libnosys lm32 riscv wince ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) From 1a9f95d8941d58385fb76ec20fac143c035cec85 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 23 Dec 2022 13:05:34 +0000 Subject: [PATCH 076/767] Cygwin: Run testsuite against the just-built DLL Since 4e7817498efc, we're just running the tests against the installed DLL. We're arranging to put the build directory on the path, but since it doesn't contain cygwin1.dll (since it's built with a different name and renamed on installation), that doesn't have any effect. Arrange to place the just-built DLL into a directory which the testsuite can place on it's path (while running the test, but not while compiling it). Also fix any remaining references to cygwin0.dll in testsuite, documentation and comments. Fixes: 4e7817498efc ("Cygwin: Makefile: Drop all the "test dll" considerations") --- winsup/cygwin/Makefile.am | 8 +++++--- winsup/cygwin/scripts/analyze_sigfe | 2 +- winsup/testsuite/Makefile.am | 3 ++- winsup/testsuite/README | 9 +++------ winsup/testsuite/config/default.exp | 2 +- winsup/testsuite/winsup.api/cygload.exp | 2 +- winsup/testsuite/winsup.api/winsup.exp | 8 +++++--- 7 files changed, 18 insertions(+), 16 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 2faa867f9f..125358b4b3 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -577,9 +577,9 @@ LIBSERVER = $(cygserver_blddir)/libcygserver.a $(LIBSERVER): $(MAKE) -C $(cygserver_blddir) libcygserver.a -# We build as cygwin0.dll and rename at install time to overcome native +# We build as new-cygwin1.dll and rename at install time to overcome native # rebuilding issues (we don't want the build tools to see a partially built -# cygwin.dll and attempt to use it instead of the old one). +# cygwin1.dll and attempt to use it instead of the old one). # linker script LDSCRIPT=cygwin.sc @@ -601,6 +601,8 @@ $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libm.a \ $(newlib_build)/libc.a \ -lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map + @$(MKDIR_P) ${target_builddir}/winsup/testsuite/runtime/ + $(AM_V_at)$(INSTALL_PROGRAM) $(NEW_DLL_NAME) ${target_builddir}/winsup/testsuite/runtime/$(DLL_NAME) # cygwin import library toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@ @@ -712,7 +714,7 @@ install-ldif: uninstall-hook: uninstall-headers uninstall-ldif uninstall-libs uninstall-libs: - rm -f $(DESTDIR)$(bindir)/cygwin1.dll + rm -f $(DESTDIR)$(bindir)/$(DLL_NAME) rm -f $(DESTDIR)$(toollibdir)/libg.a uninstall-headers: diff --git a/winsup/cygwin/scripts/analyze_sigfe b/winsup/cygwin/scripts/analyze_sigfe index 8704eea48b..f6bda2355a 100755 --- a/winsup/cygwin/scripts/analyze_sigfe +++ b/winsup/cygwin/scripts/analyze_sigfe @@ -9,7 +9,7 @@ # This will do a crude test to see if the (NO)?SIGFE stuff is used properly # in cygwin.din. It is not perfect so do not use it to do a wholesale replacement. # -# Input is the output of 'objdump --disassemble --demangle cygwin0.dll'. +# Input is the output of 'objdump --disassemble --demangle new-cygwin1.dll'. # use strict; use vars qw'$v'; diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index ac68934d02..a7b435c46a 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -45,7 +45,8 @@ testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive site-extra.exp: ../config.status Makefile @rm -f ./tmp0 - @echo "set runtime_root \"`pwd`/../cygwin\"" >> ./tmp0 + @echo "set runtime_root \"`pwd`/runtime\"" >> ./tmp0 + @echo "set libdir \"`pwd`/../cygwin\"" >> ./tmp0 @echo "set CC \"$(CC)\"" >> ./tmp0 @echo "set CFLAGS \"\"" >> ./tmp0 @echo "set MINGW_CXX \"$(MINGW_CXX)\"" >> ./tmp0 diff --git a/winsup/testsuite/README b/winsup/testsuite/README index 2f6749bb86..c22b065943 100644 --- a/winsup/testsuite/README +++ b/winsup/testsuite/README @@ -2,10 +2,9 @@ Here are some notes about adding and using this testsuite. -First, all the programs are linked with libcygwin0.a, which is just -like libcygwin.a, except that it wants cygwin0.dll, not -cygwin1.dll. The testsuite adds the winsup build directory to the -PATH so that cygwin0.dll can be found by windows during testing. +The testsuite adds a directory containing the just built cygwin1.dll to the PATH +(during the run step) so that it can be found by the Windows loader during +testing. Because we'll probably run into complaints about using two DLLs, we run cygrun.exe for each test. All this does is run the test with @@ -36,5 +35,3 @@ Cross-checking is not supported. To test a subset of the test-suite, use $ make check CYGWIN_TESTSUITE_TESTS=regexp - - diff --git a/winsup/testsuite/config/default.exp b/winsup/testsuite/config/default.exp index 7ef16ee6a9..ad91caa037 100644 --- a/winsup/testsuite/config/default.exp +++ b/winsup/testsuite/config/default.exp @@ -1,7 +1,7 @@ proc winsup_version {} { global env global runtime_root - clone_output "\n[exec grep -a ^%%% $runtime_root/cygwin0.dll]\n" + clone_output "\n[exec grep -a ^%%% $runtime_root/cygwin1.dll]\n" if { [info exists env(CYGWIN)] } { clone_output "CYGWIN=$env(CYGWIN)\n" } else { diff --git a/winsup/testsuite/winsup.api/cygload.exp b/winsup/testsuite/winsup.api/cygload.exp index 8ba8249bbc..e378820ad8 100644 --- a/winsup/testsuite/winsup.api/cygload.exp +++ b/winsup/testsuite/winsup.api/cygload.exp @@ -32,7 +32,7 @@ if { $rv != {0 {}} } { set redirect_output /dev/null } set windows_runtime_root [exec cygpath -m $runtime_root] - ws_spawn "./mingw-cygload.exe -cygwin $windows_runtime_root/cygwin0.dll > $redirect_output" + ws_spawn "./mingw-cygload.exe -cygwin $windows_runtime_root/cygwin1.dll > $redirect_output" if { $rv != {0 {}} } { verbose -log "cygload: $rv" fail "cygload (execute)" diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp index f755c82d96..e81ead3046 100644 --- a/winsup/testsuite/winsup.api/winsup.exp +++ b/winsup/testsuite/winsup.api/winsup.exp @@ -14,9 +14,9 @@ set ltp_libs "$ltp_libs" set add_includes $ltp_includes set add_libs $ltp_libs -set test_filter "" +set orig_path "$env(PATH)" -set env(PATH) "$runtime_root:$env(PATH)" +set test_filter "" if { [info exists env(CYGWIN_TESTSUITE_TESTS)] } { set test_filter "$env(CYGWIN_TESTSUITE_TESTS)" @@ -61,7 +61,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc if [ file exists "$srcdir/$subdir/$basename.exp" ] then { source "$srcdir/$subdir/$basename.exp" } else { - ws_spawn "$CC -nodefaultlibs -mwin32 $CFLAGS $src $add_includes $add_libs $runtime_root/binmode.o -lgcc $runtime_root/libcygwin.a -lkernel32 -luser32 -o $base.exe" + ws_spawn "$CC -nodefaultlibs -mwin32 $CFLAGS $src $add_includes $add_libs $libdir/binmode.o -lgcc $libdir/libcygwin.a -lkernel32 -luser32 -o $base.exe" if { $rv } { fail "$testcase (compile)" } else { @@ -71,8 +71,10 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc set redirect_output /dev/null } file mkdir $tmpdir/$base + set env(PATH) "$runtime_root:$env(PATH)" ws_spawn "$cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output" file delete -force $tmpdir/$base + set env(PATH) "$orig_path" if { $rv } { fail "$testcase (execute)" if { $xfail_expected } { From 7c14e5a10add3ad3dc53ed6af1ad2044d205e844 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 10 Jan 2023 11:45:28 +0100 Subject: [PATCH 077/767] Cygwin: /proc//status: avoid crash computing signal info The code computing the mask of pending signals used the per-queued signal TLS pointer without checking it for NULL. Fix this by using the process-wide signal mask in that case. Fixes: 195169186bfd5 ("Cygwin: wait_sig: allow to compute process-wide mask of pending signals") Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.4 | 3 +++ winsup/cygwin/sigproc.cc | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 index a653b08a1a..35d746ba08 100644 --- a/winsup/cygwin/release/3.4.4 +++ b/winsup/cygwin/release/3.4.4 @@ -10,3 +10,6 @@ Bug Fixes - Reinstantiate exporting _alloca. Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252797.html + +- Avoid hangs when reading /proc//status. + Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252756.html diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index ce36c8be37..86e4e607ab 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1375,7 +1375,8 @@ wait_sig (VOID *) *pack.mask = 0; while ((q = q->next)) { - if (q->sigtls->sigmask & (bit = SIGTOMASK (q->si.si_signo))) + _cygtls *sigtls = q->sigtls ?: _main_tls; + if (sigtls->sigmask & (bit = SIGTOMASK (q->si.si_signo))) { tl_entry = cygheap->find_tls (q->si.si_signo, issig_wait); if (tl_entry) From a81fef51cf9f1b9fad73ad85826f02f40d85fda6 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 10 Jan 2023 21:04:29 +0900 Subject: [PATCH 078/767] Cygwin: cygheap: Initialize myself_pinfo before child_copy(). After the commit 30add3e6b3e3, the problem: https://cygwin.com/pipermail/cygwin/2022-December/252759.html occurs rarely. It seems that myself_pinfo should be initialized where the timing before child_copy() and after cygheap allocation. This patch moves the initialization there. Fixes: 30add3e6b3e3 ("Cygwin: exec: don't access cygheap before it's initialized") Reported-by: Brian Inglis Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/dcrt0.cc | 2 -- winsup/cygwin/mm/cygheap.cc | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 5c5a280cce..49b7a44aeb 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -631,8 +631,6 @@ child_info_spawn::handle_spawn () if (!dynamically_loaded || get_parent_handle ()) { cygheap_fixup_in_child (true); - if (dynamically_loaded) - moreinfo->myself_pinfo = NULL; memory_init (); } diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index 72861d8d70..6a20c159ab 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -95,6 +95,8 @@ cygheap_fixup_in_child (bool execed) cygheap = (init_cygheap *) VirtualAlloc ((LPVOID) CYGHEAP_STORAGE_LOW, commit_size, MEM_COMMIT, PAGE_READWRITE); + if (dynamically_loaded && execed) + spawn_info->moreinfo->myself_pinfo = NULL; cygheap_max = child_proc_info->cygheap_max; child_copy (child_proc_info->parent, false, child_proc_info->silentfail (), "cygheap", cygheap, cygheap_max, NULL); From 8e77725f3183e91762b2cac3682c7a3f0f4483f9 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 26 Dec 2022 20:50:15 +0900 Subject: [PATCH 079/767] Cygwin: pinfo: Additional fix for CTTY behavior. The commit 25c4ad6ea52f did not fix the CTTY behavior enough. For example, in the following test case, TTY will be associated as a CTTY on the second open() call even though the TTY is already CTTY of another session. This patch fixes the issue. #include #include int main() { if (fork () == 0) { char *tty = ttyname(0); int fd; setsid(); fd = open(tty, O_RDWR); close(fd); fd = open(tty, O_RDWR); usleep (60000000L); } return 0; } Fixes: 25c4ad6ea52f ("Cygwin: pinfo: Align CTTY behavior to the statement of POSIX.") Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/termios.cc | 1 - winsup/cygwin/pinfo.cc | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/termios.cc b/winsup/cygwin/fhandler/termios.cc index f94e20ff61..5b92cdd319 100644 --- a/winsup/cygwin/fhandler/termios.cc +++ b/winsup/cygwin/fhandler/termios.cc @@ -736,7 +736,6 @@ fhandler_termios::ioctl (int cmd, void *varg) return -1; } - myself->ctty = -1; if (!myself->set_ctty (this, 0)) { set_errno (EPERM); diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index ff10d9cf8c..ece3460370 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -530,7 +530,7 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) debug_printf ("old %s, ctty device number %y, tc.ntty device number %y flags & O_NOCTTY %y", __ctty (), ctty, tc.ntty, flags & O_NOCTTY); if (fh && (ctty <= 0 || ctty == tc.ntty) && !(flags & O_NOCTTY)) { - if (tc.getsid () && tc.getsid () != sid) + if (tc.getsid () && tc.getsid () != sid && ctty == -2) ; /* Do nothing if another session is associated with the TTY. */ else { @@ -576,7 +576,8 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) an obvious bug surfaces. */ if (sid == pid && !tc.getsid ()) tc.setsid (sid); - sid = tc.getsid (); + if (ctty > 0) + sid = tc.getsid (); /* See above */ if ((!tc.getpgid () || being_debugged ()) && pgid == pid) tc.setpgid (pgid); From 3b7df69aaa5752f78537eafa5838f65a1ddfc938 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 10 Jan 2023 22:04:40 +0900 Subject: [PATCH 080/767] Cygwin: ctty: Add comments for the special values: -1 and -2. _pinfo::ctty has two special values other than the device id of the allocated ctty: -1: CTTY is not initialized yet. Can be associated with the TTY which is associated with the session leader. -2: CTTY has been released by setsid(). Can be associate only with new TTY which is not associated with any other session as CTTY, but cannot be associate with the TTYs already associated with other sessions. This patch adds the comments in some source files. Suggested-by: Corinna Vinschen Signedoff-by: Takashi Yano --- winsup/cygwin/pinfo.cc | 5 ++++- winsup/cygwin/syscalls.cc | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index ece3460370..fc618b9b8d 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -97,7 +97,7 @@ pinfo_init (char **envp, int envc) myself.thisproc (NULL); myself->pgid = myself->sid = myself->pid; - myself->ctty = -1; + myself->ctty = -1; /* -1 means not initialized yet. */ myself->uid = ILLEGAL_UID; myself->gid = ILLEGAL_GID; environ_init (NULL, 0); /* call after myself has been set up */ @@ -531,6 +531,9 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) if (fh && (ctty <= 0 || ctty == tc.ntty) && !(flags & O_NOCTTY)) { if (tc.getsid () && tc.getsid () != sid && ctty == -2) + /* ctty == -2 means CTTY has been released by setsid(). + Can be associated only with a new TTY which is not + associated with any other session. */ ; /* Do nothing if another session is associated with the TTY. */ else { diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index fff8af009f..15ddbb0a86 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1176,7 +1176,9 @@ setsid (void) syscall_printf ("hmm. pgid %d pid %d", myself->pgid, myself->pid); else { - myself->ctty = -2; + myself->ctty = -2; /* -2 means CTTY has been released by setsid(). + Can be associated only with a new TTY which + is not associated with any session. */ myself->sid = myself->pid; myself->pgid = myself->pid; if (cygheap->ctty) From 9d6b00511e50a54d2472d11f75f7c0f2b4a98b24 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:19:59 +0000 Subject: [PATCH 081/767] newlib: libc: define M-profile PACBTI-enablement macros Augment the arm_asm.h header file to simplify function prologues and epilogues whilst adding support for PACBTI enablement via macros for hand-written assembly functions. For PACBTI, both prologues/epilogues as well as cfi-related directives are automatically amended accordingly, depending on the compile-time mbranch-protection argument values. It defines the following preprocessor macros: * HAVE_PAC_LEAF: Indicates whether pac-signing has been requested for leaf functions. * PAC_LEAF_PUSH_IP: Whether leaf functions should push the pac code to the stack irrespective of whether the ip register is clobbered in the function or not. * STACK_ALIGN_ENFORCE: Whether a dummy register should be added to the push list as necessary in the prologue to ensure stack alignment preservation at the start of assembly function. The epilogue behavior is likewise affected by this flag, ensuring any pushed dummy registers also get popped on function return. It also defines the following assembler macros: * prologue: In addition to pushing any callee-saved registers onto the stack, it generates any requested pacbti instructions. Pushed registers are specified via the optional `first', `last', `push_ip' and `push_lr' macro argument parameters. when a single register number is provided, it pushes that register. When two register numbers are provided, they specify a rage to save. If push_ip and/or push_lr are non-zero, the respective registers are also saved. Stack alignment is requested via the `align` argument, which defaults to the value of STACK_ALIGN_ENFORCE, unless manually overridden. For example: prologue push_ip=1 -> push {ip} prologue push_ip=1, align8=1 -> push {r2, ip} prologue push_ip=1, push_lr=1 -> push {ip, lr} prologue 1 -> push {r1} prologue 1, align8=1 -> push {r0, r1} prologue 1 push_ip=1 -> push {r1, ip} prologue 1 4 -> push {r1-r4} prologue 1 4 push_ip=1 -> push {r1-r4, ip} * epilogue: pops registers off the stack and emits pac key signing instruction, if requested. The `first', `last', `push_ip', `push_lr' and `align' function as per the prologue macro, generating pop instead of push instructions. Stack alignment is enforced via the following helper macro call-chain: {prologue|epilogue} ->_align8 -> _preprocess_reglist -> _preprocess_reglist1 -> {_prologue|_epilogue} Finally, the necessary cfi directives for adding debug information to prologue and epilogue are generated via the following macros: * cfisavelist - prologue macro helper function, generating necessary .cfi_offset directives associated with push instruction. Therefore, the net effect of calling `prologue 1 2 push_ip=1' is to generate the following: push {r1-r2, ip} .cfi_adjust_cfa_offset 12 .cfi_offset 143, -4 .cfi_offset 2, -8 .cfi_offset 1, -12 * cfirestorelist - epilogue macro helper function, emitting .cfi_restore instructions prior to resetting the cfa offset. As such, calling `epilogue 1 2 push_ip=1' will produce: pop {r1-r2, ip} .cfi_register 143, 12 .cfi_restore 2 .cfi_restore 1 .cfi_def_cfa_offset 0 --- newlib/libc/machine/arm/arm_asm.h | 441 ++++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) diff --git a/newlib/libc/machine/arm/arm_asm.h b/newlib/libc/machine/arm/arm_asm.h index 2708057deb..94fa77b4da 100644 --- a/newlib/libc/machine/arm/arm_asm.h +++ b/newlib/libc/machine/arm/arm_asm.h @@ -60,4 +60,445 @@ # define _ISA_THUMB_1 #endif +/* Check whether leaf function PAC signing has been requested in the + -mbranch-protect compile-time option. */ +#define LEAF_PROTECT_BIT 2 + +#ifdef __ARM_FEATURE_PAC_DEFAULT +# define HAVE_PAC_LEAF \ + ((__ARM_FEATURE_PAC_DEFAULT & (1 << LEAF_PROTECT_BIT)) && 1) +#else +# define HAVE_PAC_LEAF 0 +#endif + +/* Provide default parameters for PAC-code handling in leaf-functions. */ +#if HAVE_PAC_LEAF +# ifndef PAC_LEAF_PUSH_IP +# define PAC_LEAF_PUSH_IP 1 +# endif +#else /* !HAVE_PAC_LEAF */ +# undef PAC_LEAF_PUSH_IP +# define PAC_LEAF_PUSH_IP 0 +#endif /* HAVE_PAC_LEAF */ + +#define STACK_ALIGN_ENFORCE 0 + +#ifdef __ASSEMBLER__ + +/****************************************************************************** +* Implementation of the prologue and epilogue assembler macros and their +* associated helper functions. +* +* These functions add support for the following: +* +* - M-profile branch target identification (BTI) landing-pads when compiled +* with `-mbranch-protection=bti'. +* - PAC-signing and verification instructions, depending on hardware support +* and whether the PAC-signing of leaf functions has been requested via the +* `-mbranch-protection=pac-ret+leaf' compiler argument. +* - 8-byte stack alignment preservation at function entry, defaulting to the +* value of STACK_ALIGN_ENFORCE. +* +* Notes: +* - Prologue stack alignment is implemented by detecting a push with an odd +* number of registers and prepending a dummy register to the list. +* - If alignment is attempted on a list containing r0, compilation will result +* in an error. +* - If alignment is attempted in a list containing r1, r0 will be prepended to +* the register list and r0 will be restored prior to function return. for +* functions with non-void return types, this will result in the corruption of +* the result register. +* - Stack alignment is enforced via the following helper macro call-chain: +* +* {prologue|epilogue} ->_align8 -> _preprocess_reglist -> +* _preprocess_reglist1 -> {_prologue|_epilogue} +* +* - Debug CFI directives are automatically added to prologues and epilogues, +* assisted by `cfisavelist' and `cfirestorelist', respectively. +* +* Arguments: +* prologue +* -------- +* - first - If `last' specified, this serves as start of general-purpose +* register (GPR) range to push onto stack, otherwise represents +* single GPR to push onto stack. If omitted, no GPRs pushed +* onto stack at prologue. +* - last - If given, specifies inclusive upper-bound of GPR range. +* - push_ip - Determines whether IP register is to be pushed to stack at +* prologue. When pac-signing is requested, this holds the +* the pac-key. Either 1 or 0 to push or not push, respectively. +* Default behavior: Set to value of PAC_LEAF_PUSH_IP macro. +* - push_lr - Determines whether to push lr to the stack on function entry. +* Either 1 or 0 to push or not push, respectively. +* - align8 - Whether to enforce alignment. Either 1 or 0, with 1 requesting +* alignment. +* +* epilogue +* -------- +* The epilogue should be called passing the same arguments as those passed to +* the prologue to ensure the stack is not corrupted on function return. +* +* Usage examples: +* +* prologue push_ip=1 -> push {ip} +* epilogue push_ip=1, align8=1 -> pop {r2, ip} +* prologue push_ip=1, push_lr=1 -> push {ip, lr} +* epilogue 1 -> pop {r1} +* prologue 1, align8=1 -> push {r0, r1} +* epilogue 1, push_ip=1 -> pop {r1, ip} +* prologue 1, 4 -> push {r1-r4} +* epilogue 1, 4 push_ip=1 -> pop {r1-r4, ip} +* +******************************************************************************/ + +/* Emit .cfi_restore directives for a consecutive sequence of registers. */ + .macro cfirestorelist first, last + .cfi_restore \last + .if \last-\first + cfirestorelist \first, \last-1 + .endif + .endm + +/* Emit .cfi_offset directives for a consecutive sequence of registers. */ + .macro cfisavelist first, last, index=1 + .cfi_offset \last, -4*(\index) + .if \last-\first + cfisavelist \first, \last-1, \index+1 + .endif + .endm + +.macro _prologue first=-1, last=-1, push_ip=PAC_LEAF_PUSH_IP, push_lr=0 + .if \push_ip & 1 != \push_ip + .error "push_ip may be either 0 or 1" + .endif + .if \push_lr & 1 != \push_lr + .error "push_lr may be either 0 or 1" + .endif + .if \first != -1 + .if \last == -1 + /* Upper-bound not provided: Set upper = lower. */ + _prologue \first, \first, \push_ip, \push_lr + .exitm + .endif + .endif +#if HAVE_PAC_LEAF +#if __ARM_FEATURE_BTI_DEFAULT + pacbti ip, lr, sp +#else + pac ip, lr, sp +#endif /* __ARM_FEATURE_BTI_DEFAULT */ + .cfi_register 143, 12 +#else +#if __ARM_FEATURE_BTI_DEFAULT + bti +#endif /* __ARM_FEATURE_BTI_DEFAULT */ +#endif /* HAVE_PAC_LEAF */ + .if \first != -1 + .if \last != \first + .if \last >= 13 + .error "SP cannot be in the save list" + .endif + .if \push_ip + .if \push_lr + /* Case 1: push register range, ip and lr registers. */ + push {r\first-r\last, ip, lr} + .cfi_adjust_cfa_offset ((\last-\first)+3)*4 + .cfi_offset 14, -4 + .cfi_offset 143, -8 + cfisavelist \first, \last, 3 + .else // !\push_lr + /* Case 2: push register range and ip register. */ + push {r\first-r\last, ip} + .cfi_adjust_cfa_offset ((\last-\first)+2)*4 + .cfi_offset 143, -4 + cfisavelist \first, \last, 2 + .endif + .else // !\push_ip + .if \push_lr + /* Case 3: push register range and lr register. */ + push {r\first-r\last, lr} + .cfi_adjust_cfa_offset ((\last-\first)+2)*4 + .cfi_offset 14, -4 + cfisavelist \first, \last, 2 + .else // !\push_lr + /* Case 4: push register range. */ + push {r\first-r\last} + .cfi_adjust_cfa_offset ((\last-\first)+1)*4 + cfisavelist \first, \last, 1 + .endif + .endif + .else // \last == \first + .if \push_ip + .if \push_lr + /* Case 5: push single GP register plus ip and lr registers. */ + push {r\first, ip, lr} + .cfi_adjust_cfa_offset 12 + .cfi_offset 14, -4 + .cfi_offset 143, -8 + cfisavelist \first, \first, 3 + .else // !\push_lr + /* Case 6: push single GP register plus ip register. */ + push {r\first, ip} + .cfi_adjust_cfa_offset 8 + .cfi_offset 143, -4 + cfisavelist \first, \first, 2 + .endif + .else // !\push_ip + .if \push_lr + /* Case 7: push single GP register plus lr register. */ + push {r\first, lr} + .cfi_adjust_cfa_offset 8 + .cfi_offset 14, -4 + cfisavelist \first, \first, 2 + .else // !\push_lr + /* Case 8: push single GP register. */ + push {r\first} + .cfi_adjust_cfa_offset 4 + cfisavelist \first, \first, 1 + .endif + .endif + .endif + .else // \first == -1 + .if \push_ip + .if \push_lr + /* Case 9: push ip and lr registers. */ + push {ip, lr} + .cfi_adjust_cfa_offset 8 + .cfi_offset 14, -4 + .cfi_offset 143, -8 + .else // !\push_lr + /* Case 10: push ip register. */ + push {ip} + .cfi_adjust_cfa_offset 4 + .cfi_offset 143, -4 + .endif + .else // !\push_ip + .if \push_lr + /* Case 11: push lr register. */ + push {lr} + .cfi_adjust_cfa_offset 4 + .cfi_offset 14, -4 + .endif + .endif + .endif +.endm + +.macro _epilogue first=-1, last=-1, push_ip=PAC_LEAF_PUSH_IP, push_lr=0 + .if \push_ip & 1 != \push_ip + .error "push_ip may be either 0 or 1" + .endif + .if \push_lr & 1 != \push_lr + .error "push_lr may be either 0 or 1" + .endif + .if \first != -1 + .if \last == -1 + /* Upper-bound not provided: Set upper = lower. */ + _epilogue \first, \first, \push_ip, \push_lr + .exitm + .endif + .if \last != \first + .if \last >= 13 + .error "SP cannot be in the save list" + .endif + .if \push_ip + .if \push_lr + /* Case 1: pop register range, ip and lr registers. */ + pop {r\first-r\last, ip, lr} + .cfi_restore 14 + .cfi_register 143, 12 + cfirestorelist \first, \last + .else // !\push_lr + /* Case 2: pop register range and ip register. */ + pop {r\first-r\last, ip} + .cfi_register 143, 12 + cfirestorelist \first, \last + .endif + .else // !\push_ip + .if \push_lr + /* Case 3: pop register range and lr register. */ + pop {r\first-r\last, lr} + .cfi_restore 14 + cfirestorelist \first, \last + .else // !\push_lr + /* Case 4: pop register range. */ + pop {r\first-r\last} + cfirestorelist \first, \last + .endif + .endif + .else // \last == \first + .if \push_ip + .if \push_lr + /* Case 5: pop single GP register plus ip and lr registers. */ + pop {r\first, ip, lr} + .cfi_restore 14 + .cfi_register 143, 12 + cfirestorelist \first, \first + .else // !\push_lr + /* Case 6: pop single GP register plus ip register. */ + pop {r\first, ip} + .cfi_register 143, 12 + cfirestorelist \first, \first + .endif + .else // !\push_ip + .if \push_lr + /* Case 7: pop single GP register plus lr register. */ + pop {r\first, lr} + .cfi_restore 14 + cfirestorelist \first, \first + .else // !\push_lr + /* Case 8: pop single GP register. */ + pop {r\first} + cfirestorelist \first, \first + .endif + .endif + .endif + .else // \first == -1 + .if \push_ip + .if \push_lr + /* Case 9: pop ip and lr registers. */ + pop {ip, lr} + .cfi_restore 14 + .cfi_register 143, 12 + .else // !\push_lr + /* Case 10: pop ip register. */ + pop {ip} + .cfi_register 143, 12 + .endif + .else // !\push_ip + .if \push_lr + /* Case 11: pop lr register. */ + pop {lr} + .cfi_restore 14 + .endif + .endif + .endif +#if HAVE_PAC_LEAF + aut ip, lr, sp +#endif /* HAVE_PAC_LEAF */ + bx lr +.endm + +# clean up expressions in 'last' +.macro _preprocess_reglist1 first:req, last:req, push_ip:req, push_lr:req, reglist_op:req + .if \last == 0 + \reglist_op \first, 0, \push_ip, \push_lr + .elseif \last == 1 + \reglist_op \first, 1, \push_ip, \push_lr + .elseif \last == 2 + \reglist_op \first, 2, \push_ip, \push_lr + .elseif \last == 3 + \reglist_op \first, 3, \push_ip, \push_lr + .elseif \last == 4 + \reglist_op \first, 4, \push_ip, \push_lr + .elseif \last == 5 + \reglist_op \first, 5, \push_ip, \push_lr + .elseif \last == 6 + \reglist_op \first, 6, \push_ip, \push_lr + .elseif \last == 7 + \reglist_op \first, 7, \push_ip, \push_lr + .elseif \last == 8 + \reglist_op \first, 8, \push_ip, \push_lr + .elseif \last == 9 + \reglist_op \first, 9, \push_ip, \push_lr + .elseif \last == 10 + \reglist_op \first, 10, \push_ip, \push_lr + .elseif \last == 11 + \reglist_op \first, 11, \push_ip, \push_lr + .else + .error "last (\last) out of range" + .endif +.endm + +# clean up expressions in 'first' +.macro _preprocess_reglist first:req, last, push_ip=0, push_lr=0, reglist_op:req + .ifb \last + _preprocess_reglist \first \first \push_ip \push_lr + .else + .if \first > \last + .error "last (\last) must be at least as great as first (\first)" + .endif + .if \first == 0 + _preprocess_reglist1 0, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 1 + _preprocess_reglist1 1, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 2 + _preprocess_reglist1 2, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 3 + _preprocess_reglist1 3, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 4 + _preprocess_reglist1 4, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 5 + _preprocess_reglist1 5, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 6 + _preprocess_reglist1 6, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 7 + _preprocess_reglist1 7, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 8 + _preprocess_reglist1 8, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 9 + _preprocess_reglist1 9, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 10 + _preprocess_reglist1 10, \last, \push_ip, \push_lr, \reglist_op + .elseif \first == 11 + _preprocess_reglist1 11, \last, \push_ip, \push_lr, \reglist_op + .else + .error "first (\first) out of range" + .endif + .endif +.endm + +.macro _align8 first, last, push_ip=0, push_lr=0, reglist_op=_prologue + .ifb \first + .ifnb \last + .error "can't have last (\last) without specifying first" + .else // \last not blank + .if ((\push_ip + \push_lr) % 2) == 0 + \reglist_op first=-1, last=-1, push_ip=\push_ip, push_lr=\push_lr + .exitm + .else // ((\push_ip + \push_lr) % 2) odd + _align8 2, 2, \push_ip, \push_lr, \reglist_op + .exitm + .endif // ((\push_ip + \push_lr) % 2) == 0 + .endif // .ifnb \last + .endif // .ifb \first + + .ifb \last + _align8 \first, \first, \push_ip, \push_lr, \reglist_op + .else + .if \push_ip & 1 <> \push_ip + .error "push_ip may be 0 or 1" + .endif + .if \push_lr & 1 <> \push_lr + .error "push_lr may be 0 or 1" + .endif + .ifeq (\last - \first + \push_ip + \push_lr) % 2 + .if \first == 0 + .error "Alignment required and first register is r0" + .exitm + .endif + _preprocess_reglist \first-1, \last, \push_ip, \push_lr, \reglist_op + .else + _preprocess_reglist \first \last, \push_ip, \push_lr, \reglist_op + .endif + .endif +.endm + +.macro prologue first, last, push_ip=PAC_LEAF_PUSH_IP, push_lr=0, align8=STACK_ALIGN_ENFORCE + .if \align8 + _align8 \first, \last, \push_ip, \push_lr, _prologue + .else + _prologue first=\first, last=\last, push_ip=\push_ip, push_lr=\push_lr + .endif +.endm + +.macro epilogue first, last, push_ip=PAC_LEAF_PUSH_IP, push_lr=0, align8=STACK_ALIGN_ENFORCE + .if \align8 + _align8 \first, \last, \push_ip, \push_lr, reglist_op=_epilogue + .else + _epilogue first=\first, last=\last, push_ip=\push_ip, push_lr=\push_lr + .endif +.endm + +#endif /* __ASSEMBLER__ */ + #endif /* ARM_ASM__H */ From ebd922e77af01fbb34c66398f4a426202822c0df Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:21:22 +0000 Subject: [PATCH 082/767] newlib: libc: strcmp M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. This patch enables PACBTI for all relevant variants of strcmp: * Newlib for armv8.1-m.main+pacbti * Newlib for armv8.1-m.main+pacbti+mve * Newlib-nano --- newlib/libc/machine/arm/strcmp-arm-tiny.S | 8 +++- newlib/libc/machine/arm/strcmp-armv7.S | 57 ++++++++++++++--------- newlib/libc/machine/arm/strcmp-armv7m.S | 26 +++++++---- 3 files changed, 60 insertions(+), 31 deletions(-) diff --git a/newlib/libc/machine/arm/strcmp-arm-tiny.S b/newlib/libc/machine/arm/strcmp-arm-tiny.S index 607a41daf0..0bd2a2e6e7 100644 --- a/newlib/libc/machine/arm/strcmp-arm-tiny.S +++ b/newlib/libc/machine/arm/strcmp-arm-tiny.S @@ -29,10 +29,14 @@ /* Tiny version of strcmp in ARM state. Used only when optimizing for size. Also supports Thumb-2. */ +#include "arm_asm.h" + .syntax unified def_fn strcmp + .fnstart .cfi_sections .debug_frame .cfi_startproc + prologue 1: ldrb r2, [r0], #1 ldrb r3, [r1], #1 @@ -42,6 +46,8 @@ def_fn strcmp beq 1b 2: subs r0, r2, r3 - bx lr + epilogue .cfi_endproc + .cantunwind + .fnend .size strcmp, . - strcmp diff --git a/newlib/libc/machine/arm/strcmp-armv7.S b/newlib/libc/machine/arm/strcmp-armv7.S index 2f93bfb73f..7cafca151b 100644 --- a/newlib/libc/machine/arm/strcmp-armv7.S +++ b/newlib/libc/machine/arm/strcmp-armv7.S @@ -45,6 +45,8 @@ .thumb .syntax unified +#include "arm_asm.h" + /* Parameters and result. */ #define src1 r0 #define src2 r1 @@ -91,8 +93,9 @@ ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 + .cfi_adjust_cfa_offset -16 sub result, result, r1, lsr #24 - bx lr + epilogue push_ip=HAVE_PAC_LEAF #else /* To use the big-endian trick we'd have to reverse all three words. that's slower than this approach. */ @@ -112,22 +115,21 @@ ldrd r4, r5, [sp], #16 .cfi_restore 4 .cfi_restore 5 + .cfi_adjust_cfa_offset -16 sub result, result, r1 - bx lr + epilogue push_ip=HAVE_PAC_LEAF #endif .endm + .text .p2align 5 -.Lstrcmp_start_addr: -#ifndef STRCMP_NO_PRECHECK -.Lfastpath_exit: - sub r0, r2, r3 - bx lr - nop -#endif def_fn strcmp + .fnstart + .cfi_sections .debug_frame + .cfi_startproc + prologue push_ip=HAVE_PAC_LEAF #ifndef STRCMP_NO_PRECHECK ldrb r2, [src1] ldrb r3, [src2] @@ -136,16 +138,14 @@ def_fn strcmp cmpcs r2, r3 bne .Lfastpath_exit #endif - .cfi_sections .debug_frame - .cfi_startproc strd r4, r5, [sp, #-16]! - .cfi_def_cfa_offset 16 - .cfi_offset 4, -16 - .cfi_offset 5, -12 + .cfi_adjust_cfa_offset 16 + .cfi_rel_offset 4, 0 + .cfi_rel_offset 5, 4 orr tmp1, src1, src2 strd r6, r7, [sp, #8] - .cfi_offset 6, -8 - .cfi_offset 7, -4 + .cfi_rel_offset 6, 8 + .cfi_rel_offset 7, 12 mvn const_m1, #0 lsl r2, tmp1, #29 cbz r2, .Lloop_aligned8 @@ -270,7 +270,6 @@ def_fn strcmp ldr data1, [src1], #4 beq .Laligned_m2 bcs .Laligned_m1 - #ifdef STRCMP_NO_PRECHECK ldrb data2, [src2, #1] uxtb tmp1, data1, ror #BYTE1_OFFSET @@ -314,10 +313,19 @@ def_fn strcmp mov result, tmp1 ldr r4, [sp], #16 .cfi_restore 4 - bx lr + .cfi_adjust_cfa_offset -16 + epilogue push_ip=HAVE_PAC_LEAF #ifndef STRCMP_NO_PRECHECK +.Lfastpath_exit: + .cfi_restore_state + .cfi_remember_state + sub r0, r2, r3 + epilogue push_ip=HAVE_PAC_LEAF + .Laligned_m1: + .cfi_restore_state + .cfi_remember_state add src2, src2, #4 #endif .Lsrc1_aligned: @@ -364,8 +372,9 @@ def_fn strcmp /* R6/7 Not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 + .cfi_adjust_cfa_offset -16 neg result, result - bx lr + epilogue push_ip=HAVE_PAC_LEAF 6: .cfi_restore_state @@ -441,7 +450,8 @@ def_fn strcmp /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 - bx lr + .cfi_adjust_cfa_offset -16 + epilogue push_ip=HAVE_PAC_LEAF .Lstrcmp_tail: .cfi_restore_state @@ -463,7 +473,10 @@ def_fn strcmp /* R6/7 not used in this sequence. */ .cfi_restore 6 .cfi_restore 7 + .cfi_adjust_cfa_offset -16 sub result, result, data2, lsr #24 - bx lr + epilogue push_ip=HAVE_PAC_LEAF .cfi_endproc - .size strcmp, . - .Lstrcmp_start_addr + .cantunwind + .fnend + .size strcmp, . - strcmp diff --git a/newlib/libc/machine/arm/strcmp-armv7m.S b/newlib/libc/machine/arm/strcmp-armv7m.S index cdb4912df7..825b6e77fd 100644 --- a/newlib/libc/machine/arm/strcmp-armv7m.S +++ b/newlib/libc/machine/arm/strcmp-armv7m.S @@ -29,6 +29,8 @@ /* Very similar to the generic code, but uses Thumb2 as implemented in ARMv7-M. */ +#include "arm_asm.h" + /* Parameters and result. */ #define src1 r0 #define src2 r1 @@ -44,8 +46,10 @@ .thumb .syntax unified def_fn strcmp + .fnstart .cfi_sections .debug_frame .cfi_startproc + prologue push_ip=HAVE_PAC_LEAF eor tmp1, src1, src2 tst tmp1, #3 /* Strings not at same byte offset from a word boundary. */ @@ -82,6 +86,7 @@ def_fn strcmp ldreq data2, [src2], #4 beq 4b 2: + .cfi_remember_state /* There's a zero or a different byte in the word */ S2HI result, data1, #24 S2LO data1, data1, #8 @@ -106,7 +111,7 @@ def_fn strcmp lsrs result, result, #24 subs result, result, data2 #endif - bx lr + epilogue push_ip=HAVE_PAC_LEAF #if 0 @@ -205,8 +210,10 @@ def_fn strcmp /* First of all, compare bytes until src1(sp1) is word-aligned. */ .Lstrcmp_unaligned: + .cfi_restore_state tst src1, #3 beq 2f + .cfi_remember_state ldrb data1, [src1], #1 ldrb data2, [src2], #1 cmp data1, #1 @@ -214,12 +221,13 @@ def_fn strcmp cmpcs data1, data2 beq .Lstrcmp_unaligned sub result, data1, data2 - bx lr + epilogue push_ip=HAVE_PAC_LEAF 2: + .cfi_restore_state stmfd sp!, {r5} - .cfi_def_cfa_offset 4 - .cfi_offset 5, -4 + .cfi_adjust_cfa_offset 4 + .cfi_rel_offset 5, 0 ldr data1, [src1], #4 and tmp2, src2, #3 @@ -355,8 +363,8 @@ def_fn strcmp .cfi_remember_state ldmfd sp!, {r5} .cfi_restore 5 - .cfi_def_cfa_offset 0 - bx lr + .cfi_adjust_cfa_offset -4 + epilogue push_ip=HAVE_PAC_LEAF .Lstrcmp_tail: .cfi_restore_state @@ -372,7 +380,9 @@ def_fn strcmp sub result, r2, result ldmfd sp!, {r5} .cfi_restore 5 - .cfi_def_cfa_offset 0 - bx lr + .cfi_adjust_cfa_offset -4 + epilogue push_ip=HAVE_PAC_LEAF .cfi_endproc + .cantunwind + .fnend .size strcmp, . - strcmp From 55825368961f3a9424f91406f8989d04f1df3b59 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:22:36 +0000 Subject: [PATCH 083/767] newlib: libc: strlen M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. This patch enables PACBTI for all relevant variants of strlen: * Newlib for armv8.1-m.main+pacbti * Newlib for armv8.1-m.main+pacbti+mve * Newlib-nano --- newlib/libc/machine/arm/strlen-armv7.S | 17 ++++++++++++++--- newlib/libc/machine/arm/strlen-thumb2-Os.S | 14 +++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/newlib/libc/machine/arm/strlen-armv7.S b/newlib/libc/machine/arm/strlen-armv7.S index f3dda0d60e..27094040c7 100644 --- a/newlib/libc/machine/arm/strlen-armv7.S +++ b/newlib/libc/machine/arm/strlen-armv7.S @@ -59,6 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "acle-compat.h" +#include "arm_asm.h" .macro def_fn f p2align=0 .text @@ -78,7 +79,11 @@ /* This code requires Thumb. */ #if __ARM_ARCH_PROFILE == 'M' +#if __ARM_ARCH >= 8 + /* keep config inherited from -march=. */ +#else .arch armv7e-m +#endif /* if __ARM_ARCH >= 8 */ #else .arch armv6t2 #endif @@ -100,8 +105,10 @@ #define tmp2 r5 def_fn strlen p2align=6 + .fnstart + .cfi_startproc + prologue 4 5 push_ip=HAVE_PAC_LEAF pld [srcin, #0] - strd r4, r5, [sp, #-8]! bic src, srcin, #7 mvn const_m1, #0 ands tmp1, srcin, #7 /* (8 - bytes) to alignment. */ @@ -151,6 +158,7 @@ def_fn strlen p2align=6 beq .Lloop_aligned .Lnull_found: + .cfi_remember_state cmp data1a, #0 itt eq addeq result, result, #4 @@ -159,11 +167,11 @@ def_fn strlen p2align=6 rev data1a, data1a #endif clz data1a, data1a - ldrd r4, r5, [sp], #8 add result, result, data1a, lsr #3 /* Bits -> Bytes. */ - bx lr + epilogue 4 5 push_ip=HAVE_PAC_LEAF .Lmisaligned8: + .cfi_restore_state ldrd data1a, data1b, [src] and tmp2, tmp1, #3 rsb result, tmp1, #0 @@ -177,4 +185,7 @@ def_fn strlen p2align=6 movne data1a, const_m1 mov const_0, #0 b .Lstart_realigned + .cfi_endproc + .cantunwind + .fnend .size strlen, . - strlen diff --git a/newlib/libc/machine/arm/strlen-thumb2-Os.S b/newlib/libc/machine/arm/strlen-thumb2-Os.S index 961f41a0a2..a46db573c6 100644 --- a/newlib/libc/machine/arm/strlen-thumb2-Os.S +++ b/newlib/libc/machine/arm/strlen-thumb2-Os.S @@ -25,6 +25,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "acle-compat.h" +#include "arm_asm.h" .macro def_fn f p2align=0 .text @@ -33,8 +34,9 @@ .type \f, %function \f: .endm - -#if __ARM_ARCH_ISA_THUMB >= 2 && __ARM_ARCH >= 7 +#if __ARM_ARCH_PROFILE == 'M' && __ARM_ARCH >= 8 + /* keep config inherited from -march=. */ +#elif __ARM_ARCH_ISA_THUMB >= 2 && __ARM_ARCH >= 7 .arch armv7 #else .arch armv6t2 @@ -44,11 +46,17 @@ .syntax unified def_fn strlen p2align=1 + .fnstart + .cfi_startproc + prologue mov r3, r0 1: ldrb.w r2, [r3], #1 cmp r2, #0 bne 1b subs r0, r3, r0 subs r0, #1 - bx lr + epilogue + .cfi_endproc + .cantunwind + .fnend .size strlen, . - strlen From db30cbee419b6c4d05da8072dc1e869697b93ff1 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:24:00 +0000 Subject: [PATCH 084/767] newlib: libc: memchr M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. --- newlib/libc/machine/arm/memchr.S | 50 ++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/newlib/libc/machine/arm/memchr.S b/newlib/libc/machine/arm/memchr.S index 1a4c6512c8..3c11addada 100644 --- a/newlib/libc/machine/arm/memchr.S +++ b/newlib/libc/machine/arm/memchr.S @@ -76,6 +76,7 @@ .syntax unified #include "acle-compat.h" +#include "arm_asm.h" @ NOTE: This ifdef MUST match the one in memchr-stub.c #if defined (__ARM_NEON__) || defined (__ARM_NEON) @@ -267,10 +268,14 @@ memchr: #elif __ARM_ARCH_ISA_THUMB >= 2 && defined (__ARM_FEATURE_DSP) #if __ARM_ARCH_PROFILE == 'M' - .arch armv7e-m +#if __ARM_ARCH >= 8 + /* keep config inherited from -march=. */ #else - .arch armv6t2 -#endif + .arch armv7e-m +#endif /* __ARM_ARCH >= 8 */ +#else + .arch armv6t2 +#endif /* __ARM_ARCH_PROFILE == 'M' */ @ this lets us check a flag in a 00/ff byte easily in either endianness #ifdef __ARMEB__ @@ -287,11 +292,14 @@ memchr: .p2align 4,,15 .global memchr .type memchr,%function + .fnstart + .cfi_startproc memchr: @ r0 = start of memory to scan @ r1 = character to look for @ r2 = length @ returns r0 = pointer to character or NULL if not found + prologue and r1,r1,#0xff @ Don't trust the caller to pass a char cmp r2,#16 @ If short don't bother with anything clever @@ -313,6 +321,11 @@ memchr: 10: @ We are aligned, we know we have at least 8 bytes to work with push {r4,r5,r6,r7} + .cfi_adjust_cfa_offset 16 + .cfi_rel_offset 4, 0 + .cfi_rel_offset 5, 4 + .cfi_rel_offset 6, 8 + .cfi_rel_offset 7, 12 orr r1, r1, r1, lsl #8 @ expand the match word across all bytes orr r1, r1, r1, lsl #16 bic r4, r2, #7 @ Number of double words to work with * 8 @@ -334,6 +347,11 @@ memchr: bne 15b @ (Flags from the subs above) pop {r4,r5,r6,r7} + .cfi_restore 7 + .cfi_restore 6 + .cfi_restore 5 + .cfi_restore 4 + .cfi_adjust_cfa_offset -16 and r1,r1,#0xff @ r1 back to a single character and r2,r2,#7 @ Leave the count remaining as the number @ after the double words have been done @@ -349,17 +367,29 @@ memchr: bne 21b @ on r2 flags 40: + .cfi_remember_state movs r0,#0 @ not found - bx lr + epilogue 50: + .cfi_restore_state + .cfi_remember_state subs r0,r0,#1 @ found - bx lr + epilogue 60: @ We're here because the fast path found a hit @ now we have to track down exactly which word it was @ r0 points to the start of the double word after the one tested @ r5 has the 00/ff pattern for the first word, r6 has the chained value + @ This point is reached from cbnz midway through label 15 prior to + @ popping r4-r7 off the stack. .cfi_restore_state alone disregards + @ this, so we manually correct this. + .cfi_restore_state @ Standard post-prologue state + .cfi_adjust_cfa_offset 16 + .cfi_rel_offset 4, 0 + .cfi_rel_offset 5, 4 + .cfi_rel_offset 6, 8 + .cfi_rel_offset 7, 12 cmp r5, #0 itte eq moveq r5, r6 @ the end is in the 2nd word @@ -379,8 +409,16 @@ memchr: 61: pop {r4,r5,r6,r7} + .cfi_restore 7 + .cfi_restore 6 + .cfi_restore 5 + .cfi_restore 4 + .cfi_adjust_cfa_offset -16 subs r0,r0,#1 - bx lr + epilogue + .cfi_endproc + .cantunwind + .fnend #else /* Defined in memchr-stub.c. */ #endif From 60a50c2846f9ad259631598604a7410bee502c70 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:25:36 +0000 Subject: [PATCH 085/767] newlib: libc: memcpy M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. --- newlib/libc/machine/arm/memcpy-armv7m.S | 33 ++++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/newlib/libc/machine/arm/memcpy-armv7m.S b/newlib/libc/machine/arm/memcpy-armv7m.S index c8bff36f60..ec1ad6485e 100644 --- a/newlib/libc/machine/arm/memcpy-armv7m.S +++ b/newlib/libc/machine/arm/memcpy-armv7m.S @@ -46,6 +46,8 @@ __OPT_BIG_BLOCK_SIZE: Size of big block in words. Default to 64. __OPT_MID_BLOCK_SIZE: Size of big block in words. Default to 16. */ +#include "arm_asm.h" + #ifndef __OPT_BIG_BLOCK_SIZE #define __OPT_BIG_BLOCK_SIZE (4 * 16) #endif @@ -85,6 +87,8 @@ .global memcpy .thumb .thumb_func + .fnstart + .cfi_startproc .type memcpy, %function memcpy: @ r0: dst @@ -93,10 +97,11 @@ memcpy: #ifdef __ARM_FEATURE_UNALIGNED /* In case of UNALIGNED access supported, ip is not used in function body. */ + prologue push_ip=HAVE_PAC_LEAF mov ip, r0 #else - push {r0} -#endif + prologue 0 push_ip=HAVE_PAC_LEAF +#endif /* __ARM_FEATURE_UNALIGNED */ orr r3, r1, r0 ands r3, r3, #3 bne .Lmisaligned_copy @@ -178,15 +183,17 @@ memcpy: #endif /* __ARM_FEATURE_UNALIGNED */ .Ldone: + .cfi_remember_state #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip + epilogue push_ip=HAVE_PAC_LEAF #else - pop {r0} -#endif - bx lr + epilogue 0 push_ip=HAVE_PAC_LEAF +#endif /* __ARM_FEATURE_UNALIGNED */ .align 2 .Lmisaligned_copy: + .cfi_restore_state #ifdef __ARM_FEATURE_UNALIGNED /* Define label DST_ALIGNED to BIG_BLOCK. It will go to aligned copy once destination is adjusted to aligned. */ @@ -247,6 +254,9 @@ memcpy: /* dst is aligned, but src isn't. Misaligned copy. */ push {r4, r5} + .cfi_adjust_cfa_offset 8 + .cfi_rel_offset 4, 0 + .cfi_rel_offset 5, 4 subs r2, #4 /* Backward r1 by misaligned bytes, to make r1 aligned. @@ -299,6 +309,9 @@ memcpy: adds r2, #4 subs r1, ip pop {r4, r5} + .cfi_restore 4 + .cfi_restore 5 + .cfi_adjust_cfa_offset -8 #endif /* __ARM_FEATURE_UNALIGNED */ @@ -321,9 +334,11 @@ memcpy: #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip + epilogue push_ip=HAVE_PAC_LEAF #else - pop {r0} -#endif - bx lr - + epilogue 0 push_ip=HAVE_PAC_LEAF +#endif /* __ARM_FEATURE_UNALIGNED */ + .cfi_endproc + .cantunwind + .fnend .size memcpy, .-memcpy From bddfd64ec2e94973d6372f90fe9a8a7b0f882e69 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:27:01 +0000 Subject: [PATCH 086/767] newlib: libc: aeabi_memmove M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. --- newlib/libc/machine/arm/aeabi_memmove-thumb2.S | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/newlib/libc/machine/arm/aeabi_memmove-thumb2.S b/newlib/libc/machine/arm/aeabi_memmove-thumb2.S index e9504437b4..20ca993e56 100644 --- a/newlib/libc/machine/arm/aeabi_memmove-thumb2.S +++ b/newlib/libc/machine/arm/aeabi_memmove-thumb2.S @@ -26,6 +26,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "arm_asm.h" + .thumb .syntax unified .global __aeabi_memmove @@ -33,8 +35,10 @@ ASM_ALIAS __aeabi_memmove4 __aeabi_memmove ASM_ALIAS __aeabi_memmove8 __aeabi_memmove __aeabi_memmove: + .fnstart + .cfi_startproc + prologue 4 cmp r0, r1 - push {r4} bls 3f adds r3, r1, r2 cmp r0, r3 @@ -48,9 +52,10 @@ __aeabi_memmove: strb r4, [r1, #-1]! bne 1b 2: - pop {r4} - bx lr + .cfi_remember_state + epilogue 4 3: + .cfi_restore_state cmp r2, #0 beq 2b add r2, r2, r1 @@ -60,6 +65,8 @@ __aeabi_memmove: cmp r2, r1 strb r4, [r3, #1]! bne 4b - pop {r4} - bx lr + epilogue 4 + .cfi_endproc + .cantunwind + .fnend .size __aeabi_memmove, . - __aeabi_memmove From adc36ede1137a0c792e0281cef01e7750f866ac5 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Wed, 21 Dec 2022 11:28:01 +0000 Subject: [PATCH 087/767] newlib: libc: aeabi_memset M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. --- newlib/libc/machine/arm/aeabi_memset-thumb2.S | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/newlib/libc/machine/arm/aeabi_memset-thumb2.S b/newlib/libc/machine/arm/aeabi_memset-thumb2.S index eaca1d8d73..6b77d3820e 100644 --- a/newlib/libc/machine/arm/aeabi_memset-thumb2.S +++ b/newlib/libc/machine/arm/aeabi_memset-thumb2.S @@ -26,14 +26,18 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "arm_asm.h" + .thumb .syntax unified .global __aeabi_memset .type __aeabi_memset, %function + .fnstart + .cfi_startproc ASM_ALIAS __aeabi_memset4 __aeabi_memset ASM_ALIAS __aeabi_memset8 __aeabi_memset __aeabi_memset: - push {r4, r5, r6} + prologue 4 6 lsls r4, r0, #30 beq 10f subs r4, r1, #1 @@ -98,10 +102,14 @@ __aeabi_memset: cmp r3, r4 bne 8b 9: - pop {r4, r5, r6} - bx lr + .cfi_remember_state + epilogue 4 6 10: + .cfi_restore_state mov r4, r1 mov r3, r0 b 3b + .cfi_endproc + .cantunwind + .fnend .size __aeabi_memset, . - __aeabi_memset From 31e5ce10db46bf8c15d78b2546553db45eb33141 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Tue, 10 Jan 2023 14:02:08 +0000 Subject: [PATCH 088/767] newlib: libc: setjmp M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. Save the PAC value in the jump buffer so that longjmp can only return to the authenticated location. --- newlib/libc/machine/arm/setjmp.S | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index d814afea8c..5213c063bd 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -22,6 +22,11 @@ #define SIZE(x) #endif +/* Jump buffer allocation sizes. */ +#define JUMPBUF_CORE_REGS_SIZE (10 * 4) +#define JUMPBUF_FP_REGS_SIZE (8 * 8) +#define JUMPBUF_PAC (JUMPBUF_CORE_REGS_SIZE + JUMPBUF_FP_REGS_SIZE + 0) + /* Arm/Thumb interworking support: The interworking scheme expects functions to use a BX instruction @@ -155,6 +160,8 @@ SYM (.arm_start_of.\name): .align 2 MODE .globl SYM (\name) + .fnstart + .cfi_startproc TYPE (\name) SYM (\name): PROLOGUE \name @@ -162,6 +169,8 @@ SYM (\name): .macro FUNC_END name RET + .cfi_endproc + .fnend SIZE (\name) .endm @@ -171,6 +180,21 @@ SYM (\name): FUNC_START setjmp +#if __ARM_FEATURE_PAC_DEFAULT +# if __ARM_FEATURE_BTI_DEFAULT + pacbti ip, lr, sp +# else + pac ip, lr, sp +# endif /* __ARM_FEATURE_BTI_DEFAULT */ + mov r3, ip + str r3, [r0, #JUMPBUF_PAC] + .cfi_register 143, 12 +#else +# if __ARM_FEATURE_BTI_DEFAULT + bti +# endif /* __ARM_FEATURE_BTI_DEFAULT */ +#endif /* __ARM_FEATURE_PAC_DEFAULT */ + /* Save all the callee-preserved registers into the jump buffer. */ #ifdef __thumb2__ mov ip, sp @@ -184,6 +208,10 @@ SYM (\name): /* When setting up the jump buffer return 0. */ mov r0, #0 +#if __ARM_FEATURE_PAC_DEFAULT + mov ip, r3 + aut ip, lr, sp +#endif /* __ARM_FEATURE_PAC_DEFAULT */ FUNC_END setjmp @@ -193,6 +221,16 @@ SYM (\name): FUNC_START longjmp +#if __ARM_FEATURE_BTI_DEFAULT + bti +#endif /* __ARM_FEATURE_BTI_DEFAULT */ + +#if __ARM_FEATURE_PAC_DEFAULT + /* Keep original jmpbuf address for retrieving pac-code + for authentication. */ + mov r2, r0 +#endif /* __ARM_FEATURE_PAC_DEFAULT */ + /* If we have stack extension code it ought to be handled here. */ /* Restore the registers, retrieving the state when setjmp() was called. */ @@ -212,5 +250,10 @@ SYM (\name): it eq moveq r0, #1 +#if __ARM_FEATURE_PAC_DEFAULT + ldr ip, [r2, #JUMPBUF_PAC] + aut ip, lr, sp +#endif /* __ARM_FEATURE_PAC_DEFAULT */ + FUNC_END longjmp #endif From 26f9cfd7a8034919448ab4604a9c9d39c04b8d19 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 14 Dec 2022 03:20:32 -0500 Subject: [PATCH 089/767] libgloss: arm: break newlib dependency The libgloss port has been reaching back into newlib internals for a single header whose contents have been frozen for almost a decade. To break this backwards libgloss->newlib dependency, move the acle header to the srcroot include/ so everyone can use the same copy. --- .../arm-acle-compat.h | 0 libgloss/Makefile.am | 3 + libgloss/Makefile.in | 2 + libgloss/arm/Makefile.in | 2 - libgloss/arm/arm.h | 2 +- libgloss/config/default.mh | 2 +- newlib/Makefile.am | 3 +- newlib/Makefile.in | 4 +- newlib/libc/machine/arm/aeabi_memcpy-armv7a.S | 2 +- newlib/libc/machine/arm/aeabi_memmove-thumb.S | 2 +- newlib/libc/machine/arm/aeabi_memset-thumb.S | 2 +- newlib/libc/machine/arm/arm_asm.h | 2 +- newlib/libc/machine/arm/machine/acle-compat.h | 182 ------------------ newlib/libc/machine/arm/memchr-stub.c | 2 +- newlib/libc/machine/arm/memchr.S | 2 +- newlib/libc/machine/arm/memcpy-stub.c | 2 +- newlib/libc/machine/arm/memcpy.S | 2 +- newlib/libc/machine/arm/setjmp.S | 2 +- newlib/libc/machine/arm/strcmp.S | 2 +- newlib/libc/machine/arm/strlen-armv7.S | 2 +- newlib/libc/machine/arm/strlen-thumb2-Os.S | 2 +- newlib/libc/machine/arm/strlen.S | 2 +- newlib/libc/sys/arm/arm.h | 2 +- 23 files changed, 25 insertions(+), 203 deletions(-) rename newlib/libc/machine/arm/acle-compat.h => include/arm-acle-compat.h (100%) delete mode 100644 newlib/libc/machine/arm/machine/acle-compat.h diff --git a/newlib/libc/machine/arm/acle-compat.h b/include/arm-acle-compat.h similarity index 100% rename from newlib/libc/machine/arm/acle-compat.h rename to include/arm-acle-compat.h diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 5b5f0fd541..18b32fad2b 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -11,6 +11,7 @@ PHONY = SUBDIRS = @subdirs@ . +srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) @@ -23,6 +24,8 @@ includetool_DATA = includesystooldir = $(tooldir)/include/sys includesystool_DATA = +AM_CPPFLAGS = -idirafter $(srcroot)/include + # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index cd60857d1f..77bb9b027b 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -657,6 +657,7 @@ info_TEXINFOS = $(am__append_1) CLEANFILES = $(am__append_4) PHONY = SUBDIRS = @subdirs@ . +srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_7) $(am__append_9) \ @@ -669,6 +670,7 @@ includetooldir = $(tooldir)/include includetool_DATA = $(am__append_10) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_11) +AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in index 06fae10c1f..d0d5ea89d6 100644 --- a/libgloss/arm/Makefile.in +++ b/libgloss/arm/Makefile.in @@ -97,8 +97,6 @@ IQ80310_INSTALL = install-iq80310 # Host specific makefile fragment comes in here. @host_makefile_frag@ -INCLUDES += `if [ -d ${objroot}/newlib ]; then echo -I$(srcroot)/newlib/libc/machine/arm; fi` - # # build a test program for each target board. Just trying to get # it to link is a good test, so we ignore all the errors for now. diff --git a/libgloss/arm/arm.h b/libgloss/arm/arm.h index 10e5b0509c..f3cd49308f 100644 --- a/libgloss/arm/arm.h +++ b/libgloss/arm/arm.h @@ -29,7 +29,7 @@ #ifndef _LIBGLOSS_ARM_H #define _LIBGLOSS_ARM_H -#include "acle-compat.h" +#include "arm-acle-compat.h" /* Checking for targets supporting only Thumb instructions (eg. ARMv6-M) or supporting Thumb-2 instructions, whether ARM instructions are available or diff --git a/libgloss/config/default.mh b/libgloss/config/default.mh index 4e7f106f93..81f0920f97 100644 --- a/libgloss/config/default.mh +++ b/libgloss/config/default.mh @@ -1,7 +1,7 @@ NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` -INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. +INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include # Note that when building the library, ${MULTILIB} is not the way multilib # options are passed; they're passed in $(CFLAGS). CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 0108d8576b..3bebf27ebd 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -63,13 +63,14 @@ AM_MAKEFLAGS = \ FLAGS_TO_PASS=$(AM_MAKEFLAGS) +srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(host_alias) toollibdir = $(tooldir)/lib$(MULTISUBDIR) # These are useful for standalone object files like crt0.o. AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(= 7 && defined (__ARM_ARCH_ISA_ARM) # define _ISA_ARM_7 diff --git a/newlib/libc/machine/arm/machine/acle-compat.h b/newlib/libc/machine/arm/machine/acle-compat.h deleted file mode 100644 index 888ae2ea8a..0000000000 --- a/newlib/libc/machine/arm/machine/acle-compat.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright (c) 2014 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __ARM_ARCH - -/* ACLE standardises a set of pre-defines that describe the ARM architecture. - These were mostly implemented in GCC around GCC-4.8; older versions - have no, or only partial support. To provide a level of backwards - compatibility we try to work out what the definitions should be, given - the older pre-defines that GCC did produce. This isn't complete, but - it should be enough for use by routines that depend on this header. */ - -/* No need to handle ARMv8, GCC had ACLE support before that. */ - -# ifdef __ARM_ARCH_7__ -/* The common subset of ARMv7 in all profiles. */ -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_LDREX 7 -# define __ARM_FEATURE_UNALIGNED -# endif - -# if defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7R__) -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_ARCH_ISA_ARM -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 15 -# define __ARM_FEATURE_UNALIGNED -# ifdef __ARM_ARCH_7A__ -# define __ARM_ARCH_PROFILE 'A' -# else -# define __ARM_ARCH_PROFILE 'R' -# endif -# endif - -# ifdef __ARM_ARCH_7EM__ -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 7 -# define __ARM_FEATURE_UNALIGNED -# define __ARM_ARCH_PROFILE 'M' -# endif - -# ifdef __ARM_ARCH_7M__ -# define __ARM_ARCH 7 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 7 -# define __ARM_FEATURE_UNALIGNED -# define __ARM_ARCH_PROFILE 'M' -# endif - -# ifdef __ARM_ARCH_6T2__ -# define __ARM_ARCH 6 -# define __ARM_ARCH_ISA_THUMB 2 -# define __ARM_ARCH_ISA_ARM -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_LDREX 4 -# define __ARM_FEATURE_UNALIGNED -# endif - -# ifdef __ARM_ARCH_6M__ -# define __ARM_ARCH 6 -# define __ARM_ARCH_ISA_THUMB 1 -# define __ARM_ARCH_PROFILE 'M' -# endif - -# if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__) \ - || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6Z__) \ - || defined (__ARM_ARCH_6ZK__) -# define __ARM_ARCH 6 -# define __ARM_ARCH_ISA_THUMB 1 -# define __ARM_ARCH_ISA_ARM -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_SIMD32 -# define __ARM_FEATURE_DSP -# define __ARM_FEATURE_QBIT -# define __ARM_FEATURE_SAT -# define __ARM_FEATURE_UNALIGNED -# ifndef __thumb__ -# if defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__) -# define __ARM_FEATURE_LDREX 15 -# else -# define __ARM_FEATURE_LDREX 4 -# endif -# endif -# endif - -# if defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5E__) -# define __ARM_ARCH 5 -# define __ARM_ARCH_ISA_ARM -# ifdef __ARM_ARCH_5TE__ -# define __ARM_ARCH_ISA_THUMB 1 -# endif -# define __ARM_FEATURE_CLZ -# define __ARM_FEATURE_DSP -# endif - -# if defined (__ARM_ARCH_5T__) || defined (__ARM_ARCH_5__) -# define __ARM_ARCH 5 -# define __ARM_ARCH_ISA_ARM -# ifdef __ARM_ARCH_5TE__ -# define __ARM_ARCH_ISA_THUMB 1 -# endif -# define __ARM_FEATURE_CLZ -# endif - -# ifdef __ARM_ARCH_4T__ -# define __ARM_ARCH 4 -# define __ARM_ARCH_ISA_ARM -# define __ARM_ARCH_ISA_THUMB 1 -# endif - -# ifdef __ARM_ARCH_4__ -# define __ARM_ARCH 4 -# define __ARM_ARCH_ISA_ARM -# endif - -# if defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__) -# define __ARM_ARCH 3 -# define __ARM_ARCH_ISA_ARM -# endif - -# ifdef __ARM_ARCH_2__ -# define __ARM_ARCH 2 -# define __ARM_ARCH_ISA_ARM -# endif - -# ifdef __ARMEB__ -# define __ARM_BIG_ENDIAN -# endif - -/* If we still don't know what the target architecture is, then we're - probably not using GCC. */ -# ifndef __ARM_ARCH -# error Unable to determine architecture version. -# endif - -#endif /* __ARM_ARCH */ - diff --git a/newlib/libc/machine/arm/memchr-stub.c b/newlib/libc/machine/arm/memchr-stub.c index 5c7881b9c8..48451a136c 100644 --- a/newlib/libc/machine/arm/memchr-stub.c +++ b/newlib/libc/machine/arm/memchr-stub.c @@ -27,7 +27,7 @@ /* The structure of the following #if #else #endif conditional chain must match the chain in memchr.S. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if defined (__ARM_NEON__) || defined (__ARM_NEON) /* Defined in memchr.S. */ diff --git a/newlib/libc/machine/arm/memchr.S b/newlib/libc/machine/arm/memchr.S index 3c11addada..d13ef8d654 100644 --- a/newlib/libc/machine/arm/memchr.S +++ b/newlib/libc/machine/arm/memchr.S @@ -75,7 +75,7 @@ .syntax unified -#include "acle-compat.h" +#include "arm-acle-compat.h" #include "arm_asm.h" @ NOTE: This ifdef MUST match the one in memchr-stub.c diff --git a/newlib/libc/machine/arm/memcpy-stub.c b/newlib/libc/machine/arm/memcpy-stub.c index 6cd0e3b1d4..6f41a85e01 100644 --- a/newlib/libc/machine/arm/memcpy-stub.c +++ b/newlib/libc/machine/arm/memcpy-stub.c @@ -27,7 +27,7 @@ /* The structure of the following #if #else #endif conditional chain must match the chain in memcpy.S. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) # include "../../string/memcpy.c" diff --git a/newlib/libc/machine/arm/memcpy.S b/newlib/libc/machine/arm/memcpy.S index 77bd2a606e..8416232ec8 100644 --- a/newlib/libc/machine/arm/memcpy.S +++ b/newlib/libc/machine/arm/memcpy.S @@ -29,7 +29,7 @@ /* The structure of the following #if #else #endif conditional chain must match the chain in memcpy-stub.c. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) /* Defined in memcpy-stub.c. */ diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index 5213c063bd..c615f2428a 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -2,7 +2,7 @@ Nick Clifton, Cygnus Solutions, 13 June 1997. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" /* ANSI concatenation macros. */ #define CONCAT(a, b) CONCAT2(a, b) diff --git a/newlib/libc/machine/arm/strcmp.S b/newlib/libc/machine/arm/strcmp.S index 137f449692..ae308cfc74 100644 --- a/newlib/libc/machine/arm/strcmp.S +++ b/newlib/libc/machine/arm/strcmp.S @@ -28,7 +28,7 @@ /* Wrapper for the various implementations of strcmp. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #ifdef __ARM_BIG_ENDIAN #define S2LO lsl diff --git a/newlib/libc/machine/arm/strlen-armv7.S b/newlib/libc/machine/arm/strlen-armv7.S index 27094040c7..6aa122c075 100644 --- a/newlib/libc/machine/arm/strlen-armv7.S +++ b/newlib/libc/machine/arm/strlen-armv7.S @@ -58,7 +58,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #include "arm_asm.h" .macro def_fn f p2align=0 diff --git a/newlib/libc/machine/arm/strlen-thumb2-Os.S b/newlib/libc/machine/arm/strlen-thumb2-Os.S index a46db573c6..4adbc61d2e 100644 --- a/newlib/libc/machine/arm/strlen-thumb2-Os.S +++ b/newlib/libc/machine/arm/strlen-thumb2-Os.S @@ -24,7 +24,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #include "arm_asm.h" .macro def_fn f p2align=0 diff --git a/newlib/libc/machine/arm/strlen.S b/newlib/libc/machine/arm/strlen.S index 0435fb2de8..d85a7eeb5b 100644 --- a/newlib/libc/machine/arm/strlen.S +++ b/newlib/libc/machine/arm/strlen.S @@ -24,7 +24,7 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "acle-compat.h" +#include "arm-acle-compat.h" #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED #if __ARM_ARCH_ISA_THUMB == 2 diff --git a/newlib/libc/sys/arm/arm.h b/newlib/libc/sys/arm/arm.h index 10e5b0509c..f3cd49308f 100644 --- a/newlib/libc/sys/arm/arm.h +++ b/newlib/libc/sys/arm/arm.h @@ -29,7 +29,7 @@ #ifndef _LIBGLOSS_ARM_H #define _LIBGLOSS_ARM_H -#include "acle-compat.h" +#include "arm-acle-compat.h" /* Checking for targets supporting only Thumb instructions (eg. ARMv6-M) or supporting Thumb-2 instructions, whether ARM instructions are available or From 275b39e219d06ec26715bf2b53812513e37e7c04 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 13 Dec 2022 22:27:35 -0500 Subject: [PATCH 090/767] libgloss: merge arm into top-level Makefile Avoid a recursive make to speed things up a bit. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 556 +++++++++++++++++++++++++---- libgloss/arm/Makefile.in | 241 ------------- libgloss/arm/Makefile.inc | 89 +++++ libgloss/arm/acinclude.m4 | 10 - libgloss/arm/cpu-init/Makefile.in | 84 ----- libgloss/arm/cpu-init/Makefile.inc | 15 + libgloss/configure | 47 ++- libgloss/configure.ac | 7 +- 9 files changed, 627 insertions(+), 425 deletions(-) delete mode 100644 libgloss/arm/Makefile.in create mode 100644 libgloss/arm/Makefile.inc delete mode 100644 libgloss/arm/cpu-init/Makefile.in create mode 100644 libgloss/arm/cpu-init/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 18b32fad2b..0060db3ea8 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -66,6 +66,9 @@ endif if CONFIG_AARCH64 include aarch64/Makefile.inc endif +if CONFIG_ARM +include arm/Makefile.inc +endif if CONFIG_BFIN include bfin/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 77bb9b027b..87c352d927 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -101,13 +101,22 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_AARCH64_TRUE@am__append_4 = $(aarch64_SPECS) \ @CONFIG_AARCH64_TRUE@ $(aarch64_cpu_initcpuinit_DATA) +@CONFIG_ARM_TRUE@@MAY_SUPPLY_SYSCALLS_FALSE@am__append_5 = arm/crt0.o +@CONFIG_ARM_TRUE@am__append_6 = arm/linux-crt0.o arm/redboot-crt0.o \ +@CONFIG_ARM_TRUE@ arm/redboot-syscalls.o arm/rdpmon-crt0.o \ +@CONFIG_ARM_TRUE@ arm/rdimon-crt0.o arm/rdimon-crt0-v2m.o \ +@CONFIG_ARM_TRUE@ $(arm_SPECS) +@CONFIG_ARM_TRUE@am__append_7 = arm/libgloss-linux.a arm/librdpmon.a \ +@CONFIG_ARM_TRUE@ arm/librdimon.a arm/librdimon-v2m.a +@CONFIG_ARM_TRUE@am__append_8 = $(arm_SPECS) \ +@CONFIG_ARM_TRUE@ $(arm_cpu_initcpuinit_DATA) # Here is all of the simulator stuff. -@CONFIG_BFIN_TRUE@am__append_5 = bfin/libsim.a bfin/libbfinbsp.a -@CONFIG_BFIN_TRUE@am__append_6 = bfin/sim-test +@CONFIG_BFIN_TRUE@am__append_9 = bfin/libsim.a bfin/libbfinbsp.a +@CONFIG_BFIN_TRUE@am__append_10 = bfin/sim-test # Here is all of the development board stuff. -@CONFIG_BFIN_TRUE@am__append_7 = \ +@CONFIG_BFIN_TRUE@am__append_11 = \ @CONFIG_BFIN_TRUE@ bfin/crt0.o \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.o \ @CONFIG_BFIN_TRUE@ bfin/basiccrts.o \ @@ -118,11 +127,11 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) # bfin/basiccrt60x.o \ # bfin/basiccrt60xs.o \ # bfin/basiccrt60xc1.o -@CONFIG_BFIN_TRUE@am__append_8 = \ +@CONFIG_BFIN_TRUE@am__append_12 = \ @CONFIG_BFIN_TRUE@ bfin/crt0.S \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.S -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_9 = \ +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_13 = \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bfin-common-sc.ld bfin/bfin-common-mc.ld bfin/bfin-common-mc0.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf504.ld bfin/bf506.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf512.ld bfin/bf514.ld bfin/bf516.ld bfin/bf518.ld \ @@ -138,27 +147,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf609.ld bfin/bf609c0.ld bfin/bf609c1.ld bfin/bf609m.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf592.ld -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_10 = $(wildcard $(srcdir)/bfin/include/*.h) -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_11 = $(wildcard $(srcdir)/bfin/include/sys/*.h) -@CONFIG_IQ2000_TRUE@am__append_12 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_13 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_14 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_15 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_16 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_17 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_18 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_19 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_20 = lm32/crt0.S -@CONFIG_RISCV_TRUE@am__append_21 = \ +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_14 = $(wildcard $(srcdir)/bfin/include/*.h) +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_15 = $(wildcard $(srcdir)/bfin/include/sys/*.h) +@CONFIG_IQ2000_TRUE@am__append_16 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_17 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_18 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_19 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_20 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_21 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_22 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_23 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_24 = lm32/crt0.S +@CONFIG_RISCV_TRUE@am__append_25 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_22 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_26 = riscv/libgloss.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_23 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_24 = wince/stub.exe +@CONFIG_WINCE_TRUE@am__append_27 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_28 = wince/stub.exe subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -190,8 +199,8 @@ CONFIG_CLEAN_FILES = arc/Makefile csky/Makefile epiphany/Makefile \ mcore/Makefile mep/Makefile moxie/Makefile microblaze/Makefile \ mt/Makefile v850/Makefile visium/Makefile xc16x/Makefile \ xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ - rx/Makefile arm/Makefile arm/cpu-init/Makefile spu/Makefile \ - tic6x/Makefile or1k/Makefile pru/Makefile nios2/Makefile + rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ + pru/Makefile nios2/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -223,6 +232,7 @@ am__uninstall_files_from_dir = { \ am__installdirs = "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(infodir)" \ "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" \ + "$(DESTDIR)$(arm_cpu_initcpuinitdir)" \ "$(DESTDIR)$(includemachinetooldir)" \ "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" \ "$(DESTDIR)$(multilibtooldir)" @@ -242,6 +252,42 @@ am__dirstamp = $(am__leading_dot)dirstamp @CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-syscalls.$(OBJEXT) \ @CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-truncate.$(OBJEXT) aarch64_librdimon_a_OBJECTS = $(am_aarch64_librdimon_a_OBJECTS) +arm_libgloss_linux_a_AR = $(AR) $(ARFLAGS) +arm_libgloss_linux_a_LIBADD = +@CONFIG_ARM_TRUE@am_arm_libgloss_linux_a_OBJECTS = \ +@CONFIG_ARM_TRUE@ arm/linux-syscalls0.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/linux-syscalls1.$(OBJEXT) +arm_libgloss_linux_a_OBJECTS = $(am_arm_libgloss_linux_a_OBJECTS) +arm_librdimon_v2m_a_AR = $(AR) $(ARFLAGS) +arm_librdimon_v2m_a_LIBADD = +@CONFIG_ARM_TRUE@am__objects_1 = \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-_exit.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-_kill.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-ftruncate.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-libcfunc.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-syscalls.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-trap.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_v2m_a-truncate.$(OBJEXT) +@CONFIG_ARM_TRUE@am_arm_librdimon_v2m_a_OBJECTS = $(am__objects_1) +arm_librdimon_v2m_a_OBJECTS = $(am_arm_librdimon_v2m_a_OBJECTS) +arm_librdimon_a_AR = $(AR) $(ARFLAGS) +arm_librdimon_a_LIBADD = +@CONFIG_ARM_TRUE@am__objects_2 = arm/arm_librdimon_a-_exit.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_a-_kill.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_a-ftruncate.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_a-libcfunc.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_a-syscalls.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_a-trap.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/arm_librdimon_a-truncate.$(OBJEXT) +@CONFIG_ARM_TRUE@am_arm_librdimon_a_OBJECTS = $(am__objects_2) +arm_librdimon_a_OBJECTS = $(am_arm_librdimon_a_OBJECTS) +arm_librdpmon_a_AR = $(AR) $(ARFLAGS) +arm_librdpmon_a_LIBADD = +@CONFIG_ARM_TRUE@am_arm_librdpmon_a_OBJECTS = arm/_exit.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/_kill.$(OBJEXT) arm/ftruncate.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/libcfunc.$(OBJEXT) arm/syscalls.$(OBJEXT) \ +@CONFIG_ARM_TRUE@ arm/trap.$(OBJEXT) arm/truncate.$(OBJEXT) +arm_librdpmon_a_OBJECTS = $(am_arm_librdpmon_a_OBJECTS) bfin_libbfinbsp_a_AR = $(AR) $(ARFLAGS) bfin_libbfinbsp_a_LIBADD = @CONFIG_BFIN_TRUE@am_bfin_libbfinbsp_a_OBJECTS = bfin/bfin_libbfinbsp_a-clear_cache_range.$(OBJEXT) \ @@ -306,12 +352,12 @@ libnosys_libnosys_a_LIBADD = libnosys_libnosys_a_OBJECTS = $(am_libnosys_libnosys_a_OBJECTS) libobjs_a_AR = $(AR) $(ARFLAGS) libobjs_a_LIBADD = -@CONFIG_BFIN_TRUE@am__objects_1 = bfin/crt0.$(OBJEXT) \ +@CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_2 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_3 = lm32/crt0.$(OBJEXT) -am_libobjs_a_OBJECTS = $(am__objects_1) $(am__objects_2) \ - $(am__objects_3) +@CONFIG_IQ2000_TRUE@am__objects_4 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_5 = lm32/crt0.$(OBJEXT) +am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ + $(am__objects_5) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -412,16 +458,16 @@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/../depcomp am__depfiles_maybe = depfiles am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) am__v_CPPAS_0 = @echo " CPPAS " $@; am__v_CPPAS_1 = -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) @@ -434,12 +480,14 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(aarch64_librdimon_a_SOURCES) $(bfin_libbfinbsp_a_SOURCES) \ - $(bfin_libsim_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ - $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) bfin/sim-test.c iq2000/test.c \ - $(wince_stub_exe_SOURCES) +SOURCES = $(aarch64_librdimon_a_SOURCES) \ + $(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \ + $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ + $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ + $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ + $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + bfin/sim-test.c iq2000/test.c $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -493,9 +541,9 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac -DATA = $(aarch64_cpu_initcpuinit_DATA) $(includemachinetool_DATA) \ - $(includesystool_DATA) $(includetool_DATA) \ - $(multilibtool_DATA) +DATA = $(aarch64_cpu_initcpuinit_DATA) $(arm_cpu_initcpuinit_DATA) \ + $(includemachinetool_DATA) $(includesystool_DATA) \ + $(includetool_DATA) $(multilibtool_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ @@ -526,14 +574,12 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_23) +VPATH = @srcdir@ $(am__append_27) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ -ARM_BUILD_CRT0_FALSE = @ARM_BUILD_CRT0_FALSE@ -ARM_BUILD_CRT0_TRUE = @ARM_BUILD_CRT0_TRUE@ ARM_OBJTYPE = @ARM_OBJTYPE@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -654,28 +700,28 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) +CLEANFILES = $(am__append_4) $(am__append_8) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) -multilibtool_DATA = $(am__append_3) $(am__append_7) $(am__append_9) \ - $(am__append_12) $(am__append_16) $(am__append_18) \ - $(am__append_21) -multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ - $(am__append_13) $(am__append_17) $(am__append_19) \ - $(am__append_22) +multilibtool_DATA = $(am__append_3) $(am__append_5) $(am__append_6) \ + $(am__append_11) $(am__append_13) $(am__append_16) \ + $(am__append_20) $(am__append_22) $(am__append_25) +multilibtool_LIBRARIES = $(am__append_2) $(am__append_7) \ + $(am__append_9) $(am__append_17) $(am__append_21) \ + $(am__append_23) $(am__append_26) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_10) +includetool_DATA = $(am__append_14) includesystooldir = $(tooldir)/include/sys -includesystool_DATA = $(am__append_11) +includesystool_DATA = $(am__append_15) AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_8) $(am__append_14) $(am__append_20) +libobjs_a_SOURCES = $(am__append_12) $(am__append_18) $(am__append_24) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -730,6 +776,38 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_AARCH64_TRUE@ aarch64/cpu-init/rdimon-aem-el3.o \ @CONFIG_AARCH64_TRUE@ aarch64/cpu-init/rdimon-aem-v8-r.o +@CONFIG_ARM_TRUE@arm_SPECS = arm/nano.specs arm/linux.specs \ +@CONFIG_ARM_TRUE@ arm/redboot.ld arm/redboot.specs \ +@CONFIG_ARM_TRUE@ arm/rdpmon.specs arm/rdimon.specs \ +@CONFIG_ARM_TRUE@ arm/rdimon-v2m.specs \ +@CONFIG_ARM_TRUE@ arm/aprofile-validation.specs \ +@CONFIG_ARM_TRUE@ arm/aprofile-validation-v2m.specs \ +@CONFIG_ARM_TRUE@ arm/aprofile-ve-v2m.specs \ +@CONFIG_ARM_TRUE@ arm/aprofile-ve.specs arm/pid.specs \ +@CONFIG_ARM_TRUE@ arm/iq80310.specs +@CONFIG_ARM_TRUE@arm_libgloss_linux_a_SOURCES = \ +@CONFIG_ARM_TRUE@ arm/linux-syscalls0.c \ +@CONFIG_ARM_TRUE@ arm/linux-syscalls1.c + +@CONFIG_ARM_TRUE@arm_librdpmon_a_SOURCES = \ +@CONFIG_ARM_TRUE@ arm/_exit.c \ +@CONFIG_ARM_TRUE@ arm/_kill.c \ +@CONFIG_ARM_TRUE@ arm/ftruncate.c \ +@CONFIG_ARM_TRUE@ arm/libcfunc.c \ +@CONFIG_ARM_TRUE@ arm/syscalls.c \ +@CONFIG_ARM_TRUE@ arm/trap.S \ +@CONFIG_ARM_TRUE@ arm/truncate.c + +@CONFIG_ARM_TRUE@arm_RDIMON_CPPFLAGS = -DSEMIHOST_V2 -DARM_RDI_MONITOR +@CONFIG_ARM_TRUE@arm_RDIMON_V2M_CPPFLAGS = $(arm_RDIMON_CPPFLAGS) -DSEMIHOST_V2_MIXED_MODE +@CONFIG_ARM_TRUE@arm_librdimon_a_SOURCES = $(arm_librdpmon_a_SOURCES) +@CONFIG_ARM_TRUE@arm_librdimon_a_CPPFLAGS = $(AM_CPPFLAGS) $(arm_RDIMON_CPPFLAGS) +@CONFIG_ARM_TRUE@arm_librdimon_v2m_a_SOURCES = $(arm_librdpmon_a_SOURCES) +@CONFIG_ARM_TRUE@arm_librdimon_v2m_a_CPPFLAGS = $(AM_CPPFLAGS) $(arm_RDIMON_V2M_CPPFLAGS) +@CONFIG_ARM_TRUE@arm_cpu_initcpuinitdir = $(tooldir)/lib$(MULTISUBDIR)/cpu-init +@CONFIG_ARM_TRUE@arm_cpu_initcpuinit_DATA = \ +@CONFIG_ARM_TRUE@ arm/cpu-init/rdimon-aem.o + @CONFIG_BFIN_TRUE@bfin_CPPFLAGS = -I$(srcdir)/bfin/include @CONFIG_BFIN_TRUE@bfin_libsim_a_SOURCES = \ @CONFIG_BFIN_TRUE@ bfin/clear_cache_range.c \ @@ -860,7 +938,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -882,7 +960,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -979,10 +1057,6 @@ rl78/Makefile: $(top_builddir)/config.status $(top_srcdir)/rl78/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rx/Makefile: $(top_builddir)/config.status $(top_srcdir)/rx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -arm/Makefile: $(top_builddir)/config.status $(top_srcdir)/arm/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -arm/cpu-init/Makefile: $(top_builddir)/config.status $(top_srcdir)/arm/cpu-init/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ tic6x/Makefile: $(top_builddir)/config.status $(top_srcdir)/tic6x/Makefile.in @@ -1050,6 +1124,75 @@ aarch64/librdimon.a: $(aarch64_librdimon_a_OBJECTS) $(aarch64_librdimon_a_DEPEND $(AM_V_at)-rm -f aarch64/librdimon.a $(AM_V_AR)$(aarch64_librdimon_a_AR) aarch64/librdimon.a $(aarch64_librdimon_a_OBJECTS) $(aarch64_librdimon_a_LIBADD) $(AM_V_at)$(RANLIB) aarch64/librdimon.a +arm/$(am__dirstamp): + @$(MKDIR_P) arm + @: > arm/$(am__dirstamp) +arm/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) arm/$(DEPDIR) + @: > arm/$(DEPDIR)/$(am__dirstamp) +arm/linux-syscalls0.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/linux-syscalls1.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) + +arm/libgloss-linux.a: $(arm_libgloss_linux_a_OBJECTS) $(arm_libgloss_linux_a_DEPENDENCIES) $(EXTRA_arm_libgloss_linux_a_DEPENDENCIES) arm/$(am__dirstamp) + $(AM_V_at)-rm -f arm/libgloss-linux.a + $(AM_V_AR)$(arm_libgloss_linux_a_AR) arm/libgloss-linux.a $(arm_libgloss_linux_a_OBJECTS) $(arm_libgloss_linux_a_LIBADD) + $(AM_V_at)$(RANLIB) arm/libgloss-linux.a +arm/arm_librdimon_v2m_a-_exit.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_v2m_a-_kill.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_v2m_a-ftruncate.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_v2m_a-libcfunc.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_v2m_a-syscalls.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_v2m_a-trap.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_v2m_a-truncate.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) + +arm/librdimon-v2m.a: $(arm_librdimon_v2m_a_OBJECTS) $(arm_librdimon_v2m_a_DEPENDENCIES) $(EXTRA_arm_librdimon_v2m_a_DEPENDENCIES) arm/$(am__dirstamp) + $(AM_V_at)-rm -f arm/librdimon-v2m.a + $(AM_V_AR)$(arm_librdimon_v2m_a_AR) arm/librdimon-v2m.a $(arm_librdimon_v2m_a_OBJECTS) $(arm_librdimon_v2m_a_LIBADD) + $(AM_V_at)$(RANLIB) arm/librdimon-v2m.a +arm/arm_librdimon_a-_exit.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_a-_kill.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_a-ftruncate.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_a-libcfunc.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_a-syscalls.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_a-trap.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/arm_librdimon_a-truncate.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) + +arm/librdimon.a: $(arm_librdimon_a_OBJECTS) $(arm_librdimon_a_DEPENDENCIES) $(EXTRA_arm_librdimon_a_DEPENDENCIES) arm/$(am__dirstamp) + $(AM_V_at)-rm -f arm/librdimon.a + $(AM_V_AR)$(arm_librdimon_a_AR) arm/librdimon.a $(arm_librdimon_a_OBJECTS) $(arm_librdimon_a_LIBADD) + $(AM_V_at)$(RANLIB) arm/librdimon.a +arm/_exit.$(OBJEXT): arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/_kill.$(OBJEXT): arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/ftruncate.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/libcfunc.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/syscalls.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/trap.$(OBJEXT): arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/truncate.$(OBJEXT): arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) + +arm/librdpmon.a: $(arm_librdpmon_a_OBJECTS) $(arm_librdpmon_a_DEPENDENCIES) $(EXTRA_arm_librdpmon_a_DEPENDENCIES) arm/$(am__dirstamp) + $(AM_V_at)-rm -f arm/librdpmon.a + $(AM_V_AR)$(arm_librdpmon_a_AR) arm/librdpmon.a $(arm_librdpmon_a_OBJECTS) $(arm_librdpmon_a_LIBADD) + $(AM_V_at)$(RANLIB) arm/librdpmon.a bfin/$(am__dirstamp): @$(MKDIR_P) bfin @: > bfin/$(am__dirstamp) @@ -1412,6 +1555,7 @@ wince/stub.exe$(EXEEXT): $(wince_stub_exe_OBJECTS) $(wince_stub_exe_DEPENDENCIES mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f aarch64/*.$(OBJEXT) + -rm -f arm/*.$(OBJEXT) -rm -f bfin/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) @@ -1428,6 +1572,29 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/_kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-_kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-truncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/ftruncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/libcfunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/linux-syscalls0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/linux-syscalls1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/truncate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/basiccrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libbfinbsp_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Po@am__quote@ @@ -1559,6 +1726,34 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +arm/arm_librdimon_v2m_a-trap.o: arm/trap.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT arm/arm_librdimon_v2m_a-trap.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Tpo -c -o arm/arm_librdimon_v2m_a-trap.o `test -f 'arm/trap.S' || echo '$(srcdir)/'`arm/trap.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='arm/trap.S' object='arm/arm_librdimon_v2m_a-trap.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o arm/arm_librdimon_v2m_a-trap.o `test -f 'arm/trap.S' || echo '$(srcdir)/'`arm/trap.S + +arm/arm_librdimon_v2m_a-trap.obj: arm/trap.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT arm/arm_librdimon_v2m_a-trap.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Tpo -c -o arm/arm_librdimon_v2m_a-trap.obj `if test -f 'arm/trap.S'; then $(CYGPATH_W) 'arm/trap.S'; else $(CYGPATH_W) '$(srcdir)/arm/trap.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-trap.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='arm/trap.S' object='arm/arm_librdimon_v2m_a-trap.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o arm/arm_librdimon_v2m_a-trap.obj `if test -f 'arm/trap.S'; then $(CYGPATH_W) 'arm/trap.S'; else $(CYGPATH_W) '$(srcdir)/arm/trap.S'; fi` + +arm/arm_librdimon_a-trap.o: arm/trap.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT arm/arm_librdimon_a-trap.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-trap.Tpo -c -o arm/arm_librdimon_a-trap.o `test -f 'arm/trap.S' || echo '$(srcdir)/'`arm/trap.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-trap.Tpo arm/$(DEPDIR)/arm_librdimon_a-trap.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='arm/trap.S' object='arm/arm_librdimon_a-trap.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o arm/arm_librdimon_a-trap.o `test -f 'arm/trap.S' || echo '$(srcdir)/'`arm/trap.S + +arm/arm_librdimon_a-trap.obj: arm/trap.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT arm/arm_librdimon_a-trap.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-trap.Tpo -c -o arm/arm_librdimon_a-trap.obj `if test -f 'arm/trap.S'; then $(CYGPATH_W) 'arm/trap.S'; else $(CYGPATH_W) '$(srcdir)/arm/trap.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-trap.Tpo arm/$(DEPDIR)/arm_librdimon_a-trap.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='arm/trap.S' object='arm/arm_librdimon_a-trap.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o arm/arm_librdimon_a-trap.obj `if test -f 'arm/trap.S'; then $(CYGPATH_W) 'arm/trap.S'; else $(CYGPATH_W) '$(srcdir)/arm/trap.S'; fi` + .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @@ -1659,6 +1854,174 @@ aarch64/aarch64_librdimon_a-truncate.obj: aarch64/truncate.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-truncate.obj `if test -f 'aarch64/truncate.c'; then $(CYGPATH_W) 'aarch64/truncate.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/truncate.c'; fi` +arm/arm_librdimon_v2m_a-_exit.o: arm/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-_exit.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Tpo -c -o arm/arm_librdimon_v2m_a-_exit.o `test -f 'arm/_exit.c' || echo '$(srcdir)/'`arm/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_exit.c' object='arm/arm_librdimon_v2m_a-_exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-_exit.o `test -f 'arm/_exit.c' || echo '$(srcdir)/'`arm/_exit.c + +arm/arm_librdimon_v2m_a-_exit.obj: arm/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-_exit.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Tpo -c -o arm/arm_librdimon_v2m_a-_exit.obj `if test -f 'arm/_exit.c'; then $(CYGPATH_W) 'arm/_exit.c'; else $(CYGPATH_W) '$(srcdir)/arm/_exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_exit.c' object='arm/arm_librdimon_v2m_a-_exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-_exit.obj `if test -f 'arm/_exit.c'; then $(CYGPATH_W) 'arm/_exit.c'; else $(CYGPATH_W) '$(srcdir)/arm/_exit.c'; fi` + +arm/arm_librdimon_v2m_a-_kill.o: arm/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-_kill.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Tpo -c -o arm/arm_librdimon_v2m_a-_kill.o `test -f 'arm/_kill.c' || echo '$(srcdir)/'`arm/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_kill.c' object='arm/arm_librdimon_v2m_a-_kill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-_kill.o `test -f 'arm/_kill.c' || echo '$(srcdir)/'`arm/_kill.c + +arm/arm_librdimon_v2m_a-_kill.obj: arm/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-_kill.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Tpo -c -o arm/arm_librdimon_v2m_a-_kill.obj `if test -f 'arm/_kill.c'; then $(CYGPATH_W) 'arm/_kill.c'; else $(CYGPATH_W) '$(srcdir)/arm/_kill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_kill.c' object='arm/arm_librdimon_v2m_a-_kill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-_kill.obj `if test -f 'arm/_kill.c'; then $(CYGPATH_W) 'arm/_kill.c'; else $(CYGPATH_W) '$(srcdir)/arm/_kill.c'; fi` + +arm/arm_librdimon_v2m_a-ftruncate.o: arm/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-ftruncate.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Tpo -c -o arm/arm_librdimon_v2m_a-ftruncate.o `test -f 'arm/ftruncate.c' || echo '$(srcdir)/'`arm/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/ftruncate.c' object='arm/arm_librdimon_v2m_a-ftruncate.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-ftruncate.o `test -f 'arm/ftruncate.c' || echo '$(srcdir)/'`arm/ftruncate.c + +arm/arm_librdimon_v2m_a-ftruncate.obj: arm/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-ftruncate.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Tpo -c -o arm/arm_librdimon_v2m_a-ftruncate.obj `if test -f 'arm/ftruncate.c'; then $(CYGPATH_W) 'arm/ftruncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/ftruncate.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-ftruncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/ftruncate.c' object='arm/arm_librdimon_v2m_a-ftruncate.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-ftruncate.obj `if test -f 'arm/ftruncate.c'; then $(CYGPATH_W) 'arm/ftruncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/ftruncate.c'; fi` + +arm/arm_librdimon_v2m_a-libcfunc.o: arm/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-libcfunc.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Tpo -c -o arm/arm_librdimon_v2m_a-libcfunc.o `test -f 'arm/libcfunc.c' || echo '$(srcdir)/'`arm/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/libcfunc.c' object='arm/arm_librdimon_v2m_a-libcfunc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-libcfunc.o `test -f 'arm/libcfunc.c' || echo '$(srcdir)/'`arm/libcfunc.c + +arm/arm_librdimon_v2m_a-libcfunc.obj: arm/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-libcfunc.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Tpo -c -o arm/arm_librdimon_v2m_a-libcfunc.obj `if test -f 'arm/libcfunc.c'; then $(CYGPATH_W) 'arm/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/arm/libcfunc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-libcfunc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/libcfunc.c' object='arm/arm_librdimon_v2m_a-libcfunc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-libcfunc.obj `if test -f 'arm/libcfunc.c'; then $(CYGPATH_W) 'arm/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/arm/libcfunc.c'; fi` + +arm/arm_librdimon_v2m_a-syscalls.o: arm/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-syscalls.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Tpo -c -o arm/arm_librdimon_v2m_a-syscalls.o `test -f 'arm/syscalls.c' || echo '$(srcdir)/'`arm/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/syscalls.c' object='arm/arm_librdimon_v2m_a-syscalls.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-syscalls.o `test -f 'arm/syscalls.c' || echo '$(srcdir)/'`arm/syscalls.c + +arm/arm_librdimon_v2m_a-syscalls.obj: arm/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-syscalls.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Tpo -c -o arm/arm_librdimon_v2m_a-syscalls.obj `if test -f 'arm/syscalls.c'; then $(CYGPATH_W) 'arm/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/arm/syscalls.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/syscalls.c' object='arm/arm_librdimon_v2m_a-syscalls.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-syscalls.obj `if test -f 'arm/syscalls.c'; then $(CYGPATH_W) 'arm/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/arm/syscalls.c'; fi` + +arm/arm_librdimon_v2m_a-truncate.o: arm/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-truncate.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Tpo -c -o arm/arm_librdimon_v2m_a-truncate.o `test -f 'arm/truncate.c' || echo '$(srcdir)/'`arm/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/truncate.c' object='arm/arm_librdimon_v2m_a-truncate.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-truncate.o `test -f 'arm/truncate.c' || echo '$(srcdir)/'`arm/truncate.c + +arm/arm_librdimon_v2m_a-truncate.obj: arm/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-truncate.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Tpo -c -o arm/arm_librdimon_v2m_a-truncate.obj `if test -f 'arm/truncate.c'; then $(CYGPATH_W) 'arm/truncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/truncate.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-truncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/truncate.c' object='arm/arm_librdimon_v2m_a-truncate.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_v2m_a-truncate.obj `if test -f 'arm/truncate.c'; then $(CYGPATH_W) 'arm/truncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/truncate.c'; fi` + +arm/arm_librdimon_a-_exit.o: arm/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-_exit.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-_exit.Tpo -c -o arm/arm_librdimon_a-_exit.o `test -f 'arm/_exit.c' || echo '$(srcdir)/'`arm/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-_exit.Tpo arm/$(DEPDIR)/arm_librdimon_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_exit.c' object='arm/arm_librdimon_a-_exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-_exit.o `test -f 'arm/_exit.c' || echo '$(srcdir)/'`arm/_exit.c + +arm/arm_librdimon_a-_exit.obj: arm/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-_exit.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-_exit.Tpo -c -o arm/arm_librdimon_a-_exit.obj `if test -f 'arm/_exit.c'; then $(CYGPATH_W) 'arm/_exit.c'; else $(CYGPATH_W) '$(srcdir)/arm/_exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-_exit.Tpo arm/$(DEPDIR)/arm_librdimon_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_exit.c' object='arm/arm_librdimon_a-_exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-_exit.obj `if test -f 'arm/_exit.c'; then $(CYGPATH_W) 'arm/_exit.c'; else $(CYGPATH_W) '$(srcdir)/arm/_exit.c'; fi` + +arm/arm_librdimon_a-_kill.o: arm/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-_kill.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-_kill.Tpo -c -o arm/arm_librdimon_a-_kill.o `test -f 'arm/_kill.c' || echo '$(srcdir)/'`arm/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-_kill.Tpo arm/$(DEPDIR)/arm_librdimon_a-_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_kill.c' object='arm/arm_librdimon_a-_kill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-_kill.o `test -f 'arm/_kill.c' || echo '$(srcdir)/'`arm/_kill.c + +arm/arm_librdimon_a-_kill.obj: arm/_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-_kill.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-_kill.Tpo -c -o arm/arm_librdimon_a-_kill.obj `if test -f 'arm/_kill.c'; then $(CYGPATH_W) 'arm/_kill.c'; else $(CYGPATH_W) '$(srcdir)/arm/_kill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-_kill.Tpo arm/$(DEPDIR)/arm_librdimon_a-_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/_kill.c' object='arm/arm_librdimon_a-_kill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-_kill.obj `if test -f 'arm/_kill.c'; then $(CYGPATH_W) 'arm/_kill.c'; else $(CYGPATH_W) '$(srcdir)/arm/_kill.c'; fi` + +arm/arm_librdimon_a-ftruncate.o: arm/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-ftruncate.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Tpo -c -o arm/arm_librdimon_a-ftruncate.o `test -f 'arm/ftruncate.c' || echo '$(srcdir)/'`arm/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Tpo arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/ftruncate.c' object='arm/arm_librdimon_a-ftruncate.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-ftruncate.o `test -f 'arm/ftruncate.c' || echo '$(srcdir)/'`arm/ftruncate.c + +arm/arm_librdimon_a-ftruncate.obj: arm/ftruncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-ftruncate.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Tpo -c -o arm/arm_librdimon_a-ftruncate.obj `if test -f 'arm/ftruncate.c'; then $(CYGPATH_W) 'arm/ftruncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/ftruncate.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Tpo arm/$(DEPDIR)/arm_librdimon_a-ftruncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/ftruncate.c' object='arm/arm_librdimon_a-ftruncate.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-ftruncate.obj `if test -f 'arm/ftruncate.c'; then $(CYGPATH_W) 'arm/ftruncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/ftruncate.c'; fi` + +arm/arm_librdimon_a-libcfunc.o: arm/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-libcfunc.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Tpo -c -o arm/arm_librdimon_a-libcfunc.o `test -f 'arm/libcfunc.c' || echo '$(srcdir)/'`arm/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Tpo arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/libcfunc.c' object='arm/arm_librdimon_a-libcfunc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-libcfunc.o `test -f 'arm/libcfunc.c' || echo '$(srcdir)/'`arm/libcfunc.c + +arm/arm_librdimon_a-libcfunc.obj: arm/libcfunc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-libcfunc.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Tpo -c -o arm/arm_librdimon_a-libcfunc.obj `if test -f 'arm/libcfunc.c'; then $(CYGPATH_W) 'arm/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/arm/libcfunc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Tpo arm/$(DEPDIR)/arm_librdimon_a-libcfunc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/libcfunc.c' object='arm/arm_librdimon_a-libcfunc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-libcfunc.obj `if test -f 'arm/libcfunc.c'; then $(CYGPATH_W) 'arm/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/arm/libcfunc.c'; fi` + +arm/arm_librdimon_a-syscalls.o: arm/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-syscalls.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-syscalls.Tpo -c -o arm/arm_librdimon_a-syscalls.o `test -f 'arm/syscalls.c' || echo '$(srcdir)/'`arm/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-syscalls.Tpo arm/$(DEPDIR)/arm_librdimon_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/syscalls.c' object='arm/arm_librdimon_a-syscalls.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-syscalls.o `test -f 'arm/syscalls.c' || echo '$(srcdir)/'`arm/syscalls.c + +arm/arm_librdimon_a-syscalls.obj: arm/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-syscalls.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-syscalls.Tpo -c -o arm/arm_librdimon_a-syscalls.obj `if test -f 'arm/syscalls.c'; then $(CYGPATH_W) 'arm/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/arm/syscalls.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-syscalls.Tpo arm/$(DEPDIR)/arm_librdimon_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/syscalls.c' object='arm/arm_librdimon_a-syscalls.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-syscalls.obj `if test -f 'arm/syscalls.c'; then $(CYGPATH_W) 'arm/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/arm/syscalls.c'; fi` + +arm/arm_librdimon_a-truncate.o: arm/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-truncate.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-truncate.Tpo -c -o arm/arm_librdimon_a-truncate.o `test -f 'arm/truncate.c' || echo '$(srcdir)/'`arm/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-truncate.Tpo arm/$(DEPDIR)/arm_librdimon_a-truncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/truncate.c' object='arm/arm_librdimon_a-truncate.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-truncate.o `test -f 'arm/truncate.c' || echo '$(srcdir)/'`arm/truncate.c + +arm/arm_librdimon_a-truncate.obj: arm/truncate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_a-truncate.obj -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_a-truncate.Tpo -c -o arm/arm_librdimon_a-truncate.obj `if test -f 'arm/truncate.c'; then $(CYGPATH_W) 'arm/truncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/truncate.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_a-truncate.Tpo arm/$(DEPDIR)/arm_librdimon_a-truncate.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='arm/truncate.c' object='arm/arm_librdimon_a-truncate.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arm/arm_librdimon_a-truncate.obj `if test -f 'arm/truncate.c'; then $(CYGPATH_W) 'arm/truncate.c'; else $(CYGPATH_W) '$(srcdir)/arm/truncate.c'; fi` + bfin/bfin_libbfinbsp_a-clear_cache_range.o: bfin/clear_cache_range.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bfin_libbfinbsp_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT bfin/bfin_libbfinbsp_a-clear_cache_range.o -MD -MP -MF bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Tpo -c -o bfin/bfin_libbfinbsp_a-clear_cache_range.o `test -f 'bfin/clear_cache_range.c' || echo '$(srcdir)/'`bfin/clear_cache_range.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Tpo bfin/$(DEPDIR)/bfin_libbfinbsp_a-clear_cache_range.Po @@ -2701,6 +3064,27 @@ uninstall-aarch64_cpu_initcpuinitDATA: @list='$(aarch64_cpu_initcpuinit_DATA)'; test -n "$(aarch64_cpu_initcpuinitdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(aarch64_cpu_initcpuinitdir)'; $(am__uninstall_files_from_dir) +install-arm_cpu_initcpuinitDATA: $(arm_cpu_initcpuinit_DATA) + @$(NORMAL_INSTALL) + @list='$(arm_cpu_initcpuinit_DATA)'; test -n "$(arm_cpu_initcpuinitdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(arm_cpu_initcpuinitdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(arm_cpu_initcpuinitdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(arm_cpu_initcpuinitdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(arm_cpu_initcpuinitdir)" || exit $$?; \ + done + +uninstall-arm_cpu_initcpuinitDATA: + @$(NORMAL_UNINSTALL) + @list='$(arm_cpu_initcpuinit_DATA)'; test -n "$(arm_cpu_initcpuinitdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(arm_cpu_initcpuinitdir)'; $(am__uninstall_files_from_dir) install-includemachinetoolDATA: $(includemachinetool_DATA) @$(NORMAL_INSTALL) @list='$(includemachinetool_DATA)'; test -n "$(includemachinetooldir)" || list=; \ @@ -2898,7 +3282,7 @@ all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \ config.h all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ + for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -2930,6 +3314,8 @@ distclean-generic: -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f aarch64/$(am__dirstamp) + -rm -f arm/$(DEPDIR)/$(am__dirstamp) + -rm -f arm/$(am__dirstamp) -rm -f bfin/$(DEPDIR)/$(am__dirstamp) -rm -f bfin/$(am__dirstamp) -rm -f doc/$(am__dirstamp) @@ -2954,7 +3340,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -2972,9 +3358,10 @@ info: info-recursive info-am: $(INFO_DEPS) install-data-am: install-aarch64_cpu_initcpuinitDATA \ - install-includemachinetoolDATA install-includesystoolDATA \ - install-includetoolDATA install-info-am \ - install-multilibtoolDATA install-multilibtoolLIBRARIES + install-arm_cpu_initcpuinitDATA install-includemachinetoolDATA \ + install-includesystoolDATA install-includetoolDATA \ + install-info-am install-multilibtoolDATA \ + install-multilibtoolLIBRARIES install-dvi: install-dvi-recursive @@ -3096,7 +3483,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -3115,7 +3502,8 @@ ps: ps-recursive ps-am: $(PSS) uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ - uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ + uninstall-arm_cpu_initcpuinitDATA uninstall-binPROGRAMS \ + uninstall-dvi-am uninstall-html-am \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ uninstall-includetoolDATA uninstall-info-am \ uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ @@ -3132,9 +3520,10 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ distclean-hdr distclean-local distclean-tags dvi dvi-am html \ html-am info info-am install \ install-aarch64_cpu_initcpuinitDATA install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-exec-local \ - install-html install-html-am install-includemachinetoolDATA \ + install-arm_cpu_initcpuinitDATA install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-exec-local install-html \ + install-html-am install-includemachinetoolDATA \ install-includesystoolDATA install-includetoolDATA \ install-info install-info-am install-man \ install-multilibtoolDATA install-multilibtoolLIBRARIES \ @@ -3145,7 +3534,8 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-aarch64_cpu_initcpuinitDATA uninstall-am \ - uninstall-binPROGRAMS uninstall-dvi-am uninstall-html-am \ + uninstall-arm_cpu_initcpuinitDATA uninstall-binPROGRAMS \ + uninstall-dvi-am uninstall-html-am \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ uninstall-includetoolDATA uninstall-info-am \ uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ @@ -3199,6 +3589,32 @@ maintainer-clean-local: maintainer-clean-multi @CONFIG_AARCH64_TRUE@aarch64/cpu-init/rdimon-aem-v8-r.$(OBJEXT): aarch64/cpu-init/rdimon-aem-el3.S aarch64/cpu-init/$(am__dirstamp) @CONFIG_AARCH64_TRUE@ $(AM_V_CC)$(COMPILE) $(aarch64_cpu_init_CPPFLAGS) -DARM_RDI_MONITOR -DBUILD_FOR_R_PROFILE -o $@ -c $< +@CONFIG_ARM_TRUE@arm/redboot-syscalls.o: arm/redboot-syscalls.c +@CONFIG_ARM_TRUE@ $(AM_V_CC)$(COMPILE) -DSEMIHOST_V2 -o $@ -c $< + +@CONFIG_ARM_TRUE@arm/rdpmon-crt0.o: arm/crt0.S +@CONFIG_ARM_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -DARM_RDP_MONITOR -o $@ -c $< + +@CONFIG_ARM_TRUE@arm/rdimon-crt0.o: arm/crt0.S +@CONFIG_ARM_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(arm_RDIMON_CPPFLAGS) -o $@ -c $< + +@CONFIG_ARM_TRUE@arm/rdimon-crt0-v2m.o: arm/crt0.S +@CONFIG_ARM_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(arm_RDIMON_V2M_CPPFLAGS) -o $@ -c $< + +@CONFIG_ARM_TRUE@arm/%.specs: arm/$(ARM_OBJTYPE)%.specs +@CONFIG_ARM_TRUE@ $(AM_V_GEN)cp $< $@ + +@CONFIG_ARM_TRUE@arm/%.ld: arm/$(ARM_OBJTYPE)%.ld +@CONFIG_ARM_TRUE@ $(AM_V_GEN)cp $< $@ + +@CONFIG_ARM_TRUE@arm/cpu-init/$(am__dirstamp): +@CONFIG_ARM_TRUE@ @$(MKDIR_P) arm/cpu-init +@CONFIG_ARM_TRUE@ @: > $@ + +@CONFIG_ARM_TRUE@arm/cpu-init/rdimon-aem.$(OBJEXT): arm/cpu-init/rdimon-aem.S arm/cpu-init/$(am__dirstamp) +@CONFIG_ARM_TRUE@ @$(MKDIR_P) arm/cpu-init +@CONFIG_ARM_TRUE@ $(AM_V_CC)$(COMPILE) -DARM_RDI_MONITOR -o $@ -c $< + @CONFIG_BFIN_TRUE@bfin/basiccrt.$(OBJEXT): bfin/basiccrt.S @CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),,-mcpu=bf532-any) @CONFIG_BFIN_TRUE@bfin/basiccrts.$(OBJEXT): bfin/basiccrt.S diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in deleted file mode 100644 index d0d5ea89d6..0000000000 --- a/libgloss/arm/Makefile.in +++ /dev/null @@ -1,241 +0,0 @@ -# -# -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -abs_srcdir = @abs_srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -objtype = @ARM_OBJTYPE@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -@ARM_BUILD_CRT0_TRUE@CRT0 = crt0.o -@ARM_BUILD_CRT0_TRUE@CRT0_INSTALL = install-crt0 -@ARM_BUILD_CRT0_FALSE@CRT0 = -@ARM_BUILD_CRT0_FALSE@CRT0_INSTALL = - -NANO_SCRIPTS=nano.specs -NANO_INSTALL=install-nano - -LINUX_CRT0 = linux-crt0.o -LINUX_BSP = libgloss-linux.a -LINUX_OBJS = linux-syscalls0.o linux-syscalls1.o -LINUX_SCRIPTS = linux.specs -LINUX_INSTALL = install-linux - -REDBOOT_CRT0 = redboot-crt0.o -REDBOOT_OBJS = redboot-syscalls.o -REDBOOT_SCRIPTS = redboot.ld redboot.specs -REDBOOT_INSTALL = install-redboot - -RDPMON_CRT0 = rdpmon-crt0.o -RDPMON_BSP = librdpmon.a -RDPMON_OBJS = ftruncate.o libcfunc.o syscalls.o trap.o truncate.o _exit.o _kill.o -RDPMON_SCRIPTS = rdpmon.specs -RDPMON_INSTALL = install-rdpmon - -RDIMON_CRT0 = rdimon-crt0.o rdimon-crt0-v2m.o -RDIMON_BSP = librdimon.a librdimon-v2m.a -RDIMON_OBJS = $(patsubst %,rdimon-%,$(RDPMON_OBJS)) -_RDIMON_SCRIPTS = rdimon.specs \ - aprofile-validation.specs \ - aprofile-ve.specs -RDIMON_SCRIPTS = $(_RDIMON_SCRIPTS) $(patsubst %.specs,%-v2m.specs,$(_RDIMON_SCRIPTS)) -RDIMON_INSTALL = install-rdimon -RDIMON_SEMIHV2M_OBJS = $(patsubst %.o,rdimon-%-v2m.o,$(RDPMON_OBJS)) - -# Here is all of the eval board stuff -PID_SCRIPTS = pid.specs -PID_INSTALL = install-pid - -IQ80310_SCRIPTS = iq80310.specs -IQ80310_INSTALL = install-iq80310 - - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -all: ${CRT0} ${LINUX_CRT0} ${LINUX_BSP} ${REDBOOT_CRT0} ${REDBOOT_OBJS} ${RDPMON_CRT0} ${RDPMON_BSP} ${RDIMON_CRT0} ${RDIMON_BSP} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: - -# -crt0.o: crt0.S -redboot-crt0.o: redboot-crt0.S -redboot-syscalls.o: redboot-syscalls.c $(srcdir)/../syscall.h - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -o $@ -c $< - -rdpmon-crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDP_MONITOR -o $@ -c $< - -rdimon-crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-ftruncate.o: ftruncate.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-trap.o: trap.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-truncate.o: truncate.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-_exit.o: _exit.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-_kill.o: _kill.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-syscalls.o: syscalls.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-libcfunc.o: libcfunc.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-crt0-v2m.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-ftruncate-v2m.o: ftruncate.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-trap-v2m.o: trap.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-truncate-v2m.o: truncate.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-_exit-v2m.o: _exit.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-_kill-v2m.o: _kill.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-syscalls-v2m.o: syscalls.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -rdimon-libcfunc-v2m.o: libcfunc.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DSEMIHOST_V2 -DSEMIHOST_V2_MIXED_MODE -DARM_RDI_MONITOR -o $@ -c $< - -$(LINUX_BSP): $(LINUX_OBJS) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -$(RDPMON_BSP): $(RDPMON_OBJS) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -librdimon.a: $(RDIMON_OBJS) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -librdimon-v2m.a: $(RDIMON_SEMIHV2M_OBJS) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -# Multilib support. -.PHONY: libgloss-multi-do all-multi clean-multi install-multi - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP) - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${CRT0_INSTALL} ${LINUX_INSTALL} ${REDBOOT_INSTALL} ${RDPMON_INSTALL} ${RDIMON_INSTALL} ${IQ80310_INSTALL} ${PID_INSTALL} ${NANO_INSTALL} - -install-nano: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${NANO_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-crt0: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - ${INSTALL_DATA} ${CRT0} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x - -install-linux: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${LINUX_CRT0} ${LINUX_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${LINUX_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-redboot: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${REDBOOT_CRT0} ${REDBOOT_OBJS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${REDBOOT_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-rdpmon: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${RDPMON_CRT0} ${RDPMON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${RDPMON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-rdimon: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${RDIMON_CRT0} ${RDIMON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${RDIMON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - - -install-pid: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${PID_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-iq80310: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${IQ80310_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) ./config.status diff --git a/libgloss/arm/Makefile.inc b/libgloss/arm/Makefile.inc new file mode 100644 index 0000000000..41fce3c999 --- /dev/null +++ b/libgloss/arm/Makefile.inc @@ -0,0 +1,89 @@ +if !MAY_SUPPLY_SYSCALLS +multilibtool_DATA += %D%/crt0.o +endif + +%C%_SPECS = + +## nano files. +%C%_SPECS += %D%/nano.specs + +## Linux files. +%C%_SPECS += %D%/linux.specs +multilibtool_DATA += %D%/linux-crt0.o +multilibtool_LIBRARIES += %D%/libgloss-linux.a +%C%_libgloss_linux_a_SOURCES = \ + %D%/linux-syscalls0.c \ + %D%/linux-syscalls1.c + +## RedBoot files. +%C%_SPECS += %D%/redboot.ld %D%/redboot.specs +multilibtool_DATA += \ + %D%/redboot-crt0.o \ + %D%/redboot-syscalls.o + +%D%/redboot-syscalls.o: %D%/redboot-syscalls.c + $(AM_V_CC)$(COMPILE) -DSEMIHOST_V2 -o $@ -c $< + +## rdpmon files. +%C%_SPECS += %D%/rdpmon.specs +multilibtool_DATA += %D%/rdpmon-crt0.o +multilibtool_LIBRARIES += %D%/librdpmon.a +%C%_librdpmon_a_SOURCES = \ + %D%/_exit.c \ + %D%/_kill.c \ + %D%/ftruncate.c \ + %D%/libcfunc.c \ + %D%/syscalls.c \ + %D%/trap.S \ + %D%/truncate.c + +%D%/rdpmon-crt0.o: %D%/crt0.S + $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -DARM_RDP_MONITOR -o $@ -c $< + +## rdimon files. +%C%_SPECS += \ + %D%/rdimon.specs \ + %D%/rdimon-v2m.specs \ + %D%/aprofile-validation.specs \ + %D%/aprofile-validation-v2m.specs \ + %D%/aprofile-ve-v2m.specs \ + %D%/aprofile-ve.specs +multilibtool_DATA += \ + %D%/rdimon-crt0.o \ + %D%/rdimon-crt0-v2m.o +multilibtool_LIBRARIES += \ + %D%/librdimon.a \ + %D%/librdimon-v2m.a + +%C%_RDIMON_CPPFLAGS = -DSEMIHOST_V2 -DARM_RDI_MONITOR +%C%_RDIMON_V2M_CPPFLAGS = $(%C%_RDIMON_CPPFLAGS) -DSEMIHOST_V2_MIXED_MODE + +%D%/rdimon-crt0.o: %D%/crt0.S + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_RDIMON_CPPFLAGS) -o $@ -c $< + +%D%/rdimon-crt0-v2m.o: %D%/crt0.S + $(AM_V_CPPAS)$(CPPASCOMPILE) $(%C%_RDIMON_V2M_CPPFLAGS) -o $@ -c $< + +%C%_librdimon_a_SOURCES = $(%C%_librdpmon_a_SOURCES) +%C%_librdimon_a_CPPFLAGS = $(AM_CPPFLAGS) $(%C%_RDIMON_CPPFLAGS) +%C%_librdimon_v2m_a_SOURCES = $(%C%_librdpmon_a_SOURCES) +%C%_librdimon_v2m_a_CPPFLAGS = $(AM_CPPFLAGS) $(%C%_RDIMON_V2M_CPPFLAGS) + +## Here is all of the eval board stuff. +%C%_SPECS += \ + %D%/pid.specs \ + %D%/iq80310.specs + +multilibtool_DATA += \ + $(%C%_SPECS) + +## Make copies of the scripts to facilitate in-tree bootstrapping. +%D%/%.specs: %D%/$(ARM_OBJTYPE)%.specs + $(AM_V_GEN)cp $< $@ + +%D%/%.ld: %D%/$(ARM_OBJTYPE)%.ld + $(AM_V_GEN)cp $< $@ + +CLEANFILES += $(%C%_SPECS) + +include %D%/cpu-init/Makefile.inc diff --git a/libgloss/arm/acinclude.m4 b/libgloss/arm/acinclude.m4 index b34a40f9c6..d61474d3ad 100644 --- a/libgloss/arm/acinclude.m4 +++ b/libgloss/arm/acinclude.m4 @@ -1,13 +1,3 @@ -if test "x$newlib_may_supply_syscalls" = "xyes"; then - ARM_BUILD_CRT0_TRUE='#' - ARM_BUILD_CRT0_FALSE= -else - ARM_BUILD_CRT0_TRUE= - ARM_BUILD_CRT0_FALSE='#' -fi -AC_SUBST(ARM_BUILD_CRT0_TRUE) -AC_SUBST(ARM_BUILD_CRT0_FALSE) - ARM_OBJTYPE= case "${target}" in *-*-elf | *-*-eabi* | *-*-tirtos*) diff --git a/libgloss/arm/cpu-init/Makefile.in b/libgloss/arm/cpu-init/Makefile.in deleted file mode 100644 index 49ad53818d..0000000000 --- a/libgloss/arm/cpu-init/Makefile.in +++ /dev/null @@ -1,84 +0,0 @@ -# -# -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. @srcdir@/../.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../../.. -objroot = $(objdir)/../../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -objtype = @objtype@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -SHELL = /bin/sh - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -CPU_INIT_OBJS = rdimon-aem.o -CPU_INIT_INSTALL = install-cpu-init - -CFLAGS = -g - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -.PHONY: all -all: ${CPU_INIT_OBJS} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: - -# Static pattern rule for assembling cpu init files to object files. -${CPU_INIT_OBJS}: %.o: %.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $< - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${CPU_INIT_INSTALL} - -install-cpu-init: - test -d $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init || mkdir $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init - set -e; for x in ${CPU_INIT_OBJS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/cpu-init/$$x; done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../../config.status - cd ../.. && $(SHELL) ./config.status --file arm/cpu-init/Makefile diff --git a/libgloss/arm/cpu-init/Makefile.inc b/libgloss/arm/cpu-init/Makefile.inc new file mode 100644 index 0000000000..5a8a75657a --- /dev/null +++ b/libgloss/arm/cpu-init/Makefile.inc @@ -0,0 +1,15 @@ +%C%cpuinitdir = $(tooldir)/lib$(MULTISUBDIR)/cpu-init +%C%cpuinit_DATA = \ + %D%/rdimon-aem.o + +## The manual dirstamp is needed as automake doesn't recognize compile rules +## via DATA. If we ever add rules it does know about, we can drop this. +%D%/$(am__dirstamp): + @$(MKDIR_P) %D% + @: > $@ + +%D%/rdimon-aem.$(OBJEXT): %D%/rdimon-aem.S %D%/$(am__dirstamp) + @$(MKDIR_P) %D% + $(AM_V_CC)$(COMPILE) -DARM_RDI_MONITOR -o $@ -c $< + +CLEANFILES += $(%C%cpuinit_DATA) diff --git a/libgloss/configure b/libgloss/configure index d89ba5b517..a9d32aa946 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -602,8 +602,6 @@ MCORE_BSP_PREFIX M68K_TARGET I386_CPPFLAGS ARM_OBJTYPE -ARM_BUILD_CRT0_FALSE -ARM_BUILD_CRT0_TRUE AARCH64_OBJTYPE CPP RANLIB @@ -644,6 +642,8 @@ CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE CONFIG_BFIN_FALSE CONFIG_BFIN_TRUE +CONFIG_ARM_FALSE +CONFIG_ARM_TRUE CONFIG_AARCH64_FALSE CONFIG_AARCH64_TRUE subdirs @@ -693,6 +693,8 @@ build INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM +MAY_SUPPLY_SYSCALLS_FALSE +MAY_SUPPLY_SYSCALLS_TRUE target_alias host_alias build_alias @@ -1953,6 +1955,15 @@ else newlib_may_supply_syscalls=yes fi + if test x${newlib_may_supply_syscalls} = xyes; then + MAY_SUPPLY_SYSCALLS_TRUE= + MAY_SUPPLY_SYSCALLS_FALSE='#' +else + MAY_SUPPLY_SYSCALLS_TRUE='#' + MAY_SUPPLY_SYSCALLS_FALSE= +fi + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -2935,9 +2946,7 @@ case "${target}" in subdirs="$subdirs rx" ;; arm*-*-elf | arm*-*-coff | arm*-*-*) - ac_config_files="$ac_config_files arm/Makefile arm/cpu-init/Makefile" - - subdirs="$subdirs arm arm/cpu-init" + config_arm=true ;; spu-*-elf) ac_config_files="$ac_config_files spu/Makefile" @@ -2982,6 +2991,14 @@ else CONFIG_AARCH64_FALSE= fi + if test x$config_arm = xtrue; then + CONFIG_ARM_TRUE= + CONFIG_ARM_FALSE='#' +else + CONFIG_ARM_TRUE='#' + CONFIG_ARM_FALSE= +fi + if test x$config_bfin = xtrue; then CONFIG_BFIN_TRUE= CONFIG_BFIN_FALSE='#' @@ -4853,16 +4870,6 @@ case "${target}" in esac -if test "x$newlib_may_supply_syscalls" = "xyes"; then - ARM_BUILD_CRT0_TRUE='#' - ARM_BUILD_CRT0_FALSE= -else - ARM_BUILD_CRT0_TRUE= - ARM_BUILD_CRT0_FALSE='#' -fi - - - ARM_OBJTYPE= case "${target}" in *-*-elf | *-*-eabi* | *-*-tirtos*) @@ -5228,6 +5235,10 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs +if test -z "${MAY_SUPPLY_SYSCALLS_TRUE}" && test -z "${MAY_SUPPLY_SYSCALLS_FALSE}"; then + as_fn_error $? "conditional \"MAY_SUPPLY_SYSCALLS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then @@ -5260,6 +5271,10 @@ if test -z "${CONFIG_AARCH64_TRUE}" && test -z "${CONFIG_AARCH64_FALSE}"; then as_fn_error $? "conditional \"CONFIG_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_ARM_TRUE}" && test -z "${CONFIG_ARM_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_ARM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_BFIN_TRUE}" && test -z "${CONFIG_BFIN_FALSE}"; then as_fn_error $? "conditional \"CONFIG_BFIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5940,8 +5955,6 @@ do "msp430/Makefile") CONFIG_FILES="$CONFIG_FILES msp430/Makefile" ;; "rl78/Makefile") CONFIG_FILES="$CONFIG_FILES rl78/Makefile" ;; "rx/Makefile") CONFIG_FILES="$CONFIG_FILES rx/Makefile" ;; - "arm/Makefile") CONFIG_FILES="$CONFIG_FILES arm/Makefile" ;; - "arm/cpu-init/Makefile") CONFIG_FILES="$CONFIG_FILES arm/cpu-init/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 33026534ff..6b01178055 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -18,6 +18,8 @@ AC_ARG_ENABLE(newlib-supplied-syscalls, *) AC_MSG_ERROR(bad value ${enableval} for newlib-supplied-syscalls option) ;; esac], [newlib_may_supply_syscalls=yes])dnl +AM_CONDITIONAL(MAY_SUPPLY_SYSCALLS, test x[$]{newlib_may_supply_syscalls} = xyes) + AC_PROG_INSTALL AC_CANONICAL_SYSTEM @@ -214,8 +216,7 @@ case "${target}" in subdirs="$subdirs rx" ;; arm*-*-elf | arm*-*-coff | arm*-*-*) - AC_CONFIG_FILES([arm/Makefile arm/cpu-init/Makefile]) - subdirs="$subdirs arm arm/cpu-init" + config_arm=true ;; spu-*-elf) AC_CONFIG_FILES([spu/Makefile]) @@ -250,7 +251,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 bfin iq2000 libnosys lm32 riscv wince + aarch64 arm bfin iq2000 libnosys lm32 riscv wince ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) From 5401db924f565a72939d2b7cb66d6d51203fefb7 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 14 Dec 2022 18:54:45 -0500 Subject: [PATCH 091/767] libgloss: merge arc into top-level Makefile Avoid a recursive make to speed things up a bit. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 136 +++++++++++++++++++++++++------------- libgloss/arc/Makefile.in | 122 ---------------------------------- libgloss/arc/Makefile.inc | 12 ++++ libgloss/configure | 19 ++++-- libgloss/configure.ac | 5 +- 6 files changed, 122 insertions(+), 175 deletions(-) delete mode 100644 libgloss/arc/Makefile.in create mode 100644 libgloss/arc/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 0060db3ea8..b6b89cf4f8 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -66,6 +66,9 @@ endif if CONFIG_AARCH64 include aarch64/Makefile.inc endif +if CONFIG_ARC +include arc/Makefile.inc +endif if CONFIG_ARM include arm/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 87c352d927..bd7dd3740c 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -101,22 +101,29 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_AARCH64_TRUE@am__append_4 = $(aarch64_SPECS) \ @CONFIG_AARCH64_TRUE@ $(aarch64_cpu_initcpuinit_DATA) -@CONFIG_ARM_TRUE@@MAY_SUPPLY_SYSCALLS_FALSE@am__append_5 = arm/crt0.o -@CONFIG_ARM_TRUE@am__append_6 = arm/linux-crt0.o arm/redboot-crt0.o \ +@CONFIG_ARC_TRUE@am__append_5 = arc/libnsim.a +@CONFIG_ARC_TRUE@am__append_6 = \ +@CONFIG_ARC_TRUE@ arc/crt0.o \ +@CONFIG_ARC_TRUE@ arc/gcrt0.o \ +@CONFIG_ARC_TRUE@ arc/nano.specs \ +@CONFIG_ARC_TRUE@ arc/nsim.specs + +@CONFIG_ARM_TRUE@@MAY_SUPPLY_SYSCALLS_FALSE@am__append_7 = arm/crt0.o +@CONFIG_ARM_TRUE@am__append_8 = arm/linux-crt0.o arm/redboot-crt0.o \ @CONFIG_ARM_TRUE@ arm/redboot-syscalls.o arm/rdpmon-crt0.o \ @CONFIG_ARM_TRUE@ arm/rdimon-crt0.o arm/rdimon-crt0-v2m.o \ @CONFIG_ARM_TRUE@ $(arm_SPECS) -@CONFIG_ARM_TRUE@am__append_7 = arm/libgloss-linux.a arm/librdpmon.a \ +@CONFIG_ARM_TRUE@am__append_9 = arm/libgloss-linux.a arm/librdpmon.a \ @CONFIG_ARM_TRUE@ arm/librdimon.a arm/librdimon-v2m.a -@CONFIG_ARM_TRUE@am__append_8 = $(arm_SPECS) \ +@CONFIG_ARM_TRUE@am__append_10 = $(arm_SPECS) \ @CONFIG_ARM_TRUE@ $(arm_cpu_initcpuinit_DATA) # Here is all of the simulator stuff. -@CONFIG_BFIN_TRUE@am__append_9 = bfin/libsim.a bfin/libbfinbsp.a -@CONFIG_BFIN_TRUE@am__append_10 = bfin/sim-test +@CONFIG_BFIN_TRUE@am__append_11 = bfin/libsim.a bfin/libbfinbsp.a +@CONFIG_BFIN_TRUE@am__append_12 = bfin/sim-test # Here is all of the development board stuff. -@CONFIG_BFIN_TRUE@am__append_11 = \ +@CONFIG_BFIN_TRUE@am__append_13 = \ @CONFIG_BFIN_TRUE@ bfin/crt0.o \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.o \ @CONFIG_BFIN_TRUE@ bfin/basiccrts.o \ @@ -127,11 +134,11 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) # bfin/basiccrt60x.o \ # bfin/basiccrt60xs.o \ # bfin/basiccrt60xc1.o -@CONFIG_BFIN_TRUE@am__append_12 = \ +@CONFIG_BFIN_TRUE@am__append_14 = \ @CONFIG_BFIN_TRUE@ bfin/crt0.S \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.S -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_13 = \ +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_15 = \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bfin-common-sc.ld bfin/bfin-common-mc.ld bfin/bfin-common-mc0.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf504.ld bfin/bf506.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf512.ld bfin/bf514.ld bfin/bf516.ld bfin/bf518.ld \ @@ -147,27 +154,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf609.ld bfin/bf609c0.ld bfin/bf609c1.ld bfin/bf609m.ld \ @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@ bfin/bf592.ld -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_14 = $(wildcard $(srcdir)/bfin/include/*.h) -@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_15 = $(wildcard $(srcdir)/bfin/include/sys/*.h) -@CONFIG_IQ2000_TRUE@am__append_16 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_17 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_18 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_19 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_20 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_21 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_22 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_23 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_24 = lm32/crt0.S -@CONFIG_RISCV_TRUE@am__append_25 = \ +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_16 = $(wildcard $(srcdir)/bfin/include/*.h) +@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_17 = $(wildcard $(srcdir)/bfin/include/sys/*.h) +@CONFIG_IQ2000_TRUE@am__append_18 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_19 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_20 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_21 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_22 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_23 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_24 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_25 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_26 = lm32/crt0.S +@CONFIG_RISCV_TRUE@am__append_27 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_26 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_28 = riscv/libgloss.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_27 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_28 = wince/stub.exe +@CONFIG_WINCE_TRUE@am__append_29 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_30 = wince/stub.exe subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -190,10 +197,10 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = arc/Makefile csky/Makefile epiphany/Makefile \ - i386/Makefile m32r/Makefile m68hc11/Makefile nds32/Makefile \ - m68k/Makefile pa/Makefile i960/Makefile sparc_leon/Makefile \ - sparc/Makefile mips/Makefile rs6000/Makefile mn10200/Makefile \ +CONFIG_CLEAN_FILES = csky/Makefile epiphany/Makefile i386/Makefile \ + m32r/Makefile m68hc11/Makefile nds32/Makefile m68k/Makefile \ + pa/Makefile i960/Makefile sparc_leon/Makefile sparc/Makefile \ + mips/Makefile rs6000/Makefile mn10200/Makefile \ mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ d30v/Makefile fr30/Makefile frv/Makefile ft32/Makefile \ mcore/Makefile mep/Makefile moxie/Makefile microblaze/Makefile \ @@ -252,6 +259,13 @@ am__dirstamp = $(am__leading_dot)dirstamp @CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-syscalls.$(OBJEXT) \ @CONFIG_AARCH64_TRUE@ aarch64/aarch64_librdimon_a-truncate.$(OBJEXT) aarch64_librdimon_a_OBJECTS = $(am_aarch64_librdimon_a_OBJECTS) +arc_libnsim_a_AR = $(AR) $(ARFLAGS) +arc_libnsim_a_LIBADD = +@CONFIG_ARC_TRUE@am_arc_libnsim_a_OBJECTS = arc/libcfunc.$(OBJEXT) \ +@CONFIG_ARC_TRUE@ arc/mcount.$(OBJEXT) \ +@CONFIG_ARC_TRUE@ arc/nsim-syscalls.$(OBJEXT) \ +@CONFIG_ARC_TRUE@ arc/sbrk.$(OBJEXT) +arc_libnsim_a_OBJECTS = $(am_arc_libnsim_a_OBJECTS) arm_libgloss_linux_a_AR = $(AR) $(ARFLAGS) arm_libgloss_linux_a_LIBADD = @CONFIG_ARM_TRUE@am_arm_libgloss_linux_a_OBJECTS = \ @@ -480,7 +494,7 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(aarch64_librdimon_a_SOURCES) \ +SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ @@ -574,7 +588,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_27) +VPATH = @srcdir@ $(am__append_29) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -700,28 +714,29 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_8) +CLEANFILES = $(am__append_4) $(am__append_10) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) -multilibtool_DATA = $(am__append_3) $(am__append_5) $(am__append_6) \ - $(am__append_11) $(am__append_13) $(am__append_16) \ - $(am__append_20) $(am__append_22) $(am__append_25) -multilibtool_LIBRARIES = $(am__append_2) $(am__append_7) \ - $(am__append_9) $(am__append_17) $(am__append_21) \ - $(am__append_23) $(am__append_26) +multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ + $(am__append_8) $(am__append_13) $(am__append_15) \ + $(am__append_18) $(am__append_22) $(am__append_24) \ + $(am__append_27) +multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ + $(am__append_9) $(am__append_11) $(am__append_19) \ + $(am__append_23) $(am__append_25) $(am__append_28) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_14) +includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys -includesystool_DATA = $(am__append_15) +includesystool_DATA = $(am__append_17) AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_12) $(am__append_18) $(am__append_24) +libobjs_a_SOURCES = $(am__append_14) $(am__append_20) $(am__append_26) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -776,6 +791,12 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_AARCH64_TRUE@ aarch64/cpu-init/rdimon-aem-el3.o \ @CONFIG_AARCH64_TRUE@ aarch64/cpu-init/rdimon-aem-v8-r.o +@CONFIG_ARC_TRUE@arc_libnsim_a_SOURCES = \ +@CONFIG_ARC_TRUE@ arc/libcfunc.c \ +@CONFIG_ARC_TRUE@ arc/mcount.c \ +@CONFIG_ARC_TRUE@ arc/nsim-syscalls.c \ +@CONFIG_ARC_TRUE@ arc/sbrk.c + @CONFIG_ARM_TRUE@arm_SPECS = arm/nano.specs arm/linux.specs \ @CONFIG_ARM_TRUE@ arm/redboot.ld arm/redboot.specs \ @CONFIG_ARM_TRUE@ arm/rdpmon.specs arm/rdimon.specs \ @@ -938,7 +959,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -960,7 +981,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -985,8 +1006,6 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) distclean-hdr: -rm -f config.h stamp-h1 -arc/Makefile: $(top_builddir)/config.status $(top_srcdir)/arc/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ csky/Makefile: $(top_builddir)/config.status $(top_srcdir)/csky/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ epiphany/Makefile: $(top_builddir)/config.status $(top_srcdir)/epiphany/Makefile.in @@ -1124,6 +1143,24 @@ aarch64/librdimon.a: $(aarch64_librdimon_a_OBJECTS) $(aarch64_librdimon_a_DEPEND $(AM_V_at)-rm -f aarch64/librdimon.a $(AM_V_AR)$(aarch64_librdimon_a_AR) aarch64/librdimon.a $(aarch64_librdimon_a_OBJECTS) $(aarch64_librdimon_a_LIBADD) $(AM_V_at)$(RANLIB) aarch64/librdimon.a +arc/$(am__dirstamp): + @$(MKDIR_P) arc + @: > arc/$(am__dirstamp) +arc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) arc/$(DEPDIR) + @: > arc/$(DEPDIR)/$(am__dirstamp) +arc/libcfunc.$(OBJEXT): arc/$(am__dirstamp) \ + arc/$(DEPDIR)/$(am__dirstamp) +arc/mcount.$(OBJEXT): arc/$(am__dirstamp) \ + arc/$(DEPDIR)/$(am__dirstamp) +arc/nsim-syscalls.$(OBJEXT): arc/$(am__dirstamp) \ + arc/$(DEPDIR)/$(am__dirstamp) +arc/sbrk.$(OBJEXT): arc/$(am__dirstamp) arc/$(DEPDIR)/$(am__dirstamp) + +arc/libnsim.a: $(arc_libnsim_a_OBJECTS) $(arc_libnsim_a_DEPENDENCIES) $(EXTRA_arc_libnsim_a_DEPENDENCIES) arc/$(am__dirstamp) + $(AM_V_at)-rm -f arc/libnsim.a + $(AM_V_AR)$(arc_libnsim_a_AR) arc/libnsim.a $(arc_libnsim_a_OBJECTS) $(arc_libnsim_a_LIBADD) + $(AM_V_at)$(RANLIB) arc/libnsim.a arm/$(am__dirstamp): @$(MKDIR_P) arm @: > arm/$(am__dirstamp) @@ -1555,6 +1592,7 @@ wince/stub.exe$(EXEEXT): $(wince_stub_exe_OBJECTS) $(wince_stub_exe_DEPENDENCIES mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f aarch64/*.$(OBJEXT) + -rm -f arc/*.$(OBJEXT) -rm -f arm/*.$(OBJEXT) -rm -f bfin/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) @@ -1572,6 +1610,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/libcfunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/mcount.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/nsim-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/sbrk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/_kill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-_exit.Po@am__quote@ @@ -3314,6 +3356,8 @@ distclean-generic: -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f aarch64/$(am__dirstamp) + -rm -f arc/$(DEPDIR)/$(am__dirstamp) + -rm -f arc/$(am__dirstamp) -rm -f arm/$(DEPDIR)/$(am__dirstamp) -rm -f arm/$(am__dirstamp) -rm -f bfin/$(DEPDIR)/$(am__dirstamp) @@ -3340,7 +3384,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -3483,7 +3527,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/arc/Makefile.in b/libgloss/arc/Makefile.in deleted file mode 100644 index e343dd2228..0000000000 --- a/libgloss/arc/Makefile.in +++ /dev/null @@ -1,122 +0,0 @@ -# -# -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -objtype = @objtype@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -SHELL = /bin/sh - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = gcrt0.o crt0.o -CRT0_INSTALL = install-crt0 - -NSIM_BSP = libnsim.a -NSIM_OBJS = \ - libcfunc.o \ - nsim-syscalls.o \ - sbrk.o \ - mcount.o -NSIM_INSTALL = install-nsim -NSIM_SCRIPTS = nsim.specs - -NANO_SCRIPTS = nano.specs -NANO_INSTALL = install-nano - -CFLAGS = -g - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all: $(CRT0) $(NSIM_BSP) - -$(NSIM_BSP): $(NSIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -libcfunc.o: libcfunc.c -nsim-syscalls.o: nsim-syscalls.c -sbrk.o: sbrk.c -mcount.o: mcount.c -gcrt0.o: gcrt0.S crt0.S -crt0.o: crt0.S - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info doc dvi -install: $(CRT0_INSTALL) $(NSIM_INSTALL) $(NANO_INSTALL) - -# multilibdir may not exist yet - libgcc for ARC depends on libc, hence -# newlib/libgloss is built before libgcc. And in parallel build libgloss maybe -# built and installed before newlib, therefore libgloss has to create target -# directory. - -$(CRT0_INSTALL): - $(mkinstalldirs) $(DESTDIR)${tooldir}/lib${MULTISUBDIR} - for c in $(CRT0); do \ - b=`basename $$c`; \ - ${INSTALL_DATA} $$c $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$b ;\ - done - -$(NSIM_INSTALL): - $(mkinstalldirs) $(DESTDIR)${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(NSIM_BSP) $(DESTDIR)$(tooldir)/lib$(MULTISUBDIR)/$(NSIM_BSP) - for x in $(NSIM_SCRIPTS); do \ - $(INSTALL_DATA) $(srcdir)/$$x $(DESTDIR)$(tooldir)/lib$(MULTISUBDIR)/$$x; done - -$(NANO_INSTALL): - $(mkinstalldirs) $(DESTDIR)${tooldir}/lib${MULTISUBDIR} - for x in $(NANO_SCRIPTS); do \ - $(INSTALL_DATA) $(srcdir)/$$x $(DESTDIR)$(tooldir)/lib$(MULTISUBDIR)/$$x; done - -doc: -info: -dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/arc/Makefile.inc b/libgloss/arc/Makefile.inc new file mode 100644 index 0000000000..fe9cc76104 --- /dev/null +++ b/libgloss/arc/Makefile.inc @@ -0,0 +1,12 @@ +multilibtool_LIBRARIES += %D%/libnsim.a +%C%_libnsim_a_SOURCES = \ + %D%/libcfunc.c \ + %D%/mcount.c \ + %D%/nsim-syscalls.c \ + %D%/sbrk.c + +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/gcrt0.o \ + %D%/nano.specs \ + %D%/nsim.specs diff --git a/libgloss/configure b/libgloss/configure index a9d32aa946..449346817d 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -644,6 +644,8 @@ CONFIG_BFIN_FALSE CONFIG_BFIN_TRUE CONFIG_ARM_FALSE CONFIG_ARM_TRUE +CONFIG_ARC_FALSE +CONFIG_ARC_TRUE CONFIG_AARCH64_FALSE CONFIG_AARCH64_TRUE subdirs @@ -2746,9 +2748,7 @@ case "${target}" in config_testsuite=true ;; arc*-*-*) - ac_config_files="$ac_config_files arc/Makefile" - - subdirs="$subdirs arc" + config_arc=true ;; csky*-*-*) ac_config_files="$ac_config_files csky/Makefile" @@ -2991,6 +2991,14 @@ else CONFIG_AARCH64_FALSE= fi + if test x$config_arc = xtrue; then + CONFIG_ARC_TRUE= + CONFIG_ARC_FALSE='#' +else + CONFIG_ARC_TRUE='#' + CONFIG_ARC_FALSE= +fi + if test x$config_arm = xtrue; then CONFIG_ARM_TRUE= CONFIG_ARM_FALSE='#' @@ -5271,6 +5279,10 @@ if test -z "${CONFIG_AARCH64_TRUE}" && test -z "${CONFIG_AARCH64_FALSE}"; then as_fn_error $? "conditional \"CONFIG_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_ARC_TRUE}" && test -z "${CONFIG_ARC_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_ARC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_ARM_TRUE}" && test -z "${CONFIG_ARM_FALSE}"; then as_fn_error $? "conditional \"CONFIG_ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5919,7 +5931,6 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "arc/Makefile") CONFIG_FILES="$CONFIG_FILES arc/Makefile" ;; "csky/Makefile") CONFIG_FILES="$CONFIG_FILES csky/Makefile" ;; "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; "i386/Makefile") CONFIG_FILES="$CONFIG_FILES i386/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 6b01178055..ef7b57854b 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -52,8 +52,7 @@ case "${target}" in config_testsuite=true ;; arc*-*-*) - AC_CONFIG_FILES([arc/Makefile]) - subdirs="$subdirs arc" + config_arc=true ;; csky*-*-*) AC_CONFIG_FILES([csky/Makefile]) @@ -251,7 +250,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arm bfin iq2000 libnosys lm32 riscv wince + aarch64 arc arm bfin iq2000 libnosys lm32 riscv wince ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) From 0e1c0a02cfeafaeb88be025c6e99538337d67d8c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 14 Dec 2022 18:58:01 -0500 Subject: [PATCH 092/767] libgloss: merge d30v into top-level Makefile Avoid a recursive make to speed things up a bit. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 112 +++++++++++++++++++++++--------- libgloss/configure | 19 ++++-- libgloss/configure.ac | 5 +- libgloss/d30v/Makefile.in | 129 ------------------------------------- libgloss/d30v/Makefile.inc | 12 ++++ 6 files changed, 112 insertions(+), 168 deletions(-) delete mode 100644 libgloss/d30v/Makefile.in create mode 100644 libgloss/d30v/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index b6b89cf4f8..13290453c8 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -75,6 +75,9 @@ endif if CONFIG_BFIN include bfin/Makefile.inc endif +if CONFIG_D30V +include d30v/Makefile.inc +endif if CONFIG_IQ2000 include iq2000/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index bd7dd3740c..a17685107e 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -156,25 +156,29 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_16 = $(wildcard $(srcdir)/bfin/include/*.h) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_17 = $(wildcard $(srcdir)/bfin/include/sys/*.h) -@CONFIG_IQ2000_TRUE@am__append_18 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_19 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_20 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_21 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_22 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_23 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_24 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_25 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_26 = lm32/crt0.S -@CONFIG_RISCV_TRUE@am__append_27 = \ +@CONFIG_D30V_TRUE@am__append_18 = d30v/libsim.a +@CONFIG_D30V_TRUE@am__append_19 = \ +@CONFIG_D30V_TRUE@ d30v/crt0.o + +@CONFIG_IQ2000_TRUE@am__append_20 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_21 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_22 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_23 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_24 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_25 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_26 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_27 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_28 = lm32/crt0.S +@CONFIG_RISCV_TRUE@am__append_29 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_28 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_30 = riscv/libgloss.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_29 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_30 = wince/stub.exe +@CONFIG_WINCE_TRUE@am__append_31 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_32 = wince/stub.exe subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -202,9 +206,9 @@ CONFIG_CLEAN_FILES = csky/Makefile epiphany/Makefile i386/Makefile \ pa/Makefile i960/Makefile sparc_leon/Makefile sparc/Makefile \ mips/Makefile rs6000/Makefile mn10200/Makefile \ mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ - d30v/Makefile fr30/Makefile frv/Makefile ft32/Makefile \ - mcore/Makefile mep/Makefile moxie/Makefile microblaze/Makefile \ - mt/Makefile v850/Makefile visium/Makefile xc16x/Makefile \ + fr30/Makefile frv/Makefile ft32/Makefile mcore/Makefile \ + mep/Makefile moxie/Makefile microblaze/Makefile mt/Makefile \ + v850/Makefile visium/Makefile xc16x/Makefile \ xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ pru/Makefile nios2/Makefile @@ -312,6 +316,14 @@ bfin_libsim_a_LIBADD = @CONFIG_BFIN_TRUE@am_bfin_libsim_a_OBJECTS = bfin/bfin_libsim_a-clear_cache_range.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/bfin_libsim_a-syscalls.$(OBJEXT) bfin_libsim_a_OBJECTS = $(am_bfin_libsim_a_OBJECTS) +d30v_libsim_a_AR = $(AR) $(ARFLAGS) +d30v_libsim_a_LIBADD = +@CONFIG_D30V_TRUE@am_d30v_libsim_a_OBJECTS = isatty.$(OBJEXT) \ +@CONFIG_D30V_TRUE@ print.$(OBJEXT) putnum.$(OBJEXT) \ +@CONFIG_D30V_TRUE@ sbrk.$(OBJEXT) d30v/inbyte.$(OBJEXT) \ +@CONFIG_D30V_TRUE@ d30v/outbyte.$(OBJEXT) \ +@CONFIG_D30V_TRUE@ d30v/syscalls.$(OBJEXT) +d30v_libsim_a_OBJECTS = $(am_d30v_libsim_a_OBJECTS) iq2000_libeval_a_AR = $(AR) $(ARFLAGS) iq2000_libeval_a_LIBADD = @CONFIG_IQ2000_TRUE@am_iq2000_libeval_a_OBJECTS = \ @@ -498,10 +510,11 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ - $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ - $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - bfin/sim-test.c iq2000/test.c $(wince_stub_exe_SOURCES) + $(d30v_libsim_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ + $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) bfin/sim-test.c iq2000/test.c \ + $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -588,7 +601,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_29) +VPATH = @srcdir@ $(am__append_31) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -722,11 +735,12 @@ tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ - $(am__append_18) $(am__append_22) $(am__append_24) \ - $(am__append_27) + $(am__append_19) $(am__append_20) $(am__append_24) \ + $(am__append_26) $(am__append_29) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ - $(am__append_9) $(am__append_11) $(am__append_19) \ - $(am__append_23) $(am__append_25) $(am__append_28) + $(am__append_9) $(am__append_11) $(am__append_18) \ + $(am__append_21) $(am__append_25) $(am__append_27) \ + $(am__append_30) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -736,7 +750,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_14) $(am__append_20) $(am__append_26) +libobjs_a_SOURCES = $(am__append_14) $(am__append_22) $(am__append_28) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -846,6 +860,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_BFIN_TRUE@ $(AM_CPPFLAGS) \ @CONFIG_BFIN_TRUE@ $(bfin_CPPFLAGS) +@CONFIG_D30V_TRUE@d30v_libsim_a_SOURCES = \ +@CONFIG_D30V_TRUE@ isatty.c \ +@CONFIG_D30V_TRUE@ print.c \ +@CONFIG_D30V_TRUE@ putnum.c \ +@CONFIG_D30V_TRUE@ sbrk.c \ +@CONFIG_D30V_TRUE@ d30v/inbyte.c \ +@CONFIG_D30V_TRUE@ d30v/outbyte.c \ +@CONFIG_D30V_TRUE@ d30v/syscalls.c + @CONFIG_IQ2000_TRUE@iq2000_libeval_a_SOURCES = \ @CONFIG_IQ2000_TRUE@ iq2000/_exit.c iq2000/access.c iq2000/chmod.c iq2000/close.c iq2000/crt1.c \ @CONFIG_IQ2000_TRUE@ iq2000/fstat.c iq2000/getpid.c iq2000/gettime.c iq2000/isatty.c \ @@ -959,7 +982,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -981,7 +1004,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1042,8 +1065,6 @@ cris/Makefile: $(top_builddir)/config.status $(top_srcdir)/cris/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ crx/Makefile: $(top_builddir)/config.status $(top_srcdir)/crx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -d30v/Makefile: $(top_builddir)/config.status $(top_srcdir)/d30v/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ fr30/Makefile: $(top_builddir)/config.status $(top_srcdir)/fr30/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ frv/Makefile: $(top_builddir)/config.status $(top_srcdir)/frv/Makefile.in @@ -1254,6 +1275,23 @@ bfin/libsim.a: $(bfin_libsim_a_OBJECTS) $(bfin_libsim_a_DEPENDENCIES) $(EXTRA_bf $(AM_V_at)-rm -f bfin/libsim.a $(AM_V_AR)$(bfin_libsim_a_AR) bfin/libsim.a $(bfin_libsim_a_OBJECTS) $(bfin_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) bfin/libsim.a +d30v/$(am__dirstamp): + @$(MKDIR_P) d30v + @: > d30v/$(am__dirstamp) +d30v/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) d30v/$(DEPDIR) + @: > d30v/$(DEPDIR)/$(am__dirstamp) +d30v/inbyte.$(OBJEXT): d30v/$(am__dirstamp) \ + d30v/$(DEPDIR)/$(am__dirstamp) +d30v/outbyte.$(OBJEXT): d30v/$(am__dirstamp) \ + d30v/$(DEPDIR)/$(am__dirstamp) +d30v/syscalls.$(OBJEXT): d30v/$(am__dirstamp) \ + d30v/$(DEPDIR)/$(am__dirstamp) + +d30v/libsim.a: $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_DEPENDENCIES) $(EXTRA_d30v_libsim_a_DEPENDENCIES) d30v/$(am__dirstamp) + $(AM_V_at)-rm -f d30v/libsim.a + $(AM_V_AR)$(d30v_libsim_a_AR) d30v/libsim.a $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) d30v/libsim.a iq2000/$(am__dirstamp): @$(MKDIR_P) iq2000 @: > iq2000/$(am__dirstamp) @@ -1595,6 +1633,7 @@ mostlyclean-compile: -rm -f arc/*.$(OBJEXT) -rm -f arm/*.$(OBJEXT) -rm -f bfin/*.$(OBJEXT) + -rm -f d30v/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) @@ -1603,6 +1642,10 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbrk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wince_stub_exe-wince-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Po@am__quote@ @@ -1644,6 +1687,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libsim_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/sim-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/outbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iq2000/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iq2000/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iq2000/$(DEPDIR)/chmod.Po@am__quote@ @@ -3362,6 +3408,8 @@ distclean-generic: -rm -f arm/$(am__dirstamp) -rm -f bfin/$(DEPDIR)/$(am__dirstamp) -rm -f bfin/$(am__dirstamp) + -rm -f d30v/$(DEPDIR)/$(am__dirstamp) + -rm -f d30v/$(am__dirstamp) -rm -f doc/$(am__dirstamp) -rm -f iq2000/$(DEPDIR)/$(am__dirstamp) -rm -f iq2000/$(am__dirstamp) @@ -3384,7 +3432,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -3527,7 +3575,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 449346817d..84d4c5e43d 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -640,6 +640,8 @@ CONFIG_LIBNOSYS_FALSE CONFIG_LIBNOSYS_TRUE CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE +CONFIG_D30V_FALSE +CONFIG_D30V_TRUE CONFIG_BFIN_FALSE CONFIG_BFIN_TRUE CONFIG_ARM_FALSE @@ -2855,9 +2857,7 @@ case "${target}" in subdirs="$subdirs crx" ;; d30v-*-*) - ac_config_files="$ac_config_files d30v/Makefile" - - subdirs="$subdirs d30v" + config_d30v=true ;; fr30-*-*) ac_config_files="$ac_config_files fr30/Makefile" @@ -3015,6 +3015,14 @@ else CONFIG_BFIN_FALSE= fi + if test x$config_d30v = xtrue; then + CONFIG_D30V_TRUE= + CONFIG_D30V_FALSE='#' +else + CONFIG_D30V_TRUE='#' + CONFIG_D30V_FALSE= +fi + if test x$config_iq2000 = xtrue; then CONFIG_IQ2000_TRUE= CONFIG_IQ2000_FALSE='#' @@ -5291,6 +5299,10 @@ if test -z "${CONFIG_BFIN_TRUE}" && test -z "${CONFIG_BFIN_FALSE}"; then as_fn_error $? "conditional \"CONFIG_BFIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_D30V_TRUE}" && test -z "${CONFIG_D30V_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_D30V\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_IQ2000_TRUE}" && test -z "${CONFIG_IQ2000_FALSE}"; then as_fn_error $? "conditional \"CONFIG_IQ2000\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5949,7 +5961,6 @@ do "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; - "d30v/Makefile") CONFIG_FILES="$CONFIG_FILES d30v/Makefile" ;; "fr30/Makefile") CONFIG_FILES="$CONFIG_FILES fr30/Makefile" ;; "frv/Makefile") CONFIG_FILES="$CONFIG_FILES frv/Makefile" ;; "ft32/Makefile") CONFIG_FILES="$CONFIG_FILES ft32/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index ef7b57854b..59230edc99 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -141,8 +141,7 @@ case "${target}" in subdirs="$subdirs crx" ;; d30v-*-*) - AC_CONFIG_FILES([d30v/Makefile]) - subdirs="$subdirs d30v" + config_d30v=true ;; fr30-*-*) AC_CONFIG_FILES([fr30/Makefile]) @@ -250,7 +249,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin iq2000 libnosys lm32 riscv wince + aarch64 arc arm bfin d30v iq2000 libnosys lm32 riscv wince ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/d30v/Makefile.in b/libgloss/d30v/Makefile.in deleted file mode 100644 index a27e720ff8..0000000000 --- a/libgloss/d30v/Makefile.in +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright (c) 1997 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. -# - -# -# This currently works with the D30V simulator. -# - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -OBJS = isatty.o print.o putnum.o sbrk.o -CFLAGS = -g -SCRIPTS = ${SIM_SCRIPTS} - -# Here is all of the simulator stuff -SIM_SCRIPTS = -SIM_LDFLAGS = -SIM_BSP = libsim.a -SIM_CRT0 = crt0.o -SIM_OBJS = syscalls.o outbyte.o inbyte.o -SIM_TEST = -SIM_INSTALL = install-sim - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -all: ${SIM_CRT0} ${SIM_BSP} - -# -# here's where we build the board support packages for each target -# - -${SIM_BSP}: ${OBJS} ${SIM_OBJS} - ${AR} ${ARFLAGS} $@ ${SIM_OBJS} ${OBJS} - ${RANLIB} $@ - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: ${SIM_TEST} - -crt0.o: crt0.S -syscalls.o: syscalls.c $(srcdir)/../syscall.h -outbyte.o: outbyte.c -inbyte.o: inbyte.c - -isatty.o: $(srcdir)/../isatty.c -print.o: $(srcdir)/../print.c -putnum.o: $(srcdir)/../putnum.c -sbrk.o: $(srcdir)/../sbrk.c - -clean mostlyclean: - rm -f a.out core *.[oais] *-test *.srec *.dis *.x syscall.h - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${SIM_INSTALL} - -install-sim: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/d30v/Makefile.inc b/libgloss/d30v/Makefile.inc new file mode 100644 index 0000000000..2b12739d74 --- /dev/null +++ b/libgloss/d30v/Makefile.inc @@ -0,0 +1,12 @@ +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + isatty.c \ + print.c \ + putnum.c \ + sbrk.c \ + %D%/inbyte.c \ + %D%/outbyte.c \ + %D%/syscalls.c + +multilibtool_DATA += \ + %D%/crt0.o From e7d0f0eb411f952f708ed12768ad556c136030e6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 12 Jan 2023 10:33:52 +0100 Subject: [PATCH 093/767] Cygwin: wincap: make capability flags readonly So far the capability bits were stored in the .cygwin_dll_common R/W section because we overwrite the is_server bit. Just don't. Move the bit to class wincapc instead and define all wincaps bitfields const. Fixes: 8937c103ed141 ("* wincap.cc (all wincaps): Store in .cygwin_dll_common section same as wincap. Add comment to explain why.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/wincap.h | 6 ++--- winsup/cygwin/wincap.cc | 38 ++++++++------------------- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index c6dbd23110..29a7a63de7 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -16,7 +16,6 @@ struct wincaps /* The bitfields must be 8 byte aligned on x86_64, otherwise the bitfield ops generated by gcc are off by 4 bytes. */ struct __attribute__ ((aligned (8))) { - unsigned is_server : 1; unsigned has_new_pebteb_region : 1; unsigned has_unprivileged_createsymlink : 1; unsigned has_precise_interrupt_time : 1; @@ -41,7 +40,8 @@ class wincapc SYSTEM_INFO system_info; RTL_OSVERSIONINFOEXW version; char osnam[40]; - void *caps; + const void *caps; + bool _is_server; public: void init (); @@ -67,7 +67,7 @@ class wincapc { return DEFAULT_GUARD_PAGE_COUNT * page_size (); } - bool IMPLEMENT (is_server) + bool is_server () const { return _is_server; } bool IMPLEMENT (has_new_pebteb_region) bool IMPLEMENT (has_unprivileged_createsymlink) bool IMPLEMENT (has_precise_interrupt_time) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index cc10e90dcc..91d5d9df88 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -13,15 +13,8 @@ details. */ #include "ntdll.h" #include "memory_layout.h" -/* CV, 2008-10-23: All wincapc's have to be in the .cygwin_dll_common section, - same as wincap itself. Otherwise the capability changes made in - wincapc::init() are not propagated to any subsequently started process - in the same session. I'm only writing this longish comment because I'm - puzzled that this has never been noticed before... */ - -wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_8_1 = { { - is_server:false, has_new_pebteb_region:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:false, @@ -41,9 +34,8 @@ wincaps wincap_8_1 __attribute__((section (".cygwin_dll_common"), shared)) = { }, }; -wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1507 = { { - is_server:false, has_new_pebteb_region:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:true, @@ -63,9 +55,8 @@ wincaps wincap_10_1507 __attribute__((section (".cygwin_dll_common"), shared)) }, }; -wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1607 = { { - is_server:false, has_new_pebteb_region:false, has_unprivileged_createsymlink:false, has_precise_interrupt_time:true, @@ -85,9 +76,8 @@ wincaps wincap_10_1607 __attribute__((section (".cygwin_dll_common"), shared)) }, }; -wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1703 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -107,9 +97,8 @@ wincaps wincap_10_1703 __attribute__((section (".cygwin_dll_common"), shared)) = }, }; -wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1709 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -129,9 +118,8 @@ wincaps wincap_10_1709 __attribute__((section (".cygwin_dll_common"), shared)) = }, }; -wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1803 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -151,9 +139,8 @@ wincaps wincap_10_1803 __attribute__((section (".cygwin_dll_common"), shared)) = }, }; -wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1809 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -173,9 +160,8 @@ wincaps wincap_10_1809 __attribute__((section (".cygwin_dll_common"), shared)) = }, }; -wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_1903 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -195,9 +181,8 @@ wincaps wincap_10_1903 __attribute__((section (".cygwin_dll_common"), shared)) = }, }; -wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_10_2004 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -217,9 +202,8 @@ wincaps wincap_10_2004 __attribute__((section (".cygwin_dll_common"), shared)) = }, }; -wincaps wincap_11 __attribute__((section (".cygwin_dll_common"), shared)) = { +static const wincaps wincap_11 = { { - is_server:false, has_new_pebteb_region:true, has_unprivileged_createsymlink:true, has_precise_interrupt_time:true, @@ -284,7 +268,7 @@ wincapc::init () caps = & wincap_10_1507; } - ((wincaps *)caps)->is_server = (version.wProductType != VER_NT_WORKSTATION); + _is_server = (version.wProductType != VER_NT_WORKSTATION); __small_sprintf (osnam, "NT-%d.%d", version.dwMajorVersion, version.dwMinorVersion); From e5880bef39fd0593bfa51a01b12485f87de4251a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 12 Jan 2023 10:51:39 +0100 Subject: [PATCH 094/767] Cygwin: wincap.h: clarify NO_COPY_RO usage ...and drop one unnecessary usage of NO_COPY_RO. Signed-off-by: Corinna Vinschen --- winsup/cygwin/forkable.cc | 2 +- winsup/cygwin/local_includes/winsup.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/forkable.cc b/winsup/cygwin/forkable.cc index 350a95c3e4..fbc30ae302 100644 --- a/winsup/cygwin/forkable.cc +++ b/winsup/cygwin/forkable.cc @@ -313,7 +313,7 @@ struct namepart { bool create_dir; }; /* mutex name is formed along dir names */ -static namepart NO_COPY_RO const +static namepart const forkable_nameparts[] = { /* text textfunc mutex_from_dir create */ { L"", rootname, false, false, }, diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index c54440fa80..c9788de8f0 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -10,6 +10,12 @@ details. */ #define __INSIDE_CYGWIN__ +/* Use "static NO_COPY_RO" instead of "static const", if the datastructure + should be R/O, but without the "const" qualifier. Typically this is only + required if the static datastructure is "const" in reality, but the Windows + function is defined with a R/W type as argument. Unfortunately this is + often the case. However, make sure to try "const" first, and use + "NO_COPY_RO" as seldom as possible. */ #define NO_COPY_RO __attribute__((nocommon)) __attribute__((section(".rdata_cygwin_nocopy"))) #define NO_COPY __attribute__((nocommon)) __attribute__((section(".data_cygwin_nocopy"))) #define NO_COPY_INIT __attribute__((section(".data_cygwin_nocopy"))) From 3ef006f056d0c6fb53e9bf76c6374313d239d5a7 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 11 Jan 2023 21:11:59 -0500 Subject: [PATCH 095/767] libgloss: merge nios2 into top-level Makefile Avoid a recursive make to speed things up a bit. A nios2-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 440 ++++++++++++++++++++++++++++++++++-- libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/nios2/Makefile.in | 118 ---------- libgloss/nios2/Makefile.inc | 32 +++ 6 files changed, 475 insertions(+), 142 deletions(-) delete mode 100644 libgloss/nios2/Makefile.in create mode 100644 libgloss/nios2/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 13290453c8..daff91fdfc 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -87,6 +87,9 @@ endif if CONFIG_LM32 include lm32/Makefile.inc endif +if CONFIG_NIOS2 +include nios2/Makefile.inc +endif if CONFIG_RISCV include riscv/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index a17685107e..c18119c262 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -169,16 +169,20 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_LM32_TRUE@am__append_26 = lm32/crt0.o lm32/sim.ld @CONFIG_LM32_TRUE@am__append_27 = lm32/libgloss.a @CONFIG_LM32_TRUE@am__append_28 = lm32/crt0.S -@CONFIG_RISCV_TRUE@am__append_29 = \ +@CONFIG_NIOS2_TRUE@am__append_29 = \ +@CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld + +@CONFIG_NIOS2_TRUE@am__append_30 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_31 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_30 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_32 = riscv/libgloss.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_31 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_32 = wince/stub.exe +@CONFIG_WINCE_TRUE@am__append_33 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_34 = wince/stub.exe subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -211,7 +215,7 @@ CONFIG_CLEAN_FILES = csky/Makefile epiphany/Makefile i386/Makefile \ v850/Makefile visium/Makefile xc16x/Makefile \ xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ - pru/Makefile nios2/Makefile + pru/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -390,6 +394,30 @@ lm32_libgloss_a_LIBADD = @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@ lm32/scall.$(OBJEXT) lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) +nios2_libnios2_a_AR = $(AR) $(ARFLAGS) +nios2_libnios2_a_LIBADD = +@CONFIG_NIOS2_TRUE@am_nios2_libnios2_a_OBJECTS = \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-crt0.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-close.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-exit.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-fstat.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-gdb.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-gettimeofday.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-isatty.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-lseek.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-nios2.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-open.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-read.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-rename.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-stat.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-system.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-time.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-unlink.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-io-write.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-getpid.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-kill.$(OBJEXT) \ +@CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-sbrk.$(OBJEXT) +nios2_libnios2_a_OBJECTS = $(am_nios2_libnios2_a_OBJECTS) riscv_libgloss_a_AR = $(AR) $(ARFLAGS) riscv_libgloss_a_LIBADD = @CONFIG_RISCV_TRUE@am_riscv_libgloss_a_OBJECTS = riscv/riscv_libgloss_a-sys_access.$(OBJEXT) \ @@ -512,9 +540,9 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(d30v_libsim_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) bfin/sim-test.c iq2000/test.c \ - $(wince_stub_exe_SOURCES) + $(lm32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + bfin/sim-test.c iq2000/test.c $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -601,7 +629,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_31) +VPATH = @srcdir@ $(am__append_33) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -736,11 +764,11 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_19) $(am__append_20) $(am__append_24) \ - $(am__append_26) $(am__append_29) + $(am__append_26) $(am__append_29) $(am__append_31) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_18) \ $(am__append_21) $(am__append_25) $(am__append_27) \ - $(am__append_30) + $(am__append_30) $(am__append_32) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -905,6 +933,32 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/scall.S +@CONFIG_NIOS2_TRUE@nios2_libnios2_a_SOURCES = \ +@CONFIG_NIOS2_TRUE@ nios2/crt0.S \ +@CONFIG_NIOS2_TRUE@ nios2/io-close.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-exit.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-fstat.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-gdb.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-gettimeofday.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-isatty.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-lseek.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-nios2.S \ +@CONFIG_NIOS2_TRUE@ nios2/io-open.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-read.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-rename.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-stat.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-system.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-time.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-unlink.c \ +@CONFIG_NIOS2_TRUE@ nios2/io-write.c \ +@CONFIG_NIOS2_TRUE@ nios2/getpid.c \ +@CONFIG_NIOS2_TRUE@ nios2/kill.c \ +@CONFIG_NIOS2_TRUE@ nios2/sbrk.c + +@CONFIG_NIOS2_TRUE@nios2_libnios2_a_CPPFLAGS = \ +@CONFIG_NIOS2_TRUE@ $(AM_CPPFLAGS) \ +@CONFIG_NIOS2_TRUE@ -DHOSTED=1 + @CONFIG_RISCV_TRUE@riscv_libgloss_a_CPPFLAGS = -I$(srcdir)/riscv @CONFIG_RISCV_TRUE@riscv_libgloss_a_SOURCES = \ @CONFIG_RISCV_TRUE@ riscv/sys_access.c \ @@ -982,7 +1036,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1004,7 +1058,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1105,8 +1159,6 @@ or1k/Makefile: $(top_builddir)/config.status $(top_srcdir)/or1k/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ pru/Makefile: $(top_builddir)/config.status $(top_srcdir)/pru/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -nios2/Makefile: $(top_builddir)/config.status $(top_srcdir)/nios2/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ install-multilibtoolLIBRARIES: $(multilibtool_LIBRARIES) @$(NORMAL_INSTALL) @list='$(multilibtool_LIBRARIES)'; test -n "$(multilibtooldir)" || list=; \ @@ -1430,6 +1482,57 @@ lm32/libgloss.a: $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f lm32/libgloss.a $(AM_V_AR)$(lm32_libgloss_a_AR) lm32/libgloss.a $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_LIBADD) $(AM_V_at)$(RANLIB) lm32/libgloss.a +nios2/$(am__dirstamp): + @$(MKDIR_P) nios2 + @: > nios2/$(am__dirstamp) +nios2/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) nios2/$(DEPDIR) + @: > nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-crt0.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-close.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-exit.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-fstat.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-gdb.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-gettimeofday.$(OBJEXT): \ + nios2/$(am__dirstamp) nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-isatty.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-lseek.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-nios2.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-open.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-read.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-rename.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-stat.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-system.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-time.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-unlink.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-io-write.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-getpid.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-kill.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) +nios2/nios2_libnios2_a-sbrk.$(OBJEXT): nios2/$(am__dirstamp) \ + nios2/$(DEPDIR)/$(am__dirstamp) + +nios2/libnios2.a: $(nios2_libnios2_a_OBJECTS) $(nios2_libnios2_a_DEPENDENCIES) $(EXTRA_nios2_libnios2_a_DEPENDENCIES) nios2/$(am__dirstamp) + $(AM_V_at)-rm -f nios2/libnios2.a + $(AM_V_AR)$(nios2_libnios2_a_AR) nios2/libnios2.a $(nios2_libnios2_a_OBJECTS) $(nios2_libnios2_a_LIBADD) + $(AM_V_at)$(RANLIB) nios2/libnios2.a riscv/$(am__dirstamp): @$(MKDIR_P) riscv @: > riscv/$(am__dirstamp) @@ -1637,6 +1740,7 @@ mostlyclean-compile: -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) + -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) distclean-compile: @@ -1739,6 +1843,26 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_chdir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_chmod.Po@am__quote@ @@ -1842,6 +1966,34 @@ arm/arm_librdimon_a-trap.obj: arm/trap.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o arm/arm_librdimon_a-trap.obj `if test -f 'arm/trap.S'; then $(CYGPATH_W) 'arm/trap.S'; else $(CYGPATH_W) '$(srcdir)/arm/trap.S'; fi` +nios2/nios2_libnios2_a-crt0.o: nios2/crt0.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT nios2/nios2_libnios2_a-crt0.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Tpo -c -o nios2/nios2_libnios2_a-crt0.o `test -f 'nios2/crt0.S' || echo '$(srcdir)/'`nios2/crt0.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='nios2/crt0.S' object='nios2/nios2_libnios2_a-crt0.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o nios2/nios2_libnios2_a-crt0.o `test -f 'nios2/crt0.S' || echo '$(srcdir)/'`nios2/crt0.S + +nios2/nios2_libnios2_a-crt0.obj: nios2/crt0.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT nios2/nios2_libnios2_a-crt0.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Tpo -c -o nios2/nios2_libnios2_a-crt0.obj `if test -f 'nios2/crt0.S'; then $(CYGPATH_W) 'nios2/crt0.S'; else $(CYGPATH_W) '$(srcdir)/nios2/crt0.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='nios2/crt0.S' object='nios2/nios2_libnios2_a-crt0.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o nios2/nios2_libnios2_a-crt0.obj `if test -f 'nios2/crt0.S'; then $(CYGPATH_W) 'nios2/crt0.S'; else $(CYGPATH_W) '$(srcdir)/nios2/crt0.S'; fi` + +nios2/nios2_libnios2_a-io-nios2.o: nios2/io-nios2.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT nios2/nios2_libnios2_a-io-nios2.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Tpo -c -o nios2/nios2_libnios2_a-io-nios2.o `test -f 'nios2/io-nios2.S' || echo '$(srcdir)/'`nios2/io-nios2.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='nios2/io-nios2.S' object='nios2/nios2_libnios2_a-io-nios2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o nios2/nios2_libnios2_a-io-nios2.o `test -f 'nios2/io-nios2.S' || echo '$(srcdir)/'`nios2/io-nios2.S + +nios2/nios2_libnios2_a-io-nios2.obj: nios2/io-nios2.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT nios2/nios2_libnios2_a-io-nios2.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Tpo -c -o nios2/nios2_libnios2_a-io-nios2.obj `if test -f 'nios2/io-nios2.S'; then $(CYGPATH_W) 'nios2/io-nios2.S'; else $(CYGPATH_W) '$(srcdir)/nios2/io-nios2.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-nios2.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='nios2/io-nios2.S' object='nios2/nios2_libnios2_a-io-nios2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o nios2/nios2_libnios2_a-io-nios2.obj `if test -f 'nios2/io-nios2.S'; then $(CYGPATH_W) 'nios2/io-nios2.S'; else $(CYGPATH_W) '$(srcdir)/nios2/io-nios2.S'; fi` + .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @@ -2166,6 +2318,258 @@ bfin/bfin_libsim_a-syscalls.obj: bfin/syscalls.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bfin_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bfin/bfin_libsim_a-syscalls.obj `if test -f 'bfin/syscalls.c'; then $(CYGPATH_W) 'bfin/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/bfin/syscalls.c'; fi` +nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-close.c' object='nios2/nios2_libnios2_a-io-close.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c + +nios2/nios2_libnios2_a-io-close.obj: nios2/io-close.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.obj `if test -f 'nios2/io-close.c'; then $(CYGPATH_W) 'nios2/io-close.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-close.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-close.c' object='nios2/nios2_libnios2_a-io-close.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-close.obj `if test -f 'nios2/io-close.c'; then $(CYGPATH_W) 'nios2/io-close.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-close.c'; fi` + +nios2/nios2_libnios2_a-io-exit.o: nios2/io-exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-exit.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Tpo -c -o nios2/nios2_libnios2_a-io-exit.o `test -f 'nios2/io-exit.c' || echo '$(srcdir)/'`nios2/io-exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-exit.c' object='nios2/nios2_libnios2_a-io-exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-exit.o `test -f 'nios2/io-exit.c' || echo '$(srcdir)/'`nios2/io-exit.c + +nios2/nios2_libnios2_a-io-exit.obj: nios2/io-exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-exit.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Tpo -c -o nios2/nios2_libnios2_a-io-exit.obj `if test -f 'nios2/io-exit.c'; then $(CYGPATH_W) 'nios2/io-exit.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-exit.c' object='nios2/nios2_libnios2_a-io-exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-exit.obj `if test -f 'nios2/io-exit.c'; then $(CYGPATH_W) 'nios2/io-exit.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-exit.c'; fi` + +nios2/nios2_libnios2_a-io-fstat.o: nios2/io-fstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-fstat.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Tpo -c -o nios2/nios2_libnios2_a-io-fstat.o `test -f 'nios2/io-fstat.c' || echo '$(srcdir)/'`nios2/io-fstat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-fstat.c' object='nios2/nios2_libnios2_a-io-fstat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-fstat.o `test -f 'nios2/io-fstat.c' || echo '$(srcdir)/'`nios2/io-fstat.c + +nios2/nios2_libnios2_a-io-fstat.obj: nios2/io-fstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-fstat.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Tpo -c -o nios2/nios2_libnios2_a-io-fstat.obj `if test -f 'nios2/io-fstat.c'; then $(CYGPATH_W) 'nios2/io-fstat.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-fstat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-fstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-fstat.c' object='nios2/nios2_libnios2_a-io-fstat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-fstat.obj `if test -f 'nios2/io-fstat.c'; then $(CYGPATH_W) 'nios2/io-fstat.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-fstat.c'; fi` + +nios2/nios2_libnios2_a-io-gdb.o: nios2/io-gdb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-gdb.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Tpo -c -o nios2/nios2_libnios2_a-io-gdb.o `test -f 'nios2/io-gdb.c' || echo '$(srcdir)/'`nios2/io-gdb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-gdb.c' object='nios2/nios2_libnios2_a-io-gdb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-gdb.o `test -f 'nios2/io-gdb.c' || echo '$(srcdir)/'`nios2/io-gdb.c + +nios2/nios2_libnios2_a-io-gdb.obj: nios2/io-gdb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-gdb.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Tpo -c -o nios2/nios2_libnios2_a-io-gdb.obj `if test -f 'nios2/io-gdb.c'; then $(CYGPATH_W) 'nios2/io-gdb.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-gdb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-gdb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-gdb.c' object='nios2/nios2_libnios2_a-io-gdb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-gdb.obj `if test -f 'nios2/io-gdb.c'; then $(CYGPATH_W) 'nios2/io-gdb.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-gdb.c'; fi` + +nios2/nios2_libnios2_a-io-gettimeofday.o: nios2/io-gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-gettimeofday.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Tpo -c -o nios2/nios2_libnios2_a-io-gettimeofday.o `test -f 'nios2/io-gettimeofday.c' || echo '$(srcdir)/'`nios2/io-gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-gettimeofday.c' object='nios2/nios2_libnios2_a-io-gettimeofday.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-gettimeofday.o `test -f 'nios2/io-gettimeofday.c' || echo '$(srcdir)/'`nios2/io-gettimeofday.c + +nios2/nios2_libnios2_a-io-gettimeofday.obj: nios2/io-gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-gettimeofday.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Tpo -c -o nios2/nios2_libnios2_a-io-gettimeofday.obj `if test -f 'nios2/io-gettimeofday.c'; then $(CYGPATH_W) 'nios2/io-gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-gettimeofday.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-gettimeofday.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-gettimeofday.c' object='nios2/nios2_libnios2_a-io-gettimeofday.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-gettimeofday.obj `if test -f 'nios2/io-gettimeofday.c'; then $(CYGPATH_W) 'nios2/io-gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-gettimeofday.c'; fi` + +nios2/nios2_libnios2_a-io-isatty.o: nios2/io-isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-isatty.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Tpo -c -o nios2/nios2_libnios2_a-io-isatty.o `test -f 'nios2/io-isatty.c' || echo '$(srcdir)/'`nios2/io-isatty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-isatty.c' object='nios2/nios2_libnios2_a-io-isatty.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-isatty.o `test -f 'nios2/io-isatty.c' || echo '$(srcdir)/'`nios2/io-isatty.c + +nios2/nios2_libnios2_a-io-isatty.obj: nios2/io-isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-isatty.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Tpo -c -o nios2/nios2_libnios2_a-io-isatty.obj `if test -f 'nios2/io-isatty.c'; then $(CYGPATH_W) 'nios2/io-isatty.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-isatty.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-isatty.c' object='nios2/nios2_libnios2_a-io-isatty.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-isatty.obj `if test -f 'nios2/io-isatty.c'; then $(CYGPATH_W) 'nios2/io-isatty.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-isatty.c'; fi` + +nios2/nios2_libnios2_a-io-lseek.o: nios2/io-lseek.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-lseek.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Tpo -c -o nios2/nios2_libnios2_a-io-lseek.o `test -f 'nios2/io-lseek.c' || echo '$(srcdir)/'`nios2/io-lseek.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-lseek.c' object='nios2/nios2_libnios2_a-io-lseek.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-lseek.o `test -f 'nios2/io-lseek.c' || echo '$(srcdir)/'`nios2/io-lseek.c + +nios2/nios2_libnios2_a-io-lseek.obj: nios2/io-lseek.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-lseek.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Tpo -c -o nios2/nios2_libnios2_a-io-lseek.obj `if test -f 'nios2/io-lseek.c'; then $(CYGPATH_W) 'nios2/io-lseek.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-lseek.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-lseek.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-lseek.c' object='nios2/nios2_libnios2_a-io-lseek.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-lseek.obj `if test -f 'nios2/io-lseek.c'; then $(CYGPATH_W) 'nios2/io-lseek.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-lseek.c'; fi` + +nios2/nios2_libnios2_a-io-open.o: nios2/io-open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-open.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Tpo -c -o nios2/nios2_libnios2_a-io-open.o `test -f 'nios2/io-open.c' || echo '$(srcdir)/'`nios2/io-open.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-open.c' object='nios2/nios2_libnios2_a-io-open.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-open.o `test -f 'nios2/io-open.c' || echo '$(srcdir)/'`nios2/io-open.c + +nios2/nios2_libnios2_a-io-open.obj: nios2/io-open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-open.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Tpo -c -o nios2/nios2_libnios2_a-io-open.obj `if test -f 'nios2/io-open.c'; then $(CYGPATH_W) 'nios2/io-open.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-open.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-open.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-open.c' object='nios2/nios2_libnios2_a-io-open.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-open.obj `if test -f 'nios2/io-open.c'; then $(CYGPATH_W) 'nios2/io-open.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-open.c'; fi` + +nios2/nios2_libnios2_a-io-read.o: nios2/io-read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-read.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Tpo -c -o nios2/nios2_libnios2_a-io-read.o `test -f 'nios2/io-read.c' || echo '$(srcdir)/'`nios2/io-read.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-read.c' object='nios2/nios2_libnios2_a-io-read.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-read.o `test -f 'nios2/io-read.c' || echo '$(srcdir)/'`nios2/io-read.c + +nios2/nios2_libnios2_a-io-read.obj: nios2/io-read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-read.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Tpo -c -o nios2/nios2_libnios2_a-io-read.obj `if test -f 'nios2/io-read.c'; then $(CYGPATH_W) 'nios2/io-read.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-read.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-read.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-read.c' object='nios2/nios2_libnios2_a-io-read.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-read.obj `if test -f 'nios2/io-read.c'; then $(CYGPATH_W) 'nios2/io-read.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-read.c'; fi` + +nios2/nios2_libnios2_a-io-rename.o: nios2/io-rename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-rename.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Tpo -c -o nios2/nios2_libnios2_a-io-rename.o `test -f 'nios2/io-rename.c' || echo '$(srcdir)/'`nios2/io-rename.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-rename.c' object='nios2/nios2_libnios2_a-io-rename.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-rename.o `test -f 'nios2/io-rename.c' || echo '$(srcdir)/'`nios2/io-rename.c + +nios2/nios2_libnios2_a-io-rename.obj: nios2/io-rename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-rename.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Tpo -c -o nios2/nios2_libnios2_a-io-rename.obj `if test -f 'nios2/io-rename.c'; then $(CYGPATH_W) 'nios2/io-rename.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-rename.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-rename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-rename.c' object='nios2/nios2_libnios2_a-io-rename.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-rename.obj `if test -f 'nios2/io-rename.c'; then $(CYGPATH_W) 'nios2/io-rename.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-rename.c'; fi` + +nios2/nios2_libnios2_a-io-stat.o: nios2/io-stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-stat.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Tpo -c -o nios2/nios2_libnios2_a-io-stat.o `test -f 'nios2/io-stat.c' || echo '$(srcdir)/'`nios2/io-stat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-stat.c' object='nios2/nios2_libnios2_a-io-stat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-stat.o `test -f 'nios2/io-stat.c' || echo '$(srcdir)/'`nios2/io-stat.c + +nios2/nios2_libnios2_a-io-stat.obj: nios2/io-stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-stat.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Tpo -c -o nios2/nios2_libnios2_a-io-stat.obj `if test -f 'nios2/io-stat.c'; then $(CYGPATH_W) 'nios2/io-stat.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-stat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-stat.c' object='nios2/nios2_libnios2_a-io-stat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-stat.obj `if test -f 'nios2/io-stat.c'; then $(CYGPATH_W) 'nios2/io-stat.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-stat.c'; fi` + +nios2/nios2_libnios2_a-io-system.o: nios2/io-system.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-system.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Tpo -c -o nios2/nios2_libnios2_a-io-system.o `test -f 'nios2/io-system.c' || echo '$(srcdir)/'`nios2/io-system.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-system.c' object='nios2/nios2_libnios2_a-io-system.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-system.o `test -f 'nios2/io-system.c' || echo '$(srcdir)/'`nios2/io-system.c + +nios2/nios2_libnios2_a-io-system.obj: nios2/io-system.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-system.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Tpo -c -o nios2/nios2_libnios2_a-io-system.obj `if test -f 'nios2/io-system.c'; then $(CYGPATH_W) 'nios2/io-system.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-system.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-system.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-system.c' object='nios2/nios2_libnios2_a-io-system.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-system.obj `if test -f 'nios2/io-system.c'; then $(CYGPATH_W) 'nios2/io-system.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-system.c'; fi` + +nios2/nios2_libnios2_a-io-time.o: nios2/io-time.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-time.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Tpo -c -o nios2/nios2_libnios2_a-io-time.o `test -f 'nios2/io-time.c' || echo '$(srcdir)/'`nios2/io-time.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-time.c' object='nios2/nios2_libnios2_a-io-time.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-time.o `test -f 'nios2/io-time.c' || echo '$(srcdir)/'`nios2/io-time.c + +nios2/nios2_libnios2_a-io-time.obj: nios2/io-time.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-time.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Tpo -c -o nios2/nios2_libnios2_a-io-time.obj `if test -f 'nios2/io-time.c'; then $(CYGPATH_W) 'nios2/io-time.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-time.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-time.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-time.c' object='nios2/nios2_libnios2_a-io-time.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-time.obj `if test -f 'nios2/io-time.c'; then $(CYGPATH_W) 'nios2/io-time.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-time.c'; fi` + +nios2/nios2_libnios2_a-io-unlink.o: nios2/io-unlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-unlink.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Tpo -c -o nios2/nios2_libnios2_a-io-unlink.o `test -f 'nios2/io-unlink.c' || echo '$(srcdir)/'`nios2/io-unlink.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-unlink.c' object='nios2/nios2_libnios2_a-io-unlink.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-unlink.o `test -f 'nios2/io-unlink.c' || echo '$(srcdir)/'`nios2/io-unlink.c + +nios2/nios2_libnios2_a-io-unlink.obj: nios2/io-unlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-unlink.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Tpo -c -o nios2/nios2_libnios2_a-io-unlink.obj `if test -f 'nios2/io-unlink.c'; then $(CYGPATH_W) 'nios2/io-unlink.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-unlink.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-unlink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-unlink.c' object='nios2/nios2_libnios2_a-io-unlink.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-unlink.obj `if test -f 'nios2/io-unlink.c'; then $(CYGPATH_W) 'nios2/io-unlink.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-unlink.c'; fi` + +nios2/nios2_libnios2_a-io-write.o: nios2/io-write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-write.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Tpo -c -o nios2/nios2_libnios2_a-io-write.o `test -f 'nios2/io-write.c' || echo '$(srcdir)/'`nios2/io-write.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-write.c' object='nios2/nios2_libnios2_a-io-write.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-write.o `test -f 'nios2/io-write.c' || echo '$(srcdir)/'`nios2/io-write.c + +nios2/nios2_libnios2_a-io-write.obj: nios2/io-write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-write.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Tpo -c -o nios2/nios2_libnios2_a-io-write.obj `if test -f 'nios2/io-write.c'; then $(CYGPATH_W) 'nios2/io-write.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-write.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/io-write.c' object='nios2/nios2_libnios2_a-io-write.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-io-write.obj `if test -f 'nios2/io-write.c'; then $(CYGPATH_W) 'nios2/io-write.c'; else $(CYGPATH_W) '$(srcdir)/nios2/io-write.c'; fi` + +nios2/nios2_libnios2_a-getpid.o: nios2/getpid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-getpid.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Tpo -c -o nios2/nios2_libnios2_a-getpid.o `test -f 'nios2/getpid.c' || echo '$(srcdir)/'`nios2/getpid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/getpid.c' object='nios2/nios2_libnios2_a-getpid.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-getpid.o `test -f 'nios2/getpid.c' || echo '$(srcdir)/'`nios2/getpid.c + +nios2/nios2_libnios2_a-getpid.obj: nios2/getpid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-getpid.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Tpo -c -o nios2/nios2_libnios2_a-getpid.obj `if test -f 'nios2/getpid.c'; then $(CYGPATH_W) 'nios2/getpid.c'; else $(CYGPATH_W) '$(srcdir)/nios2/getpid.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/getpid.c' object='nios2/nios2_libnios2_a-getpid.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-getpid.obj `if test -f 'nios2/getpid.c'; then $(CYGPATH_W) 'nios2/getpid.c'; else $(CYGPATH_W) '$(srcdir)/nios2/getpid.c'; fi` + +nios2/nios2_libnios2_a-kill.o: nios2/kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-kill.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-kill.Tpo -c -o nios2/nios2_libnios2_a-kill.o `test -f 'nios2/kill.c' || echo '$(srcdir)/'`nios2/kill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-kill.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/kill.c' object='nios2/nios2_libnios2_a-kill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-kill.o `test -f 'nios2/kill.c' || echo '$(srcdir)/'`nios2/kill.c + +nios2/nios2_libnios2_a-kill.obj: nios2/kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-kill.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-kill.Tpo -c -o nios2/nios2_libnios2_a-kill.obj `if test -f 'nios2/kill.c'; then $(CYGPATH_W) 'nios2/kill.c'; else $(CYGPATH_W) '$(srcdir)/nios2/kill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-kill.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/kill.c' object='nios2/nios2_libnios2_a-kill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-kill.obj `if test -f 'nios2/kill.c'; then $(CYGPATH_W) 'nios2/kill.c'; else $(CYGPATH_W) '$(srcdir)/nios2/kill.c'; fi` + +nios2/nios2_libnios2_a-sbrk.o: nios2/sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-sbrk.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Tpo -c -o nios2/nios2_libnios2_a-sbrk.o `test -f 'nios2/sbrk.c' || echo '$(srcdir)/'`nios2/sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/sbrk.c' object='nios2/nios2_libnios2_a-sbrk.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-sbrk.o `test -f 'nios2/sbrk.c' || echo '$(srcdir)/'`nios2/sbrk.c + +nios2/nios2_libnios2_a-sbrk.obj: nios2/sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-sbrk.obj -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Tpo -c -o nios2/nios2_libnios2_a-sbrk.obj `if test -f 'nios2/sbrk.c'; then $(CYGPATH_W) 'nios2/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/nios2/sbrk.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nios2/sbrk.c' object='nios2/nios2_libnios2_a-sbrk.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nios2/nios2_libnios2_a-sbrk.obj `if test -f 'nios2/sbrk.c'; then $(CYGPATH_W) 'nios2/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/nios2/sbrk.c'; fi` + riscv/riscv_libgloss_a-sys_access.o: riscv/sys_access.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libgloss_a-sys_access.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libgloss_a-sys_access.Tpo -c -o riscv/riscv_libgloss_a-sys_access.o `test -f 'riscv/sys_access.c' || echo '$(srcdir)/'`riscv/sys_access.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libgloss_a-sys_access.Tpo riscv/$(DEPDIR)/riscv_libgloss_a-sys_access.Po @@ -3417,6 +3821,8 @@ distclean-generic: -rm -f libnosys/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(am__dirstamp) + -rm -f nios2/$(DEPDIR)/$(am__dirstamp) + -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) -rm -f wince/$(am__dirstamp) @@ -3432,7 +3838,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -3575,7 +3981,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 84d4c5e43d..6d4969b882 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -634,6 +634,8 @@ CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE +CONFIG_NIOS2_FALSE +CONFIG_NIOS2_TRUE CONFIG_LM32_FALSE CONFIG_LM32_TRUE CONFIG_LIBNOSYS_FALSE @@ -2976,9 +2978,7 @@ case "${target}" in subdirs="$subdirs pru" ;; nios2-*-*) - ac_config_files="$ac_config_files nios2/Makefile" - - subdirs="$subdirs nios2" + config_nios2=true ;; esac @@ -3047,6 +3047,14 @@ else CONFIG_LM32_FALSE= fi + if test x$config_nios2 = xtrue; then + CONFIG_NIOS2_TRUE= + CONFIG_NIOS2_FALSE='#' +else + CONFIG_NIOS2_TRUE='#' + CONFIG_NIOS2_FALSE= +fi + if test x$config_riscv = xtrue; then CONFIG_RISCV_TRUE= CONFIG_RISCV_FALSE='#' @@ -5315,6 +5323,10 @@ if test -z "${CONFIG_LM32_TRUE}" && test -z "${CONFIG_LM32_FALSE}"; then as_fn_error $? "conditional \"CONFIG_LM32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_NIOS2_TRUE}" && test -z "${CONFIG_NIOS2_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_NIOS2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_RISCV_TRUE}" && test -z "${CONFIG_RISCV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RISCV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5981,7 +5993,6 @@ do "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; "pru/Makefile") CONFIG_FILES="$CONFIG_FILES pru/Makefile" ;; - "nios2/Makefile") CONFIG_FILES="$CONFIG_FILES nios2/Makefile" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 59230edc99..d636cf6d2a 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -240,8 +240,7 @@ case "${target}" in subdirs="$subdirs pru" ;; nios2-*-*) - AC_CONFIG_FILES([nios2/Makefile]) - subdirs="$subdirs nios2" + config_nios2=true ;; esac AC_SUBST(subdirs) @@ -249,7 +248,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin d30v iq2000 libnosys lm32 riscv wince + aarch64 arc arm bfin d30v iq2000 libnosys lm32 nios2 riscv wince ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/nios2/Makefile.in b/libgloss/nios2/Makefile.in deleted file mode 100644 index cbe1c55522..0000000000 --- a/libgloss/nios2/Makefile.in +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) 1995, 1996, 2001 Cygnus Support -*- mode:makefile -*- -# Copyright (c) 2018, Mentor Graphics -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. -# - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = qv - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -# Linker scripts. - -BSP_SCRIPTS= qemu-hosted.ld - -# Semihosting library. - -HOSTED_BSP= libnios2.a -HOSTED_OBJS= io-gdb.o io-exit.o \ - io-close.o io-fstat.o \ - io-gettimeofday.o io-isatty.o io-lseek.o \ - io-open.o io-read.o io-rename.o \ - io-stat.o io-system.o io-time.o \ - io-unlink.o io-write.o \ - sbrk.o kill.o getpid.o - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all :: ${HOSTED_BSP} - -# Build semihosting library. -crt0.o: crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -c $< -o $@ -io-nios2.o: io-nios2.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -c $< -o $@ -$(HOSTED_OBJS): %.o: %.c io.h - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -DHOSTED=1 $(INCLUDES) -c $< -o $@ -$(HOSTED_BSP): crt0.o io-nios2.o $(HOSTED_OBJS) $(OTHER_OBJS) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - - -.PHONY: install info dvi doc install-info clean-info -install:: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(HOSTED_BSP) \ - $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - for x in ${BSP_SCRIPTS}; do\ - ${INSTALL_DATA} ${srcdir}/$${x} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -clean mostlyclean: - rm -f a.out core *.i *~ *.a *.o *-test *.srec *.dis *.x *.map - -distclean maintainer-clean realclean: clean - rm -f Makefile config.cache config.log config.status - -info dvi doc: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/nios2/Makefile.inc b/libgloss/nios2/Makefile.inc new file mode 100644 index 0000000000..da65b601ab --- /dev/null +++ b/libgloss/nios2/Makefile.inc @@ -0,0 +1,32 @@ +## Linker scripts. + +multilibtool_DATA += \ + %D%/qemu-hosted.ld + +## Semihosting library. + +multilibtool_LIBRARIES += %D%/libnios2.a +%C%_libnios2_a_SOURCES = \ + %D%/crt0.S \ + %D%/io-close.c \ + %D%/io-exit.c \ + %D%/io-fstat.c \ + %D%/io-gdb.c \ + %D%/io-gettimeofday.c \ + %D%/io-isatty.c \ + %D%/io-lseek.c \ + %D%/io-nios2.S \ + %D%/io-open.c \ + %D%/io-read.c \ + %D%/io-rename.c \ + %D%/io-stat.c \ + %D%/io-system.c \ + %D%/io-time.c \ + %D%/io-unlink.c \ + %D%/io-write.c \ + %D%/getpid.c \ + %D%/kill.c \ + %D%/sbrk.c +%C%_libnios2_a_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DHOSTED=1 From 7f4c04755ef84feba6c24b34b539330e5ee2bd4d Mon Sep 17 00:00:00 2001 From: Xianmiao Qu Date: Fri, 13 Jan 2023 20:46:47 +0800 Subject: [PATCH 096/767] libgloss: csky: use atexit to call fini-array functions. __libc_fini_array should be called upon exit to call the global termination functions in fini-array, use atexit to register it at __start. --- libgloss/csky/crt0.S | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libgloss/csky/crt0.S b/libgloss/csky/crt0.S index a0651a7346..49f7da3647 100644 --- a/libgloss/csky/crt0.S +++ b/libgloss/csky/crt0.S @@ -150,6 +150,8 @@ __start: * Assember start up done, C codes start here. */ __goto_c: + lrw r0, __libc_fini_array # Register global termination functions + jbsr atexit # to be called upon exit /*jsri main*/ lrw r5, __libc_init_array jsr r5 From 50a741e2f112fdf49a229818aa1242daed9558de Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Mon, 29 Aug 2022 16:11:59 +0100 Subject: [PATCH 097/767] Cygwin: testsuite: automake doesn't define objdir objdir isn't a predefined output variable in Automake (any more?), so this was just using the absolute path /testsuite as the test's temporary directory. Use builddir instead. --- winsup/testsuite/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index a7b435c46a..a2fa348112 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -38,7 +38,7 @@ RUNTESTFLAGS_1 = -v RUNTESTFLAGS = $(RUNTESTFLAGS_$(V)) # a temporary directory, to be used for files created by tests -tmpdir = $(abspath $(objdir)/testsuite/tmp/) +tmpdir = $(abspath $(builddir)/tmp/) # the same temporary directory, as an absolute, /cygdrive path (so it can be # understood by the test DLL, which will have a different mount table) testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive/\L\1#') From daeeaa97b35c0f143d6aa9d97d94e23e375337e8 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 24 Aug 2022 16:01:52 +0100 Subject: [PATCH 098/767] Cygwin: testsuite: Build testcases using automake Build all the testcase executables directly using automake, rather than passing the compiler information into DejaGnu to have it build them. (This means you get build avoidance for these executables, so they only get built once, rather than every time you run the test, and makes it much easier to run them in isolatation against the installed Cygwin, which is really nice to have when trying to fix broken tests...) Rename the 'cygrun' subdirectory to 'mingw', and build all the testsuite MinGW executables there. Drop sample-miscompile.c (testing that compile failure is detected is perhaps useful, but not here...) --- winsup/configure.ac | 2 +- winsup/testsuite/Makefile.am | 307 +++++++++++++++++- winsup/testsuite/README | 2 +- .../testsuite/{cygrun => mingw}/Makefile.am | 11 +- winsup/testsuite/winsup.api/cygload.exp | 32 +- .../winsup.api/samples/sample-miscompile.c | 1 - winsup/testsuite/winsup.api/winsup.exp | 37 +-- 7 files changed, 325 insertions(+), 67 deletions(-) rename winsup/testsuite/{cygrun => mingw}/Makefile.am (58%) delete mode 100644 winsup/testsuite/winsup.api/samples/sample-miscompile.c diff --git a/winsup/configure.ac b/winsup/configure.ac index 7a2121dae2..b155cabe43 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -126,7 +126,7 @@ AC_CONFIG_FILES([ utils/Makefile utils/mingw/Makefile testsuite/Makefile - testsuite/cygrun/Makefile + testsuite/mingw/Makefile ]) AC_OUTPUT diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index a2fa348112..7853d98e84 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -31,6 +31,300 @@ libltp_a_SOURCES = \ libltp/lib/tst_tmpdir.c \ libltp/lib/write_log.c +check_PROGRAMS = \ + winsup.api/checksignal \ + winsup.api/crlf \ + winsup.api/devdsp \ + winsup.api/devzero \ + winsup.api/iospeed \ + winsup.api/mmaptest01 \ + winsup.api/mmaptest02 \ + winsup.api/mmaptest03 \ + winsup.api/mmaptest04 \ + winsup.api/msgtest \ + winsup.api/nullgetcwd \ + winsup.api/resethand \ + winsup.api/semtest \ + winsup.api/shmtest \ + winsup.api/sigchld \ + winsup.api/signal-into-win32-api \ + winsup.api/systemcall \ + winsup.api/user_malloc \ + winsup.api/waitpid \ + winsup.api/ltp/access01 \ + winsup.api/ltp/access03 \ + winsup.api/ltp/access04 \ + winsup.api/ltp/access05 \ + winsup.api/ltp/alarm01 \ + winsup.api/ltp/alarm02 \ + winsup.api/ltp/alarm03 \ + winsup.api/ltp/alarm07 \ + winsup.api/ltp/asyncio02 \ + winsup.api/ltp/chdir02 \ + winsup.api/ltp/chdir04 \ + winsup.api/ltp/chmod01 \ + winsup.api/ltp/chmod02 \ + winsup.api/ltp/chown01 \ + winsup.api/ltp/close01 \ + winsup.api/ltp/close02 \ + winsup.api/ltp/close08 \ + winsup.api/ltp/creat01 \ + winsup.api/ltp/creat03 \ + winsup.api/ltp/creat09 \ + winsup.api/ltp/dup01 \ + winsup.api/ltp/dup02 \ + winsup.api/ltp/dup03 \ + winsup.api/ltp/dup04 \ + winsup.api/ltp/dup05 \ + winsup.api/ltp/execl01 \ + winsup.api/ltp/execle01 \ + winsup.api/ltp/execlp01 \ + winsup.api/ltp/execv01 \ + winsup.api/ltp/execve01 \ + winsup.api/ltp/execvp01 \ + winsup.api/ltp/exit01 \ + winsup.api/ltp/exit02 \ + winsup.api/ltp/fchdir01 \ + winsup.api/ltp/fchdir02 \ + winsup.api/ltp/fchmod01 \ + winsup.api/ltp/fchown01 \ + winsup.api/ltp/fcntl02 \ + winsup.api/ltp/fcntl03 \ + winsup.api/ltp/fcntl04 \ + winsup.api/ltp/fcntl05 \ + winsup.api/ltp/fcntl07 \ + winsup.api/ltp/fcntl07B \ + winsup.api/ltp/fcntl08 \ + winsup.api/ltp/fcntl09 \ + winsup.api/ltp/fcntl10 \ + winsup.api/ltp/fork01 \ + winsup.api/ltp/fork02 \ + winsup.api/ltp/fork03 \ + winsup.api/ltp/fork04 \ + winsup.api/ltp/fork06 \ + winsup.api/ltp/fork07 \ + winsup.api/ltp/fork09 \ + winsup.api/ltp/fork10 \ + winsup.api/ltp/fork11 \ + winsup.api/ltp/fpathconf01 \ + winsup.api/ltp/fstat01 \ + winsup.api/ltp/fstat02 \ + winsup.api/ltp/fstat03 \ + winsup.api/ltp/fstat04 \ + winsup.api/ltp/fsync01 \ + winsup.api/ltp/ftruncate01 \ + winsup.api/ltp/ftruncate02 \ + winsup.api/ltp/ftruncate03 \ + winsup.api/ltp/getegid01 \ + winsup.api/ltp/geteuid01 \ + winsup.api/ltp/getgid01 \ + winsup.api/ltp/getgid02 \ + winsup.api/ltp/getgid03 \ + winsup.api/ltp/getgroups01 \ + winsup.api/ltp/getgroups02 \ + winsup.api/ltp/gethostid01 \ + winsup.api/ltp/gethostname01 \ + winsup.api/ltp/getpgid01 \ + winsup.api/ltp/getpgid02 \ + winsup.api/ltp/getpgrp01 \ + winsup.api/ltp/getpid01 \ + winsup.api/ltp/getpid02 \ + winsup.api/ltp/getppid01 \ + winsup.api/ltp/getppid02 \ + winsup.api/ltp/getuid01 \ + winsup.api/ltp/getuid02 \ + winsup.api/ltp/getuid03 \ + winsup.api/ltp/kill01 \ + winsup.api/ltp/kill02 \ + winsup.api/ltp/kill03 \ + winsup.api/ltp/kill04 \ + winsup.api/ltp/kill09 \ + winsup.api/ltp/link02 \ + winsup.api/ltp/link03 \ + winsup.api/ltp/link04 \ + winsup.api/ltp/link05 \ + winsup.api/ltp/lseek01 \ + winsup.api/ltp/lseek02 \ + winsup.api/ltp/lseek03 \ + winsup.api/ltp/lseek04 \ + winsup.api/ltp/lseek05 \ + winsup.api/ltp/lseek06 \ + winsup.api/ltp/lseek07 \ + winsup.api/ltp/lseek08 \ + winsup.api/ltp/lseek09 \ + winsup.api/ltp/lseek10 \ + winsup.api/ltp/lstat02 \ + winsup.api/ltp/mkdir01 \ + winsup.api/ltp/mkdir08 \ + winsup.api/ltp/mknod01 \ + winsup.api/ltp/mmap001 \ + winsup.api/ltp/mmap02 \ + winsup.api/ltp/mmap03 \ + winsup.api/ltp/mmap04 \ + winsup.api/ltp/mmap05 \ + winsup.api/ltp/mmap06 \ + winsup.api/ltp/mmap07 \ + winsup.api/ltp/mmap08 \ + winsup.api/ltp/munmap01 \ + winsup.api/ltp/munmap02 \ + winsup.api/ltp/nice05 \ + winsup.api/ltp/open02 \ + winsup.api/ltp/open03 \ + winsup.api/ltp/pathconf01 \ + winsup.api/ltp/pause01 \ + winsup.api/ltp/pipe01 \ + winsup.api/ltp/pipe08 \ + winsup.api/ltp/pipe09 \ + winsup.api/ltp/pipe10 \ + winsup.api/ltp/pipe11 \ + winsup.api/ltp/poll01 \ + winsup.api/ltp/read01 \ + winsup.api/ltp/read04 \ + winsup.api/ltp/readdir01 \ + winsup.api/ltp/readlink01 \ + winsup.api/ltp/readlink02 \ + winsup.api/ltp/readlink03 \ + winsup.api/ltp/rename01 \ + winsup.api/ltp/rename02 \ + winsup.api/ltp/rename08 \ + winsup.api/ltp/rename10 \ + winsup.api/ltp/rmdir01 \ + winsup.api/ltp/rmdir04 \ + winsup.api/ltp/rmdir05 \ + winsup.api/ltp/sbrk01 \ + winsup.api/ltp/select01 \ + winsup.api/ltp/select02 \ + winsup.api/ltp/select03 \ + winsup.api/ltp/setgid01 \ + winsup.api/ltp/setgroups01 \ + winsup.api/ltp/setpgid01 \ + winsup.api/ltp/setregid01 \ + winsup.api/ltp/setreuid01 \ + winsup.api/ltp/setuid01 \ + winsup.api/ltp/setuid02 \ + winsup.api/ltp/signal03 \ + winsup.api/ltp/stat01 \ + winsup.api/ltp/stat02 \ + winsup.api/ltp/stat03 \ + winsup.api/ltp/stat05 \ + winsup.api/ltp/stat06 \ + winsup.api/ltp/symlink01 \ + winsup.api/ltp/symlink02 \ + winsup.api/ltp/symlink03 \ + winsup.api/ltp/symlink04 \ + winsup.api/ltp/symlink05 \ + winsup.api/ltp/sync01 \ + winsup.api/ltp/sync02 \ + winsup.api/ltp/time01 \ + winsup.api/ltp/time02 \ + winsup.api/ltp/times01 \ + winsup.api/ltp/times02 \ + winsup.api/ltp/times03 \ + winsup.api/ltp/truncate01 \ + winsup.api/ltp/truncate02 \ + winsup.api/ltp/umask01 \ + winsup.api/ltp/umask02 \ + winsup.api/ltp/umask03 \ + winsup.api/ltp/uname01 \ + winsup.api/ltp/unlink05 \ + winsup.api/ltp/unlink06 \ + winsup.api/ltp/unlink07 \ + winsup.api/ltp/unlink08 \ + winsup.api/ltp/vfork01 \ + winsup.api/ltp/wait02 \ + winsup.api/ltp/wait401 \ + winsup.api/ltp/wait402 \ + winsup.api/ltp/write01 \ + winsup.api/ltp/write02 \ + winsup.api/ltp/write03 \ + winsup.api/pthread/cancel1 \ + winsup.api/pthread/cancel10 \ + winsup.api/pthread/cancel11 \ + winsup.api/pthread/cancel12 \ + winsup.api/pthread/cancel2 \ + winsup.api/pthread/cancel3 \ + winsup.api/pthread/cancel4 \ + winsup.api/pthread/cancel5 \ + winsup.api/pthread/cancel6 \ + winsup.api/pthread/cancel7 \ + winsup.api/pthread/cancel8 \ + winsup.api/pthread/cancel9 \ + winsup.api/pthread/cleanup2 \ + winsup.api/pthread/cleanup3 \ + winsup.api/pthread/condvar1 \ + winsup.api/pthread/condvar2 \ + winsup.api/pthread/condvar2_1 \ + winsup.api/pthread/condvar3 \ + winsup.api/pthread/condvar3_1 \ + winsup.api/pthread/condvar3_2 \ + winsup.api/pthread/condvar3_3 \ + winsup.api/pthread/condvar4 \ + winsup.api/pthread/condvar5 \ + winsup.api/pthread/condvar6 \ + winsup.api/pthread/condvar7 \ + winsup.api/pthread/condvar8 \ + winsup.api/pthread/condvar9 \ + winsup.api/pthread/count1 \ + winsup.api/pthread/create1 \ + winsup.api/pthread/create2 \ + winsup.api/pthread/equal1 \ + winsup.api/pthread/exit1 \ + winsup.api/pthread/exit2 \ + winsup.api/pthread/exit3 \ + winsup.api/pthread/inherit1 \ + winsup.api/pthread/join0 \ + winsup.api/pthread/join1 \ + winsup.api/pthread/join2 \ + winsup.api/pthread/mainthreadexits \ + winsup.api/pthread/mutex1 \ + winsup.api/pthread/mutex1d \ + winsup.api/pthread/mutex1e \ + winsup.api/pthread/mutex1n \ + winsup.api/pthread/mutex1r \ + winsup.api/pthread/mutex2 \ + winsup.api/pthread/mutex3 \ + winsup.api/pthread/mutex4 \ + winsup.api/pthread/mutex5 \ + winsup.api/pthread/mutex6d \ + winsup.api/pthread/mutex6e \ + winsup.api/pthread/mutex6n \ + winsup.api/pthread/mutex6r \ + winsup.api/pthread/mutex7 \ + winsup.api/pthread/mutex7d \ + winsup.api/pthread/mutex7e \ + winsup.api/pthread/mutex7n \ + winsup.api/pthread/mutex7r \ + winsup.api/pthread/mutex8e \ + winsup.api/pthread/mutex8n \ + winsup.api/pthread/mutex8r \ + winsup.api/pthread/once1 \ + winsup.api/pthread/priority1 \ + winsup.api/pthread/priority2 \ + winsup.api/pthread/rwlock1 \ + winsup.api/pthread/rwlock2 \ + winsup.api/pthread/rwlock3 \ + winsup.api/pthread/rwlock4 \ + winsup.api/pthread/rwlock5 \ + winsup.api/pthread/rwlock6 \ + winsup.api/pthread/rwlock7 \ + winsup.api/pthread/self1 \ + winsup.api/pthread/self2 \ + winsup.api/pthread/threadidafterfork \ + winsup.api/pthread/tsd1 \ + winsup.api/samples/sample-fail \ + winsup.api/samples/sample-pass +# winsup.api/ltp/ulimit01 is omitted as we don't have + +# flags for linking against the just built implib +# TODO: use -nostdinc and to-be-installed headers as well? +LDFLAGS_FOR_TESTDLL = -nodefaultlibs +LDADD_FOR_TESTDLL = $(builddir)/../cygwin/libcygwin.a -lgcc -lkernel32 -luser32 + +# flags for test executables +AM_CPPFLAGS = -I$(srcdir)/libltp/include +AM_LDFLAGS = $(LDFLAGS_FOR_TESTDLL) +LDADD = $(builddir)/libltp.a $(builddir)/../cygwin/binmode.o $(LDADD_FOR_TESTDLL) + DEJATOOL = winsup # Add '-v' to RUNTESTFLAGS if V=1 @@ -46,22 +340,19 @@ testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive site-extra.exp: ../config.status Makefile @rm -f ./tmp0 @echo "set runtime_root \"`pwd`/runtime\"" >> ./tmp0 - @echo "set libdir \"`pwd`/../cygwin\"" >> ./tmp0 - @echo "set CC \"$(CC)\"" >> ./tmp0 - @echo "set CFLAGS \"\"" >> ./tmp0 - @echo "set MINGW_CXX \"$(MINGW_CXX)\"" >> ./tmp0 @echo "set tmpdir $(tmpdir)" >> ./tmp0 @echo "set testdll_tmpdir $(testdll_tmpdir)" >> ./tmp0 - @echo "set ltp_includes \"$(srcdir)/libltp/include\"" >> ./tmp0 - @echo "set ltp_libs \"`pwd`/libltp.a\"" >> ./tmp0 - @echo "set cygrun \"`pwd`/cygrun/cygrun\"" >> ./tmp0 + @echo "set cygrun \"`pwd`/mingw/cygrun\"" >> ./tmp0 @mv ./tmp0 site-extra.exp EXTRA_DEJAGNU_SITE_CONFIG = site-extra.exp +# target to build all the programs needed by check, without running check +check_programs: $(check_PROGRAMS) + clean-local: rm -f *.log *.exe *.exp *.bak *.stackdump winsup.sum if CROSS_BOOTSTRAP -SUBDIRS = cygrun +SUBDIRS = mingw endif diff --git a/winsup/testsuite/README b/winsup/testsuite/README index c22b065943..363ebb9e80 100644 --- a/winsup/testsuite/README +++ b/winsup/testsuite/README @@ -21,7 +21,7 @@ cygwin1.dll ONLY. Create other subdirs under testsuite/ for other classes of testing. Tests in winsup.api/*.c or winsup.api/*/*.c (only one subdirectory -level is allowed) either compile, run, and exit(0) or they fail. +level is allowed) either run, and exit(0) or they fail. Either abort or exit with a non-zero code to indicate failure. Don't print anything to the screen if you can avoid it (except for failure reasons, of course). One .c file per test, no compile options are diff --git a/winsup/testsuite/cygrun/Makefile.am b/winsup/testsuite/mingw/Makefile.am similarity index 58% rename from winsup/testsuite/cygrun/Makefile.am rename to winsup/testsuite/mingw/Makefile.am index bdbd8f705d..772e73405f 100644 --- a/winsup/testsuite/cygrun/Makefile.am +++ b/winsup/testsuite/mingw/Makefile.am @@ -1,4 +1,4 @@ -# Makefile.am for Cygwin the testsuite wrapper cygrun. +# Makefile.am for Cygwin testsuite MINGW executables # # This file is part of Cygwin. # @@ -8,14 +8,19 @@ # This makefile requires GNU make. -# This is built with the MinGW compiler, so is in a separate Makefile here +# These are built with the MinGW compiler, so are in a separate Makefile here # because it's tricky with Automake to use different compilers for the same # language in the same Makefile. override CC = @MINGW_CC@ +override CXX = @MINGW_CXX@ AM_CPPFLAGS = -noinst_PROGRAMS = cygrun +noinst_PROGRAMS = cygrun cygload cygrun_SOURCES = \ ../cygrun.c + +cygload_SOURCES = \ + ../winsup.api/cygload.cc +cygload_LDFLAGS=-static -Wl,-e,cygloadCRTStartup diff --git a/winsup/testsuite/winsup.api/cygload.exp b/winsup/testsuite/winsup.api/cygload.exp index e378820ad8..724cb01cce 100644 --- a/winsup/testsuite/winsup.api/cygload.exp +++ b/winsup/testsuite/winsup.api/cygload.exp @@ -14,33 +14,17 @@ proc ws_spawn {cmd args} { verbose send "catchCode = $rv\n" } -if { [string match "i686" $target_alias] } { - set entrypoint "_cygloadCRTStartup@0" +if { $verbose } { + set redirect_output "./mingw-cygwin.log" } else { - set entrypoint "cygloadCRTStartup" + set redirect_output /dev/null } -ws_spawn "$MINGW_CXX $srcdir/$subdir/cygload.cc -o mingw-cygload.exe -static -Wl,-e,$entrypoint" - +set windows_runtime_root [exec cygpath -m $runtime_root] +ws_spawn "./mingw/cygload.exe -cygwin $windows_runtime_root/cygwin1.dll > $redirect_output" if { $rv != {0 {}} } { - verbose -log "$rv" - fail "cygload (compile)" + verbose -log "cygload: $rv" + fail "cygload" } else { - if { $verbose } { - set redirect_output "./mingw-cygwin.log" - } else { - set redirect_output /dev/null - } - set windows_runtime_root [exec cygpath -m $runtime_root] - ws_spawn "./mingw-cygload.exe -cygwin $windows_runtime_root/cygwin1.dll > $redirect_output" - if { $rv != {0 {}} } { - verbose -log "cygload: $rv" - fail "cygload (execute)" - } else { - pass "cygload" - } - catch { file delete "mingw-cygload.exe" } err - if { $err != "" } { - note "error deleting mingw-cygload.exe: $err" - } + pass "cygload" } diff --git a/winsup/testsuite/winsup.api/samples/sample-miscompile.c b/winsup/testsuite/winsup.api/samples/sample-miscompile.c deleted file mode 100644 index bc0d21d2e6..0000000000 --- a/winsup/testsuite/winsup.api/samples/sample-miscompile.c +++ /dev/null @@ -1 +0,0 @@ -foo bar grill diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp index e81ead3046..fb3e3816c6 100644 --- a/winsup/testsuite/winsup.api/winsup.exp +++ b/winsup/testsuite/winsup.api/winsup.exp @@ -8,12 +8,6 @@ if { ! [isnative] } { set rv "" -set ltp_includes "-I$ltp_includes" -set ltp_libs "$ltp_libs" - -set add_includes $ltp_includes -set add_libs $ltp_libs - set orig_path "$env(PATH)" set test_filter "" @@ -48,7 +42,9 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc regsub "^$srcdir/$subdir/" $src "" testcase regsub ".c$" $testcase "" base regsub ".*/" $base "" basename - regsub "/" $base "-" base + regsub "/" $base "-" tmpfile + + set exec "./winsup.api/$base.exe" if { [lsearch -exact $xfail_list $basename] >= 0 } { set xfail_expected 1 @@ -61,37 +57,20 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc if [ file exists "$srcdir/$subdir/$basename.exp" ] then { source "$srcdir/$subdir/$basename.exp" } else { - ws_spawn "$CC -nodefaultlibs -mwin32 $CFLAGS $src $add_includes $add_libs $libdir/binmode.o -lgcc $libdir/libcygwin.a -lkernel32 -luser32 -o $base.exe" - if { $rv } { - fail "$testcase (compile)" - } else { if { $verbose } { - set redirect_output "./$base.log" + set redirect_output "./$tmpfile.log" } else { set redirect_output /dev/null } - file mkdir $tmpdir/$base + file mkdir $tmpdir/$tmpfile set env(PATH) "$runtime_root:$env(PATH)" - ws_spawn "$cygrun ./$base.exe $testdll_tmpdir/$base > $redirect_output" - file delete -force $tmpdir/$base + ws_spawn "$cygrun $exec $testdll_tmpdir/$tmpfile > $redirect_output" + file delete -force $tmpdir/$tmpfile set env(PATH) "$orig_path" if { $rv } { - fail "$testcase (execute)" - if { $xfail_expected } { - catch { file delete "$base.exe" } err - if { $err != "" } { - note "error deleting $base.exe: $err" - } - } + fail "$testcase" } else { pass "$testcase" - if { ! $xfail_expected } { - catch { file delete "$base.exe" } err - if { $err != "" } { - note "error deleting $base.exe: $err" - } - } } - } } } From 01a0e3e4917dda546f373f2d806f6e6c348faa82 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 30 Aug 2022 14:22:55 +0100 Subject: [PATCH 099/767] Cygwin: testsuite: Fix compilation warnings Fix the warnings the previous change surfaces. See ltp commit d5c2112f for mmap fixes. --- winsup/testsuite/libltp/include/usctest.h | 2 +- winsup/testsuite/winsup.api/ltp/execv01.c | 2 +- winsup/testsuite/winsup.api/ltp/execve01.c | 2 +- winsup/testsuite/winsup.api/ltp/execvp01.c | 2 +- winsup/testsuite/winsup.api/ltp/mmap02.c | 10 ++++------ winsup/testsuite/winsup.api/ltp/mmap03.c | 10 ++++------ winsup/testsuite/winsup.api/ltp/mmap04.c | 10 ++++------ winsup/testsuite/winsup.api/ltp/mmap05.c | 10 +++++----- winsup/testsuite/winsup.api/ltp/mmap06.c | 8 +++++--- winsup/testsuite/winsup.api/ltp/mmap07.c | 8 +++++--- winsup/testsuite/winsup.api/ltp/mmap08.c | 8 +++++--- winsup/testsuite/winsup.api/mmaptest03.c | 2 +- winsup/testsuite/winsup.api/systemcall.c | 2 +- winsup/testsuite/winsup.api/user_malloc.c | 4 ++-- 14 files changed, 40 insertions(+), 40 deletions(-) diff --git a/winsup/testsuite/libltp/include/usctest.h b/winsup/testsuite/libltp/include/usctest.h index fef349d04b..637635a251 100644 --- a/winsup/testsuite/libltp/include/usctest.h +++ b/winsup/testsuite/libltp/include/usctest.h @@ -210,7 +210,7 @@ extern void STD_opts_help(); * SCALL = system call and parameters to execute * ***********************************************************************/ -#define TEST(SCALL) TEST_RETURN = SCALL; TEST_ERRNO=errno; +#define TEST(SCALL) TEST_RETURN = (long) SCALL; TEST_ERRNO=errno; /*********************************************************************** * TEST_VOID: calls a system call diff --git a/winsup/testsuite/winsup.api/ltp/execv01.c b/winsup/testsuite/winsup.api/ltp/execv01.c index f59f29702b..dca62c5232 100644 --- a/winsup/testsuite/winsup.api/ltp/execv01.c +++ b/winsup/testsuite/winsup.api/ltp/execv01.c @@ -130,7 +130,7 @@ int exp_enos[]={0, 0}; /* Zero terminated list of expected errnos */ int pid; /* process id from fork */ int status; /* status returned from waitpid */ -const char * const args[2]={"/usr/bin/test", 0}; /* argument list for execv call */ +char * const args[2]={"/usr/bin/test", 0}; /* argument list for execv call */ int main(int ac, char **av) diff --git a/winsup/testsuite/winsup.api/ltp/execve01.c b/winsup/testsuite/winsup.api/ltp/execve01.c index 2584bdf054..eb5073d310 100644 --- a/winsup/testsuite/winsup.api/ltp/execve01.c +++ b/winsup/testsuite/winsup.api/ltp/execve01.c @@ -133,7 +133,7 @@ int exp_enos[]={0, 0}; /* Zero terminated list of expected errnos */ int pid; /* process id from fork */ int status; /* status returned from waitpid */ -const char *const args[2]={"/usr/bin/test", 0}; /* argument list for execve call */ +char *const args[2]={"/usr/bin/test", 0}; /* argument list for execve call */ extern char **environ; /* pointer to this processes env, to pass along */ int diff --git a/winsup/testsuite/winsup.api/ltp/execvp01.c b/winsup/testsuite/winsup.api/ltp/execvp01.c index 8a1726a214..1473ccf66e 100644 --- a/winsup/testsuite/winsup.api/ltp/execvp01.c +++ b/winsup/testsuite/winsup.api/ltp/execvp01.c @@ -133,7 +133,7 @@ int exp_enos[]={0, 0}; /* Zero terminated list of expected errnos */ int pid; /* process id from fork */ int status; /* status returned from waitpid */ -const char *const args[2]={"/usr/bin/test", 0}; /* argument list for execvp call */ +char *const args[2]={"/usr/bin/test", 0}; /* argument list for execvp call */ int main(int ac, char **av) diff --git a/winsup/testsuite/winsup.api/ltp/mmap02.c b/winsup/testsuite/winsup.api/ltp/mmap02.c index b96bdb4529..ca9f4d9569 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap02.c +++ b/winsup/testsuite/winsup.api/ltp/mmap02.c @@ -118,11 +118,12 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * with read access. */ - TEST(mmap(0, page_sz, PROT_READ, - MAP_FILE|MAP_SHARED, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_READ, + MAP_FILE|MAP_SHARED, fildes, 0); /* Check for the return value of mmap() */ - if (TEST_RETURN == (int)MAP_FAILED) { + if (addr == MAP_FAILED) { tst_resm(TFAIL, "mmap() Failed on %s, errno=%d : %s", TEMPFILE, errno, strerror(errno)); continue; @@ -132,9 +133,6 @@ main(int ac, char **av) * executed without (-f) option. */ if (STD_FUNCTIONAL_TEST) { - /* Get the mmap return value */ - addr = (char *)TEST_RETURN; - /* * Read the file contents into the dummy * string. diff --git a/winsup/testsuite/winsup.api/ltp/mmap03.c b/winsup/testsuite/winsup.api/ltp/mmap03.c index fba512c287..5de5435d3d 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap03.c +++ b/winsup/testsuite/winsup.api/ltp/mmap03.c @@ -121,11 +121,12 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * with execute access. */ - TEST(mmap(0, page_sz, PROT_EXEC, - MAP_FILE|MAP_SHARED, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_EXEC, + MAP_FILE|MAP_SHARED, fildes, 0); /* Check for the return value of mmap() */ - if (TEST_RETURN == (int)MAP_FAILED) { + if (addr == MAP_FAILED) { tst_resm(TFAIL, "mmap() Failed on %s, errno=%d : %s", TEMPFILE, errno, strerror(errno)); continue; @@ -135,9 +136,6 @@ main(int ac, char **av) * executed without (-f) option. */ if (STD_FUNCTIONAL_TEST) { - /* Get the mmap return value */ - addr = (char *)TEST_RETURN; - /* * Read the file contents into the dummy * variable. diff --git a/winsup/testsuite/winsup.api/ltp/mmap04.c b/winsup/testsuite/winsup.api/ltp/mmap04.c index dbe25aefdc..e69d15a97b 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap04.c +++ b/winsup/testsuite/winsup.api/ltp/mmap04.c @@ -121,11 +121,12 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * with read and execute access. */ - TEST(mmap(0, page_sz, PROT_READ|PROT_EXEC, - MAP_FILE|MAP_SHARED, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_READ|PROT_EXEC, + MAP_FILE|MAP_SHARED, fildes, 0); /* Check for the return value of mmap() */ - if (TEST_RETURN == (int)MAP_FAILED) { + if (addr == MAP_FAILED) { tst_resm(TFAIL, "mmap() Failed on %s, errno=%d : %s", TEMPFILE, errno, strerror(errno)); continue; @@ -136,9 +137,6 @@ main(int ac, char **av) * executed without (-f) option. */ if (STD_FUNCTIONAL_TEST) { - /* Get the mmap return value */ - addr = (char *)TEST_RETURN; - /* * Read the file contents into the dummy * variable. diff --git a/winsup/testsuite/winsup.api/ltp/mmap05.c b/winsup/testsuite/winsup.api/ltp/mmap05.c index 6e75ee222f..600cd761e7 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap05.c +++ b/winsup/testsuite/winsup.api/ltp/mmap05.c @@ -125,12 +125,12 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * with no access. */ - - TEST(mmap(0, page_sz, PROT_NONE, - MAP_FILE|MAP_SHARED, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_NONE, + MAP_FILE|MAP_SHARED, fildes, 0); /* Check for the return value of mmap() */ - if (TEST_RETURN == (int)MAP_FAILED) { + if (addr == MAP_FAILED) { tst_resm(TFAIL, "mmap() Failed on %s, errno=%d : %s", TEMPFILE, errno, strerror(errno)); continue; @@ -264,7 +264,7 @@ setup() * is not accessible. */ void -sig_handler(sig) +sig_handler(int sig) { if (sig == SIGSEGV) { /* set the global variable and jump back */ diff --git a/winsup/testsuite/winsup.api/ltp/mmap06.c b/winsup/testsuite/winsup.api/ltp/mmap06.c index c099f8c335..d089f900ba 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap06.c +++ b/winsup/testsuite/winsup.api/ltp/mmap06.c @@ -121,11 +121,13 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * with read access. */ - TEST(mmap(0, page_sz, PROT_READ, - MAP_FILE|MAP_SHARED, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_READ, + MAP_FILE|MAP_SHARED, fildes, 0); + TEST_ERRNO = errno; /* Check for the return value of mmap() */ - if (TEST_RETURN != (int)MAP_FAILED) { + if (addr != MAP_FAILED) { tst_resm(TFAIL, "mmap() returned invalid value, " "expected: -1"); /* Unmap the mapped memory */ diff --git a/winsup/testsuite/winsup.api/ltp/mmap07.c b/winsup/testsuite/winsup.api/ltp/mmap07.c index 6e3bb51128..4be6129e6e 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap07.c +++ b/winsup/testsuite/winsup.api/ltp/mmap07.c @@ -122,11 +122,13 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * with write access. */ - TEST(mmap(0, page_sz, PROT_WRITE, - MAP_FILE|MAP_PRIVATE, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_WRITE, + MAP_FILE|MAP_PRIVATE, fildes, 0); + TEST_ERRNO = errno; /* Check for the return value of mmap() */ - if (TEST_RETURN != (int)MAP_FAILED) { + if (addr != MAP_FAILED) { tst_resm(TFAIL, "mmap() returned invalid value, " "expected: -1"); /* Unmap the mapped memory */ diff --git a/winsup/testsuite/winsup.api/ltp/mmap08.c b/winsup/testsuite/winsup.api/ltp/mmap08.c index 543c5397be..49b6471e58 100644 --- a/winsup/testsuite/winsup.api/ltp/mmap08.c +++ b/winsup/testsuite/winsup.api/ltp/mmap08.c @@ -117,11 +117,13 @@ main(int ac, char **av) * Call mmap to map the temporary file 'TEMPFILE' * which is already closed. so, fildes is not valid. */ - TEST(mmap(0, page_sz, PROT_WRITE, - MAP_FILE|MAP_SHARED, fildes, 0)); + errno = 0; + addr = mmap(0, page_sz, PROT_WRITE, + MAP_FILE|MAP_SHARED, fildes, 0); + TEST_ERRNO = errno; /* Check for the return value of mmap() */ - if (TEST_RETURN != (int)MAP_FAILED) { + if (addr != MAP_FAILED) { tst_resm(TFAIL, "mmap() returned invalid value, " "expected: -1"); /* Unmap the mapped memory */ diff --git a/winsup/testsuite/winsup.api/mmaptest03.c b/winsup/testsuite/winsup.api/mmaptest03.c index 8046f0bf84..e28e0f251b 100644 --- a/winsup/testsuite/winsup.api/mmaptest03.c +++ b/winsup/testsuite/winsup.api/mmaptest03.c @@ -145,7 +145,7 @@ main(int argc, char **argv) unlink ("y.txt"); if (!WIFEXITED (status) || WEXITSTATUS (status)) { - printf ("forked process exited with status %p\n", (char *) status); + printf ("forked process exited with status %x\n", status); return 1; } } diff --git a/winsup/testsuite/winsup.api/systemcall.c b/winsup/testsuite/winsup.api/systemcall.c index 91dd748c01..d10c9825c9 100644 --- a/winsup/testsuite/winsup.api/systemcall.c +++ b/winsup/testsuite/winsup.api/systemcall.c @@ -61,7 +61,7 @@ main (int argc, char **argv) } if (n != 0) { - fprintf (stderr, "system() call returned %p\n", (void *) n); + fprintf (stderr, "system() call returned %x\n", n); exit (1); } exit (0); diff --git a/winsup/testsuite/winsup.api/user_malloc.c b/winsup/testsuite/winsup.api/user_malloc.c index 8685f86abc..e2b1e0a926 100644 --- a/winsup/testsuite/winsup.api/user_malloc.c +++ b/winsup/testsuite/winsup.api/user_malloc.c @@ -133,11 +133,11 @@ ull * current = buffer; static int is_valid (void * ptr) { - unsigned int iptr = (unsigned int) ptr; + uintptr_t iptr = (uintptr_t) ptr; ull * ullptr = (ull *) ptr; iptr = (iptr / sizeof(ull)) * sizeof(ull); - if (iptr != (int) ptr) + if (iptr != (uintptr_t) ptr) return 0; if (--ullptr < buffer || ullptr[0] > SIZE || ullptr + ullptr[0] > current) return 0; From 52983af63174ac7e39ad7b88b9444f74c4051b4e Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 31 Aug 2022 14:53:45 +0100 Subject: [PATCH 100/767] Cygwin: testsuite: 64-bit fixes in pthread testcases Fix warnings and 64-bit issues in pthread testcases. See pthread-win32 commit 1183e5ac etc. --- winsup/testsuite/winsup.api/pthread/cancel2.c | 10 ++++----- winsup/testsuite/winsup.api/pthread/cancel3.c | 10 ++++----- winsup/testsuite/winsup.api/pthread/cancel4.c | 10 ++++----- winsup/testsuite/winsup.api/pthread/cancel5.c | 12 +++++----- .../testsuite/winsup.api/pthread/cleanup2.c | 10 ++++----- .../testsuite/winsup.api/pthread/cleanup3.c | 8 +++---- .../testsuite/winsup.api/pthread/condvar2_1.c | 12 +++++----- .../testsuite/winsup.api/pthread/condvar3_1.c | 12 +++++----- .../testsuite/winsup.api/pthread/condvar3_2.c | 14 ++++++------ winsup/testsuite/winsup.api/pthread/exit3.c | 2 +- .../testsuite/winsup.api/pthread/inherit1.c | 4 ++-- winsup/testsuite/winsup.api/pthread/join1.c | 10 ++++----- winsup/testsuite/winsup.api/pthread/join2.c | 8 +++---- winsup/testsuite/winsup.api/pthread/mutex4.c | 2 +- .../testsuite/winsup.api/pthread/priority1.c | 4 ++-- .../testsuite/winsup.api/pthread/priority2.c | 4 ++-- winsup/testsuite/winsup.api/pthread/rwlock6.c | 22 +++++++++---------- 17 files changed, 77 insertions(+), 77 deletions(-) diff --git a/winsup/testsuite/winsup.api/pthread/cancel2.c b/winsup/testsuite/winsup.api/pthread/cancel2.c index 14889313ed..19902dc0f8 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel2.c +++ b/winsup/testsuite/winsup.api/pthread/cancel2.c @@ -96,7 +96,7 @@ mythread(void * arg) pthread_testcancel(); } - return (void *) result; + return (void *) (size_t)result; } int @@ -156,17 +156,17 @@ main() for (i = 1; i <= NUMTHREADS; i++) { int fail = 0; - int result = 0; + void *result = 0; - assert(pthread_join(t[i], (void **) &result) == 0); - fail = (result != (int) PTHREAD_CANCELED); + assert(pthread_join(t[i], &result) == 0); + fail = (result != PTHREAD_CANCELED); if (fail) { fprintf(stderr, "Thread %d: started %d: location %d: cancel type %s\n", i, threadbag[i].started, result, - ((result % 2) == 0) ? "ASYNCHRONOUS" : "DEFERRED"); + (((int)(size_t)result % 2) == 0) ? "ASYNCHRONOUS" : "DEFERRED"); } failed |= fail; } diff --git a/winsup/testsuite/winsup.api/pthread/cancel3.c b/winsup/testsuite/winsup.api/pthread/cancel3.c index 3ac03e4b64..832fe2e3f8 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel3.c +++ b/winsup/testsuite/winsup.api/pthread/cancel3.c @@ -61,7 +61,7 @@ static bag_t threadbag[NUMTHREADS + 1]; void * mythread(void * arg) { - int result = ((int)PTHREAD_CANCELED + 1); + void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); bag_t * bag = (bag_t *) arg; assert(bag == &threadbag[bag->threadnum]); @@ -81,7 +81,7 @@ mythread(void * arg) for (bag->count = 0; bag->count < 100; bag->count++) Sleep(100); - return (void *) result; + return result; } int @@ -136,16 +136,16 @@ main() for (i = 1; i <= NUMTHREADS; i++) { int fail = 0; - int result = 0; + void *result = 0; /* * The thread does not contain any cancelation points, so * a return value of PTHREAD_CANCELED confirms that async * cancelation succeeded. */ - assert(pthread_join(t[i], (void **) &result) == 0); + assert(pthread_join(t[i], &result) == 0); - fail = (result != (int) PTHREAD_CANCELED); + fail = (result != PTHREAD_CANCELED); if (fail) { diff --git a/winsup/testsuite/winsup.api/pthread/cancel4.c b/winsup/testsuite/winsup.api/pthread/cancel4.c index d6b2ffadf8..d8151891bf 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel4.c +++ b/winsup/testsuite/winsup.api/pthread/cancel4.c @@ -66,7 +66,7 @@ static bag_t threadbag[NUMTHREADS + 1]; void * mythread(void * arg) { - int result = ((int)PTHREAD_CANCELED + 1); + void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); bag_t * bag = (bag_t *) arg; assert(bag == &threadbag[bag->threadnum]); @@ -86,7 +86,7 @@ mythread(void * arg) for (bag->count = 0; bag->count < 100; bag->count++) Sleep(100); - return (void *) result; + return result; } int @@ -141,16 +141,16 @@ main() for (i = 1; i <= NUMTHREADS; i++) { int fail = 0; - int result = 0; + void* result = 0; /* * The thread does not contain any cancelation points, so * a return value of PTHREAD_CANCELED indicates that async * cancelation occurred. */ - assert(pthread_join(t[i], (void **) &result) == 0); + assert(pthread_join(t[i], &result) == 0); - fail = (result == (int) PTHREAD_CANCELED); + fail = (result == PTHREAD_CANCELED); if (fail) { diff --git a/winsup/testsuite/winsup.api/pthread/cancel5.c b/winsup/testsuite/winsup.api/pthread/cancel5.c index 9dd579543a..8b7240615d 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel5.c +++ b/winsup/testsuite/winsup.api/pthread/cancel5.c @@ -62,7 +62,7 @@ static bag_t threadbag[NUMTHREADS + 1]; void * mythread(void * arg) { - int result = ((int)PTHREAD_CANCELED + 1); + void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); bag_t * bag = (bag_t *) arg; assert(bag == &threadbag[bag->threadnum]); @@ -82,7 +82,7 @@ mythread(void * arg) for (bag->count = 0; bag->count < 100; bag->count++) Sleep(100); - return (void *) result; + return result; } int @@ -96,7 +96,7 @@ main() { threadbag[i].started = 0; threadbag[i].threadnum = i; - assert(pthread_create(&t[i], NULL, mythread, (void *) &threadbag[i]) == 0); + assert(pthread_create(&t[i], NULL, mythread, &threadbag[i]) == 0); } /* @@ -135,16 +135,16 @@ main() for (i = 1; i <= NUMTHREADS; i++) { int fail = 0; - int result = 0; + void* result = (void*)((int)(size_t)PTHREAD_CANCELED + 1); /* * The thread does not contain any cancelation points, so * a return value of PTHREAD_CANCELED confirms that async * cancelation succeeded. */ - assert(pthread_join(t[i], (void **) &result) == 0); + assert(pthread_join(t[i], &result) == 0); - fail = (result != (int) PTHREAD_CANCELED); + fail = (result != PTHREAD_CANCELED); if (fail) { diff --git a/winsup/testsuite/winsup.api/pthread/cleanup2.c b/winsup/testsuite/winsup.api/pthread/cleanup2.c index bcbaad3a77..75c239a006 100644 --- a/winsup/testsuite/winsup.api/pthread/cleanup2.c +++ b/winsup/testsuite/winsup.api/pthread/cleanup2.c @@ -84,7 +84,7 @@ mythread(void * arg) pthread_cleanup_pop(1); - return (void *) result; + return (void *) (size_t) result; } int @@ -129,18 +129,18 @@ main() for (i = 1; i <= NUMTHREADS; i++) { int fail = 0; - int result = 0; + void* result = 0; - assert(pthread_join(t[i], (void **) &result) == 0); + assert(pthread_join(t[i], &result) == 0); - fail = (result != 0); + fail = ((int)(size_t)result != 0); if (fail) { fprintf(stderr, "Thread %d: started %d: result: %d\n", i, threadbag[i].started, - result); + (int)(size_t)result); } failed = (failed || fail); } diff --git a/winsup/testsuite/winsup.api/pthread/cleanup3.c b/winsup/testsuite/winsup.api/pthread/cleanup3.c index f8201faa0f..6fea8dc936 100644 --- a/winsup/testsuite/winsup.api/pthread/cleanup3.c +++ b/winsup/testsuite/winsup.api/pthread/cleanup3.c @@ -87,7 +87,7 @@ mythread(void * arg) pthread_cleanup_pop(0); - return (void *) result; + return (void *) (size_t)result; } int @@ -132,9 +132,9 @@ main() for (i = 1; i <= NUMTHREADS; i++) { int fail = 0; - int result = 0; + void* result = 0; - assert(pthread_join(t[i], (void **) &result) == 0); + assert(pthread_join(t[i], &result) == 0); fail = (result != 0); @@ -143,7 +143,7 @@ main() fprintf(stderr, "Thread %d: started %d: result: %d\n", i, threadbag[i].started, - result); + (int)(size_t)result); } failed = (failed || fail); } diff --git a/winsup/testsuite/winsup.api/pthread/condvar2_1.c b/winsup/testsuite/winsup.api/pthread/condvar2_1.c index da34162036..1aa4fed9ac 100644 --- a/winsup/testsuite/winsup.api/pthread/condvar2_1.c +++ b/winsup/testsuite/winsup.api/pthread/condvar2_1.c @@ -69,7 +69,7 @@ main() { int i; pthread_t t[NUMTHREADS + 1]; - int result = 0; + void* result = 0; struct timeb currSysTime; const DWORD NANOSEC_PER_MILLISEC = 1000000; @@ -89,19 +89,19 @@ main() for (i = 1; i <= NUMTHREADS; i++) { - assert(pthread_create(&t[i], NULL, mythread, (void *) i) == 0); + assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t)i) == 0); } assert(pthread_mutex_unlock(&mutex) == 0); for (i = 1; i <= NUMTHREADS; i++) { - assert(pthread_join(t[i], (void **) &result) == 0); - assert(result == i); + assert(pthread_join(t[i], &result) == 0); + assert((int)(size_t)result == i); } - result = pthread_cond_destroy(&cv); - assert(result == 0); + int result2 = pthread_cond_destroy(&cv); + assert(result2 == 0); return 0; } diff --git a/winsup/testsuite/winsup.api/pthread/condvar3_1.c b/winsup/testsuite/winsup.api/pthread/condvar3_1.c index b08b048894..a4653ebc8d 100644 --- a/winsup/testsuite/winsup.api/pthread/condvar3_1.c +++ b/winsup/testsuite/winsup.api/pthread/condvar3_1.c @@ -89,7 +89,7 @@ main() { int i; pthread_t t[NUMTHREADS + 1]; - int result = 0; + void* result = 0; struct timeb currSysTime; const DWORD NANOSEC_PER_MILLISEC = 1000000; @@ -110,7 +110,7 @@ main() for (i = 1; i <= NUMTHREADS; i++) { - assert(pthread_create(&t[i], NULL, mythread, (void *) i) == 0); + assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t)i) == 0); } do { @@ -127,8 +127,8 @@ main() for (i = 1; i <= NUMTHREADS; i++) { - assert(pthread_join(t[i], (void **) &result) == 0); - assert(result == i); + assert(pthread_join(t[i], &result) == 0); + assert((int)(size_t)result == i); } printf("awk = %d\n", awoken); @@ -138,8 +138,8 @@ main() assert(signaled == awoken); assert(timedout == NUMTHREADS - signaled); - result = pthread_cond_destroy(&cv); - assert(result == 0); + int result2 = pthread_cond_destroy(&cv); + assert(result2 == 0); return 0; } diff --git a/winsup/testsuite/winsup.api/pthread/condvar3_2.c b/winsup/testsuite/winsup.api/pthread/condvar3_2.c index 57e7eb4391..b08d8e256d 100644 --- a/winsup/testsuite/winsup.api/pthread/condvar3_2.c +++ b/winsup/testsuite/winsup.api/pthread/condvar3_2.c @@ -66,7 +66,7 @@ mythread(void * arg) abstime2.tv_sec = abstime.tv_sec; - if ((int) arg % 3 == 0) + if ((int) (size_t)arg % 3 == 0) { abstime2.tv_sec += 2; } @@ -91,7 +91,7 @@ main() { int i; pthread_t t[NUMTHREADS + 1]; - int result = 0; + void* result = 0; struct timeb currSysTime; const DWORD NANOSEC_PER_MILLISEC = 1000000; @@ -109,15 +109,15 @@ main() for (i = 1; i <= NUMTHREADS; i++) { - assert(pthread_create(&t[i], NULL, mythread, (void *) i) == 0); + assert(pthread_create(&t[i], NULL, mythread, (void *)(size_t)i) == 0); } assert(pthread_mutex_unlock(&mutex) == 0); for (i = 1; i <= NUMTHREADS; i++) { - assert(pthread_join(t[i], (void **) &result) == 0); - assert(result == i); + assert(pthread_join(t[i], &result) == 0); + assert((int)(size_t)result == i); /* * Approximately 2/3rds of the threads are expected to time out. * Signal the remainder after some threads have woken up and exited @@ -132,8 +132,8 @@ main() assert(awoken == NUMTHREADS - timedout); - result = pthread_cond_destroy(&cv); - assert(result == 0); + int result2 = pthread_cond_destroy(&cv); + assert(result2 == 0); return 0; } diff --git a/winsup/testsuite/winsup.api/pthread/exit3.c b/winsup/testsuite/winsup.api/pthread/exit3.c index 0b6ec31c54..7baf7bb10f 100644 --- a/winsup/testsuite/winsup.api/pthread/exit3.c +++ b/winsup/testsuite/winsup.api/pthread/exit3.c @@ -24,7 +24,7 @@ main(int argc, char * argv[]) /* Create a few threads and then exit. */ for (i = 0; i < 4; i++) { - assert(pthread_create(&id[i], NULL, func, (void *) i) == 0); + assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); } Sleep(1000); diff --git a/winsup/testsuite/winsup.api/pthread/inherit1.c b/winsup/testsuite/winsup.api/pthread/inherit1.c index a909eb763a..545e4596f9 100644 --- a/winsup/testsuite/winsup.api/pthread/inherit1.c +++ b/winsup/testsuite/winsup.api/pthread/inherit1.c @@ -47,7 +47,7 @@ void * func(void * arg) struct sched_param param; assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); - return (void *) param.sched_priority; + return (void *) (size_t)param.sched_priority; } int @@ -91,7 +91,7 @@ main() assert(pthread_attr_setschedparam(&attr, ¶m) == 0); assert(pthread_create(&t, &attr, func, NULL) == 0); pthread_join(t, &result); - assert((int) result == mainParam.sched_priority); + assert((int)(size_t) result == mainParam.sched_priority); } } diff --git a/winsup/testsuite/winsup.api/pthread/join1.c b/winsup/testsuite/winsup.api/pthread/join1.c index d74e0c484b..8a9d17669f 100644 --- a/winsup/testsuite/winsup.api/pthread/join1.c +++ b/winsup/testsuite/winsup.api/pthread/join1.c @@ -9,7 +9,7 @@ void * func(void * arg) { - int i = (int) arg; + int i = (int)(size_t)arg; Sleep(i * 500); @@ -24,12 +24,12 @@ main(int argc, char * argv[]) { pthread_t id[4]; int i; - int result; + void* result = (void*)-1; /* Create a few threads and then exit. */ for (i = 0; i < 4; i++) { - assert(pthread_create(&id[i], NULL, func, (void *) i) == 0); + assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); } /* Some threads will finish before they are joined, some after. */ @@ -37,9 +37,9 @@ main(int argc, char * argv[]) for (i = 0; i < 4; i++) { - assert(pthread_join(id[i], (void **) &result) == 0); + assert(pthread_join(id[i], &result) == 0); #if ! defined (__MINGW32__) || defined (__MSVCRT__) - assert(result == i); + assert((int)(size_t)result == i); #else # warning pthread_join not fully supported in this configuration. assert(result == 0); diff --git a/winsup/testsuite/winsup.api/pthread/join2.c b/winsup/testsuite/winsup.api/pthread/join2.c index cdc8ca2d9a..9a8de46193 100644 --- a/winsup/testsuite/winsup.api/pthread/join2.c +++ b/winsup/testsuite/winsup.api/pthread/join2.c @@ -18,21 +18,21 @@ main(int argc, char * argv[]) { pthread_t id[4]; int i; - int result; + void* result = (void*)-1; /* Create a few threads and then exit. */ for (i = 0; i < 4; i++) { - assert(pthread_create(&id[i], NULL, func, (void *) i) == 0); + assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0); } for (i = 0; i < 4; i++) { - assert(pthread_join(id[i], (void **) &result) == 0); + assert(pthread_join(id[i], &result) == 0); #if ! defined (__MINGW32__) || defined (__MSVCRT__) /* CRTDLL _beginthread doesn't support return value, so the assertion is guaranteed to fail. */ - assert(result == i); + assert((int)(size_t)result == i); #endif } diff --git a/winsup/testsuite/winsup.api/pthread/mutex4.c b/winsup/testsuite/winsup.api/pthread/mutex4.c index 8a983fee92..f4d31adb5a 100644 --- a/winsup/testsuite/winsup.api/pthread/mutex4.c +++ b/winsup/testsuite/winsup.api/pthread/mutex4.c @@ -17,7 +17,7 @@ static pthread_mutex_t mutex1; void * unlocker(void * arg) { - int expectedResult = (int) arg; + int expectedResult = (int)(size_t)arg; wasHere++; assert(pthread_mutex_unlock(&mutex1) == expectedResult); diff --git a/winsup/testsuite/winsup.api/pthread/priority1.c b/winsup/testsuite/winsup.api/pthread/priority1.c index a311028952..b740b997f1 100644 --- a/winsup/testsuite/winsup.api/pthread/priority1.c +++ b/winsup/testsuite/winsup.api/pthread/priority1.c @@ -48,7 +48,7 @@ void * func(void * arg) assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); assert(policy == SCHED_OTHER); - return (void *) param.sched_priority; + return (void *)(size_t)param.sched_priority; } int @@ -71,7 +71,7 @@ main() assert(pthread_attr_setschedparam(&attr, ¶m) == 0); assert(pthread_create(&t, &attr, func, NULL) == 0); pthread_join(t, &result); - assert((int) result == param.sched_priority); + assert((int)(size_t) result == param.sched_priority); } return 0; diff --git a/winsup/testsuite/winsup.api/pthread/priority2.c b/winsup/testsuite/winsup.api/pthread/priority2.c index 4dcf3859fd..d2d0b06952 100644 --- a/winsup/testsuite/winsup.api/pthread/priority2.c +++ b/winsup/testsuite/winsup.api/pthread/priority2.c @@ -52,7 +52,7 @@ void * func(void * arg) assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); assert(pthread_mutex_unlock(&startMx) == 0); assert(policy == SCHED_OTHER); - return (void *) param.sched_priority; + return (void *) (size_t)param.sched_priority; } int @@ -73,7 +73,7 @@ main() assert(pthread_setschedparam(t, SCHED_OTHER, ¶m) == 0); assert(pthread_mutex_unlock(&startMx) == 0); pthread_join(t, &result); - assert((int) result == param.sched_priority); + assert((int)(size_t)result == param.sched_priority); } return 0; diff --git a/winsup/testsuite/winsup.api/pthread/rwlock6.c b/winsup/testsuite/winsup.api/pthread/rwlock6.c index d5f2320d04..870b7c264b 100644 --- a/winsup/testsuite/winsup.api/pthread/rwlock6.c +++ b/winsup/testsuite/winsup.api/pthread/rwlock6.c @@ -25,7 +25,7 @@ void * wrfunc(void * arg) ba = bankAccount; assert(pthread_rwlock_unlock(&rwlock1) == 0); - return ((void *) ba); + return ((void *)(size_t)ba); } void * rdfunc(void * arg) @@ -36,7 +36,7 @@ void * rdfunc(void * arg) ba = bankAccount; assert(pthread_rwlock_unlock(&rwlock1) == 0); - return ((void *) ba); + return ((void *)(size_t)ba); } int @@ -45,9 +45,9 @@ main() pthread_t wrt1; pthread_t wrt2; pthread_t rdt; - int wr1Result = 0; - int wr2Result = 0; - int rdResult = 0; + void* wr1Result = 0; + void* wr2Result = 0; + void* rdResult = 0; bankAccount = 0; @@ -57,13 +57,13 @@ main() Sleep(500); assert(pthread_create(&wrt2, NULL, wrfunc, NULL) == 0); - assert(pthread_join(wrt1, (void **) &wr1Result) == 0); - assert(pthread_join(rdt, (void **) &rdResult) == 0); - assert(pthread_join(wrt2, (void **) &wr2Result) == 0); + assert(pthread_join(wrt1, &wr1Result) == 0); + assert(pthread_join(rdt, &rdResult) == 0); + assert(pthread_join(wrt2, &wr2Result) == 0); - assert(wr1Result == 10); - assert(rdResult == 20); - assert(wr2Result == 20); + assert((int)(size_t)wr1Result == 10); + assert((int)(size_t)rdResult == 20); + assert((int)(size_t)wr2Result == 20); return 0; } From 736618054c4f93fd1a81a8f53bf08a558f2f2ba2 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 31 Aug 2022 20:32:47 +0100 Subject: [PATCH 101/767] Cygwin: testsuite: Update mutex tests for changed default mutex type Default mutex type is PTHREAD_MUTEX_NORMAL. Attempting to unlock an unowned mutex of that type is specified as undefined behaviour, not returning EPERM. mutex7e verfies that attempting to unlock an unowned mutex of type PTHREAD_MUTEX_ERRORCHECK returns EPERM. --- winsup/testsuite/winsup.api/pthread/mutex5.c | 2 +- winsup/testsuite/winsup.api/pthread/mutex7.c | 3 +-- winsup/testsuite/winsup.api/pthread/mutex7d.c | 3 +-- winsup/testsuite/winsup.api/pthread/mutex7n.c | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/winsup/testsuite/winsup.api/pthread/mutex5.c b/winsup/testsuite/winsup.api/pthread/mutex5.c index 7029da12fc..6d24275f17 100644 --- a/winsup/testsuite/winsup.api/pthread/mutex5.c +++ b/winsup/testsuite/winsup.api/pthread/mutex5.c @@ -23,7 +23,7 @@ main() { assert(pthread_mutexattr_init(&mxAttr) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); - assert(mxType == PTHREAD_MUTEX_ERRORCHECK); + assert(mxType == PTHREAD_MUTEX_NORMAL); } return 0; diff --git a/winsup/testsuite/winsup.api/pthread/mutex7.c b/winsup/testsuite/winsup.api/pthread/mutex7.c index d2c9f8bee7..6acb12317f 100644 --- a/winsup/testsuite/winsup.api/pthread/mutex7.c +++ b/winsup/testsuite/winsup.api/pthread/mutex7.c @@ -2,7 +2,7 @@ * mutex7.c * * Test the default (type not set) mutex type. - * Should be the same as PTHREAD_MUTEX_ERRORCHECK. + * Should be the same as PTHREAD_MUTEX_NORMAL. * Thread locks then trylocks mutex (attempted recursive lock). * The thread should lock first time and EBUSY second time. * @@ -25,7 +25,6 @@ void * locker(void * arg) assert(pthread_mutex_trylock(&mutex) == EBUSY); lockCount++; assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == EPERM); return 0; } diff --git a/winsup/testsuite/winsup.api/pthread/mutex7d.c b/winsup/testsuite/winsup.api/pthread/mutex7d.c index 906d0f043a..98b74fc5b2 100644 --- a/winsup/testsuite/winsup.api/pthread/mutex7d.c +++ b/winsup/testsuite/winsup.api/pthread/mutex7d.c @@ -2,7 +2,7 @@ * mutex7d.c * * Test the default (type not set) mutex type. - * Should be the same as PTHREAD_MUTEX_ERRORCHECK. + * Should be the same as PTHREAD_MUTEX_NORMAL. * Thread locks then trylocks mutex (attempted recursive lock). * The thread should lock first time and EBUSY second time. * @@ -25,7 +25,6 @@ void * locker(void * arg) assert(pthread_mutex_trylock(&mutex) == EBUSY); lockCount++; assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == EPERM); return 0; } diff --git a/winsup/testsuite/winsup.api/pthread/mutex7n.c b/winsup/testsuite/winsup.api/pthread/mutex7n.c index e9a36fec0a..a04792b612 100644 --- a/winsup/testsuite/winsup.api/pthread/mutex7n.c +++ b/winsup/testsuite/winsup.api/pthread/mutex7n.c @@ -29,7 +29,6 @@ void * locker(void * arg) assert(pthread_mutex_trylock(&mutex) == EBUSY); lockCount++; assert(pthread_mutex_unlock(&mutex) == 0); - assert(pthread_mutex_unlock(&mutex) == EPERM); return (void *) 555; } From 663922f6186bfaf9b30226d42bc00c452d98d26b Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 31 Aug 2022 20:48:08 +0100 Subject: [PATCH 102/767] Cygwin: testsuite: Update pthread tests for default SCHED_FIFO Update for default (and only) thread scheduler policy is SCHED_FIFO. --- winsup/testsuite/winsup.api/pthread/inherit1.c | 8 ++++---- winsup/testsuite/winsup.api/pthread/priority1.c | 6 +++--- winsup/testsuite/winsup.api/pthread/priority2.c | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/winsup/testsuite/winsup.api/pthread/inherit1.c b/winsup/testsuite/winsup.api/pthread/inherit1.c index 545e4596f9..16c3f534b8 100644 --- a/winsup/testsuite/winsup.api/pthread/inherit1.c +++ b/winsup/testsuite/winsup.api/pthread/inherit1.c @@ -65,8 +65,8 @@ main() int policy; int inheritsched = -1; - assert((maxPrio = sched_get_priority_max(SCHED_OTHER)) != -1); - assert((minPrio = sched_get_priority_min(SCHED_OTHER)) != -1); + assert((maxPrio = sched_get_priority_max(SCHED_FIFO)) != -1); + assert((minPrio = sched_get_priority_min(SCHED_FIFO)) != -1); assert(pthread_attr_init(&attr) == 0); assert(pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED) == 0); @@ -78,9 +78,9 @@ main() mainParam.sched_priority = prio; /* Change the main thread priority */ - assert(pthread_setschedparam(mainThread, SCHED_OTHER, &mainParam) == 0); + assert(pthread_setschedparam(mainThread, SCHED_FIFO, &mainParam) == 0); assert(pthread_getschedparam(mainThread, &policy, &mainParam) == 0); - assert(policy == SCHED_OTHER); + assert(policy == SCHED_FIFO); assert(mainParam.sched_priority == prio); for (param.sched_priority = prio; diff --git a/winsup/testsuite/winsup.api/pthread/priority1.c b/winsup/testsuite/winsup.api/pthread/priority1.c index b740b997f1..a1e8d051df 100644 --- a/winsup/testsuite/winsup.api/pthread/priority1.c +++ b/winsup/testsuite/winsup.api/pthread/priority1.c @@ -47,7 +47,7 @@ void * func(void * arg) struct sched_param param; assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); - assert(policy == SCHED_OTHER); + assert(policy == SCHED_FIFO); return (void *)(size_t)param.sched_priority; } @@ -58,8 +58,8 @@ main() pthread_attr_t attr; void * result = NULL; struct sched_param param; - int maxPrio = sched_get_priority_max(SCHED_OTHER); - int minPrio = sched_get_priority_min(SCHED_OTHER); + int maxPrio = sched_get_priority_max(SCHED_FIFO); + int minPrio = sched_get_priority_min(SCHED_FIFO); assert(pthread_attr_init(&attr) == 0); assert(pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) == 0); diff --git a/winsup/testsuite/winsup.api/pthread/priority2.c b/winsup/testsuite/winsup.api/pthread/priority2.c index d2d0b06952..0534e7ba1d 100644 --- a/winsup/testsuite/winsup.api/pthread/priority2.c +++ b/winsup/testsuite/winsup.api/pthread/priority2.c @@ -51,7 +51,7 @@ void * func(void * arg) assert(pthread_mutex_lock(&startMx) == 0); assert(pthread_getschedparam(pthread_self(), &policy, ¶m) == 0); assert(pthread_mutex_unlock(&startMx) == 0); - assert(policy == SCHED_OTHER); + assert(policy == SCHED_FIFO); return (void *) (size_t)param.sched_priority; } @@ -61,8 +61,8 @@ main() pthread_t t; void * result = NULL; struct sched_param param; - int maxPrio = sched_get_priority_max(SCHED_OTHER); - int minPrio = sched_get_priority_min(SCHED_OTHER); + int maxPrio = sched_get_priority_max(SCHED_FIFO); + int minPrio = sched_get_priority_min(SCHED_FIFO); for (param.sched_priority = minPrio; param.sched_priority <= maxPrio; @@ -70,7 +70,7 @@ main() { assert(pthread_mutex_lock(&startMx) == 0); assert(pthread_create(&t, NULL, func, NULL) == 0); - assert(pthread_setschedparam(t, SCHED_OTHER, ¶m) == 0); + assert(pthread_setschedparam(t, SCHED_FIFO, ¶m) == 0); assert(pthread_mutex_unlock(&startMx) == 0); pthread_join(t, &result); assert((int)(size_t)result == param.sched_priority); From 09654548228e797af199ece1a24fc505fb43ee85 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 30 Aug 2022 17:08:27 +0100 Subject: [PATCH 103/767] Cygwin: testsuite: Drop appending 'ntsec' to CYGWIN in cygrun wrapper Don't append 'ntsec' to the CYGWIN env var in the cygrun wrapper. It doesn't have any effect anymore. --- winsup/testsuite/cygrun.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index 65d859d598..e6c4aa7055 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -33,22 +33,6 @@ main (int argc, char **argv) SetEnvironmentVariable ("TDIRECTORY", argv[2]); SetEnvironmentVariable ("CYGWIN_TESTING", "1"); - if ((p = getenv ("CYGWIN")) == NULL || (strstr (p, "ntsec") == NULL)) - { - char buf[4096]; - if (!p) - { - p = buf; - p[0] = '\0'; - } - else - { - strcpy (buf, p); - strcat (buf, " "); - } - strcat(buf, "ntsec"); - SetEnvironmentVariable ("CYGWIN", buf); - } memset (&sa, 0, sizeof (sa)); memset (&pi, 0, sizeof (pi)); From 6072dcfc346f6d5409bb8324dec1d7e8e08c22ef Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 1 Sep 2022 14:07:26 +0100 Subject: [PATCH 104/767] Cygwin: CI: Run cygserver for tests Note that cygserver must be run using the same cygwin1.DLL as test programs, as they communicate over a named pipe whose name contains the 'installation key' (which is a hash of the cygwin1.dll's path). We run cygserver via 'cmd' to avoid the special code which handles a cygwin parent process starting a cygwin child process, which assumes the same version of cygwin in both. --- .github/workflows/cygwin.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index ac167e7483..10d0255ef1 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -52,7 +52,8 @@ jobs: fail-fast: false matrix: include: - - pkgarch: x86_64 + - target: x86_64-pc-cygwin + pkgarch: x86_64 name: Windows native ${{ matrix.pkgarch }} steps: @@ -105,6 +106,15 @@ jobs: make && make install && (cd */newlib; make info man) && - (cd */newlib; make install-info install-man) && - (cd */winsup; make check || true) + (cd */newlib; make install-info install-man) + shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' + + # test + - name: Test Cygwin + run: >- + export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 && + export MAKEFLAGS=-j$(nproc) && + cd build && + (export PATH=${{ matrix.target }}/winsup/testsuite/runtime:${PATH} && cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) && + (cd ${{ matrix.target }}/winsup; make check || true) shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' From c8ddd03cb015cf7f9137c42a6cbd0639c6c93a23 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 13 Jan 2023 20:59:07 +0100 Subject: [PATCH 105/767] Cygwin: add very simple newgrp(1) tool This tool allows to change the primary group for a child process. The new primary group MUST be part of the supplementary group list of newgrp's user token. The command started as child process is specified on the command line. If it's missing, start the user's default shell with the new primary group. TODO: Implement '-' option. Add command description to documentation. Signed-off-by: Corinna Vinschen --- winsup/utils/Makefile.am | 1 + winsup/utils/newgrp.c | 101 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 winsup/utils/newgrp.c diff --git a/winsup/utils/Makefile.am b/winsup/utils/Makefile.am index 6be5b12c23..75da1163b6 100644 --- a/winsup/utils/Makefile.am +++ b/winsup/utils/Makefile.am @@ -31,6 +31,7 @@ bin_PROGRAMS = \ mkgroup \ mkpasswd \ mount \ + newgrp \ passwd \ pldd \ profiler \ diff --git a/winsup/utils/newgrp.c b/winsup/utils/newgrp.c new file mode 100644 index 0000000000..012c3188f4 --- /dev/null +++ b/winsup/utils/newgrp.c @@ -0,0 +1,101 @@ +/* newgrp.c + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#include +#include +#include +#include +#include +#include +#include +#include + +int +main (int argc, const char **argv) +{ + struct group *gr; + gid_t gid; + const char *cmd; + const char **cmd_av; + const char *fake_av[2]; + + /* TODO: Implement '-' option */ + /* TODO: Add command description to documentation */ + + if (argc < 2 || argv[1][0] == '-') + { + fprintf (stderr, + "Usage: %1$s group [command [args...]]\n" + "\n" + "%1$s changes the current primary group for a command.\n" + "The primary group must be member of the supplementary group\n" + "list of the user.\n" + "The command and its arguments are specified on the command\n" + "line. Default is the user's standard shell.\n", + program_invocation_short_name); + return 1; + } + if (isdigit ((int) argv[1][0])) + { + char *e = NULL; + + gid = strtol (argv[1], &e, 10); + if (e && *e != '\0') + { + fprintf (stderr, "%s: invalid gid `%s'\n", + program_invocation_short_name, argv[1]); + return 2; + } + gr = getgrgid (gid); + if (!gr) + { + fprintf (stderr, "%s: unknown group gid `%u'\n", + program_invocation_short_name, gid); + return 2; + } + } + else + { + gr = getgrnam (argv[1]); + if (!gr) + { + fprintf (stderr, "%s: unknown group name `%s'\n", + program_invocation_short_name, argv[1]); + return 2; + } + gid = gr->gr_gid; + } + if (setgid (gid) != 0) + { + fprintf (stderr, "%s: can't switch primary group to `%s'\n", + program_invocation_short_name, argv[1]); + return 2; + } + argc -= 2; + argv += 2; + if (argc < 1) + { + struct passwd *pw = getpwuid (getuid ()); + if (!pw) + cmd = "/usr/bin/bash"; + else + cmd = pw->pw_shell; + fake_av[0] = cmd; + fake_av[1] = NULL; + cmd_av = fake_av; + } + else + { + cmd = argv[0]; + cmd_av = argv; + } + execvp (cmd, (char **) cmd_av); + fprintf (stderr, "%s: failed to start `%s': %s\n", + program_invocation_short_name, cmd, strerror (errno)); + return 3; +} From 4391d2aed3d4878c5a63f59d2a768f5d38f3936d Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 12 Jan 2023 23:34:59 -0500 Subject: [PATCH 106/767] libgloss: merge csky into top-level Makefile Avoid a recursive make to speed things up a bit. A csky-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 499 +++++++++++++++++++++++++++++++++---- libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/csky/Makefile.in | 125 ---------- libgloss/csky/Makefile.inc | 36 +++ 6 files changed, 506 insertions(+), 181 deletions(-) delete mode 100644 libgloss/csky/Makefile.in create mode 100644 libgloss/csky/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index daff91fdfc..4309cd3a4b 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -75,6 +75,9 @@ endif if CONFIG_BFIN include bfin/Makefile.inc endif +if CONFIG_CSKY +include csky/Makefile.inc +endif if CONFIG_D30V include d30v/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index c18119c262..a117577ea8 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -156,33 +156,40 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_16 = $(wildcard $(srcdir)/bfin/include/*.h) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_17 = $(wildcard $(srcdir)/bfin/include/sys/*.h) -@CONFIG_D30V_TRUE@am__append_18 = d30v/libsim.a -@CONFIG_D30V_TRUE@am__append_19 = \ +@CONFIG_CSKY_TRUE@am__append_18 = \ +@CONFIG_CSKY_TRUE@ csky/crt0.o + +@CONFIG_CSKY_TRUE@am__append_19 = \ +@CONFIG_CSKY_TRUE@ csky/crt0.S + +@CONFIG_CSKY_TRUE@am__append_20 = csky/libsemi.a +@CONFIG_D30V_TRUE@am__append_21 = d30v/libsim.a +@CONFIG_D30V_TRUE@am__append_22 = \ @CONFIG_D30V_TRUE@ d30v/crt0.o -@CONFIG_IQ2000_TRUE@am__append_20 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_21 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_22 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_23 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_24 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_25 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_26 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_27 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_28 = lm32/crt0.S -@CONFIG_NIOS2_TRUE@am__append_29 = \ +@CONFIG_IQ2000_TRUE@am__append_23 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_24 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_25 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_26 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_27 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_28 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_29 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_30 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_31 = lm32/crt0.S +@CONFIG_NIOS2_TRUE@am__append_32 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_30 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_31 = \ +@CONFIG_NIOS2_TRUE@am__append_33 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_34 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_32 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_35 = riscv/libgloss.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_33 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_34 = wince/stub.exe +@CONFIG_WINCE_TRUE@am__append_36 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_37 = wince/stub.exe subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -205,17 +212,16 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = csky/Makefile epiphany/Makefile i386/Makefile \ - m32r/Makefile m68hc11/Makefile nds32/Makefile m68k/Makefile \ - pa/Makefile i960/Makefile sparc_leon/Makefile sparc/Makefile \ - mips/Makefile rs6000/Makefile mn10200/Makefile \ - mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ - fr30/Makefile frv/Makefile ft32/Makefile mcore/Makefile \ - mep/Makefile moxie/Makefile microblaze/Makefile mt/Makefile \ - v850/Makefile visium/Makefile xc16x/Makefile \ - xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ - rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ - pru/Makefile +CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ + m68hc11/Makefile nds32/Makefile m68k/Makefile pa/Makefile \ + i960/Makefile sparc_leon/Makefile sparc/Makefile mips/Makefile \ + rs6000/Makefile mn10200/Makefile mn10300/Makefile \ + cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ + frv/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ + moxie/Makefile microblaze/Makefile mt/Makefile v850/Makefile \ + visium/Makefile xc16x/Makefile xstormy16/Makefile \ + m32c/Makefile msp430/Makefile rl78/Makefile rx/Makefile \ + spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -320,6 +326,31 @@ bfin_libsim_a_LIBADD = @CONFIG_BFIN_TRUE@am_bfin_libsim_a_OBJECTS = bfin/bfin_libsim_a-clear_cache_range.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/bfin_libsim_a-syscalls.$(OBJEXT) bfin_libsim_a_OBJECTS = $(am_bfin_libsim_a_OBJECTS) +csky_libsemi_a_AR = $(AR) $(ARFLAGS) +csky_libsemi_a_LIBADD = +@CONFIG_CSKY_TRUE@am_csky_libsemi_a_OBJECTS = \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-semi.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-sbrk.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-gdb.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-exit.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-close.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-fstat.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-gettimeofday.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-lseek.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-read.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-system.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-unlink.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-exit.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-gdb.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-isatty.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-open.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-rename.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-stat.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-time.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-io-write.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-kill.$(OBJEXT) \ +@CONFIG_CSKY_TRUE@ csky/csky_libsemi_a-getpid.$(OBJEXT) +csky_libsemi_a_OBJECTS = $(am_csky_libsemi_a_OBJECTS) d30v_libsim_a_AR = $(AR) $(ARFLAGS) d30v_libsim_a_LIBADD = @CONFIG_D30V_TRUE@am_d30v_libsim_a_OBJECTS = isatty.$(OBJEXT) \ @@ -384,10 +415,11 @@ libobjs_a_AR = $(AR) $(ARFLAGS) libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_4 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_5 = lm32/crt0.$(OBJEXT) +@CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_5 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_6 = lm32/crt0.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ - $(am__objects_5) + $(am__objects_5) $(am__objects_6) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -538,11 +570,12 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ - $(d30v_libsim_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ - $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - bfin/sim-test.c iq2000/test.c $(wince_stub_exe_SOURCES) + $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ + $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ + $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ + $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) bfin/sim-test.c iq2000/test.c \ + $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -629,7 +662,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_33) +VPATH = @srcdir@ $(am__append_36) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -763,12 +796,13 @@ tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ - $(am__append_19) $(am__append_20) $(am__append_24) \ - $(am__append_26) $(am__append_29) $(am__append_31) + $(am__append_18) $(am__append_22) $(am__append_23) \ + $(am__append_27) $(am__append_29) $(am__append_32) \ + $(am__append_34) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ - $(am__append_9) $(am__append_11) $(am__append_18) \ - $(am__append_21) $(am__append_25) $(am__append_27) \ - $(am__append_30) $(am__append_32) + $(am__append_9) $(am__append_11) $(am__append_20) \ + $(am__append_21) $(am__append_24) $(am__append_28) \ + $(am__append_30) $(am__append_33) $(am__append_35) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -778,7 +812,8 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_14) $(am__append_22) $(am__append_28) +libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ + $(am__append_31) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -888,6 +923,34 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_BFIN_TRUE@ $(AM_CPPFLAGS) \ @CONFIG_BFIN_TRUE@ $(bfin_CPPFLAGS) +@CONFIG_CSKY_TRUE@csky_libsemi_a_SOURCES = \ +@CONFIG_CSKY_TRUE@ csky/io-semi.S \ +@CONFIG_CSKY_TRUE@ csky/sbrk.c \ +@CONFIG_CSKY_TRUE@ csky/io-gdb.c \ +@CONFIG_CSKY_TRUE@ csky/io-exit.c \ +@CONFIG_CSKY_TRUE@ csky/io-close.c \ +@CONFIG_CSKY_TRUE@ csky/io-fstat.c \ +@CONFIG_CSKY_TRUE@ csky/io-gettimeofday.c \ +@CONFIG_CSKY_TRUE@ csky/io-lseek.c \ +@CONFIG_CSKY_TRUE@ csky/io-read.c \ +@CONFIG_CSKY_TRUE@ csky/io-system.c \ +@CONFIG_CSKY_TRUE@ csky/io-unlink.c \ +@CONFIG_CSKY_TRUE@ csky/io-exit.c \ +@CONFIG_CSKY_TRUE@ csky/io-gdb.c \ +@CONFIG_CSKY_TRUE@ csky/io-isatty.c \ +@CONFIG_CSKY_TRUE@ csky/io-open.c \ +@CONFIG_CSKY_TRUE@ csky/io-rename.c \ +@CONFIG_CSKY_TRUE@ csky/io-stat.c \ +@CONFIG_CSKY_TRUE@ csky/io-time.c \ +@CONFIG_CSKY_TRUE@ csky/io-write.c \ +@CONFIG_CSKY_TRUE@ csky/kill.c \ +@CONFIG_CSKY_TRUE@ csky/getpid.c + +@CONFIG_CSKY_TRUE@csky_libsemi_a_CPPFLAGS = \ +@CONFIG_CSKY_TRUE@ $(AM_CPPFLAGS) \ +@CONFIG_CSKY_TRUE@ -nostdlib \ +@CONFIG_CSKY_TRUE@ -DHOSTED=1 + @CONFIG_D30V_TRUE@d30v_libsim_a_SOURCES = \ @CONFIG_D30V_TRUE@ isatty.c \ @CONFIG_D30V_TRUE@ print.c \ @@ -1036,7 +1099,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1058,7 +1121,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1083,8 +1146,6 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) distclean-hdr: -rm -f config.h stamp-h1 -csky/Makefile: $(top_builddir)/config.status $(top_srcdir)/csky/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ epiphany/Makefile: $(top_builddir)/config.status $(top_srcdir)/epiphany/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ i386/Makefile: $(top_builddir)/config.status $(top_srcdir)/i386/Makefile.in @@ -1327,6 +1388,55 @@ bfin/libsim.a: $(bfin_libsim_a_OBJECTS) $(bfin_libsim_a_DEPENDENCIES) $(EXTRA_bf $(AM_V_at)-rm -f bfin/libsim.a $(AM_V_AR)$(bfin_libsim_a_AR) bfin/libsim.a $(bfin_libsim_a_OBJECTS) $(bfin_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) bfin/libsim.a +csky/$(am__dirstamp): + @$(MKDIR_P) csky + @: > csky/$(am__dirstamp) +csky/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) csky/$(DEPDIR) + @: > csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-semi.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-sbrk.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-gdb.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-exit.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-close.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-fstat.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-gettimeofday.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-lseek.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-read.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-system.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-unlink.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-isatty.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-open.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-rename.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-stat.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-time.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-io-write.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-kill.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) +csky/csky_libsemi_a-getpid.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) + +csky/libsemi.a: $(csky_libsemi_a_OBJECTS) $(csky_libsemi_a_DEPENDENCIES) $(EXTRA_csky_libsemi_a_DEPENDENCIES) csky/$(am__dirstamp) + $(AM_V_at)-rm -f csky/libsemi.a + $(AM_V_AR)$(csky_libsemi_a_AR) csky/libsemi.a $(csky_libsemi_a_OBJECTS) $(csky_libsemi_a_LIBADD) + $(AM_V_at)$(RANLIB) csky/libsemi.a d30v/$(am__dirstamp): @$(MKDIR_P) d30v @: > d30v/$(am__dirstamp) @@ -1458,6 +1568,8 @@ bfin/crt0.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) +csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ + csky/$(DEPDIR)/$(am__dirstamp) iq2000/crt0.$(OBJEXT): iq2000/$(am__dirstamp) \ iq2000/$(DEPDIR)/$(am__dirstamp) lm32/$(am__dirstamp): @@ -1736,6 +1848,7 @@ mostlyclean-compile: -rm -f arc/*.$(OBJEXT) -rm -f arm/*.$(OBJEXT) -rm -f bfin/*.$(OBJEXT) + -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) @@ -1791,6 +1904,26 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libsim_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/sim-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-rename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-semi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-sbrk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/inbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/outbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/syscalls.Po@am__quote@ @@ -1966,6 +2099,20 @@ arm/arm_librdimon_a-trap.obj: arm/trap.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o arm/arm_librdimon_a-trap.obj `if test -f 'arm/trap.S'; then $(CYGPATH_W) 'arm/trap.S'; else $(CYGPATH_W) '$(srcdir)/arm/trap.S'; fi` +csky/csky_libsemi_a-io-semi.o: csky/io-semi.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT csky/csky_libsemi_a-io-semi.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-semi.Tpo -c -o csky/csky_libsemi_a-io-semi.o `test -f 'csky/io-semi.S' || echo '$(srcdir)/'`csky/io-semi.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-semi.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-semi.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='csky/io-semi.S' object='csky/csky_libsemi_a-io-semi.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o csky/csky_libsemi_a-io-semi.o `test -f 'csky/io-semi.S' || echo '$(srcdir)/'`csky/io-semi.S + +csky/csky_libsemi_a-io-semi.obj: csky/io-semi.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT csky/csky_libsemi_a-io-semi.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-semi.Tpo -c -o csky/csky_libsemi_a-io-semi.obj `if test -f 'csky/io-semi.S'; then $(CYGPATH_W) 'csky/io-semi.S'; else $(CYGPATH_W) '$(srcdir)/csky/io-semi.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-semi.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-semi.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='csky/io-semi.S' object='csky/csky_libsemi_a-io-semi.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o csky/csky_libsemi_a-io-semi.obj `if test -f 'csky/io-semi.S'; then $(CYGPATH_W) 'csky/io-semi.S'; else $(CYGPATH_W) '$(srcdir)/csky/io-semi.S'; fi` + nios2/nios2_libnios2_a-crt0.o: nios2/crt0.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT nios2/nios2_libnios2_a-crt0.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Tpo -c -o nios2/nios2_libnios2_a-crt0.o `test -f 'nios2/crt0.S' || echo '$(srcdir)/'`nios2/crt0.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po @@ -2318,6 +2465,258 @@ bfin/bfin_libsim_a-syscalls.obj: bfin/syscalls.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bfin_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o bfin/bfin_libsim_a-syscalls.obj `if test -f 'bfin/syscalls.c'; then $(CYGPATH_W) 'bfin/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/bfin/syscalls.c'; fi` +csky/csky_libsemi_a-sbrk.o: csky/sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-sbrk.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-sbrk.Tpo -c -o csky/csky_libsemi_a-sbrk.o `test -f 'csky/sbrk.c' || echo '$(srcdir)/'`csky/sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-sbrk.Tpo csky/$(DEPDIR)/csky_libsemi_a-sbrk.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/sbrk.c' object='csky/csky_libsemi_a-sbrk.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-sbrk.o `test -f 'csky/sbrk.c' || echo '$(srcdir)/'`csky/sbrk.c + +csky/csky_libsemi_a-sbrk.obj: csky/sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-sbrk.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-sbrk.Tpo -c -o csky/csky_libsemi_a-sbrk.obj `if test -f 'csky/sbrk.c'; then $(CYGPATH_W) 'csky/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/csky/sbrk.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-sbrk.Tpo csky/$(DEPDIR)/csky_libsemi_a-sbrk.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/sbrk.c' object='csky/csky_libsemi_a-sbrk.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-sbrk.obj `if test -f 'csky/sbrk.c'; then $(CYGPATH_W) 'csky/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/csky/sbrk.c'; fi` + +csky/csky_libsemi_a-io-gdb.o: csky/io-gdb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-gdb.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Tpo -c -o csky/csky_libsemi_a-io-gdb.o `test -f 'csky/io-gdb.c' || echo '$(srcdir)/'`csky/io-gdb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-gdb.c' object='csky/csky_libsemi_a-io-gdb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-gdb.o `test -f 'csky/io-gdb.c' || echo '$(srcdir)/'`csky/io-gdb.c + +csky/csky_libsemi_a-io-gdb.obj: csky/io-gdb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-gdb.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Tpo -c -o csky/csky_libsemi_a-io-gdb.obj `if test -f 'csky/io-gdb.c'; then $(CYGPATH_W) 'csky/io-gdb.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-gdb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-gdb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-gdb.c' object='csky/csky_libsemi_a-io-gdb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-gdb.obj `if test -f 'csky/io-gdb.c'; then $(CYGPATH_W) 'csky/io-gdb.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-gdb.c'; fi` + +csky/csky_libsemi_a-io-exit.o: csky/io-exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-exit.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-exit.Tpo -c -o csky/csky_libsemi_a-io-exit.o `test -f 'csky/io-exit.c' || echo '$(srcdir)/'`csky/io-exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-exit.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-exit.c' object='csky/csky_libsemi_a-io-exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-exit.o `test -f 'csky/io-exit.c' || echo '$(srcdir)/'`csky/io-exit.c + +csky/csky_libsemi_a-io-exit.obj: csky/io-exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-exit.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-exit.Tpo -c -o csky/csky_libsemi_a-io-exit.obj `if test -f 'csky/io-exit.c'; then $(CYGPATH_W) 'csky/io-exit.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-exit.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-exit.c' object='csky/csky_libsemi_a-io-exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-exit.obj `if test -f 'csky/io-exit.c'; then $(CYGPATH_W) 'csky/io-exit.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-exit.c'; fi` + +csky/csky_libsemi_a-io-close.o: csky/io-close.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-close.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-close.Tpo -c -o csky/csky_libsemi_a-io-close.o `test -f 'csky/io-close.c' || echo '$(srcdir)/'`csky/io-close.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-close.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-close.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-close.c' object='csky/csky_libsemi_a-io-close.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-close.o `test -f 'csky/io-close.c' || echo '$(srcdir)/'`csky/io-close.c + +csky/csky_libsemi_a-io-close.obj: csky/io-close.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-close.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-close.Tpo -c -o csky/csky_libsemi_a-io-close.obj `if test -f 'csky/io-close.c'; then $(CYGPATH_W) 'csky/io-close.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-close.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-close.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-close.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-close.c' object='csky/csky_libsemi_a-io-close.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-close.obj `if test -f 'csky/io-close.c'; then $(CYGPATH_W) 'csky/io-close.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-close.c'; fi` + +csky/csky_libsemi_a-io-fstat.o: csky/io-fstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-fstat.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Tpo -c -o csky/csky_libsemi_a-io-fstat.o `test -f 'csky/io-fstat.c' || echo '$(srcdir)/'`csky/io-fstat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-fstat.c' object='csky/csky_libsemi_a-io-fstat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-fstat.o `test -f 'csky/io-fstat.c' || echo '$(srcdir)/'`csky/io-fstat.c + +csky/csky_libsemi_a-io-fstat.obj: csky/io-fstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-fstat.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Tpo -c -o csky/csky_libsemi_a-io-fstat.obj `if test -f 'csky/io-fstat.c'; then $(CYGPATH_W) 'csky/io-fstat.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-fstat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-fstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-fstat.c' object='csky/csky_libsemi_a-io-fstat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-fstat.obj `if test -f 'csky/io-fstat.c'; then $(CYGPATH_W) 'csky/io-fstat.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-fstat.c'; fi` + +csky/csky_libsemi_a-io-gettimeofday.o: csky/io-gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-gettimeofday.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Tpo -c -o csky/csky_libsemi_a-io-gettimeofday.o `test -f 'csky/io-gettimeofday.c' || echo '$(srcdir)/'`csky/io-gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-gettimeofday.c' object='csky/csky_libsemi_a-io-gettimeofday.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-gettimeofday.o `test -f 'csky/io-gettimeofday.c' || echo '$(srcdir)/'`csky/io-gettimeofday.c + +csky/csky_libsemi_a-io-gettimeofday.obj: csky/io-gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-gettimeofday.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Tpo -c -o csky/csky_libsemi_a-io-gettimeofday.obj `if test -f 'csky/io-gettimeofday.c'; then $(CYGPATH_W) 'csky/io-gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-gettimeofday.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-gettimeofday.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-gettimeofday.c' object='csky/csky_libsemi_a-io-gettimeofday.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-gettimeofday.obj `if test -f 'csky/io-gettimeofday.c'; then $(CYGPATH_W) 'csky/io-gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-gettimeofday.c'; fi` + +csky/csky_libsemi_a-io-lseek.o: csky/io-lseek.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-lseek.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Tpo -c -o csky/csky_libsemi_a-io-lseek.o `test -f 'csky/io-lseek.c' || echo '$(srcdir)/'`csky/io-lseek.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-lseek.c' object='csky/csky_libsemi_a-io-lseek.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-lseek.o `test -f 'csky/io-lseek.c' || echo '$(srcdir)/'`csky/io-lseek.c + +csky/csky_libsemi_a-io-lseek.obj: csky/io-lseek.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-lseek.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Tpo -c -o csky/csky_libsemi_a-io-lseek.obj `if test -f 'csky/io-lseek.c'; then $(CYGPATH_W) 'csky/io-lseek.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-lseek.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-lseek.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-lseek.c' object='csky/csky_libsemi_a-io-lseek.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-lseek.obj `if test -f 'csky/io-lseek.c'; then $(CYGPATH_W) 'csky/io-lseek.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-lseek.c'; fi` + +csky/csky_libsemi_a-io-read.o: csky/io-read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-read.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-read.Tpo -c -o csky/csky_libsemi_a-io-read.o `test -f 'csky/io-read.c' || echo '$(srcdir)/'`csky/io-read.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-read.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-read.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-read.c' object='csky/csky_libsemi_a-io-read.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-read.o `test -f 'csky/io-read.c' || echo '$(srcdir)/'`csky/io-read.c + +csky/csky_libsemi_a-io-read.obj: csky/io-read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-read.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-read.Tpo -c -o csky/csky_libsemi_a-io-read.obj `if test -f 'csky/io-read.c'; then $(CYGPATH_W) 'csky/io-read.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-read.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-read.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-read.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-read.c' object='csky/csky_libsemi_a-io-read.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-read.obj `if test -f 'csky/io-read.c'; then $(CYGPATH_W) 'csky/io-read.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-read.c'; fi` + +csky/csky_libsemi_a-io-system.o: csky/io-system.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-system.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-system.Tpo -c -o csky/csky_libsemi_a-io-system.o `test -f 'csky/io-system.c' || echo '$(srcdir)/'`csky/io-system.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-system.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-system.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-system.c' object='csky/csky_libsemi_a-io-system.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-system.o `test -f 'csky/io-system.c' || echo '$(srcdir)/'`csky/io-system.c + +csky/csky_libsemi_a-io-system.obj: csky/io-system.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-system.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-system.Tpo -c -o csky/csky_libsemi_a-io-system.obj `if test -f 'csky/io-system.c'; then $(CYGPATH_W) 'csky/io-system.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-system.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-system.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-system.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-system.c' object='csky/csky_libsemi_a-io-system.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-system.obj `if test -f 'csky/io-system.c'; then $(CYGPATH_W) 'csky/io-system.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-system.c'; fi` + +csky/csky_libsemi_a-io-unlink.o: csky/io-unlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-unlink.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Tpo -c -o csky/csky_libsemi_a-io-unlink.o `test -f 'csky/io-unlink.c' || echo '$(srcdir)/'`csky/io-unlink.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-unlink.c' object='csky/csky_libsemi_a-io-unlink.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-unlink.o `test -f 'csky/io-unlink.c' || echo '$(srcdir)/'`csky/io-unlink.c + +csky/csky_libsemi_a-io-unlink.obj: csky/io-unlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-unlink.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Tpo -c -o csky/csky_libsemi_a-io-unlink.obj `if test -f 'csky/io-unlink.c'; then $(CYGPATH_W) 'csky/io-unlink.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-unlink.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-unlink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-unlink.c' object='csky/csky_libsemi_a-io-unlink.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-unlink.obj `if test -f 'csky/io-unlink.c'; then $(CYGPATH_W) 'csky/io-unlink.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-unlink.c'; fi` + +csky/csky_libsemi_a-io-isatty.o: csky/io-isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-isatty.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Tpo -c -o csky/csky_libsemi_a-io-isatty.o `test -f 'csky/io-isatty.c' || echo '$(srcdir)/'`csky/io-isatty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-isatty.c' object='csky/csky_libsemi_a-io-isatty.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-isatty.o `test -f 'csky/io-isatty.c' || echo '$(srcdir)/'`csky/io-isatty.c + +csky/csky_libsemi_a-io-isatty.obj: csky/io-isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-isatty.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Tpo -c -o csky/csky_libsemi_a-io-isatty.obj `if test -f 'csky/io-isatty.c'; then $(CYGPATH_W) 'csky/io-isatty.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-isatty.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-isatty.c' object='csky/csky_libsemi_a-io-isatty.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-isatty.obj `if test -f 'csky/io-isatty.c'; then $(CYGPATH_W) 'csky/io-isatty.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-isatty.c'; fi` + +csky/csky_libsemi_a-io-open.o: csky/io-open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-open.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-open.Tpo -c -o csky/csky_libsemi_a-io-open.o `test -f 'csky/io-open.c' || echo '$(srcdir)/'`csky/io-open.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-open.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-open.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-open.c' object='csky/csky_libsemi_a-io-open.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-open.o `test -f 'csky/io-open.c' || echo '$(srcdir)/'`csky/io-open.c + +csky/csky_libsemi_a-io-open.obj: csky/io-open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-open.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-open.Tpo -c -o csky/csky_libsemi_a-io-open.obj `if test -f 'csky/io-open.c'; then $(CYGPATH_W) 'csky/io-open.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-open.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-open.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-open.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-open.c' object='csky/csky_libsemi_a-io-open.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-open.obj `if test -f 'csky/io-open.c'; then $(CYGPATH_W) 'csky/io-open.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-open.c'; fi` + +csky/csky_libsemi_a-io-rename.o: csky/io-rename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-rename.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-rename.Tpo -c -o csky/csky_libsemi_a-io-rename.o `test -f 'csky/io-rename.c' || echo '$(srcdir)/'`csky/io-rename.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-rename.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-rename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-rename.c' object='csky/csky_libsemi_a-io-rename.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-rename.o `test -f 'csky/io-rename.c' || echo '$(srcdir)/'`csky/io-rename.c + +csky/csky_libsemi_a-io-rename.obj: csky/io-rename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-rename.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-rename.Tpo -c -o csky/csky_libsemi_a-io-rename.obj `if test -f 'csky/io-rename.c'; then $(CYGPATH_W) 'csky/io-rename.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-rename.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-rename.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-rename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-rename.c' object='csky/csky_libsemi_a-io-rename.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-rename.obj `if test -f 'csky/io-rename.c'; then $(CYGPATH_W) 'csky/io-rename.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-rename.c'; fi` + +csky/csky_libsemi_a-io-stat.o: csky/io-stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-stat.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-stat.Tpo -c -o csky/csky_libsemi_a-io-stat.o `test -f 'csky/io-stat.c' || echo '$(srcdir)/'`csky/io-stat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-stat.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-stat.c' object='csky/csky_libsemi_a-io-stat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-stat.o `test -f 'csky/io-stat.c' || echo '$(srcdir)/'`csky/io-stat.c + +csky/csky_libsemi_a-io-stat.obj: csky/io-stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-stat.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-stat.Tpo -c -o csky/csky_libsemi_a-io-stat.obj `if test -f 'csky/io-stat.c'; then $(CYGPATH_W) 'csky/io-stat.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-stat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-stat.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-stat.c' object='csky/csky_libsemi_a-io-stat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-stat.obj `if test -f 'csky/io-stat.c'; then $(CYGPATH_W) 'csky/io-stat.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-stat.c'; fi` + +csky/csky_libsemi_a-io-time.o: csky/io-time.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-time.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-time.Tpo -c -o csky/csky_libsemi_a-io-time.o `test -f 'csky/io-time.c' || echo '$(srcdir)/'`csky/io-time.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-time.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-time.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-time.c' object='csky/csky_libsemi_a-io-time.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-time.o `test -f 'csky/io-time.c' || echo '$(srcdir)/'`csky/io-time.c + +csky/csky_libsemi_a-io-time.obj: csky/io-time.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-time.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-time.Tpo -c -o csky/csky_libsemi_a-io-time.obj `if test -f 'csky/io-time.c'; then $(CYGPATH_W) 'csky/io-time.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-time.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-time.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-time.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-time.c' object='csky/csky_libsemi_a-io-time.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-time.obj `if test -f 'csky/io-time.c'; then $(CYGPATH_W) 'csky/io-time.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-time.c'; fi` + +csky/csky_libsemi_a-io-write.o: csky/io-write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-write.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-write.Tpo -c -o csky/csky_libsemi_a-io-write.o `test -f 'csky/io-write.c' || echo '$(srcdir)/'`csky/io-write.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-write.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-write.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-write.c' object='csky/csky_libsemi_a-io-write.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-write.o `test -f 'csky/io-write.c' || echo '$(srcdir)/'`csky/io-write.c + +csky/csky_libsemi_a-io-write.obj: csky/io-write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-io-write.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-io-write.Tpo -c -o csky/csky_libsemi_a-io-write.obj `if test -f 'csky/io-write.c'; then $(CYGPATH_W) 'csky/io-write.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-write.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-io-write.Tpo csky/$(DEPDIR)/csky_libsemi_a-io-write.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/io-write.c' object='csky/csky_libsemi_a-io-write.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-io-write.obj `if test -f 'csky/io-write.c'; then $(CYGPATH_W) 'csky/io-write.c'; else $(CYGPATH_W) '$(srcdir)/csky/io-write.c'; fi` + +csky/csky_libsemi_a-kill.o: csky/kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-kill.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-kill.Tpo -c -o csky/csky_libsemi_a-kill.o `test -f 'csky/kill.c' || echo '$(srcdir)/'`csky/kill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-kill.Tpo csky/$(DEPDIR)/csky_libsemi_a-kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/kill.c' object='csky/csky_libsemi_a-kill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-kill.o `test -f 'csky/kill.c' || echo '$(srcdir)/'`csky/kill.c + +csky/csky_libsemi_a-kill.obj: csky/kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-kill.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-kill.Tpo -c -o csky/csky_libsemi_a-kill.obj `if test -f 'csky/kill.c'; then $(CYGPATH_W) 'csky/kill.c'; else $(CYGPATH_W) '$(srcdir)/csky/kill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-kill.Tpo csky/$(DEPDIR)/csky_libsemi_a-kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/kill.c' object='csky/csky_libsemi_a-kill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-kill.obj `if test -f 'csky/kill.c'; then $(CYGPATH_W) 'csky/kill.c'; else $(CYGPATH_W) '$(srcdir)/csky/kill.c'; fi` + +csky/csky_libsemi_a-getpid.o: csky/getpid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-getpid.o -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-getpid.Tpo -c -o csky/csky_libsemi_a-getpid.o `test -f 'csky/getpid.c' || echo '$(srcdir)/'`csky/getpid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-getpid.Tpo csky/$(DEPDIR)/csky_libsemi_a-getpid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/getpid.c' object='csky/csky_libsemi_a-getpid.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.o `test -f 'csky/getpid.c' || echo '$(srcdir)/'`csky/getpid.c + +csky/csky_libsemi_a-getpid.obj: csky/getpid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT csky/csky_libsemi_a-getpid.obj -MD -MP -MF csky/$(DEPDIR)/csky_libsemi_a-getpid.Tpo -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) csky/$(DEPDIR)/csky_libsemi_a-getpid.Tpo csky/$(DEPDIR)/csky_libsemi_a-getpid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csky/getpid.c' object='csky/csky_libsemi_a-getpid.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi` + nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po @@ -3812,6 +4211,8 @@ distclean-generic: -rm -f arm/$(am__dirstamp) -rm -f bfin/$(DEPDIR)/$(am__dirstamp) -rm -f bfin/$(am__dirstamp) + -rm -f csky/$(DEPDIR)/$(am__dirstamp) + -rm -f csky/$(am__dirstamp) -rm -f d30v/$(DEPDIR)/$(am__dirstamp) -rm -f d30v/$(am__dirstamp) -rm -f doc/$(am__dirstamp) @@ -3838,7 +4239,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -3981,7 +4382,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 6d4969b882..28754b6d5a 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -644,6 +644,8 @@ CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE CONFIG_D30V_FALSE CONFIG_D30V_TRUE +CONFIG_CSKY_FALSE +CONFIG_CSKY_TRUE CONFIG_BFIN_FALSE CONFIG_BFIN_TRUE CONFIG_ARM_FALSE @@ -2755,9 +2757,7 @@ case "${target}" in config_arc=true ;; csky*-*-*) - ac_config_files="$ac_config_files csky/Makefile" - - subdirs="$subdirs csky" + config_csky=true ;; epiphany-*-*) ac_config_files="$ac_config_files epiphany/Makefile" @@ -3015,6 +3015,14 @@ else CONFIG_BFIN_FALSE= fi + if test x$config_csky = xtrue; then + CONFIG_CSKY_TRUE= + CONFIG_CSKY_FALSE='#' +else + CONFIG_CSKY_TRUE='#' + CONFIG_CSKY_FALSE= +fi + if test x$config_d30v = xtrue; then CONFIG_D30V_TRUE= CONFIG_D30V_FALSE='#' @@ -5307,6 +5315,10 @@ if test -z "${CONFIG_BFIN_TRUE}" && test -z "${CONFIG_BFIN_FALSE}"; then as_fn_error $? "conditional \"CONFIG_BFIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_CSKY_TRUE}" && test -z "${CONFIG_CSKY_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_CSKY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_D30V_TRUE}" && test -z "${CONFIG_D30V_FALSE}"; then as_fn_error $? "conditional \"CONFIG_D30V\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5955,7 +5967,6 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "csky/Makefile") CONFIG_FILES="$CONFIG_FILES csky/Makefile" ;; "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; "i386/Makefile") CONFIG_FILES="$CONFIG_FILES i386/Makefile" ;; "m32r/Makefile") CONFIG_FILES="$CONFIG_FILES m32r/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index d636cf6d2a..5fb26845c2 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -55,8 +55,7 @@ case "${target}" in config_arc=true ;; csky*-*-*) - AC_CONFIG_FILES([csky/Makefile]) - subdirs="$subdirs csky" + config_csky=true ;; epiphany-*-*) AC_CONFIG_FILES([epiphany/Makefile]) @@ -248,7 +247,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin d30v iq2000 libnosys lm32 nios2 riscv wince + aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 nios2 riscv wince ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/csky/Makefile.in b/libgloss/csky/Makefile.in deleted file mode 100644 index ebf7ef2cd4..0000000000 --- a/libgloss/csky/Makefile.in +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright (c) 1995, 1996, 2001 Cygnus Support -*- mode:makefile -*- -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. -# -# csky semihosting support. -# - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = qv - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0=crt0.S - -# -# here's all the hosted stuff -# -HOSTED_BSP= libsemi.a -HOSTED_SRS= io-semi.S -HOSTED_SRC= sbrk.c io-gdb.c io-exit.c io-close.c io-fstat.c io-gettimeofday.c \ - io-lseek.c io-read.c io-system.c io-unlink.c io-exit.c \ - io-gdb.c io-isatty.c io-open.c io-rename.c io-stat.c \ - io-time.c io-write.c kill.o getpid.o -HOSTED_OBJS= $(patsubst %.c,%.o,$(HOSTED_SRC)) - -INCLUDES+= -I/home/xialf/workspace/newlib-2.5.0.20171222/newlib/libc/include - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all :: $(HOSTED_BSP) - -# -# here's where we build the board support packages for each target -# - -# build hosted library -$(HOSTED_OBJS) : %.o : %.c - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -nostdlib -DHOSTED=1 $(INCLUDES) -c $< -o $@ -$(HOSTED_SRS:%.S=%.o): %.o : %.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -nostdlib -DHOSTED=1 $(INCLUDES) -c $< -o $@ - -$(HOSTED_BSP): $(HOSTED_OBJS) $(HOSTED_SRS:%.S=%.o) - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -crt0.o: $(CRT0) - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -c $< -o $@ - -.PHONY: install info dvi doc install-info clean-info -install:: install_hosted crt0.o - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_PROGRAM) crt0.o $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(crt0.o) - -.PHONY:install_hosted -install_hosted:: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_PROGRAM) $(HOSTED_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(HOSTED_BSP) - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -clean mostlyclean: - rm -f a.out core *.i *~ *.a *.o *-test *.srec *.dis *.x *.map - -distclean maintainer-clean realclean: clean - rm -f Makefile - -info dvi doc: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/csky/Makefile.inc b/libgloss/csky/Makefile.inc new file mode 100644 index 0000000000..7f38d659cb --- /dev/null +++ b/libgloss/csky/Makefile.inc @@ -0,0 +1,36 @@ +## csky semihosting support. + +multilibtool_DATA += \ + %D%/crt0.o +libobjs_a_SOURCES += \ + %D%/crt0.S + +## Here's all the hosted stuff. + +multilibtool_LIBRARIES += %D%/libsemi.a +%C%_libsemi_a_SOURCES = \ + %D%/io-semi.S \ + %D%/sbrk.c \ + %D%/io-gdb.c \ + %D%/io-exit.c \ + %D%/io-close.c \ + %D%/io-fstat.c \ + %D%/io-gettimeofday.c \ + %D%/io-lseek.c \ + %D%/io-read.c \ + %D%/io-system.c \ + %D%/io-unlink.c \ + %D%/io-exit.c \ + %D%/io-gdb.c \ + %D%/io-isatty.c \ + %D%/io-open.c \ + %D%/io-rename.c \ + %D%/io-stat.c \ + %D%/io-time.c \ + %D%/io-write.c \ + %D%/kill.c \ + %D%/getpid.c +%C%_libsemi_a_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -nostdlib \ + -DHOSTED=1 From 73e4ded2fe17b3a970c94a421c4b2191ca49a194 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 12 Jan 2023 23:36:07 -0500 Subject: [PATCH 107/767] libgloss: csky: fix pointer-to-integer warning parameters is an array of integers, so assigning NULL (a pointer) doesn't make sense. Use 0 instead which produces the same code. --- libgloss/csky/io-gettimeofday.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libgloss/csky/io-gettimeofday.c b/libgloss/csky/io-gettimeofday.c index 77f446fb80..59b1abb832 100644 --- a/libgloss/csky/io-gettimeofday.c +++ b/libgloss/csky/io-gettimeofday.c @@ -43,7 +43,7 @@ int gettimeofday (struct timeval *tv, void *tzvp) return -1; } parameters[0] = (uint32_t) >v; - parameters[1] = NULL; + parameters[1] = 0; ret = __hosted (HOSTED_GETTIMEOFDAY, parameters); __hosted_from_gdb_timeval (>v, tv); errno = __hosted_from_gdb_errno (parameters[0]); From 8bd56ec8734539ba014c9ed993c3c9e19173ed82 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 14 Jan 2023 17:46:55 +0100 Subject: [PATCH 108/767] Cygwin: newgrp: first full version - add '-' option - make group argument optional - drop ability to take a numerical group argument - simplify usage output to bare minimum - Add manpage and documentation Signed-off-by: Corinna Vinschen --- winsup/doc/utils.xml | 50 ++++++++++ winsup/utils/Makefile.am | 1 + winsup/utils/newgrp.c | 200 +++++++++++++++++++++++++++++++-------- 3 files changed, 212 insertions(+), 39 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 8959880379..927dc7c6b8 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -1939,6 +1939,56 @@ D: on /d type fat (binary,user,noumount) + + + newgrp + 1 + Cygwin Utilities + + + + newgrp + change primary group for a command + + + + + newgrp + - + group + command + args + + + + + + Description + newgrp changes the primary group for a + command. + + If the '-' flag is given as first argument, the user's environment + will be reinitialized as though the user had logged in, otherwise the + current environment, including current working directory, remains + unchanged. + + newgrp changes the current primary group to the + named group, or to the default group listed in /etc/passwd if no group + name is given. + + By default, the user's standard shell is started, called as login + shell if the '-' flag has been specified. If a group has been given + as argument, a command and its arguments can be specified on the + command line. + + Please note that setting the primary group to any arbitrary group + is no privileged operation on Windows. However, if this group is not + in your current user token, or if the group is in your user token but + marked as deny-only, no additional permissions can + be obtained by setting this group as primary group. + + + passwd diff --git a/winsup/utils/Makefile.am b/winsup/utils/Makefile.am index 75da1163b6..d4d56386f7 100644 --- a/winsup/utils/Makefile.am +++ b/winsup/utils/Makefile.am @@ -87,6 +87,7 @@ pldd_LDADD = $(LDADD) -lpsapi profiler_CXXFLAGS = -I$(srcdir) -idirafter ${top_srcdir}/cygwin/local_includes -idirafter ${top_srcdir}/cygwin/include $(AM_CXXFLAGS) profiler_LDADD = $(LDADD) -lntdll cygps_LDADD = $(LDADD) -lpsapi -lntdll +newgrp_LDADD = $(LDADD) -luserenv if CROSS_BOOTSTRAP SUBDIRS = mingw diff --git a/winsup/utils/newgrp.c b/winsup/utils/newgrp.c index 012c3188f4..88586352e1 100644 --- a/winsup/utils/newgrp.c +++ b/winsup/utils/newgrp.c @@ -6,86 +6,204 @@ This software is a copyrighted work licensed under the terms of the Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ +#define _GNU_SOURCE 1 #include #include +#include #include #include #include #include +#include +#include #include #include +#include +#include +#include + +#define PATH_PREFIX "PATH=/usr/bin:" + +char * +create_env_var (const char *name, const char *val) +{ + char *var, *cp; + + var = (char *) calloc (strlen (name) + strlen (val) + 2, sizeof (char *)); + cp = stpcpy (var, name); + *cp++ = '='; + stpcpy (cp, val); + return var; +} + +char ** +create_child_env (struct passwd *pw) +{ + char **posix_env, *cp; + wchar_t *win_env, *wep; + size_t max_cnt = 0; + size_t idx = 0; + HANDLE token; + + /* Fecth Windows default environment of current user */ + if (!OpenProcessToken (GetCurrentProcess (), + TOKEN_QUERY | TOKEN_DUPLICATE, &token)) + { + fprintf (stderr, "%s: creating environment failed with error %u " + "(OpenProcessToken)\n", + program_invocation_short_name, GetLastError ()); + return NULL; + } + if (!CreateEnvironmentBlock ((PVOID *) &win_env, token, FALSE)) + { + fprintf (stderr, "%s: creating environment failed with error %u " + "(CreateEnvironmentBlock)\n", + program_invocation_short_name, GetLastError ()); + CloseHandle (token); + return NULL; + } + CloseHandle (token); + /* Convert to Posix env */ + for (wep = win_env; *wep; wep = wcschr (wep, '\0') + 1) + ++max_cnt; + posix_env = (char **) calloc (max_cnt + 6, sizeof (char *)); + if (!posix_env) + { + fprintf (stderr, "%s: allocating environment failed: %s\n", + program_invocation_short_name, strerror (errno)); + return NULL; + } + for (wep = win_env; *wep; ++idx, wep = wcschr (wep, '\0') + 1) + { + /* For $PATH we must prepend /usr/bin to the converted POSIX path list */ + if (!wcsncasecmp (wep, L"PATH=", 5)) + { + size_t len = cygwin_conv_path_list (CCP_WIN_W_TO_POSIX, + wep + 5, NULL, 0); + posix_env[idx] = (char *) calloc (sizeof (PATH_PREFIX) + len, + sizeof (char *)); + if (!posix_env[idx]) + { + fprintf (stderr, "%s: allocating environment failed: %s\n", + program_invocation_short_name, strerror (errno)); + return NULL; + } + cp = stpcpy (posix_env[idx], PATH_PREFIX); + cygwin_conv_path_list (CCP_WIN_W_TO_POSIX, wep + 5, cp, len); + } + else + { + size_t len = wcstombs (NULL, wep, 0); + + if (len == (size_t) -1) + { + fprintf (stderr, + "%s: invalid char in environment variable: %ls\n", + program_invocation_short_name, wep); + return NULL; + } + posix_env[idx] = (char *) calloc (len + 1, sizeof (char *)); + if (!posix_env[idx]) + { + fprintf (stderr, "%s: allocating environment failed: %s\n", + program_invocation_short_name, strerror (errno)); + return NULL; + } + wcstombs (posix_env[idx], wep, len + 1); + } + } + DestroyEnvironmentBlock (win_env); + /* Add USER, LOGNAME, HOME, LANG, just like sshd */ + posix_env[idx++] = create_env_var ("USER", pw->pw_name); + posix_env[idx++] = create_env_var ("LOGNAME", pw->pw_name); + posix_env[idx++] = create_env_var ("HOME", pw->pw_dir); + cp = getenv("LANG"); + if (cp) + posix_env[idx] = create_env_var ("LANG", cp); + cp = getenv("TERM"); + if (cp) + posix_env[idx] = create_env_var ("TERM", cp); + return posix_env; +} + int main (int argc, const char **argv) { + const char *cmd, **cmd_av, *fake_av[2]; + struct passwd *pw; struct group *gr; + char **child_env; + bool new_child_env = false; gid_t gid; - const char *cmd; - const char **cmd_av; - const char *fake_av[2]; - /* TODO: Implement '-' option */ - /* TODO: Add command description to documentation */ + setlocale (LC_ALL, ""); - if (argc < 2 || argv[1][0] == '-') + if (argc < 2 || (argv[1][0] == '-' && argv[1][1])) { - fprintf (stderr, - "Usage: %1$s group [command [args...]]\n" - "\n" - "%1$s changes the current primary group for a command.\n" - "The primary group must be member of the supplementary group\n" - "list of the user.\n" - "The command and its arguments are specified on the command\n" - "line. Default is the user's standard shell.\n", + fprintf (stderr, "Usage: %s [-] [group] [command [args...]]\n", program_invocation_short_name); return 1; } - if (isdigit ((int) argv[1][0])) + + /* Check if we have to regenerate a stock environment */ + if (argv[1][0] == '-') { - char *e = NULL; + new_child_env = true; + --argc; + ++argv; + } - gid = strtol (argv[1], &e, 10); - if (e && *e != '\0') - { - fprintf (stderr, "%s: invalid gid `%s'\n", - program_invocation_short_name, argv[1]); - return 2; - } - gr = getgrgid (gid); - if (!gr) - { - fprintf (stderr, "%s: unknown group gid `%u'\n", - program_invocation_short_name, gid); - return 2; - } + pw = getpwuid (getuid ()); + + /* Fetch group */ + if (argv[1] == NULL) + { + gid = pw->pw_gid; } else { gr = getgrnam (argv[1]); if (!gr) { - fprintf (stderr, "%s: unknown group name `%s'\n", + fprintf (stderr, "%s: group '%s' does not exist\n", program_invocation_short_name, argv[1]); return 2; } gid = gr->gr_gid; + --argc; + ++argv; } + + /* Set primary group */ if (setgid (gid) != 0) { - fprintf (stderr, "%s: can't switch primary group to `%s'\n", + fprintf (stderr, "%s: can't switch primary group to '%s'\n", program_invocation_short_name, argv[1]); return 2; } - argc -= 2; - argv += 2; + + /* Maybe generate stock child environment */ + if (!new_child_env) + child_env = environ; + else + { + child_env = create_child_env (pw); + if (!child_env) + return 3; + chdir (pw->pw_dir); + } + + /* Set argc/argv for execvpe */ + --argc; + ++argv; if (argc < 1) { - struct passwd *pw = getpwuid (getuid ()); if (!pw) cmd = "/usr/bin/bash"; else cmd = pw->pw_shell; - fake_av[0] = cmd; + fake_av[0] = new_child_env ? "-" : cmd; fake_av[1] = NULL; cmd_av = fake_av; } @@ -94,8 +212,12 @@ main (int argc, const char **argv) cmd = argv[0]; cmd_av = argv; } - execvp (cmd, (char **) cmd_av); - fprintf (stderr, "%s: failed to start `%s': %s\n", + + /* Exec child process */ + execvpe (cmd, (char **) cmd_av, child_env); + + /* Oops */ + fprintf (stderr, "%s: failed to start '%s': %s\n", program_invocation_short_name, cmd, strerror (errno)); - return 3; + return 4; } From 62b9c98f12ff58e870ac42d2cd1b6860bf371ae0 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 14 Jan 2023 18:00:35 +0100 Subject: [PATCH 109/767] Cygwin: add newgrp(1) to release message for 3.5.0 Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 2 ++ winsup/doc/new-features.xml | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index bc63659936..32c9ebaac4 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -6,3 +6,5 @@ What's new: - The console device gets accessible from other terminals such as other consoles and ptys. Thanks to this new feature, GNU screen and tmux now work in the console. + +- newgrp(1) tool. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 5c9399e147..169f0fc526 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -4,6 +4,28 @@ What's new and what changed in Cygwin +What's new and what changed in 3.5 + + + + +Drop support for Windows 7, Windows 8, Server 2008 R2 and Server 2012. + + + +The console device gets accessible from other terminals such as other +consoles and ptys. Thanks to this new feature, GNU screen and tmux now +work in the console. + + + +newgrp(1) tool. + + + + + + What's new and what changed in 3.4 From 34b361c903c6409a41c9404590885d4d4b7c6a06 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 14 Jan 2023 20:13:54 +0100 Subject: [PATCH 110/767] Cygwin: newgrp: improve doumentation Signed-off-by: Corinna Vinschen --- winsup/doc/utils.xml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 927dc7c6b8..71c220d300 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -1967,26 +1967,32 @@ D: on /d type fat (binary,user,noumount) newgrp changes the primary group for a command. - If the '-' flag is given as first argument, the user's environment - will be reinitialized as though the user had logged in, otherwise the - current environment, including current working directory, remains - unchanged. + If the flag is given as first argument, the + user's environment will be reinitialized as though the user had logged + in, otherwise the current environment, including current working + directory, remains unchanged. newgrp changes the current primary group to the named group, or to the default group listed in /etc/passwd if no group name is given. By default, the user's standard shell is started, called as login - shell if the '-' flag has been specified. If a group has been given - as argument, a command and its arguments can be specified on the - command line. + shell if the flag has been specified. If a group + has been given as argument, a command and its arguments can be + specified on the command line. Please note that setting the primary group to any arbitrary group - is no privileged operation on Windows. However, if this group is not - in your current user token, or if the group is in your user token but - marked as deny-only, no additional permissions can - be obtained by setting this group as primary group. + is no privileged operation on Windows. However, even if this group is + not in your current user token, or if the group is in your user token + but marked as deny-only, no additional permissions + can be obtained by setting this group as primary group. + + + See also + id(1), login(1). + + From 75c375e86df31fefc85a54a060283fe7389c8c6b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 16 Jan 2023 14:23:38 +0100 Subject: [PATCH 111/767] Cygwin: /proc/cpuinfo: Always print topology info vmstat from proc-ps-4.0.x prints "Unable to create system stat structure" if the /proc/cpuinfo output fails to contain topology info. While Linux always prints topology info if the kernel has been built with CONFIG_SMP, Cygwin only prints topology info if the CPU is known to be multi-core (i. e., the HT feature flag is set). Fix that by printing topology info all the time, even for single-core CPUs. Fixes: e0d48debedfa ("Fix /proc/cpuinfo topology and cache size info") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/proc.cc | 18 +++++++++++++++--- winsup/cygwin/release/3.4.4 | 3 +++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 181652a086..b7f29b23d5 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -671,7 +671,8 @@ format_proc_cpuinfo (void *, char *&destbuf) if (!SetThreadGroupAffinity (GetCurrentThread (), &affinity, &orig_group_affinity)) - system_printf ("SetThreadGroupAffinity(%x,%d (%x/%d)) failed %E", cpu_mask, cpu_group, cpu_number, cpu_number); + system_printf ("SetThreadGroupAffinity(%x,%d (%x/%d)) failed %E", + cpu_mask, cpu_group, cpu_number, cpu_number); orig_affinity_mask = 1; /* Just mark success. */ /* I'm not sure whether the thread changes processor immediately and I'm not sure whether this function will cause the thread @@ -950,8 +951,7 @@ format_proc_cpuinfo (void *, char *&destbuf) core_id = (initial_apic_id & ((1 << logical_bits) - 1)) >> ht_bits; bufptr += __small_sprintf (bufptr, "physical id\t: %d\n", phys_id); - if (siblings > 0) - bufptr += __small_sprintf (bufptr, "siblings\t: %u\n", siblings); + bufptr += __small_sprintf (bufptr, "siblings\t: %u\n", siblings); bufptr += __small_sprintf (bufptr, "core id\t\t: %d\n" "cpu cores\t: %d\n", core_id, cpu_cores); @@ -961,6 +961,18 @@ format_proc_cpuinfo (void *, char *&destbuf) apic_id, initial_apic_id); } + else + { + /* Linux prints all this info depending on CONFIG_SMP. There's no + check if the CPU is actually a multicore CPU. */ + bufptr += __small_sprintf (bufptr, "physical id\t: %d\n", cpu_number); + bufptr += __small_sprintf (bufptr, "siblings\t: 1\n"); + bufptr += __small_sprintf (bufptr, "core id\t\t: 0\n" + "cpu cores\t: 1\n"); + bufptr += __small_sprintf (bufptr, "apicid\t\t: %d\n" + "initial apicid\t: %d\n", + apic_id, apic_id); + } /* level is number of non-zero leafs exc. sub-leafs */ int level = maxf + 1 + (maxe & 0x7fffffff) + 1; diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 index 35d746ba08..2c93cd0663 100644 --- a/winsup/cygwin/release/3.4.4 +++ b/winsup/cygwin/release/3.4.4 @@ -13,3 +13,6 @@ Bug Fixes - Avoid hangs when reading /proc//status. Addresses: https://cygwin.com/pipermail/cygwin/2022-December/252756.html + +- Fix vmstat(1) printing an error message on single core CPUs. + Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252857.html From 49b52521f3fd91068d9b055dac2d90a5f2e97193 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 16 Jan 2023 21:40:59 +0100 Subject: [PATCH 112/767] Cygwin: /proc/cpuinfo: always print trailing empty line, as on Linux Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/proc.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index b7f29b23d5..6a91398612 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -659,8 +659,6 @@ format_proc_cpuinfo (void *, char *&destbuf) __small_swprintf (cpu_num_p, L"%d", cpu_number); if (!NT_SUCCESS (RtlCheckRegistryKey (RTL_REGISTRY_ABSOLUTE, cpu_key))) break; - if (cpu_number) - print ("\n"); WORD cpu_group = cpu_number / num_cpu_per_group; KAFFINITY cpu_mask = 1L << (cpu_number % num_cpu_per_group); @@ -1704,6 +1702,8 @@ format_proc_cpuinfo (void *, char *&destbuf) print ("\n"); } + print ("\n"); + destbuf = (char *) crealloc_abort (destbuf, bufptr - buf); memcpy (destbuf, buf, bufptr - buf); return bufptr - buf; From 77680cac9404ae9e3d5ca424442129ba1e33df46 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 17 Jan 2023 16:28:01 +0100 Subject: [PATCH 113/767] Cygwin: autoload: clean up arguments to LoadDllFunc* The number of args multiplied by 4 was only required for 32 bit x86 to construct the symbol name correctly. Drop it. In the assembler code, split the numerical values for "notimp" and "err" into half words for cleaner layout. Fix description accordingly. Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 471 +++++++++++++++++++------------------- 1 file changed, 237 insertions(+), 234 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index 8ef84bf398..c8909caff4 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -31,10 +31,12 @@ bool NO_COPY wsock_started; * we have: * DLL info (4/8 bytes) Pointer to a block of information concerning * the DLL (see below). - * DLL args (4 bytes) The number of arguments pushed on the stack by - * the call. If this is an odd value then this - * is a flag that non-existence of this function - * is not a fatal error + * DLL notimp (2 bytes) Bool value flagging that non-existence of this + * function is not a fatal error. + * DLL error (2 bytes) Error value returned if function load fails. + * Depends on the return type of the function. + * Default is 0 == BOOL FALSE or == HANDLE NULL or + * == Pointer NULL. * func addr (8 bytes) Address of the actual Win32 function. For the * reason why this is necessary, see the below * description of the load_state. @@ -87,16 +89,16 @@ bool NO_COPY wsock_started; /* Standard DLL load macro. May invoke a fatal error if the function isn't found. */ -#define LoadDLLfunc(name, n, dllname) \ - LoadDLLfuncEx (name, n, dllname, 0) -#define LoadDLLfuncEx(name, n, dllname, notimp) \ - LoadDLLfuncEx2(name, n, dllname, notimp, 0) -#define LoadDLLfuncEx2(name, n, dllname, notimp, err) \ - LoadDLLfuncEx3(name, n, dllname, notimp, err, 0) +#define LoadDLLfunc(name, dllname) \ + LoadDLLfuncEx (name, dllname, 0) +#define LoadDLLfuncEx(name, dllname, notimp) \ + LoadDLLfuncEx2(name, dllname, notimp, 0) +#define LoadDLLfuncEx2(name, dllname, notimp, err) \ + LoadDLLfuncEx3(name, dllname, notimp, err, 0) /* Main DLL setup stuff. */ #ifdef __x86_64__ -#define LoadDLLfuncEx3(name, n, dllname, notimp, err, no_resolve_on_fork) \ +#define LoadDLLfuncEx3(name, dllname, notimp, err, no_resolve_on_fork) \ LoadDLLprime (dllname, dll_func_load, no_resolve_on_fork) \ __asm__ (" \n\ .section ." #dllname "_autoload_text,\"wx\" \n\ @@ -115,7 +117,8 @@ _win32_" #name ": \n\ push %rcx \n\ call *(%rax) \n\ 2:.quad ." #dllname "_info \n\ - .long (" #n "+" #notimp ") | (((" #err ") & 0xff) <<16) \n\ + .hword " #notimp " \n\ + .hword ((" #err ") & 0xffff) \n\ 3:.quad 1b \n\ .asciz \"" #name "\" \n\ .text \n\ @@ -152,11 +155,11 @@ noload: \n\ test $1,%eax # of this function? \n\ jz 1f # Nope. \n\ andl $0xffff0000,%eax# upper word (== desired return value) \n\ + sarl $16,%eax # swap to low order word \n\ movl %eax,32(%rsp) # Save for later (in shadow space) \n\ movl $127,%ecx # ERROR_PROC_NOT_FOUND \n\ call SetLastError # Set it \n\ movl 32(%rsp),%eax # Get back return value \n\ - sarl $16,%eax # swap to low order word \n\ addq $40,%rsp # Revert stack \n\ pop %r10 # Drop pointer to 'return address' \n\ pop %rcx # Restore arg registers \n\ @@ -412,229 +415,229 @@ wsock_init (struct func_info *func) LoadDLLprime (ws2_32, _wsock_init, 0) -LoadDLLfunc (CheckTokenMembership, 12, advapi32) -LoadDLLfunc (CreateProcessAsUserW, 44, advapi32) -LoadDLLfunc (DeregisterEventSource, 4, advapi32) -LoadDLLfunc (DecryptFileW, 8, advapi32) -LoadDLLfunc (EncryptFileW, 4, advapi32) -LoadDLLfunc (LogonUserW, 24, advapi32) -LoadDLLfunc (LookupAccountNameW, 28, advapi32) -LoadDLLfunc (LookupAccountSidW, 28, advapi32) -LoadDLLfunc (LsaClose, 4, advapi32) -LoadDLLfunc (LsaEnumerateAccountRights, 16, advapi32) -LoadDLLfunc (LsaFreeMemory, 4, advapi32) -LoadDLLfunc (LsaLookupSids, 20, advapi32) -LoadDLLfunc (LsaOpenPolicy, 16, advapi32) -LoadDLLfunc (LsaQueryInformationPolicy, 12, advapi32) -LoadDLLfunc (LsaRetrievePrivateData, 12, advapi32) -LoadDLLfunc (LsaStorePrivateData, 12, advapi32) -LoadDLLfunc (RegOpenUserClassesRoot, 16, advapi32) -LoadDLLfunc (RegOpenCurrentUser, 8, advapi32) -LoadDLLfunc (RegCloseKey, 4, advapi32) -LoadDLLfunc (RegCreateKeyExW, 36, advapi32) -LoadDLLfunc (RegEnumKeyExW, 32, advapi32) -LoadDLLfunc (RegEnumValueW, 32, advapi32) -LoadDLLfunc (RegGetKeySecurity, 16, advapi32) -LoadDLLfunc (RegOpenKeyExW, 20, advapi32) -LoadDLLfunc (RegQueryInfoKeyW, 48, advapi32) -LoadDLLfunc (RegQueryValueExW, 24, advapi32) -LoadDLLfunc (RegisterEventSourceW, 8, advapi32) -LoadDLLfunc (ReportEventW, 36, advapi32) -LoadDLLfunc (SystemFunction036, 8, advapi32) /* Aka "RtlGenRandom" */ - -LoadDLLfunc (AuthzAccessCheck, 36, authz) -LoadDLLfunc (AuthzFreeContext, 4, authz) -LoadDLLfunc (AuthzInitializeContextFromSid, 32, authz) -LoadDLLfunc (AuthzInitializeContextFromToken, 32, authz) -LoadDLLfunc (AuthzInitializeResourceManager, 24, authz) - -LoadDLLfunc (DnsQuery_A, 24, dnsapi) -LoadDLLfunc (DnsFree, 8, dnsapi) - -LoadDLLfunc (GetAdaptersAddresses, 20, iphlpapi) -LoadDLLfunc (GetIfEntry, 4, iphlpapi) -LoadDLLfunc (GetIpAddrTable, 12, iphlpapi) -LoadDLLfunc (GetIpForwardTable, 12, iphlpapi) -LoadDLLfunc (GetNetworkParams, 8, iphlpapi) -LoadDLLfunc (GetTcpTable, 12, iphlpapi) -LoadDLLfunc (GetTcp6Table, 12, iphlpapi) -LoadDLLfunc (GetUdpTable, 12, iphlpapi) -LoadDLLfunc (if_indextoname, 8, iphlpapi) -LoadDLLfunc (if_nametoindex, 4, iphlpapi) - -LoadDLLfuncEx (ClosePseudoConsole, 4, kernel32, 1) -LoadDLLfuncEx (CreatePseudoConsole, 20, kernel32, 1) -LoadDLLfuncEx (IsWow64Process2, 12, kernel32, 1) -LoadDLLfuncEx (ResizePseudoConsole, 8, kernel32, 1) +LoadDLLfunc (CheckTokenMembership, advapi32) +LoadDLLfunc (CreateProcessAsUserW, advapi32) +LoadDLLfunc (DeregisterEventSource, advapi32) +LoadDLLfunc (DecryptFileW, advapi32) +LoadDLLfunc (EncryptFileW, advapi32) +LoadDLLfunc (LogonUserW, advapi32) +LoadDLLfunc (LookupAccountNameW, advapi32) +LoadDLLfunc (LookupAccountSidW, advapi32) +LoadDLLfunc (LsaClose, advapi32) +LoadDLLfunc (LsaEnumerateAccountRights, advapi32) +LoadDLLfunc (LsaFreeMemory, advapi32) +LoadDLLfunc (LsaLookupSids, advapi32) +LoadDLLfunc (LsaOpenPolicy, advapi32) +LoadDLLfunc (LsaQueryInformationPolicy, advapi32) +LoadDLLfunc (LsaRetrievePrivateData, advapi32) +LoadDLLfunc (LsaStorePrivateData, advapi32) +LoadDLLfunc (RegOpenUserClassesRoot, advapi32) +LoadDLLfunc (RegOpenCurrentUser, advapi32) +LoadDLLfunc (RegCloseKey, advapi32) +LoadDLLfunc (RegCreateKeyExW, advapi32) +LoadDLLfunc (RegEnumKeyExW, advapi32) +LoadDLLfunc (RegEnumValueW, advapi32) +LoadDLLfunc (RegGetKeySecurity, advapi32) +LoadDLLfunc (RegOpenKeyExW, advapi32) +LoadDLLfunc (RegQueryInfoKeyW, advapi32) +LoadDLLfunc (RegQueryValueExW, advapi32) +LoadDLLfunc (RegisterEventSourceW, advapi32) +LoadDLLfunc (ReportEventW, advapi32) +LoadDLLfunc (SystemFunction036, advapi32) /* Aka "RtlGenRandom" */ + +LoadDLLfunc (AuthzAccessCheck, authz) +LoadDLLfunc (AuthzFreeContext, authz) +LoadDLLfunc (AuthzInitializeContextFromSid, authz) +LoadDLLfunc (AuthzInitializeContextFromToken, authz) +LoadDLLfunc (AuthzInitializeResourceManager, authz) + +LoadDLLfunc (DnsQuery_A, dnsapi) +LoadDLLfunc (DnsFree, dnsapi) + +LoadDLLfunc (GetAdaptersAddresses, iphlpapi) +LoadDLLfunc (GetIfEntry, iphlpapi) +LoadDLLfunc (GetIpAddrTable, iphlpapi) +LoadDLLfunc (GetIpForwardTable, iphlpapi) +LoadDLLfunc (GetNetworkParams, iphlpapi) +LoadDLLfunc (GetTcpTable, iphlpapi) +LoadDLLfunc (GetTcp6Table, iphlpapi) +LoadDLLfunc (GetUdpTable, iphlpapi) +LoadDLLfunc (if_indextoname, iphlpapi) +LoadDLLfunc (if_nametoindex, iphlpapi) + +LoadDLLfuncEx (ClosePseudoConsole, kernel32, 1) +LoadDLLfuncEx (CreatePseudoConsole, kernel32, 1) +LoadDLLfuncEx (IsWow64Process2, kernel32, 1) +LoadDLLfuncEx (ResizePseudoConsole, kernel32, 1) /* MSDN claims these are exported by kernel32.dll, but only QueryUnbiasedInterruptTime actually is. The others are only available via KernelBase.dll. */ -LoadDLLfunc (QueryInterruptTime, 4, KernelBase) -LoadDLLfunc (QueryInterruptTimePrecise, 4, KernelBase) -LoadDLLfunc (QueryUnbiasedInterruptTimePrecise, 4, KernelBase) -LoadDLLfuncEx (SetThreadDescription, 8, KernelBase, 1) -LoadDLLfunc (VirtualAlloc2, 28, KernelBase) - -LoadDLLfunc (NtMapViewOfSectionEx, 36, ntdll) - -LoadDLLfunc (ldap_bind_s, 0, wldap32) -LoadDLLfunc (ldap_count_entries, 0, wldap32) -LoadDLLfunc (ldap_count_valuesW, 0, wldap32) -LoadDLLfunc (ldap_first_entry, 0, wldap32) -LoadDLLfunc (ldap_get_next_page_s, 0, wldap32) -LoadDLLfunc (ldap_get_valuesW, 0, wldap32) -LoadDLLfunc (ldap_get_values_lenW, 0, wldap32) -LoadDLLfunc (ldap_initW, 0, wldap32) -LoadDLLfunc (ldap_msgfree, 0, wldap32) -LoadDLLfunc (ldap_next_entry, 0, wldap32) -LoadDLLfunc (ldap_search_abandon_page, 0, wldap32) -LoadDLLfunc (ldap_search_init_pageW, 0, wldap32) -LoadDLLfunc (ldap_search_sW, 0, wldap32) -LoadDLLfunc (ldap_set_option, 0, wldap32) -LoadDLLfunc (ldap_sslinitW, 0, wldap32) -LoadDLLfunc (ldap_unbind, 0, wldap32) -LoadDLLfunc (ldap_value_freeW, 0, wldap32) -LoadDLLfunc (ldap_value_free_len, 0, wldap32) -LoadDLLfunc (LdapGetLastError, 0, wldap32) -LoadDLLfunc (LdapMapErrorToWin32, 0, wldap32) - -LoadDLLfunc (WNetCloseEnum, 4, mpr) -LoadDLLfunc (WNetEnumResourceW, 16, mpr) -LoadDLLfunc (WNetGetLastErrorW, 20, mpr) -LoadDLLfunc (WNetGetProviderNameW, 12, mpr) -LoadDLLfunc (WNetGetResourceInformationW, 16, mpr) -LoadDLLfunc (WNetOpenEnumW, 20, mpr) - -LoadDLLfunc (DsEnumerateDomainTrustsW, 16, netapi32) -LoadDLLfunc (DsGetDcNameW, 24, netapi32) -LoadDLLfunc (NetApiBufferFree, 4, netapi32) -LoadDLLfunc (NetGroupEnum, 28, netapi32) -LoadDLLfunc (NetLocalGroupEnum, 28, netapi32) -LoadDLLfunc (NetLocalGroupGetInfo, 16, netapi32) -LoadDLLfunc (NetUseGetInfo, 16, netapi32) -LoadDLLfunc (NetUserEnum, 32, netapi32) -LoadDLLfunc (NetUserGetGroups, 28, netapi32) -LoadDLLfunc (NetUserGetInfo, 16, netapi32) -LoadDLLfunc (NetUserGetLocalGroups, 32, netapi32) - -LoadDLLfunc (CoTaskMemFree, 4, ole32) - -LoadDLLfunc (LsaConnectUntrusted, 4, secur32) -LoadDLLfunc (LsaDeregisterLogonProcess, 4, secur32) -LoadDLLfunc (LsaFreeReturnBuffer, 4, secur32) -LoadDLLfunc (LsaLogonUser, 56, secur32) -LoadDLLfunc (LsaLookupAuthenticationPackage, 12, secur32) -LoadDLLfunc (LsaRegisterLogonProcess, 12, secur32) -LoadDLLfunc (TranslateNameW, 20, secur32) - -LoadDLLfunc (SHGetDesktopFolder, 4, shell32) - -LoadDLLfunc (CreateFontW, 56, gdi32) -LoadDLLfunc (DeleteObject, 4, gdi32) -LoadDLLfunc (EnumFontFamiliesExW, 20, gdi32) -LoadDLLfunc (GetGlyphIndicesW, 20, gdi32) -LoadDLLfunc (SelectObject, 8, gdi32) - -LoadDLLfunc (CloseClipboard, 0, user32) -LoadDLLfunc (CloseDesktop, 4, user32) -LoadDLLfunc (CloseWindowStation, 4, user32) -LoadDLLfunc (CreateDesktopW, 24, user32) -LoadDLLfunc (CreateWindowExW, 48, user32) -LoadDLLfunc (CreateWindowStationW, 16, user32) -LoadDLLfunc (DefWindowProcW, 16, user32) -LoadDLLfunc (DestroyWindow, 4, user32) -LoadDLLfunc (DispatchMessageW, 4, user32) -LoadDLLfunc (EmptyClipboard, 0, user32) -LoadDLLfunc (EnumWindows, 8, user32) -LoadDLLfunc (GetClipboardData, 4, user32) -LoadDLLfunc (GetDC, 4, user32) -LoadDLLfunc (GetForegroundWindow, 0, user32) -LoadDLLfunc (GetKeyboardLayout, 4, user32) -LoadDLLfunc (GetMessageW, 16, user32) -LoadDLLfunc (GetPriorityClipboardFormat, 8, user32) -LoadDLLfunc (GetProcessWindowStation, 0, user32) -LoadDLLfunc (GetThreadDesktop, 4, user32) -LoadDLLfunc (GetUserObjectInformationW, 20, user32) -LoadDLLfunc (GetWindowThreadProcessId, 8, user32) -LoadDLLfunc (MessageBeep, 4, user32) -LoadDLLfunc (MessageBoxW, 16, user32) -LoadDLLfunc (MsgWaitForMultipleObjectsEx, 20, user32) -LoadDLLfunc (OpenClipboard, 4, user32) -LoadDLLfunc (PeekMessageW, 20, user32) -LoadDLLfunc (PostMessageW, 16, user32) -LoadDLLfunc (PostQuitMessage, 4, user32) -LoadDLLfunc (RegisterClassW, 4, user32) -LoadDLLfunc (RegisterClipboardFormatW, 4, user32) -LoadDLLfunc (SendNotifyMessageW, 16, user32) -LoadDLLfunc (SetClipboardData, 8, user32) -LoadDLLfunc (SetParent, 8, user32) -LoadDLLfunc (SetProcessWindowStation, 4, user32) -LoadDLLfunc (SetThreadDesktop, 4, user32) -LoadDLLfunc (UnregisterClassW, 8, user32) - -LoadDLLfuncEx (CreateEnvironmentBlock, 12, userenv, 1) -LoadDLLfuncEx2 (CreateProfile, 16, userenv, 1, 1) -LoadDLLfunc (DestroyEnvironmentBlock, 4, userenv) -LoadDLLfunc (LoadUserProfileW, 8, userenv) - -LoadDLLfuncEx3 (waveInAddBuffer, 12, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInClose, 4, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInGetNumDevs, 0, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInOpen, 24, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInPrepareHeader, 12, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInReset, 4, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInStart, 4, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveInUnprepareHeader, 12, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutClose, 4, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutGetNumDevs, 0, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutGetVolume, 8, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutOpen, 24, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutPrepareHeader, 12, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutReset, 4, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutSetVolume, 8, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutUnprepareHeader, 12, winmm, 1, 0, 1) -LoadDLLfuncEx3 (waveOutWrite, 12, winmm, 1, 0, 1) - -LoadDLLfunc (accept, 12, ws2_32) -LoadDLLfunc (bind, 12, ws2_32) -LoadDLLfunc (closesocket, 4, ws2_32) -LoadDLLfunc (connect, 12, ws2_32) -LoadDLLfunc (FreeAddrInfoW, 4, ws2_32) -LoadDLLfunc (GetAddrInfoW, 16, ws2_32) -LoadDLLfunc (GetNameInfoW, 28, ws2_32) -LoadDLLfunc (gethostbyaddr, 12, ws2_32) -LoadDLLfunc (gethostbyname, 4, ws2_32) -LoadDLLfunc (gethostname, 8, ws2_32) -LoadDLLfunc (getpeername, 12, ws2_32) -LoadDLLfunc (getprotobyname, 4, ws2_32) -LoadDLLfunc (getprotobynumber, 4, ws2_32) -LoadDLLfunc (getservbyname, 8, ws2_32) -LoadDLLfunc (getservbyport, 8, ws2_32) -LoadDLLfunc (getsockname, 12, ws2_32) -LoadDLLfunc (getsockopt, 20, ws2_32) -LoadDLLfunc (ioctlsocket, 12, ws2_32) -LoadDLLfunc (listen, 8, ws2_32) -LoadDLLfunc (setsockopt, 20, ws2_32) -LoadDLLfunc (shutdown, 8, ws2_32) -LoadDLLfunc (socket, 12, ws2_32) -LoadDLLfunc (WSAAsyncSelect, 16, ws2_32) -LoadDLLfunc (WSADuplicateSocketW, 12, ws2_32) -LoadDLLfunc (WSAEnumNetworkEvents, 12, ws2_32) -LoadDLLfunc (WSAEventSelect, 12, ws2_32) -LoadDLLfunc (WSAGetLastError, 0, ws2_32) -LoadDLLfunc (WSAIoctl, 36, ws2_32) -LoadDLLfunc (WSARecv, 28, ws2_32) -LoadDLLfunc (WSARecvFrom, 36, ws2_32) -LoadDLLfunc (WSASendMsg, 24, ws2_32) -LoadDLLfunc (WSASendTo, 36, ws2_32) -LoadDLLfunc (WSASetLastError, 4, ws2_32) -LoadDLLfunc (WSASocketW, 24, ws2_32) -// LoadDLLfunc (WSAStartup, 8, ws2_32) -LoadDLLfunc (WSAWaitForMultipleEvents, 20, ws2_32) - -LoadDLLfunc (PdhAddEnglishCounterW, 16, pdh) -LoadDLLfunc (PdhCollectQueryData, 4, pdh) -LoadDLLfunc (PdhGetFormattedCounterValue, 16, pdh) -LoadDLLfunc (PdhOpenQueryW, 12, pdh) +LoadDLLfunc (QueryInterruptTime, KernelBase) +LoadDLLfunc (QueryInterruptTimePrecise, KernelBase) +LoadDLLfunc (QueryUnbiasedInterruptTimePrecise, KernelBase) +LoadDLLfuncEx (SetThreadDescription, KernelBase, 1) +LoadDLLfunc (VirtualAlloc2, KernelBase) + +LoadDLLfunc (NtMapViewOfSectionEx, ntdll) + +LoadDLLfunc (ldap_bind_s, wldap32) +LoadDLLfunc (ldap_count_entries, wldap32) +LoadDLLfunc (ldap_count_valuesW, wldap32) +LoadDLLfunc (ldap_first_entry, wldap32) +LoadDLLfunc (ldap_get_next_page_s, wldap32) +LoadDLLfunc (ldap_get_valuesW, wldap32) +LoadDLLfunc (ldap_get_values_lenW, wldap32) +LoadDLLfunc (ldap_initW, wldap32) +LoadDLLfunc (ldap_msgfree, wldap32) +LoadDLLfunc (ldap_next_entry, wldap32) +LoadDLLfunc (ldap_search_abandon_page, wldap32) +LoadDLLfunc (ldap_search_init_pageW, wldap32) +LoadDLLfunc (ldap_search_sW, wldap32) +LoadDLLfunc (ldap_set_option, wldap32) +LoadDLLfunc (ldap_sslinitW, wldap32) +LoadDLLfunc (ldap_unbind, wldap32) +LoadDLLfunc (ldap_value_freeW, wldap32) +LoadDLLfunc (ldap_value_free_len, wldap32) +LoadDLLfunc (LdapGetLastError, wldap32) +LoadDLLfunc (LdapMapErrorToWin32, wldap32) + +LoadDLLfunc (WNetCloseEnum, mpr) +LoadDLLfunc (WNetEnumResourceW, mpr) +LoadDLLfunc (WNetGetLastErrorW, mpr) +LoadDLLfunc (WNetGetProviderNameW, mpr) +LoadDLLfunc (WNetGetResourceInformationW, mpr) +LoadDLLfunc (WNetOpenEnumW, mpr) + +LoadDLLfunc (DsEnumerateDomainTrustsW, netapi32) +LoadDLLfunc (DsGetDcNameW, netapi32) +LoadDLLfunc (NetApiBufferFree, netapi32) +LoadDLLfunc (NetGroupEnum, netapi32) +LoadDLLfunc (NetLocalGroupEnum, netapi32) +LoadDLLfunc (NetLocalGroupGetInfo, netapi32) +LoadDLLfunc (NetUseGetInfo, netapi32) +LoadDLLfunc (NetUserEnum, netapi32) +LoadDLLfunc (NetUserGetGroups, netapi32) +LoadDLLfunc (NetUserGetInfo, netapi32) +LoadDLLfunc (NetUserGetLocalGroups, netapi32) + +LoadDLLfunc (CoTaskMemFree, ole32) + +LoadDLLfunc (LsaConnectUntrusted, secur32) +LoadDLLfunc (LsaDeregisterLogonProcess, secur32) +LoadDLLfunc (LsaFreeReturnBuffer, secur32) +LoadDLLfunc (LsaLogonUser, secur32) +LoadDLLfunc (LsaLookupAuthenticationPackage, secur32) +LoadDLLfunc (LsaRegisterLogonProcess, secur32) +LoadDLLfunc (TranslateNameW, secur32) + +LoadDLLfunc (SHGetDesktopFolder, shell32) + +LoadDLLfunc (CreateFontW, gdi32) +LoadDLLfunc (DeleteObject, gdi32) +LoadDLLfunc (EnumFontFamiliesExW, gdi32) +LoadDLLfunc (GetGlyphIndicesW, gdi32) +LoadDLLfunc (SelectObject, gdi32) + +LoadDLLfunc (CloseClipboard, user32) +LoadDLLfunc (CloseDesktop, user32) +LoadDLLfunc (CloseWindowStation, user32) +LoadDLLfunc (CreateDesktopW, user32) +LoadDLLfunc (CreateWindowExW, user32) +LoadDLLfunc (CreateWindowStationW, user32) +LoadDLLfunc (DefWindowProcW, user32) +LoadDLLfunc (DestroyWindow, user32) +LoadDLLfunc (DispatchMessageW, user32) +LoadDLLfunc (EmptyClipboard, user32) +LoadDLLfunc (EnumWindows, user32) +LoadDLLfunc (GetClipboardData, user32) +LoadDLLfunc (GetDC, user32) +LoadDLLfunc (GetForegroundWindow, user32) +LoadDLLfunc (GetKeyboardLayout, user32) +LoadDLLfunc (GetMessageW, user32) +LoadDLLfunc (GetPriorityClipboardFormat, user32) +LoadDLLfunc (GetProcessWindowStation, user32) +LoadDLLfunc (GetThreadDesktop, user32) +LoadDLLfunc (GetUserObjectInformationW, user32) +LoadDLLfunc (GetWindowThreadProcessId, user32) +LoadDLLfunc (MessageBeep, user32) +LoadDLLfunc (MessageBoxW, user32) +LoadDLLfunc (MsgWaitForMultipleObjectsEx, user32) +LoadDLLfunc (OpenClipboard, user32) +LoadDLLfunc (PeekMessageW, user32) +LoadDLLfunc (PostMessageW, user32) +LoadDLLfunc (PostQuitMessage, user32) +LoadDLLfunc (RegisterClassW, user32) +LoadDLLfunc (RegisterClipboardFormatW, user32) +LoadDLLfunc (SendNotifyMessageW, user32) +LoadDLLfunc (SetClipboardData, user32) +LoadDLLfunc (SetParent, user32) +LoadDLLfunc (SetProcessWindowStation, user32) +LoadDLLfunc (SetThreadDesktop, user32) +LoadDLLfunc (UnregisterClassW, user32) + +LoadDLLfuncEx (CreateEnvironmentBlock, userenv, 1) +LoadDLLfuncEx2 (CreateProfile, userenv, 1, 1) +LoadDLLfunc (DestroyEnvironmentBlock, userenv) +LoadDLLfunc (LoadUserProfileW, userenv) + +LoadDLLfuncEx3 (waveInAddBuffer, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInClose, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInGetNumDevs, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInOpen, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInPrepareHeader, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInReset, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInStart, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveInUnprepareHeader, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutClose, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutGetNumDevs, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutGetVolume, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutOpen, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutPrepareHeader, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutReset, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutSetVolume, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutUnprepareHeader, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutWrite, winmm, 1, 0, 1) + +LoadDLLfunc (accept, ws2_32) +LoadDLLfunc (bind, ws2_32) +LoadDLLfunc (closesocket, ws2_32) +LoadDLLfunc (connect, ws2_32) +LoadDLLfunc (FreeAddrInfoW, ws2_32) +LoadDLLfunc (GetAddrInfoW, ws2_32) +LoadDLLfunc (GetNameInfoW, ws2_32) +LoadDLLfunc (gethostbyaddr, ws2_32) +LoadDLLfunc (gethostbyname, ws2_32) +LoadDLLfunc (gethostname, ws2_32) +LoadDLLfunc (getpeername, ws2_32) +LoadDLLfunc (getprotobyname, ws2_32) +LoadDLLfunc (getprotobynumber, ws2_32) +LoadDLLfunc (getservbyname, ws2_32) +LoadDLLfunc (getservbyport, ws2_32) +LoadDLLfunc (getsockname, ws2_32) +LoadDLLfunc (getsockopt, ws2_32) +LoadDLLfunc (ioctlsocket, ws2_32) +LoadDLLfunc (listen, ws2_32) +LoadDLLfunc (setsockopt, ws2_32) +LoadDLLfunc (shutdown, ws2_32) +LoadDLLfunc (socket, ws2_32) +LoadDLLfunc (WSAAsyncSelect, ws2_32) +LoadDLLfunc (WSADuplicateSocketW, ws2_32) +LoadDLLfunc (WSAEnumNetworkEvents, ws2_32) +LoadDLLfunc (WSAEventSelect, ws2_32) +LoadDLLfunc (WSAGetLastError, ws2_32) +LoadDLLfunc (WSAIoctl, ws2_32) +LoadDLLfunc (WSARecv, ws2_32) +LoadDLLfunc (WSARecvFrom, ws2_32) +LoadDLLfunc (WSASendMsg, ws2_32) +LoadDLLfunc (WSASendTo, ws2_32) +LoadDLLfunc (WSASetLastError, ws2_32) +LoadDLLfunc (WSASocketW, ws2_32) +// LoadDLLfunc (WSAStartup, ws2_32) +LoadDLLfunc (WSAWaitForMultipleEvents, ws2_32) + +LoadDLLfunc (PdhAddEnglishCounterW, pdh) +LoadDLLfunc (PdhCollectQueryData, pdh) +LoadDLLfunc (PdhGetFormattedCounterValue, pdh) +LoadDLLfunc (PdhOpenQueryW, pdh) } From 93508e5bb841138911ed3dee3c92cc18be43d9ca Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 16 Jan 2023 22:25:42 +0100 Subject: [PATCH 114/767] Cygwin: open_shared: don't reuse shared_locations parameter as output For ages, open_shared uses the shared_locations parameter as output to indicate if the mapping for a shared region has been created or just opened. Split this into two parameters. Use the shared_locations parameter as input only, return the creation state of the mapping in a bool reference parameter. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/console.cc | 7 ++-- winsup/cygwin/local_includes/shared_info.h | 8 ++--- winsup/cygwin/mm/shared.cc | 39 ++++++++++++---------- winsup/cygwin/pinfo.cc | 6 ++-- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index ee392fda25..68ab43d81e 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -211,15 +211,14 @@ beep () } fhandler_console::console_state * -fhandler_console::open_shared_console (HWND hw, HANDLE& h, bool& create) +fhandler_console::open_shared_console (HWND hw, HANDLE& h, bool& created) { wchar_t namebuf[(sizeof "XXXXXXXXXXXXXXXXXX-consNNNNNNNNNN")]; __small_swprintf (namebuf, L"%S-cons%p", &cygheap->installation_key, hw); - shared_locations m = create ? SH_SHARED_CONSOLE : SH_JUSTOPEN; + shared_locations m = created ? SH_SHARED_CONSOLE : SH_JUSTOPEN; console_state *res = (console_state *) - open_shared (namebuf, 0, h, sizeof (console_state), &m); - create = m != SH_JUSTOPEN; + open_shared (namebuf, 0, h, sizeof (console_state), m, created); return res; } diff --git a/winsup/cygwin/local_includes/shared_info.h b/winsup/cygwin/local_includes/shared_info.h index 6c53ec0b8b..cbe55a2788 100644 --- a/winsup/cygwin/local_includes/shared_info.h +++ b/winsup/cygwin/local_includes/shared_info.h @@ -89,9 +89,9 @@ HANDLE get_session_parent_dir (); char *shared_name (char *, const char *, int); WCHAR *shared_name (WCHAR *, const WCHAR *, int); void *open_shared (const WCHAR *, int, HANDLE&, DWORD, - shared_locations, PSECURITY_ATTRIBUTES = &sec_all, - DWORD = FILE_MAP_READ | FILE_MAP_WRITE); + shared_locations, PSECURITY_ATTRIBUTES = &sec_all, + DWORD = FILE_MAP_READ | FILE_MAP_WRITE); void *open_shared (const WCHAR *, int, HANDLE&, DWORD, - shared_locations *, PSECURITY_ATTRIBUTES = &sec_all, - DWORD = FILE_MAP_READ | FILE_MAP_WRITE); + shared_locations, bool &, PSECURITY_ATTRIBUTES = &sec_all, + DWORD = FILE_MAP_READ | FILE_MAP_WRITE); extern void user_shared_create (bool reinit); diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index 893b20d289..351d314af0 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -127,54 +127,57 @@ void * open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, shared_locations m, PSECURITY_ATTRIBUTES psa, DWORD access) { - return open_shared (name, n, shared_h, size, &m, psa, access); + bool created_dummy; + return open_shared (name, n, shared_h, size, m, created_dummy, psa, access); } void * open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, - shared_locations *m, PSECURITY_ATTRIBUTES psa, DWORD access) + shared_locations m, bool &created, PSECURITY_ATTRIBUTES psa, + DWORD access) { + WCHAR map_buf[MAX_PATH]; + WCHAR *mapname = NULL; void *shared; - void *addr; - if (*m == SH_JUSTCREATE || *m == SH_JUSTOPEN) + + if (m == SH_JUSTCREATE || m == SH_JUSTOPEN) addr = NULL; else - addr = (void *) region_address[*m]; + addr = (void *) region_address[m]; - WCHAR map_buf[MAX_PATH]; - WCHAR *mapname = NULL; - - if (shared_h) - *m = SH_JUSTOPEN; - else + created = false; + if (!shared_h) { if (name) mapname = shared_name (map_buf, name, n); - if (*m == SH_JUSTOPEN) - shared_h = OpenFileMappingW (access, FALSE, mapname); + if (m == SH_JUSTOPEN) + shared_h = OpenFileMappingW (FILE_MAP_READ | FILE_MAP_WRITE, FALSE, + mapname); else { + created = true; shared_h = CreateFileMappingW (INVALID_HANDLE_VALUE, psa, PAGE_READWRITE, 0, size, mapname); if (GetLastError () == ERROR_ALREADY_EXISTS) - *m = SH_JUSTOPEN; + created = false; } if (shared_h) /* ok! */; - else if (*m != SH_JUSTOPEN) + else if (m != SH_JUSTOPEN) api_fatal ("CreateFileMapping %W, %E. Terminating.", mapname); else return NULL; } - shared = (shared_info *) MapViewOfFileEx (shared_h, access, 0, 0, 0, addr); + shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, + 0, 0, 0, addr); if (!shared) api_fatal ("MapViewOfFileEx '%W'(%p), %E. Terminating.", mapname, shared_h); - debug_printf ("name %W, n %d, shared %p (wanted %p), h %p, *m %d", - mapname, n, shared, addr, shared_h, *m); + debug_printf ("name %W, n %d, shared %p (wanted %p), h %p, m %d", + mapname, n, shared, addr, shared_h, m); return shared; } diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index fc618b9b8d..c05cf2662c 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -387,8 +387,10 @@ pinfo::init (pid_t n, DWORD flag, HANDLE h0) for (int i = 0; i < 20; i++) { + bool created; + procinfo = (_pinfo *) open_shared (L"cygpid", n, h0, sizeof (_pinfo), - &shloc, sec_attribs, access); + shloc, created, sec_attribs, access); if (!h0) { if (createit) @@ -409,8 +411,6 @@ pinfo::init (pid_t n, DWORD flag, HANDLE h0) continue; } - bool created = shloc != SH_JUSTOPEN; - /* Just fetching info for ps or /proc, don't do anything rash. */ if (!created && !(flag & PID_NEW) && !procinfo->ppid && (flag & PID_PROCINFO)) From 50cbbb1c0e7263d370a526fec0e905e3392bb9ba Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 16 Jan 2023 22:20:48 +0100 Subject: [PATCH 115/767] Cygwin: Move shared regions, rename PINFO... to MYSELF_REGION_ADDRESS Fix comments accordingly. This is in preparation for a change in open_shared, handling shared regions more cleanly. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/memory_layout.h | 18 ++++++++++-------- winsup/cygwin/mm/shared.cc | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/local_includes/memory_layout.h b/winsup/cygwin/local_includes/memory_layout.h index 481215b06a..21e00c1bcf 100644 --- a/winsup/cygwin/local_includes/memory_layout.h +++ b/winsup/cygwin/local_includes/memory_layout.h @@ -16,14 +16,16 @@ details. */ dynamicbase is accidentally not set in the PE/COFF header of the DLL. */ #define CYGWIN_DLL_ADDRESS 0x180040000UL -/* New with ASLR: We need a fixed place for the global shared memory areas. - Prior to ASLR, the addresses were relative to the address the Cygwin DLL - was loaded to. */ -#define SHARED_REGIONS_ADDRESS_LOW 0x1f0000000UL -#define CYGWIN_REGION_ADDRESS 0x1f0000000UL -#define USER_REGION_ADDRESS 0x1f2000000UL -#define PINFO_REGION_ADDRESS 0x1f4000000UL -#define SHARED_CONSOLE_REGION_ADDRESS 0x1f6000000UL +/* Default addresses of required standard shared regions (Cygwin shared, + user shared, myself, shared console). */ +#define CYGWIN_REGION_ADDRESS 0x1a0000000UL +#define USER_REGION_ADDRESS 0x1a1000000UL +#define MYSELF_REGION_ADDRESS 0x1a2000000UL +#define SHARED_CONSOLE_REGION_ADDRESS 0x1a3000000UL + +/* Area for non-fixed-address Cygwin-specific shared memory regions. Fallback + for standard shared regions if the can't load at their default address. */ +#define SHARED_REGIONS_ADDRESS_LOW 0x1a4000000UL #define SHARED_REGIONS_ADDRESS_HIGH 0x200000000UL /* Rebased DLLs are located in this 16 Gigs arena. Will be kept for diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index 351d314af0..aa9997c756 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -118,7 +118,7 @@ static uintptr_t region_address[] = { CYGWIN_REGION_ADDRESS, /* SH_CYGWIN_SHARED */ USER_REGION_ADDRESS, /* SH_USER_SHARED */ - PINFO_REGION_ADDRESS, /* SH_MYSELF */ + MYSELF_REGION_ADDRESS, /* SH_MYSELF */ SHARED_CONSOLE_REGION_ADDRESS, /* SH_SHARED_CONSOLE */ 0 }; From dc0fe7742b8c35543200391e07eeb386b5d75b0c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 17 Jan 2023 10:18:51 +0100 Subject: [PATCH 116/767] Cygwin: open_shared: try harder allocating a shared region For fixed regions (cygwin/user/myself/shared console), try fixed address first. Fallback to non-fixed region. Don't even try fixed address if the Cygwin DLL gets dynamically loaded. For non-fixed regions, try to allocate in a loop within the area from SHARED_REGIONS_ADDRESS_LOW to SHARED_REGIONS_ADDRESS_HIGH. Fixes: 60675f1a7eb2 ("Cygwin: decouple shared mem regions from Cygwin DLL") Signed-off-by: Corinna Vinschen --- winsup/cygwin/mm/shared.cc | 58 ++++++++++++++++++++++++++++++------- winsup/cygwin/release/3.4.4 | 6 ++++ 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index aa9997c756..d23cc8e0e5 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -122,6 +122,7 @@ static uintptr_t region_address[] = SHARED_CONSOLE_REGION_ADDRESS, /* SH_SHARED_CONSOLE */ 0 }; +static NO_COPY uintptr_t next_address = SHARED_REGIONS_ADDRESS_LOW; void * open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, @@ -138,14 +139,9 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, { WCHAR map_buf[MAX_PATH]; WCHAR *mapname = NULL; - void *shared; + void *shared = NULL; void *addr; - if (m == SH_JUSTCREATE || m == SH_JUSTOPEN) - addr = NULL; - else - addr = (void *) region_address[m]; - created = false; if (!shared_h) { @@ -170,14 +166,54 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, return NULL; } - shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, - 0, 0, 0, addr); + if (m < SH_TOTAL_SIZE && !dynamically_loaded) + { + /* Fixed regions. Don't do that if Cygwin gets dynamically loaded. + The process loading the DLL might be configured with High-Entropy + ASLR. Chances for collisions are pretty high. + + Note that we don't actually *need* fixed addresses. The only + advantage is reproducibility to help /proc//maps along. */ + addr = (void *) region_address[m]; + shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, + 0, 0, 0, addr); + } + /* Also catch the unlikely case that a fixed region can't be mapped at the + fixed address. */ + if (!shared) + { + /* Locate shared regions in the area between SHARED_REGIONS_ADDRESS_LOW + and SHARED_REGIONS_ADDRESS_HIGH, retrying until we have a slot. + Don't use MapViewOfFile3 (loader deadlock during fork. */ + bool loop = false; + + addr = (void *) next_address; + do + { + shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, + 0, 0, 0, addr); + if (!shared) + { + next_address += wincap.allocation_granularity (); + if (next_address >= SHARED_REGIONS_ADDRESS_HIGH) + { + if (loop) + break; + next_address = SHARED_REGIONS_ADDRESS_LOW; + loop = true; + } + addr = (void *) next_address; + } + } + while (!shared); + } if (!shared) - api_fatal ("MapViewOfFileEx '%W'(%p), %E. Terminating.", mapname, shared_h); + api_fatal ("MapViewOfFileEx '%W'(%p, size %u, m %d, created %d), %E. " + "Terminating.", mapname, shared_h, size, m, created); - debug_printf ("name %W, n %d, shared %p (wanted %p), h %p, m %d", - mapname, n, shared, addr, shared_h, m); + debug_printf ("name %W, shared %p (wanted %p), h %p, m %d, created %d", + mapname, shared, addr, shared_h, m, created); return shared; } diff --git a/winsup/cygwin/release/3.4.4 b/winsup/cygwin/release/3.4.4 index 2c93cd0663..409c589292 100644 --- a/winsup/cygwin/release/3.4.4 +++ b/winsup/cygwin/release/3.4.4 @@ -16,3 +16,9 @@ Bug Fixes - Fix vmstat(1) printing an error message on single core CPUs. Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252857.html + +- Fix potential process termination during process initialization. + Most easily reproducible is the case of non-Cygwin processes running + with high-entropy VA enabled and loading the Cygwin DLL dynamically. + Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252765.html + https://cygwin.com/pipermail/cygwin/2023-January/252865.html From 8d318bf142f7d740172099bfa23b6983eb8379ae Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 17 Jan 2023 17:43:21 +0100 Subject: [PATCH 117/767] Cygwin: disable high-entropy VA for cygcheck and strace It's not a good idea to enable high-entropy VA for tools loading the Cygwin DLL dynamically. The addresses used by HEVA tend to collide with fixed address areas managed by Cygwin. Fixes: 60675f1a7eb2 ("Cygwin: decouple shared mem regions from Cygwin DLL") Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am index 255fc46510..edb314d068 100644 --- a/winsup/utils/mingw/Makefile.am +++ b/winsup/utils/mingw/Makefile.am @@ -32,6 +32,7 @@ cygcheck_SOURCES = \ dump_setup.cc \ path.cc cygcheck_CPPFLAGS=-I$(srcdir)/.. -idirafter ${top_srcdir}/cygwin/include +cygcheck_LDFLAGS = -Wl,--disable-high-entropy-va cygcheck_LDADD = -lz -lwininet -lpsapi -lntdll cygwin_console_helper_SOURCES = cygwin-console-helper.cc @@ -42,6 +43,7 @@ strace_SOURCES = \ path.cc \ strace.cc strace_CPPFLAGS=-I$(srcdir)/.. -idirafter ${top_srcdir}/cygwin/local_includes -idirafter ${top_srcdir}/cygwin/include +strace_LDFLAGS = -Wl,--disable-high-entropy-va strace_LDADD = -lntdll noinst_PROGRAMS = path-testsuite From 9ddd48ee1b8d736ebbd0b0bdf146ecf96774cd8a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 17 Jan 2023 21:58:06 +0100 Subject: [PATCH 118/767] Cygwin: /proc//maps: print real shared region addresses So far, the addresses printed for the shared regions of a process were faked. The assumption was that the shared regions are always in the same place in all processes, so we just printed the addresses of the current process. This is no safe bet. The only safe bet is the address of the cygheap. So keep track of the addresses in the cygheap and read the addresses from the cygheap of the observed processes. Add output for the shared console. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/console.cc | 2 ++ winsup/cygwin/fhandler/process.cc | 11 ++++++++--- winsup/cygwin/local_includes/cygheap.h | 10 ++++++++++ winsup/cygwin/mm/shared.cc | 2 ++ winsup/cygwin/pinfo.cc | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 68ab43d81e..0cbfe4ea41 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -219,6 +219,8 @@ fhandler_console::open_shared_console (HWND hw, HANDLE& h, bool& created) shared_locations m = created ? SH_SHARED_CONSOLE : SH_JUSTOPEN; console_state *res = (console_state *) open_shared (namebuf, 0, h, sizeof (console_state), m, created); + if (m == SH_SHARED_CONSOLE) + cygheap->shared_regions.console_shared_addr = res; return res; } diff --git a/winsup/cygwin/fhandler/process.cc b/winsup/cygwin/fhandler/process.cc index b0aef2ebec..864e2f4d50 100644 --- a/winsup/cygwin/fhandler/process.cc +++ b/winsup/cygwin/fhandler/process.cc @@ -860,8 +860,11 @@ format_process_maps (void *data, char *&destbuf) /* The heap info on the cygheap is also in the same spot in each process because the cygheap is located at the same address. */ user_heap_info user_heap; + shared_region_info region_info; ReadProcessMemory (proc, &cygheap->user_heap, &user_heap, sizeof user_heap, NULL); + ReadProcessMemory (proc, &cygheap->shared_regions, ®ion_info, + sizeof region_info, NULL); off_t len = 0; @@ -1060,12 +1063,14 @@ format_process_maps (void *data, char *&destbuf) strcpy (posix_modname, "[peb]"); else if (cur.abase == (char *) &SharedUserData) strcpy (posix_modname, "[shared-user-data]"); - else if (cur.abase == (char *) cygwin_shared) + else if (cur.abase == region_info.cygwin_shared_addr) strcpy (posix_modname, "[cygwin-shared]"); - else if (cur.abase == (char *) user_shared) + else if (cur.abase == region_info.user_shared_addr) strcpy (posix_modname, "[cygwin-user-shared]"); - else if (cur.abase == (char *) *proc_pinfo) + else if (cur.abase == region_info.myself_shared_addr) strcpy (posix_modname, "[procinfo]"); + else if (cur.abase == region_info.console_shared_addr) + strcpy (posix_modname, "[cygwin-shared-console]"); else if (cur.abase == (char *) cygheap) strcpy (posix_modname, "[cygheap]"); else if (cur.abase == user_heap.base) diff --git a/winsup/cygwin/local_includes/cygheap.h b/winsup/cygwin/local_includes/cygheap.h index ceff0fdcf0..d885ca1230 100644 --- a/winsup/cygwin/local_includes/cygheap.h +++ b/winsup/cygwin/local_includes/cygheap.h @@ -302,6 +302,15 @@ struct user_heap_info void init (); }; +/* This info is maintained for /proc//maps ONLY! */ +struct shared_region_info +{ + void *cygwin_shared_addr; + void *user_shared_addr; + void *myself_shared_addr; + void *console_shared_addr; +}; + class cygheap_domain_info { PWCHAR pdom_name; @@ -503,6 +512,7 @@ struct init_cygheap: public mini_cygheap cygheap_ugid_cache ugid_cache; cygheap_user user; user_heap_info user_heap; + shared_region_info shared_regions; mode_t umask; LONG rlim_as_id; unsigned long rlim_core; diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index d23cc8e0e5..d7d6547ec3 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -274,6 +274,7 @@ user_info::create (bool reinit) debug_printf ("user shared version %x", user_shared->version); if (reinit) user_shared->initialize (); + cygheap->shared_regions.user_shared_addr = user_shared; } void @@ -315,6 +316,7 @@ shared_info::create () SH_CYGWIN_SHARED, &sec_all_nih); cygwin_shared->initialize (); + cygheap->shared_regions.cygwin_shared_addr = cygwin_shared; } void diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index c05cf2662c..37770b643e 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -466,6 +466,8 @@ pinfo::init (pid_t n, DWORD flag, HANDLE h0) h = h0; _pinfo_release (); } + if (shloc == SH_MYSELF) + cygheap->shared_regions.myself_shared_addr = procinfo; } void From 31302b267b86a9e9190dd260f2ff4f0c74410bf3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 18 Jan 2023 13:16:50 +0100 Subject: [PATCH 119/767] Cygwin: drop fixed addresses for standard shared regions With the previous commit 9ddd48ee1b8d ("Cygwin: /proc//maps: print real shared region addresses"), the real addresses of the standard shared regions (cygwin, user, myself, shared console) are read from the printed process itself. We don't need fixed addresses anymore, so drop the definitions and simplify open_shared. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/memory_layout.h | 9 +-- winsup/cygwin/mm/shared.cc | 60 ++++++-------------- 2 files changed, 18 insertions(+), 51 deletions(-) diff --git a/winsup/cygwin/local_includes/memory_layout.h b/winsup/cygwin/local_includes/memory_layout.h index 21e00c1bcf..c763442a9e 100644 --- a/winsup/cygwin/local_includes/memory_layout.h +++ b/winsup/cygwin/local_includes/memory_layout.h @@ -16,16 +16,9 @@ details. */ dynamicbase is accidentally not set in the PE/COFF header of the DLL. */ #define CYGWIN_DLL_ADDRESS 0x180040000UL -/* Default addresses of required standard shared regions (Cygwin shared, - user shared, myself, shared console). */ -#define CYGWIN_REGION_ADDRESS 0x1a0000000UL -#define USER_REGION_ADDRESS 0x1a1000000UL -#define MYSELF_REGION_ADDRESS 0x1a2000000UL -#define SHARED_CONSOLE_REGION_ADDRESS 0x1a3000000UL - /* Area for non-fixed-address Cygwin-specific shared memory regions. Fallback for standard shared regions if the can't load at their default address. */ -#define SHARED_REGIONS_ADDRESS_LOW 0x1a4000000UL +#define SHARED_REGIONS_ADDRESS_LOW 0x1a0000000UL #define SHARED_REGIONS_ADDRESS_HIGH 0x200000000UL /* Rebased DLLs are located in this 16 Gigs arena. Will be kept for diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index d7d6547ec3..eb798c2ddb 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -113,15 +113,6 @@ shared_name (WCHAR *ret_buf, const WCHAR *str, int num) #define page_const ((ptrdiff_t) 65535) #define pround(n) ((ptrdiff_t)(((n) + page_const) & ~page_const)) -/* FIXME: With ASLR, maybe we should ASLR the shared regions, too? */ -static uintptr_t region_address[] = -{ - CYGWIN_REGION_ADDRESS, /* SH_CYGWIN_SHARED */ - USER_REGION_ADDRESS, /* SH_USER_SHARED */ - MYSELF_REGION_ADDRESS, /* SH_MYSELF */ - SHARED_CONSOLE_REGION_ADDRESS, /* SH_SHARED_CONSOLE */ - 0 -}; static NO_COPY uintptr_t next_address = SHARED_REGIONS_ADDRESS_LOW; void * @@ -139,7 +130,7 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, { WCHAR map_buf[MAX_PATH]; WCHAR *mapname = NULL; - void *shared = NULL; + void *shared; void *addr; created = false; @@ -166,47 +157,30 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, return NULL; } - if (m < SH_TOTAL_SIZE && !dynamically_loaded) - { - /* Fixed regions. Don't do that if Cygwin gets dynamically loaded. - The process loading the DLL might be configured with High-Entropy - ASLR. Chances for collisions are pretty high. + /* Locate shared regions in the area between SHARED_REGIONS_ADDRESS_LOW + and SHARED_REGIONS_ADDRESS_HIGH, retrying until we have a slot. + Don't use MapViewOfFile3 (loader deadlock during fork. */ + bool loop = false; - Note that we don't actually *need* fixed addresses. The only - advantage is reproducibility to help /proc//maps along. */ - addr = (void *) region_address[m]; + addr = (void *) next_address; + do + { shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0, addr); - } - /* Also catch the unlikely case that a fixed region can't be mapped at the - fixed address. */ - if (!shared) - { - /* Locate shared regions in the area between SHARED_REGIONS_ADDRESS_LOW - and SHARED_REGIONS_ADDRESS_HIGH, retrying until we have a slot. - Don't use MapViewOfFile3 (loader deadlock during fork. */ - bool loop = false; - - addr = (void *) next_address; - do + if (!shared) { - shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, - 0, 0, 0, addr); - if (!shared) + next_address += wincap.allocation_granularity (); + if (next_address >= SHARED_REGIONS_ADDRESS_HIGH) { - next_address += wincap.allocation_granularity (); - if (next_address >= SHARED_REGIONS_ADDRESS_HIGH) - { - if (loop) - break; - next_address = SHARED_REGIONS_ADDRESS_LOW; - loop = true; - } - addr = (void *) next_address; + if (loop) + break; + next_address = SHARED_REGIONS_ADDRESS_LOW; + loop = true; } + addr = (void *) next_address; } - while (!shared); } + while (!shared); if (!shared) api_fatal ("MapViewOfFileEx '%W'(%p, size %u, m %d, created %d), %E. " From e18743072bc7fd56ec812e52dcfde5b686d1df8f Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung Date: Fri, 2 Dec 2022 20:00:11 +0000 Subject: [PATCH 120/767] amdgcn: Add vectorized math routines This implements a set of vectorized math routines to be used by the compiler auto-vectorizer. Versions for vectors with 2 lanes up to 64 lanes (in powers of 2) are provided. These routines are based on the scalar versions of the math routines in libm/common, libm/math and libm/mathfp. They make extensive use of the GCC C vector extensions and GCN-specific builtins in GCC. --- newlib/Makefile.in | 1865 +++++++++++++++++- newlib/configure | 14 + newlib/configure.host | 1 + newlib/libm/Makefile.inc | 3 + newlib/libm/acinclude.m4 | 2 +- newlib/libm/machine/amdgcn/Makefile.inc | 91 + newlib/libm/machine/amdgcn/amdgcn_veclib.h | 321 +++ newlib/libm/machine/amdgcn/amdgcnmach.h | 242 +++ newlib/libm/machine/amdgcn/v64_mathcnst.c | 52 + newlib/libm/machine/amdgcn/v64_reent.c | 24 + newlib/libm/machine/amdgcn/v64df_acos.c | 42 + newlib/libm/machine/amdgcn/v64df_acosh.c | 81 + newlib/libm/machine/amdgcn/v64df_asin.c | 41 + newlib/libm/machine/amdgcn/v64df_asine.c | 135 ++ newlib/libm/machine/amdgcn/v64df_asinh.c | 81 + newlib/libm/machine/amdgcn/v64df_atan.c | 43 + newlib/libm/machine/amdgcn/v64df_atan2.c | 41 + newlib/libm/machine/amdgcn/v64df_atangent.c | 161 ++ newlib/libm/machine/amdgcn/v64df_atanh.c | 75 + newlib/libm/machine/amdgcn/v64df_copysign.c | 43 + newlib/libm/machine/amdgcn/v64df_cos.c | 41 + newlib/libm/machine/amdgcn/v64df_cosh.c | 41 + newlib/libm/machine/amdgcn/v64df_erf.c | 185 ++ newlib/libm/machine/amdgcn/v64df_exp.c | 103 + newlib/libm/machine/amdgcn/v64df_exp2.c | 32 + newlib/libm/machine/amdgcn/v64df_finite.c | 38 + newlib/libm/machine/amdgcn/v64df_fmod.c | 199 ++ newlib/libm/machine/amdgcn/v64df_gamma.c | 38 + newlib/libm/machine/amdgcn/v64df_hypot.c | 127 ++ newlib/libm/machine/amdgcn/v64df_ilogb.c | 59 + newlib/libm/machine/amdgcn/v64df_isnan.c | 41 + newlib/libm/machine/amdgcn/v64df_ispos.c | 47 + newlib/libm/machine/amdgcn/v64df_lgamma.c | 44 + newlib/libm/machine/amdgcn/v64df_lgamma_r.c | 300 +++ newlib/libm/machine/amdgcn/v64df_log.c | 111 ++ newlib/libm/machine/amdgcn/v64df_log10.c | 50 + newlib/libm/machine/amdgcn/v64df_log2.c | 26 + newlib/libm/machine/amdgcn/v64df_modf.c | 80 + newlib/libm/machine/amdgcn/v64df_numtest.c | 60 + newlib/libm/machine/amdgcn/v64df_pow.c | 336 ++++ newlib/libm/machine/amdgcn/v64df_remainder.c | 82 + newlib/libm/machine/amdgcn/v64df_rint.c | 83 + newlib/libm/machine/amdgcn/v64df_scalb.c | 64 + newlib/libm/machine/amdgcn/v64df_scalbn.c | 72 + newlib/libm/machine/amdgcn/v64df_signif.c | 39 + newlib/libm/machine/amdgcn/v64df_sin.c | 41 + newlib/libm/machine/amdgcn/v64df_sine.c | 126 ++ newlib/libm/machine/amdgcn/v64df_sineh.c | 130 ++ newlib/libm/machine/amdgcn/v64df_sinh.c | 41 + newlib/libm/machine/amdgcn/v64df_sqrt.c | 104 + newlib/libm/machine/amdgcn/v64df_tan.c | 156 ++ newlib/libm/machine/amdgcn/v64df_tanh.c | 92 + newlib/libm/machine/amdgcn/v64df_tgamma.c | 42 + newlib/libm/machine/amdgcn/v64sf_acos.c | 41 + newlib/libm/machine/amdgcn/v64sf_acosh.c | 80 + newlib/libm/machine/amdgcn/v64sf_asin.c | 41 + newlib/libm/machine/amdgcn/v64sf_asine.c | 127 ++ newlib/libm/machine/amdgcn/v64sf_asinh.c | 82 + newlib/libm/machine/amdgcn/v64sf_atan.c | 42 + newlib/libm/machine/amdgcn/v64sf_atan2.c | 41 + newlib/libm/machine/amdgcn/v64sf_atangent.c | 152 ++ newlib/libm/machine/amdgcn/v64sf_atanh.c | 75 + newlib/libm/machine/amdgcn/v64sf_copysign.c | 43 + newlib/libm/machine/amdgcn/v64sf_cos.c | 41 + newlib/libm/machine/amdgcn/v64sf_cosh.c | 41 + newlib/libm/machine/amdgcn/v64sf_erf.c | 186 ++ newlib/libm/machine/amdgcn/v64sf_exp.c | 102 + newlib/libm/machine/amdgcn/v64sf_exp2.c | 32 + newlib/libm/machine/amdgcn/v64sf_finite.c | 37 + newlib/libm/machine/amdgcn/v64sf_fmod.c | 147 ++ newlib/libm/machine/amdgcn/v64sf_gamma.c | 38 + newlib/libm/machine/amdgcn/v64sf_hypot.c | 118 ++ newlib/libm/machine/amdgcn/v64sf_ilogb.c | 56 + newlib/libm/machine/amdgcn/v64sf_isnan.c | 37 + newlib/libm/machine/amdgcn/v64sf_ispos.c | 40 + newlib/libm/machine/amdgcn/v64sf_lgamma.c | 44 + newlib/libm/machine/amdgcn/v64sf_lgamma_r.c | 300 +++ newlib/libm/machine/amdgcn/v64sf_log.c | 111 ++ newlib/libm/machine/amdgcn/v64sf_log10.c | 50 + newlib/libm/machine/amdgcn/v64sf_log2.c | 26 + newlib/libm/machine/amdgcn/v64sf_modf.c | 69 + newlib/libm/machine/amdgcn/v64sf_numtest.c | 59 + newlib/libm/machine/amdgcn/v64sf_pow.c | 306 +++ newlib/libm/machine/amdgcn/v64sf_remainder.c | 85 + newlib/libm/machine/amdgcn/v64sf_rint.c | 76 + newlib/libm/machine/amdgcn/v64sf_scalb.c | 73 + newlib/libm/machine/amdgcn/v64sf_scalbn.c | 92 + newlib/libm/machine/amdgcn/v64sf_signif.c | 38 + newlib/libm/machine/amdgcn/v64sf_sin.c | 41 + newlib/libm/machine/amdgcn/v64sf_sine.c | 122 ++ newlib/libm/machine/amdgcn/v64sf_sineh.c | 127 ++ newlib/libm/machine/amdgcn/v64sf_sinh.c | 41 + newlib/libm/machine/amdgcn/v64sf_sqrt.c | 103 + newlib/libm/machine/amdgcn/v64sf_tan.c | 152 ++ newlib/libm/machine/amdgcn/v64sf_tanh.c | 92 + newlib/libm/machine/amdgcn/v64sf_tgamma.c | 42 + 96 files changed, 9990 insertions(+), 46 deletions(-) create mode 100644 newlib/libm/machine/amdgcn/Makefile.inc create mode 100644 newlib/libm/machine/amdgcn/amdgcn_veclib.h create mode 100644 newlib/libm/machine/amdgcn/amdgcnmach.h create mode 100644 newlib/libm/machine/amdgcn/v64_mathcnst.c create mode 100644 newlib/libm/machine/amdgcn/v64_reent.c create mode 100644 newlib/libm/machine/amdgcn/v64df_acos.c create mode 100644 newlib/libm/machine/amdgcn/v64df_acosh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_asin.c create mode 100644 newlib/libm/machine/amdgcn/v64df_asine.c create mode 100644 newlib/libm/machine/amdgcn/v64df_asinh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atan.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atan2.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atangent.c create mode 100644 newlib/libm/machine/amdgcn/v64df_atanh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_copysign.c create mode 100644 newlib/libm/machine/amdgcn/v64df_cos.c create mode 100644 newlib/libm/machine/amdgcn/v64df_cosh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_erf.c create mode 100644 newlib/libm/machine/amdgcn/v64df_exp.c create mode 100644 newlib/libm/machine/amdgcn/v64df_exp2.c create mode 100644 newlib/libm/machine/amdgcn/v64df_finite.c create mode 100644 newlib/libm/machine/amdgcn/v64df_fmod.c create mode 100644 newlib/libm/machine/amdgcn/v64df_gamma.c create mode 100644 newlib/libm/machine/amdgcn/v64df_hypot.c create mode 100644 newlib/libm/machine/amdgcn/v64df_ilogb.c create mode 100644 newlib/libm/machine/amdgcn/v64df_isnan.c create mode 100644 newlib/libm/machine/amdgcn/v64df_ispos.c create mode 100644 newlib/libm/machine/amdgcn/v64df_lgamma.c create mode 100644 newlib/libm/machine/amdgcn/v64df_lgamma_r.c create mode 100644 newlib/libm/machine/amdgcn/v64df_log.c create mode 100644 newlib/libm/machine/amdgcn/v64df_log10.c create mode 100644 newlib/libm/machine/amdgcn/v64df_log2.c create mode 100644 newlib/libm/machine/amdgcn/v64df_modf.c create mode 100644 newlib/libm/machine/amdgcn/v64df_numtest.c create mode 100644 newlib/libm/machine/amdgcn/v64df_pow.c create mode 100644 newlib/libm/machine/amdgcn/v64df_remainder.c create mode 100644 newlib/libm/machine/amdgcn/v64df_rint.c create mode 100644 newlib/libm/machine/amdgcn/v64df_scalb.c create mode 100644 newlib/libm/machine/amdgcn/v64df_scalbn.c create mode 100644 newlib/libm/machine/amdgcn/v64df_signif.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sin.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sine.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sineh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sinh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_sqrt.c create mode 100644 newlib/libm/machine/amdgcn/v64df_tan.c create mode 100644 newlib/libm/machine/amdgcn/v64df_tanh.c create mode 100644 newlib/libm/machine/amdgcn/v64df_tgamma.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_acos.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_acosh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_asin.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_asine.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_asinh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atan.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atan2.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atangent.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_atanh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_copysign.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_cos.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_cosh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_erf.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_exp.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_exp2.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_finite.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_fmod.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_gamma.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_hypot.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_ilogb.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_isnan.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_ispos.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_lgamma.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_lgamma_r.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_log.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_log10.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_log2.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_modf.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_numtest.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_pow.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_remainder.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_rint.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_scalb.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_scalbn.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_signif.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sin.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sine.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sineh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sinh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_sqrt.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_tan.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_tanh.c create mode 100644 newlib/libm/machine/amdgcn/v64sf_tgamma.c diff --git a/newlib/Makefile.in b/newlib/Makefile.in index dea52b0f7e..bc967bd707 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -911,18 +911,19 @@ check_PROGRAMS = @NEWLIB_HW_FP_FALSE@am__append_136 = libm/math/math.tex @HAVE_LONG_DOUBLE_TRUE@am__append_137 = $(libm_common_lsrc) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_138 = $(libm_machine_aarch64_src) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_139 = $(libm_machine_arm_src) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_140 = $(libm_machine_i386_src) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_141 = $(libm_machine_mips_src) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_142 = libm/machine/nds32/wf_sqrt.S -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/w_sqrt.S -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = $(libm_machine_nds32_src) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_145 = $(libm_machine_powerpc_src) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_146 = $(libm_machine_pru_src) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_147 = $(libm_machine_sparc_src) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_148 = $(libm_machine_spu_src) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_149 = $(libm_machine_riscv_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_150 = $(libm_machine_x86_64_src) +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_139 = $(libm_machine_amdgcn_src) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_140 = $(libm_machine_arm_src) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_141 = $(libm_machine_i386_src) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_142 = $(libm_machine_mips_src) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/wf_sqrt.S +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = libm/machine/nds32/w_sqrt.S +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_145 = $(libm_machine_nds32_src) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_146 = $(libm_machine_powerpc_src) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_147 = $(libm_machine_pru_src) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_148 = $(libm_machine_sparc_src) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_149 = $(libm_machine_spu_src) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_150 = $(libm_machine_riscv_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_151 = $(libm_machine_x86_64_src) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -3093,7 +3094,96 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_157 = $(am__objects_156) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_158 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_158 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_asinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atangent.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_atanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_copysign.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_cos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_cosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_erf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_exp.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_exp2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_finite.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_fmod.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_gamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_hypot.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_ilogb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_isnan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_ispos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_lgamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_lgamma_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log10.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_log2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_modf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_numtest.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_pow.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_remainder.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_rint.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_scalb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_scalbn.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_signif.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sineh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_tgamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_acos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_acosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_asinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atangent.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_atanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_copysign.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_cos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_cosh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_erf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_exp.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_exp2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_finite.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_fmod.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_gamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_hypot.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_ilogb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_isnan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_ispos.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_lgamma.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_lgamma_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log10.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_log2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_modf.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_numtest.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_pow.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_remainder.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_rint.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_scalb.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_scalbn.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_signif.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sin.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sine.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sineh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sinh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT) +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_159 = $(am__objects_158) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_160 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_floor.$(OBJEXT) \ @@ -3124,8 +3214,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feenableexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-fedisableexcept.$(OBJEXT) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_159 = $(am__objects_158) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_160 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_161 = $(am__objects_160) +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_162 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_atan2f.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_exp.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_expf.$(OBJEXT) \ @@ -3162,8 +3252,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_161 = $(am__objects_160) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_162 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_163 = $(am__objects_162) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_164 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetround.$(OBJEXT) \ @@ -3175,13 +3265,13 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_163 = $(am__objects_162) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_164 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_165 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = $(am__objects_164) \ -@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_165) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = $(am__objects_166) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_168 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_165 = $(am__objects_164) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_168 = $(am__objects_166) \ +@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_167) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_169 = $(am__objects_168) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_170 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetround.$(OBJEXT) \ @@ -3193,8 +3283,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_169 = $(am__objects_168) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_170 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_171 = $(am__objects_170) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_172 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-fpclassifyf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinite.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinitef.$(OBJEXT) \ @@ -3204,8 +3294,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnanf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormalf.$(OBJEXT) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_171 = $(am__objects_170) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_172 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_173 = $(am__objects_172) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_174 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetround.$(OBJEXT) \ @@ -3217,8 +3307,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_173 = $(am__objects_172) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_174 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_175 = $(am__objects_174) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_176 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3343,8 +3433,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sinh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_175 = $(am__objects_174) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_176 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_177 = $(am__objects_176) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_178 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3384,8 +3474,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llrint.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-s_llround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llround.$(OBJEXT) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_177 = $(am__objects_176) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_178 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_179 = $(am__objects_178) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_180 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetround.$(OBJEXT) \ @@ -3397,14 +3487,15 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_179 = $(am__objects_178) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_181 = $(am__objects_180) am_libm_a_OBJECTS = $(am__objects_143) $(am__objects_147) \ $(am__objects_148) $(am__objects_149) $(am__objects_151) \ $(am__objects_152) $(am__objects_153) $(am__objects_154) \ $(am__objects_155) $(am__objects_157) $(am__objects_159) \ - $(am__objects_161) $(am__objects_163) $(am__objects_167) \ + $(am__objects_161) $(am__objects_163) $(am__objects_165) \ $(am__objects_169) $(am__objects_171) $(am__objects_173) \ - $(am__objects_175) $(am__objects_177) $(am__objects_179) + $(am__objects_175) $(am__objects_177) $(am__objects_179) \ + $(am__objects_181) libm_a_OBJECTS = $(am_libm_a_OBJECTS) am_libm_test_test_OBJECTS = libm/test/test.$(OBJEXT) \ libm/test/string.$(OBJEXT) libm/test/convert.$(OBJEXT) \ @@ -3954,9 +4045,10 @@ libm_a_SOURCES = $(am__append_131) $(am__append_134) \ $(libm_common_src) $(libm_common_fsrc) $(am__append_137) \ $(libm_complex_src) $(libm_complex_fsrc) $(libm_complex_lsrc) \ $(libm_fenv_src) $(am__append_138) $(am__append_139) \ - $(am__append_140) $(am__append_141) $(am__append_144) \ + $(am__append_140) $(am__append_141) $(am__append_142) \ $(am__append_145) $(am__append_146) $(am__append_147) \ - $(am__append_148) $(am__append_149) $(am__append_150) + $(am__append_148) $(am__append_149) $(am__append_150) \ + $(am__append_151) libm_a_CFLAGS = $(AM_CFLAGS) $(libm_a_CFLAGS_$(subst /,_,$(@D))) $(libm_a_CFLAGS_$(subst /,_,$(@D)_$( libm/machine/amdgcn/$(am__dirstamp) +libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libm/machine/amdgcn/$(DEPDIR) + @: > libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_asin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_asine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_asinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atan2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atangent.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_atanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_copysign.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_cos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_cosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_erf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_exp.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_exp2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_finite.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_fmod.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_gamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_hypot.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_ilogb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_isnan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_ispos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_lgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_lgamma_r.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_log.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_log10.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_log2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_modf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_numtest.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_pow.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_remainder.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_rint.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_scalb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_scalbn.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_signif.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sineh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_sqrt.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_tan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_tanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64df_tgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_acos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_acosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_asin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_asine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_asinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atan2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atangent.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_atanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_copysign.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_cos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_cosh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_erf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_exp.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_exp2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_finite.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_fmod.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_gamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_hypot.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_ilogb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_isnan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_ispos.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_lgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_lgamma_r.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_log.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_log10.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_log2.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_modf.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_numtest.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_pow.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_remainder.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_rint.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_scalb.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_scalbn.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_signif.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sin.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sine.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sineh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sinh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_sqrt.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) +libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT): \ + libm/machine/amdgcn/$(am__dirstamp) \ + libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) libm/machine/arm/$(am__dirstamp): @$(MKDIR_P) libm/machine/arm @: > libm/machine/arm/$(am__dirstamp) @@ -11626,6 +12078,7 @@ mostlyclean-compile: -rm -f libm/complex/*.$(OBJEXT) -rm -f libm/fenv/*.$(OBJEXT) -rm -f libm/machine/aarch64/*.$(OBJEXT) + -rm -f libm/machine/amdgcn/*.$(OBJEXT) -rm -f libm/machine/arm/*.$(OBJEXT) -rm -f libm/machine/i386/*.$(OBJEXT) -rm -f libm/machine/mips/*.$(OBJEXT) @@ -13403,6 +13856,94 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_rint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_round.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-sf_trunc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-ef_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/arm/$(DEPDIR)/libm_a-fe_dfl_env.Po@am__quote@ @@ -42063,6 +42604,1238 @@ libm/machine/aarch64/libm_a-feupdateenv.obj: libm/machine/aarch64/feupdateenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-feupdateenv.obj `if test -f 'libm/machine/aarch64/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/aarch64/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/feupdateenv.c'; fi` +libm/machine/amdgcn/libm_a-v64_mathcnst.o: libm/machine/amdgcn/v64_mathcnst.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_mathcnst.c' object='libm/machine/amdgcn/libm_a-v64_mathcnst.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c + +libm/machine/amdgcn/libm_a-v64_mathcnst.obj: libm/machine/amdgcn/v64_mathcnst.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.obj `if test -f 'libm/machine/amdgcn/v64_mathcnst.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_mathcnst.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_mathcnst.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_mathcnst.c' object='libm/machine/amdgcn/libm_a-v64_mathcnst.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.obj `if test -f 'libm/machine/amdgcn/v64_mathcnst.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_mathcnst.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_mathcnst.c'; fi` + +libm/machine/amdgcn/libm_a-v64_reent.o: libm/machine/amdgcn/v64_reent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_reent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo -c -o libm/machine/amdgcn/libm_a-v64_reent.o `test -f 'libm/machine/amdgcn/v64_reent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_reent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_reent.c' object='libm/machine/amdgcn/libm_a-v64_reent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_reent.o `test -f 'libm/machine/amdgcn/v64_reent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_reent.c + +libm/machine/amdgcn/libm_a-v64_reent.obj: libm/machine/amdgcn/v64_reent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_reent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo -c -o libm/machine/amdgcn/libm_a-v64_reent.obj `if test -f 'libm/machine/amdgcn/v64_reent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_reent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_reent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_reent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64_reent.c' object='libm/machine/amdgcn/libm_a-v64_reent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64_reent.obj `if test -f 'libm/machine/amdgcn/v64_reent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64_reent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64_reent.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_acos.o: libm/machine/amdgcn/v64df_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acos.o `test -f 'libm/machine/amdgcn/v64df_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acos.c' object='libm/machine/amdgcn/libm_a-v64df_acos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acos.o `test -f 'libm/machine/amdgcn/v64df_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acos.c + +libm/machine/amdgcn/libm_a-v64df_acos.obj: libm/machine/amdgcn/v64df_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acos.obj `if test -f 'libm/machine/amdgcn/v64df_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acos.c' object='libm/machine/amdgcn/libm_a-v64df_acos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acos.obj `if test -f 'libm/machine/amdgcn/v64df_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acos.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_acosh.o: libm/machine/amdgcn/v64df_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acosh.o `test -f 'libm/machine/amdgcn/v64df_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acosh.c' object='libm/machine/amdgcn/libm_a-v64df_acosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acosh.o `test -f 'libm/machine/amdgcn/v64df_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_acosh.c + +libm/machine/amdgcn/libm_a-v64df_acosh.obj: libm/machine/amdgcn/v64df_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_acosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_acosh.obj `if test -f 'libm/machine/amdgcn/v64df_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_acosh.c' object='libm/machine/amdgcn/libm_a-v64df_acosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_acosh.obj `if test -f 'libm/machine/amdgcn/v64df_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_acosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_asin.o: libm/machine/amdgcn/v64df_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asin.o `test -f 'libm/machine/amdgcn/v64df_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asin.c' object='libm/machine/amdgcn/libm_a-v64df_asin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asin.o `test -f 'libm/machine/amdgcn/v64df_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asin.c + +libm/machine/amdgcn/libm_a-v64df_asin.obj: libm/machine/amdgcn/v64df_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asin.obj `if test -f 'libm/machine/amdgcn/v64df_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asin.c' object='libm/machine/amdgcn/libm_a-v64df_asin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asin.obj `if test -f 'libm/machine/amdgcn/v64df_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asin.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_asine.o: libm/machine/amdgcn/v64df_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asine.o `test -f 'libm/machine/amdgcn/v64df_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asine.c' object='libm/machine/amdgcn/libm_a-v64df_asine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asine.o `test -f 'libm/machine/amdgcn/v64df_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asine.c + +libm/machine/amdgcn/libm_a-v64df_asine.obj: libm/machine/amdgcn/v64df_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asine.obj `if test -f 'libm/machine/amdgcn/v64df_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asine.c' object='libm/machine/amdgcn/libm_a-v64df_asine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asine.obj `if test -f 'libm/machine/amdgcn/v64df_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asine.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_asinh.o: libm/machine/amdgcn/v64df_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asinh.o `test -f 'libm/machine/amdgcn/v64df_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asinh.c' object='libm/machine/amdgcn/libm_a-v64df_asinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asinh.o `test -f 'libm/machine/amdgcn/v64df_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_asinh.c + +libm/machine/amdgcn/libm_a-v64df_asinh.obj: libm/machine/amdgcn/v64df_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_asinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_asinh.obj `if test -f 'libm/machine/amdgcn/v64df_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_asinh.c' object='libm/machine/amdgcn/libm_a-v64df_asinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_asinh.obj `if test -f 'libm/machine/amdgcn/v64df_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_asinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atan.o: libm/machine/amdgcn/v64df_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan.o `test -f 'libm/machine/amdgcn/v64df_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan.c' object='libm/machine/amdgcn/libm_a-v64df_atan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan.o `test -f 'libm/machine/amdgcn/v64df_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan.c + +libm/machine/amdgcn/libm_a-v64df_atan.obj: libm/machine/amdgcn/v64df_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan.obj `if test -f 'libm/machine/amdgcn/v64df_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan.c' object='libm/machine/amdgcn/libm_a-v64df_atan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan.obj `if test -f 'libm/machine/amdgcn/v64df_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atan2.o: libm/machine/amdgcn/v64df_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan2.o `test -f 'libm/machine/amdgcn/v64df_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan2.c' object='libm/machine/amdgcn/libm_a-v64df_atan2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan2.o `test -f 'libm/machine/amdgcn/v64df_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atan2.c + +libm/machine/amdgcn/libm_a-v64df_atan2.obj: libm/machine/amdgcn/v64df_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atan2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atan2.obj `if test -f 'libm/machine/amdgcn/v64df_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atan2.c' object='libm/machine/amdgcn/libm_a-v64df_atan2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atan2.obj `if test -f 'libm/machine/amdgcn/v64df_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atan2.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atangent.o: libm/machine/amdgcn/v64df_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atangent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atangent.o `test -f 'libm/machine/amdgcn/v64df_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atangent.c' object='libm/machine/amdgcn/libm_a-v64df_atangent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atangent.o `test -f 'libm/machine/amdgcn/v64df_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atangent.c + +libm/machine/amdgcn/libm_a-v64df_atangent.obj: libm/machine/amdgcn/v64df_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atangent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atangent.obj `if test -f 'libm/machine/amdgcn/v64df_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atangent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atangent.c' object='libm/machine/amdgcn/libm_a-v64df_atangent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atangent.obj `if test -f 'libm/machine/amdgcn/v64df_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atangent.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_atanh.o: libm/machine/amdgcn/v64df_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atanh.o `test -f 'libm/machine/amdgcn/v64df_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atanh.c' object='libm/machine/amdgcn/libm_a-v64df_atanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atanh.o `test -f 'libm/machine/amdgcn/v64df_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_atanh.c + +libm/machine/amdgcn/libm_a-v64df_atanh.obj: libm/machine/amdgcn/v64df_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_atanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_atanh.obj `if test -f 'libm/machine/amdgcn/v64df_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_atanh.c' object='libm/machine/amdgcn/libm_a-v64df_atanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_atanh.obj `if test -f 'libm/machine/amdgcn/v64df_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_atanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_copysign.o: libm/machine/amdgcn/v64df_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_copysign.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_copysign.o `test -f 'libm/machine/amdgcn/v64df_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_copysign.c' object='libm/machine/amdgcn/libm_a-v64df_copysign.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_copysign.o `test -f 'libm/machine/amdgcn/v64df_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_copysign.c + +libm/machine/amdgcn/libm_a-v64df_copysign.obj: libm/machine/amdgcn/v64df_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_copysign.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_copysign.obj `if test -f 'libm/machine/amdgcn/v64df_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_copysign.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_copysign.c' object='libm/machine/amdgcn/libm_a-v64df_copysign.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_copysign.obj `if test -f 'libm/machine/amdgcn/v64df_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_copysign.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_cos.o: libm/machine/amdgcn/v64df_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cos.o `test -f 'libm/machine/amdgcn/v64df_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cos.c' object='libm/machine/amdgcn/libm_a-v64df_cos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cos.o `test -f 'libm/machine/amdgcn/v64df_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cos.c + +libm/machine/amdgcn/libm_a-v64df_cos.obj: libm/machine/amdgcn/v64df_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cos.obj `if test -f 'libm/machine/amdgcn/v64df_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cos.c' object='libm/machine/amdgcn/libm_a-v64df_cos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cos.obj `if test -f 'libm/machine/amdgcn/v64df_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cos.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_cosh.o: libm/machine/amdgcn/v64df_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cosh.o `test -f 'libm/machine/amdgcn/v64df_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cosh.c' object='libm/machine/amdgcn/libm_a-v64df_cosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cosh.o `test -f 'libm/machine/amdgcn/v64df_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_cosh.c + +libm/machine/amdgcn/libm_a-v64df_cosh.obj: libm/machine/amdgcn/v64df_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_cosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_cosh.obj `if test -f 'libm/machine/amdgcn/v64df_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_cosh.c' object='libm/machine/amdgcn/libm_a-v64df_cosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_cosh.obj `if test -f 'libm/machine/amdgcn/v64df_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_cosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_erf.o: libm/machine/amdgcn/v64df_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_erf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_erf.o `test -f 'libm/machine/amdgcn/v64df_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_erf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_erf.c' object='libm/machine/amdgcn/libm_a-v64df_erf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_erf.o `test -f 'libm/machine/amdgcn/v64df_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_erf.c + +libm/machine/amdgcn/libm_a-v64df_erf.obj: libm/machine/amdgcn/v64df_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_erf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_erf.obj `if test -f 'libm/machine/amdgcn/v64df_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_erf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_erf.c' object='libm/machine/amdgcn/libm_a-v64df_erf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_erf.obj `if test -f 'libm/machine/amdgcn/v64df_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_erf.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_exp.o: libm/machine/amdgcn/v64df_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp.o `test -f 'libm/machine/amdgcn/v64df_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp.c' object='libm/machine/amdgcn/libm_a-v64df_exp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp.o `test -f 'libm/machine/amdgcn/v64df_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp.c + +libm/machine/amdgcn/libm_a-v64df_exp.obj: libm/machine/amdgcn/v64df_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp.obj `if test -f 'libm/machine/amdgcn/v64df_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp.c' object='libm/machine/amdgcn/libm_a-v64df_exp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp.obj `if test -f 'libm/machine/amdgcn/v64df_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_exp2.o: libm/machine/amdgcn/v64df_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp2.o `test -f 'libm/machine/amdgcn/v64df_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp2.c' object='libm/machine/amdgcn/libm_a-v64df_exp2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp2.o `test -f 'libm/machine/amdgcn/v64df_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_exp2.c + +libm/machine/amdgcn/libm_a-v64df_exp2.obj: libm/machine/amdgcn/v64df_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_exp2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_exp2.obj `if test -f 'libm/machine/amdgcn/v64df_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_exp2.c' object='libm/machine/amdgcn/libm_a-v64df_exp2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_exp2.obj `if test -f 'libm/machine/amdgcn/v64df_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_exp2.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_finite.o: libm/machine/amdgcn/v64df_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_finite.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_finite.o `test -f 'libm/machine/amdgcn/v64df_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_finite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_finite.c' object='libm/machine/amdgcn/libm_a-v64df_finite.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_finite.o `test -f 'libm/machine/amdgcn/v64df_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_finite.c + +libm/machine/amdgcn/libm_a-v64df_finite.obj: libm/machine/amdgcn/v64df_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_finite.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_finite.obj `if test -f 'libm/machine/amdgcn/v64df_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_finite.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_finite.c' object='libm/machine/amdgcn/libm_a-v64df_finite.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_finite.obj `if test -f 'libm/machine/amdgcn/v64df_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_finite.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_fmod.o: libm/machine/amdgcn/v64df_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_fmod.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_fmod.o `test -f 'libm/machine/amdgcn/v64df_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_fmod.c' object='libm/machine/amdgcn/libm_a-v64df_fmod.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_fmod.o `test -f 'libm/machine/amdgcn/v64df_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_fmod.c + +libm/machine/amdgcn/libm_a-v64df_fmod.obj: libm/machine/amdgcn/v64df_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_fmod.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_fmod.obj `if test -f 'libm/machine/amdgcn/v64df_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_fmod.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_fmod.c' object='libm/machine/amdgcn/libm_a-v64df_fmod.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_fmod.obj `if test -f 'libm/machine/amdgcn/v64df_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_fmod.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_gamma.o: libm/machine/amdgcn/v64df_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_gamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_gamma.o `test -f 'libm/machine/amdgcn/v64df_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_gamma.c' object='libm/machine/amdgcn/libm_a-v64df_gamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_gamma.o `test -f 'libm/machine/amdgcn/v64df_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_gamma.c + +libm/machine/amdgcn/libm_a-v64df_gamma.obj: libm/machine/amdgcn/v64df_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_gamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_gamma.obj `if test -f 'libm/machine/amdgcn/v64df_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_gamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_gamma.c' object='libm/machine/amdgcn/libm_a-v64df_gamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_gamma.obj `if test -f 'libm/machine/amdgcn/v64df_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_gamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_hypot.o: libm/machine/amdgcn/v64df_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_hypot.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_hypot.o `test -f 'libm/machine/amdgcn/v64df_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_hypot.c' object='libm/machine/amdgcn/libm_a-v64df_hypot.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_hypot.o `test -f 'libm/machine/amdgcn/v64df_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_hypot.c + +libm/machine/amdgcn/libm_a-v64df_hypot.obj: libm/machine/amdgcn/v64df_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_hypot.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_hypot.obj `if test -f 'libm/machine/amdgcn/v64df_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_hypot.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_hypot.c' object='libm/machine/amdgcn/libm_a-v64df_hypot.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_hypot.obj `if test -f 'libm/machine/amdgcn/v64df_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_hypot.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_ilogb.o: libm/machine/amdgcn/v64df_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ilogb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.o `test -f 'libm/machine/amdgcn/v64df_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ilogb.c' object='libm/machine/amdgcn/libm_a-v64df_ilogb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.o `test -f 'libm/machine/amdgcn/v64df_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ilogb.c + +libm/machine/amdgcn/libm_a-v64df_ilogb.obj: libm/machine/amdgcn/v64df_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ilogb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.obj `if test -f 'libm/machine/amdgcn/v64df_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ilogb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ilogb.c' object='libm/machine/amdgcn/libm_a-v64df_ilogb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ilogb.obj `if test -f 'libm/machine/amdgcn/v64df_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ilogb.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_isnan.o: libm/machine/amdgcn/v64df_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_isnan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_isnan.o `test -f 'libm/machine/amdgcn/v64df_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_isnan.c' object='libm/machine/amdgcn/libm_a-v64df_isnan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_isnan.o `test -f 'libm/machine/amdgcn/v64df_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_isnan.c + +libm/machine/amdgcn/libm_a-v64df_isnan.obj: libm/machine/amdgcn/v64df_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_isnan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_isnan.obj `if test -f 'libm/machine/amdgcn/v64df_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_isnan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_isnan.c' object='libm/machine/amdgcn/libm_a-v64df_isnan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_isnan.obj `if test -f 'libm/machine/amdgcn/v64df_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_isnan.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_ispos.o: libm/machine/amdgcn/v64df_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ispos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ispos.o `test -f 'libm/machine/amdgcn/v64df_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ispos.c' object='libm/machine/amdgcn/libm_a-v64df_ispos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ispos.o `test -f 'libm/machine/amdgcn/v64df_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_ispos.c + +libm/machine/amdgcn/libm_a-v64df_ispos.obj: libm/machine/amdgcn/v64df_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_ispos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_ispos.obj `if test -f 'libm/machine/amdgcn/v64df_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ispos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_ispos.c' object='libm/machine/amdgcn/libm_a-v64df_ispos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_ispos.obj `if test -f 'libm/machine/amdgcn/v64df_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_ispos.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_lgamma.o: libm/machine/amdgcn/v64df_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.o `test -f 'libm/machine/amdgcn/v64df_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.o `test -f 'libm/machine/amdgcn/v64df_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma.c + +libm/machine/amdgcn/libm_a-v64df_lgamma.obj: libm/machine/amdgcn/v64df_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_lgamma_r.o: libm/machine/amdgcn/v64df_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma_r.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.o `test -f 'libm/machine/amdgcn/v64df_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.o `test -f 'libm/machine/amdgcn/v64df_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_lgamma_r.c + +libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj: libm/machine/amdgcn/v64df_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64df_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_lgamma_r.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_log.o: libm/machine/amdgcn/v64df_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log.o `test -f 'libm/machine/amdgcn/v64df_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log.c' object='libm/machine/amdgcn/libm_a-v64df_log.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log.o `test -f 'libm/machine/amdgcn/v64df_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log.c + +libm/machine/amdgcn/libm_a-v64df_log.obj: libm/machine/amdgcn/v64df_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log.obj `if test -f 'libm/machine/amdgcn/v64df_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log.c' object='libm/machine/amdgcn/libm_a-v64df_log.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log.obj `if test -f 'libm/machine/amdgcn/v64df_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_log10.o: libm/machine/amdgcn/v64df_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log10.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log10.o `test -f 'libm/machine/amdgcn/v64df_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log10.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log10.c' object='libm/machine/amdgcn/libm_a-v64df_log10.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log10.o `test -f 'libm/machine/amdgcn/v64df_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log10.c + +libm/machine/amdgcn/libm_a-v64df_log10.obj: libm/machine/amdgcn/v64df_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log10.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log10.obj `if test -f 'libm/machine/amdgcn/v64df_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log10.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log10.c' object='libm/machine/amdgcn/libm_a-v64df_log10.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log10.obj `if test -f 'libm/machine/amdgcn/v64df_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log10.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_log2.o: libm/machine/amdgcn/v64df_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log2.o `test -f 'libm/machine/amdgcn/v64df_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log2.c' object='libm/machine/amdgcn/libm_a-v64df_log2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log2.o `test -f 'libm/machine/amdgcn/v64df_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_log2.c + +libm/machine/amdgcn/libm_a-v64df_log2.obj: libm/machine/amdgcn/v64df_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_log2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_log2.obj `if test -f 'libm/machine/amdgcn/v64df_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_log2.c' object='libm/machine/amdgcn/libm_a-v64df_log2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_log2.obj `if test -f 'libm/machine/amdgcn/v64df_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_log2.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_modf.o: libm/machine/amdgcn/v64df_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_modf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_modf.o `test -f 'libm/machine/amdgcn/v64df_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_modf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_modf.c' object='libm/machine/amdgcn/libm_a-v64df_modf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_modf.o `test -f 'libm/machine/amdgcn/v64df_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_modf.c + +libm/machine/amdgcn/libm_a-v64df_modf.obj: libm/machine/amdgcn/v64df_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_modf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_modf.obj `if test -f 'libm/machine/amdgcn/v64df_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_modf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_modf.c' object='libm/machine/amdgcn/libm_a-v64df_modf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_modf.obj `if test -f 'libm/machine/amdgcn/v64df_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_modf.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_numtest.o: libm/machine/amdgcn/v64df_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_numtest.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_numtest.o `test -f 'libm/machine/amdgcn/v64df_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_numtest.c' object='libm/machine/amdgcn/libm_a-v64df_numtest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_numtest.o `test -f 'libm/machine/amdgcn/v64df_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_numtest.c + +libm/machine/amdgcn/libm_a-v64df_numtest.obj: libm/machine/amdgcn/v64df_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_numtest.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_numtest.obj `if test -f 'libm/machine/amdgcn/v64df_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_numtest.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_numtest.c' object='libm/machine/amdgcn/libm_a-v64df_numtest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_numtest.obj `if test -f 'libm/machine/amdgcn/v64df_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_numtest.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_pow.o: libm/machine/amdgcn/v64df_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_pow.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_pow.o `test -f 'libm/machine/amdgcn/v64df_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_pow.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_pow.c' object='libm/machine/amdgcn/libm_a-v64df_pow.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_pow.o `test -f 'libm/machine/amdgcn/v64df_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_pow.c + +libm/machine/amdgcn/libm_a-v64df_pow.obj: libm/machine/amdgcn/v64df_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_pow.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_pow.obj `if test -f 'libm/machine/amdgcn/v64df_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_pow.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_pow.c' object='libm/machine/amdgcn/libm_a-v64df_pow.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_pow.obj `if test -f 'libm/machine/amdgcn/v64df_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_pow.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_remainder.o: libm/machine/amdgcn/v64df_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_remainder.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_remainder.o `test -f 'libm/machine/amdgcn/v64df_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_remainder.c' object='libm/machine/amdgcn/libm_a-v64df_remainder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_remainder.o `test -f 'libm/machine/amdgcn/v64df_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_remainder.c + +libm/machine/amdgcn/libm_a-v64df_remainder.obj: libm/machine/amdgcn/v64df_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_remainder.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_remainder.obj `if test -f 'libm/machine/amdgcn/v64df_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_remainder.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_remainder.c' object='libm/machine/amdgcn/libm_a-v64df_remainder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_remainder.obj `if test -f 'libm/machine/amdgcn/v64df_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_remainder.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_rint.o: libm/machine/amdgcn/v64df_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_rint.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_rint.o `test -f 'libm/machine/amdgcn/v64df_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_rint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_rint.c' object='libm/machine/amdgcn/libm_a-v64df_rint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_rint.o `test -f 'libm/machine/amdgcn/v64df_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_rint.c + +libm/machine/amdgcn/libm_a-v64df_rint.obj: libm/machine/amdgcn/v64df_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_rint.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_rint.obj `if test -f 'libm/machine/amdgcn/v64df_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_rint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_rint.c' object='libm/machine/amdgcn/libm_a-v64df_rint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_rint.obj `if test -f 'libm/machine/amdgcn/v64df_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_rint.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_scalb.o: libm/machine/amdgcn/v64df_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalb.o `test -f 'libm/machine/amdgcn/v64df_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalb.c' object='libm/machine/amdgcn/libm_a-v64df_scalb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalb.o `test -f 'libm/machine/amdgcn/v64df_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalb.c + +libm/machine/amdgcn/libm_a-v64df_scalb.obj: libm/machine/amdgcn/v64df_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalb.obj `if test -f 'libm/machine/amdgcn/v64df_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalb.c' object='libm/machine/amdgcn/libm_a-v64df_scalb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalb.obj `if test -f 'libm/machine/amdgcn/v64df_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalb.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_scalbn.o: libm/machine/amdgcn/v64df_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalbn.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.o `test -f 'libm/machine/amdgcn/v64df_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalbn.c' object='libm/machine/amdgcn/libm_a-v64df_scalbn.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.o `test -f 'libm/machine/amdgcn/v64df_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_scalbn.c + +libm/machine/amdgcn/libm_a-v64df_scalbn.obj: libm/machine/amdgcn/v64df_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_scalbn.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.obj `if test -f 'libm/machine/amdgcn/v64df_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalbn.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_scalbn.c' object='libm/machine/amdgcn/libm_a-v64df_scalbn.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_scalbn.obj `if test -f 'libm/machine/amdgcn/v64df_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_scalbn.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_signif.o: libm/machine/amdgcn/v64df_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_signif.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_signif.o `test -f 'libm/machine/amdgcn/v64df_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_signif.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_signif.c' object='libm/machine/amdgcn/libm_a-v64df_signif.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_signif.o `test -f 'libm/machine/amdgcn/v64df_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_signif.c + +libm/machine/amdgcn/libm_a-v64df_signif.obj: libm/machine/amdgcn/v64df_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_signif.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_signif.obj `if test -f 'libm/machine/amdgcn/v64df_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_signif.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_signif.c' object='libm/machine/amdgcn/libm_a-v64df_signif.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_signif.obj `if test -f 'libm/machine/amdgcn/v64df_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_signif.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sin.o: libm/machine/amdgcn/v64df_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sin.o `test -f 'libm/machine/amdgcn/v64df_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sin.c' object='libm/machine/amdgcn/libm_a-v64df_sin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sin.o `test -f 'libm/machine/amdgcn/v64df_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sin.c + +libm/machine/amdgcn/libm_a-v64df_sin.obj: libm/machine/amdgcn/v64df_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sin.obj `if test -f 'libm/machine/amdgcn/v64df_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sin.c' object='libm/machine/amdgcn/libm_a-v64df_sin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sin.obj `if test -f 'libm/machine/amdgcn/v64df_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sin.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sine.o: libm/machine/amdgcn/v64df_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sine.o `test -f 'libm/machine/amdgcn/v64df_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sine.c' object='libm/machine/amdgcn/libm_a-v64df_sine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sine.o `test -f 'libm/machine/amdgcn/v64df_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sine.c + +libm/machine/amdgcn/libm_a-v64df_sine.obj: libm/machine/amdgcn/v64df_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sine.obj `if test -f 'libm/machine/amdgcn/v64df_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sine.c' object='libm/machine/amdgcn/libm_a-v64df_sine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sine.obj `if test -f 'libm/machine/amdgcn/v64df_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sine.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sineh.o: libm/machine/amdgcn/v64df_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sineh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sineh.o `test -f 'libm/machine/amdgcn/v64df_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sineh.c' object='libm/machine/amdgcn/libm_a-v64df_sineh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sineh.o `test -f 'libm/machine/amdgcn/v64df_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sineh.c + +libm/machine/amdgcn/libm_a-v64df_sineh.obj: libm/machine/amdgcn/v64df_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sineh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sineh.obj `if test -f 'libm/machine/amdgcn/v64df_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sineh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sineh.c' object='libm/machine/amdgcn/libm_a-v64df_sineh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sineh.obj `if test -f 'libm/machine/amdgcn/v64df_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sineh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sinh.o: libm/machine/amdgcn/v64df_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sinh.o `test -f 'libm/machine/amdgcn/v64df_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sinh.c' object='libm/machine/amdgcn/libm_a-v64df_sinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sinh.o `test -f 'libm/machine/amdgcn/v64df_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sinh.c + +libm/machine/amdgcn/libm_a-v64df_sinh.obj: libm/machine/amdgcn/v64df_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sinh.obj `if test -f 'libm/machine/amdgcn/v64df_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sinh.c' object='libm/machine/amdgcn/libm_a-v64df_sinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sinh.obj `if test -f 'libm/machine/amdgcn/v64df_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_sqrt.o: libm/machine/amdgcn/v64df_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sqrt.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.o `test -f 'libm/machine/amdgcn/v64df_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sqrt.c' object='libm/machine/amdgcn/libm_a-v64df_sqrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.o `test -f 'libm/machine/amdgcn/v64df_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_sqrt.c + +libm/machine/amdgcn/libm_a-v64df_sqrt.obj: libm/machine/amdgcn/v64df_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_sqrt.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.obj `if test -f 'libm/machine/amdgcn/v64df_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sqrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_sqrt.c' object='libm/machine/amdgcn/libm_a-v64df_sqrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_sqrt.obj `if test -f 'libm/machine/amdgcn/v64df_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_sqrt.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_tan.o: libm/machine/amdgcn/v64df_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tan.o `test -f 'libm/machine/amdgcn/v64df_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tan.c' object='libm/machine/amdgcn/libm_a-v64df_tan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tan.o `test -f 'libm/machine/amdgcn/v64df_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tan.c + +libm/machine/amdgcn/libm_a-v64df_tan.obj: libm/machine/amdgcn/v64df_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tan.obj `if test -f 'libm/machine/amdgcn/v64df_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tan.c' object='libm/machine/amdgcn/libm_a-v64df_tan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tan.obj `if test -f 'libm/machine/amdgcn/v64df_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tan.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_tanh.o: libm/machine/amdgcn/v64df_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tanh.o `test -f 'libm/machine/amdgcn/v64df_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tanh.c' object='libm/machine/amdgcn/libm_a-v64df_tanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tanh.o `test -f 'libm/machine/amdgcn/v64df_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tanh.c + +libm/machine/amdgcn/libm_a-v64df_tanh.obj: libm/machine/amdgcn/v64df_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tanh.obj `if test -f 'libm/machine/amdgcn/v64df_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tanh.c' object='libm/machine/amdgcn/libm_a-v64df_tanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tanh.obj `if test -f 'libm/machine/amdgcn/v64df_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64df_tgamma.o: libm/machine/amdgcn/v64df_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.o `test -f 'libm/machine/amdgcn/v64df_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tgamma.c' object='libm/machine/amdgcn/libm_a-v64df_tgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.o `test -f 'libm/machine/amdgcn/v64df_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64df_tgamma.c + +libm/machine/amdgcn/libm_a-v64df_tgamma.obj: libm/machine/amdgcn/v64df_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64df_tgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.obj `if test -f 'libm/machine/amdgcn/v64df_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64df_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64df_tgamma.c' object='libm/machine/amdgcn/libm_a-v64df_tgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64df_tgamma.obj `if test -f 'libm/machine/amdgcn/v64df_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64df_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64df_tgamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_acos.o: libm/machine/amdgcn/v64sf_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acos.o `test -f 'libm/machine/amdgcn/v64sf_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acos.c' object='libm/machine/amdgcn/libm_a-v64sf_acos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acos.o `test -f 'libm/machine/amdgcn/v64sf_acos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acos.c + +libm/machine/amdgcn/libm_a-v64sf_acos.obj: libm/machine/amdgcn/v64sf_acos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acos.obj `if test -f 'libm/machine/amdgcn/v64sf_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acos.c' object='libm/machine/amdgcn/libm_a-v64sf_acos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acos.obj `if test -f 'libm/machine/amdgcn/v64sf_acos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acos.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_acosh.o: libm/machine/amdgcn/v64sf_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.o `test -f 'libm/machine/amdgcn/v64sf_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acosh.c' object='libm/machine/amdgcn/libm_a-v64sf_acosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.o `test -f 'libm/machine/amdgcn/v64sf_acosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_acosh.c + +libm/machine/amdgcn/libm_a-v64sf_acosh.obj: libm/machine/amdgcn/v64sf_acosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_acosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.obj `if test -f 'libm/machine/amdgcn/v64sf_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_acosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_acosh.c' object='libm/machine/amdgcn/libm_a-v64sf_acosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_acosh.obj `if test -f 'libm/machine/amdgcn/v64sf_acosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_acosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_asin.o: libm/machine/amdgcn/v64sf_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asin.o `test -f 'libm/machine/amdgcn/v64sf_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asin.c' object='libm/machine/amdgcn/libm_a-v64sf_asin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asin.o `test -f 'libm/machine/amdgcn/v64sf_asin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asin.c + +libm/machine/amdgcn/libm_a-v64sf_asin.obj: libm/machine/amdgcn/v64sf_asin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asin.obj `if test -f 'libm/machine/amdgcn/v64sf_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asin.c' object='libm/machine/amdgcn/libm_a-v64sf_asin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asin.obj `if test -f 'libm/machine/amdgcn/v64sf_asin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asin.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_asine.o: libm/machine/amdgcn/v64sf_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asine.o `test -f 'libm/machine/amdgcn/v64sf_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asine.c' object='libm/machine/amdgcn/libm_a-v64sf_asine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asine.o `test -f 'libm/machine/amdgcn/v64sf_asine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asine.c + +libm/machine/amdgcn/libm_a-v64sf_asine.obj: libm/machine/amdgcn/v64sf_asine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asine.obj `if test -f 'libm/machine/amdgcn/v64sf_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asine.c' object='libm/machine/amdgcn/libm_a-v64sf_asine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asine.obj `if test -f 'libm/machine/amdgcn/v64sf_asine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asine.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_asinh.o: libm/machine/amdgcn/v64sf_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.o `test -f 'libm/machine/amdgcn/v64sf_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asinh.c' object='libm/machine/amdgcn/libm_a-v64sf_asinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.o `test -f 'libm/machine/amdgcn/v64sf_asinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_asinh.c + +libm/machine/amdgcn/libm_a-v64sf_asinh.obj: libm/machine/amdgcn/v64sf_asinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_asinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.obj `if test -f 'libm/machine/amdgcn/v64sf_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_asinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_asinh.c' object='libm/machine/amdgcn/libm_a-v64sf_asinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_asinh.obj `if test -f 'libm/machine/amdgcn/v64sf_asinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_asinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atan.o: libm/machine/amdgcn/v64sf_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan.o `test -f 'libm/machine/amdgcn/v64sf_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan.c' object='libm/machine/amdgcn/libm_a-v64sf_atan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan.o `test -f 'libm/machine/amdgcn/v64sf_atan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan.c + +libm/machine/amdgcn/libm_a-v64sf_atan.obj: libm/machine/amdgcn/v64sf_atan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan.obj `if test -f 'libm/machine/amdgcn/v64sf_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan.c' object='libm/machine/amdgcn/libm_a-v64sf_atan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan.obj `if test -f 'libm/machine/amdgcn/v64sf_atan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atan2.o: libm/machine/amdgcn/v64sf_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.o `test -f 'libm/machine/amdgcn/v64sf_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan2.c' object='libm/machine/amdgcn/libm_a-v64sf_atan2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.o `test -f 'libm/machine/amdgcn/v64sf_atan2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atan2.c + +libm/machine/amdgcn/libm_a-v64sf_atan2.obj: libm/machine/amdgcn/v64sf_atan2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atan2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.obj `if test -f 'libm/machine/amdgcn/v64sf_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atan2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atan2.c' object='libm/machine/amdgcn/libm_a-v64sf_atan2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atan2.obj `if test -f 'libm/machine/amdgcn/v64sf_atan2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atan2.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atangent.o: libm/machine/amdgcn/v64sf_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atangent.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.o `test -f 'libm/machine/amdgcn/v64sf_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atangent.c' object='libm/machine/amdgcn/libm_a-v64sf_atangent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.o `test -f 'libm/machine/amdgcn/v64sf_atangent.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atangent.c + +libm/machine/amdgcn/libm_a-v64sf_atangent.obj: libm/machine/amdgcn/v64sf_atangent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atangent.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.obj `if test -f 'libm/machine/amdgcn/v64sf_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atangent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atangent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atangent.c' object='libm/machine/amdgcn/libm_a-v64sf_atangent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atangent.obj `if test -f 'libm/machine/amdgcn/v64sf_atangent.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atangent.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atangent.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_atanh.o: libm/machine/amdgcn/v64sf_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.o `test -f 'libm/machine/amdgcn/v64sf_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atanh.c' object='libm/machine/amdgcn/libm_a-v64sf_atanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.o `test -f 'libm/machine/amdgcn/v64sf_atanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_atanh.c + +libm/machine/amdgcn/libm_a-v64sf_atanh.obj: libm/machine/amdgcn/v64sf_atanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_atanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.obj `if test -f 'libm/machine/amdgcn/v64sf_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_atanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_atanh.c' object='libm/machine/amdgcn/libm_a-v64sf_atanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_atanh.obj `if test -f 'libm/machine/amdgcn/v64sf_atanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_atanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_copysign.o: libm/machine/amdgcn/v64sf_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_copysign.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.o `test -f 'libm/machine/amdgcn/v64sf_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_copysign.c' object='libm/machine/amdgcn/libm_a-v64sf_copysign.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.o `test -f 'libm/machine/amdgcn/v64sf_copysign.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_copysign.c + +libm/machine/amdgcn/libm_a-v64sf_copysign.obj: libm/machine/amdgcn/v64sf_copysign.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_copysign.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.obj `if test -f 'libm/machine/amdgcn/v64sf_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_copysign.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_copysign.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_copysign.c' object='libm/machine/amdgcn/libm_a-v64sf_copysign.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_copysign.obj `if test -f 'libm/machine/amdgcn/v64sf_copysign.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_copysign.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_cos.o: libm/machine/amdgcn/v64sf_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cos.o `test -f 'libm/machine/amdgcn/v64sf_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cos.c' object='libm/machine/amdgcn/libm_a-v64sf_cos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cos.o `test -f 'libm/machine/amdgcn/v64sf_cos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cos.c + +libm/machine/amdgcn/libm_a-v64sf_cos.obj: libm/machine/amdgcn/v64sf_cos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cos.obj `if test -f 'libm/machine/amdgcn/v64sf_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cos.c' object='libm/machine/amdgcn/libm_a-v64sf_cos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cos.obj `if test -f 'libm/machine/amdgcn/v64sf_cos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cos.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_cosh.o: libm/machine/amdgcn/v64sf_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cosh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.o `test -f 'libm/machine/amdgcn/v64sf_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cosh.c' object='libm/machine/amdgcn/libm_a-v64sf_cosh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.o `test -f 'libm/machine/amdgcn/v64sf_cosh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_cosh.c + +libm/machine/amdgcn/libm_a-v64sf_cosh.obj: libm/machine/amdgcn/v64sf_cosh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_cosh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.obj `if test -f 'libm/machine/amdgcn/v64sf_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cosh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_cosh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_cosh.c' object='libm/machine/amdgcn/libm_a-v64sf_cosh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_cosh.obj `if test -f 'libm/machine/amdgcn/v64sf_cosh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_cosh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_erf.o: libm/machine/amdgcn/v64sf_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_erf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_erf.o `test -f 'libm/machine/amdgcn/v64sf_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_erf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_erf.c' object='libm/machine/amdgcn/libm_a-v64sf_erf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_erf.o `test -f 'libm/machine/amdgcn/v64sf_erf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_erf.c + +libm/machine/amdgcn/libm_a-v64sf_erf.obj: libm/machine/amdgcn/v64sf_erf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_erf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_erf.obj `if test -f 'libm/machine/amdgcn/v64sf_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_erf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_erf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_erf.c' object='libm/machine/amdgcn/libm_a-v64sf_erf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_erf.obj `if test -f 'libm/machine/amdgcn/v64sf_erf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_erf.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_exp.o: libm/machine/amdgcn/v64sf_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp.o `test -f 'libm/machine/amdgcn/v64sf_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp.c' object='libm/machine/amdgcn/libm_a-v64sf_exp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp.o `test -f 'libm/machine/amdgcn/v64sf_exp.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp.c + +libm/machine/amdgcn/libm_a-v64sf_exp.obj: libm/machine/amdgcn/v64sf_exp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp.obj `if test -f 'libm/machine/amdgcn/v64sf_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp.c' object='libm/machine/amdgcn/libm_a-v64sf_exp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp.obj `if test -f 'libm/machine/amdgcn/v64sf_exp.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_exp2.o: libm/machine/amdgcn/v64sf_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.o `test -f 'libm/machine/amdgcn/v64sf_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp2.c' object='libm/machine/amdgcn/libm_a-v64sf_exp2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.o `test -f 'libm/machine/amdgcn/v64sf_exp2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_exp2.c + +libm/machine/amdgcn/libm_a-v64sf_exp2.obj: libm/machine/amdgcn/v64sf_exp2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_exp2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.obj `if test -f 'libm/machine/amdgcn/v64sf_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_exp2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_exp2.c' object='libm/machine/amdgcn/libm_a-v64sf_exp2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_exp2.obj `if test -f 'libm/machine/amdgcn/v64sf_exp2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_exp2.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_finite.o: libm/machine/amdgcn/v64sf_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_finite.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_finite.o `test -f 'libm/machine/amdgcn/v64sf_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_finite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_finite.c' object='libm/machine/amdgcn/libm_a-v64sf_finite.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_finite.o `test -f 'libm/machine/amdgcn/v64sf_finite.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_finite.c + +libm/machine/amdgcn/libm_a-v64sf_finite.obj: libm/machine/amdgcn/v64sf_finite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_finite.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_finite.obj `if test -f 'libm/machine/amdgcn/v64sf_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_finite.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_finite.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_finite.c' object='libm/machine/amdgcn/libm_a-v64sf_finite.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_finite.obj `if test -f 'libm/machine/amdgcn/v64sf_finite.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_finite.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_fmod.o: libm/machine/amdgcn/v64sf_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_fmod.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.o `test -f 'libm/machine/amdgcn/v64sf_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_fmod.c' object='libm/machine/amdgcn/libm_a-v64sf_fmod.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.o `test -f 'libm/machine/amdgcn/v64sf_fmod.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_fmod.c + +libm/machine/amdgcn/libm_a-v64sf_fmod.obj: libm/machine/amdgcn/v64sf_fmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_fmod.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.obj `if test -f 'libm/machine/amdgcn/v64sf_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_fmod.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_fmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_fmod.c' object='libm/machine/amdgcn/libm_a-v64sf_fmod.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_fmod.obj `if test -f 'libm/machine/amdgcn/v64sf_fmod.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_fmod.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_gamma.o: libm/machine/amdgcn/v64sf_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_gamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.o `test -f 'libm/machine/amdgcn/v64sf_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_gamma.c' object='libm/machine/amdgcn/libm_a-v64sf_gamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.o `test -f 'libm/machine/amdgcn/v64sf_gamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_gamma.c + +libm/machine/amdgcn/libm_a-v64sf_gamma.obj: libm/machine/amdgcn/v64sf_gamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_gamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.obj `if test -f 'libm/machine/amdgcn/v64sf_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_gamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_gamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_gamma.c' object='libm/machine/amdgcn/libm_a-v64sf_gamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_gamma.obj `if test -f 'libm/machine/amdgcn/v64sf_gamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_gamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_gamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_hypot.o: libm/machine/amdgcn/v64sf_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_hypot.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.o `test -f 'libm/machine/amdgcn/v64sf_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_hypot.c' object='libm/machine/amdgcn/libm_a-v64sf_hypot.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.o `test -f 'libm/machine/amdgcn/v64sf_hypot.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_hypot.c + +libm/machine/amdgcn/libm_a-v64sf_hypot.obj: libm/machine/amdgcn/v64sf_hypot.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_hypot.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.obj `if test -f 'libm/machine/amdgcn/v64sf_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_hypot.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_hypot.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_hypot.c' object='libm/machine/amdgcn/libm_a-v64sf_hypot.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_hypot.obj `if test -f 'libm/machine/amdgcn/v64sf_hypot.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_hypot.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_ilogb.o: libm/machine/amdgcn/v64sf_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ilogb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.o `test -f 'libm/machine/amdgcn/v64sf_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ilogb.c' object='libm/machine/amdgcn/libm_a-v64sf_ilogb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.o `test -f 'libm/machine/amdgcn/v64sf_ilogb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ilogb.c + +libm/machine/amdgcn/libm_a-v64sf_ilogb.obj: libm/machine/amdgcn/v64sf_ilogb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ilogb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.obj `if test -f 'libm/machine/amdgcn/v64sf_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ilogb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ilogb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ilogb.c' object='libm/machine/amdgcn/libm_a-v64sf_ilogb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ilogb.obj `if test -f 'libm/machine/amdgcn/v64sf_ilogb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ilogb.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_isnan.o: libm/machine/amdgcn/v64sf_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_isnan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.o `test -f 'libm/machine/amdgcn/v64sf_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_isnan.c' object='libm/machine/amdgcn/libm_a-v64sf_isnan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.o `test -f 'libm/machine/amdgcn/v64sf_isnan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_isnan.c + +libm/machine/amdgcn/libm_a-v64sf_isnan.obj: libm/machine/amdgcn/v64sf_isnan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_isnan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.obj `if test -f 'libm/machine/amdgcn/v64sf_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_isnan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_isnan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_isnan.c' object='libm/machine/amdgcn/libm_a-v64sf_isnan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_isnan.obj `if test -f 'libm/machine/amdgcn/v64sf_isnan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_isnan.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_ispos.o: libm/machine/amdgcn/v64sf_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ispos.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.o `test -f 'libm/machine/amdgcn/v64sf_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ispos.c' object='libm/machine/amdgcn/libm_a-v64sf_ispos.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.o `test -f 'libm/machine/amdgcn/v64sf_ispos.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_ispos.c + +libm/machine/amdgcn/libm_a-v64sf_ispos.obj: libm/machine/amdgcn/v64sf_ispos.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_ispos.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.obj `if test -f 'libm/machine/amdgcn/v64sf_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ispos.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_ispos.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_ispos.c' object='libm/machine/amdgcn/libm_a-v64sf_ispos.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_ispos.obj `if test -f 'libm/machine/amdgcn/v64sf_ispos.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_ispos.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_ispos.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_lgamma.o: libm/machine/amdgcn/v64sf_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.o `test -f 'libm/machine/amdgcn/v64sf_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.o `test -f 'libm/machine/amdgcn/v64sf_lgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma.c + +libm/machine/amdgcn/libm_a-v64sf_lgamma.obj: libm/machine/amdgcn/v64sf_lgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o: libm/machine/amdgcn/v64sf_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o `test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.o `test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_lgamma_r.c + +libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj: libm/machine/amdgcn/v64sf_lgamma_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_lgamma_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_lgamma_r.c' object='libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_lgamma_r.obj `if test -f 'libm/machine/amdgcn/v64sf_lgamma_r.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_lgamma_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_lgamma_r.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_log.o: libm/machine/amdgcn/v64sf_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log.o `test -f 'libm/machine/amdgcn/v64sf_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log.c' object='libm/machine/amdgcn/libm_a-v64sf_log.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log.o `test -f 'libm/machine/amdgcn/v64sf_log.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log.c + +libm/machine/amdgcn/libm_a-v64sf_log.obj: libm/machine/amdgcn/v64sf_log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log.obj `if test -f 'libm/machine/amdgcn/v64sf_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log.c' object='libm/machine/amdgcn/libm_a-v64sf_log.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log.obj `if test -f 'libm/machine/amdgcn/v64sf_log.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_log10.o: libm/machine/amdgcn/v64sf_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log10.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log10.o `test -f 'libm/machine/amdgcn/v64sf_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log10.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log10.c' object='libm/machine/amdgcn/libm_a-v64sf_log10.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log10.o `test -f 'libm/machine/amdgcn/v64sf_log10.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log10.c + +libm/machine/amdgcn/libm_a-v64sf_log10.obj: libm/machine/amdgcn/v64sf_log10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log10.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log10.obj `if test -f 'libm/machine/amdgcn/v64sf_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log10.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log10.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log10.c' object='libm/machine/amdgcn/libm_a-v64sf_log10.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log10.obj `if test -f 'libm/machine/amdgcn/v64sf_log10.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log10.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log10.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_log2.o: libm/machine/amdgcn/v64sf_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log2.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log2.o `test -f 'libm/machine/amdgcn/v64sf_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log2.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log2.c' object='libm/machine/amdgcn/libm_a-v64sf_log2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log2.o `test -f 'libm/machine/amdgcn/v64sf_log2.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_log2.c + +libm/machine/amdgcn/libm_a-v64sf_log2.obj: libm/machine/amdgcn/v64sf_log2.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_log2.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_log2.obj `if test -f 'libm/machine/amdgcn/v64sf_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log2.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_log2.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_log2.c' object='libm/machine/amdgcn/libm_a-v64sf_log2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_log2.obj `if test -f 'libm/machine/amdgcn/v64sf_log2.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_log2.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_log2.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_modf.o: libm/machine/amdgcn/v64sf_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_modf.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_modf.o `test -f 'libm/machine/amdgcn/v64sf_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_modf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_modf.c' object='libm/machine/amdgcn/libm_a-v64sf_modf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_modf.o `test -f 'libm/machine/amdgcn/v64sf_modf.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_modf.c + +libm/machine/amdgcn/libm_a-v64sf_modf.obj: libm/machine/amdgcn/v64sf_modf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_modf.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_modf.obj `if test -f 'libm/machine/amdgcn/v64sf_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_modf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_modf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_modf.c' object='libm/machine/amdgcn/libm_a-v64sf_modf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_modf.obj `if test -f 'libm/machine/amdgcn/v64sf_modf.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_modf.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_modf.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_numtest.o: libm/machine/amdgcn/v64sf_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_numtest.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.o `test -f 'libm/machine/amdgcn/v64sf_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_numtest.c' object='libm/machine/amdgcn/libm_a-v64sf_numtest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.o `test -f 'libm/machine/amdgcn/v64sf_numtest.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_numtest.c + +libm/machine/amdgcn/libm_a-v64sf_numtest.obj: libm/machine/amdgcn/v64sf_numtest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_numtest.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.obj `if test -f 'libm/machine/amdgcn/v64sf_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_numtest.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_numtest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_numtest.c' object='libm/machine/amdgcn/libm_a-v64sf_numtest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_numtest.obj `if test -f 'libm/machine/amdgcn/v64sf_numtest.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_numtest.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_numtest.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_pow.o: libm/machine/amdgcn/v64sf_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_pow.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_pow.o `test -f 'libm/machine/amdgcn/v64sf_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_pow.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_pow.c' object='libm/machine/amdgcn/libm_a-v64sf_pow.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_pow.o `test -f 'libm/machine/amdgcn/v64sf_pow.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_pow.c + +libm/machine/amdgcn/libm_a-v64sf_pow.obj: libm/machine/amdgcn/v64sf_pow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_pow.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_pow.obj `if test -f 'libm/machine/amdgcn/v64sf_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_pow.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_pow.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_pow.c' object='libm/machine/amdgcn/libm_a-v64sf_pow.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_pow.obj `if test -f 'libm/machine/amdgcn/v64sf_pow.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_pow.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_pow.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_remainder.o: libm/machine/amdgcn/v64sf_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_remainder.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.o `test -f 'libm/machine/amdgcn/v64sf_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_remainder.c' object='libm/machine/amdgcn/libm_a-v64sf_remainder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.o `test -f 'libm/machine/amdgcn/v64sf_remainder.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_remainder.c + +libm/machine/amdgcn/libm_a-v64sf_remainder.obj: libm/machine/amdgcn/v64sf_remainder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_remainder.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.obj `if test -f 'libm/machine/amdgcn/v64sf_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_remainder.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_remainder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_remainder.c' object='libm/machine/amdgcn/libm_a-v64sf_remainder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_remainder.obj `if test -f 'libm/machine/amdgcn/v64sf_remainder.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_remainder.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_rint.o: libm/machine/amdgcn/v64sf_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_rint.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_rint.o `test -f 'libm/machine/amdgcn/v64sf_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_rint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_rint.c' object='libm/machine/amdgcn/libm_a-v64sf_rint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_rint.o `test -f 'libm/machine/amdgcn/v64sf_rint.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_rint.c + +libm/machine/amdgcn/libm_a-v64sf_rint.obj: libm/machine/amdgcn/v64sf_rint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_rint.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_rint.obj `if test -f 'libm/machine/amdgcn/v64sf_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_rint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_rint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_rint.c' object='libm/machine/amdgcn/libm_a-v64sf_rint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_rint.obj `if test -f 'libm/machine/amdgcn/v64sf_rint.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_rint.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_scalb.o: libm/machine/amdgcn/v64sf_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalb.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.o `test -f 'libm/machine/amdgcn/v64sf_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalb.c' object='libm/machine/amdgcn/libm_a-v64sf_scalb.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.o `test -f 'libm/machine/amdgcn/v64sf_scalb.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalb.c + +libm/machine/amdgcn/libm_a-v64sf_scalb.obj: libm/machine/amdgcn/v64sf_scalb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalb.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.obj `if test -f 'libm/machine/amdgcn/v64sf_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalb.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalb.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalb.c' object='libm/machine/amdgcn/libm_a-v64sf_scalb.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalb.obj `if test -f 'libm/machine/amdgcn/v64sf_scalb.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalb.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalb.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_scalbn.o: libm/machine/amdgcn/v64sf_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalbn.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.o `test -f 'libm/machine/amdgcn/v64sf_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalbn.c' object='libm/machine/amdgcn/libm_a-v64sf_scalbn.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.o `test -f 'libm/machine/amdgcn/v64sf_scalbn.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_scalbn.c + +libm/machine/amdgcn/libm_a-v64sf_scalbn.obj: libm/machine/amdgcn/v64sf_scalbn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_scalbn.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.obj `if test -f 'libm/machine/amdgcn/v64sf_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalbn.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_scalbn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_scalbn.c' object='libm/machine/amdgcn/libm_a-v64sf_scalbn.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_scalbn.obj `if test -f 'libm/machine/amdgcn/v64sf_scalbn.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_scalbn.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_signif.o: libm/machine/amdgcn/v64sf_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_signif.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_signif.o `test -f 'libm/machine/amdgcn/v64sf_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_signif.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_signif.c' object='libm/machine/amdgcn/libm_a-v64sf_signif.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_signif.o `test -f 'libm/machine/amdgcn/v64sf_signif.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_signif.c + +libm/machine/amdgcn/libm_a-v64sf_signif.obj: libm/machine/amdgcn/v64sf_signif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_signif.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_signif.obj `if test -f 'libm/machine/amdgcn/v64sf_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_signif.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_signif.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_signif.c' object='libm/machine/amdgcn/libm_a-v64sf_signif.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_signif.obj `if test -f 'libm/machine/amdgcn/v64sf_signif.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_signif.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_signif.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sin.o: libm/machine/amdgcn/v64sf_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sin.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sin.o `test -f 'libm/machine/amdgcn/v64sf_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sin.c' object='libm/machine/amdgcn/libm_a-v64sf_sin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sin.o `test -f 'libm/machine/amdgcn/v64sf_sin.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sin.c + +libm/machine/amdgcn/libm_a-v64sf_sin.obj: libm/machine/amdgcn/v64sf_sin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sin.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sin.obj `if test -f 'libm/machine/amdgcn/v64sf_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sin.c' object='libm/machine/amdgcn/libm_a-v64sf_sin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sin.obj `if test -f 'libm/machine/amdgcn/v64sf_sin.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sin.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sine.o: libm/machine/amdgcn/v64sf_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sine.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sine.o `test -f 'libm/machine/amdgcn/v64sf_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sine.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sine.c' object='libm/machine/amdgcn/libm_a-v64sf_sine.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sine.o `test -f 'libm/machine/amdgcn/v64sf_sine.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sine.c + +libm/machine/amdgcn/libm_a-v64sf_sine.obj: libm/machine/amdgcn/v64sf_sine.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sine.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sine.obj `if test -f 'libm/machine/amdgcn/v64sf_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sine.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sine.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sine.c' object='libm/machine/amdgcn/libm_a-v64sf_sine.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sine.obj `if test -f 'libm/machine/amdgcn/v64sf_sine.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sine.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sine.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sineh.o: libm/machine/amdgcn/v64sf_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sineh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.o `test -f 'libm/machine/amdgcn/v64sf_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sineh.c' object='libm/machine/amdgcn/libm_a-v64sf_sineh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.o `test -f 'libm/machine/amdgcn/v64sf_sineh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sineh.c + +libm/machine/amdgcn/libm_a-v64sf_sineh.obj: libm/machine/amdgcn/v64sf_sineh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sineh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.obj `if test -f 'libm/machine/amdgcn/v64sf_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sineh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sineh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sineh.c' object='libm/machine/amdgcn/libm_a-v64sf_sineh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sineh.obj `if test -f 'libm/machine/amdgcn/v64sf_sineh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sineh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sineh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sinh.o: libm/machine/amdgcn/v64sf_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sinh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.o `test -f 'libm/machine/amdgcn/v64sf_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sinh.c' object='libm/machine/amdgcn/libm_a-v64sf_sinh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.o `test -f 'libm/machine/amdgcn/v64sf_sinh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sinh.c + +libm/machine/amdgcn/libm_a-v64sf_sinh.obj: libm/machine/amdgcn/v64sf_sinh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sinh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.obj `if test -f 'libm/machine/amdgcn/v64sf_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sinh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sinh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sinh.c' object='libm/machine/amdgcn/libm_a-v64sf_sinh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sinh.obj `if test -f 'libm/machine/amdgcn/v64sf_sinh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sinh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_sqrt.o: libm/machine/amdgcn/v64sf_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sqrt.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.o `test -f 'libm/machine/amdgcn/v64sf_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sqrt.c' object='libm/machine/amdgcn/libm_a-v64sf_sqrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.o `test -f 'libm/machine/amdgcn/v64sf_sqrt.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_sqrt.c + +libm/machine/amdgcn/libm_a-v64sf_sqrt.obj: libm/machine/amdgcn/v64sf_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_sqrt.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.obj `if test -f 'libm/machine/amdgcn/v64sf_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sqrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_sqrt.c' object='libm/machine/amdgcn/libm_a-v64sf_sqrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_sqrt.obj `if test -f 'libm/machine/amdgcn/v64sf_sqrt.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_sqrt.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_tan.o: libm/machine/amdgcn/v64sf_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tan.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tan.o `test -f 'libm/machine/amdgcn/v64sf_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tan.c' object='libm/machine/amdgcn/libm_a-v64sf_tan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tan.o `test -f 'libm/machine/amdgcn/v64sf_tan.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tan.c + +libm/machine/amdgcn/libm_a-v64sf_tan.obj: libm/machine/amdgcn/v64sf_tan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tan.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tan.obj `if test -f 'libm/machine/amdgcn/v64sf_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tan.c' object='libm/machine/amdgcn/libm_a-v64sf_tan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tan.obj `if test -f 'libm/machine/amdgcn/v64sf_tan.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tan.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_tanh.o: libm/machine/amdgcn/v64sf_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tanh.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.o `test -f 'libm/machine/amdgcn/v64sf_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tanh.c' object='libm/machine/amdgcn/libm_a-v64sf_tanh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.o `test -f 'libm/machine/amdgcn/v64sf_tanh.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tanh.c + +libm/machine/amdgcn/libm_a-v64sf_tanh.obj: libm/machine/amdgcn/v64sf_tanh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tanh.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.obj `if test -f 'libm/machine/amdgcn/v64sf_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tanh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tanh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tanh.c' object='libm/machine/amdgcn/libm_a-v64sf_tanh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tanh.obj `if test -f 'libm/machine/amdgcn/v64sf_tanh.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tanh.c'; fi` + +libm/machine/amdgcn/libm_a-v64sf_tgamma.o: libm/machine/amdgcn/v64sf_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tgamma.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.o `test -f 'libm/machine/amdgcn/v64sf_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_tgamma.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.o `test -f 'libm/machine/amdgcn/v64sf_tgamma.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64sf_tgamma.c + +libm/machine/amdgcn/libm_a-v64sf_tgamma.obj: libm/machine/amdgcn/v64sf_tgamma.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64sf_tgamma.obj -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tgamma.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64sf_tgamma.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/amdgcn/v64sf_tgamma.c' object='libm/machine/amdgcn/libm_a-v64sf_tgamma.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/amdgcn/libm_a-v64sf_tgamma.obj `if test -f 'libm/machine/amdgcn/v64sf_tgamma.c'; then $(CYGPATH_W) 'libm/machine/amdgcn/v64sf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/amdgcn/v64sf_tgamma.c'; fi` + libm/machine/arm/libm_a-e_sqrt.o: libm/machine/arm/e_sqrt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/arm/libm_a-e_sqrt.o -MD -MP -MF libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Tpo -c -o libm/machine/arm/libm_a-e_sqrt.o `test -f 'libm/machine/arm/e_sqrt.c' || echo '$(srcdir)/'`libm/machine/arm/e_sqrt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Tpo libm/machine/arm/$(DEPDIR)/libm_a-e_sqrt.Po @@ -46519,6 +48292,8 @@ distclean-generic: -rm -f libm/fenv/$(am__dirstamp) -rm -f libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/aarch64/$(am__dirstamp) + -rm -f libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) + -rm -f libm/machine/amdgcn/$(am__dirstamp) -rm -f libm/machine/arm/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/arm/$(am__dirstamp) -rm -f libm/machine/i386/$(DEPDIR)/$(am__dirstamp) @@ -46556,7 +48331,7 @@ clean-am: clean-aminfo clean-checkPROGRAMS clean-generic clean-local \ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-compile \ distclean-generic distclean-hdr distclean-local distclean-tags @@ -46694,7 +48469,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/newlib/configure b/newlib/configure index 0b6ec15e98..f29aca5d39 100755 --- a/newlib/configure +++ b/newlib/configure @@ -623,6 +623,8 @@ HAVE_LIBM_MACHINE_I386_FALSE HAVE_LIBM_MACHINE_I386_TRUE HAVE_LIBM_MACHINE_ARM_FALSE HAVE_LIBM_MACHINE_ARM_TRUE +HAVE_LIBM_MACHINE_AMDGCN_FALSE +HAVE_LIBM_MACHINE_AMDGCN_TRUE HAVE_LIBM_MACHINE_AARCH64_FALSE HAVE_LIBM_MACHINE_AARCH64_TRUE HAS_NDS32_FPU_DP_FALSE @@ -6216,6 +6218,14 @@ else HAVE_LIBM_MACHINE_AARCH64_FALSE= fi + if test "${libm_machine_dir}" = "amdgcn"; then + HAVE_LIBM_MACHINE_AMDGCN_TRUE= + HAVE_LIBM_MACHINE_AMDGCN_FALSE='#' +else + HAVE_LIBM_MACHINE_AMDGCN_TRUE='#' + HAVE_LIBM_MACHINE_AMDGCN_FALSE= +fi + if test "${libm_machine_dir}" = "arm"; then HAVE_LIBM_MACHINE_ARM_TRUE= HAVE_LIBM_MACHINE_ARM_FALSE='#' @@ -7875,6 +7885,10 @@ if test -z "${HAVE_LIBM_MACHINE_AARCH64_TRUE}" && test -z "${HAVE_LIBM_MACHINE_A as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_LIBM_MACHINE_AMDGCN_TRUE}" && test -z "${HAVE_LIBM_MACHINE_AMDGCN_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AMDGCN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_LIBM_MACHINE_ARM_TRUE}" && test -z "${HAVE_LIBM_MACHINE_ARM_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_ARM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/newlib/configure.host b/newlib/configure.host index 32d1436baa..7157877ffa 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -119,6 +119,7 @@ case "${host_cpu}" in amdgcn*) newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__" machine_dir=amdgcn + libm_machine_dir=amdgcn newlib_cv_initfinit_array=yes ;; arc*) diff --git a/newlib/libm/Makefile.inc b/newlib/libm/Makefile.inc index 7fda120e53..9d1469555d 100644 --- a/newlib/libm/Makefile.inc +++ b/newlib/libm/Makefile.inc @@ -51,6 +51,9 @@ include %D%/test/Makefile.inc if HAVE_LIBM_MACHINE_AARCH64 include %D%/machine/aarch64/Makefile.inc endif +if HAVE_LIBM_MACHINE_AMDGCN +include %D%/machine/amdgcn/Makefile.inc +endif if HAVE_LIBM_MACHINE_ARM include %D%/machine/arm/Makefile.inc endif diff --git a/newlib/libm/acinclude.m4 b/newlib/libm/acinclude.m4 index 0be95a3b29..f7f9f534f8 100644 --- a/newlib/libm/acinclude.m4 +++ b/newlib/libm/acinclude.m4 @@ -4,7 +4,7 @@ m4_include([libm/machine/nds32/acinclude.m4]) dnl Define HAVE_LIBM_MACHINE_ automake conditionals. m4_foreach_w([MACHINE], [ - aarch64 arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 + aarch64 amdgcn arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 ], [dnl AM_CONDITIONAL([HAVE_LIBM_MACHINE_]m4_toupper(MACHINE), test "${libm_machine_dir}" = "MACHINE") ]) diff --git a/newlib/libm/machine/amdgcn/Makefile.inc b/newlib/libm/machine/amdgcn/Makefile.inc new file mode 100644 index 0000000000..9d6a18514b --- /dev/null +++ b/newlib/libm/machine/amdgcn/Makefile.inc @@ -0,0 +1,91 @@ +%C%_src = \ + %D%/v64_mathcnst.c \ + %D%/v64_reent.c \ + %D%/v64df_acos.c \ + %D%/v64df_acosh.c \ + %D%/v64df_asin.c \ + %D%/v64df_asine.c \ + %D%/v64df_asinh.c \ + %D%/v64df_atan.c \ + %D%/v64df_atan2.c \ + %D%/v64df_atangent.c \ + %D%/v64df_atanh.c \ + %D%/v64df_copysign.c \ + %D%/v64df_cos.c \ + %D%/v64df_cosh.c \ + %D%/v64df_erf.c \ + %D%/v64df_exp.c \ + %D%/v64df_exp2.c \ + %D%/v64df_finite.c \ + %D%/v64df_fmod.c \ + %D%/v64df_gamma.c \ + %D%/v64df_hypot.c \ + %D%/v64df_ilogb.c \ + %D%/v64df_isnan.c \ + %D%/v64df_ispos.c \ + %D%/v64df_lgamma.c \ + %D%/v64df_lgamma_r.c \ + %D%/v64df_log.c \ + %D%/v64df_log10.c \ + %D%/v64df_log2.c \ + %D%/v64df_modf.c \ + %D%/v64df_numtest.c \ + %D%/v64df_pow.c \ + %D%/v64df_remainder.c \ + %D%/v64df_rint.c \ + %D%/v64df_scalb.c \ + %D%/v64df_scalbn.c \ + %D%/v64df_signif.c \ + %D%/v64df_sin.c \ + %D%/v64df_sine.c \ + %D%/v64df_sineh.c \ + %D%/v64df_sinh.c \ + %D%/v64df_sqrt.c \ + %D%/v64df_tan.c \ + %D%/v64df_tanh.c \ + %D%/v64df_tgamma.c \ + %D%/v64sf_acos.c \ + %D%/v64sf_acosh.c \ + %D%/v64sf_asin.c \ + %D%/v64sf_asine.c \ + %D%/v64sf_asinh.c \ + %D%/v64sf_atan.c \ + %D%/v64sf_atan2.c \ + %D%/v64sf_atangent.c \ + %D%/v64sf_atanh.c \ + %D%/v64sf_copysign.c \ + %D%/v64sf_cos.c \ + %D%/v64sf_cosh.c \ + %D%/v64sf_erf.c \ + %D%/v64sf_exp.c \ + %D%/v64sf_exp2.c \ + %D%/v64sf_finite.c \ + %D%/v64sf_fmod.c \ + %D%/v64sf_gamma.c \ + %D%/v64sf_hypot.c \ + %D%/v64sf_ilogb.c \ + %D%/v64sf_isnan.c \ + %D%/v64sf_ispos.c \ + %D%/v64sf_lgamma.c \ + %D%/v64sf_lgamma_r.c \ + %D%/v64sf_log.c \ + %D%/v64sf_log10.c \ + %D%/v64sf_log2.c \ + %D%/v64sf_modf.c \ + %D%/v64sf_numtest.c \ + %D%/v64sf_pow.c \ + %D%/v64sf_remainder.c \ + %D%/v64sf_rint.c \ + %D%/v64sf_scalb.c \ + %D%/v64sf_scalbn.c \ + %D%/v64sf_signif.c \ + %D%/v64sf_sin.c \ + %D%/v64sf_sine.c \ + %D%/v64sf_sineh.c \ + %D%/v64sf_sinh.c \ + %D%/v64sf_sqrt.c \ + %D%/v64sf_tan.c \ + %D%/v64sf_tanh.c \ + %D%/v64sf_tgamma.c + +libm_a_SOURCES += $(%C%_src) diff --git a/newlib/libm/machine/amdgcn/amdgcn_veclib.h b/newlib/libm/machine/amdgcn/amdgcn_veclib.h new file mode 100644 index 0000000000..bd67740ac3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/amdgcn_veclib.h @@ -0,0 +1,321 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* Macro library used to help during conversion of scalar math functions to + vectorized SIMD equivalents on AMD GCN. */ + +/* Optimization at -O2 and above currently result in ICEs when converting + between vector types. */ +#pragma GCC optimize ("O1") + +typedef float v2sf __attribute__ ((vector_size (8))); +typedef float v4sf __attribute__ ((vector_size (16))); +typedef float v8sf __attribute__ ((vector_size (32))); +typedef float v16sf __attribute__ ((vector_size (64))); +typedef float v32sf __attribute__ ((vector_size (128))); +typedef float v64sf __attribute__ ((vector_size (256))); + +typedef double v2df __attribute__ ((vector_size (16))); +typedef double v4df __attribute__ ((vector_size (32))); +typedef double v8df __attribute__ ((vector_size (64))); +typedef double v16df __attribute__ ((vector_size (128))); +typedef double v32df __attribute__ ((vector_size (256))); +typedef double v64df __attribute__ ((vector_size (512))); + +typedef int v2si __attribute__ ((vector_size (8))); +typedef int v4si __attribute__ ((vector_size (16))); +typedef int v8si __attribute__ ((vector_size (32))); +typedef int v16si __attribute__ ((vector_size (64))); +typedef int v32si __attribute__ ((vector_size (128))); +typedef int v64si __attribute__ ((vector_size (256))); + +typedef unsigned int v64usi __attribute__ ((vector_size (256))); + +typedef long v2di __attribute__ ((vector_size (16))); +typedef long v4di __attribute__ ((vector_size (32))); +typedef long v8di __attribute__ ((vector_size (64))); +typedef long v16di __attribute__ ((vector_size (128))); +typedef long v32di __attribute__ ((vector_size (256))); +typedef long v64di __attribute__ ((vector_size (512))); + +typedef union { + v2sf t_v2sf; + v4sf t_v4sf; + v8sf t_v8sf; + v16sf t_v16sf; + v32sf t_v32sf; + v64sf t_v64sf; + + v2df t_v2df; + v4df t_v4df; + v8df t_v8df; + v16df t_v16df; + v32df t_v32df; + v64df t_v64df; + + v2si t_v2si; + v4si t_v4si; + v8si t_v8si; + v16si t_v16si; + v32si t_v32si; + v64si t_v64si; + + v64usi t_v64usi; + + v2di t_v2di; + v4di t_v4di; + v8di t_v8di; + v16di t_v16di; + v32di t_v32di; + v64di t_v64di; +} vector_union; + +/* Cast between vectors with a different number of elements. */ + +#define RESIZE_VECTOR(to_t, from) \ +({ \ + __auto_type __from = (from); \ + *((to_t *) &__from); \ +}) + +/* Bit-wise cast vector FROM to type TO_T. */ + +#define CAST_VECTOR(to_t, from) \ +({ \ + _Static_assert (sizeof (to_t) == sizeof (from)); \ + union { \ + typeof (from) __from; \ + to_t __to; \ + } __tmp; \ + __tmp.__from = (from); \ + __tmp.__to; \ +}) + +#define NO_COND __mask + +/* Note - __mask is _not_ accounted for in VECTOR_MERGE! */ +#define VECTOR_MERGE(vec1, vec2, cond) \ +({ \ + _Static_assert (__builtin_types_compatible_p (typeof (vec1), typeof (vec2))); \ + union { \ + typeof (vec1) val; \ + v64si t_v64si; \ + v64di t_v64di; \ + } __vec1, __vec2, __res; \ + __vec1.val = (vec1); \ + __vec2.val = (vec2); \ + __builtin_choose_expr ( \ + sizeof (vec1) == sizeof (v64si), \ + ({ \ + v64si __bitmask = __builtin_convertvector ((cond), v64si); \ + __res.t_v64si = (__vec1.t_v64si & __bitmask) \ + | (__vec2.t_v64si & ~__bitmask); \ + }), \ + ({ \ + v64di __bitmask = __builtin_convertvector ((cond), v64di); \ + __res.t_v64di = (__vec1.t_v64di & __bitmask) \ + | (__vec2.t_v64di & ~__bitmask); \ + })); \ + __res.val; \ +}) + +#define VECTOR_RETURN(retval, cond) \ +do { \ + _Static_assert (__builtin_types_compatible_p (typeof (retval), typeof (__ret))); \ + __auto_type __cond = __builtin_convertvector ((cond), typeof (__mask)); \ + __auto_type __retval = (retval); \ + VECTOR_COND_MOVE (__ret, __retval, __cond); \ + __mask &= ~__cond; \ +} while (0) + +#define VECTOR_COND_MOVE(var, val, cond) \ +do { \ + _Static_assert (__builtin_types_compatible_p (typeof (var), typeof (val))); \ + __auto_type __cond = __builtin_convertvector ((cond), typeof (__mask)); \ + var = VECTOR_MERGE ((val), var, __cond & __mask); \ +} while (0) + +#define VECTOR_IF(cond, cond_var) \ +{ \ + __auto_type cond_var = (cond); \ + __auto_type __inv_cond = ~cond_var; \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSEIF(cond, cond_var) \ + } \ + cond_var = __inv_cond & (cond); \ + __inv_cond &= ~(cond); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSE(cond_var) \ + } \ + cond_var = __inv_cond; \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_IF2(cond, cond_var, prev_cond_var) \ +{ \ + __auto_type cond_var = (cond) & __builtin_convertvector (prev_cond_var, typeof (cond)); \ + __auto_type __inv_cond = ~(cond); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSEIF2(cond, cond_var, prev_cond_var) \ + } \ + cond_var = (cond) & __inv_cond & __builtin_convertvector (prev_cond_var, typeof (cond)); \ + __inv_cond &= ~(cond); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + +#define VECTOR_ELSE2(cond_var, prev_cond_var) \ + } \ + cond_var = __inv_cond & __builtin_convertvector (prev_cond_var, typeof (__inv_cond)); \ + if (!ALL_ZEROES_P (cond_var)) \ + { + + +#define VECTOR_ENDIF \ + } \ +} + +#define VECTOR_INIT_AUX(x, type) \ +({ \ + typeof (x) __e = (x); \ + type __tmp = { \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e, \ + __e, __e, __e, __e, __e, __e, __e, __e }; \ + __tmp; \ +}) + +#define VECTOR_INIT(x) \ + (_Generic ((x), int: VECTOR_INIT_AUX ((x), v64si), \ + unsigned: VECTOR_INIT_AUX ((x), v64usi), \ + long: VECTOR_INIT_AUX ((x), v64di), \ + float: VECTOR_INIT_AUX ((x), v64sf), \ + double: VECTOR_INIT_AUX ((x), v64df))) + +#define VECTOR_WIDTH(TYPE) (sizeof (TYPE) / (V_SF_SI_P (TYPE) ? 4 : 8)) + +#define V_SF_SI_P(TYPE) \ + (__builtin_types_compatible_p (TYPE, v2sf) \ + || __builtin_types_compatible_p (TYPE, v4sf) \ + || __builtin_types_compatible_p (TYPE, v8sf) \ + || __builtin_types_compatible_p (TYPE, v16sf) \ + || __builtin_types_compatible_p (TYPE, v32sf) \ + || __builtin_types_compatible_p (TYPE, v64sf) \ + || __builtin_types_compatible_p (TYPE, v2si) \ + || __builtin_types_compatible_p (TYPE, v4si) \ + || __builtin_types_compatible_p (TYPE, v8si) \ + || __builtin_types_compatible_p (TYPE, v16si) \ + || __builtin_types_compatible_p (TYPE, v32si) \ + || __builtin_types_compatible_p (TYPE, v64si)) + +#define VECTOR_INIT_MASK(TYPE) \ +({ \ + vector_union __mask; \ + __mask.t_v64di = VECTOR_INIT (0L); \ + for (int i = 0; i < VECTOR_WIDTH (TYPE); i++) \ + __mask.t_v64di[i] = -1; \ + __builtin_choose_expr (V_SF_SI_P (TYPE), __mask.t_v64si, __mask.t_v64di); \ +}) + +#define ALL_ZEROES_P(x) (COND_TO_BITMASK(x) == 0) + +#define COND_TO_BITMASK(x) \ +({ \ + long __tmp = 0; \ + __auto_type __x = __builtin_convertvector((x), typeof (__mask)) & __mask; \ + __builtin_choose_expr (sizeof (__mask) == 256, \ + ({ asm ("v_cmp_ne_u32_e64 %0, %1, 0" \ + : "=Sg" (__tmp) \ + : "v" (__x)); }), \ + ({ asm ("v_cmp_ne_u64_e64 %0, %1, 0" \ + : "=Sg" (__tmp) \ + : "v" (__x)); })); \ + __tmp; \ +}) + +#define VECTOR_WHILE(cond, cond_var, prev_cond_var) \ +{ \ + __auto_type cond_var = prev_cond_var; \ + for (;;) { \ + cond_var &= (cond); \ + if (ALL_ZEROES_P (cond_var)) \ + break; + +#define VECTOR_ENDWHILE \ + } \ +} + +#define DEF_VS_MATH_FUNC(rettype, name, args...) \ + rettype v64sf##_##name##_aux (args, v64si __mask) + +#define DEF_VD_MATH_FUNC(rettype, name, args...) \ + rettype v64df##_##name##_aux (args, v64di __mask) + +/* Use this for predicate functions that take a vector of doubles but + return a vector of ints. */ +#define DEF_VD_MATH_PRED(rettype, name, args...) \ + rettype v64df##_##name##_aux (args, v64si __mask) + +#define FUNCTION_INIT(rettype) \ + rettype __ret + +#define FUNCTION_RETURN \ + return __ret + +#define DEF_VARIANT(FUN, TRET, TARG, COUNT) \ +v##COUNT##TRET \ +v##COUNT##TARG##_##FUN (v##COUNT##TARG __arg) \ +{ \ + __auto_type __upsized_arg = RESIZE_VECTOR (v64##TARG, __arg); \ + __auto_type __mask = VECTOR_INIT_MASK (v##COUNT##TRET); \ + __auto_type __result = v64##TARG##_##FUN##_aux (__upsized_arg, __mask); \ + return RESIZE_VECTOR (v##COUNT##TRET, __result); \ +} + +#define DEF_VARIANT2(FUN, TRET, TARG, COUNT) \ +v##COUNT##TRET \ +v##COUNT##TARG##_##FUN (v##COUNT##TARG __arg1, v##COUNT##TARG __arg2) \ +{ \ + __auto_type __upsized_arg1 = RESIZE_VECTOR (v64##TARG, __arg1); \ + __auto_type __upsized_arg2 = RESIZE_VECTOR (v64##TARG, __arg2); \ + __auto_type __mask = VECTOR_INIT_MASK (v##COUNT##TRET); \ + __auto_type __result = v64##TARG##_##FUN##_aux (__upsized_arg1, __upsized_arg2, __mask); \ + return RESIZE_VECTOR (v##COUNT##TRET, __result); \ +} + +#define DEF_VARIANTS(FUN, RETTYPE, ARGTYPE) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 2) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 4) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 8) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 16) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 32) \ + DEF_VARIANT (FUN, RETTYPE, ARGTYPE, 64) + +#define DEF_VARIANTS2(FUN, RETTYPE, ARGTYPE) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 2) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 4) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 8) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 16) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 32) \ + DEF_VARIANT2 (FUN, RETTYPE, ARGTYPE, 64) diff --git a/newlib/libm/machine/amdgcn/amdgcnmach.h b/newlib/libm/machine/amdgcn/amdgcnmach.h new file mode 100644 index 0000000000..c9d5e41c43 --- /dev/null +++ b/newlib/libm/machine/amdgcn/amdgcnmach.h @@ -0,0 +1,242 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* Common header file for AMD GCN vector math routines. */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Copyright (c) 2017-2018 Arm Ltd. All rights reserved. + + SPDX-License-Identifier: BSD-3-Clause + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/* This header is partially based on: + + newlib/libm/common/fdlibm.h + newlib/libm/mathfp/zmath.h + newlib/libm/common/math_errf.c + newlib/libm/common/math_config.h */ + +#include +#include +#include +#include "amdgcn_veclib.h" + +/* Vectorized versions of macros from newlib/libm/common/fdlibm.h */ + +#define EXTRACT_WORDS(hi, lo, x) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = (x); \ + hi = __builtin_convertvector (__tmp.t_v64di >> 32, typeof (hi)); \ + lo = __builtin_convertvector (__tmp.t_v64di & 0xffffffff, typeof (lo)); \ +} while (0) + +#define INSERT_WORDS(x, hi, lo, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64di = __builtin_convertvector (hi, v64di) << 32 | \ + __builtin_convertvector (lo, v64di) & 0xffffffff; \ + VECTOR_COND_MOVE (x, __tmp.t_v64df, cond); \ +} while (0) + +#define GET_HIGH_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = (y); \ + VECTOR_COND_MOVE (x, __builtin_convertvector (__tmp.t_v64di >> 32, v64si), \ + (cond)); \ +} while (0) + +#define GET_LOW_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = (y); \ + VECTOR_COND_MOVE (x, __builtin_convertvector (__tmp.t_v64di & 0xffffffff, \ + v64si), (cond)); \ +} while (0) + +#define SET_HIGH_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = x; \ + __tmp.t_v64di &= 0xffffffff; \ + __tmp.t_v64di |= __builtin_convertvector (y, v64di) << 32; \ + VECTOR_COND_MOVE (x, __tmp.t_v64df, (cond)); \ +} while (0) + +#define SET_LOW_WORD(x, y, cond) \ +do { \ + vector_union __tmp; \ + __tmp.t_v64df = x; \ + __tmp.t_v64di &= 0xffffffff00000000ULL; \ + __tmp.t_v64di |= __builtin_convertvector (y, v64di); \ + VECTOR_COND_MOVE (x, __tmp.t_v64df, (cond)); \ + } while (0) + +#define GET_FLOAT_WORD(x, y, cond) \ + VECTOR_COND_MOVE(x, CAST_VECTOR(v64si, (y)), (cond)) + +#define SET_FLOAT_WORD(x, y, cond) \ + VECTOR_COND_MOVE(x, CAST_VECTOR(v64sf, (y)), (cond)) + +/* Definitions from newlib/libm/common/fdlibm.h */ + +#ifdef _FLT_LARGEST_EXPONENT_IS_NORMAL +#define FLT_UWORD_IS_FINITE(x) ((x) == (x)) +#define FLT_UWORD_IS_NAN(x) ((x) != (x)) +#define FLT_UWORD_IS_INFINITE(x) ((x) != (x)) +#define FLT_UWORD_MAX 0x7fffffff +#define FLT_UWORD_EXP_MAX 0x43010000 +#define FLT_UWORD_LOG_MAX 0x42b2d4fc +#define FLT_UWORD_LOG_2MAX 0x42b437e0 +#define HUGE ((float)0X1.FFFFFEP128) +#else +#define FLT_UWORD_IS_FINITE(x) ((x)<0x7f800000) +#define FLT_UWORD_IS_NAN(x) ((x)>0x7f800000) +#define FLT_UWORD_IS_INFINITE(x) ((x)==0x7f800000) +#define FLT_UWORD_MAX 0x7f7fffffL +#define FLT_UWORD_EXP_MAX 0x43000000 +#define FLT_UWORD_LOG_MAX 0x42b17217 +#define FLT_UWORD_LOG_2MAX 0x42b2d4fc +#define HUGE ((float)3.40282346638528860e+38) +#endif +#define FLT_UWORD_HALF_MAX (FLT_UWORD_MAX-(1L<<23)) +#define FLT_LARGEST_EXP (FLT_UWORD_MAX>>23) + +#ifdef _FLT_NO_DENORMALS +#define FLT_UWORD_IS_ZERO(x) ((x)<0x00800000) +#define FLT_UWORD_IS_SUBNORMAL(x) ((x) != (x)) +#define FLT_UWORD_MIN 0x00800000 +#define FLT_UWORD_EXP_MIN 0x42fc0000 +#define FLT_UWORD_LOG_MIN 0x42aeac50 +#define FLT_SMALLEST_EXP 1 +#else +#define FLT_UWORD_IS_ZERO(x) ((x)==0) +#define FLT_UWORD_IS_SUBNORMAL(x) ((x)<0x00800000) +#define FLT_UWORD_MIN 0x00000001 +#define FLT_UWORD_EXP_MIN 0x43160000 +#define FLT_UWORD_LOG_MIN 0x42cff1b5 +#define FLT_SMALLEST_EXP -22 +#endif + +/* Definitions from newlib/libm/mathfp/zmath.h */ + +#define NUM 3 +#define NAN 2 +#define INF 1 + +#define __PI 3.14159265358979323846 +#define __SQRT_HALF 0.70710678118654752440 +#define __PI_OVER_TWO 1.57079632679489661923132 +#define __INV_PI_OVER_TWO_2_24 10680707.430881743590348355907974 + +typedef const union +{ + unsigned int l[2]; + double d; +} udouble; + +typedef const union +{ + unsigned int l; + float f; +} ufloat; + +extern double BIGX; +extern double SMALLX; + +extern udouble z_infinity; +extern udouble z_notanum; +extern double z_rooteps; + +extern ufloat z_infinity_f; +extern ufloat z_notanum_f; +extern float z_rooteps_f; + +/* Vectorized versions of functions from newlib/libm/common/math_errf.c */ + +static v64sf v64sf_math_oflowf (v64si sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p97f), + VECTOR_INIT (0x1p97f), sign) * 0x1p97f; +} + +static v64sf v64sf_math_uflowf (v64si sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p-95f), + VECTOR_INIT (0x1p-95f), sign) * 0x1p-95f; +} + +/* Vectorized versions of functions from newlib/libm/common/math_config.h */ + +static v64si v64sf_issignalingf_inline (v64sf x) +{ + v64si __mask = VECTOR_INIT (-1); + v64si ix; + GET_FLOAT_WORD (ix, x, NO_COND); + /* Use IEEE-754 2008 encoding - i.e. exponent bits all 1, MSB of + significand is 0 for signalling NaN. */ + return ((ix & 0x7f800000) == 0x7f800000) & ((ix & 0x00400000) == 0); +} + +/* Vector extensions to sys/reent.h */ + +struct v64_reent { + v64si _v64si_gamma_signgam; +}; + +extern struct v64_reent *_v64_reent; +#define _V64_REENT _v64_reent + +#define _REENT_V64SI_SIGNGAM(ptr) ((ptr)->_v64si_gamma_signgam) + +/* Vector extensions to math.h */ + +#define v64si_signgam (*__v64si_signgam()) +extern v64si* __v64si_signgam (void); +#define __v64si_signgam_r(ptr) _REENT_V64SI_SIGNGAM(ptr) diff --git a/newlib/libm/machine/amdgcn/v64_mathcnst.c b/newlib/libm/machine/amdgcn/v64_mathcnst.c new file mode 100644 index 0000000000..555df24d52 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64_mathcnst.c @@ -0,0 +1,52 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_mathcnst.c in Newlib. */ + +#include "amdgcnmach.h" + +double BIGX = 7.09782712893383973096e+02; +double SMALLX = -7.45133219101941108420e+02; +double z_rooteps = 7.4505859692e-9; +float z_rooteps_f = 1.7263349182589107e-4; + +ufloat z_hugeval_f = { 0x7f800000 }; +ufloat z_infinity_f = { 0x7f800000 }; +ufloat z_notanum_f = { 0x7fd00000 }; + +#ifdef __IEEE_BIG_ENDIAN +udouble z_hugeval = { 0x7ff00000, 0 }; +udouble z_infinity = { 0x7ff00000, 0 }; +udouble z_notanum = { 0xeff80000, 0 }; +#else /* __IEEE_LITTLE_ENDIAN */ +udouble z_hugeval = { 0, 0x7ff00000 }; +udouble z_infinity = { 0, 0x7ff00000 }; +udouble z_notanum = { 0, 0x7ff80000 }; +#endif /* __IEEE_LITTLE_ENDIAN */ + diff --git a/newlib/libm/machine/amdgcn/v64_reent.c b/newlib/libm/machine/amdgcn/v64_reent.c new file mode 100644 index 0000000000..e9c2b35f4e --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64_reent.c @@ -0,0 +1,24 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include "amdgcnmach.h" + +static struct v64_reent __reent; +struct v64_reent *_v64_reent = &__reent; + +v64si* +__v64si_signgam (void) +{ + return &_REENT_V64SI_SIGNGAM(_V64_REENT); +} diff --git a/newlib/libm/machine/amdgcn/v64df_acos.c b/newlib/libm/machine/amdgcn/v64df_acos.c new file mode 100644 index 0000000000..63a34cad2d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_acos.c @@ -0,0 +1,42 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_acos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_asine_aux (v64df x, int acosine, v64di); + +DEF_VD_MATH_FUNC (v64df, acos, v64df x) +{ + return v64df_asine_aux(x, 1, __mask); +} + +DEF_VARIANTS (acos, df, df) + diff --git a/newlib/libm/machine/amdgcn/v64df_acosh.c b/newlib/libm/machine/amdgcn/v64df_acosh.c new file mode 100644 index 0000000000..d98d38b117 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_acosh.c @@ -0,0 +1,81 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/e_acosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); +v64df v64df_log1p_aux (v64df, v64di); +v64df v64df_sqrt_aux (v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, acosh, v64df x) +{ + static const double one = 1.0; + static const double ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ + + FUNCTION_INIT (v64df); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + + VECTOR_IF (hx < 0x3ff00000, cond) // x < 1 */ + VECTOR_RETURN ((x-x) / (x-x), cond); + VECTOR_ENDIF + VECTOR_IF (hx >=0x41b00000, cond) // x > 2**28 */ + VECTOR_IF2 (hx >=0x7ff00000, cond2, cond) // x is inf of NaN */ + VECTOR_RETURN (x+x, cond2); + VECTOR_ELSE (cond2) + /* acosh(huge)=log(2x) */ + VECTOR_RETURN (v64df_log_aux (x, __mask) + ln2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (((hx - 0x3ff00000) | lx) == 0, cond) + /* acosh(1) = 0 */ + VECTOR_RETURN (VECTOR_INIT (0.0), cond); + VECTOR_ENDIF + VECTOR_IF (hx > 0x40000000, cond) /* 2**28 > x > 2 */ + { + v64df t = x * x; + VECTOR_RETURN (v64df_log_aux (2.0*x - one / + (x + v64df_sqrt_aux (t - one, __mask)), + __mask), + cond); + } + VECTOR_ELSE (cond) /* 1 0.5, cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (1 - acosine), cond); + + /* Check for range error. */ + VECTOR_IF2 (y > 1.0, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (g, (1.0 - y) / 2.0, cond); + VECTOR_COND_MOVE (y, -2.0 * v64df_sqrt_aux (g, __mask), cond); + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (acosine), cond); + VECTOR_IF2 (y < z_rooteps, cond2, cond) + VECTOR_COND_MOVE (res, y, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (g, y * y, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF ((y >= z_rooteps) | __builtin_convertvector(branch, v64di), cond) + { + /* Calculate the Taylor series. */ + v64df P = ((((p[4] * g + p[3]) * g + p[2]) * g + p[1]) * g + p[0]) * g; + v64df Q = ((((g + q[4]) * g + q[3]) * g + q[2]) * g + q[1]) * g + q[0]; + v64df R = P / Q; + + VECTOR_COND_MOVE (res, y + y * R, cond); + } + VECTOR_ENDIF + + v64df a_i = VECTOR_MERGE (VECTOR_INIT (a[1]), VECTOR_INIT (a[0]), i != 0); + + /* Calculate asine or acose. */ + if (acosine == 0) + { + VECTOR_COND_MOVE (res, (a_i + res) + a_i, NO_COND); + VECTOR_IF (x < 0.0, cond) + VECTOR_COND_MOVE (res, -res, cond); + VECTOR_ENDIF + } + else + { + v64df b_i = VECTOR_MERGE (VECTOR_INIT(b[1]), VECTOR_INIT(b[0]), i != 0); + + VECTOR_IF (x < 0.0, cond) + VECTOR_COND_MOVE (res, (b_i + res) + b_i, cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (res, (a_i - res) + a_i, cond); + VECTOR_ENDIF + } + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_asinh.c b/newlib/libm/machine/amdgcn/v64df_asinh.c new file mode 100644 index 0000000000..add4a486a6 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_asinh.c @@ -0,0 +1,81 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_asinh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); +v64df v64df_log1p_aux (v64df, v64di); +v64df v64df_sqrt_aux (v64df, v64di); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, asinh, v64df x) +{ + static const double one = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */ + static const double ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */ + static const double huge = 1.00000000000000000000e+300; + + FUNCTION_INIT (v64df); + + v64df w; + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >=0x7ff00000, cond) /* x is inf or NaN */ + VECTOR_RETURN (x + x, cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x3e300000, cond) /* |x|<2**-28 */ + VECTOR_IF2 (__builtin_convertvector(huge+x > one, v64si), cond2, cond) /* return x inexact except 0 */ + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (ix > 0x41b00000, cond) /* x > 2**28 */ + VECTOR_COND_MOVE (w, v64df_log_aux (__builtin_gcn_fabsv (x), __mask) + ln2, + cond); + VECTOR_ELSEIF (ix > 0x40000000, cond) /* 2**28 > |x| > 2.0 */ + v64df t = __builtin_gcn_fabsv (x); + VECTOR_COND_MOVE (w, v64df_log_aux (2.0 * t + one / (v64df_sqrt_aux (x*x + one, __mask) + t), __mask), + cond); + VECTOR_ELSE (cond) /* 2.0 > |x| > 2**-28 */ + v64df t = x * x; + VECTOR_COND_MOVE (w, v64df_log1p_aux (__builtin_gcn_fabsv (x) + t / (one + v64df_sqrt_aux (one + t, __mask)), __mask), + cond); + VECTOR_ENDIF + + VECTOR_IF (hx > 0, cond) + VECTOR_RETURN (w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (asinh, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_atan.c b/newlib/libm/machine/amdgcn/v64df_atan.c new file mode 100644 index 0000000000..66b7a8d6cb --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atan.c @@ -0,0 +1,43 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_atan.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_atangent_aux (v64df, v64df, v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, atan, v64df x) +{ + return v64df_atangent_aux (x, + VECTOR_INIT (0.0), + VECTOR_INIT (0.0), 0, __mask); +} + +DEF_VARIANTS (atan, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_atan2.c b/newlib/libm/machine/amdgcn/v64df_atan2.c new file mode 100644 index 0000000000..18307883ef --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atan2.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_atan2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_atangent_aux (v64df, v64df, v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, atan2, v64df v, v64df u) +{ + return (v64df_atangent_aux (VECTOR_INIT (0.0), v, u, 1, __mask)); +} + +DEF_VARIANTS2 (atan2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_atangent.c b/newlib/libm/machine/amdgcn/v64df_atangent.c new file mode 100644 index 0000000000..b5b375679c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atangent.c @@ -0,0 +1,161 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_atangent.c in Newlib. */ + +#include +#include "amdgcnmach.h" + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_fabsv) \ + && __has_builtin (__builtin_gcn_frexpv_exp) + +DEF_VD_MATH_FUNC (v64df, atangent, v64df x, v64df v, v64df u, int arctan2) +{ + static const double ROOT3 = 1.73205080756887729353; + static const double a[] = { 0.0, 0.52359877559829887308, 1.57079632679489661923, + 1.04719755119659774615 }; + static const double q[] = { 0.41066306682575781263e+2, + 0.86157349597130242515e+2, + 0.59578436142597344465e+2, + 0.15024001160028576121e+2 }; + static const double p[] = { -0.13688768894191926929e+2, + -0.20505855195861651981e+2, + -0.84946240351320683534e+1, + -0.83758299368150059274 }; + static const float z_rooteps = 7.4505859692e-9; + + FUNCTION_INIT (v64df); + + v64df zero = VECTOR_INIT (0.0); + v64df pi = VECTOR_INIT (__PI); + v64df pi_over_two = VECTOR_INIT (__PI_OVER_TWO); + v64df res; + v64si branch = VECTOR_INIT (0); + + /* Preparation for calculating arctan2. */ + if (arctan2) + { + VECTOR_IF (u == 0.0, cond) + VECTOR_IF2 (v == 0.0, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (0.0), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, pi_over_two, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (~branch, cond) + /* Get the exponent values of the inputs. */ + v64si expv = __builtin_gcn_frexpv_exp (v); + v64si expu = __builtin_gcn_frexpv_exp (u); + + /* See if a divide will overflow. */ + v64si e = expv - expu; + + VECTOR_IF2 (e > DBL_MAX_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, pi_over_two, cond2); + VECTOR_ENDIF + + /* Also check for underflow. */ + VECTOR_IF2 (e < DBL_MIN_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, zero, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + } + + VECTOR_IF (~branch, cond) + v64df f; + v64si N = VECTOR_INIT (0); + + if (arctan2) + f = __builtin_gcn_fabsv (v / u); + else + f = __builtin_gcn_fabsv (x); + + VECTOR_IF2 (__builtin_convertvector(f > 1.0, v64si), cond2, cond) + VECTOR_COND_MOVE (f, 1.0 / f, cond2); + VECTOR_COND_MOVE (N, VECTOR_INIT (2), cond2); + VECTOR_ENDIF + + VECTOR_IF2 (__builtin_convertvector(f > (2.0 - ROOT3), v64si), cond2, cond) + double A = ROOT3 - 1.0; + VECTOR_COND_MOVE (f, (((A * f - 0.5) - 0.5) + f) / (ROOT3 + f), + cond2); + N += cond2 & 1; + VECTOR_ENDIF + + /* Check for values that are too small. */ + VECTOR_IF2 (__builtin_convertvector((-z_rooteps < f) & (f < z_rooteps), v64si), cond2, cond) + VECTOR_COND_MOVE (res, f, cond2); + + /* Calculate the Taylor series. */ + VECTOR_ELSE2 (cond2, cond) + v64df g = f * f; + v64df P = (((p[3] * g + p[2]) * g + p[1]) * g + p[0]) * g; + v64df Q = (((g + q[3]) * g + q[2]) * g + q[1]) * g + q[0]; + v64df R = P / Q; + + VECTOR_COND_MOVE (res, f + f * R, cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, cond & (N > 1)); + + res += VECTOR_MERGE (VECTOR_INIT (a[1]), zero, cond & (N == 1)); + res += VECTOR_MERGE (VECTOR_INIT (a[2]), zero, cond & (N == 2)); + res += VECTOR_MERGE (VECTOR_INIT (a[3]), zero, cond & (N == 3)); + VECTOR_ENDIF + + if (arctan2) + { + /*if (u < 0.0)*/ + VECTOR_COND_MOVE (res, pi - res, u < 0.0); + /*if (v < 0.0)*/ + VECTOR_COND_MOVE (res, -res, v < 0.0); + } + /*else if (x < 0.0) */ + else + VECTOR_COND_MOVE (res, -res, x < 0.0); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_atanh.c b/newlib/libm/machine/amdgcn/v64df_atanh.c new file mode 100644 index 0000000000..1ca61a3829 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_atanh.c @@ -0,0 +1,75 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/e_atanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log1p_aux (v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, atanh, v64df x) +{ + static const double zero = 0.0; + static const double one = 1.0, huge = 1e300; + + FUNCTION_INIT (v64df); + + v64df t; + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF ((ix | ((lx | (-lx)) >> 31)) > 0x3ff00000, cond) // |x|>1 + VECTOR_RETURN ((x - x)/(x - x), cond); + VECTOR_ENDIF + + VECTOR_IF (ix == 0x3ff00000, cond) + VECTOR_RETURN (x / zero, cond); + VECTOR_ENDIF + + VECTOR_IF ((ix < 0x3e300000) & __builtin_convertvector((huge + x) > zero, v64si), cond) // x<2**-28 + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + SET_HIGH_WORD (x, ix, NO_COND); + + VECTOR_IF (ix < 0x3fe00000, cond) // x < 0.5 */ + v64df t2 = x + x; + VECTOR_COND_MOVE (t, 0.5 * v64df_log1p_aux (t2 + t2 * x / (one - x), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (t, 0.5 * v64df_log1p_aux ((x + x) / (one - x), __mask), cond); + VECTOR_ENDIF + + VECTOR_IF (hx >= 0, cond) + VECTOR_RETURN (t, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-t, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (atanh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_copysign.c b/newlib/libm/machine/amdgcn/v64df_copysign.c new file mode 100644 index 0000000000..c57af07dfe --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_copysign.c @@ -0,0 +1,43 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_copysign.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_FUNC (v64df, copysign, v64df x, v64df y) +{ + FUNCTION_INIT (v64df); + + v64si hx, hy; + GET_HIGH_WORD(hx, x, NO_COND); + GET_HIGH_WORD(hy, y, NO_COND); + SET_HIGH_WORD(x, (hx & 0x7fffffff) | (hy & 0x80000000), NO_COND); + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (copysign, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_cos.c b/newlib/libm/machine/amdgcn/v64df_cos.c new file mode 100644 index 0000000000..6e464ef3da --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_cos.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_cos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sine_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, cos, v64df x) +{ + return v64df_sine_aux (x, 1, __mask); +} + +DEF_VARIANTS (cos, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_cosh.c b/newlib/libm/machine/amdgcn/v64df_cosh.c new file mode 100644 index 0000000000..d0268b5b06 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_cosh.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_cosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sineh_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, cosh, v64df x) +{ + return v64df_sineh_aux (x, 1, __mask); +} + +DEF_VARIANTS (cosh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_erf.c b/newlib/libm/machine/amdgcn/v64df_erf.c new file mode 100644 index 0000000000..518ac979ab --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_erf.c @@ -0,0 +1,185 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_erf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df, v64di); + +static const double +tiny = 1e-300, +half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +two = 2.00000000000000000000e+00, /* 0x40000000, 0x00000000 */ +/* c = (float)0.84506291151 */ +erx = 8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */ +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +efx = 1.28379167095512586316e-01, /* 0x3FC06EBA, 0x8214DB69 */ +efx8= 1.02703333676410069053e+00, /* 0x3FF06EBA, 0x8214DB69 */ +pp0 = 1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */ +pp1 = -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */ +pp2 = -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */ +pp3 = -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */ +pp4 = -2.37630166566501626084e-05, /* 0xBEF8EAD6, 0x120016AC */ +qq1 = 3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */ +qq2 = 6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */ +qq3 = 5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */ +qq4 = 1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */ +qq5 = -3.96022827877536812320e-06, /* 0xBED09C43, 0x42A26120 */ +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +pa0 = -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */ +pa1 = 4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */ +pa2 = -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */ +pa3 = 3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */ +pa4 = -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */ +pa5 = 3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */ +pa6 = -2.16637559486879084300e-03, /* 0xBF61BF38, 0x0A96073F */ +qa1 = 1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */ +qa2 = 5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */ +qa3 = 7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */ +qa4 = 1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */ +qa5 = 1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */ +qa6 = 1.19844998467991074170e-02, /* 0x3F888B54, 0x5735151D */ +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +ra0 = -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */ +ra1 = -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */ +ra2 = -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */ +ra3 = -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */ +ra4 = -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */ +ra5 = -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */ +ra6 = -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */ +ra7 = -9.81432934416914548592e+00, /* 0xC023A0EF, 0xC69AC25C */ +sa1 = 1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */ +sa2 = 1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */ +sa3 = 4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */ +sa4 = 6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */ +sa5 = 4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */ +sa6 = 1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */ +sa7 = 6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */ +sa8 = -6.04244152148580987438e-02, /* 0xBFAEEFF2, 0xEE749A62 */ +/* + * Coefficients for approximation to erfc in [1/.35,28] + */ +rb0 = -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */ +rb1 = -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */ +rb2 = -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */ +rb3 = -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */ +rb4 = -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */ +rb5 = -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */ +rb6 = -4.83519191608651397019e+02, /* 0xC07E384E, 0x9BDC383F */ +sb1 = 3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */ +sb2 = 3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */ +sb3 = 1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */ +sb4 = 3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */ +sb5 = 2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */ +sb6 = 4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */ +sb7 = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */ + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, erf, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >= 0x7ff00000, cond) /* erf(nan)=nan */ + v64si i = (hx >> 31) << 1; + /* erf(+-inf)=+-1 */ + VECTOR_RETURN (__builtin_convertvector (1 - i, v64df) + one / x, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3feb0000, cond) /* |x|<0.84375 */ + VECTOR_IF2 (ix < 0x3e300000, cond2, cond) /* |x|<2**-28 */ + VECTOR_IF2 (ix < 0x00800000, cond3, cond2) /* avoid underflow */ + VECTOR_RETURN (0.125*(8.0*x + efx8*x), cond3); + VECTOR_ENDIF + VECTOR_RETURN (x + efx*x, cond2); + VECTOR_ENDIF + + v64df z = x*x; + v64df r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + v64df s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + v64df y = r/s; + + VECTOR_RETURN (x + x*y, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3ff40000, cond) /* 0.84375 <= |x| < 1.25 */ + v64df s = __builtin_gcn_fabsv (x) - one; + v64df P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + v64df Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (erx + P/Q, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (-erx - P/Q, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (ix >= 0x40180000, cond) /* inf>|x|>=6 */ + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0 - tiny), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (VECTOR_INIT (tiny - 1.0), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + x = __builtin_gcn_fabsv(x); + v64df s = 1.0 / (x*x); + v64df R, S; + VECTOR_IF (ix < 0x4006DB6E, cond) /* |x| < 1/0.35 */ + VECTOR_COND_MOVE (R, ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))), cond); + VECTOR_COND_MOVE (S, one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))), cond); + VECTOR_ELSE (cond) /* |x| >= 1/0.35 */ + VECTOR_COND_MOVE (R, rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))), cond); + VECTOR_COND_MOVE (S, one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))), cond); + VECTOR_ENDIF + + v64df z; + SET_LOW_WORD (z, VECTOR_INIT(0), NO_COND); + v64df r = v64df_exp_aux (-z*z - 0.5625, __mask) + * v64df_exp_aux ((z-x)*(z+x) + R/S, __mask); + VECTOR_RETURN (one - r/x, hx >= 0); + VECTOR_RETURN (r/x - one, hx < 0); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (erf, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_exp.c b/newlib/libm/machine/amdgcn/v64df_exp.c new file mode 100644 index 0000000000..f4890e2df3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_exp.c @@ -0,0 +1,103 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_exp.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_ispos (v64df); +v64si v64df_numtest (v64df); + +static const double INV_LN2 = 1.4426950408889634074; +static const double LN2 = 0.6931471805599453094172321; +static const double p[] = { 0.25, 0.75753180159422776666e-2, + 0.31555192765684646356e-4 }; +static const double q[] = { 0.5, 0.56817302698551221787e-1, + 0.63121894374398504557e-3, + 0.75104028399870046114e-6 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_ldexpv) + +DEF_VD_MATH_FUNC (v64df, exp, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity.d), + VECTOR_INIT (0.0), + v64df_ispos (x)), + cond); + VECTOR_ELSEIF (num_type == 0, cond) + VECTOR_RETURN (VECTOR_INIT (1.0), cond); + VECTOR_ENDIF + + /* Check for out of bounds. */ + VECTOR_IF ((x > BIGX) | (x < SMALLX), cond) + errno = ERANGE; + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + /* Check for a value too small to calculate. */ + VECTOR_RETURN (VECTOR_INIT (1.0), + (-z_rooteps_f < x) & (x < z_rooteps_f)); + + /* Calculate the exponent. */ + v64si Nneg = __builtin_convertvector (x * INV_LN2 - 0.5, v64si); + v64si Npos = __builtin_convertvector (x * INV_LN2 + 0.5, v64si); + v64si N = VECTOR_MERGE (Nneg, Npos, x < 0.0); + + /* Construct the mantissa. */ + v64df g = x - __builtin_convertvector (N, v64df) * LN2; + v64df z = g * g; + v64df P = g * ((p[2] * z + p[1]) * z + p[0]); + v64df Q = ((q[3] * z + q[2]) * z + q[1]) * z + q[0]; + v64df R = 0.5 + P / (Q - P); + + /* Return the floating point value. */ + N++; + VECTOR_RETURN (__builtin_gcn_ldexpv (R, N), NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (exp, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_exp2.c b/newlib/libm/machine/amdgcn/v64df_exp2.c new file mode 100644 index 0000000000..33ad59705a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_exp2.c @@ -0,0 +1,32 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +/* Based on newlib/libm/mathfp/s_exp2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_pow_aux (v64df, v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, exp2, v64df x) +{ + return v64df_pow_aux (VECTOR_INIT (2.0), x, __mask); +} + +DEF_VARIANTS (exp2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_finite.c b/newlib/libm/machine/amdgcn/v64df_finite.c new file mode 100644 index 0000000000..3eafe07f05 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_finite.c @@ -0,0 +1,38 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_finite.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_PRED (v64si, finite, v64df x) +{ + FUNCTION_INIT (v64si); + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + return (((hx & 0x7fffffff) - 0x7ff00000) >> 31) != 0; +} + +DEF_VARIANTS (finite, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_fmod.c b/newlib/libm/machine/amdgcn/v64df_fmod.c new file mode 100644 index 0000000000..750546f60a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_fmod.c @@ -0,0 +1,199 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_fmod.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_FUNC (v64df, fmod, v64df x, v64df y) +{ + FUNCTION_INIT(v64df); + + v64si hx, hy, hz; + v64usi lx, ly, lz; + EXTRACT_WORDS (hx, lx, x); + EXTRACT_WORDS (hy, ly, y); + v64si sx = hx & 0x80000000; /* sign of x */ + hx ^=sx; /* |x| */ + hy &= 0x7fffffff; /* |y| */ + + v64df zeroes = VECTOR_MERGE (VECTOR_INIT (-0.0), + VECTOR_INIT (0.0), + sx != 0); + + /* purge off exception values */ + VECTOR_IF (((hy | ly) == 0) | (hx >= 0x7ff00000) + | ((hy | ((ly | -ly) >> 31)) > 0x7ff00000), cond) // y=0, or x not finite or y is NaN + VECTOR_RETURN ((x * y) / (x * y), cond); + VECTOR_ENDIF + VECTOR_IF (hx <= hy, cond) // |x|<|y| return x + VECTOR_IF2 ((hx < hy) | (lx < ly), cond2, cond) + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF2 (lx == ly, cond2, cond) + VECTOR_RETURN (zeroes, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + /* determine ix = ilogb(x) */ + v64si ix; + VECTOR_IF (hx < 0x00100000, cond) // subnormal x + VECTOR_IF2 (hx == 0, cond2, cond) + ix = VECTOR_INIT (-1043); + for (v64si i = __builtin_convertvector (lx, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ELSE2 (cond2, cond) + ix = VECTOR_INIT (-1022); + for (v64si i = __builtin_convertvector (hx << 11, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (ix, (hx >> 20) - 1023, cond); + VECTOR_ENDIF + + /* determine iy = ilogb(y) */ + v64si iy; + VECTOR_IF (hy < 0x00100000, cond) // subnormal y + VECTOR_IF2 (hy == 0, cond2, cond) + iy = VECTOR_INIT (-1043); + for (v64si i = __builtin_convertvector (ly, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (iy, iy - 1, cond2 & (i > 0)); + VECTOR_ELSE2 (cond2, cond) + iy = VECTOR_INIT (-1022); + for (v64si i = __builtin_convertvector (hy << 11, v64si); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (iy, iy - 1, cond2 & (i > 0)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (iy, (hy >> 20) - 1023, cond); + VECTOR_ENDIF + + +/* set up {hx,lx}, {hy,ly} and align y to x */ + VECTOR_IF (ix >= -1022, cond) + VECTOR_COND_MOVE (hx, 0x00100000 | (0x000fffff & hx), cond); + VECTOR_ELSE (cond) // subnormal x, shift x to normal + { + v64si n = -1022 - ix; + VECTOR_IF2 (n <= 31, cond2, cond) + VECTOR_COND_MOVE (hx, (hx << n) | (lx >> (32 - n)), cond2); + VECTOR_COND_MOVE (lx, lx << n, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (hx, __builtin_convertvector (lx << (n - 32), v64si), cond2); + VECTOR_COND_MOVE (lx, VECTOR_INIT (0U), cond2); + VECTOR_ENDIF + } + VECTOR_ENDIF + VECTOR_IF (iy >= -1022, cond) + VECTOR_COND_MOVE (hy, 0x00100000 | (0x000fffff & hy), cond); + VECTOR_ELSE (cond) // subnormal y, shift y to normal + { + v64si n = -1022 - iy; + VECTOR_IF2 (n <= 31, cond2, cond) + VECTOR_COND_MOVE (hy, (hy << n) | (ly >> (32 - n)), cond2); + VECTOR_COND_MOVE (ly, ly << n, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (hy, __builtin_convertvector (ly << (n - 32), v64si), cond2); + VECTOR_COND_MOVE (ly, VECTOR_INIT (0U), cond2); + VECTOR_ENDIF + } + VECTOR_ENDIF + +/* fix point fmod */ + v64si n = ix - iy; + v64si cond = n != 0; + + while (!ALL_ZEROES_P (cond)) + { + hz = hx - hy; + lz = lx - ly; + VECTOR_IF2 (lx < ly, cond2, cond) + VECTOR_COND_MOVE (hz, hz - 1, cond2); + VECTOR_ENDIF + VECTOR_IF2 (hz < 0, cond2, cond) + VECTOR_COND_MOVE (hx, hx + hx + (__builtin_convertvector(lx, v64usi) >> 31), cond2); + VECTOR_COND_MOVE (lx, lx + lx, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_IF2 ((hz | lz) == 0, cond3, cond2) // return sign(x)*0 + VECTOR_RETURN (zeroes, cond3); + VECTOR_ENDIF + VECTOR_COND_MOVE (hx, hz + hz + (__builtin_convertvector(lz, v64usi) >> 31), cond2); + VECTOR_COND_MOVE (lx, lz + lz, cond2); + VECTOR_ENDIF + + n += cond; // Active lanes should be -1 + cond &= (n != 0); + } + + hz = hx - hy; + lz = lx - ly; + VECTOR_COND_MOVE (hz, hz - 1, lx < ly); + VECTOR_IF (hz >= 0, cond) + VECTOR_COND_MOVE (hx, hz, cond); + VECTOR_COND_MOVE (lx, lz, cond); + VECTOR_ENDIF + + /* convert back to floating value and restore the sign */ + VECTOR_RETURN (zeroes, (hx | lx) == 0); // return sign(x)*0 + cond = hx < 0x00100000; + while (!ALL_ZEROES_P (cond)) // normalize x + { + VECTOR_COND_MOVE (hx, hx + hx + (lx >> 31), cond); + VECTOR_COND_MOVE (lx, lx + lx, cond); + iy += cond; // Active lanes should be -1 + + cond &= (hx < 0x00100000); + } + VECTOR_IF (iy >= -1022, cond) // normalize output + VECTOR_COND_MOVE (hx, (hx - 0x00100000) | ((iy + 1023) << 20), cond); + INSERT_WORDS (x, hx | sx, lx, cond); + VECTOR_ELSE (cond) // subnormal output */ + n = -1022 - iy; + VECTOR_IF2 (n <= 20, cond2, cond) + VECTOR_COND_MOVE (lx, (lx >> n) | (hx << (32 - n)), cond2); + VECTOR_COND_MOVE (hx, hx >> n, cond2); + VECTOR_ELSEIF2 (n <= 31, cond2, cond) + VECTOR_COND_MOVE (lx, __builtin_convertvector ((hx << (32 - n)) | (lx >> n), v64usi), cond2); + VECTOR_COND_MOVE (hx, sx, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (lx, __builtin_convertvector (hx >> (n - 32), v64usi), cond2); + VECTOR_COND_MOVE (hx, sx, cond2); + VECTOR_ENDIF + INSERT_WORDS (x, hx | sx, lx, cond); + x *= VECTOR_INIT (1.0); /* create necessary signal */ + VECTOR_ENDIF + + VECTOR_RETURN (x, NO_COND); /* exact output */ + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (fmod, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_gamma.c b/newlib/libm/machine/amdgcn/v64df_gamma.c new file mode 100644 index 0000000000..4b5af3e067 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_gamma.c @@ -0,0 +1,38 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/w_gamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_lgamma_aux (v64df x, v64di __mask); + +DEF_VD_MATH_FUNC (v64df, gamma, v64df x) +{ + return v64df_lgamma_aux(x, __mask); +} + +DEF_VARIANTS (gamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_hypot.c b/newlib/libm/machine/amdgcn/v64df_hypot.c new file mode 100644 index 0000000000..fde1cb3840 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_hypot.c @@ -0,0 +1,127 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/e_hypot.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sqrt_aux (v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, hypot, v64df x, v64df y) +{ + FUNCTION_INIT (v64df); + + v64df a = x; + v64df b = y; + + v64si ha; + GET_HIGH_WORD (ha, x, NO_COND); + ha &= 0x7fffffffL; + v64si hb; + GET_HIGH_WORD (hb, y, NO_COND); + hb &= 0x7fffffffL; + + VECTOR_IF (hb > ha, cond) + VECTOR_COND_MOVE (a, y, cond); + VECTOR_COND_MOVE (b, x, cond); + v64si j = ha; + VECTOR_COND_MOVE (ha, hb, cond); + VECTOR_COND_MOVE (hb, j, cond); + VECTOR_ENDIF + SET_HIGH_WORD (a, ha, NO_COND); /* a <- |a| */ + SET_HIGH_WORD (b, hb, NO_COND); /* b <- |b| */ + VECTOR_IF((ha - hb) > 0x3c00000L, cond) // x/y > 2**60 */ + VECTOR_RETURN (a + b, cond); + VECTOR_ENDIF + + v64si k = VECTOR_INIT (0); + + VECTOR_IF (ha > 0x5f300000L, cond) /* a>2**500 */ + VECTOR_IF2 (ha >= 0x7ff00000L, cond2, cond) /* Inf or NaN */ + v64df w = a + b; // for sNaN */ + v64si low; + GET_LOW_WORD (low, a, cond2); + VECTOR_COND_MOVE (w, a, cond2 & (((ha & 0xfffff) | low) == 0)); + GET_LOW_WORD (low, b, cond2); + VECTOR_COND_MOVE (w, b, cond2 & (((hb & 0xfffff) | low) == 0)); + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + /* scale a and b by 2**-600 */ + VECTOR_COND_MOVE (ha, ha - 0x25800000, cond); + VECTOR_COND_MOVE (hb, hb - 0x25800000, cond); + VECTOR_COND_MOVE (k, k + 600, cond); + SET_HIGH_WORD (a, ha, cond); + SET_HIGH_WORD (b, hb, cond); + VECTOR_ENDIF + VECTOR_IF (hb < 0x20b00000, cond) /* b < 2**-500 */ + VECTOR_IF2 (hb <= 0x000fffff, cond2, cond) /* subnormal b or 0 */ + v64si low; + GET_LOW_WORD (low, b, cond); + VECTOR_RETURN (a, cond2 & ((hb | low) == 0)); + /* t1=2^1022 */ + v64df t1 = VECTOR_INIT (0.0); + SET_HIGH_WORD (t1, VECTOR_INIT (0x7fd00000), cond2); + VECTOR_COND_MOVE (b, b * t1, cond2); + VECTOR_COND_MOVE (a, a * t1, cond2); + VECTOR_COND_MOVE (k, k - 1022, cond2); + VECTOR_ELSE2 (cond2, cond) /* scale a and b by 2^600 */ + VECTOR_COND_MOVE (ha, ha + 0x25800000, cond2); /* a *= 2^600 */ + VECTOR_COND_MOVE (hb, hb + 0x25800000, cond2); /* b *= 2^600 */ + VECTOR_COND_MOVE (k, k - 600, cond2); + SET_HIGH_WORD (a, ha, cond2); + SET_HIGH_WORD (b, hb, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + /* medium size a and b */ + v64df w = a - b; + VECTOR_IF (w > b, cond) + v64df t1 = VECTOR_INIT (0.0); + SET_HIGH_WORD (t1, ha, cond); + v64df t2 = a - t1; + VECTOR_COND_MOVE (w, v64df_sqrt_aux (t1*t1 - (b*(-b) - t2 * (a + t1)), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (a, a+a, cond); + v64df y1 = VECTOR_INIT (0.0); + SET_HIGH_WORD (y1, hb, cond); + v64df y2 = b - y1; + v64df t1; + SET_HIGH_WORD (t1, ha + 0x00100000, cond); + v64df t2 = a - t1; + VECTOR_COND_MOVE (w, v64df_sqrt_aux (t1*y1 - (w*(-w) - (t1*y2 + t2*b)), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (k != 0, cond) + v64si high; + v64df t1 = VECTOR_INIT (1.0); + GET_HIGH_WORD (high, t1, cond); + SET_HIGH_WORD (t1, high + (k << 20), cond); + VECTOR_RETURN (t1 * w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (hypot, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_ilogb.c b/newlib/libm/machine/amdgcn/v64df_ilogb.c new file mode 100644 index 0000000000..56eb70089b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_ilogb.c @@ -0,0 +1,59 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_ilogb.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_PRED (v64si, ilogb, v64df x) +{ + FUNCTION_INIT(v64si); + v64si hx, lx, ix; + EXTRACT_WORDS (hx, lx, x); + hx &= 0x7fffffff; + VECTOR_IF (hx < 0x00100000, cond) + VECTOR_RETURN (VECTOR_INIT (-__INT_MAX__), cond & ((hx | lx) == 0)); // FP_ILOGB0 + VECTOR_IF2 (hx == 0, cond2, cond) + ix = VECTOR_INIT (-1043); + for (v64si i = lx; + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ELSE2 (cond2, cond) + ix = VECTOR_INIT (-1022); + for (v64si i = (hx << 11); + !ALL_ZEROES_P (cond2 & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond2 & (i > 0)); + VECTOR_ENDIF + VECTOR_RETURN (ix, cond); + VECTOR_ENDIF + VECTOR_RETURN ((hx >> 20) - 1023, hx < 0x7ff00000); + VECTOR_RETURN (VECTOR_INIT (__INT_MAX__), NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (ilogb, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_isnan.c b/newlib/libm/machine/amdgcn/v64df_isnan.c new file mode 100644 index 0000000000..033917274c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_isnan.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_isnan.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VD_MATH_PRED (v64si, isnan, v64df x) +{ + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + hx &= 0x7fffffff; + hx |= (lx | (-lx)) >> 31; + hx = 0x7ff00000 - hx; + + return (hx >> 31) != 0; +} + +DEF_VARIANTS (isnan, si, df) diff --git a/newlib/libm/machine/amdgcn/v64df_ispos.c b/newlib/libm/machine/amdgcn/v64df_ispos.c new file mode 100644 index 0000000000..ff34598e2a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_ispos.c @@ -0,0 +1,47 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_ispos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64df_ispos (v64df x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64si); + + v64si hx; + GET_HIGH_WORD (hx, x, NO_COND); + + VECTOR_RETURN ((hx & 0x80000000) == 0, NO_COND); + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_lgamma.c b/newlib/libm/machine/amdgcn/v64df_lgamma.c new file mode 100644 index 0000000000..8a827ac834 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_lgamma.c @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/w_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_finite_aux (v64df x, v64di __mask); +v64df v64df_lgamma_r_aux (v64df x, v64si *signgamp, v64di __mask); + +DEF_VD_MATH_FUNC (v64df, lgamma, v64df x) +{ + v64df y = v64df_lgamma_r_aux(x, &(_REENT_V64SI_SIGNGAM(_V64_REENT)), __mask); + if (ALL_ZEROES_P(v64df_finite_aux(y, __mask)) & !ALL_ZEROES_P(v64df_finite_aux(x, __mask))) { + /* lgamma(finite) overflow */ + errno = ERANGE; + } + return y; +} + +DEF_VARIANTS (lgamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_lgamma_r.c b/newlib/libm/machine/amdgcn/v64df_lgamma_r.c new file mode 100644 index 0000000000..59a895e30c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_lgamma_r.c @@ -0,0 +1,300 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/er_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double two52= 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ +half= 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ +a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ +a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */ +a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */ +a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */ +a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */ +a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */ +a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */ +a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */ +a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */ +a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */ +a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */ +a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */ +tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */ +tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */ +/* tt = -(tail of tf) */ +tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */ +t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */ +t1 = -1.47587722994593911752e-01, /* 0xBFC2E427, 0x8DC6C509 */ +t2 = 6.46249402391333854778e-02, /* 0x3FB08B42, 0x94D5419B */ +t3 = -3.27885410759859649565e-02, /* 0xBFA0C9A8, 0xDF35B713 */ +t4 = 1.79706750811820387126e-02, /* 0x3F9266E7, 0x970AF9EC */ +t5 = -1.03142241298341437450e-02, /* 0xBF851F9F, 0xBA91EC6A */ +t6 = 6.10053870246291332635e-03, /* 0x3F78FCE0, 0xE370E344 */ +t7 = -3.68452016781138256760e-03, /* 0xBF6E2EFF, 0xB3E914D7 */ +t8 = 2.25964780900612472250e-03, /* 0x3F6282D3, 0x2E15C915 */ +t9 = -1.40346469989232843813e-03, /* 0xBF56FE8E, 0xBF2D1AF1 */ +t10 = 8.81081882437654011382e-04, /* 0x3F4CDF0C, 0xEF61A8E9 */ +t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */ +t12 = 3.15632070903625950361e-04, /* 0x3F34AF6D, 0x6C0EBBF7 */ +t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */ +t14 = 3.35529192635519073543e-04, /* 0x3F35FD3E, 0xE8C2D3F4 */ +u0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ +u1 = 6.32827064025093366517e-01, /* 0x3FE4401E, 0x8B005DFF */ +u2 = 1.45492250137234768737e+00, /* 0x3FF7475C, 0xD119BD6F */ +u3 = 9.77717527963372745603e-01, /* 0x3FEF4976, 0x44EA8450 */ +u4 = 2.28963728064692451092e-01, /* 0x3FCD4EAE, 0xF6010924 */ +u5 = 1.33810918536787660377e-02, /* 0x3F8B678B, 0xBF2BAB09 */ +v1 = 2.45597793713041134822e+00, /* 0x4003A5D7, 0xC2BD619C */ +v2 = 2.12848976379893395361e+00, /* 0x40010725, 0xA42B18F5 */ +v3 = 7.69285150456672783825e-01, /* 0x3FE89DFB, 0xE45050AF */ +v4 = 1.04222645593369134254e-01, /* 0x3FBAAE55, 0xD6537C88 */ +v5 = 3.21709242282423911810e-03, /* 0x3F6A5ABB, 0x57D0CF61 */ +s0 = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */ +s1 = 2.14982415960608852501e-01, /* 0x3FCB848B, 0x36E20878 */ +s2 = 3.25778796408930981787e-01, /* 0x3FD4D98F, 0x4F139F59 */ +s3 = 1.46350472652464452805e-01, /* 0x3FC2BB9C, 0xBEE5F2F7 */ +s4 = 2.66422703033638609560e-02, /* 0x3F9B481C, 0x7E939961 */ +s5 = 1.84028451407337715652e-03, /* 0x3F5E26B6, 0x7368F239 */ +s6 = 3.19475326584100867617e-05, /* 0x3F00BFEC, 0xDD17E945 */ +r1 = 1.39200533467621045958e+00, /* 0x3FF645A7, 0x62C4AB74 */ +r2 = 7.21935547567138069525e-01, /* 0x3FE71A18, 0x93D3DCDC */ +r3 = 1.71933865632803078993e-01, /* 0x3FC601ED, 0xCCFBDF27 */ +r4 = 1.86459191715652901344e-02, /* 0x3F9317EA, 0x742ED475 */ +r5 = 7.77942496381893596434e-04, /* 0x3F497DDA, 0xCA41A95B */ +r6 = 7.32668430744625636189e-06, /* 0x3EDEBAF7, 0xA5B38140 */ +w0 = 4.18938533204672725052e-01, /* 0x3FDACFE3, 0x90C97D69 */ +w1 = 8.33333333333329678849e-02, /* 0x3FB55555, 0x5555553B */ +w2 = -2.77777777728775536470e-03, /* 0xBF66C16C, 0x16B02E5C */ +w3 = 7.93650558643019558500e-04, /* 0x3F4A019F, 0x98CF38B6 */ +w4 = -5.95187557450339963135e-04, /* 0xBF4380CB, 0x8C0FE741 */ +w5 = 8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */ +w6 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */ + +static const double zero= 0.00000000000000000000e+00; + +v64df v64df_cos_aux (v64df x, v64di __mask); +v64df v64df_log_aux (v64df x, v64di __mask); +v64df v64df_sin_aux (v64df x, v64di __mask); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_floorv) \ + && __has_builtin (__builtin_gcn_fabsv) + +static v64df +v64df_sin_pi (v64df x) +{ + // Explicitly create mask for internal function. + v64di __mask = VECTOR_INIT (-1L); + FUNCTION_INIT (v64df); + + v64df y, z; + v64si n, ix; + + GET_HIGH_WORD (ix, x, NO_COND); + ix &= 0x7fffffff; + + VECTOR_IF (ix < 0x3fd00000, cond) + VECTOR_RETURN (v64df_sin_aux (pi * x, __mask), cond); + VECTOR_ENDIF + y = -x; /* x is assume negative */ + + /* + * argument reduction, make sure inexact flag not raised if input + * is an integer + */ + z = __builtin_gcn_floorv (y); + VECTOR_IF (z != y, cond) + /* inexact anyway */ + VECTOR_COND_MOVE(y, y * 0.5, cond); + VECTOR_COND_MOVE(y, 2.0 * (y - __builtin_gcn_floorv (y)), cond); /* y = |x| mod 2.0 */ + VECTOR_COND_MOVE(n, __builtin_convertvector(y * 4.0, v64si), cond); + VECTOR_ELSE (cond) + VECTOR_IF2 (__builtin_convertvector(ix >= 0x43400000, v64di), cond2, cond) + VECTOR_COND_MOVE(y, VECTOR_INIT(zero), cond2); + VECTOR_COND_MOVE(n, VECTOR_INIT(0), cond2); /* y must be even */ + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE(z, y + two52 /* exact */, cond2 & __builtin_convertvector(ix < 0x43300000, v64di)); + GET_LOW_WORD (n, z, cond2); + VECTOR_COND_MOVE(n, n & 1, cond2); + VECTOR_COND_MOVE(y, __builtin_convertvector(n, v64df), cond2); + VECTOR_COND_MOVE(n, n << 2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (n == 0, cond) + VECTOR_COND_MOVE(y, v64df_sin_aux (pi * y, __mask), cond); + VECTOR_ELSEIF (n == 1 | n == 2, cond) + VECTOR_COND_MOVE(y, v64df_cos_aux (pi * (0.5 - y), __mask), cond); + VECTOR_ELSEIF (n == 3 | n == 4, cond) + VECTOR_COND_MOVE(y, v64df_sin_aux (pi * (VECTOR_INIT(one) - y), __mask), cond); + VECTOR_ELSEIF (n == 5 | n == 6, cond) + VECTOR_COND_MOVE(y, -v64df_cos_aux (pi * (y - 1.5), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE(y, v64df_sin_aux (pi * (y - 2.0), __mask), cond); + VECTOR_ENDIF + + VECTOR_RETURN(-y, NO_COND); + FUNCTION_RETURN; +} + +DEF_VD_MATH_FUNC (v64df, lgamma_r, v64df x, v64si *signgamp) +{ + FUNCTION_INIT (v64df); + + v64df t,y,z,nadj = VECTOR_INIT(0.0),p,p1,p2,p3,q,r,w; + v64si i,hx,lx,ix; + + EXTRACT_WORDS(hx,lx,x); + + /* purge off +-inf, NaN, +-0, and negative arguments */ + *signgamp = VECTOR_INIT(1); + ix = hx&0x7fffffff; + VECTOR_IF(ix>=0x7ff00000, cond) + VECTOR_RETURN (x*x, cond); + VECTOR_ENDIF + VECTOR_IF((ix|lx)==0, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (hx<0)); + VECTOR_RETURN(one/(x-x), cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x3b900000, cond) /* |x|<2**-70, return -log(|x|) */ + VECTOR_IF2(hx<0, cond2, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond); + VECTOR_RETURN (-v64df_log_aux(-x, __mask), cond2); + VECTOR_ELSE2(cond2, cond) + VECTOR_RETURN (-v64df_log_aux(x, __mask), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (hx < 0, cond) + VECTOR_IF2(ix>=0x43300000, cond2, cond) /* |x|>=2**52, must be -integer */ + VECTOR_RETURN(one/(x-x), cond2); /* -integer */ + VECTOR_ENDIF + VECTOR_COND_MOVE (t, v64df_sin_pi (x), cond); + VECTOR_IF2(__builtin_convertvector(t==zero, v64si), cond2, cond) + VECTOR_RETURN(one/(x-x), cond2); /* -integer */ + VECTOR_ENDIF + VECTOR_COND_MOVE(nadj, v64df_log_aux(VECTOR_INIT(pi)/__builtin_gcn_fabsv(t*x), __mask), cond); + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & __builtin_convertvector(t < zero, v64si)); + VECTOR_COND_MOVE(x, -x, cond); + VECTOR_ENDIF + + /* purge off 1 and 2 */ + VECTOR_IF((((ix-0x3ff00000)|lx)==0)|(((ix-0x40000000)|lx)==0), cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(0.0), cond); + /* for x < 2.0 */ + VECTOR_ELSEIF(ix<0x40000000, cond) + VECTOR_IF2(ix<=0x3feccccc, cond2, cond) + /* lgamma(x) = lgamma(x+1)-log(x) */ + r = -v64df_log_aux(x, __mask); + VECTOR_IF2(ix>=0x3FE76944, cond3, cond2) + VECTOR_COND_MOVE(y, one-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3FCDA661, cond3, cond2) + VECTOR_COND_MOVE(y, x-(tc-one), cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ELSE2(cond2, cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(zero), cond2); + VECTOR_IF2(ix>=0x3FFBB4C3, cond3, cond2) /* [1.7316,2] */ + VECTOR_COND_MOVE(y, VECTOR_INIT(2.0)-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3FF3B4C4, cond3, cond2) /* [1.23,1.73] */ + VECTOR_COND_MOVE(y, x-tc, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x-one, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF2(i==0, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(p1, a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))), cond2); + VECTOR_COND_MOVE(p2, z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))), cond2); + VECTOR_COND_MOVE(p, y*p1+p2, cond2); + VECTOR_COND_MOVE(r, r + (p-0.5*y), cond2); + VECTOR_ELSEIF2(i==1, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(w, z*y, cond2); + VECTOR_COND_MOVE(p1, t0+w*(t3+w*(t6+w*(t9 +w*t12))), cond2); /* parallel comp */ + VECTOR_COND_MOVE(p2, t1+w*(t4+w*(t7+w*(t10+w*t13))), cond2); + VECTOR_COND_MOVE(p3, t2+w*(t5+w*(t8+w*(t11+w*t14))), cond2); + VECTOR_COND_MOVE(p, z*p1-(tt-w*(p2+y*p3)), cond2); + VECTOR_COND_MOVE(r, r + (tf + p), cond2); + VECTOR_ELSEIF2(i==2, cond2, cond) + VECTOR_COND_MOVE(p1, y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))), cond2); + VECTOR_COND_MOVE(p2, one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))), cond2); + VECTOR_COND_MOVE(r, r + (-0.5*y + p1/p2), cond2); + VECTOR_ENDIF + VECTOR_ELSEIF(ix<0x40200000, cond) + /* x < 8.0 */ + VECTOR_COND_MOVE(i, __builtin_convertvector(x, v64si), cond); + VECTOR_COND_MOVE(t, VECTOR_INIT(zero), cond); + VECTOR_COND_MOVE(y, x-__builtin_convertvector(i, v64df), cond); + VECTOR_COND_MOVE(p, y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))), cond); + VECTOR_COND_MOVE(q, one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))), cond); + VECTOR_COND_MOVE(r, half*y+p/q, cond); + VECTOR_COND_MOVE(z, VECTOR_INIT(one), cond); /* lgamma(1+s) = log(s) + lgamma(s) */ + VECTOR_IF2(i==7, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+6.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i==7 | i==6, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+5.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=5, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+4.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=4, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+3.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=3, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+2.0), cond2); + VECTOR_COND_MOVE(r, r + v64df_log_aux(z, __mask), cond2); + VECTOR_ENDIF + /* 8.0 <= x < 2**58 */ + VECTOR_ELSEIF(ix < 0x43900000, cond) + VECTOR_COND_MOVE(t, v64df_log_aux(x, __mask), cond); + VECTOR_COND_MOVE(z, one/x, cond); + VECTOR_COND_MOVE(y, z*z, cond); + VECTOR_COND_MOVE(w, w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))), cond); + VECTOR_COND_MOVE(r, (x-half)*(t-one)+w, cond); + VECTOR_ELSE(cond) + /* 2**58 <= x <= inf */ + VECTOR_COND_MOVE(r, x*(v64df_log_aux(x, __mask)-one), cond); + VECTOR_ENDIF + VECTOR_IF(hx<0, cond) + VECTOR_COND_MOVE(r, nadj - r, cond); + VECTOR_ENDIF + + VECTOR_RETURN(r, NO_COND); + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_log.c b/newlib/libm/machine/amdgcn/v64df_log.c new file mode 100644 index 0000000000..573bb39787 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_log.c @@ -0,0 +1,111 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_logarithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_finite (v64df); +v64si v64df_isnan (v64df); + +static const double a[] = { -0.64124943423745581147e+02, + 0.16383943563021534222e+02, + -0.78956112887481257267 }; +static const double b[] = { -0.76949932108494879777e+03, + 0.31203222091924532844e+03, + -0.35667977739034646171e+02 }; +static const double C1 = 22713.0 / 32768.0; +static const double C2 = 1.428606820309417232e-06; + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpv_mant) \ + && __has_builtin (__builtin_gcn_frexpv_exp) \ + +DEF_VD_MATH_FUNC (v64df, log, v64df x) +{ + FUNCTION_INIT (v64df); + + /* Check for domain/range errors here. */ + VECTOR_IF (x == 0.0, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (-z_infinity.d), cond); + VECTOR_ELSEIF (x < 0.0, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); + VECTOR_ELSEIF (__builtin_convertvector (~v64df_finite (x), v64di), cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_notanum.d), + VECTOR_INIT (z_infinity.d), + v64df_isnan (x)), + cond); + VECTOR_ENDIF + + /* Get the exponent and mantissa where x = f * 2^N. */ + v64df f = __builtin_gcn_frexpv_mant (x); + v64si N = __builtin_gcn_frexpv_exp (x); + + v64df z = f - 0.5; + + VECTOR_IF (f > __SQRT_HALF, cond) + VECTOR_COND_MOVE (z, (z - 0.5) / (f * 0.5 + 0.5), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (N, N - 1, cond); + VECTOR_COND_MOVE (z, z / (z * 0.5 + 0.5), cond); + VECTOR_ENDIF + + v64df w = z * z; + + /* Use Newton's method with 4 terms. */ + z += z * w * ((a[2] * w + a[1]) * w + a[0]) / (((w + b[2]) * w + b[1]) * w + b[0]); + + v64df Nf = __builtin_convertvector (N, v64df); + VECTOR_COND_MOVE (z, (Nf * C2 + z) + Nf * C1, N != 0); + + VECTOR_RETURN (z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (log, df, df) + +DEF_VD_MATH_FUNC (v64df, log1p, v64df x) +{ + /* TODO: Implement algorithm with better precision. */ + return v64df_log_aux (1 + x, __mask); +} + +DEF_VARIANTS (log1p, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_log10.c b/newlib/libm/machine/amdgcn/v64df_log10.c new file mode 100644 index 0000000000..45237b8950 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_log10.c @@ -0,0 +1,50 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_logarithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); + +static const double C3 = 0.43429448190325182765; + +DEF_VD_MATH_FUNC (v64df, log10, v64df x) +{ + return v64df_log_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log10, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_log2.c b/newlib/libm/machine/amdgcn/v64df_log2.c new file mode 100644 index 0000000000..3e7ed1f176 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_log2.c @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include "amdgcnmach.h" + +v64df v64df_log_aux (v64df, v64di); + +static const double C3 = 1.4426950408889634073599246810019; + +DEF_VD_MATH_FUNC (v64df, log2, v64df x) +{ + return v64df_log_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log2, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_modf.c b/newlib/libm/machine/amdgcn/v64df_modf.c new file mode 100644 index 0000000000..bc0b810b73 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_modf.c @@ -0,0 +1,80 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_modf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_numtest (v64df); + +DEF_VD_MATH_FUNC (v64df, modf, v64df x, v64df *iptr) +{ + FUNCTION_INIT (v64df); + v64df ret_i; + + v64si i0, i1; + EXTRACT_WORDS(i0, i1, x); + v64si j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; /* exponent of x */ + v64df zero; + v64si i; + INSERT_WORDS (zero, i0 & 0x80000000, VECTOR_INIT (0), NO_COND); + + VECTOR_IF (j0 < 20, cond) /* integer part in x*/ + VECTOR_IF2 (j0 < 0, cond2, cond) /* |x|<1 */ + VECTOR_COND_MOVE (ret_i, zero, cond2); + VECTOR_RETURN (x, cond2); + VECTOR_ELSE2 (cond2, cond) + i = (0x000fffff) >> j0; + + VECTOR_IF2 (((i0 & i) | i1) == 0, cond3, cond2) /* x is integral */ + VECTOR_COND_MOVE (ret_i, x, cond3); + VECTOR_RETURN (zero, cond3); + VECTOR_ELSE2 (cond3, cond2) + INSERT_WORDS (ret_i, i0 & ~i, VECTOR_INIT (0), cond3); + VECTOR_RETURN (x - ret_i, cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ELSEIF (j0 > 51, cond) /* no fraction part */ + VECTOR_COND_MOVE (ret_i, x, cond); + VECTOR_IF2 (v64df_numtest (x) == NAN, cond2, cond) + VECTOR_COND_MOVE (ret_i, x + x, cond2); + VECTOR_RETURN (ret_i, cond2); /* x is NaN, return NaN */ + VECTOR_ENDIF + VECTOR_RETURN (zero, cond); /* return +- 0 */ + VECTOR_ELSE (cond) + i = 0xffffffff >> (j0 - 20); + VECTOR_IF2 ((i1 & i) == 0, cond2, cond) + VECTOR_COND_MOVE (ret_i, x, cond2); + INSERT_WORDS (x, i0 & 0x80000000, VECTOR_INIT (0), cond2); + VECTOR_RETURN (x, cond2); + VECTOR_ELSE2 (cond2, cond) + INSERT_WORDS (ret_i, i0, i1 & ~i, cond2); + VECTOR_RETURN (x - ret_i, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + *iptr = ret_i; + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_numtest.c b/newlib/libm/machine/amdgcn/v64df_numtest.c new file mode 100644 index 0000000000..55f0340f1c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_numtest.c @@ -0,0 +1,60 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_numtest.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64df_numtest (v64df x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64si); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si exp = (hx & 0x7ff00000) >> 20; + + /* Check for a zero input. */ + VECTOR_RETURN (VECTOR_INIT (0), x == 0.0); + + /* Check for not a number or infinity. */ + VECTOR_IF (exp == 0x7ff, cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (NAN), + VECTOR_INIT (INF), + ((hx & 0xf0000) != 0) | (lx != 0)), + cond); + /* Otherwise it's a finite value. */ + VECTOR_ELSE (cond) + VECTOR_RETURN (VECTOR_INIT (NUM), cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_pow.c b/newlib/libm/machine/amdgcn/v64df_pow.c new file mode 100644 index 0000000000..1035d0532f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_pow.c @@ -0,0 +1,336 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/e_pow.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double +bp[] = {1.0, 1.5,}, +dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */ +dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */ +zero = 0.0, +one = 1.0, +two = 2.0, +two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */ + /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ +L1 = 5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */ +L2 = 4.28571428578550184252e-01, /* 0x3FDB6DB6, 0xDB6FABFF */ +L3 = 3.33333329818377432918e-01, /* 0x3FD55555, 0x518F264D */ +L4 = 2.72728123808534006489e-01, /* 0x3FD17460, 0xA91D4101 */ +L5 = 2.30660745775561754067e-01, /* 0x3FCD864A, 0x93C9DB65 */ +L6 = 2.06975017800338417784e-01, /* 0x3FCA7E28, 0x4A454EEF */ +P1 = 1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */ +P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */ +P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ +P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ +P5 = 4.13813679705723846039e-08, /* 0x3E663769, 0x72BEA4D0 */ +lg2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */ +lg2_h = 6.93147182464599609375e-01, /* 0x3FE62E43, 0x00000000 */ +lg2_l = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */ +ovt = 8.0085662595372944372e-0017, /* -(1024-log2(ovfl+.5ulp)) */ +cp = 9.61796693925975554329e-01, /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */ +cp_h = 9.61796700954437255859e-01, /* 0x3FEEC709, 0xE0000000 =(float)cp */ +cp_l = -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/ +ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */ +ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/ +ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ + +v64df v64df_sqrt_aux (v64df, v64di); +v64df v64df_scalbn_aux (v64df, v64si, v64di); + +static v64df v64df_math_oflow (v64di sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p769), + VECTOR_INIT (0x1p769), sign) * 0x1p769; +} + +static v64df v64df_math_uflow (v64di sign) +{ + errno = ERANGE; + return VECTOR_MERGE (VECTOR_INIT (-0x1p-767), + VECTOR_INIT (0x1p-767), sign) * 0x1p-767; +} + +static v64si v64df_issignaling_inline (v64df x) +{ + v64si __mask = VECTOR_INIT (-1); + v64si ix; + GET_HIGH_WORD (ix, x, NO_COND); + /* Use IEEE-754 2008 encoding - i.e. exponent bits all 1, MSB of + significand is 0 for signalling NaN. */ + return ((ix & 0x7ff00000) == 0x7ff00000) & ((ix & 0x00080000) == 0); +} + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, pow, v64df x, v64df y) +{ + FUNCTION_INIT (v64df); + + v64si hx, hy, lx, ly; + EXTRACT_WORDS(hx,lx,x); + EXTRACT_WORDS(hy,ly,y); + v64si ix = hx&0x7fffffff; + v64si iy = hy&0x7fffffff; + + /* y==zero: x**0 = 1 unless x is snan */ + VECTOR_IF ((iy|ly)==0, cond) + VECTOR_RETURN (x + y, cond & v64df_issignaling_inline(x)); + VECTOR_RETURN (VECTOR_INIT (1.0), cond); + VECTOR_ENDIF + + /* x|y==NaN return NaN unless x==1 then return 1 */ + VECTOR_IF ((ix > 0x7ff00000) | ((ix==0x7ff00000)&(lx!=0)) + | (iy > 0x7ff00000) | ((iy==0x7ff00000)&(ly!=0)), cond) + VECTOR_RETURN (VECTOR_INIT (1.0), cond & ((hx-0x3ff00000)|lx)==0 + & ~v64df_issignaling_inline(y)); + VECTOR_RETURN (x + y, cond); + VECTOR_ENDIF + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + v64si yisint = VECTOR_INIT (0); + + VECTOR_IF (hx < 0, cond) + VECTOR_IF2(iy>=0x43400000, cond2, cond) + VECTOR_COND_MOVE (yisint, VECTOR_INIT (2), cond2); /* even integer y */ + VECTOR_ELSEIF2 (iy>=0x3ff00000, cond2, cond) + v64si k = (iy>>20)-0x3ff; /* exponent */ + VECTOR_IF2 (k>20, cond3, cond2) + v64si j = ly>>(52-k); + VECTOR_COND_MOVE (yisint, 2-(j&1), cond3 & (j<<(52-k))==ly); + VECTOR_ELSEIF2 (ly==0, cond3, cond2) + v64si j = iy>>(20-k); + VECTOR_COND_MOVE (yisint, 2-(j&1), cond3 & (j<<(20-k))==iy); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ENDIF + + /* special value of y */ + VECTOR_IF (ly==0, cond) + VECTOR_IF2 (iy==0x7ff00000, cond2, cond) /* y is +-inf */ + VECTOR_IF2 (((ix-0x3ff00000)|lx)==0, cond3, cond2) + VECTOR_RETURN (VECTOR_INIT (1.0), cond3); /* +-1**+-inf = 1 */ + VECTOR_ELSEIF2 (ix >= 0x3ff00000, cond3, cond2) /* (|x|>1)**+-inf = inf,0 */ + VECTOR_RETURN (y, cond3 & hy>=0); + VECTOR_RETURN (VECTOR_INIT (0.0), cond3); + VECTOR_ELSE2 (cond3, cond2) /* (|x|<1)**-,+inf = inf,0 */ + VECTOR_RETURN (-y, cond3 & hy<0); + VECTOR_RETURN (VECTOR_INIT (0.0), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF2 (iy==0x3ff00000, cond2, cond) /* y is +-1 */ + VECTOR_RETURN (VECTOR_INIT (1.0) / x, cond2 & hy<0); + VECTOR_RETURN (x, cond2); + VECTOR_ENDIF + VECTOR_RETURN (x*x, cond & hy==0x40000000); /* y is 2 */ + /* y is 0.5 */ + /* x >= +0 */ + VECTOR_RETURN (v64df_sqrt_aux (x, __mask), cond & (hy==0x3fe00000) & (hx>=0)); + VECTOR_ENDIF + + v64df ax = __builtin_gcn_fabsv(x); + /* special value of x */ + VECTOR_IF (lx==0, cond) + VECTOR_IF2 ((ix==0x7ff00000)|(ix==0)|(ix==0x3ff00000), cond2, cond) + v64df z = ax; /*x is +-0,+-inf,+-1*/ + VECTOR_COND_MOVE (z, VECTOR_INIT (1.0) / z, cond2 & (hy<0)); /* z = (1/|x|) */ + VECTOR_IF2 (hx<0, cond3, cond2) + VECTOR_IF2 (((ix-0x3ff00000)|yisint)==0, cond4, cond3) + VECTOR_COND_MOVE (z, (z-z)/(z-z), cond4); /* (-1)**non-int is NaN */ + VECTOR_ELSEIF2 (yisint==1, cond4, cond3) + VECTOR_COND_MOVE (z, -z, cond4); /* (x<0)**odd = -(|x|**odd) */ + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_RETURN (z, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + /* (x<0)**(non-int) is NaN */ + VECTOR_RETURN ((x-x)/(x-x), ((((hx >> 31) & 1) - 1)|yisint)==0); + + v64df t1, t2; + + /* |y| is huge */ + VECTOR_IF(iy>0x41e00000, cond) /* if |y| > 2**31 */ + VECTOR_IF2 (iy>0x43f00000, cond2, cond) /* if |y| > 2**64, must o/uflow */ + VECTOR_IF2 (ix<=0x3fefffff, cond3, cond2) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond3 & (hy<0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond3); + VECTOR_ENDIF + VECTOR_IF2 (ix>=0x3ff00000, cond3, cond2) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond3 & (hy>0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + /* over/underflow if x is not close to one */ + VECTOR_IF2 (ix<0x3fefffff, cond2, cond) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond2 & (hy<0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond2); + VECTOR_ENDIF + VECTOR_IF2 (ix>0x3ff00000, cond2, cond) + VECTOR_RETURN (v64df_math_oflow (VECTOR_INIT (0L)), cond2 & (hy>0)); + VECTOR_RETURN (v64df_math_uflow (VECTOR_INIT (0L)), cond2); + VECTOR_ENDIF + /* now |1-x| is tiny <= 2**-20, suffice to compute + log(x) by x-x^2/2+x^3/3-x^4/4 */ + v64df t = ax-1; /* t has 20 trailing zeros */ + v64df w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25)); + v64df u = ivln2_h*t; /* ivln2_h has 21 sig. bits */ + v64df v = t*ivln2_l-w*ivln2; + VECTOR_COND_MOVE (t1, u+v, cond); + SET_LOW_WORD (t1, VECTOR_INIT (0), cond); + VECTOR_COND_MOVE (t2, v-(t1-u), cond); + VECTOR_ELSE (cond) + v64si n = VECTOR_INIT (0); + /* take care subnormal number */ + VECTOR_IF2 (ix<0x00100000, cond2, cond) + VECTOR_COND_MOVE (ax, ax * two53, cond2); + VECTOR_COND_MOVE (n, n - 53, cond2); + GET_HIGH_WORD (ix, ax, cond2); + VECTOR_ENDIF + n += ((ix)>>20)-0x3ff; + v64si j = ix&0x000fffff; + /* determine interval */ + ix = j|0x3ff00000; /* normalize ix */ + v64si k; + VECTOR_IF2 (j<=0x3988E, cond2, cond) + VECTOR_COND_MOVE (k, VECTOR_INIT (0), cond2); /* |x|>1)|0x20000000)+0x00080000+(k<<18), cond); + v64df t_l = ax - (t_h-bp_k); + v64df s_l = v*((u-s_h*t_h)-s_h*t_l); + /* compute log(ax) */ + v64df s2 = s*s; + v64df r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); + r += s_l*(s_h+s); + s2 = s_h*s_h; + t_h = 3.0+s2+r; + SET_LOW_WORD (t_h, VECTOR_INIT (0), cond); + t_l = r-((t_h-3.0)-s2); + /* u+v = s*(1+...) */ + u = s_h*t_h; + v = s_l*t_h+t_l*s; + /* 2/(3log2)*(s+...) */ + v64df p_h = u+v; + SET_LOW_WORD (p_h, VECTOR_INIT (0), cond); + v64df p_l = v-(p_h-u); + v64df z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ + v64df dp_l_k = VECTOR_MERGE (VECTOR_INIT (dp_l[1]), VECTOR_INIT (dp_l[0]), k == 1); + v64df z_l = cp_l*p_h+p_l*cp+dp_l_k; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + v64df t = __builtin_convertvector (n, v64df); + v64df dp_h_k = VECTOR_MERGE (VECTOR_INIT (dp_h[1]), VECTOR_INIT (dp_h[0]), k == 1); + VECTOR_COND_MOVE (t1, ((z_h+z_l)+dp_h_k)+t, cond); + SET_LOW_WORD (t1, VECTOR_INIT (0), cond); + VECTOR_COND_MOVE (t2, z_l-(((t1-t)-dp_h_k)-z_h), cond); + VECTOR_ENDIF + + v64df s = VECTOR_INIT (1.0); /* s (sign of result -ve**odd) = -1 else = 1 */ + VECTOR_COND_MOVE (s, VECTOR_INIT (-1.0), /* (-ve)**(odd int) */ + ((hx>>31) != 0)&(yisint == 1)); + + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + v64df y1 = y; + SET_LOW_WORD (y1, VECTOR_INIT (0), NO_COND); + v64df p_l = (y-y1)*t1+y*t2; + v64df p_h = y1*t1; + v64df z = p_l+p_h; + v64si i, j; + EXTRACT_WORDS(j, i, z); + VECTOR_IF (j>=0x40900000, cond) /* z >= 1024 */ + /* if z > 1024 */ + v64di cond_di = __builtin_convertvector (cond, v64di); + VECTOR_RETURN (v64df_math_oflow(s<0), cond & (((j-0x40900000)|i)!=0)); /* overflow */ + VECTOR_RETURN (v64df_math_oflow(s<0), cond_di & (p_l+ovt>z-p_h)); /* overflow */ + VECTOR_ELSEIF ((j&0x7fffffff)>=0x4090cc00, cond) /* z <= -1075 */ + /* z < -1075 */ + v64di cond_di = __builtin_convertvector (cond, v64di); + VECTOR_RETURN (v64df_math_uflow(s<0), cond & (((j-0xc090cc00)|i)!=0)); /* underflow */ + VECTOR_RETURN (v64df_math_uflow(s<0), cond_di & (p_l<=z-p_h)); /* underflow */ + VECTOR_ENDIF + + /* + * compute 2**(p_h+p_l) + */ + i = j&0x7fffffff; + v64si k = (i>>20)-0x3ff; + v64si n = VECTOR_INIT (0); + VECTOR_IF (i>0x3fe00000, cond) /* if |z| > 0.5, set n = [z+0.5] */ + VECTOR_COND_MOVE (n, j+(0x00100000>>(k+1)), cond); + k = ((n&0x7fffffff)>>20)-0x3ff; /* new k for n */ + v64df t = VECTOR_INIT (0.0); + SET_HIGH_WORD(t, n&~(0x000fffff>>k), cond); + VECTOR_COND_MOVE (n, ((n&0x000fffff)|0x00100000)>>(20-k), cond); + VECTOR_COND_MOVE (n, -n, cond & (j<0)); + VECTOR_COND_MOVE (p_h, p_h - t, cond); + VECTOR_ENDIF + v64df t = p_l+p_h; + SET_LOW_WORD(t, VECTOR_INIT (0), NO_COND); + v64df u = t*lg2_h; + v64df v = (p_l-(t-p_h))*lg2+t*lg2_l; + z = u+v; + v64df w = v-(z-u); + t = z*z; + t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + v64df r = (z*t1)/(t1-two)-(w+z*w); + z = VECTOR_INIT (1.0)-(r-z); + GET_HIGH_WORD(j,z, NO_COND); + j += (n<<20); + VECTOR_IF ((j>>20)<=0, cond) + VECTOR_COND_MOVE (z, v64df_scalbn_aux (z, n, __mask), cond); /* subnormal output */ + VECTOR_ELSE (cond) + SET_HIGH_WORD(z,j, cond); + VECTOR_ENDIF + VECTOR_RETURN (s*z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (pow, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_remainder.c b/newlib/libm/machine/amdgcn/v64df_remainder.c new file mode 100644 index 0000000000..01fda8e1b6 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_remainder.c @@ -0,0 +1,82 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/e_remainder.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_fmod_aux (v64df, v64df, v64di); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, remainder, v64df x, v64df p) +{ + FUNCTION_INIT (v64df); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si hp, lp; + EXTRACT_WORDS (hp, lp, p); + v64si sx = hx & 0x80000000; + hp &= 0x7fffffff; + hx &= 0x7fffffff; + + /* purge off exception values */ + VECTOR_RETURN ((x * p) / (x * p), ((hp | lp) == 0) | ((hx >= 0x7ff00000) + | /* x not finite */ + ((hp >= 0x7ff00000) & /* p is NaN */ + (((hp - 0x7ff00000) | lp) != 0)))); + + VECTOR_COND_MOVE (x, v64df_fmod_aux (x, p+p, __mask), hp <= 0x7fdfffff); // now x < 2p + + VECTOR_RETURN (0.0 * x, ((hx-hp)|(lx-lp))==0); + + x = __builtin_gcn_fabsv (x); + p = __builtin_gcn_fabsv (p); + + VECTOR_IF (hp < 0x00200000, cond) + VECTOR_IF2 (x + x > p, cond2, __builtin_convertvector(cond, v64di)) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x + x >= p)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + v64df p_half = 0.5 * p; + VECTOR_IF2 (x > p_half, cond2, __builtin_convertvector(cond, v64di)) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x >= p_half)); + VECTOR_ENDIF + VECTOR_ENDIF + + GET_HIGH_WORD (hx, x, NO_COND); + SET_HIGH_WORD (x, hx ^ sx, NO_COND); + + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (remainder, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_rint.c b/newlib/libm/machine/amdgcn/v64df_rint.c new file mode 100644 index 0000000000..18f6b318fc --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_rint.c @@ -0,0 +1,83 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_rint.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double TWO52[2] = { + 4.50359962737049600000e+15, /* 0x43300000, 0x00000000 */ + -4.50359962737049600000e+15, /* 0xC3300000, 0x00000000 */ +}; + +DEF_VD_MATH_FUNC (v64df, rint, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si i0, i1; + EXTRACT_WORDS (i0, i1, x); + v64si sx = (i0 >> 31) & 1; + v64df two52 = VECTOR_MERGE (VECTOR_INIT (TWO52[1]), VECTOR_INIT (TWO52[0]), sx != 0); + v64si j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; + v64si i; + VECTOR_IF (j0 < 20, cond) + VECTOR_IF2 (j0 < 0, cond2, cond) + VECTOR_RETURN (x, cond2 & (((i0 & 0x7fffffff) | i1) == 0)); + VECTOR_COND_MOVE (i1, i1 | (i0 & 0x0fffff), cond2); + VECTOR_COND_MOVE (i0, i0 & 0xfffe0000, cond2); + VECTOR_COND_MOVE (i0, i0 | (((i1 | -i1) >> 12) & 0x80000), cond2); + SET_HIGH_WORD (x, i0, cond2); + v64df w = two52 + x; + v64df t = w - two52; + GET_HIGH_WORD (i0, t, cond2); + SET_HIGH_WORD (t, (i0&0x7fffffff)|(sx<<31), cond2); + VECTOR_RETURN (t, cond2); + VECTOR_ELSE2 (cond2, cond) + i = (0x000fffff) >> j0; + VECTOR_RETURN (x, cond2 & (((i0 & i) | i1) == 0)); /* x is integral */ + i >>= 1; + VECTOR_IF2 (((i0 & i) | i1) != 0, cond3, cond2) + VECTOR_COND_MOVE (i1, CAST_VECTOR(v64si, VECTOR_INIT (0x80000000)), cond3 & (j0 == 19)); + VECTOR_COND_MOVE (i1, VECTOR_INIT (0), cond3 & (j0 != 19)); + VECTOR_COND_MOVE (i0, (i0 & (~i)) | ((0x40000) >> j0), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ELSEIF (j0 > 51, cond) + VECTOR_RETURN (x + x, cond & (j0 == 0x400)); + VECTOR_RETURN (x, cond); + VECTOR_ELSE (cond) + i = CAST_VECTOR (v64si, VECTOR_INIT (0xffffffff) >> (j0 - 20)); + VECTOR_RETURN (x, cond & ((i1 & i) == 0)); + i >>= 1; + VECTOR_COND_MOVE (i1, (i1 & (~i)) | (0x40000000 >> (j0 - 20)), cond & ((i1 & i) != 0)); + VECTOR_ENDIF + INSERT_WORDS (x, i0, i1, NO_COND); + v64df w = two52 + x; + VECTOR_RETURN (w - two52, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (rint, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_scalb.c b/newlib/libm/machine/amdgcn/v64df_scalb.c new file mode 100644 index 0000000000..a7e68fefec --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_scalb.c @@ -0,0 +1,64 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/e_scalb.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_isnan (v64df); +v64si v64df_finite (v64df); +v64df v64df_rint_aux (v64df, v64di); +v64df v64df_scalbn_aux (v64df, v64si, v64di); + +DEF_VD_MATH_FUNC (v64df, scalb, v64df x, v64df fn) +{ + FUNCTION_INIT (v64df); + + VECTOR_IF (v64df_isnan(x) | v64df_isnan(fn), cond) + VECTOR_RETURN (x * fn, cond); + VECTOR_ENDIF + VECTOR_IF (~v64df_finite (fn), cond) + VECTOR_IF2 (fn > 0.0, cond2, cond) + VECTOR_RETURN (x * fn, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (x / (-fn), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (v64df_rint_aux (fn, __mask) != fn, cond) + VECTOR_RETURN ((fn-fn)/(fn-fn), cond); + VECTOR_ENDIF + VECTOR_IF (fn > 65000.0, cond) + VECTOR_RETURN (v64df_scalbn_aux (x, VECTOR_INIT (65000), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (-fn > 65000.0, cond) + VECTOR_RETURN (v64df_scalbn_aux (x, VECTOR_INIT (-65000), __mask), cond); + VECTOR_ENDIF + VECTOR_RETURN (v64df_scalbn_aux (x, __builtin_convertvector (fn, v64si), __mask), + NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (scalb, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_scalbn.c b/newlib/libm/machine/amdgcn/v64df_scalbn.c new file mode 100644 index 0000000000..44d91799a3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_scalbn.c @@ -0,0 +1,72 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/s_scalbn.c in Newlib. */ + +#include "amdgcnmach.h" +#include +#include + +static const double +two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ +twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ +huge = 1.0e+300, +tiny = 1.0e-300; + +v64df v64df_copysign_aux (v64df, v64df, v64di); + +DEF_VD_MATH_FUNC (v64df, scalbn, v64df x, v64si n) +{ + FUNCTION_INIT (v64df); + + const v64df huge_v = VECTOR_INIT ((double) huge); + const v64df tiny_v = VECTOR_INIT ((double) tiny); + + v64si hx, lx; + EXTRACT_WORDS (hx, lx, x); + v64si k =(hx&0x7ff00000)>>20; /* extract exponent */ + VECTOR_IF (k == 0, cond) /* 0 or subnormal x */ + VECTOR_RETURN (x, cond & ((lx|(hx&0x7fffffff))==0)); /* +- 0 */ + VECTOR_COND_MOVE (x, x * two54, cond); + GET_HIGH_WORD (hx, x, cond); + VECTOR_COND_MOVE (k, ((hx&0x7ff00000)>>20) - 54, cond); + VECTOR_RETURN (tiny*x, cond & (n < -50000)); /*underflow*/ + VECTOR_ENDIF + VECTOR_RETURN (x+x, k == 0x7ff); /* NaN or Inf */ + /* in case integer overflow in n+k */ + VECTOR_RETURN (huge_v * v64df_copysign_aux (huge_v, x, __mask), n > 50000); + k = k + n; + VECTOR_RETURN (huge_v * v64df_copysign_aux (huge_v, x, __mask), k > 0x7fe); + VECTOR_IF (k > 0, cond) /* normal result */ + SET_HIGH_WORD (x, (hx&0x800fffff)|(k<<20), cond); + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_RETURN (tiny_v * v64df_copysign_aux (tiny_v, x, __mask), k <= -54); /*underflow*/ + k += 54; /* subnormal result */ + SET_HIGH_WORD (x, (hx&0x800fffff)|(k<<20), NO_COND); + VECTOR_RETURN (x * twom54, NO_COND); + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64df_signif.c b/newlib/libm/machine/amdgcn/v64df_signif.c new file mode 100644 index 0000000000..e112e1cf1f --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_signif.c @@ -0,0 +1,39 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/s_signif.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_scalb_aux (v64df x, v64df fn, v64di); +v64si v64df_ilogb_aux (v64df x, v64si); + +DEF_VD_MATH_FUNC (v64df, significand, v64df x) +{ + v64si si_mask = __builtin_convertvector (__mask, v64si); + return v64df_scalb_aux (x, -__builtin_convertvector (v64df_ilogb_aux (x, si_mask), v64df), __mask); +} + +DEF_VARIANTS (significand, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sin.c b/newlib/libm/machine/amdgcn/v64df_sin.c new file mode 100644 index 0000000000..db91c72cf3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sin.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_sin.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_sine_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, sin, v64df x) +{ + return v64df_sine_aux (x, 0, __mask); +} + +DEF_VARIANTS (sin, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sine.c b/newlib/libm/machine/amdgcn/v64df_sine.c new file mode 100644 index 0000000000..f70d23481c --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sine.c @@ -0,0 +1,126 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_sine.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_numtest (v64df x); + +static const double HALF_PI = 1.57079632679489661923; +static const double ONE_OVER_PI = 0.31830988618379067154; +static const double r[] = { -0.16666666666666665052, + 0.83333333333331650314e-02, + -0.19841269841201840457e-03, + 0.27557319210152756119e-05, + -0.25052106798274584544e-07, + 0.16058936490371589114e-09, + -0.76429178068910467734e-12, + 0.27204790957888846175e-14 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC(v64df, sine, v64df x, int cosine) +{ + const double YMAX = 210828714.0; + + FUNCTION_INIT (v64df); + + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); + VECTOR_ENDIF + + /* Use sin and cos properties to ease computations. */ + v64di sgn; + v64df y; + + if (cosine) + { + sgn = VECTOR_INIT (0L); + y = __builtin_gcn_fabsv (x) + HALF_PI; + } + else + { + sgn = x < 0.0; + y = VECTOR_MERGE (-x, x, x < 0.0); + } + + /* Check for values of y that will overflow here. */ + VECTOR_IF (y > YMAX, cond) + errno = ERANGE; + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + /* Calculate the exponent. */ + v64si Nneg = __builtin_convertvector (y * ONE_OVER_PI - 0.5, v64si); + v64si Npos = __builtin_convertvector (y * ONE_OVER_PI + 0.5, v64si); + v64si N = VECTOR_MERGE (Nneg, Npos, y < 0.0); + v64df XN = __builtin_convertvector (N, v64df); + + VECTOR_COND_MOVE (sgn, ~sgn, (N & 1) != 0); + + if (cosine) + XN -= 0.5; + + y = __builtin_gcn_fabsv (x) - XN * __PI; + + v64df res; + + VECTOR_IF ((-z_rooteps < y) & (y < z_rooteps), cond) + VECTOR_COND_MOVE (res, y, cond); + VECTOR_ELSE (cond) + v64df g = y * y; + + /* Calculate the Taylor series. */ + v64df R = (((((((r[6] * g + r[5]) * g + r[4]) * g + r[3]) * g + r[2]) * g + r[1]) * g + r[0]) * g); + + /* Finally, compute the result. */ + VECTOR_COND_MOVE (res, y + y * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_sineh.c b/newlib/libm/machine/amdgcn/v64df_sineh.c new file mode 100644 index 0000000000..b46bebb2e1 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sineh.c @@ -0,0 +1,130 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/s_sineh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df, v64di); +v64si v64df_numtest (v64df); +v64si v64df_ispos (v64df); + +static const double q[] = { -0.21108770058106271242e+7, + 0.36162723109421836460e+5, + -0.27773523119650701667e+3 }; +static const double p[] = { -0.35181283430177117881e+6, + -0.11563521196851768270e+5, + -0.16375798202630751372e+3, + -0.78966127417357099479 }; +static const double LNV = 0.6931610107421875000; +static const double INV_V2 = 0.24999308500451499336; +static const double V_OVER2_MINUS1 = 0.13830277879601902638e-4; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, sineh, v64df x, int cosineh) +{ + const double WBAR = 18.55; + + FUNCTION_INIT (v64df); + + v64si sgn = VECTOR_INIT (0); + v64di v_cosineh = VECTOR_INIT (cosineh ? -1L : 0L); + + /* Check for special values. */ + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity.d), + VECTOR_INIT (-z_infinity.d), + v64df_ispos (x)), + cond); + VECTOR_ENDIF + + v64df y = __builtin_gcn_fabsv (x); + + if (!cosineh) + VECTOR_COND_MOVE (sgn, VECTOR_INIT (-1), x < 0.0); + + v64df res; + + VECTOR_IF (((y > 1.0) & ~v_cosineh) | v_cosineh, cond) + VECTOR_IF2 (y > BIGX, cond2, cond) + v64df w = y - LNV; + + /* Check for w > maximum here. */ + VECTOR_IF2 (w > BIGX, cond3, cond2) + errno = ERANGE; + VECTOR_RETURN (x, cond3); + VECTOR_ENDIF + + v64df z = v64df_exp_aux (w, __mask); + + VECTOR_COND_MOVE (res, z * (V_OVER2_MINUS1 + 1.0), + cond2 & (w > WBAR)); + VECTOR_ELSE2 (cond2, cond) + v64df z = v64df_exp_aux (y, __mask); + if (cosineh) + VECTOR_COND_MOVE (res, (z + 1 / z) * 0.5, cond2); + else + VECTOR_COND_MOVE (res, (z - 1 / z) * 0.5, cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + VECTOR_ELSE (cond) + /* Check for y being too small. */ + VECTOR_IF2 (y < z_rooteps, cond2, cond); + VECTOR_COND_MOVE (res, x, cond2); + VECTOR_ELSE2 (cond2, cond) + /* Calculate the Taylor series. */ + v64df f = x * x; + v64df Q = ((f + q[2]) * f + q[1]) * f + q[0]; + v64df P = ((p[3] * f + p[2]) * f + p[1]) * f + p[0]; + v64df R = f * (P / Q); + + VECTOR_COND_MOVE (res, x + x * R, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_sinh.c b/newlib/libm/machine/amdgcn/v64df_sinh.c new file mode 100644 index 0000000000..e91b4e3594 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sinh.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/s_sinh.c. */ + +#include "amdgcnmach.h" + +v64df v64df_sineh_aux (v64df, int, v64di); + +DEF_VD_MATH_FUNC (v64df, sinh, v64df x) +{ + return v64df_sineh_aux (x, 0, __mask); +} + +DEF_VARIANTS (sinh, df, df) diff --git a/newlib/libm/machine/amdgcn/v64df_sqrt.c b/newlib/libm/machine/amdgcn/v64df_sqrt.c new file mode 100644 index 0000000000..d3390e5645 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_sqrt.c @@ -0,0 +1,104 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/s_sqrt.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64df_numtest (v64df); +v64si v64df_ispos (v64df); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpv_mant) \ + && __has_builtin (__builtin_gcn_frexpv_exp) \ + && __has_builtin (__builtin_gcn_ldexpv) + +DEF_VD_MATH_FUNC (v64df, sqrt, v64df x) +{ + FUNCTION_INIT (v64df); + + /* Check for special values. */ + v64si num_type = v64df_numtest (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + VECTOR_IF2 (v64df_ispos (x), cond2, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond2); + VECTOR_ELSE2 (cond2,cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_infinity.d), cond); + VECTOR_ENDIF + VECTOR_ENDIF + + /* Initial checks are performed here. */ + VECTOR_IF (x == 0.0, cond) + VECTOR_RETURN (VECTOR_INIT (0.0), cond); + VECTOR_ENDIF + VECTOR_IF (x < 0.0, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum.d), cond); + VECTOR_ENDIF + + /* Find the exponent and mantissa for the form x = f * 2^exp. */ + v64df f = __builtin_gcn_frexpv_mant (x); + v64si exp = __builtin_gcn_frexpv_exp (x); + v64si odd = (exp & 1) != 0; + + /* Get the initial approximation. */ + v64df y = 0.41731 + 0.59016 * f; + + f *= 0.5f; + /* Calculate the remaining iterations. */ + y = y * 0.5f + f / y; + y = y * 0.5f + f / y; + y = y * 0.5f + f / y; + + /* Calculate the final value. */ + VECTOR_COND_MOVE (y, y * __SQRT_HALF, odd); + VECTOR_COND_MOVE (exp, exp + 1, odd); + exp >>= 1; + y = __builtin_gcn_ldexpv (y, exp); + + VECTOR_RETURN (y, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (sqrt, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tan.c b/newlib/libm/machine/amdgcn/v64df_tan.c new file mode 100644 index 0000000000..88fe757a34 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_tan.c @@ -0,0 +1,156 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/kf_tan.c in Newlib. */ + +#include "amdgcnmach.h" + +static const double +pio4 = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ +pio4lo= 3.06161699786838301793e-17, /* 0x3C81A626, 0x33145C07 */ +T[] = { + 3.33333333333334091986e-01, /* 0x3FD55555, 0x55555563 */ + 1.33333333333201242699e-01, /* 0x3FC11111, 0x1110FE7A */ + 5.39682539762260521377e-02, /* 0x3FABA1BA, 0x1BB341FE */ + 2.18694882948595424599e-02, /* 0x3F9664F4, 0x8406D637 */ + 8.86323982359930005737e-03, /* 0x3F8226E3, 0xE96E8493 */ + 3.59207910759131235356e-03, /* 0x3F6D6D22, 0xC9560328 */ + 1.45620945432529025516e-03, /* 0x3F57DBC8, 0xFEE08315 */ + 5.88041240820264096874e-04, /* 0x3F4344D8, 0xF2F26501 */ + 2.46463134818469906812e-04, /* 0x3F3026F7, 0x1A8D1068 */ + 7.81794442939557092300e-05, /* 0x3F147E88, 0xA03792A6 */ + 7.14072491382608190305e-05, /* 0x3F12B80F, 0x32F0A7E9 */ + -1.85586374855275456654e-05, /* 0xBEF375CB, 0xDB605373 */ + 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */ +}; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +static v64df +v64df_kernel_tan (v64df x, v64df y, v64si iy, v64di __mask) +{ + FUNCTION_INIT (v64df); + + v64si hx; + GET_HIGH_WORD(hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; /* high word of |x| */ + + VECTOR_IF (ix < 0x3e300000, cond) /* x < 2**-28 */ + VECTOR_IF2(__builtin_convertvector (x, v64si)==0, cond2, cond) /* generate inexact */ + v64si low; + GET_LOW_WORD (low, x, cond2); + VECTOR_RETURN (1.0 / __builtin_gcn_fabsv (x), ((ix|low)|(iy+1))==0); + VECTOR_RETURN (x, cond2 & (iy == 1)); + v64df z, w; + z = w = x + y; + SET_LOW_WORD (z, VECTOR_INIT (0.0), cond2); + v64df v = y - (z - x); + v64df t, a; + t = a = -1.0 / w; + SET_LOW_WORD(t, VECTOR_INIT (0.0), cond2); + v64df s = 1.0 + t * z; + VECTOR_RETURN ( t + a * (s + t * v), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF(ix>=0x3FE59428, cond) /* |x|>=0.6744 */ + VECTOR_COND_MOVE (x, -x, cond & (hx < 0)); + VECTOR_COND_MOVE (y, -y, cond & (hx < 0)); + v64df z = pio4-x; + v64df w = pio4lo-y; + VECTOR_COND_MOVE (x, z+w, cond); + VECTOR_COND_MOVE (y, VECTOR_INIT (0.0), cond); + VECTOR_ENDIF + v64df z = x*x; + v64df w = z*z; + /* Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + v64df r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11])))); + v64df v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12]))))); + v64df s = z*x; + r = y + z*(s*(r+v)+y); + r += T[0]*s; + w = x+r; + VECTOR_IF(ix>=0x3FE59428, cond) + v = __builtin_convertvector (iy, v64df); + VECTOR_RETURN (__builtin_convertvector (1-((hx>>30)&2), v64df) + * (v-2.0*(x-(w*w/(w+v)-r))), cond); + VECTOR_ENDIF + VECTOR_RETURN (w, iy == 1); + /* if allow error up to 2 ulp, + simply return -1.0/(x+r) here */ + /* compute -1.0/(x+r) accurately */ + z = w; + SET_LOW_WORD (z, VECTOR_INIT (0), NO_COND); + v = r - (z - x); /* z+v = r+x */ + v64df a, t; + t = a = -1.0/w; /* a = -1.0/w */ + SET_LOW_WORD(t, VECTOR_INIT (0), NO_COND); + s = 1.0+t*z; + VECTOR_RETURN (t+a*(s+t*v), NO_COND); + + FUNCTION_RETURN; +} + +static v64si +v64df_rem_pio2 (v64df x, v64df *y) +{ + v64df r = x * __INV_PI_OVER_TWO_2_24; + v64si n = (__builtin_convertvector (r, v64si) + 0x800000) >> 24; + x = x - __builtin_convertvector (n, v64df) * __PI_OVER_TWO; + + y[0] = x; + y[1] = x - y[0]; + return n; +} + +DEF_VD_MATH_FUNC (v64df, tan, v64df x) +{ + FUNCTION_INIT (v64df); + + v64si ix; + GET_HIGH_WORD (ix, x, NO_COND); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + VECTOR_RETURN (v64df_kernel_tan (x, VECTOR_INIT (0.0), VECTOR_INIT (1), __mask), + ix <= 0x3fe921fb); + + /* tan(Inf or NaN) is NaN */ + VECTOR_RETURN (x-x, ix >= 0x7ff00000); /* NaN */ + + /* argument reduction needed */ + v64df y[2]; + v64si n = v64df_rem_pio2 (x,y); + VECTOR_RETURN (v64df_kernel_tan (y[0], y[1], 1-((n&1)<<1), __mask), // 1 -- n even + NO_COND); // -1 -- n odd + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tan, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tanh.c b/newlib/libm/machine/amdgcn/v64df_tanh.c new file mode 100644 index 0000000000..b17cac3a6e --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_tanh.c @@ -0,0 +1,92 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/s_tanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df, v64di); + +static const double LN3_OVER2 = 0.54930614433405484570; +static const double p[] = { -0.16134119023996228053e+4, + -0.99225929672236083313e+2, + -0.96437492777225469787 }; +static const double q[] = { 0.48402357071988688686e+4, + 0.22337720718962312926e+4, + 0.11274474380534949335e+3 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsv) + +DEF_VD_MATH_FUNC (v64df, tanh, v64df x) +{ + FUNCTION_INIT (v64df); + + v64df f = __builtin_gcn_fabsv (x); + v64df res; + + /* Check if the input is too big. */ + VECTOR_IF (f > BIGX, cond) + VECTOR_COND_MOVE (res, VECTOR_INIT (1.0), cond); + + VECTOR_ELSEIF (f > LN3_OVER2, cond) + VECTOR_COND_MOVE (res, 1.0 - 2.0 / (v64df_exp_aux (2 * f, __mask) + 1.0), + cond); + + /* Check if the input is too small. */ + VECTOR_ELSEIF (f < z_rooteps, cond) + VECTOR_COND_MOVE (res, f, cond); + + /* Calculate the Taylor series. */ + VECTOR_ELSE (cond) + v64df g = f * f; + + v64df P = (p[2] * g + p[1]) * g + p[0]; + v64df Q = ((g + q[2]) * g + q[1]) * g + q[0]; + v64df R = g * (P / Q); + + VECTOR_COND_MOVE (res, f + f * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, x < 0.0); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tanh, df, df) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64df_tgamma.c b/newlib/libm/machine/amdgcn/v64df_tgamma.c new file mode 100644 index 0000000000..f8d811055d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64df_tgamma.c @@ -0,0 +1,42 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/e_tgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64df v64df_exp_aux (v64df x, v64di __mask); +v64df v64df_lgamma_r_aux (v64df x, v64si *signgamp, v64di __mask); + +DEF_VD_MATH_FUNC (v64df, tgamma, v64df x) +{ + v64si signgam_local; + v64df y = v64df_exp_aux(v64df_lgamma_r_aux(x, &signgam_local, __mask), __mask); + VECTOR_COND_MOVE(y, -y, signgam_local < 0); + return y; +} + +DEF_VARIANTS (tgamma, df, df) diff --git a/newlib/libm/machine/amdgcn/v64sf_acos.c b/newlib/libm/machine/amdgcn/v64sf_acos.c new file mode 100644 index 0000000000..1a0b67c24b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_acos.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_acos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_asinef_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, acosf, v64sf x) +{ + return v64sf_asinef_aux(x, 1, __mask); +} + +DEF_VARIANTS (acosf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_acosh.c b/newlib/libm/machine/amdgcn/v64sf_acosh.c new file mode 100644 index 0000000000..99b3939eff --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_acosh.c @@ -0,0 +1,80 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/ef_acosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); +v64sf v64sf_log1pf_aux (v64sf, v64si); +v64sf v64sf_sqrtf_aux (v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, acoshf, v64sf x) +{ + static const float one = 1.0; + static const float ln2 = 6.9314718246e-01; /* 0x3f317218 */ + + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + + VECTOR_IF (hx < 0x3f800000, cond) // x < 1 */ + VECTOR_RETURN ((x-x) / (x-x), cond); + VECTOR_ENDIF + VECTOR_IF (hx >=0x4d800000, cond) // x > 2**28 */ + VECTOR_IF2 (hx >=0x7f800000, cond2, cond) // x is inf of NaN */ + VECTOR_RETURN (x+x, cond2); + VECTOR_ELSE (cond2) + /* acosh(huge)=log(2x) */ + VECTOR_RETURN (v64sf_logf_aux (x, __mask) + ln2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (hx == 0x3f800000, cond) + /* acosh(1) = 0 */ + VECTOR_RETURN (VECTOR_INIT (0.0f), cond); + VECTOR_ENDIF + VECTOR_IF (hx > 0x40000000, cond) /* 2**28 > x > 2 */ + { + v64sf t = x * x; + VECTOR_RETURN (v64sf_logf_aux (2.0f*x - 1.0f / + (x + v64sf_sqrtf_aux (t - 1.0f, __mask)), + __mask), + cond); + } + VECTOR_ELSE (cond) /* 1 0.5f, cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (1 - acosine), cond); + + /* Check for range error. */ + VECTOR_IF2 (y > 1.0f, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (g, (1.0f - y) / 2.0f, cond); + VECTOR_COND_MOVE (y, -2.0f * v64sf_sqrtf (g), cond); + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (i, VECTOR_INIT (acosine), cond); + VECTOR_IF2 (y < z_rooteps_f, cond2, cond) + VECTOR_COND_MOVE (res, y, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (g, y * y, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF ((y >= z_rooteps_f) | branch, cond) + { + /* Calculate the Taylor series. */ + v64sf P = (p[1] * g + p[0]) * g; + v64sf Q = (g + q[1]) * g + q[0]; + v64sf R = P / Q; + + VECTOR_COND_MOVE (res, y + y * R, cond); + } + VECTOR_ENDIF + + v64sf a_i = VECTOR_MERGE (VECTOR_INIT (a[1]), VECTOR_INIT (a[0]), i != 0); + + /* Calculate asine or acose. */ + if (acosine == 0) + { + VECTOR_COND_MOVE (res, (a_i + res) + a_i, NO_COND); + VECTOR_IF (x < 0.0f, cond) + VECTOR_COND_MOVE (res, -res, cond); + VECTOR_ENDIF + } + else + { + v64sf b_i = VECTOR_MERGE (VECTOR_INIT(b[1]), VECTOR_INIT(b[0]), i != 0); + + VECTOR_IF (x < 0.0f, cond) + VECTOR_COND_MOVE (res, (b_i + res) + b_i, cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (res, (a_i - res) + a_i, cond); + VECTOR_ENDIF + } + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_asinh.c b/newlib/libm/machine/amdgcn/v64sf_asinh.c new file mode 100644 index 0000000000..e82bd1a551 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_asinh.c @@ -0,0 +1,82 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_asinh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); +v64sf v64sf_log1pf_aux (v64sf, v64si); +v64sf v64sf_sqrtf_aux (v64sf, v64si); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, asinhf, v64sf x) +{ + static const float one = 1.0000000000e+00; /* 0x3F800000 */ + static const float ln2 = 6.9314718246e-01; /* 0x3f317218 */ + static const float huge = 1.0000000000e+30; + + FUNCTION_INIT (v64sf); + + v64sf w; + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >=0x7f800000, cond) /* x is inf or NaN */ + VECTOR_RETURN (x + x, cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x31800000, cond) /* |x|<2**-28 */ + VECTOR_IF2 (huge+x > one, cond2, cond) /* return x inexact except 0 */ + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (ix > 0x4d800000, cond) /* x > 2**28 */ + VECTOR_COND_MOVE (w, v64sf_logf_aux (__builtin_gcn_fabsvf (x), __mask) + + ln2, + cond); + VECTOR_ELSEIF (ix > 0x40000000, cond) /* 2**28 > |x| > 2.0 */ + v64sf t = __builtin_gcn_fabsvf (x); + VECTOR_COND_MOVE (w, v64sf_logf_aux (2.0f * t + 1.0f / (v64sf_sqrtf_aux (x*x + 1.0f, __mask) + t), __mask), + cond); + VECTOR_ELSE (cond) /* 2.0 > |x| > 2**-28 */ + v64sf t = x * x; + VECTOR_COND_MOVE (w, v64sf_log1pf_aux (__builtin_gcn_fabsvf (x) + t / (1.0f + v64sf_sqrtf_aux (1.0f + t, __mask)), __mask), + cond); + VECTOR_ENDIF + + VECTOR_IF (hx > 0, cond) + VECTOR_RETURN (w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (asinhf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_atan.c b/newlib/libm/machine/amdgcn/v64sf_atan.c new file mode 100644 index 0000000000..552d9b3838 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atan.c @@ -0,0 +1,42 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_atan.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_atangentf_aux (v64sf, v64sf, v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, atanf, v64sf x) +{ + return (v64sf_atangentf_aux (x, VECTOR_INIT (0.0f), VECTOR_INIT (0.0f), + 0, __mask)); +} + +DEF_VARIANTS (atanf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_atan2.c b/newlib/libm/machine/amdgcn/v64sf_atan2.c new file mode 100644 index 0000000000..17e84710a2 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atan2.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_atan2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_atangentf_aux (v64sf, v64sf, v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, atan2f, v64sf v, v64sf u) +{ + return v64sf_atangentf_aux (VECTOR_INIT (0.0f), v, u, 1, __mask); +} + +DEF_VARIANTS2 (atan2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_atangent.c b/newlib/libm/machine/amdgcn/v64sf_atangent.c new file mode 100644 index 0000000000..9d6b7b1366 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atangent.c @@ -0,0 +1,152 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_atangent.c in Newlib. */ + +#include +#include "amdgcnmach.h" + +static const float ROOT3 = 1.732050807; +static const float a[] = { 0.0, 0.523598775, 1.570796326, + 1.047197551 }; +static const float q[] = { 0.1412500740e+1 }; +static const float p[] = { -0.4708325141, -0.5090958253e-1 }; + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpvf_exp) \ + && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, atangentf, v64sf x, v64sf v, v64sf u, int arctan2) +{ + FUNCTION_INIT (v64sf); + + v64sf zero = VECTOR_INIT (0.0f); + v64sf res; + v64si branch = VECTOR_INIT (0); + + /* Preparation for calculating arctan2. */ + if (arctan2) + { + VECTOR_IF (u == 0.0f, cond) + VECTOR_IF2 (v == 0.0f, cond2, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, VECTOR_INIT ((float) __PI_OVER_TWO), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (~branch, cond) + /* Get the exponent values of the inputs. */ + v64si expv = __builtin_gcn_frexpvf_exp (v); + v64si expu = __builtin_gcn_frexpvf_exp (u); + + /* See if a divide will overflow. */ + v64si e = expv - expu; + + VECTOR_IF2 (e > FLT_MAX_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, VECTOR_INIT ((float) __PI_OVER_TWO), cond2); + VECTOR_ENDIF + + /* Also check for underflow. */ + VECTOR_IF2 (e < FLT_MIN_EXP, cond2, cond) + VECTOR_COND_MOVE (branch, VECTOR_INIT (-1), cond2); + VECTOR_COND_MOVE (res, zero, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + } + + VECTOR_IF (~branch, cond) + v64sf f; + v64si N = VECTOR_INIT (0); + + if (arctan2) + f = __builtin_gcn_fabsvf (v / u); + else + f = __builtin_gcn_fabsvf (x); + + VECTOR_IF2 (f > 1.0f, cond2, cond) + VECTOR_COND_MOVE (f, 1.0f / f, cond2); + VECTOR_COND_MOVE (N, VECTOR_INIT (2), cond2); + VECTOR_ENDIF + + VECTOR_IF2 (f > (2.0f - ROOT3), cond2, cond) + float A = ROOT3 - 1.0f; + VECTOR_COND_MOVE (f, (((A * f - 0.5f) - 0.5f) + f) / (ROOT3 + f), + cond2); + N += cond2 & 1; + VECTOR_ENDIF + + /* Check for values that are too small. */ + VECTOR_IF2 ((-z_rooteps_f < f) & (f < z_rooteps_f), cond2, cond) + VECTOR_COND_MOVE (res, f, cond2); + + /* Calculate the Taylor series. */ + VECTOR_ELSE2 (cond2, cond) + v64sf g = f * f; + v64sf P = (p[1] * g + p[0]) * g; + v64sf Q = g + q[0]; + v64sf R = P / Q; + + VECTOR_COND_MOVE (res, f + f * R, cond2); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, cond & (N > 1)); + + res += VECTOR_MERGE (VECTOR_INIT (a[1]), zero, cond & (N == 1)); + res += VECTOR_MERGE (VECTOR_INIT (a[2]), zero, cond & (N == 2)); + res += VECTOR_MERGE (VECTOR_INIT (a[3]), zero, cond & (N == 3)); + VECTOR_ENDIF + + if (arctan2) + { + /*if (u < 0.0)*/ + VECTOR_COND_MOVE (res, (float) __PI - res, u < 0.0f); + /*if (v < 0.0)*/ + VECTOR_COND_MOVE (res, -res, v < 0.0f); + } + /*else if (x < 0.0) */ + else + VECTOR_COND_MOVE (res, -res, x < 0.0f); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_atanh.c b/newlib/libm/machine/amdgcn/v64sf_atanh.c new file mode 100644 index 0000000000..b3bc012652 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_atanh.c @@ -0,0 +1,75 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/mathfp/ef_atanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_log1pf_aux (v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, atanhf, v64sf x) +{ + static const float zero = 0.0; + static const float one = 1.0, huge = 1e30; + + FUNCTION_INIT (v64sf); + + v64sf t; + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix > 0x3f800000, cond) // |x|>1 + VECTOR_RETURN ((x - x)/(x - x), cond); + VECTOR_ENDIF + + VECTOR_IF (ix == 0x3f800000, cond) + VECTOR_RETURN (x / zero, cond); + VECTOR_ENDIF + + VECTOR_IF ((ix < 0x31800000) & ((huge + x) > zero), cond) // x<2**-28 + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + SET_FLOAT_WORD (x, ix, NO_COND); + + VECTOR_IF (ix < 0x3f000000, cond) // x < 0.5 */ + v64sf t2 = x + x; + VECTOR_COND_MOVE (t, 0.5f * v64sf_log1pf_aux (t2 + t2 * x / (one - x), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (t, 0.5f * v64sf_log1pf_aux ((x + x) / (one - x), __mask), cond); + VECTOR_ENDIF + + VECTOR_IF (hx >= 0, cond) + VECTOR_RETURN (t, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (-t, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (atanhf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_copysign.c b/newlib/libm/machine/amdgcn/v64sf_copysign.c new file mode 100644 index 0000000000..03cf2ff9e7 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_copysign.c @@ -0,0 +1,43 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_copysign.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64sf, copysignf, v64sf x, v64sf y) +{ + FUNCTION_INIT (v64sf); + + v64si ix, iy; + GET_FLOAT_WORD (ix, x, NO_COND); + GET_FLOAT_WORD (iy, y, NO_COND); + SET_FLOAT_WORD (x, (ix & 0x7fffffff) | (iy & 0x80000000), NO_COND); + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (copysignf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_cos.c b/newlib/libm/machine/amdgcn/v64sf_cos.c new file mode 100644 index 0000000000..c3f1e5a4b3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_cos.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_cos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinef_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, cosf, v64sf x) +{ + return v64sf_sinef_aux (x, 1, __mask); +} + +DEF_VARIANTS (cosf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_cosh.c b/newlib/libm/machine/amdgcn/v64sf_cosh.c new file mode 100644 index 0000000000..f928c3e5ad --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_cosh.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_cosh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinehf_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, coshf, v64sf x) +{ + return v64sf_sinehf_aux (x, 1, __mask); +} + +DEF_VARIANTS (coshf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_erf.c b/newlib/libm/machine/amdgcn/v64sf_erf.c new file mode 100644 index 0000000000..f7a06f0ab5 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_erf.c @@ -0,0 +1,186 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_erf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf, v64si); + +static const float +tiny = 1e-30, +half= 5.0000000000e-01, /* 0x3F000000 */ +one = 1.0000000000e+00, /* 0x3F800000 */ +two = 2.0000000000e+00, /* 0x40000000 */ + /* c = (subfloat)0.84506291151 */ +erx = 8.4506291151e-01, /* 0x3f58560b */ +/* + * Coefficients for approximation to erf on [0,0.84375] + */ +efx = 1.2837916613e-01, /* 0x3e0375d4 */ +efx8= 1.0270333290e+00, /* 0x3f8375d4 */ +pp0 = 1.2837916613e-01, /* 0x3e0375d4 */ +pp1 = -3.2504209876e-01, /* 0xbea66beb */ +pp2 = -2.8481749818e-02, /* 0xbce9528f */ +pp3 = -5.7702702470e-03, /* 0xbbbd1489 */ +pp4 = -2.3763017452e-05, /* 0xb7c756b1 */ +qq1 = 3.9791721106e-01, /* 0x3ecbbbce */ +qq2 = 6.5022252500e-02, /* 0x3d852a63 */ +qq3 = 5.0813062117e-03, /* 0x3ba68116 */ +qq4 = 1.3249473704e-04, /* 0x390aee49 */ +qq5 = -3.9602282413e-06, /* 0xb684e21a */ +/* + * Coefficients for approximation to erf in [0.84375,1.25] + */ +pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */ +pa1 = 4.1485610604e-01, /* 0x3ed46805 */ +pa2 = -3.7220788002e-01, /* 0xbebe9208 */ +pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */ +pa4 = -1.1089469492e-01, /* 0xbde31cc2 */ +pa5 = 3.5478305072e-02, /* 0x3d1151b3 */ +pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */ +qa1 = 1.0642088205e-01, /* 0x3dd9f331 */ +qa2 = 5.4039794207e-01, /* 0x3f0a5785 */ +qa3 = 7.1828655899e-02, /* 0x3d931ae7 */ +qa4 = 1.2617121637e-01, /* 0x3e013307 */ +qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */ +qa6 = 1.1984500103e-02, /* 0x3c445aa3 */ +/* + * Coefficients for approximation to erfc in [1.25,1/0.35] + */ +ra0 = -9.8649440333e-03, /* 0xbc21a093 */ +ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */ +ra2 = -1.0558626175e+01, /* 0xc128f022 */ +ra3 = -6.2375331879e+01, /* 0xc2798057 */ +ra4 = -1.6239666748e+02, /* 0xc322658c */ +ra5 = -1.8460508728e+02, /* 0xc3389ae7 */ +ra6 = -8.1287437439e+01, /* 0xc2a2932b */ +ra7 = -9.8143291473e+00, /* 0xc11d077e */ +sa1 = 1.9651271820e+01, /* 0x419d35ce */ +sa2 = 1.3765776062e+02, /* 0x4309a863 */ +sa3 = 4.3456588745e+02, /* 0x43d9486f */ +sa4 = 6.4538726807e+02, /* 0x442158c9 */ +sa5 = 4.2900814819e+02, /* 0x43d6810b */ +sa6 = 1.0863500214e+02, /* 0x42d9451f */ +sa7 = 6.5702495575e+00, /* 0x40d23f7c */ +sa8 = -6.0424413532e-02, /* 0xbd777f97 */ +/* + * Coefficients for approximation to erfc in [1/.35,28] + */ +rb0 = -9.8649431020e-03, /* 0xbc21a092 */ +rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */ +rb2 = -1.7757955551e+01, /* 0xc18e104b */ +rb3 = -1.6063638306e+02, /* 0xc320a2ea */ +rb4 = -6.3756646729e+02, /* 0xc41f6441 */ +rb5 = -1.0250950928e+03, /* 0xc480230b */ +rb6 = -4.8351919556e+02, /* 0xc3f1c275 */ +sb1 = 3.0338060379e+01, /* 0x41f2b459 */ +sb2 = 3.2579251099e+02, /* 0x43a2e571 */ +sb3 = 1.5367296143e+03, /* 0x44c01759 */ +sb4 = 3.1998581543e+03, /* 0x4547fdbb */ +sb5 = 2.5530502930e+03, /* 0x451f90ce */ +sb6 = 4.7452853394e+02, /* 0x43ed43a7 */ +sb7 = -2.2440952301e+01; /* 0xc1b38712 */ + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, erff, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; + + VECTOR_IF (ix >= 0x7f800000, cond) /* erf(nan)=nan */ + v64si i = (hx >> 31) << 1; + /* erf(+-inf)=+-1 */ + VECTOR_RETURN (__builtin_convertvector (1 - i, v64sf) + 1.0f / x, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3f580000, cond) /* |x|<0.84375 */ + VECTOR_IF2 (ix < 0x31800000, cond2, cond) /* |x|<2**-28 */ + VECTOR_IF2 (ix < 0x04000000, cond3, cond2) /* avoid underflow */ + VECTOR_RETURN (0.125f*(8.0f*x + efx8*x), cond3); + VECTOR_ENDIF + VECTOR_RETURN (x + efx*x, cond2); + VECTOR_ENDIF + + v64sf z = x*x; + v64sf r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); + v64sf s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + v64sf y = r/s; + + VECTOR_RETURN (x + x*y, cond); + VECTOR_ENDIF + + VECTOR_IF (ix < 0x3fa00000, cond) /* 0.84375 <= |x| < 1.25 */ + v64sf s = __builtin_gcn_fabsvf (x) - 1.0f; + v64sf P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); + v64sf Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (erx + P/Q, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (-erx - P/Q, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (ix >= 0x40c00000, cond) /* inf>|x|>=6 */ + VECTOR_IF2 (hx >= 0, cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0f - tiny), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (VECTOR_INIT (tiny - 1.0f), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + x = __builtin_gcn_fabsvf(x); + v64sf s = 1.0f / (x*x); + v64sf R, S; + VECTOR_IF (ix < 0x4036DB6E, cond) /* |x| < 1/0.35 */ + VECTOR_COND_MOVE (R, ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( + ra5+s*(ra6+s*ra7)))))), cond); + VECTOR_COND_MOVE (S, one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( + sa5+s*(sa6+s*(sa7+s*sa8))))))), cond); + VECTOR_ELSE (cond) /* |x| >= 1/0.35 */ + VECTOR_COND_MOVE (R, rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( + rb5+s*rb6))))), cond); + VECTOR_COND_MOVE (S, one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( + sb5+s*(sb6+s*sb7)))))), cond); + VECTOR_ENDIF + + GET_FLOAT_WORD (ix, x, NO_COND); + v64sf z; + SET_FLOAT_WORD (z, ix & 0xfffff000, NO_COND); + v64sf r = v64sf_expf_aux (-z*z - 0.5625f, __mask) + * v64sf_expf_aux ((z-x)*(z+x) + R/S, __mask); + VECTOR_RETURN (one - r/x, hx >= 0); + VECTOR_RETURN (r/x - one, hx < 0); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (erff, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_exp.c b/newlib/libm/machine/amdgcn/v64sf_exp.c new file mode 100644 index 0000000000..b4ddd2a5f5 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_exp.c @@ -0,0 +1,102 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/ef_exp.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float +huge = 1.0e+30, +twom100 = 7.8886090522e-31, /* 2**-100=0x0d800000 */ +ln2HI[2] ={ 6.9313812256e-01, /* 0x3f317180 */ + -6.9313812256e-01,}, /* 0xbf317180 */ +ln2LO[2] ={ 9.0580006145e-06, /* 0x3717f7d1 */ + -9.0580006145e-06,}, /* 0xb717f7d1 */ +invln2 = 1.4426950216e+00, /* 0x3fb8aa3b */ +P1 = 1.6666667163e-01, /* 0x3e2aaaab */ +P2 = -2.7777778450e-03, /* 0xbb360b61 */ +P3 = 6.6137559770e-05, /* 0x388ab355 */ +P4 = -1.6533901999e-06, /* 0xb5ddea0e */ +P5 = 4.1381369442e-08; /* 0x3331bb4c */ + +DEF_VS_MATH_FUNC (v64sf, expf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si k = VECTOR_INIT (0); + v64si sx; + GET_FLOAT_WORD(sx, x, NO_COND); + v64si xsb = (sx>>31)&1; /* sign bit of x */ + v64si hx = sx & 0x7fffffff; /* high word of |x| */ + + /* filter out non-finite argument */ + VECTOR_RETURN (x+x, FLT_UWORD_IS_NAN(hx)); /* NaN */ + VECTOR_RETURN (x, FLT_UWORD_IS_INFINITE(hx) & (xsb == 0)); + VECTOR_RETURN (VECTOR_INIT (0.0f), FLT_UWORD_IS_INFINITE (hx)); /* exp(+-inf)={inf,0} */ + VECTOR_RETURN (v64sf_math_oflowf (VECTOR_INIT (0)), sx > FLT_UWORD_LOG_MAX); /* overflow */ + VECTOR_RETURN (v64sf_math_uflowf (VECTOR_INIT (0)), (sx < 0) & (hx > FLT_UWORD_LOG_MIN)); /* underflow */ + + /* argument reduction */ + v64sf hi, lo; + VECTOR_IF (hx > 0x3eb17218, cond) /* if |x| > 0.5 ln2 */ + VECTOR_IF2 (hx < 0x3F851592, cond2, cond) /* and |x| < 1.5 ln2 */ + VECTOR_COND_MOVE (hi, x-ln2HI[0], cond2 & (xsb == 0)); + VECTOR_COND_MOVE (hi, x-ln2HI[1], cond2 & (xsb == 1)); + VECTOR_COND_MOVE (lo, VECTOR_INIT (ln2LO[0]), cond2 & (xsb == 0)); + VECTOR_COND_MOVE (lo, VECTOR_INIT (ln2LO[1]), cond2 & (xsb == 1)); + VECTOR_COND_MOVE (k, 1-xsb-xsb, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE (k, __builtin_convertvector (invln2*x + 0.5f, v64si), cond2 & (xsb == 0)); + VECTOR_COND_MOVE (k, __builtin_convertvector (invln2*x - 0.5f, v64si), cond2 & (xsb == 1)); + v64sf t = __builtin_convertvector (k, v64sf); + VECTOR_COND_MOVE (hi, x - t*ln2HI[0], cond2); /* t*ln2HI is exact here */ + VECTOR_COND_MOVE (lo, t*ln2LO[0], cond2); + VECTOR_ENDIF + VECTOR_COND_MOVE (x, hi - lo, cond); + VECTOR_ELSEIF (hx < 0x34000000, cond) /* when |x|<2**-23 */ + VECTOR_RETURN (1.0f+x, cond & (huge+x > 1.0f)); /* trigger inexact */ + VECTOR_ENDIF + + /* x is now in primary range */ + v64sf t = x*x; + v64sf c = x - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + VECTOR_RETURN (1.0f - ((x*c)/(c-2.0f)-x), k==0); + v64sf y = 1.0f - ((lo-(x*c)/(2.0f-c))-hi); + VECTOR_IF (k >= -125, cond) + v64si hy; + GET_FLOAT_WORD(hy, y, cond); + SET_FLOAT_WORD(y,hy+(k<<23), cond); /* add k to y's exponent */ + VECTOR_RETURN (y, cond); + VECTOR_ELSE (cond) + v64si hy; + GET_FLOAT_WORD(hy, y, cond); + SET_FLOAT_WORD(y, hy+((k+100)<<23), cond); /* add k to y's exponent */ + VECTOR_RETURN (y*twom100, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS (expf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_exp2.c b/newlib/libm/machine/amdgcn/v64sf_exp2.c new file mode 100644 index 0000000000..27039e4c4e --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_exp2.c @@ -0,0 +1,32 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +/* Based on newlib/libm/mathfp/sf_exp2.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_powf_aux (v64sf, v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, exp2f, v64sf x) +{ + return v64sf_powf_aux (VECTOR_INIT (2.0f), x, __mask); +} + +DEF_VARIANTS (exp2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_finite.c b/newlib/libm/machine/amdgcn/v64sf_finite.c new file mode 100644 index 0000000000..54df31f370 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_finite.c @@ -0,0 +1,37 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/v64sf_finite.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64si, finitef, v64sf x) +{ + v64si ix = CAST_VECTOR (v64si, x); + ix &= 0x7fffffff; + return FLT_UWORD_IS_FINITE(ix); +} + +DEF_VARIANTS (finitef, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_fmod.c b/newlib/libm/machine/amdgcn/v64sf_fmod.c new file mode 100644 index 0000000000..7302420ad3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_fmod.c @@ -0,0 +1,147 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_fmod.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64sf, fmodf, v64sf x, v64sf y) +{ + FUNCTION_INIT(v64sf); + + v64si hx, hy, hz; + GET_FLOAT_WORD (hx, x, NO_COND); + GET_FLOAT_WORD (hy, y, NO_COND); + v64si sx = hx & 0x80000000; /* sign of x */ + hx ^=sx; /* |x| */ + hy &= 0x7fffffff; /* |y| */ + + v64sf zeroes = VECTOR_MERGE (VECTOR_INIT (-0.0f), + VECTOR_INIT (0.0f), + sx != 0); + + /* purge off exception values */ + VECTOR_IF ((hy == 0) | (hx >= 0x7f800000) + | (hy > 0x7f800000), cond) // y=0, or x not finite or y is NaN + VECTOR_RETURN ((x * y) / (x * y), cond); + VECTOR_ENDIF + VECTOR_IF (hx < hy, cond) // |x|<|y| return x + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF (hx == hy, cond) + VECTOR_RETURN (zeroes, hx == hy); // |x|=|y| return x*0 + VECTOR_ENDIF + + /* determine ix = ilogb(x) */ + v64si ix; + VECTOR_IF (hx < 0x00800000, cond) // subnormal x + ix = VECTOR_INIT (-126); + for (v64si i = (hx << 8); + !ALL_ZEROES_P (cond & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond & (i > 0)); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (ix, (hx >> 23) - 127, cond); + VECTOR_ENDIF + + /* determine iy = ilogb(y) */ + v64si iy; + VECTOR_IF (hy < 0x00800000, cond) // subnormal y + iy = VECTOR_INIT (-126); + for (v64si i = (hy << 8); !ALL_ZEROES_P (cond & (i >= 0)); i <<= 1) + VECTOR_COND_MOVE (iy, iy - 1, cond & (i >= 0)); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (iy, (hy >> 23) - 127, cond); + VECTOR_ENDIF + +/* set up {hx,lx}, {hy,ly} and align y to x */ + VECTOR_IF (ix >= -126, cond) + VECTOR_COND_MOVE (hx, 0x00800000 | (0x007fffff & hx), cond); + VECTOR_ELSE (cond) // subnormal x, shift x to normal + { + v64si n = -126 - ix; + VECTOR_COND_MOVE (hx, hx << n, cond); + } + VECTOR_ENDIF + VECTOR_IF (iy >= -126, cond) + VECTOR_COND_MOVE (hy, 0x00800000 | (0x007fffff & hy), cond); + VECTOR_ELSE (cond) // subnormal y, shift y to normal + { + v64si n = -126 - iy; + VECTOR_COND_MOVE (hy, hy << n, cond); + } + VECTOR_ENDIF + +/* fix point fmod */ + v64si n = ix - iy; + v64si cond = n != 0; + + while (!ALL_ZEROES_P (cond)) + { + hz = hx - hy; + VECTOR_IF2 (hz < 0, cond2, cond) + VECTOR_COND_MOVE (hx, hx + hx, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_IF2 (hz == 0, cond3, cond2) // return sign(x)*0 + VECTOR_RETURN (zeroes, cond3); + VECTOR_ELSE2 (cond3, cond2) + VECTOR_COND_MOVE (hx, hz + hz, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + n += cond; // Active lanes should be -1 + cond &= (n != 0); + } + + hz = hx - hy; + VECTOR_COND_MOVE (hx, hz, hz >= 0); + + /* convert back to floating value and restore the sign */ + VECTOR_RETURN (zeroes, hx == 0); // return sign(x)*0 + + cond = hx < 0x00800000; + while (!ALL_ZEROES_P (cond)) // normalize x + { + VECTOR_COND_MOVE (hx, hx + hx, cond); + iy += cond; // Active lanes should be -1 + + cond &= (hx < 0x00800000); + } + VECTOR_IF (iy >= -126, cond) // normalize output + VECTOR_COND_MOVE (hx, (hx - 0x00800000) | ((iy + 127) << 23), cond); + SET_FLOAT_WORD (x, hx | sx, cond); + VECTOR_ELSE (cond) // subnormal output */ + n = -126 - iy; + hx >>= n; + SET_FLOAT_WORD (x, hx | sx, cond); + x *= VECTOR_INIT (1.0f); /* create necessary signal */ + VECTOR_ENDIF + + VECTOR_RETURN (x, NO_COND); /* exact output */ + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (fmodf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_gamma.c b/newlib/libm/machine/amdgcn/v64sf_gamma.c new file mode 100644 index 0000000000..99e69cbab8 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_gamma.c @@ -0,0 +1,38 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/wf_gamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_lgammaf_aux (v64sf x, v64si __mask); + +DEF_VS_MATH_FUNC (v64sf, gammaf, v64sf x) +{ + return v64sf_lgammaf_aux(x, __mask); +} + +DEF_VARIANTS (gammaf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_hypot.c b/newlib/libm/machine/amdgcn/v64sf_hypot.c new file mode 100644 index 0000000000..4d4925a215 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_hypot.c @@ -0,0 +1,118 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/ef_hypot.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sqrtf_aux (v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, hypotf, v64sf x, v64sf y) +{ + FUNCTION_INIT (v64sf); + + v64sf a = x; + v64sf b = y; + + v64si ha; + GET_FLOAT_WORD (ha, x, NO_COND); + ha &= 0x7fffffffL; + v64si hb; + GET_FLOAT_WORD (hb, y, NO_COND); + hb &= 0x7fffffffL; + + VECTOR_IF (hb > ha, cond) + v64si j = ha; + VECTOR_COND_MOVE (ha, hb, cond); + VECTOR_COND_MOVE (hb, j, cond); + VECTOR_ENDIF + SET_FLOAT_WORD (a, ha, NO_COND); /* a <- |a| */ + SET_FLOAT_WORD (b, hb, NO_COND); /* b <- |b| */ + VECTOR_IF((ha - hb) > 0xf000000L, cond) // x/y > 2**30 */ + VECTOR_RETURN (a + b, cond); + VECTOR_ENDIF + + v64si k = VECTOR_INIT (0); + + VECTOR_IF (ha > 0x58800000L, cond) /* a>2**50 */ + VECTOR_IF2 (ha >= 0x7f800000L, cond2, cond) /* Inf or NaN */ + v64sf w = a + b; // for sNaN */ + VECTOR_COND_MOVE (w, a, cond2 & (ha == 0x7f800000)); + VECTOR_COND_MOVE (w, b, cond2 & (hb == 0x7f800000)); + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + /* scale a and b by 2**-60 */ + VECTOR_COND_MOVE (ha, ha - 0x5d800000, cond); + VECTOR_COND_MOVE (hb, hb - 0x5d800000, cond); + VECTOR_COND_MOVE (k, k + 60, cond); + SET_FLOAT_WORD (a, ha, cond); + SET_FLOAT_WORD (b, hb, cond); + VECTOR_ENDIF + VECTOR_IF (hb < 0x26800000, cond) /* b < 2**-50 */ + VECTOR_IF2 (hb <= 0x007fffff, cond2, cond) /* subnormal b or 0 */ + VECTOR_RETURN (a, cond2 & (hb == 0)); + /* t1=2^126 */ + v64sf t1; + SET_FLOAT_WORD (t1, VECTOR_INIT (0x3f000000), cond2); + VECTOR_COND_MOVE (b, b * t1, cond2); + VECTOR_COND_MOVE (a, a * t1, cond2); + VECTOR_COND_MOVE (k, k - 126, cond2); + VECTOR_ELSE2 (cond2, cond) /* scale a and b by 2^60 */ + VECTOR_COND_MOVE (ha, ha + 0x5d800000, cond2); /* a *= 2^60 */ + VECTOR_COND_MOVE (hb, hb + 0x5d800000, cond2); /* b *= 2^60 */ + VECTOR_COND_MOVE (k, k - 60, cond2); + SET_FLOAT_WORD (a, ha, cond2); + SET_FLOAT_WORD (b, hb, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + /* medium size a and b */ + v64sf w = a - b; + VECTOR_IF (w > b, cond) + v64sf t1; + SET_FLOAT_WORD (t1, ha & 0xfffff000, cond); + v64sf t2 = a - t1; + VECTOR_COND_MOVE (w, v64sf_sqrtf_aux (t1*t1 - (b*(-b) - t2 * (a + t1)), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (a, a+a, cond); + v64sf y1; + SET_FLOAT_WORD (y1, hb & 0xfffff000, cond); + v64sf y2 = b - y1; + v64sf t1; + SET_FLOAT_WORD (t1, ha + 0x00800000, cond); + v64sf t2 = a - t1; + VECTOR_COND_MOVE (w, v64sf_sqrtf_aux (t1*y1 - (w*(-w) - (t1*y2 + t2*b)), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (k != 0, cond) + v64sf t1; + SET_FLOAT_WORD (t1, 0x3f800000 + (k << 23), cond); + VECTOR_RETURN (t1 * w, cond); + VECTOR_ELSE (cond) + VECTOR_RETURN (w, cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (hypotf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_ilogb.c b/newlib/libm/machine/amdgcn/v64sf_ilogb.c new file mode 100644 index 0000000000..2f2a7cac70 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_ilogb.c @@ -0,0 +1,56 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_ilogb.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64si, ilogbf, v64sf x) +{ + FUNCTION_INIT(v64si); + + v64si hx, ix; + GET_FLOAT_WORD (hx, x, NO_COND); + hx &= 0x7fffffff; + VECTOR_IF (FLT_UWORD_IS_ZERO (hx), cond) + VECTOR_RETURN (VECTOR_INIT (-__INT_MAX__), cond); // FP_ILOGB0 + VECTOR_ENDIF + VECTOR_IF (FLT_UWORD_IS_SUBNORMAL (hx), cond) + ix = VECTOR_INIT (-126); + for (v64si i = (hx << 8); + !ALL_ZEROES_P (cond & (i > 0)); + i <<= 1) + VECTOR_COND_MOVE (ix, ix - 1, cond & (i > 0)); + VECTOR_RETURN (ix, cond); + VECTOR_ELSEIF (~FLT_UWORD_IS_FINITE (hx), cond) + VECTOR_RETURN (VECTOR_INIT (__INT_MAX__), cond); + VECTOR_ENDIF + + VECTOR_RETURN ((hx >> 23) - 127, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (ilogbf, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_isnan.c b/newlib/libm/machine/amdgcn/v64sf_isnan.c new file mode 100644 index 0000000000..a84f064bc3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_isnan.c @@ -0,0 +1,37 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_isnan.c in Newlib. */ + +#include "amdgcnmach.h" + +DEF_VS_MATH_FUNC (v64si, isnanf, v64sf x) +{ + v64si ix = CAST_VECTOR (v64si, x); + ix &= 0x7fffffff; + return FLT_UWORD_IS_NAN (ix); +} + +DEF_VARIANTS (isnanf, si, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_ispos.c b/newlib/libm/machine/amdgcn/v64sf_ispos.c new file mode 100644 index 0000000000..5ba15d6fa9 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_ispos.c @@ -0,0 +1,40 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_ispos.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64sf_isposf (v64sf x) +{ + v64si wx = CAST_VECTOR (v64si, x); + + return (wx & 0x80000000) == 0; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_lgamma.c b/newlib/libm/machine/amdgcn/v64sf_lgamma.c new file mode 100644 index 0000000000..79a2d6da50 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_lgamma.c @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/wf_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_finitef_aux (v64sf x, v64si __mask); +v64sf v64sf_lgammaf_r_aux (v64sf x, v64si *signgamp, v64si __mask); + +DEF_VS_MATH_FUNC (v64sf, lgammaf, v64sf x) +{ + v64sf y = v64sf_lgammaf_r_aux(x, &(_REENT_V64SI_SIGNGAM(_V64_REENT)), __mask); + if (ALL_ZEROES_P(v64sf_finitef_aux(y, __mask)) & !ALL_ZEROES_P(v64sf_finitef_aux(x, __mask))) { + /* lgamma(finite) overflow */ + errno = ERANGE; + } + return y; +} + +DEF_VARIANTS (lgammaf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c b/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c new file mode 100644 index 0000000000..0a18f87c30 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_lgamma_r.c @@ -0,0 +1,300 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/erf_lgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float two23= 8.3886080000e+06, /* 0x4b000000 */ +half= 5.0000000000e-01, /* 0x3f000000 */ +one = 1.0000000000e+00, /* 0x3f800000 */ +pi = 3.1415927410e+00, /* 0x40490fdb */ +a0 = 7.7215664089e-02, /* 0x3d9e233f */ +a1 = 3.2246702909e-01, /* 0x3ea51a66 */ +a2 = 6.7352302372e-02, /* 0x3d89f001 */ +a3 = 2.0580807701e-02, /* 0x3ca89915 */ +a4 = 7.3855509982e-03, /* 0x3bf2027e */ +a5 = 2.8905137442e-03, /* 0x3b3d6ec6 */ +a6 = 1.1927076848e-03, /* 0x3a9c54a1 */ +a7 = 5.1006977446e-04, /* 0x3a05b634 */ +a8 = 2.2086278477e-04, /* 0x39679767 */ +a9 = 1.0801156895e-04, /* 0x38e28445 */ +a10 = 2.5214456400e-05, /* 0x37d383a2 */ +a11 = 4.4864096708e-05, /* 0x383c2c75 */ +tc = 1.4616321325e+00, /* 0x3fbb16c3 */ +tf = -1.2148628384e-01, /* 0xbdf8cdcd */ +/* tt = -(tail of tf) */ +tt = 6.6971006518e-09, /* 0x31e61c52 */ +t0 = 4.8383611441e-01, /* 0x3ef7b95e */ +t1 = -1.4758771658e-01, /* 0xbe17213c */ +t2 = 6.4624942839e-02, /* 0x3d845a15 */ +t3 = -3.2788541168e-02, /* 0xbd064d47 */ +t4 = 1.7970675603e-02, /* 0x3c93373d */ +t5 = -1.0314224288e-02, /* 0xbc28fcfe */ +t6 = 6.1005386524e-03, /* 0x3bc7e707 */ +t7 = -3.6845202558e-03, /* 0xbb7177fe */ +t8 = 2.2596477065e-03, /* 0x3b141699 */ +t9 = -1.4034647029e-03, /* 0xbab7f476 */ +t10 = 8.8108185446e-04, /* 0x3a66f867 */ +t11 = -5.3859531181e-04, /* 0xba0d3085 */ +t12 = 3.1563205994e-04, /* 0x39a57b6b */ +t13 = -3.1275415677e-04, /* 0xb9a3f927 */ +t14 = 3.3552918467e-04, /* 0x39afe9f7 */ +u0 = -7.7215664089e-02, /* 0xbd9e233f */ +u1 = 6.3282704353e-01, /* 0x3f2200f4 */ +u2 = 1.4549225569e+00, /* 0x3fba3ae7 */ +u3 = 9.7771751881e-01, /* 0x3f7a4bb2 */ +u4 = 2.2896373272e-01, /* 0x3e6a7578 */ +u5 = 1.3381091878e-02, /* 0x3c5b3c5e */ +v1 = 2.4559779167e+00, /* 0x401d2ebe */ +v2 = 2.1284897327e+00, /* 0x4008392d */ +v3 = 7.6928514242e-01, /* 0x3f44efdf */ +v4 = 1.0422264785e-01, /* 0x3dd572af */ +v5 = 3.2170924824e-03, /* 0x3b52d5db */ +s0 = -7.7215664089e-02, /* 0xbd9e233f */ +s1 = 2.1498242021e-01, /* 0x3e5c245a */ +s2 = 3.2577878237e-01, /* 0x3ea6cc7a */ +s3 = 1.4635047317e-01, /* 0x3e15dce6 */ +s4 = 2.6642270386e-02, /* 0x3cda40e4 */ +s5 = 1.8402845599e-03, /* 0x3af135b4 */ +s6 = 3.1947532989e-05, /* 0x3805ff67 */ +r1 = 1.3920053244e+00, /* 0x3fb22d3b */ +r2 = 7.2193557024e-01, /* 0x3f38d0c5 */ +r3 = 1.7193385959e-01, /* 0x3e300f6e */ +r4 = 1.8645919859e-02, /* 0x3c98bf54 */ +r5 = 7.7794247773e-04, /* 0x3a4beed6 */ +r6 = 7.3266842264e-06, /* 0x36f5d7bd */ +w0 = 4.1893854737e-01, /* 0x3ed67f1d */ +w1 = 8.3333335817e-02, /* 0x3daaaaab */ +w2 = -2.7777778450e-03, /* 0xbb360b61 */ +w3 = 7.9365057172e-04, /* 0x3a500cfd */ +w4 = -5.9518753551e-04, /* 0xba1c065c */ +w5 = 8.3633989561e-04, /* 0x3a5b3dd2 */ +w6 = -1.6309292987e-03; /* 0xbad5c4e8 */ +static const float zero= 0.0000000000e+00; + +v64sf v64sf_cosf_aux (v64sf x, v64si __mask); +v64sf v64sf_logf_aux (v64sf x, v64si __mask); +v64sf v64sf_sinf_aux (v64sf x, v64si __mask); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_floorvf) \ + && __has_builtin (__builtin_gcn_fabsvf) + +static v64sf +v64sf_sin_pif (v64sf x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64sf); + + v64sf y, z; + v64si n, ix; + + GET_FLOAT_WORD (ix, x, NO_COND); + ix &= 0x7fffffff; + + VECTOR_IF (ix < 0x3e800000, cond) + VECTOR_RETURN (v64sf_sinf_aux (pi * x, __mask), cond); + VECTOR_ENDIF + y = -x; /* x is assume negative */ + + /* + * argument reduction, make sure inexact flag not raised if input + * is an integer + */ + z = __builtin_gcn_floorvf (y); + VECTOR_IF (z != y, cond) + /* inexact anyway */ + VECTOR_COND_MOVE(y, y * 0.5F, cond); + VECTOR_COND_MOVE(y, 2.0F * (y - __builtin_gcn_floorvf (y)), cond); /* y = |x| mod 2.0 */ + VECTOR_COND_MOVE(n, __builtin_convertvector(y * 4.0F, v64si), cond); + VECTOR_ELSE (cond) + VECTOR_IF2 (ix >= 0x4b800000, cond2, cond) + VECTOR_COND_MOVE(y, VECTOR_INIT(zero), cond2); + VECTOR_COND_MOVE(n, VECTOR_INIT(0), cond2); /* y must be even */ + VECTOR_ELSE2 (cond2, cond) + VECTOR_COND_MOVE(z, y + two23 /* exact */, cond2 & (ix < 0x4b000000)); + GET_FLOAT_WORD (n, z, cond2); + VECTOR_COND_MOVE(n, n & 1, cond2); + VECTOR_COND_MOVE(y, __builtin_convertvector(n, v64sf), cond2); + VECTOR_COND_MOVE(n, n << 2, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF (n == 0, cond) + VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * y, __mask), cond); + VECTOR_ELSEIF (n == 1 | n == 2, cond) + VECTOR_COND_MOVE(y, v64sf_cosf_aux (pi * (0.5F - y), __mask), cond); + VECTOR_ELSEIF (n == 3 | n == 4, cond) + VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * (VECTOR_INIT(one) - y), __mask), cond); + VECTOR_ELSEIF (n == 5 | n == 6, cond) + VECTOR_COND_MOVE(y, -v64sf_cosf_aux (pi * (y - 1.5F), __mask), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE(y, v64sf_sinf_aux (pi * (y - 2.0F), __mask), cond); + VECTOR_ENDIF + + VECTOR_RETURN(-y, NO_COND); + FUNCTION_RETURN; +} + +DEF_VS_MATH_FUNC (v64sf, lgammaf_r, v64sf x, v64si *signgamp) +{ + FUNCTION_INIT (v64sf); + + v64sf t,y,z,nadj = VECTOR_INIT(0.0F),p,p1,p2,p3,q,r,w; + v64si i,hx,ix; + + GET_FLOAT_WORD(hx,x,NO_COND); + + /* purge off +-inf, NaN, +-0, and negative arguments */ + *signgamp = VECTOR_INIT(1); + ix = hx&0x7fffffff; + VECTOR_IF(ix>=0x7f800000, cond) + VECTOR_RETURN (x*x, cond); + VECTOR_ENDIF + VECTOR_IF(ix==0, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (hx<0)); + VECTOR_RETURN(one/(x-x), cond); + VECTOR_ENDIF + VECTOR_IF (ix < 0x30800000, cond) /* |x|<2**-30, return -log(|x|) */ + VECTOR_IF2(hx<0, cond2, cond) + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond); + VECTOR_RETURN (-v64sf_logf_aux(-x, __mask), cond2); + VECTOR_ELSE2(cond2, cond) + VECTOR_RETURN (-v64sf_logf_aux(x, __mask), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (hx < 0, cond) + VECTOR_IF2(ix>=0x4b000000, cond2, cond) /* |x|>=2**23, must be -integer */ + VECTOR_RETURN(one/(x-x), cond2); + VECTOR_ENDIF + VECTOR_COND_MOVE (t, v64sf_sin_pif (x), cond); + VECTOR_IF2(t==zero, cond2, cond) + /* tgamma wants NaN instead of INFINITY */ + VECTOR_RETURN(one/(x-x), cond2); /* -integer */ + VECTOR_ENDIF + VECTOR_COND_MOVE(nadj, v64sf_logf_aux(VECTOR_INIT(pi)/__builtin_gcn_fabsvf(t*x), __mask), cond); + VECTOR_COND_MOVE(*signgamp, VECTOR_INIT(-1), cond & (t < zero)); + VECTOR_COND_MOVE(x, -x, cond); + VECTOR_ENDIF + + /* purge off 1 and 2 */ + VECTOR_IF(ix==0x3f800000|ix==0x40000000, cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(0.0F), cond); + /* for x < 2.0 */ + VECTOR_ELSEIF(ix<0x40000000, cond) + VECTOR_IF2(ix<=0x3f666666, cond2, cond) + /* lgamma(x) = lgamma(x+1)-log(x) */ + r = -v64sf_logf_aux(x, __mask); + VECTOR_IF2(ix>=0x3f3b4a20, cond3, cond2) + VECTOR_COND_MOVE(y, one-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3e6d3308, cond3, cond2) + VECTOR_COND_MOVE(y, x-(tc-one), cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ELSE2(cond2, cond) + VECTOR_COND_MOVE(r, VECTOR_INIT(zero), cond2); + VECTOR_IF2(ix>=0x3fdda618, cond3, cond2) /* [1.7316,2] */ + VECTOR_COND_MOVE(y, VECTOR_INIT(2.0F)-x, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(0), cond3); + VECTOR_ELSEIF2(ix>=0x3F9da620, cond3, cond2) /* [1.23,1.73] */ + VECTOR_COND_MOVE(y, x-tc, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(1), cond3); + VECTOR_ELSE2(cond3, cond2) + VECTOR_COND_MOVE(y, x-one, cond3); + VECTOR_COND_MOVE(i, VECTOR_INIT(2), cond3); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_IF2(i==0, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(p1, a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10)))), cond2); + VECTOR_COND_MOVE(p2, z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11))))), cond2); + VECTOR_COND_MOVE(p, y*p1+p2, cond2); + VECTOR_COND_MOVE(r, r + (p-(float)0.5*y), cond2); + VECTOR_ELSEIF2(i==1, cond2, cond) + VECTOR_COND_MOVE(z, y*y, cond2); + VECTOR_COND_MOVE(w, z*y, cond2); + VECTOR_COND_MOVE(p1, t0+w*(t3+w*(t6+w*(t9 +w*t12))), cond2); /* parallel comp */ + VECTOR_COND_MOVE(p2, t1+w*(t4+w*(t7+w*(t10+w*t13))), cond2); + VECTOR_COND_MOVE(p3, t2+w*(t5+w*(t8+w*(t11+w*t14))), cond2); + VECTOR_COND_MOVE(p, z*p1-(tt-w*(p2+y*p3)), cond2); + VECTOR_COND_MOVE(r, r + (tf + p), cond2); + VECTOR_ELSEIF2(i==2, cond2, cond) + VECTOR_COND_MOVE(p1, y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5))))), cond2); + VECTOR_COND_MOVE(p2, one+y*(v1+y*(v2+y*(v3+y*(v4+y*v5)))), cond2); + VECTOR_COND_MOVE(r, r + (-(float)0.5*y + p1/p2), cond2); + VECTOR_ENDIF + VECTOR_ELSEIF(ix<0x41000000, cond) + /* x < 8.0 */ + VECTOR_COND_MOVE(i, __builtin_convertvector(x, v64si), cond); + VECTOR_COND_MOVE(t, VECTOR_INIT(zero), cond); + VECTOR_COND_MOVE(y, x-__builtin_convertvector(i, v64sf), cond); + VECTOR_COND_MOVE(p, y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))), cond); + VECTOR_COND_MOVE(q, one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6))))), cond); + VECTOR_COND_MOVE(r, half*y+p/q, cond); + VECTOR_COND_MOVE(z, VECTOR_INIT(one), cond); /* lgamma(1+s) = log(s) + lgamma(s) */ + VECTOR_IF2(i==7, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)6.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i==7 | i==6, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)5.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=5, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)4.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=4, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)3.0), cond2); + VECTOR_ENDIF + VECTOR_IF2(i<=7 & i>=3, cond2, cond) + VECTOR_COND_MOVE(z, z * (y+(float)2.0), cond2); + VECTOR_COND_MOVE(r, r + v64sf_logf_aux(z, __mask), cond2); + VECTOR_ENDIF + /* 8.0 <= x < 2**58 */ + VECTOR_ELSEIF(ix < 0x5c800000, cond) + VECTOR_COND_MOVE(t, v64sf_logf_aux(x, __mask), cond); + VECTOR_COND_MOVE(z, one/x, cond); + VECTOR_COND_MOVE(y, z*z, cond); + VECTOR_COND_MOVE(w, w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6))))), cond); + VECTOR_COND_MOVE(r, (x-half)*(t-one)+w, cond); + VECTOR_ELSE(cond) + /* 2**58 <= x <= inf */ + VECTOR_COND_MOVE(r, x*(v64sf_logf_aux(x, __mask)-one), cond); + VECTOR_ENDIF + VECTOR_IF(hx<0, cond) + VECTOR_COND_MOVE(r, nadj - r, cond); + VECTOR_ENDIF + + VECTOR_RETURN(r, NO_COND); + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_log.c b/newlib/libm/machine/amdgcn/v64sf_log.c new file mode 100644 index 0000000000..630ce2a733 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_log.c @@ -0,0 +1,111 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_logarithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_finitef_aux (v64sf, v64si); +v64si v64sf_isnanf_aux (v64sf, v64si); + +static const float a[] = { -0.64124943423745581147e+02, + 0.16383943563021534222e+02, + -0.78956112887481257267 }; +static const float b[] = { -0.76949932108494879777e+03, + 0.31203222091924532844e+03, + -0.35667977739034646171e+02 }; +static const float C1 = 0.693145752; +static const float C2 = 1.428606820e-06; + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpvf_mant) \ + && __has_builtin (__builtin_gcn_frexpvf_exp) + +DEF_VS_MATH_FUNC (v64sf, logf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + /* Check for domain/range errors here. */ + VECTOR_IF (x == 0.0f, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (-z_infinity_f.f), cond); + VECTOR_ELSEIF (x < 0.0f, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); + VECTOR_ELSEIF (~v64sf_finitef_aux (x, __mask), cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_notanum_f.f), + VECTOR_INIT (z_infinity_f.f), + v64sf_isnanf_aux (x, __mask)), + cond); + VECTOR_ENDIF + + /* Get the exponent and mantissa where x = f * 2^N. */ + v64sf f = __builtin_gcn_frexpvf_mant (x); + v64si N = __builtin_gcn_frexpvf_exp (x); + + v64sf z = f - 0.5f; + + VECTOR_IF (f > (float) __SQRT_HALF, cond) + VECTOR_COND_MOVE (z, (z - 0.5f) / (f * 0.5f + 0.5f), cond); + VECTOR_ELSE (cond) + VECTOR_COND_MOVE (N, N - 1, cond); + VECTOR_COND_MOVE (z, z / (z * 0.5f + 0.5f), cond); + VECTOR_ENDIF + + v64sf w = z * z; + + /* Use Newton's method with 4 terms. */ + z += z * w * ((a[2] * w + a[1]) * w + a[0]) / (((w + b[2]) * w + b[1]) * w + b[0]); + + v64sf Nf = __builtin_convertvector(N, v64sf); + VECTOR_COND_MOVE (z, (Nf * C2 + z) + Nf * C1, N != 0); + + VECTOR_RETURN (z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (logf, sf, sf) + +DEF_VS_MATH_FUNC (v64sf, log1pf, v64sf x) +{ + /* TODO: Implement algorithm with better precision. */ + return v64sf_logf_aux (1 + x, __mask); +} + +DEF_VARIANTS (log1pf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_log10.c b/newlib/libm/machine/amdgcn/v64sf_log10.c new file mode 100644 index 0000000000..863836c08b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_log10.c @@ -0,0 +1,50 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_logarithm.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); + +static const float C3 = 0.4342944819; + +DEF_VS_MATH_FUNC (v64sf, log10f, v64sf x) +{ + return v64sf_logf_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log10f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_log2.c b/newlib/libm/machine/amdgcn/v64sf_log2.c new file mode 100644 index 0000000000..290b8a34fd --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_log2.c @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include "amdgcnmach.h" + +v64sf v64sf_logf_aux (v64sf, v64si); + +static const float C3 = 1.4426950408889634073599246810019; + +DEF_VS_MATH_FUNC (v64sf, log2f, v64sf x) +{ + return v64sf_logf_aux (x, __mask) * C3; +} + +DEF_VARIANTS (log2f, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_modf.c b/newlib/libm/machine/amdgcn/v64sf_modf.c new file mode 100644 index 0000000000..d0d1dfe176 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_modf.c @@ -0,0 +1,69 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_modf.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_numtestf (v64sf); + +DEF_VS_MATH_FUNC (v64sf, modff, v64sf x, v64sf *iptr) +{ + FUNCTION_INIT (v64sf); + v64sf ret_i; + + v64si i0; + GET_FLOAT_WORD (i0, x, NO_COND); + v64si j0 = ((i0 >> 23) & 0xff) - 0x7f; /* exponent of x */ + v64sf zero; + SET_FLOAT_WORD (zero, i0 & 0x80000000,NO_COND); + + VECTOR_IF (j0 < 23, cond) /* integer part in x*/ + VECTOR_IF2 (j0 < 0, cond2, cond) /* |x|<1 */ + VECTOR_COND_MOVE (ret_i, zero, cond2); + VECTOR_RETURN (x, cond2); + VECTOR_ELSE2 (cond2, cond) + v64si i = (0x007fffff) >> j0; + + VECTOR_IF2 ((i0 & i) == 0, cond3, cond2) /* x is integral */ + VECTOR_COND_MOVE (ret_i, x, cond3); + VECTOR_RETURN (zero, cond3); + VECTOR_ELSE2 (cond3, cond2) + SET_FLOAT_WORD (ret_i, i0 & ~i, cond3); + VECTOR_RETURN (x - ret_i, cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_ELSE (cond) /* no fraction part */ + VECTOR_COND_MOVE (ret_i, x, cond); + VECTOR_IF2 (v64sf_numtestf (x) == NAN, cond2, cond) + VECTOR_COND_MOVE (ret_i, x + x, cond2); + VECTOR_RETURN (ret_i, cond2); /* x is NaN, return NaN */ + VECTOR_ENDIF + VECTOR_RETURN (zero, cond); /* return +- 0 */ + VECTOR_ENDIF + + *iptr = ret_i; + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_numtest.c b/newlib/libm/machine/amdgcn/v64sf_numtest.c new file mode 100644 index 0000000000..1f3fbe936b --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_numtest.c @@ -0,0 +1,59 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_numtest.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si +v64sf_numtestf (v64sf x) +{ + // Explicitly create mask for internal function. + v64si __mask = VECTOR_INIT (-1); + FUNCTION_INIT (v64si); + + v64si wx; + GET_FLOAT_WORD (wx, x, NO_COND); + v64si exp = (wx & 0x7f800000) >> 23; + + /* Check for a zero input. */ + VECTOR_RETURN (VECTOR_INIT (0), x == 0.0); + + /* Check for not a number or infinity. */ + VECTOR_IF (exp == 0xff, cond) + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (NAN), VECTOR_INIT (INF), + wx & 0x7fffff), + cond); + /* Otherwise it's a finite value. */ + VECTOR_ELSE (cond) + VECTOR_RETURN (VECTOR_INIT (NUM), cond); + VECTOR_ENDIF + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_pow.c b/newlib/libm/machine/amdgcn/v64sf_pow.c new file mode 100644 index 0000000000..9cb1cc231d --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_pow.c @@ -0,0 +1,306 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/ef_pow.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float +bp[] = {1.0, 1.5,}, +dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */ +dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */ +zero = 0.0, +one = 1.0, +two = 2.0, +two24 = 16777216.0, /* 0x4b800000 */ + /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ +L1 = 6.0000002384e-01, /* 0x3f19999a */ +L2 = 4.2857143283e-01, /* 0x3edb6db7 */ +L3 = 3.3333334327e-01, /* 0x3eaaaaab */ +L4 = 2.7272811532e-01, /* 0x3e8ba305 */ +L5 = 2.3066075146e-01, /* 0x3e6c3255 */ +L6 = 2.0697501302e-01, /* 0x3e53f142 */ +P1 = 1.6666667163e-01, /* 0x3e2aaaab */ +P2 = -2.7777778450e-03, /* 0xbb360b61 */ +P3 = 6.6137559770e-05, /* 0x388ab355 */ +P4 = -1.6533901999e-06, /* 0xb5ddea0e */ +P5 = 4.1381369442e-08, /* 0x3331bb4c */ +lg2 = 6.9314718246e-01, /* 0x3f317218 */ +lg2_h = 6.93145752e-01, /* 0x3f317200 */ +lg2_l = 1.42860654e-06, /* 0x35bfbe8c */ +ovt = 4.2995665694e-08, /* -(128-log2(ovfl+.5ulp)) */ +cp = 9.6179670095e-01, /* 0x3f76384f =2/(3ln2) */ +cp_h = 9.6179199219e-01, /* 0x3f763800 =head of cp */ +cp_l = 4.7017383622e-06, /* 0x369dc3a0 =tail of cp_h */ +ivln2 = 1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */ +ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/ +ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/ + +v64sf v64sf_sqrtf_aux (v64sf, v64si); +v64sf v64sf_scalbnf_aux (v64sf, v64si, v64si); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, powf, v64sf x, v64sf y) +{ + FUNCTION_INIT (v64sf); + + v64si hx, hy; + GET_FLOAT_WORD (hx,x, NO_COND); + GET_FLOAT_WORD (hy,y, NO_COND); + v64si ix = hx&0x7fffffff; + v64si iy = hy&0x7fffffff; + + /* y==zero: x**0 = 1 */ + VECTOR_IF (FLT_UWORD_IS_ZERO(iy), cond) + VECTOR_RETURN (x + y, cond & v64sf_issignalingf_inline(x)); + VECTOR_RETURN (VECTOR_INIT (1.0f), cond); + VECTOR_ENDIF + + /* x|y==NaN return NaN unless x==1 then return 1 */ + VECTOR_IF (FLT_UWORD_IS_NAN(ix) | FLT_UWORD_IS_NAN(iy), cond) + VECTOR_IF2 (hx==0x3f800000 & ~v64sf_issignalingf_inline(y), cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0f), cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (x + y, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + v64si yisint = VECTOR_INIT (0); + + VECTOR_IF (hx < 0, cond) + VECTOR_IF2 (iy >= 0x4b800000, cond2, cond) + VECTOR_COND_MOVE (yisint, VECTOR_INIT (2), cond2); /* even integer y */ + VECTOR_ELSEIF2 (iy >= 0x3f800000, cond2, cond) + v64si k = (iy>>23)-0x7f; /* exponent */ + v64si j = iy>>(23-k); + VECTOR_COND_MOVE (yisint, 2-(j&1), cond2 & (j<<(23-k))==iy); + VECTOR_ENDIF + VECTOR_ENDIF + + /* special value of y */ + VECTOR_IF (FLT_UWORD_IS_INFINITE(iy), cond) /* y is +-inf */ + VECTOR_IF2 (ix==0x3f800000, cond2, cond) + VECTOR_RETURN (VECTOR_INIT (1.0f), cond2); /* +-1**+-inf = 1 */ + VECTOR_ELSEIF2 (ix > 0x3f800000, cond2, cond) /* (|x|>1)**+-inf = inf,0 */ + VECTOR_RETURN (y, cond2 & (hy >= 0)); + VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); + VECTOR_ELSE2 (cond2, cond) /* (|x|<1)**-,+inf = inf,0 */ + VECTOR_RETURN (-y, cond2 & (hy<0)); + VECTOR_RETURN (VECTOR_INIT (0.0f), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (iy==0x3f800000, cond) /* y is +-1 */ + VECTOR_RETURN (VECTOR_INIT (1.0f) / x, cond & (hy<0)); + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + VECTOR_RETURN (x*x, hy==0x40000000); /* y is 2 */ + /* y is 0.5 */ + /* x >= +0 */ + VECTOR_RETURN (v64sf_sqrtf_aux (x, __mask), (hy==0x3f000000) & (hx >= 0)); + + v64sf ax = __builtin_gcn_fabsvf(x); + /* special value of x */ + VECTOR_IF (FLT_UWORD_IS_INFINITE(ix)|FLT_UWORD_IS_ZERO(ix)|ix==0x3f800000, cond) + v64sf z = ax; /*x is +-0,+-inf,+-1*/ + VECTOR_COND_MOVE (z, VECTOR_INIT (1.0f) / z, cond & (hy < 0)); /* z = (1/|x|) */ + VECTOR_IF2 (hx<0, cond2, cond) + VECTOR_IF2 (((ix-0x3f800000)|yisint)==0, cond3, cond2) + /* (-1)**non-int is NaN */ + VECTOR_COND_MOVE (z, (z-z)/(z-z), cond3); + VECTOR_ELSEIF2 (yisint==1, cond3, cond2) + /* (x<0)**odd = -(|x|**odd) */ + VECTOR_COND_MOVE (z, -z, cond3); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_RETURN (z, cond); + VECTOR_ENDIF + + /* (x<0)**(non-int) is NaN */ + VECTOR_RETURN ((x-x)/(x-x), ((((hx >> 31) & 1) - 1)|yisint)==0); + + v64sf t1, t2; + + /* |y| is huge */ + VECTOR_IF (iy>0x4d000000, cond) /* if |y| > 2**27 */ + /* over/underflow if x is not close to one */ + VECTOR_IF2(ix<0x3f7ffff4, cond2, cond) + VECTOR_RETURN (v64sf_math_oflowf(VECTOR_INIT (0)), cond2 & (hy < 0)); + VECTOR_RETURN (v64sf_math_uflowf(VECTOR_INIT (0)), cond2); + VECTOR_ENDIF + VECTOR_IF2(ix>0x3f800007, cond2, cond) + VECTOR_RETURN (v64sf_math_oflowf(VECTOR_INIT (0)), cond2 & (hy > 0)); + VECTOR_RETURN (v64sf_math_uflowf(VECTOR_INIT (0)), cond2); + VECTOR_ENDIF + /* now |1-x| is tiny <= 2**-20, suffice to compute + log(x) by x-x^2/2+x^3/3-x^4/4 */ + v64sf t = ax-1; /* t has 20 trailing zeros */ + v64sf w = (t*t)*(0.5f-t*(0.333333333333f-t*0.25f)); + v64sf u = ivln2_h*t; /* ivln2_h has 16 sig. bits */ + v64sf v = t*ivln2_l-w*ivln2; + VECTOR_COND_MOVE (t1, u+v, cond); + v64si is; + GET_FLOAT_WORD(is,t1, cond); + SET_FLOAT_WORD(t1,is&0xfffff000, cond); + VECTOR_COND_MOVE (t2, v-(t1-u), cond); + VECTOR_RETURN (VECTOR_INIT (0.123456f), cond); + VECTOR_ELSE (cond) + v64si n = VECTOR_INIT (0); + /* take care subnormal number */ + VECTOR_IF2 (FLT_UWORD_IS_SUBNORMAL(ix), cond2, cond) + VECTOR_COND_MOVE (ax, ax * two24, cond); + VECTOR_COND_MOVE (n, n - 24, cond2); + GET_FLOAT_WORD(ix,ax, cond2); + VECTOR_ENDIF + n += (ix>>23)-0x7f; + v64si j = ix&0x007fffff; + /* determine interval */ + v64si ix = j|0x3f800000; /* normalize ix */ + v64si k; + VECTOR_IF2 (j<=0x1cc471, cond2, cond) + VECTOR_COND_MOVE (k, VECTOR_INIT (0), cond2); /* |x|>1)|0x20000000)+0x0040000+(k<<21), cond); + v64sf t_l = ax - (t_h-bp_k); + v64sf s_l = v*((u-s_h*t_h)-s_h*t_l); + /* compute log(ax) */ + v64sf s2 = s*s; + v64sf r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); + r += s_l*(s_h+s); + s2 = s_h*s_h; + t_h = __builtin_convertvector(3.0f+s2+r, v64sf); + GET_FLOAT_WORD(is,t_h, cond); + SET_FLOAT_WORD(t_h,is&0xfffff000, cond); + t_l = r-((t_h-3.0f)-s2); + /* u+v = s*(1+...) */ + u = s_h*t_h; + v = s_l*t_h+t_l*s; + /* 2/(3log2)*(s+...) */ + v64sf p_h = u+v; + GET_FLOAT_WORD(is,p_h, cond); + SET_FLOAT_WORD(p_h,is&0xfffff000, cond); + v64sf p_l = v-(p_h-u); + v64sf z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */ + v64sf dp_l_k = VECTOR_MERGE (VECTOR_INIT (dp_l[1]), VECTOR_INIT (dp_l[0]), k == 1); + v64sf z_l = cp_l*p_h+p_l*cp+dp_l_k; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + v64sf t = __builtin_convertvector (n, v64sf); + v64sf dp_h_k = VECTOR_MERGE (VECTOR_INIT (dp_h[1]), VECTOR_INIT (dp_h[0]), k == 1); + VECTOR_COND_MOVE (t1, (((z_h+z_l)+dp_h_k)+t), cond); + GET_FLOAT_WORD(is,t1, cond); + SET_FLOAT_WORD(t1,is&0xfffff000, cond); + VECTOR_COND_MOVE (t2, z_l-(((t1-t)-dp_h_k)-z_h), cond); + VECTOR_ENDIF + + v64sf s = VECTOR_INIT (1.0f); /* s (sign of result -ve**odd) = -1 else = 1 */ + VECTOR_COND_MOVE (s, VECTOR_INIT (-1.0f), /* (-ve)**(odd int) */ + ((hx>>31) != 0)&(yisint == 1)); + + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + v64si is; + GET_FLOAT_WORD(is,y, NO_COND); + v64sf y1; + SET_FLOAT_WORD(y1,is&0xfffff000, NO_COND); + v64sf p_l = (y-y1)*t1+y*t2; + v64sf p_h = y1*t1; + v64sf z = p_l+p_h; + v64si j; + GET_FLOAT_WORD(j,z, NO_COND); + v64si i = j&0x7fffffff; + VECTOR_IF (j>0, cond) + VECTOR_RETURN (v64sf_math_oflowf(s<0), cond & i>FLT_UWORD_EXP_MAX); /* overflow */ + VECTOR_RETURN (v64sf_math_oflowf(s<0), cond & (i==FLT_UWORD_EXP_MAX) + & (p_l+ovt>z-p_h)); /* overflow */ + VECTOR_ELSE (cond) + VECTOR_RETURN (v64sf_math_uflowf(s<0), cond & (i>FLT_UWORD_EXP_MIN)); /* underflow */ + VECTOR_RETURN (v64sf_math_uflowf(s<0), cond & (i==FLT_UWORD_EXP_MIN) + & (p_l<=z-p_h)); /* underflow */ + VECTOR_ENDIF + /* + * compute 2**(p_h+p_l) + */ + v64si k = (i>>23)-0x7f; + v64si n = VECTOR_INIT (0); + VECTOR_IF (i>0x3f000000, cond) /* if |z| > 0.5, set n = [z+0.5] */ + VECTOR_COND_MOVE (n, j+(0x00800000>>(k+1)), cond); + k = ((n&0x7fffffff)>>23)-0x7f; /* new k for n */ + v64sf t; + SET_FLOAT_WORD(t,n&~(0x007fffff>>k), cond); + VECTOR_COND_MOVE (n, ((n&0x007fffff)|0x00800000)>>(23-k), cond); + VECTOR_COND_MOVE (n, -n, cond & (j<0)); + VECTOR_COND_MOVE (p_h, p_h - t, cond); + VECTOR_ENDIF + v64sf t = p_l+p_h; + GET_FLOAT_WORD(is,t, NO_COND); + SET_FLOAT_WORD(t,is&0xfffff000, NO_COND); + v64sf u = t*lg2_h; + v64sf v = (p_l-(t-p_h))*lg2+t*lg2_l; + z = u+v; + v64sf w = v-(z-u); + t = z*z; + t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); + v64sf r = (z*t1)/(t1-2.0f)-(w+z*w); + z = VECTOR_INIT (1.0f)-(r-z); + GET_FLOAT_WORD(j,z, NO_COND); + j += (n<<23); + VECTOR_IF ((j>>23)<=0, cond) + VECTOR_COND_MOVE (z, v64sf_scalbnf_aux(z, n, __mask), cond); /* subnormal output */ + VECTOR_ELSE (cond) + SET_FLOAT_WORD(z, j, cond); + VECTOR_ENDIF + VECTOR_RETURN (s*z, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (powf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_remainder.c b/newlib/libm/machine/amdgcn/v64sf_remainder.c new file mode 100644 index 0000000000..5820498ac3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_remainder.c @@ -0,0 +1,85 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/ef_remainder.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_fmodf_aux (v64sf, v64sf, v64si); + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, remainderf, v64sf x, v64sf p) +{ + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD (hx, x, NO_COND); + v64si hp; + GET_FLOAT_WORD (hp, p, NO_COND); + v64si sx = hx & 0x80000000; + hp &= 0x7fffffff; + hx &= 0x7fffffff; + + /* purge off exception values */ + /*if(hp==0) // p = 0 */ + /*if((hx>=0x7f800000)|| // x not finite + ((hp>0x7f800000))) // p is NaN */ + VECTOR_RETURN ((x*p) / (x*p), + (hp == 0) | (hx >= 0x7f800000) | (hp > 0x7f800000)); + + /* if (hp<=0x7effffff) // now x < 2p */ + VECTOR_COND_MOVE (x, v64sf_fmodf_aux (x, p+p, __mask), hp <= 0x7effffff); + + /*if ((hx-hp)==0) */ + VECTOR_RETURN (0.0f * x, (hx-hp) == 0); + + x = __builtin_gcn_fabsvf (x); + p = __builtin_gcn_fabsvf (p); + + VECTOR_IF (hp < 0x01000000, cond) + VECTOR_IF2 (x + x > p, cond2, cond) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x + x >= p)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + v64sf p_half = 0.5f * p; + VECTOR_IF2 (x > p_half, cond2, cond) + VECTOR_COND_MOVE (x, x - p, cond2); + VECTOR_COND_MOVE (x, x - p, cond2 & (x >= p_half)); + VECTOR_ENDIF + VECTOR_ENDIF + + GET_FLOAT_WORD (hx, x, NO_COND); + SET_FLOAT_WORD (x, hx ^ sx, NO_COND); + + VECTOR_RETURN (x, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (remainderf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_rint.c b/newlib/libm/machine/amdgcn/v64sf_rint.c new file mode 100644 index 0000000000..f076020634 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_rint.c @@ -0,0 +1,76 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_rint.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float TWO23[2] = { + 8.3886080000e+06, /* 0x4b000000 */ + -8.3886080000e+06, /* 0xcb000000 */ +}; + +DEF_VS_MATH_FUNC (v64sf, rintf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si i0; + GET_FLOAT_WORD (i0, x, NO_COND); + v64si sx = (i0 >> 31) & 1; + v64sf two23 = VECTOR_MERGE (TWO23[1] + x, TWO23[0] + x, sx != 0); + v64si ix = (i0 & 0x7fffffff); + v64si j0 = (ix >> 23) - 0x7f; + VECTOR_IF (j0 < 23, cond) + VECTOR_RETURN (x, cond & FLT_UWORD_IS_ZERO (ix)); + VECTOR_IF2 (j0 < 0, cond2, cond) + v64si i1 = (i0 & 0x07fffff); + VECTOR_COND_MOVE (i0, i0 & 0xfff00000, cond2); + VECTOR_COND_MOVE (i0, i0 | (((i1 | -i1) >> 9) & 0x400000), cond2); + SET_FLOAT_WORD (x, i0, cond2); + v64sf w = two23 + x; + v64sf t = w - two23; + GET_FLOAT_WORD (i0, t, cond2); + SET_FLOAT_WORD (t, (i0&0x7fffffff)|(sx<<31), cond2); + VECTOR_RETURN (t, cond2); + VECTOR_ELSE2 (cond2, cond) + v64si i = (0x007fffff) >> j0; + VECTOR_RETURN (x, cond2 & ((i0 & i) == 0)); /* x is integral */ + i >>= 1; + VECTOR_COND_MOVE (i0, (i0 & (~i)) | (0x200000 >> j0), + cond2 & ((i0 & i) != 0)); + VECTOR_ENDIF + VECTOR_ELSE (cond) + VECTOR_RETURN (x + x, cond & ~FLT_UWORD_IS_FINITE (ix)); /* inf or NaN */ + VECTOR_RETURN (x, cond); /* x is integral */ + VECTOR_ENDIF + + SET_FLOAT_WORD (x, i0, NO_COND); + v64sf w = two23 + x; + VECTOR_RETURN (w - two23, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (rintf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_scalb.c b/newlib/libm/machine/amdgcn/v64sf_scalb.c new file mode 100644 index 0000000000..1c3e348831 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_scalb.c @@ -0,0 +1,73 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/ef_scalb.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_isnanf (v64sf); +v64si v64sf_finitef (v64sf); +v64sf v64sf_rintf_aux (v64sf, v64si); +v64sf v64sf_scalbnf_aux (v64sf, v64si, v64si); + +DEF_VS_MATH_FUNC (v64sf, scalbf, v64sf x, v64sf fn) +{ + FUNCTION_INIT (v64sf); + + VECTOR_IF (v64sf_isnanf(x) | v64sf_isnanf(fn), cond) + VECTOR_RETURN (x * fn, cond); + VECTOR_ENDIF + VECTOR_IF (~v64sf_finitef (fn), cond) + VECTOR_IF2 (fn > 0.0f, cond2, cond) + VECTOR_RETURN (x * fn, cond2); + VECTOR_ELSE2 (cond2, cond) + VECTOR_RETURN (x / (-fn), cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (v64sf_rintf_aux (fn, __mask) != fn, cond) + VECTOR_RETURN ((fn-fn)/(fn-fn), cond); + VECTOR_ENDIF +#if INT_MAX > 65000 + VECTOR_IF (fn > 65000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (65000), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (-fn > 65000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (-65000), __mask), cond); + VECTOR_ENDIF +#else + VECTOR_IF (fn > 32000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (32000), __mask), cond); + VECTOR_ENDIF + VECTOR_IF (-fn > 32000.0f, cond) + VECTOR_RETURN (v64sf_scalbnf_aux (x, VECTOR_INIT (-32000), __mask), cond); + VECTOR_ENDIF +#endif + VECTOR_RETURN (v64sf_scalbnf_aux (x, __builtin_convertvector (fn, v64si), __mask), + NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS2 (scalbf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_scalbn.c b/newlib/libm/machine/amdgcn/v64sf_scalbn.c new file mode 100644 index 0000000000..52c18dc1a2 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_scalbn.c @@ -0,0 +1,92 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/common/sf_scalbn.c in Newlib. */ + +#include "amdgcnmach.h" +#include +#include + +#if INT_MAX > 50000 +#define OVERFLOW_INT 50000 +#else +#define OVERFLOW_INT 30000 +#endif + +static const float +two25 = 3.355443200e+07, /* 0x4c000000 */ +twom25 = 2.9802322388e-08, /* 0x33000000 */ +huge = 1.0e+30, +tiny = 1.0e-30; + +v64sf v64sf_copysignf_aux (v64sf, v64sf, v64si); + +DEF_VS_MATH_FUNC (v64sf, scalbnf, v64sf x, v64si n) +{ + FUNCTION_INIT (v64sf); + + const v64sf huge_v = VECTOR_INIT ((float) huge); + const v64sf tiny_v = VECTOR_INIT ((float) tiny); + + v64si ix; + GET_FLOAT_WORD (ix, x, NO_COND); + v64si hx = ix & 0x7fffffff; + v64si k = hx >> 23; /* extract exponent */ + VECTOR_IF (FLT_UWORD_IS_ZERO(hx), cond) + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF (~FLT_UWORD_IS_FINITE(hx), cond) /* NaN or Inf */ + VECTOR_RETURN (x + x, cond); + VECTOR_ENDIF + VECTOR_IF (FLT_UWORD_IS_SUBNORMAL (hx), cond); + VECTOR_COND_MOVE (x, x * two25, cond); + GET_FLOAT_WORD (ix, x, cond); + VECTOR_COND_MOVE (k, ((ix & 0x7f800000) >> 23) - 25, cond); + VECTOR_IF2 (n < -50000, cond2, cond) /*underflow*/ + VECTOR_RETURN (tiny * x, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF (n > OVERFLOW_INT, cond) // in case integer overflow in n+k + VECTOR_RETURN (huge_v * v64sf_copysignf_aux (huge_v, x, __mask), cond); + VECTOR_ENDIF + k = k + n; + VECTOR_IF (k > FLT_LARGEST_EXP, cond) /* overflow */ + VECTOR_RETURN (huge_v * v64sf_copysignf_aux (huge_v, x, __mask), cond); + VECTOR_ENDIF + VECTOR_IF (k > 0, cond) /* normal result */ + SET_FLOAT_WORD (x, (ix & 0x807fffff) | (k << 23), cond); + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + VECTOR_IF (k < FLT_SMALLEST_EXP, cond) /*underflow*/ + VECTOR_RETURN (tiny_v * v64sf_copysignf_aux (tiny_v, x, __mask), + k < FLT_SMALLEST_EXP); + VECTOR_ENDIF + + k += 25; /* subnormal result */ + SET_FLOAT_WORD (x, (ix & 0x807fffff) | (k << 23), NO_COND); + VECTOR_RETURN (x * twom25, NO_COND); + + FUNCTION_RETURN; +} diff --git a/newlib/libm/machine/amdgcn/v64sf_signif.c b/newlib/libm/machine/amdgcn/v64sf_signif.c new file mode 100644 index 0000000000..ff7136e656 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_signif.c @@ -0,0 +1,38 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/mathfp/sf_signif.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_scalbf_aux (v64sf x, v64sf fn, v64si); +v64si v64sf_ilogbf_aux (v64sf x, v64si); + +DEF_VS_MATH_FUNC (v64sf, significandf, v64sf x) +{ + return v64sf_scalbf_aux (x, -__builtin_convertvector (v64sf_ilogbf_aux (x, __mask), v64sf), __mask); +} + +DEF_VARIANTS (significandf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sin.c b/newlib/libm/machine/amdgcn/v64sf_sin.c new file mode 100644 index 0000000000..cd43eb546e --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sin.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_sin.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinef_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, sinf, v64sf x) +{ + return v64sf_sinef_aux (x, 0, __mask); +} + +DEF_VARIANTS (sinf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sine.c b/newlib/libm/machine/amdgcn/v64sf_sine.c new file mode 100644 index 0000000000..ad118b1d34 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sine.c @@ -0,0 +1,122 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based on newlib/libm/mathfp/sf_sine.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_numtestf (v64sf); + +static const float HALF_PI = 1.570796326; +static const float ONE_OVER_PI = 0.318309886; +static const float r[] = { -0.1666665668, + 0.8333025139e-02, + -0.1980741872e-03, + 0.2601903036e-5 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, sinef, v64sf x, int cosine) +{ + const float YMAX = 210828714.0; + + FUNCTION_INIT (v64sf); + + v64si num_type = v64sf_numtestf (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); + VECTOR_ENDIF + + /* Use sin and cos properties to ease computations. */ + v64si sgn; + v64sf y; + + if (cosine) + { + sgn = VECTOR_INIT (0); + y = __builtin_gcn_fabsvf (x) + HALF_PI; + } + else + { + sgn = x < 0.0f; + y = VECTOR_MERGE (-x, x, x < 0.0f); + } + + /* Check for values of y that will overflow here. */ + VECTOR_IF (y > YMAX, cond) + errno = ERANGE; + VECTOR_RETURN (x, cond); + VECTOR_ENDIF + + /* Calculate the exponent. */ + v64si Nneg = __builtin_convertvector (y * ONE_OVER_PI - 0.5f, v64si); + v64si Npos = __builtin_convertvector (y * ONE_OVER_PI + 0.5f, v64si); + v64si N = VECTOR_MERGE (Nneg, Npos, y < 0.0f); + v64sf XN = __builtin_convertvector (N, v64sf); + + VECTOR_COND_MOVE (sgn, ~sgn, (N & 1) != 0); + + if (cosine) + XN -= 0.5; + + y = __builtin_gcn_fabsvf (x) - XN * (float) __PI; + + v64sf res; + + VECTOR_IF ((-z_rooteps_f < y) & (y < z_rooteps_f), cond) + VECTOR_COND_MOVE (res, y, cond); + VECTOR_ELSE (cond) + v64sf g = y * y; + + /* Calculate the Taylor series. */ + v64sf R = (((r[3] * g + r[2]) * g + r[1]) * g + r[0]) * g; + + /* Finally, compute the result. */ + VECTOR_COND_MOVE (res, y + y * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_sineh.c b/newlib/libm/machine/amdgcn/v64sf_sineh.c new file mode 100644 index 0000000000..013b97a259 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sineh.c @@ -0,0 +1,127 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/****************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + ******************************************************************/ + +/* Based in newlib/libm/mathfp/sf_sineh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf, v64si); +v64si v64sf_numtestf (v64sf); +v64si v64sf_isposf (v64sf); + +static const float q[] = { -0.428277109e+2 }; +static const float p[] = { -0.713793159e+1, + -0.190333399 }; +static const float LNV = 0.6931610107; +static const float INV_V2 = 0.2499930850; +static const float V_OVER2_MINUS1 = 0.1383027787e-4; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, sinehf, v64sf x, int cosineh) +{ + const float WBAR = 18.55; + + FUNCTION_INIT (v64sf); + + v64si sgn = VECTOR_INIT (0); + v64si v_cosineh = VECTOR_INIT (cosineh ? -1 : 0); + + /* Check for special values. */ + v64si num_type = v64sf_numtestf (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_MERGE (VECTOR_INIT (z_infinity_f.f), + VECTOR_INIT (-z_infinity_f.f), + v64sf_isposf (x)), + cond); + VECTOR_ENDIF + + v64sf y = __builtin_gcn_fabsvf (x); + + if (!cosineh) + VECTOR_COND_MOVE (sgn, VECTOR_INIT (-1), x < 0.0f); + + v64sf res; + + VECTOR_IF (((y > 1.0f) & ~v_cosineh) | v_cosineh, cond) + VECTOR_IF2 (y > (float) BIGX, cond2, cond) + v64sf w = y - LNV; + + /* Check for w > maximum here. */ + VECTOR_IF2 (w > (float) BIGX, cond3, cond2) + errno = ERANGE; + VECTOR_RETURN (x, cond3); + VECTOR_ENDIF + + v64sf z = v64sf_expf_aux (w, __mask); + + VECTOR_COND_MOVE (res, z * (V_OVER2_MINUS1 + 1.0f), + cond2 & (w > WBAR)); + VECTOR_ELSE2 (cond2, cond) + v64sf z = v64sf_expf_aux (y, __mask); + if (cosineh) { + VECTOR_COND_MOVE (res, (z + 1 / z) * 0.5f, cond2); + } else { + VECTOR_COND_MOVE (res, (z - 1 / z) * 0.5f, cond2); + } + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, sgn); + VECTOR_ELSE (cond) + /* Check for y being too small. */ + VECTOR_IF2 (y < z_rooteps_f, cond2, cond); + VECTOR_COND_MOVE (res, x, cond2); + VECTOR_ELSE2 (cond2, cond) + /* Calculate the Taylor series. */ + v64sf f = x * x; + v64sf Q = f + q[0]; + v64sf P = p[1] * f + p[0]; + v64sf R = f * (P / Q); + + VECTOR_COND_MOVE (res, x + x * R, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_sinh.c b/newlib/libm/machine/amdgcn/v64sf_sinh.c new file mode 100644 index 0000000000..20530e8bfa --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sinh.c @@ -0,0 +1,41 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/* Based on newlib/libm/mathfp/sf_sinh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_sinehf_aux (v64sf, int, v64si); + +DEF_VS_MATH_FUNC (v64sf, sinhf, v64sf x) +{ + return v64sf_sinehf_aux (x, 0, __mask); +} + +DEF_VARIANTS (sinhf, sf, sf) diff --git a/newlib/libm/machine/amdgcn/v64sf_sqrt.c b/newlib/libm/machine/amdgcn/v64sf_sqrt.c new file mode 100644 index 0000000000..c93b44c748 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_sqrt.c @@ -0,0 +1,103 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/sf_sqrt.c in Newlib. */ + +#include "amdgcnmach.h" + +v64si v64sf_numtestf (v64sf); +v64si v64sf_isposf (v64sf); + +#if defined (__has_builtin) \ + && __has_builtin (__builtin_gcn_frexpvf_mant) \ + && __has_builtin (__builtin_gcn_frexpvf_exp) \ + && __has_builtin (__builtin_gcn_ldexpvf) + +DEF_VS_MATH_FUNC (v64sf, sqrtf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + /* Check for special values. */ + v64si num_type = v64sf_numtestf (x); + VECTOR_IF (num_type == NAN, cond) + errno = EDOM; + VECTOR_RETURN (x, cond); + VECTOR_ELSEIF (num_type == INF, cond) + VECTOR_IF2 (v64sf_isposf (x), cond2, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond2); + VECTOR_ELSE2 (cond2,cond) + errno = ERANGE; + VECTOR_RETURN (VECTOR_INIT (z_infinity_f.f), cond); + VECTOR_ENDIF + VECTOR_ENDIF + + /* Initial checks are performed here. */ + VECTOR_IF (x == 0.0f, cond) + VECTOR_RETURN (VECTOR_INIT (0.0f), cond); + VECTOR_ENDIF + VECTOR_IF (x < 0.0f, cond) + errno = EDOM; + VECTOR_RETURN (VECTOR_INIT (z_notanum_f.f), cond); + VECTOR_ENDIF + + /* Find the exponent and mantissa for the form x = f * 2^exp. */ + v64sf f = __builtin_gcn_frexpvf_mant (x); + v64si exp = __builtin_gcn_frexpvf_exp (x); + v64si odd = (exp & 1) != 0; + + /* Get the initial approximation. */ + v64sf y = 0.41731f + 0.59016f * f; + + f *= 0.5f; + /* Calculate the remaining iterations. */ + y = y * 0.5f + f / y; + y = y * 0.5f + f / y; + + /* Calculate the final value. */ + VECTOR_COND_MOVE (y, y * (float) __SQRT_HALF, odd); + VECTOR_COND_MOVE (exp, exp + 1, odd); + exp >>= 1; + y = __builtin_gcn_ldexpvf (y, exp); + + VECTOR_RETURN (y, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (sqrtf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tan.c b/newlib/libm/machine/amdgcn/v64sf_tan.c new file mode 100644 index 0000000000..d1841e74e0 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_tan.c @@ -0,0 +1,152 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Based on newlib/libm/math/kf_tan.c in Newlib. */ + +#include "amdgcnmach.h" + +static const float +one = 1.0000000000e+00, /* 0x3f800000 */ +pio4 = 7.8539812565e-01, /* 0x3f490fda */ +pio4lo= 3.7748947079e-08, /* 0x33222168 */ +T[] = { + 3.3333334327e-01, /* 0x3eaaaaab */ + 1.3333334029e-01, /* 0x3e088889 */ + 5.3968254477e-02, /* 0x3d5d0dd1 */ + 2.1869488060e-02, /* 0x3cb327a4 */ + 8.8632395491e-03, /* 0x3c11371f */ + 3.5920790397e-03, /* 0x3b6b6916 */ + 1.4562094584e-03, /* 0x3abede48 */ + 5.8804126456e-04, /* 0x3a1a26c8 */ + 2.4646313977e-04, /* 0x398137b9 */ + 7.8179444245e-05, /* 0x38a3f445 */ + 7.1407252108e-05, /* 0x3895c07a */ + -1.8558637748e-05, /* 0xb79bae5f */ + 2.5907305826e-05, /* 0x37d95384 */ +}; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +static v64sf +v64sf_kernel_tanf (v64sf x, v64sf y, v64si iy, v64si __mask) +{ + FUNCTION_INIT (v64sf); + + v64si hx; + GET_FLOAT_WORD(hx, x, NO_COND); + v64si ix = hx & 0x7fffffff; /* high word of |x| */ + + VECTOR_IF(ix<0x31800000, cond) /* x < 2**-28 */ + VECTOR_IF2(__builtin_convertvector (x, v64si)==0, cond2, cond) /* generate inexact */ + VECTOR_RETURN (1.0f / __builtin_gcn_fabsvf (x), (ix|(iy+1))==0); + VECTOR_RETURN (x, cond2 & (iy == 1)); + VECTOR_RETURN (-1.0f / x, cond2); + VECTOR_ENDIF + VECTOR_ENDIF + VECTOR_IF(ix>=0x3f2ca140, cond) /* |x|>=0.6744 */ + VECTOR_COND_MOVE (x, -x, cond & (hx < 0)); + VECTOR_COND_MOVE (y, -y, cond & (hx < 0)); + v64sf z = pio4-x; + v64sf w = pio4lo-y; + VECTOR_COND_MOVE (x, z+w, cond); + VECTOR_COND_MOVE (y, VECTOR_INIT (0.0f), cond); + VECTOR_ENDIF + v64sf z = x*x; + v64sf w = z*z; + /* Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + v64sf r = T[1]+w*(T[3]+w*(T[5]+w*(T[7]+w*(T[9]+w*T[11])))); + v64sf v = z*(T[2]+w*(T[4]+w*(T[6]+w*(T[8]+w*(T[10]+w*T[12]))))); + v64sf s = z*x; + r = y + z*(s*(r+v)+y); + r += T[0]*s; + w = x+r; + VECTOR_IF(ix>=0x3f2ca140, cond) + v = __builtin_convertvector (iy, v64sf); + VECTOR_RETURN (__builtin_convertvector (1-((hx>>30)&2), v64sf) + * (v-2.0f*(x-(w*w/(w+v)-r))), cond); + VECTOR_ENDIF + VECTOR_RETURN (w, iy == 1); + /* if allow error up to 2 ulp, + simply return -1.0/(x+r) here */ + /* compute -1.0/(x+r) accurately */ + z = w; + v64si i; + GET_FLOAT_WORD(i,z, NO_COND); + SET_FLOAT_WORD(z,i&0xfffff000, NO_COND); + v = r - (z - x); /* z+v = r+x */ + v64sf a, t; + t = a = -1.0f/w; /* a = -1.0/w */ + GET_FLOAT_WORD(i,t, NO_COND); + SET_FLOAT_WORD(t,i&0xfffff000, NO_COND); + s = 1.0f+t*z; + VECTOR_RETURN (t+a*(s+t*v), NO_COND); + + FUNCTION_RETURN; +} + +static v64si +v64sf_rem_pio2f (v64sf x, v64sf *y) +{ + /* Work in double-precision for better accuracy. */ + v64df dx = __builtin_convertvector (x, v64df); + v64df r = dx * __INV_PI_OVER_TWO_2_24; + v64si n = (__builtin_convertvector (r, v64si) + 0x800000) >> 24; + dx = dx - __builtin_convertvector (n, v64df) * __PI_OVER_TWO; + + y[0] = __builtin_convertvector (dx, v64sf); + y[1] = __builtin_convertvector (dx, v64sf) - y[0]; + return n; +} + +DEF_VS_MATH_FUNC (v64sf, tanf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64si ix; + GET_FLOAT_WORD (ix, x, NO_COND); + + /* |x| ~< pi/4 */ + ix &= 0x7fffffff; + VECTOR_RETURN (v64sf_kernel_tanf (x, VECTOR_INIT (0.0f), VECTOR_INIT (1), __mask), + ix <= 0x3f490fda); + + /* tan(Inf or NaN) is NaN */ + VECTOR_RETURN (x-x, ~FLT_UWORD_IS_FINITE(ix)); /* NaN */ + + /* argument reduction needed */ + v64sf y[2]; + v64si n = v64sf_rem_pio2f (x,y); + VECTOR_RETURN (v64sf_kernel_tanf (y[0], y[1], 1-((n&1)<<1), __mask), // 1 -- n even + NO_COND); // -1 -- n odd + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tanf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tanh.c b/newlib/libm/machine/amdgcn/v64sf_tanh.c new file mode 100644 index 0000000000..2fd46231a3 --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_tanh.c @@ -0,0 +1,92 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * Copyright (c) 1994-2009 Red Hat, Inc. All rights reserved. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the BSD License. This program is distributed in the hope that + * it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + * including the implied warranties of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. A copy of this license is available at + * http://www.opensource.org/licenses. Any Red Hat trademarks that are + * incorporated in the source code or documentation are not subject to + * the BSD License and may only be used or replicated with the express + * permission of Red Hat, Inc. + */ + +/***************************************************************** + * The following routines are coded directly from the algorithms + * and coefficients given in "Software Manual for the Elementary + * Functions" by William J. Cody, Jr. and William Waite, Prentice + * Hall, 1980. + *****************************************************************/ + +/* Based on newlib/libm/mathfp/sf_tanh.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf, v64si); + +static const float LN3_OVER2 = 0.54930614433405484570; +static const float p[] = { -0.16134119023996228053e+4, + -0.99225929672236083313e+2, + -0.96437492777225469787 }; +static const float q[] = { 0.48402357071988688686e+4, + 0.22337720718962312926e+4, + 0.11274474380534949335e+3 }; + +#if defined (__has_builtin) && __has_builtin (__builtin_gcn_fabsvf) + +DEF_VS_MATH_FUNC (v64sf, tanhf, v64sf x) +{ + FUNCTION_INIT (v64sf); + + v64sf f = __builtin_gcn_fabsvf (x); + v64sf res; + + /* Check if the input is too big. */ + VECTOR_IF (f > (float) BIGX, cond) + VECTOR_COND_MOVE (res, VECTOR_INIT (1.0f), cond); + + VECTOR_ELSEIF (f > LN3_OVER2, cond) + VECTOR_COND_MOVE (res, 1.0f - 2.0f / (v64sf_expf_aux (2.0f * f, __mask) + 1.0f), + cond); + + /* Check if the input is too small. */ + VECTOR_ELSEIF (f < z_rooteps_f, cond) + VECTOR_COND_MOVE (res, f, cond); + + /* Calculate the Taylor series. */ + VECTOR_ELSE (cond) + v64sf g = f * f; + + v64sf P = (p[2] * g + p[1]) * g + p[0]; + v64sf Q = ((g + q[2]) * g + q[1]) * g + q[0]; + v64sf R = g * (P / Q); + + VECTOR_COND_MOVE (res, f + f * R, cond); + VECTOR_ENDIF + + VECTOR_COND_MOVE (res, -res, x < 0.0f); + + VECTOR_RETURN (res, NO_COND); + + FUNCTION_RETURN; +} + +DEF_VARIANTS (tanhf, sf, sf) + +#endif diff --git a/newlib/libm/machine/amdgcn/v64sf_tgamma.c b/newlib/libm/machine/amdgcn/v64sf_tgamma.c new file mode 100644 index 0000000000..cfe045841a --- /dev/null +++ b/newlib/libm/machine/amdgcn/v64sf_tgamma.c @@ -0,0 +1,42 @@ +/* + * Copyright 2023 Siemens + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* Based on newlib/libm/math/ef_tgamma.c in Newlib. */ + +#include "amdgcnmach.h" + +v64sf v64sf_expf_aux (v64sf x, v64si __mask); +v64sf v64sf_lgammaf_r_aux (v64sf x, v64si *signgamp, v64si __mask); + +DEF_VS_MATH_FUNC (v64sf, tgammaf, v64sf x) +{ + v64si signgam_local; + v64sf y = v64sf_expf_aux(v64sf_lgammaf_r_aux(x, &signgam_local, __mask), __mask); + VECTOR_COND_MOVE(y, -y, signgam_local < 0); + return y; +} + +DEF_VARIANTS (tgammaf, sf, sf) From 7e332208a0987fd91bf1afc8fa7a5647b53a5670 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 18 Jan 2023 19:59:48 +0100 Subject: [PATCH 121/767] Cygwin: open_shared: always bump next_address The new loop in open_shared has a subtil performance problem. Next_address is bumped only if mapping at this address failed. Every subsequent call to open_shared has a high probability having to call MapViewOfFileEx twice, because next_address is still set to the address of the last successful mapping. Avoid this by bumping next_address every time. While at it, fix a comment. Fixes: dc0fe7742b8c ("Cygwin: open_shared: try harder allocating a shared region") Signed-off-by: Corinna Vinschen --- winsup/cygwin/mm/shared.cc | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index eb798c2ddb..e68b506a9f 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -159,25 +159,21 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, /* Locate shared regions in the area between SHARED_REGIONS_ADDRESS_LOW and SHARED_REGIONS_ADDRESS_HIGH, retrying until we have a slot. - Don't use MapViewOfFile3 (loader deadlock during fork. */ + Don't use MapViewOfFile3 (STATUS_DLL_INIT_FAILED during fork). */ bool loop = false; - addr = (void *) next_address; do { + addr = (void *) next_address; shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0, addr); - if (!shared) + next_address += wincap.allocation_granularity (); + if (next_address >= SHARED_REGIONS_ADDRESS_HIGH) { - next_address += wincap.allocation_granularity (); - if (next_address >= SHARED_REGIONS_ADDRESS_HIGH) - { - if (loop) - break; - next_address = SHARED_REGIONS_ADDRESS_LOW; - loop = true; - } - addr = (void *) next_address; + if (!shared && loop) + break; + next_address = SHARED_REGIONS_ADDRESS_LOW; + loop = true; } } while (!shared); From e1fcd10b48775a92b3fe7b13d2c702fab48dfff8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 18 Jan 2023 20:07:10 +0100 Subject: [PATCH 122/767] Cygwin: memory_init: initialize user heap here Eventually move user heap initialization to memory_init. The call order is not changed. Drop a now useless comment. Signed-off-by: Corinna Vinschen --- winsup/cygwin/mm/shared.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index e68b506a9f..40cdd47228 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -319,14 +319,13 @@ shared_info::initialize () else if (cb != sizeof (*this)) system_printf ("size of shared memory region changed from %lu to %u", sizeof (*this), cb); - /* FIXME? Shouldn't this be in memory_init? */ - cygheap->user_heap.init (); } void memory_init () { shared_info::create (); /* Initialize global shared memory */ + cygheap->user_heap.init (); /* Initialize user heap */ user_info::create (false); /* Initialize per-user shared memory */ /* Initialize tty list session stuff. Doesn't really belong here but this needs to be initialized before any tty or console manipulation From 3c2ac163da888cf69d855c9becf643dbc6ebd94f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 18 Jan 2023 20:07:54 +0100 Subject: [PATCH 123/767] Cygwin: fix two comments in heap.cc and memory_layout.h Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/memory_layout.h | 3 +-- winsup/cygwin/mm/heap.cc | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/local_includes/memory_layout.h b/winsup/cygwin/local_includes/memory_layout.h index c763442a9e..f8ec80bb58 100644 --- a/winsup/cygwin/local_includes/memory_layout.h +++ b/winsup/cygwin/local_includes/memory_layout.h @@ -16,8 +16,7 @@ details. */ dynamicbase is accidentally not set in the PE/COFF header of the DLL. */ #define CYGWIN_DLL_ADDRESS 0x180040000UL -/* Area for non-fixed-address Cygwin-specific shared memory regions. Fallback - for standard shared regions if the can't load at their default address. */ +/* Area for Cygwin-specific shared memory regions. */ #define SHARED_REGIONS_ADDRESS_LOW 0x1a0000000UL #define SHARED_REGIONS_ADDRESS_HIGH 0x200000000UL diff --git a/winsup/cygwin/mm/heap.cc b/winsup/cygwin/mm/heap.cc index 5b24a197f3..72ea486f38 100644 --- a/winsup/cygwin/mm/heap.cc +++ b/winsup/cygwin/mm/heap.cc @@ -77,11 +77,11 @@ user_heap_info::init () if (base) break; - /* Ok, so we are at the 1% which didn't work with 0x20000000 out + /* Ok, so we are at the 1% which didn't work with USERHEAP_START out of the box. What we do now is to search for the next free region which matches our desired heap size. While doing that, we keep track of the largest region we found, including the - region starting at 0x20000000. */ + region starting at USERHEAP_START. */ while ((ret = VirtualQuery ((LPCVOID) start_address, &mbi, sizeof mbi)) != 0) { From 9522166db1d2a8c551652d7f17ab3ff692cc4d19 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 19 Jan 2023 22:02:47 +0900 Subject: [PATCH 124/767] Cygwin: dsp: Fix a problem that fcntl() does not take effect. Previously, fhandler_dev_dsp (OSS) has a problem that fcntl() does not take effect at all. This patch fixes the issue. Signed-off-by: Takashi Yano Reviewed-by: Corinna Vinschen --- winsup/cygwin/fhandler/dsp.cc | 12 ++++++++++++ winsup/cygwin/local_includes/fhandler.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index c37bedea5c..8798cf8762 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1038,6 +1038,12 @@ fhandler_dev_dsp::ioctl (unsigned int cmd, void *buf) return base ()->_ioctl (cmd, buf); } +int +fhandler_dev_dsp::fcntl (int cmd, intptr_t arg) +{ + return base ()->_fcntl (cmd, arg); +} + void fhandler_dev_dsp::fixup_after_fork (HANDLE parent) { @@ -1417,6 +1423,12 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) } } +int +fhandler_dev_dsp::_fcntl (int cmd, intptr_t arg) +{ + return fhandler_base::fcntl(cmd, arg); +} + void fhandler_dev_dsp::_fixup_after_fork (HANDLE parent) { // called from new child process diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 8406dff64e..113e402934 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2770,6 +2770,7 @@ class fhandler_dev_dsp: public fhandler_base ssize_t write (const void *, size_t); void read (void *, size_t&); int ioctl (unsigned int, void *); + int fcntl (int cmd, intptr_t); int close (); void fixup_after_fork (HANDLE); void fixup_after_exec (); @@ -2778,6 +2779,7 @@ class fhandler_dev_dsp: public fhandler_base ssize_t _write (const void *, size_t); void _read (void *, size_t&); int _ioctl (unsigned int, void *); + int _fcntl (int cmd, intptr_t); void _fixup_after_fork (HANDLE); void _fixup_after_exec (); From 1d4110e347ad75e09e8ed2e362c1af3b92346656 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 19 Jan 2023 18:24:15 +0100 Subject: [PATCH 125/767] Cygwin: fix build of cygcheck and strace adding _LDFLAGS overrides AM_LDFLAGS and thus fails to build cygcheck and strace statically. Fix it. Fixes: 8d318bf142f7 ("Cygwin: disable high-entropy VA for cygcheck and strace") Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am index edb314d068..c26eef80f8 100644 --- a/winsup/utils/mingw/Makefile.am +++ b/winsup/utils/mingw/Makefile.am @@ -32,7 +32,7 @@ cygcheck_SOURCES = \ dump_setup.cc \ path.cc cygcheck_CPPFLAGS=-I$(srcdir)/.. -idirafter ${top_srcdir}/cygwin/include -cygcheck_LDFLAGS = -Wl,--disable-high-entropy-va +cygcheck_LDFLAGS = ${AM_LDFLAGS} -Wl,--disable-high-entropy-va cygcheck_LDADD = -lz -lwininet -lpsapi -lntdll cygwin_console_helper_SOURCES = cygwin-console-helper.cc @@ -43,7 +43,7 @@ strace_SOURCES = \ path.cc \ strace.cc strace_CPPFLAGS=-I$(srcdir)/.. -idirafter ${top_srcdir}/cygwin/local_includes -idirafter ${top_srcdir}/cygwin/include -strace_LDFLAGS = -Wl,--disable-high-entropy-va +strace_LDFLAGS = ${AM_LDFLAGS} -Wl,--disable-high-entropy-va strace_LDADD = -lntdll noinst_PROGRAMS = path-testsuite From 03bbde566a85145f72ad32be3c4da62f8f773e4a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 19 Jan 2023 18:33:40 +0100 Subject: [PATCH 126/767] Cygwin: Add 3.4.5 release message Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.5 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 winsup/cygwin/release/3.4.5 diff --git a/winsup/cygwin/release/3.4.5 b/winsup/cygwin/release/3.4.5 new file mode 100644 index 0000000000..4016888147 --- /dev/null +++ b/winsup/cygwin/release/3.4.5 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +Fix a build problem breaking cygcheck and strace. +Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252894.html From 2e80e1282ae1d45615e2bf32379ec100fc258b4f Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 19 Jan 2023 19:38:42 +0100 Subject: [PATCH 127/767] NEWS: Add news items --- newlib/NEWS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/newlib/NEWS b/newlib/NEWS index c39b925c46..5e64b26604 100644 --- a/newlib/NEWS +++ b/newlib/NEWS @@ -3,7 +3,13 @@ - remove i?86-pc-linux-gnu support - remove decstation & sunos support - remove phoenix OS support +- remove unused members from struct _reent (see also --enable-newlib-reent-binary-compat) - build system internals heavily rewritten & updated +- add --enable-newlib-reent-thread-local configuration option +- add --enable-newlib-reent-binary-compat configuration option +- add 64-bit powerpc setjmp/longjmp support +- use global stdio streams for all configurations +- use global atexit data for all configurations *** Major changes in newlib version 4.2.0: From 66dfdc5aafb8df5e3ed79c50194a712479080561 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Thu, 19 Jan 2023 17:19:09 +0000 Subject: [PATCH 128/767] NEWS: report arm ABI break Add details of ABI-conformance fix to setjmp implementation under Major changes in newlib version 4.3.0 --- newlib/NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/newlib/NEWS b/newlib/NEWS index 5e64b26604..4bac682f56 100644 --- a/newlib/NEWS +++ b/newlib/NEWS @@ -5,6 +5,8 @@ - remove phoenix OS support - remove unused members from struct _reent (see also --enable-newlib-reent-binary-compat) - build system internals heavily rewritten & updated +- make arm jmp_buf size and alignment ABI-conformant +- fixed bug in arm setjmp/longjmp to preserve floating-point register values - add --enable-newlib-reent-thread-local configuration option - add --enable-newlib-reent-binary-compat configuration option - add 64-bit powerpc setjmp/longjmp support From a7be7d8b75159c86d4f0268530a7a5b64f4f40df Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Thu, 19 Jan 2023 17:17:39 +0000 Subject: [PATCH 129/767] COPYING.NEWLIB: Arm licence entry amendment Add relevant SPDX-License-Identifier to Arm licence entry in COPYING.NEWLIB. --- COPYING.NEWLIB | 2 ++ 1 file changed, 2 insertions(+) diff --git a/COPYING.NEWLIB b/COPYING.NEWLIB index d54ed293dc..ee14bb3497 100644 --- a/COPYING.NEWLIB +++ b/COPYING.NEWLIB @@ -762,6 +762,8 @@ SUCH DAMAGE. (35) - Arm Ltd + SPDX-License-Identifier: BSD-3-Clause + Copyright (c) 2009-2022 Arm Ltd All rights reserved. From 8af65b8c143bf5959ffd98dd52c76ab9a7388843 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 19 Jan 2023 15:13:43 -0500 Subject: [PATCH 130/767] Add amdgcn vectorized math routines to NEWS --- newlib/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/newlib/NEWS b/newlib/NEWS index 4bac682f56..9aa82920d9 100644 --- a/newlib/NEWS +++ b/newlib/NEWS @@ -12,6 +12,7 @@ - add 64-bit powerpc setjmp/longjmp support - use global stdio streams for all configurations - use global atexit data for all configurations +- vectorized math routines added for amdgcn platform *** Major changes in newlib version 4.2.0: From 52cb9370044d11a29ae0dc1120ffdf246f5abc20 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 17 Jan 2023 16:01:02 +0100 Subject: [PATCH 131/767] nvptx: Provide stub 'gettimeofday' Instead of them FAILing due to 'unresolved symbol gettimeofday', this makes PASS a number of GCC 'gfortran.dg' test cases, for example. --- newlib/libc/machine/nvptx/misc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/newlib/libc/machine/nvptx/misc.c b/newlib/libc/machine/nvptx/misc.c index ef76eaae11..897ddc8077 100644 --- a/newlib/libc/machine/nvptx/misc.c +++ b/newlib/libc/machine/nvptx/misc.c @@ -16,6 +16,8 @@ #include #include #include +#include + #undef errno extern int errno; @@ -29,6 +31,11 @@ fstat (int fd, struct stat *buf) { return -1; } +int +gettimeofday (struct timeval *tv, void *tz) { + return -1; +} + int isatty (int fd) { return fd == 1; From 3b58032de14f7a08b1c60ee9fc4857c5fbfc8e57 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 11 Oct 2022 23:34:19 +0200 Subject: [PATCH 132/767] nvptx: Don't use global constructor for SSP setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Given that nvptx newlib currently restricts itself to ELIX level 1, this is not already a problem. However, in the following we'd like to lift that restriction, and then run into: [...]/newlib/libc/ssp/stack_protector.c: In function ‘__stack_chk_init’: [...]/newlib/libc/ssp/stack_protector.c:31:1: sorry, unimplemented: global constructors not supported on this target 31 | } | ^ GCC patch "nvptx: Support global constructors/destructors via 'collect2'" has been posted, but not yet accepted. Until that is resolved, use the same manual SSP setup as for GCN. --- newlib/libc/ssp/stack_protector.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/libc/ssp/stack_protector.c b/newlib/libc/ssp/stack_protector.c index cd51543f0e..5e9d75f0f3 100644 --- a/newlib/libc/ssp/stack_protector.c +++ b/newlib/libc/ssp/stack_protector.c @@ -5,8 +5,8 @@ #include #include -#if defined(__AMDGCN__) -/* GCN does not support constructors, yet. */ +#if defined(__AMDGCN__) || defined(__nvptx__) +/* Global constructors not supported on this target, yet. */ uintptr_t __stack_chk_guard = 0x00000aff; /* 0, 0, '\n', 255 */ #else From 654072d7a2feadb7b4d7466e59105198ab5e0968 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 21 Sep 2022 18:58:34 +0200 Subject: [PATCH 133/767] nvptx: Remove newlib ELIX level 1 restriction Such a hard-coded ELIX level restriction is only being applied for nvptx newlib -- but we'd actually like higher levels' functions available there, too. (Users continue to be able to override this via newlib 'configure', as for every other newlib target.) This already enables GCC test cases that currently FAIL due to 'unresolved symbol strndup' ('gcc.dg/builtin-dynamic-object-size-0.c'), or 'unresolved symbol mempcpy' ('gcc.dg/torture/pr45636.c'), for example. Co-authored-by: Andrew Stubbs --- newlib/NEWS | 1 + newlib/configure.host | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/newlib/NEWS b/newlib/NEWS index 9aa82920d9..ee456f9b8a 100644 --- a/newlib/NEWS +++ b/newlib/NEWS @@ -13,6 +13,7 @@ - use global stdio streams for all configurations - use global atexit data for all configurations - vectorized math routines added for amdgcn platform +- nvptx: remove newlib ELIX level 1 restriction *** Major changes in newlib version 4.2.0: diff --git a/newlib/configure.host b/newlib/configure.host index 7157877ffa..0a1ba282a3 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -938,11 +938,6 @@ fi # Target-specific defaults case "${host_cpu}" in nvptx*) - if [ "x${newlib_elix_level}" = "x0" ]; then - newlib_elix_level=1; - elif [ "x${newlib_elix_level}" != "x1" ]; then - newlib_msg_warn="nvptx does not support elix level > 1"; - fi if [[ -z ${newlib_global_stdio_streams} ]]; then newlib_global_stdio_streams="yes"; fi From 29b137af8098fa63b824072e1ce33883275959a3 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 21 Sep 2022 18:58:34 +0200 Subject: [PATCH 134/767] nvptx: Provide stub 'getpid', 'kill', 'stat' ... as implemented for GCN in 'newlib/libc/sys/amdgcn/*' files, but (for now) still adding to the catch-all 'newlib/libc/machine/nvptx/misc.c' file. This is necessary for the GCC/Fortran I/O system, for example. Co-authored-by: Andrew Stubbs --- newlib/libc/machine/nvptx/misc.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/newlib/libc/machine/nvptx/misc.c b/newlib/libc/machine/nvptx/misc.c index 897ddc8077..56e66b9f33 100644 --- a/newlib/libc/machine/nvptx/misc.c +++ b/newlib/libc/machine/nvptx/misc.c @@ -36,11 +36,22 @@ gettimeofday (struct timeval *tv, void *tz) { return -1; } +int +getpid (void) { + return 0; +} + int isatty (int fd) { return fd == 1; } +int +kill (int pid, int sig) { + errno = ESRCH; + return -1; +} + off_t lseek(int fd, off_t offset, int whence) { return 0; @@ -56,6 +67,12 @@ read(int fd, void *buf, size_t count) { return 0; } +int +stat (const char *file, struct stat *pstat) { + errno = EACCES; + return -1; +} + void sync (void) { } From 05a2d7a8b3277b469e7cb121115bba398adc8559 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 19 Jan 2023 18:24:50 +0100 Subject: [PATCH 135/767] nvptx: In offloading execution, map '_exit' to 'abort' [GCC PR85463] This is still not properly resolving '[nvptx] "exit" in offloaded region doesn't terminate process', but is one step into that direction, and allows for simplifying some GCC code. --- newlib/libc/machine/nvptx/_exit.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/newlib/libc/machine/nvptx/_exit.c b/newlib/libc/machine/nvptx/_exit.c index ae434c9300..f2253df663 100644 --- a/newlib/libc/machine/nvptx/_exit.c +++ b/newlib/libc/machine/nvptx/_exit.c @@ -14,6 +14,7 @@ */ #include +#include /* Sadly, PTX doesn't support weak declarations, only weak definitions. Weakly define it here in case we're not using crt0 @@ -26,7 +27,15 @@ void __attribute__((noreturn)) _exit (int status) { if (__exitval_ptr) - *__exitval_ptr = status; - for (;;) - asm ("exit;" ::: "memory"); + { + *__exitval_ptr = status; + for (;;) + asm ("exit;" ::: "memory"); + } + else /* offloading */ + { + /* Map to 'abort'; see + '[nvptx] "exit" in offloaded region doesn't terminate process'. */ + abort (); + } } From 9e09d6ed83cce4777a5950412647ccc603040409 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 20 Jan 2023 16:01:54 -0500 Subject: [PATCH 136/767] Bump up newlib to 4.3.0 --- newlib/acinclude.m4 | 2 +- newlib/configure | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/newlib/acinclude.m4 b/newlib/acinclude.m4 index 9e48349877..ee1411d76a 100644 --- a/newlib/acinclude.m4 +++ b/newlib/acinclude.m4 @@ -2,7 +2,7 @@ dnl This provides configure definitions used by all the newlib dnl configure.in files. AC_DEFUN([DEF_NEWLIB_MAJOR_VERSION],m4_define([NEWLIB_MAJOR_VERSION],[4])) -AC_DEFUN([DEF_NEWLIB_MINOR_VERSION],m4_define([NEWLIB_MINOR_VERSION],[2])) +AC_DEFUN([DEF_NEWLIB_MINOR_VERSION],m4_define([NEWLIB_MINOR_VERSION],[3])) AC_DEFUN([DEF_NEWLIB_PATCHLEVEL_VERSION],m4_define([NEWLIB_PATCHLEVEL_VERSION],[0])) AC_DEFUN([DEF_NEWLIB_VERSION],m4_define([NEWLIB_VERSION],[NEWLIB_MAJOR_VERSION.NEWLIB_MINOR_VERSION.NEWLIB_PATCHLEVEL_VERSION])) diff --git a/newlib/configure b/newlib/configure index f29aca5d39..6be7896ea5 100755 --- a/newlib/configure +++ b/newlib/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for newlib 4.2.0. +# Generated by GNU Autoconf 2.69 for newlib 4.3.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -576,8 +576,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='newlib' PACKAGE_TARNAME='newlib' -PACKAGE_VERSION='4.2.0' -PACKAGE_STRING='newlib 4.2.0' +PACKAGE_VERSION='4.3.0' +PACKAGE_STRING='newlib 4.3.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1551,7 +1551,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures newlib 4.2.0 to adapt to many kinds of systems. +\`configure' configures newlib 4.3.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1621,7 +1621,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of newlib 4.2.0:";; + short | recursive ) echo "Configuration of newlib 4.3.0:";; esac cat <<\_ACEOF @@ -1753,7 +1753,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -newlib configure 4.2.0 +newlib configure 4.3.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1845,7 +1845,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by newlib $as_me 4.2.0, which was +It was created by newlib $as_me 4.3.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4858,7 +4858,7 @@ fi # Define the identity of the package. PACKAGE='newlib' - VERSION='4.2.0' + VERSION='4.3.0' # Some tools Automake needs. @@ -6407,13 +6407,13 @@ fi -$as_echo "#define _NEWLIB_VERSION \"4.2.0\"" >>confdefs.h +$as_echo "#define _NEWLIB_VERSION \"4.3.0\"" >>confdefs.h $as_echo "#define __NEWLIB__ 4" >>confdefs.h -$as_echo "#define __NEWLIB_MINOR__ 2" >>confdefs.h +$as_echo "#define __NEWLIB_MINOR__ 3" >>confdefs.h $as_echo "#define __NEWLIB_PATCHLEVEL__ 0" >>confdefs.h @@ -8342,7 +8342,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by newlib $as_me 4.2.0, which was +This file was extended by newlib $as_me 4.3.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8408,7 +8408,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -newlib config.status 4.2.0 +newlib config.status 4.3.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" From 3123fdeecb5aea4947cb720e52f0a32553751bb4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 21 Jan 2023 18:25:56 +0100 Subject: [PATCH 137/767] Cygwin: tape: tapes are character devices, not block devices Fixes: 727a81f4d93f ("* devices.h (device::exists_func): Redefine field.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/devices.cc | 512 +++++++++++++++++++-------------------- winsup/cygwin/devices.in | 4 +- 2 files changed, 258 insertions(+), 258 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 747dcc8c6c..72c83d6e62 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -341,134 +341,134 @@ const _RDATA _device dev_storage[] = {"/dev/fd14", BRACK(FHDEV(DEV_FLOPPY_MAJOR, 14)), "\\Device\\Floppy14", exists_ntdev, S_IFBLK, true}, {"/dev/fd15", BRACK(FHDEV(DEV_FLOPPY_MAJOR, 15)), "\\Device\\Floppy15", exists_ntdev, S_IFBLK, true}, {"/dev/full", BRACK(FH_FULL), "\\Device\\Null", exists_ntdev, S_IFCHR, true}, - {"/dev/nst0", BRACK(FHDEV(DEV_TAPE_MAJOR, 128)), "\\Device\\Tape0", exists_ntdev, S_IFBLK, true}, - {"/dev/nst1", BRACK(FHDEV(DEV_TAPE_MAJOR, 129)), "\\Device\\Tape1", exists_ntdev, S_IFBLK, true}, - {"/dev/nst2", BRACK(FHDEV(DEV_TAPE_MAJOR, 130)), "\\Device\\Tape2", exists_ntdev, S_IFBLK, true}, - {"/dev/nst3", BRACK(FHDEV(DEV_TAPE_MAJOR, 131)), "\\Device\\Tape3", exists_ntdev, S_IFBLK, true}, - {"/dev/nst4", BRACK(FHDEV(DEV_TAPE_MAJOR, 132)), "\\Device\\Tape4", exists_ntdev, S_IFBLK, true}, - {"/dev/nst5", BRACK(FHDEV(DEV_TAPE_MAJOR, 133)), "\\Device\\Tape5", exists_ntdev, S_IFBLK, true}, - {"/dev/nst6", BRACK(FHDEV(DEV_TAPE_MAJOR, 134)), "\\Device\\Tape6", exists_ntdev, S_IFBLK, true}, - {"/dev/nst7", BRACK(FHDEV(DEV_TAPE_MAJOR, 135)), "\\Device\\Tape7", exists_ntdev, S_IFBLK, true}, - {"/dev/nst8", BRACK(FHDEV(DEV_TAPE_MAJOR, 136)), "\\Device\\Tape8", exists_ntdev, S_IFBLK, true}, - {"/dev/nst9", BRACK(FHDEV(DEV_TAPE_MAJOR, 137)), "\\Device\\Tape9", exists_ntdev, S_IFBLK, true}, - {"/dev/nst10", BRACK(FHDEV(DEV_TAPE_MAJOR, 138)), "\\Device\\Tape10", exists_ntdev, S_IFBLK, true}, - {"/dev/nst11", BRACK(FHDEV(DEV_TAPE_MAJOR, 139)), "\\Device\\Tape11", exists_ntdev, S_IFBLK, true}, - {"/dev/nst12", BRACK(FHDEV(DEV_TAPE_MAJOR, 140)), "\\Device\\Tape12", exists_ntdev, S_IFBLK, true}, - {"/dev/nst13", BRACK(FHDEV(DEV_TAPE_MAJOR, 141)), "\\Device\\Tape13", exists_ntdev, S_IFBLK, true}, - {"/dev/nst14", BRACK(FHDEV(DEV_TAPE_MAJOR, 142)), "\\Device\\Tape14", exists_ntdev, S_IFBLK, true}, - {"/dev/nst15", BRACK(FHDEV(DEV_TAPE_MAJOR, 143)), "\\Device\\Tape15", exists_ntdev, S_IFBLK, true}, - {"/dev/nst16", BRACK(FHDEV(DEV_TAPE_MAJOR, 144)), "\\Device\\Tape16", exists_ntdev, S_IFBLK, true}, - {"/dev/nst17", BRACK(FHDEV(DEV_TAPE_MAJOR, 145)), "\\Device\\Tape17", exists_ntdev, S_IFBLK, true}, - {"/dev/nst18", BRACK(FHDEV(DEV_TAPE_MAJOR, 146)), "\\Device\\Tape18", exists_ntdev, S_IFBLK, true}, - {"/dev/nst19", BRACK(FHDEV(DEV_TAPE_MAJOR, 147)), "\\Device\\Tape19", exists_ntdev, S_IFBLK, true}, - {"/dev/nst20", BRACK(FHDEV(DEV_TAPE_MAJOR, 148)), "\\Device\\Tape20", exists_ntdev, S_IFBLK, true}, - {"/dev/nst21", BRACK(FHDEV(DEV_TAPE_MAJOR, 149)), "\\Device\\Tape21", exists_ntdev, S_IFBLK, true}, - {"/dev/nst22", BRACK(FHDEV(DEV_TAPE_MAJOR, 150)), "\\Device\\Tape22", exists_ntdev, S_IFBLK, true}, - {"/dev/nst23", BRACK(FHDEV(DEV_TAPE_MAJOR, 151)), "\\Device\\Tape23", exists_ntdev, S_IFBLK, true}, - {"/dev/nst24", BRACK(FHDEV(DEV_TAPE_MAJOR, 152)), "\\Device\\Tape24", exists_ntdev, S_IFBLK, true}, - {"/dev/nst25", BRACK(FHDEV(DEV_TAPE_MAJOR, 153)), "\\Device\\Tape25", exists_ntdev, S_IFBLK, true}, - {"/dev/nst26", BRACK(FHDEV(DEV_TAPE_MAJOR, 154)), "\\Device\\Tape26", exists_ntdev, S_IFBLK, true}, - {"/dev/nst27", BRACK(FHDEV(DEV_TAPE_MAJOR, 155)), "\\Device\\Tape27", exists_ntdev, S_IFBLK, true}, - {"/dev/nst28", BRACK(FHDEV(DEV_TAPE_MAJOR, 156)), "\\Device\\Tape28", exists_ntdev, S_IFBLK, true}, - {"/dev/nst29", BRACK(FHDEV(DEV_TAPE_MAJOR, 157)), "\\Device\\Tape29", exists_ntdev, S_IFBLK, true}, - {"/dev/nst30", BRACK(FHDEV(DEV_TAPE_MAJOR, 158)), "\\Device\\Tape30", exists_ntdev, S_IFBLK, true}, - {"/dev/nst31", BRACK(FHDEV(DEV_TAPE_MAJOR, 159)), "\\Device\\Tape31", exists_ntdev, S_IFBLK, true}, - {"/dev/nst32", BRACK(FHDEV(DEV_TAPE_MAJOR, 160)), "\\Device\\Tape32", exists_ntdev, S_IFBLK, true}, - {"/dev/nst33", BRACK(FHDEV(DEV_TAPE_MAJOR, 161)), "\\Device\\Tape33", exists_ntdev, S_IFBLK, true}, - {"/dev/nst34", BRACK(FHDEV(DEV_TAPE_MAJOR, 162)), "\\Device\\Tape34", exists_ntdev, S_IFBLK, true}, - {"/dev/nst35", BRACK(FHDEV(DEV_TAPE_MAJOR, 163)), "\\Device\\Tape35", exists_ntdev, S_IFBLK, true}, - {"/dev/nst36", BRACK(FHDEV(DEV_TAPE_MAJOR, 164)), "\\Device\\Tape36", exists_ntdev, S_IFBLK, true}, - {"/dev/nst37", BRACK(FHDEV(DEV_TAPE_MAJOR, 165)), "\\Device\\Tape37", exists_ntdev, S_IFBLK, true}, - {"/dev/nst38", BRACK(FHDEV(DEV_TAPE_MAJOR, 166)), "\\Device\\Tape38", exists_ntdev, S_IFBLK, true}, - {"/dev/nst39", BRACK(FHDEV(DEV_TAPE_MAJOR, 167)), "\\Device\\Tape39", exists_ntdev, S_IFBLK, true}, - {"/dev/nst40", BRACK(FHDEV(DEV_TAPE_MAJOR, 168)), "\\Device\\Tape40", exists_ntdev, S_IFBLK, true}, - {"/dev/nst41", BRACK(FHDEV(DEV_TAPE_MAJOR, 169)), "\\Device\\Tape41", exists_ntdev, S_IFBLK, true}, - {"/dev/nst42", BRACK(FHDEV(DEV_TAPE_MAJOR, 170)), "\\Device\\Tape42", exists_ntdev, S_IFBLK, true}, - {"/dev/nst43", BRACK(FHDEV(DEV_TAPE_MAJOR, 171)), "\\Device\\Tape43", exists_ntdev, S_IFBLK, true}, - {"/dev/nst44", BRACK(FHDEV(DEV_TAPE_MAJOR, 172)), "\\Device\\Tape44", exists_ntdev, S_IFBLK, true}, - {"/dev/nst45", BRACK(FHDEV(DEV_TAPE_MAJOR, 173)), "\\Device\\Tape45", exists_ntdev, S_IFBLK, true}, - {"/dev/nst46", BRACK(FHDEV(DEV_TAPE_MAJOR, 174)), "\\Device\\Tape46", exists_ntdev, S_IFBLK, true}, - {"/dev/nst47", BRACK(FHDEV(DEV_TAPE_MAJOR, 175)), "\\Device\\Tape47", exists_ntdev, S_IFBLK, true}, - {"/dev/nst48", BRACK(FHDEV(DEV_TAPE_MAJOR, 176)), "\\Device\\Tape48", exists_ntdev, S_IFBLK, true}, - {"/dev/nst49", BRACK(FHDEV(DEV_TAPE_MAJOR, 177)), "\\Device\\Tape49", exists_ntdev, S_IFBLK, true}, - {"/dev/nst50", BRACK(FHDEV(DEV_TAPE_MAJOR, 178)), "\\Device\\Tape50", exists_ntdev, S_IFBLK, true}, - {"/dev/nst51", BRACK(FHDEV(DEV_TAPE_MAJOR, 179)), "\\Device\\Tape51", exists_ntdev, S_IFBLK, true}, - {"/dev/nst52", BRACK(FHDEV(DEV_TAPE_MAJOR, 180)), "\\Device\\Tape52", exists_ntdev, S_IFBLK, true}, - {"/dev/nst53", BRACK(FHDEV(DEV_TAPE_MAJOR, 181)), "\\Device\\Tape53", exists_ntdev, S_IFBLK, true}, - {"/dev/nst54", BRACK(FHDEV(DEV_TAPE_MAJOR, 182)), "\\Device\\Tape54", exists_ntdev, S_IFBLK, true}, - {"/dev/nst55", BRACK(FHDEV(DEV_TAPE_MAJOR, 183)), "\\Device\\Tape55", exists_ntdev, S_IFBLK, true}, - {"/dev/nst56", BRACK(FHDEV(DEV_TAPE_MAJOR, 184)), "\\Device\\Tape56", exists_ntdev, S_IFBLK, true}, - {"/dev/nst57", BRACK(FHDEV(DEV_TAPE_MAJOR, 185)), "\\Device\\Tape57", exists_ntdev, S_IFBLK, true}, - {"/dev/nst58", BRACK(FHDEV(DEV_TAPE_MAJOR, 186)), "\\Device\\Tape58", exists_ntdev, S_IFBLK, true}, - {"/dev/nst59", BRACK(FHDEV(DEV_TAPE_MAJOR, 187)), "\\Device\\Tape59", exists_ntdev, S_IFBLK, true}, - {"/dev/nst60", BRACK(FHDEV(DEV_TAPE_MAJOR, 188)), "\\Device\\Tape60", exists_ntdev, S_IFBLK, true}, - {"/dev/nst61", BRACK(FHDEV(DEV_TAPE_MAJOR, 189)), "\\Device\\Tape61", exists_ntdev, S_IFBLK, true}, - {"/dev/nst62", BRACK(FHDEV(DEV_TAPE_MAJOR, 190)), "\\Device\\Tape62", exists_ntdev, S_IFBLK, true}, - {"/dev/nst63", BRACK(FHDEV(DEV_TAPE_MAJOR, 191)), "\\Device\\Tape63", exists_ntdev, S_IFBLK, true}, - {"/dev/nst64", BRACK(FHDEV(DEV_TAPE_MAJOR, 192)), "\\Device\\Tape64", exists_ntdev, S_IFBLK, true}, - {"/dev/nst65", BRACK(FHDEV(DEV_TAPE_MAJOR, 193)), "\\Device\\Tape65", exists_ntdev, S_IFBLK, true}, - {"/dev/nst66", BRACK(FHDEV(DEV_TAPE_MAJOR, 194)), "\\Device\\Tape66", exists_ntdev, S_IFBLK, true}, - {"/dev/nst67", BRACK(FHDEV(DEV_TAPE_MAJOR, 195)), "\\Device\\Tape67", exists_ntdev, S_IFBLK, true}, - {"/dev/nst68", BRACK(FHDEV(DEV_TAPE_MAJOR, 196)), "\\Device\\Tape68", exists_ntdev, S_IFBLK, true}, - {"/dev/nst69", BRACK(FHDEV(DEV_TAPE_MAJOR, 197)), "\\Device\\Tape69", exists_ntdev, S_IFBLK, true}, - {"/dev/nst70", BRACK(FHDEV(DEV_TAPE_MAJOR, 198)), "\\Device\\Tape70", exists_ntdev, S_IFBLK, true}, - {"/dev/nst71", BRACK(FHDEV(DEV_TAPE_MAJOR, 199)), "\\Device\\Tape71", exists_ntdev, S_IFBLK, true}, - {"/dev/nst72", BRACK(FHDEV(DEV_TAPE_MAJOR, 200)), "\\Device\\Tape72", exists_ntdev, S_IFBLK, true}, - {"/dev/nst73", BRACK(FHDEV(DEV_TAPE_MAJOR, 201)), "\\Device\\Tape73", exists_ntdev, S_IFBLK, true}, - {"/dev/nst74", BRACK(FHDEV(DEV_TAPE_MAJOR, 202)), "\\Device\\Tape74", exists_ntdev, S_IFBLK, true}, - {"/dev/nst75", BRACK(FHDEV(DEV_TAPE_MAJOR, 203)), "\\Device\\Tape75", exists_ntdev, S_IFBLK, true}, - {"/dev/nst76", BRACK(FHDEV(DEV_TAPE_MAJOR, 204)), "\\Device\\Tape76", exists_ntdev, S_IFBLK, true}, - {"/dev/nst77", BRACK(FHDEV(DEV_TAPE_MAJOR, 205)), "\\Device\\Tape77", exists_ntdev, S_IFBLK, true}, - {"/dev/nst78", BRACK(FHDEV(DEV_TAPE_MAJOR, 206)), "\\Device\\Tape78", exists_ntdev, S_IFBLK, true}, - {"/dev/nst79", BRACK(FHDEV(DEV_TAPE_MAJOR, 207)), "\\Device\\Tape79", exists_ntdev, S_IFBLK, true}, - {"/dev/nst80", BRACK(FHDEV(DEV_TAPE_MAJOR, 208)), "\\Device\\Tape80", exists_ntdev, S_IFBLK, true}, - {"/dev/nst81", BRACK(FHDEV(DEV_TAPE_MAJOR, 209)), "\\Device\\Tape81", exists_ntdev, S_IFBLK, true}, - {"/dev/nst82", BRACK(FHDEV(DEV_TAPE_MAJOR, 210)), "\\Device\\Tape82", exists_ntdev, S_IFBLK, true}, - {"/dev/nst83", BRACK(FHDEV(DEV_TAPE_MAJOR, 211)), "\\Device\\Tape83", exists_ntdev, S_IFBLK, true}, - {"/dev/nst84", BRACK(FHDEV(DEV_TAPE_MAJOR, 212)), "\\Device\\Tape84", exists_ntdev, S_IFBLK, true}, - {"/dev/nst85", BRACK(FHDEV(DEV_TAPE_MAJOR, 213)), "\\Device\\Tape85", exists_ntdev, S_IFBLK, true}, - {"/dev/nst86", BRACK(FHDEV(DEV_TAPE_MAJOR, 214)), "\\Device\\Tape86", exists_ntdev, S_IFBLK, true}, - {"/dev/nst87", BRACK(FHDEV(DEV_TAPE_MAJOR, 215)), "\\Device\\Tape87", exists_ntdev, S_IFBLK, true}, - {"/dev/nst88", BRACK(FHDEV(DEV_TAPE_MAJOR, 216)), "\\Device\\Tape88", exists_ntdev, S_IFBLK, true}, - {"/dev/nst89", BRACK(FHDEV(DEV_TAPE_MAJOR, 217)), "\\Device\\Tape89", exists_ntdev, S_IFBLK, true}, - {"/dev/nst90", BRACK(FHDEV(DEV_TAPE_MAJOR, 218)), "\\Device\\Tape90", exists_ntdev, S_IFBLK, true}, - {"/dev/nst91", BRACK(FHDEV(DEV_TAPE_MAJOR, 219)), "\\Device\\Tape91", exists_ntdev, S_IFBLK, true}, - {"/dev/nst92", BRACK(FHDEV(DEV_TAPE_MAJOR, 220)), "\\Device\\Tape92", exists_ntdev, S_IFBLK, true}, - {"/dev/nst93", BRACK(FHDEV(DEV_TAPE_MAJOR, 221)), "\\Device\\Tape93", exists_ntdev, S_IFBLK, true}, - {"/dev/nst94", BRACK(FHDEV(DEV_TAPE_MAJOR, 222)), "\\Device\\Tape94", exists_ntdev, S_IFBLK, true}, - {"/dev/nst95", BRACK(FHDEV(DEV_TAPE_MAJOR, 223)), "\\Device\\Tape95", exists_ntdev, S_IFBLK, true}, - {"/dev/nst96", BRACK(FHDEV(DEV_TAPE_MAJOR, 224)), "\\Device\\Tape96", exists_ntdev, S_IFBLK, true}, - {"/dev/nst97", BRACK(FHDEV(DEV_TAPE_MAJOR, 225)), "\\Device\\Tape97", exists_ntdev, S_IFBLK, true}, - {"/dev/nst98", BRACK(FHDEV(DEV_TAPE_MAJOR, 226)), "\\Device\\Tape98", exists_ntdev, S_IFBLK, true}, - {"/dev/nst99", BRACK(FHDEV(DEV_TAPE_MAJOR, 227)), "\\Device\\Tape99", exists_ntdev, S_IFBLK, true}, - {"/dev/nst100", BRACK(FHDEV(DEV_TAPE_MAJOR, 228)), "\\Device\\Tape100", exists_ntdev, S_IFBLK, true}, - {"/dev/nst101", BRACK(FHDEV(DEV_TAPE_MAJOR, 229)), "\\Device\\Tape101", exists_ntdev, S_IFBLK, true}, - {"/dev/nst102", BRACK(FHDEV(DEV_TAPE_MAJOR, 230)), "\\Device\\Tape102", exists_ntdev, S_IFBLK, true}, - {"/dev/nst103", BRACK(FHDEV(DEV_TAPE_MAJOR, 231)), "\\Device\\Tape103", exists_ntdev, S_IFBLK, true}, - {"/dev/nst104", BRACK(FHDEV(DEV_TAPE_MAJOR, 232)), "\\Device\\Tape104", exists_ntdev, S_IFBLK, true}, - {"/dev/nst105", BRACK(FHDEV(DEV_TAPE_MAJOR, 233)), "\\Device\\Tape105", exists_ntdev, S_IFBLK, true}, - {"/dev/nst106", BRACK(FHDEV(DEV_TAPE_MAJOR, 234)), "\\Device\\Tape106", exists_ntdev, S_IFBLK, true}, - {"/dev/nst107", BRACK(FHDEV(DEV_TAPE_MAJOR, 235)), "\\Device\\Tape107", exists_ntdev, S_IFBLK, true}, - {"/dev/nst108", BRACK(FHDEV(DEV_TAPE_MAJOR, 236)), "\\Device\\Tape108", exists_ntdev, S_IFBLK, true}, - {"/dev/nst109", BRACK(FHDEV(DEV_TAPE_MAJOR, 237)), "\\Device\\Tape109", exists_ntdev, S_IFBLK, true}, - {"/dev/nst110", BRACK(FHDEV(DEV_TAPE_MAJOR, 238)), "\\Device\\Tape110", exists_ntdev, S_IFBLK, true}, - {"/dev/nst111", BRACK(FHDEV(DEV_TAPE_MAJOR, 239)), "\\Device\\Tape111", exists_ntdev, S_IFBLK, true}, - {"/dev/nst112", BRACK(FHDEV(DEV_TAPE_MAJOR, 240)), "\\Device\\Tape112", exists_ntdev, S_IFBLK, true}, - {"/dev/nst113", BRACK(FHDEV(DEV_TAPE_MAJOR, 241)), "\\Device\\Tape113", exists_ntdev, S_IFBLK, true}, - {"/dev/nst114", BRACK(FHDEV(DEV_TAPE_MAJOR, 242)), "\\Device\\Tape114", exists_ntdev, S_IFBLK, true}, - {"/dev/nst115", BRACK(FHDEV(DEV_TAPE_MAJOR, 243)), "\\Device\\Tape115", exists_ntdev, S_IFBLK, true}, - {"/dev/nst116", BRACK(FHDEV(DEV_TAPE_MAJOR, 244)), "\\Device\\Tape116", exists_ntdev, S_IFBLK, true}, - {"/dev/nst117", BRACK(FHDEV(DEV_TAPE_MAJOR, 245)), "\\Device\\Tape117", exists_ntdev, S_IFBLK, true}, - {"/dev/nst118", BRACK(FHDEV(DEV_TAPE_MAJOR, 246)), "\\Device\\Tape118", exists_ntdev, S_IFBLK, true}, - {"/dev/nst119", BRACK(FHDEV(DEV_TAPE_MAJOR, 247)), "\\Device\\Tape119", exists_ntdev, S_IFBLK, true}, - {"/dev/nst120", BRACK(FHDEV(DEV_TAPE_MAJOR, 248)), "\\Device\\Tape120", exists_ntdev, S_IFBLK, true}, - {"/dev/nst121", BRACK(FHDEV(DEV_TAPE_MAJOR, 249)), "\\Device\\Tape121", exists_ntdev, S_IFBLK, true}, - {"/dev/nst122", BRACK(FHDEV(DEV_TAPE_MAJOR, 250)), "\\Device\\Tape122", exists_ntdev, S_IFBLK, true}, - {"/dev/nst123", BRACK(FHDEV(DEV_TAPE_MAJOR, 251)), "\\Device\\Tape123", exists_ntdev, S_IFBLK, true}, - {"/dev/nst124", BRACK(FHDEV(DEV_TAPE_MAJOR, 252)), "\\Device\\Tape124", exists_ntdev, S_IFBLK, true}, - {"/dev/nst125", BRACK(FHDEV(DEV_TAPE_MAJOR, 253)), "\\Device\\Tape125", exists_ntdev, S_IFBLK, true}, - {"/dev/nst126", BRACK(FHDEV(DEV_TAPE_MAJOR, 254)), "\\Device\\Tape126", exists_ntdev, S_IFBLK, true}, - {"/dev/nst127", BRACK(FHDEV(DEV_TAPE_MAJOR, 255)), "\\Device\\Tape127", exists_ntdev, S_IFBLK, true}, + {"/dev/nst0", BRACK(FHDEV(DEV_TAPE_MAJOR, 128)), "\\Device\\Tape0", exists_ntdev, S_IFCHR, true}, + {"/dev/nst1", BRACK(FHDEV(DEV_TAPE_MAJOR, 129)), "\\Device\\Tape1", exists_ntdev, S_IFCHR, true}, + {"/dev/nst2", BRACK(FHDEV(DEV_TAPE_MAJOR, 130)), "\\Device\\Tape2", exists_ntdev, S_IFCHR, true}, + {"/dev/nst3", BRACK(FHDEV(DEV_TAPE_MAJOR, 131)), "\\Device\\Tape3", exists_ntdev, S_IFCHR, true}, + {"/dev/nst4", BRACK(FHDEV(DEV_TAPE_MAJOR, 132)), "\\Device\\Tape4", exists_ntdev, S_IFCHR, true}, + {"/dev/nst5", BRACK(FHDEV(DEV_TAPE_MAJOR, 133)), "\\Device\\Tape5", exists_ntdev, S_IFCHR, true}, + {"/dev/nst6", BRACK(FHDEV(DEV_TAPE_MAJOR, 134)), "\\Device\\Tape6", exists_ntdev, S_IFCHR, true}, + {"/dev/nst7", BRACK(FHDEV(DEV_TAPE_MAJOR, 135)), "\\Device\\Tape7", exists_ntdev, S_IFCHR, true}, + {"/dev/nst8", BRACK(FHDEV(DEV_TAPE_MAJOR, 136)), "\\Device\\Tape8", exists_ntdev, S_IFCHR, true}, + {"/dev/nst9", BRACK(FHDEV(DEV_TAPE_MAJOR, 137)), "\\Device\\Tape9", exists_ntdev, S_IFCHR, true}, + {"/dev/nst10", BRACK(FHDEV(DEV_TAPE_MAJOR, 138)), "\\Device\\Tape10", exists_ntdev, S_IFCHR, true}, + {"/dev/nst11", BRACK(FHDEV(DEV_TAPE_MAJOR, 139)), "\\Device\\Tape11", exists_ntdev, S_IFCHR, true}, + {"/dev/nst12", BRACK(FHDEV(DEV_TAPE_MAJOR, 140)), "\\Device\\Tape12", exists_ntdev, S_IFCHR, true}, + {"/dev/nst13", BRACK(FHDEV(DEV_TAPE_MAJOR, 141)), "\\Device\\Tape13", exists_ntdev, S_IFCHR, true}, + {"/dev/nst14", BRACK(FHDEV(DEV_TAPE_MAJOR, 142)), "\\Device\\Tape14", exists_ntdev, S_IFCHR, true}, + {"/dev/nst15", BRACK(FHDEV(DEV_TAPE_MAJOR, 143)), "\\Device\\Tape15", exists_ntdev, S_IFCHR, true}, + {"/dev/nst16", BRACK(FHDEV(DEV_TAPE_MAJOR, 144)), "\\Device\\Tape16", exists_ntdev, S_IFCHR, true}, + {"/dev/nst17", BRACK(FHDEV(DEV_TAPE_MAJOR, 145)), "\\Device\\Tape17", exists_ntdev, S_IFCHR, true}, + {"/dev/nst18", BRACK(FHDEV(DEV_TAPE_MAJOR, 146)), "\\Device\\Tape18", exists_ntdev, S_IFCHR, true}, + {"/dev/nst19", BRACK(FHDEV(DEV_TAPE_MAJOR, 147)), "\\Device\\Tape19", exists_ntdev, S_IFCHR, true}, + {"/dev/nst20", BRACK(FHDEV(DEV_TAPE_MAJOR, 148)), "\\Device\\Tape20", exists_ntdev, S_IFCHR, true}, + {"/dev/nst21", BRACK(FHDEV(DEV_TAPE_MAJOR, 149)), "\\Device\\Tape21", exists_ntdev, S_IFCHR, true}, + {"/dev/nst22", BRACK(FHDEV(DEV_TAPE_MAJOR, 150)), "\\Device\\Tape22", exists_ntdev, S_IFCHR, true}, + {"/dev/nst23", BRACK(FHDEV(DEV_TAPE_MAJOR, 151)), "\\Device\\Tape23", exists_ntdev, S_IFCHR, true}, + {"/dev/nst24", BRACK(FHDEV(DEV_TAPE_MAJOR, 152)), "\\Device\\Tape24", exists_ntdev, S_IFCHR, true}, + {"/dev/nst25", BRACK(FHDEV(DEV_TAPE_MAJOR, 153)), "\\Device\\Tape25", exists_ntdev, S_IFCHR, true}, + {"/dev/nst26", BRACK(FHDEV(DEV_TAPE_MAJOR, 154)), "\\Device\\Tape26", exists_ntdev, S_IFCHR, true}, + {"/dev/nst27", BRACK(FHDEV(DEV_TAPE_MAJOR, 155)), "\\Device\\Tape27", exists_ntdev, S_IFCHR, true}, + {"/dev/nst28", BRACK(FHDEV(DEV_TAPE_MAJOR, 156)), "\\Device\\Tape28", exists_ntdev, S_IFCHR, true}, + {"/dev/nst29", BRACK(FHDEV(DEV_TAPE_MAJOR, 157)), "\\Device\\Tape29", exists_ntdev, S_IFCHR, true}, + {"/dev/nst30", BRACK(FHDEV(DEV_TAPE_MAJOR, 158)), "\\Device\\Tape30", exists_ntdev, S_IFCHR, true}, + {"/dev/nst31", BRACK(FHDEV(DEV_TAPE_MAJOR, 159)), "\\Device\\Tape31", exists_ntdev, S_IFCHR, true}, + {"/dev/nst32", BRACK(FHDEV(DEV_TAPE_MAJOR, 160)), "\\Device\\Tape32", exists_ntdev, S_IFCHR, true}, + {"/dev/nst33", BRACK(FHDEV(DEV_TAPE_MAJOR, 161)), "\\Device\\Tape33", exists_ntdev, S_IFCHR, true}, + {"/dev/nst34", BRACK(FHDEV(DEV_TAPE_MAJOR, 162)), "\\Device\\Tape34", exists_ntdev, S_IFCHR, true}, + {"/dev/nst35", BRACK(FHDEV(DEV_TAPE_MAJOR, 163)), "\\Device\\Tape35", exists_ntdev, S_IFCHR, true}, + {"/dev/nst36", BRACK(FHDEV(DEV_TAPE_MAJOR, 164)), "\\Device\\Tape36", exists_ntdev, S_IFCHR, true}, + {"/dev/nst37", BRACK(FHDEV(DEV_TAPE_MAJOR, 165)), "\\Device\\Tape37", exists_ntdev, S_IFCHR, true}, + {"/dev/nst38", BRACK(FHDEV(DEV_TAPE_MAJOR, 166)), "\\Device\\Tape38", exists_ntdev, S_IFCHR, true}, + {"/dev/nst39", BRACK(FHDEV(DEV_TAPE_MAJOR, 167)), "\\Device\\Tape39", exists_ntdev, S_IFCHR, true}, + {"/dev/nst40", BRACK(FHDEV(DEV_TAPE_MAJOR, 168)), "\\Device\\Tape40", exists_ntdev, S_IFCHR, true}, + {"/dev/nst41", BRACK(FHDEV(DEV_TAPE_MAJOR, 169)), "\\Device\\Tape41", exists_ntdev, S_IFCHR, true}, + {"/dev/nst42", BRACK(FHDEV(DEV_TAPE_MAJOR, 170)), "\\Device\\Tape42", exists_ntdev, S_IFCHR, true}, + {"/dev/nst43", BRACK(FHDEV(DEV_TAPE_MAJOR, 171)), "\\Device\\Tape43", exists_ntdev, S_IFCHR, true}, + {"/dev/nst44", BRACK(FHDEV(DEV_TAPE_MAJOR, 172)), "\\Device\\Tape44", exists_ntdev, S_IFCHR, true}, + {"/dev/nst45", BRACK(FHDEV(DEV_TAPE_MAJOR, 173)), "\\Device\\Tape45", exists_ntdev, S_IFCHR, true}, + {"/dev/nst46", BRACK(FHDEV(DEV_TAPE_MAJOR, 174)), "\\Device\\Tape46", exists_ntdev, S_IFCHR, true}, + {"/dev/nst47", BRACK(FHDEV(DEV_TAPE_MAJOR, 175)), "\\Device\\Tape47", exists_ntdev, S_IFCHR, true}, + {"/dev/nst48", BRACK(FHDEV(DEV_TAPE_MAJOR, 176)), "\\Device\\Tape48", exists_ntdev, S_IFCHR, true}, + {"/dev/nst49", BRACK(FHDEV(DEV_TAPE_MAJOR, 177)), "\\Device\\Tape49", exists_ntdev, S_IFCHR, true}, + {"/dev/nst50", BRACK(FHDEV(DEV_TAPE_MAJOR, 178)), "\\Device\\Tape50", exists_ntdev, S_IFCHR, true}, + {"/dev/nst51", BRACK(FHDEV(DEV_TAPE_MAJOR, 179)), "\\Device\\Tape51", exists_ntdev, S_IFCHR, true}, + {"/dev/nst52", BRACK(FHDEV(DEV_TAPE_MAJOR, 180)), "\\Device\\Tape52", exists_ntdev, S_IFCHR, true}, + {"/dev/nst53", BRACK(FHDEV(DEV_TAPE_MAJOR, 181)), "\\Device\\Tape53", exists_ntdev, S_IFCHR, true}, + {"/dev/nst54", BRACK(FHDEV(DEV_TAPE_MAJOR, 182)), "\\Device\\Tape54", exists_ntdev, S_IFCHR, true}, + {"/dev/nst55", BRACK(FHDEV(DEV_TAPE_MAJOR, 183)), "\\Device\\Tape55", exists_ntdev, S_IFCHR, true}, + {"/dev/nst56", BRACK(FHDEV(DEV_TAPE_MAJOR, 184)), "\\Device\\Tape56", exists_ntdev, S_IFCHR, true}, + {"/dev/nst57", BRACK(FHDEV(DEV_TAPE_MAJOR, 185)), "\\Device\\Tape57", exists_ntdev, S_IFCHR, true}, + {"/dev/nst58", BRACK(FHDEV(DEV_TAPE_MAJOR, 186)), "\\Device\\Tape58", exists_ntdev, S_IFCHR, true}, + {"/dev/nst59", BRACK(FHDEV(DEV_TAPE_MAJOR, 187)), "\\Device\\Tape59", exists_ntdev, S_IFCHR, true}, + {"/dev/nst60", BRACK(FHDEV(DEV_TAPE_MAJOR, 188)), "\\Device\\Tape60", exists_ntdev, S_IFCHR, true}, + {"/dev/nst61", BRACK(FHDEV(DEV_TAPE_MAJOR, 189)), "\\Device\\Tape61", exists_ntdev, S_IFCHR, true}, + {"/dev/nst62", BRACK(FHDEV(DEV_TAPE_MAJOR, 190)), "\\Device\\Tape62", exists_ntdev, S_IFCHR, true}, + {"/dev/nst63", BRACK(FHDEV(DEV_TAPE_MAJOR, 191)), "\\Device\\Tape63", exists_ntdev, S_IFCHR, true}, + {"/dev/nst64", BRACK(FHDEV(DEV_TAPE_MAJOR, 192)), "\\Device\\Tape64", exists_ntdev, S_IFCHR, true}, + {"/dev/nst65", BRACK(FHDEV(DEV_TAPE_MAJOR, 193)), "\\Device\\Tape65", exists_ntdev, S_IFCHR, true}, + {"/dev/nst66", BRACK(FHDEV(DEV_TAPE_MAJOR, 194)), "\\Device\\Tape66", exists_ntdev, S_IFCHR, true}, + {"/dev/nst67", BRACK(FHDEV(DEV_TAPE_MAJOR, 195)), "\\Device\\Tape67", exists_ntdev, S_IFCHR, true}, + {"/dev/nst68", BRACK(FHDEV(DEV_TAPE_MAJOR, 196)), "\\Device\\Tape68", exists_ntdev, S_IFCHR, true}, + {"/dev/nst69", BRACK(FHDEV(DEV_TAPE_MAJOR, 197)), "\\Device\\Tape69", exists_ntdev, S_IFCHR, true}, + {"/dev/nst70", BRACK(FHDEV(DEV_TAPE_MAJOR, 198)), "\\Device\\Tape70", exists_ntdev, S_IFCHR, true}, + {"/dev/nst71", BRACK(FHDEV(DEV_TAPE_MAJOR, 199)), "\\Device\\Tape71", exists_ntdev, S_IFCHR, true}, + {"/dev/nst72", BRACK(FHDEV(DEV_TAPE_MAJOR, 200)), "\\Device\\Tape72", exists_ntdev, S_IFCHR, true}, + {"/dev/nst73", BRACK(FHDEV(DEV_TAPE_MAJOR, 201)), "\\Device\\Tape73", exists_ntdev, S_IFCHR, true}, + {"/dev/nst74", BRACK(FHDEV(DEV_TAPE_MAJOR, 202)), "\\Device\\Tape74", exists_ntdev, S_IFCHR, true}, + {"/dev/nst75", BRACK(FHDEV(DEV_TAPE_MAJOR, 203)), "\\Device\\Tape75", exists_ntdev, S_IFCHR, true}, + {"/dev/nst76", BRACK(FHDEV(DEV_TAPE_MAJOR, 204)), "\\Device\\Tape76", exists_ntdev, S_IFCHR, true}, + {"/dev/nst77", BRACK(FHDEV(DEV_TAPE_MAJOR, 205)), "\\Device\\Tape77", exists_ntdev, S_IFCHR, true}, + {"/dev/nst78", BRACK(FHDEV(DEV_TAPE_MAJOR, 206)), "\\Device\\Tape78", exists_ntdev, S_IFCHR, true}, + {"/dev/nst79", BRACK(FHDEV(DEV_TAPE_MAJOR, 207)), "\\Device\\Tape79", exists_ntdev, S_IFCHR, true}, + {"/dev/nst80", BRACK(FHDEV(DEV_TAPE_MAJOR, 208)), "\\Device\\Tape80", exists_ntdev, S_IFCHR, true}, + {"/dev/nst81", BRACK(FHDEV(DEV_TAPE_MAJOR, 209)), "\\Device\\Tape81", exists_ntdev, S_IFCHR, true}, + {"/dev/nst82", BRACK(FHDEV(DEV_TAPE_MAJOR, 210)), "\\Device\\Tape82", exists_ntdev, S_IFCHR, true}, + {"/dev/nst83", BRACK(FHDEV(DEV_TAPE_MAJOR, 211)), "\\Device\\Tape83", exists_ntdev, S_IFCHR, true}, + {"/dev/nst84", BRACK(FHDEV(DEV_TAPE_MAJOR, 212)), "\\Device\\Tape84", exists_ntdev, S_IFCHR, true}, + {"/dev/nst85", BRACK(FHDEV(DEV_TAPE_MAJOR, 213)), "\\Device\\Tape85", exists_ntdev, S_IFCHR, true}, + {"/dev/nst86", BRACK(FHDEV(DEV_TAPE_MAJOR, 214)), "\\Device\\Tape86", exists_ntdev, S_IFCHR, true}, + {"/dev/nst87", BRACK(FHDEV(DEV_TAPE_MAJOR, 215)), "\\Device\\Tape87", exists_ntdev, S_IFCHR, true}, + {"/dev/nst88", BRACK(FHDEV(DEV_TAPE_MAJOR, 216)), "\\Device\\Tape88", exists_ntdev, S_IFCHR, true}, + {"/dev/nst89", BRACK(FHDEV(DEV_TAPE_MAJOR, 217)), "\\Device\\Tape89", exists_ntdev, S_IFCHR, true}, + {"/dev/nst90", BRACK(FHDEV(DEV_TAPE_MAJOR, 218)), "\\Device\\Tape90", exists_ntdev, S_IFCHR, true}, + {"/dev/nst91", BRACK(FHDEV(DEV_TAPE_MAJOR, 219)), "\\Device\\Tape91", exists_ntdev, S_IFCHR, true}, + {"/dev/nst92", BRACK(FHDEV(DEV_TAPE_MAJOR, 220)), "\\Device\\Tape92", exists_ntdev, S_IFCHR, true}, + {"/dev/nst93", BRACK(FHDEV(DEV_TAPE_MAJOR, 221)), "\\Device\\Tape93", exists_ntdev, S_IFCHR, true}, + {"/dev/nst94", BRACK(FHDEV(DEV_TAPE_MAJOR, 222)), "\\Device\\Tape94", exists_ntdev, S_IFCHR, true}, + {"/dev/nst95", BRACK(FHDEV(DEV_TAPE_MAJOR, 223)), "\\Device\\Tape95", exists_ntdev, S_IFCHR, true}, + {"/dev/nst96", BRACK(FHDEV(DEV_TAPE_MAJOR, 224)), "\\Device\\Tape96", exists_ntdev, S_IFCHR, true}, + {"/dev/nst97", BRACK(FHDEV(DEV_TAPE_MAJOR, 225)), "\\Device\\Tape97", exists_ntdev, S_IFCHR, true}, + {"/dev/nst98", BRACK(FHDEV(DEV_TAPE_MAJOR, 226)), "\\Device\\Tape98", exists_ntdev, S_IFCHR, true}, + {"/dev/nst99", BRACK(FHDEV(DEV_TAPE_MAJOR, 227)), "\\Device\\Tape99", exists_ntdev, S_IFCHR, true}, + {"/dev/nst100", BRACK(FHDEV(DEV_TAPE_MAJOR, 228)), "\\Device\\Tape100", exists_ntdev, S_IFCHR, true}, + {"/dev/nst101", BRACK(FHDEV(DEV_TAPE_MAJOR, 229)), "\\Device\\Tape101", exists_ntdev, S_IFCHR, true}, + {"/dev/nst102", BRACK(FHDEV(DEV_TAPE_MAJOR, 230)), "\\Device\\Tape102", exists_ntdev, S_IFCHR, true}, + {"/dev/nst103", BRACK(FHDEV(DEV_TAPE_MAJOR, 231)), "\\Device\\Tape103", exists_ntdev, S_IFCHR, true}, + {"/dev/nst104", BRACK(FHDEV(DEV_TAPE_MAJOR, 232)), "\\Device\\Tape104", exists_ntdev, S_IFCHR, true}, + {"/dev/nst105", BRACK(FHDEV(DEV_TAPE_MAJOR, 233)), "\\Device\\Tape105", exists_ntdev, S_IFCHR, true}, + {"/dev/nst106", BRACK(FHDEV(DEV_TAPE_MAJOR, 234)), "\\Device\\Tape106", exists_ntdev, S_IFCHR, true}, + {"/dev/nst107", BRACK(FHDEV(DEV_TAPE_MAJOR, 235)), "\\Device\\Tape107", exists_ntdev, S_IFCHR, true}, + {"/dev/nst108", BRACK(FHDEV(DEV_TAPE_MAJOR, 236)), "\\Device\\Tape108", exists_ntdev, S_IFCHR, true}, + {"/dev/nst109", BRACK(FHDEV(DEV_TAPE_MAJOR, 237)), "\\Device\\Tape109", exists_ntdev, S_IFCHR, true}, + {"/dev/nst110", BRACK(FHDEV(DEV_TAPE_MAJOR, 238)), "\\Device\\Tape110", exists_ntdev, S_IFCHR, true}, + {"/dev/nst111", BRACK(FHDEV(DEV_TAPE_MAJOR, 239)), "\\Device\\Tape111", exists_ntdev, S_IFCHR, true}, + {"/dev/nst112", BRACK(FHDEV(DEV_TAPE_MAJOR, 240)), "\\Device\\Tape112", exists_ntdev, S_IFCHR, true}, + {"/dev/nst113", BRACK(FHDEV(DEV_TAPE_MAJOR, 241)), "\\Device\\Tape113", exists_ntdev, S_IFCHR, true}, + {"/dev/nst114", BRACK(FHDEV(DEV_TAPE_MAJOR, 242)), "\\Device\\Tape114", exists_ntdev, S_IFCHR, true}, + {"/dev/nst115", BRACK(FHDEV(DEV_TAPE_MAJOR, 243)), "\\Device\\Tape115", exists_ntdev, S_IFCHR, true}, + {"/dev/nst116", BRACK(FHDEV(DEV_TAPE_MAJOR, 244)), "\\Device\\Tape116", exists_ntdev, S_IFCHR, true}, + {"/dev/nst117", BRACK(FHDEV(DEV_TAPE_MAJOR, 245)), "\\Device\\Tape117", exists_ntdev, S_IFCHR, true}, + {"/dev/nst118", BRACK(FHDEV(DEV_TAPE_MAJOR, 246)), "\\Device\\Tape118", exists_ntdev, S_IFCHR, true}, + {"/dev/nst119", BRACK(FHDEV(DEV_TAPE_MAJOR, 247)), "\\Device\\Tape119", exists_ntdev, S_IFCHR, true}, + {"/dev/nst120", BRACK(FHDEV(DEV_TAPE_MAJOR, 248)), "\\Device\\Tape120", exists_ntdev, S_IFCHR, true}, + {"/dev/nst121", BRACK(FHDEV(DEV_TAPE_MAJOR, 249)), "\\Device\\Tape121", exists_ntdev, S_IFCHR, true}, + {"/dev/nst122", BRACK(FHDEV(DEV_TAPE_MAJOR, 250)), "\\Device\\Tape122", exists_ntdev, S_IFCHR, true}, + {"/dev/nst123", BRACK(FHDEV(DEV_TAPE_MAJOR, 251)), "\\Device\\Tape123", exists_ntdev, S_IFCHR, true}, + {"/dev/nst124", BRACK(FHDEV(DEV_TAPE_MAJOR, 252)), "\\Device\\Tape124", exists_ntdev, S_IFCHR, true}, + {"/dev/nst125", BRACK(FHDEV(DEV_TAPE_MAJOR, 253)), "\\Device\\Tape125", exists_ntdev, S_IFCHR, true}, + {"/dev/nst126", BRACK(FHDEV(DEV_TAPE_MAJOR, 254)), "\\Device\\Tape126", exists_ntdev, S_IFCHR, true}, + {"/dev/nst127", BRACK(FHDEV(DEV_TAPE_MAJOR, 255)), "\\Device\\Tape127", exists_ntdev, S_IFCHR, true}, {"/dev/null", BRACK(FH_NULL), "\\Device\\Null", exists_ntdev, S_IFCHR, true}, {"/dev/ptmx", BRACK(FH_PTMX), "/dev/ptmx", exists, S_IFCHR, true}, {"/dev/pty0", BRACK(FHDEV(DEV_PTYS_MAJOR, 0)), "/dev/pty0", exists_pty, S_IFCHR, true}, @@ -632,134 +632,134 @@ const _RDATA _device dev_storage[] = {"/dev/sr13", BRACK(FHDEV(DEV_CDROM_MAJOR, 13)), "\\Device\\CdRom13", exists_ntdev, S_IFBLK, true}, {"/dev/sr14", BRACK(FHDEV(DEV_CDROM_MAJOR, 14)), "\\Device\\CdRom14", exists_ntdev, S_IFBLK, true}, {"/dev/sr15", BRACK(FHDEV(DEV_CDROM_MAJOR, 15)), "\\Device\\CdRom15", exists_ntdev, S_IFBLK, true}, - {"/dev/st0", BRACK(FHDEV(DEV_TAPE_MAJOR, 0)), "\\Device\\Tape0", exists_ntdev, S_IFBLK, true}, - {"/dev/st1", BRACK(FHDEV(DEV_TAPE_MAJOR, 1)), "\\Device\\Tape1", exists_ntdev, S_IFBLK, true}, - {"/dev/st2", BRACK(FHDEV(DEV_TAPE_MAJOR, 2)), "\\Device\\Tape2", exists_ntdev, S_IFBLK, true}, - {"/dev/st3", BRACK(FHDEV(DEV_TAPE_MAJOR, 3)), "\\Device\\Tape3", exists_ntdev, S_IFBLK, true}, - {"/dev/st4", BRACK(FHDEV(DEV_TAPE_MAJOR, 4)), "\\Device\\Tape4", exists_ntdev, S_IFBLK, true}, - {"/dev/st5", BRACK(FHDEV(DEV_TAPE_MAJOR, 5)), "\\Device\\Tape5", exists_ntdev, S_IFBLK, true}, - {"/dev/st6", BRACK(FHDEV(DEV_TAPE_MAJOR, 6)), "\\Device\\Tape6", exists_ntdev, S_IFBLK, true}, - {"/dev/st7", BRACK(FHDEV(DEV_TAPE_MAJOR, 7)), "\\Device\\Tape7", exists_ntdev, S_IFBLK, true}, - {"/dev/st8", BRACK(FHDEV(DEV_TAPE_MAJOR, 8)), "\\Device\\Tape8", exists_ntdev, S_IFBLK, true}, - {"/dev/st9", BRACK(FHDEV(DEV_TAPE_MAJOR, 9)), "\\Device\\Tape9", exists_ntdev, S_IFBLK, true}, - {"/dev/st10", BRACK(FHDEV(DEV_TAPE_MAJOR, 10)), "\\Device\\Tape10", exists_ntdev, S_IFBLK, true}, - {"/dev/st11", BRACK(FHDEV(DEV_TAPE_MAJOR, 11)), "\\Device\\Tape11", exists_ntdev, S_IFBLK, true}, - {"/dev/st12", BRACK(FHDEV(DEV_TAPE_MAJOR, 12)), "\\Device\\Tape12", exists_ntdev, S_IFBLK, true}, - {"/dev/st13", BRACK(FHDEV(DEV_TAPE_MAJOR, 13)), "\\Device\\Tape13", exists_ntdev, S_IFBLK, true}, - {"/dev/st14", BRACK(FHDEV(DEV_TAPE_MAJOR, 14)), "\\Device\\Tape14", exists_ntdev, S_IFBLK, true}, - {"/dev/st15", BRACK(FHDEV(DEV_TAPE_MAJOR, 15)), "\\Device\\Tape15", exists_ntdev, S_IFBLK, true}, - {"/dev/st16", BRACK(FHDEV(DEV_TAPE_MAJOR, 16)), "\\Device\\Tape16", exists_ntdev, S_IFBLK, true}, - {"/dev/st17", BRACK(FHDEV(DEV_TAPE_MAJOR, 17)), "\\Device\\Tape17", exists_ntdev, S_IFBLK, true}, - {"/dev/st18", BRACK(FHDEV(DEV_TAPE_MAJOR, 18)), "\\Device\\Tape18", exists_ntdev, S_IFBLK, true}, - {"/dev/st19", BRACK(FHDEV(DEV_TAPE_MAJOR, 19)), "\\Device\\Tape19", exists_ntdev, S_IFBLK, true}, - {"/dev/st20", BRACK(FHDEV(DEV_TAPE_MAJOR, 20)), "\\Device\\Tape20", exists_ntdev, S_IFBLK, true}, - {"/dev/st21", BRACK(FHDEV(DEV_TAPE_MAJOR, 21)), "\\Device\\Tape21", exists_ntdev, S_IFBLK, true}, - {"/dev/st22", BRACK(FHDEV(DEV_TAPE_MAJOR, 22)), "\\Device\\Tape22", exists_ntdev, S_IFBLK, true}, - {"/dev/st23", BRACK(FHDEV(DEV_TAPE_MAJOR, 23)), "\\Device\\Tape23", exists_ntdev, S_IFBLK, true}, - {"/dev/st24", BRACK(FHDEV(DEV_TAPE_MAJOR, 24)), "\\Device\\Tape24", exists_ntdev, S_IFBLK, true}, - {"/dev/st25", BRACK(FHDEV(DEV_TAPE_MAJOR, 25)), "\\Device\\Tape25", exists_ntdev, S_IFBLK, true}, - {"/dev/st26", BRACK(FHDEV(DEV_TAPE_MAJOR, 26)), "\\Device\\Tape26", exists_ntdev, S_IFBLK, true}, - {"/dev/st27", BRACK(FHDEV(DEV_TAPE_MAJOR, 27)), "\\Device\\Tape27", exists_ntdev, S_IFBLK, true}, - {"/dev/st28", BRACK(FHDEV(DEV_TAPE_MAJOR, 28)), "\\Device\\Tape28", exists_ntdev, S_IFBLK, true}, - {"/dev/st29", BRACK(FHDEV(DEV_TAPE_MAJOR, 29)), "\\Device\\Tape29", exists_ntdev, S_IFBLK, true}, - {"/dev/st30", BRACK(FHDEV(DEV_TAPE_MAJOR, 30)), "\\Device\\Tape30", exists_ntdev, S_IFBLK, true}, - {"/dev/st31", BRACK(FHDEV(DEV_TAPE_MAJOR, 31)), "\\Device\\Tape31", exists_ntdev, S_IFBLK, true}, - {"/dev/st32", BRACK(FHDEV(DEV_TAPE_MAJOR, 32)), "\\Device\\Tape32", exists_ntdev, S_IFBLK, true}, - {"/dev/st33", BRACK(FHDEV(DEV_TAPE_MAJOR, 33)), "\\Device\\Tape33", exists_ntdev, S_IFBLK, true}, - {"/dev/st34", BRACK(FHDEV(DEV_TAPE_MAJOR, 34)), "\\Device\\Tape34", exists_ntdev, S_IFBLK, true}, - {"/dev/st35", BRACK(FHDEV(DEV_TAPE_MAJOR, 35)), "\\Device\\Tape35", exists_ntdev, S_IFBLK, true}, - {"/dev/st36", BRACK(FHDEV(DEV_TAPE_MAJOR, 36)), "\\Device\\Tape36", exists_ntdev, S_IFBLK, true}, - {"/dev/st37", BRACK(FHDEV(DEV_TAPE_MAJOR, 37)), "\\Device\\Tape37", exists_ntdev, S_IFBLK, true}, - {"/dev/st38", BRACK(FHDEV(DEV_TAPE_MAJOR, 38)), "\\Device\\Tape38", exists_ntdev, S_IFBLK, true}, - {"/dev/st39", BRACK(FHDEV(DEV_TAPE_MAJOR, 39)), "\\Device\\Tape39", exists_ntdev, S_IFBLK, true}, - {"/dev/st40", BRACK(FHDEV(DEV_TAPE_MAJOR, 40)), "\\Device\\Tape40", exists_ntdev, S_IFBLK, true}, - {"/dev/st41", BRACK(FHDEV(DEV_TAPE_MAJOR, 41)), "\\Device\\Tape41", exists_ntdev, S_IFBLK, true}, - {"/dev/st42", BRACK(FHDEV(DEV_TAPE_MAJOR, 42)), "\\Device\\Tape42", exists_ntdev, S_IFBLK, true}, - {"/dev/st43", BRACK(FHDEV(DEV_TAPE_MAJOR, 43)), "\\Device\\Tape43", exists_ntdev, S_IFBLK, true}, - {"/dev/st44", BRACK(FHDEV(DEV_TAPE_MAJOR, 44)), "\\Device\\Tape44", exists_ntdev, S_IFBLK, true}, - {"/dev/st45", BRACK(FHDEV(DEV_TAPE_MAJOR, 45)), "\\Device\\Tape45", exists_ntdev, S_IFBLK, true}, - {"/dev/st46", BRACK(FHDEV(DEV_TAPE_MAJOR, 46)), "\\Device\\Tape46", exists_ntdev, S_IFBLK, true}, - {"/dev/st47", BRACK(FHDEV(DEV_TAPE_MAJOR, 47)), "\\Device\\Tape47", exists_ntdev, S_IFBLK, true}, - {"/dev/st48", BRACK(FHDEV(DEV_TAPE_MAJOR, 48)), "\\Device\\Tape48", exists_ntdev, S_IFBLK, true}, - {"/dev/st49", BRACK(FHDEV(DEV_TAPE_MAJOR, 49)), "\\Device\\Tape49", exists_ntdev, S_IFBLK, true}, - {"/dev/st50", BRACK(FHDEV(DEV_TAPE_MAJOR, 50)), "\\Device\\Tape50", exists_ntdev, S_IFBLK, true}, - {"/dev/st51", BRACK(FHDEV(DEV_TAPE_MAJOR, 51)), "\\Device\\Tape51", exists_ntdev, S_IFBLK, true}, - {"/dev/st52", BRACK(FHDEV(DEV_TAPE_MAJOR, 52)), "\\Device\\Tape52", exists_ntdev, S_IFBLK, true}, - {"/dev/st53", BRACK(FHDEV(DEV_TAPE_MAJOR, 53)), "\\Device\\Tape53", exists_ntdev, S_IFBLK, true}, - {"/dev/st54", BRACK(FHDEV(DEV_TAPE_MAJOR, 54)), "\\Device\\Tape54", exists_ntdev, S_IFBLK, true}, - {"/dev/st55", BRACK(FHDEV(DEV_TAPE_MAJOR, 55)), "\\Device\\Tape55", exists_ntdev, S_IFBLK, true}, - {"/dev/st56", BRACK(FHDEV(DEV_TAPE_MAJOR, 56)), "\\Device\\Tape56", exists_ntdev, S_IFBLK, true}, - {"/dev/st57", BRACK(FHDEV(DEV_TAPE_MAJOR, 57)), "\\Device\\Tape57", exists_ntdev, S_IFBLK, true}, - {"/dev/st58", BRACK(FHDEV(DEV_TAPE_MAJOR, 58)), "\\Device\\Tape58", exists_ntdev, S_IFBLK, true}, - {"/dev/st59", BRACK(FHDEV(DEV_TAPE_MAJOR, 59)), "\\Device\\Tape59", exists_ntdev, S_IFBLK, true}, - {"/dev/st60", BRACK(FHDEV(DEV_TAPE_MAJOR, 60)), "\\Device\\Tape60", exists_ntdev, S_IFBLK, true}, - {"/dev/st61", BRACK(FHDEV(DEV_TAPE_MAJOR, 61)), "\\Device\\Tape61", exists_ntdev, S_IFBLK, true}, - {"/dev/st62", BRACK(FHDEV(DEV_TAPE_MAJOR, 62)), "\\Device\\Tape62", exists_ntdev, S_IFBLK, true}, - {"/dev/st63", BRACK(FHDEV(DEV_TAPE_MAJOR, 63)), "\\Device\\Tape63", exists_ntdev, S_IFBLK, true}, - {"/dev/st64", BRACK(FHDEV(DEV_TAPE_MAJOR, 64)), "\\Device\\Tape64", exists_ntdev, S_IFBLK, true}, - {"/dev/st65", BRACK(FHDEV(DEV_TAPE_MAJOR, 65)), "\\Device\\Tape65", exists_ntdev, S_IFBLK, true}, - {"/dev/st66", BRACK(FHDEV(DEV_TAPE_MAJOR, 66)), "\\Device\\Tape66", exists_ntdev, S_IFBLK, true}, - {"/dev/st67", BRACK(FHDEV(DEV_TAPE_MAJOR, 67)), "\\Device\\Tape67", exists_ntdev, S_IFBLK, true}, - {"/dev/st68", BRACK(FHDEV(DEV_TAPE_MAJOR, 68)), "\\Device\\Tape68", exists_ntdev, S_IFBLK, true}, - {"/dev/st69", BRACK(FHDEV(DEV_TAPE_MAJOR, 69)), "\\Device\\Tape69", exists_ntdev, S_IFBLK, true}, - {"/dev/st70", BRACK(FHDEV(DEV_TAPE_MAJOR, 70)), "\\Device\\Tape70", exists_ntdev, S_IFBLK, true}, - {"/dev/st71", BRACK(FHDEV(DEV_TAPE_MAJOR, 71)), "\\Device\\Tape71", exists_ntdev, S_IFBLK, true}, - {"/dev/st72", BRACK(FHDEV(DEV_TAPE_MAJOR, 72)), "\\Device\\Tape72", exists_ntdev, S_IFBLK, true}, - {"/dev/st73", BRACK(FHDEV(DEV_TAPE_MAJOR, 73)), "\\Device\\Tape73", exists_ntdev, S_IFBLK, true}, - {"/dev/st74", BRACK(FHDEV(DEV_TAPE_MAJOR, 74)), "\\Device\\Tape74", exists_ntdev, S_IFBLK, true}, - {"/dev/st75", BRACK(FHDEV(DEV_TAPE_MAJOR, 75)), "\\Device\\Tape75", exists_ntdev, S_IFBLK, true}, - {"/dev/st76", BRACK(FHDEV(DEV_TAPE_MAJOR, 76)), "\\Device\\Tape76", exists_ntdev, S_IFBLK, true}, - {"/dev/st77", BRACK(FHDEV(DEV_TAPE_MAJOR, 77)), "\\Device\\Tape77", exists_ntdev, S_IFBLK, true}, - {"/dev/st78", BRACK(FHDEV(DEV_TAPE_MAJOR, 78)), "\\Device\\Tape78", exists_ntdev, S_IFBLK, true}, - {"/dev/st79", BRACK(FHDEV(DEV_TAPE_MAJOR, 79)), "\\Device\\Tape79", exists_ntdev, S_IFBLK, true}, - {"/dev/st80", BRACK(FHDEV(DEV_TAPE_MAJOR, 80)), "\\Device\\Tape80", exists_ntdev, S_IFBLK, true}, - {"/dev/st81", BRACK(FHDEV(DEV_TAPE_MAJOR, 81)), "\\Device\\Tape81", exists_ntdev, S_IFBLK, true}, - {"/dev/st82", BRACK(FHDEV(DEV_TAPE_MAJOR, 82)), "\\Device\\Tape82", exists_ntdev, S_IFBLK, true}, - {"/dev/st83", BRACK(FHDEV(DEV_TAPE_MAJOR, 83)), "\\Device\\Tape83", exists_ntdev, S_IFBLK, true}, - {"/dev/st84", BRACK(FHDEV(DEV_TAPE_MAJOR, 84)), "\\Device\\Tape84", exists_ntdev, S_IFBLK, true}, - {"/dev/st85", BRACK(FHDEV(DEV_TAPE_MAJOR, 85)), "\\Device\\Tape85", exists_ntdev, S_IFBLK, true}, - {"/dev/st86", BRACK(FHDEV(DEV_TAPE_MAJOR, 86)), "\\Device\\Tape86", exists_ntdev, S_IFBLK, true}, - {"/dev/st87", BRACK(FHDEV(DEV_TAPE_MAJOR, 87)), "\\Device\\Tape87", exists_ntdev, S_IFBLK, true}, - {"/dev/st88", BRACK(FHDEV(DEV_TAPE_MAJOR, 88)), "\\Device\\Tape88", exists_ntdev, S_IFBLK, true}, - {"/dev/st89", BRACK(FHDEV(DEV_TAPE_MAJOR, 89)), "\\Device\\Tape89", exists_ntdev, S_IFBLK, true}, - {"/dev/st90", BRACK(FHDEV(DEV_TAPE_MAJOR, 90)), "\\Device\\Tape90", exists_ntdev, S_IFBLK, true}, - {"/dev/st91", BRACK(FHDEV(DEV_TAPE_MAJOR, 91)), "\\Device\\Tape91", exists_ntdev, S_IFBLK, true}, - {"/dev/st92", BRACK(FHDEV(DEV_TAPE_MAJOR, 92)), "\\Device\\Tape92", exists_ntdev, S_IFBLK, true}, - {"/dev/st93", BRACK(FHDEV(DEV_TAPE_MAJOR, 93)), "\\Device\\Tape93", exists_ntdev, S_IFBLK, true}, - {"/dev/st94", BRACK(FHDEV(DEV_TAPE_MAJOR, 94)), "\\Device\\Tape94", exists_ntdev, S_IFBLK, true}, - {"/dev/st95", BRACK(FHDEV(DEV_TAPE_MAJOR, 95)), "\\Device\\Tape95", exists_ntdev, S_IFBLK, true}, - {"/dev/st96", BRACK(FHDEV(DEV_TAPE_MAJOR, 96)), "\\Device\\Tape96", exists_ntdev, S_IFBLK, true}, - {"/dev/st97", BRACK(FHDEV(DEV_TAPE_MAJOR, 97)), "\\Device\\Tape97", exists_ntdev, S_IFBLK, true}, - {"/dev/st98", BRACK(FHDEV(DEV_TAPE_MAJOR, 98)), "\\Device\\Tape98", exists_ntdev, S_IFBLK, true}, - {"/dev/st99", BRACK(FHDEV(DEV_TAPE_MAJOR, 99)), "\\Device\\Tape99", exists_ntdev, S_IFBLK, true}, - {"/dev/st100", BRACK(FHDEV(DEV_TAPE_MAJOR, 100)), "\\Device\\Tape100", exists_ntdev, S_IFBLK, true}, - {"/dev/st101", BRACK(FHDEV(DEV_TAPE_MAJOR, 101)), "\\Device\\Tape101", exists_ntdev, S_IFBLK, true}, - {"/dev/st102", BRACK(FHDEV(DEV_TAPE_MAJOR, 102)), "\\Device\\Tape102", exists_ntdev, S_IFBLK, true}, - {"/dev/st103", BRACK(FHDEV(DEV_TAPE_MAJOR, 103)), "\\Device\\Tape103", exists_ntdev, S_IFBLK, true}, - {"/dev/st104", BRACK(FHDEV(DEV_TAPE_MAJOR, 104)), "\\Device\\Tape104", exists_ntdev, S_IFBLK, true}, - {"/dev/st105", BRACK(FHDEV(DEV_TAPE_MAJOR, 105)), "\\Device\\Tape105", exists_ntdev, S_IFBLK, true}, - {"/dev/st106", BRACK(FHDEV(DEV_TAPE_MAJOR, 106)), "\\Device\\Tape106", exists_ntdev, S_IFBLK, true}, - {"/dev/st107", BRACK(FHDEV(DEV_TAPE_MAJOR, 107)), "\\Device\\Tape107", exists_ntdev, S_IFBLK, true}, - {"/dev/st108", BRACK(FHDEV(DEV_TAPE_MAJOR, 108)), "\\Device\\Tape108", exists_ntdev, S_IFBLK, true}, - {"/dev/st109", BRACK(FHDEV(DEV_TAPE_MAJOR, 109)), "\\Device\\Tape109", exists_ntdev, S_IFBLK, true}, - {"/dev/st110", BRACK(FHDEV(DEV_TAPE_MAJOR, 110)), "\\Device\\Tape110", exists_ntdev, S_IFBLK, true}, - {"/dev/st111", BRACK(FHDEV(DEV_TAPE_MAJOR, 111)), "\\Device\\Tape111", exists_ntdev, S_IFBLK, true}, - {"/dev/st112", BRACK(FHDEV(DEV_TAPE_MAJOR, 112)), "\\Device\\Tape112", exists_ntdev, S_IFBLK, true}, - {"/dev/st113", BRACK(FHDEV(DEV_TAPE_MAJOR, 113)), "\\Device\\Tape113", exists_ntdev, S_IFBLK, true}, - {"/dev/st114", BRACK(FHDEV(DEV_TAPE_MAJOR, 114)), "\\Device\\Tape114", exists_ntdev, S_IFBLK, true}, - {"/dev/st115", BRACK(FHDEV(DEV_TAPE_MAJOR, 115)), "\\Device\\Tape115", exists_ntdev, S_IFBLK, true}, - {"/dev/st116", BRACK(FHDEV(DEV_TAPE_MAJOR, 116)), "\\Device\\Tape116", exists_ntdev, S_IFBLK, true}, - {"/dev/st117", BRACK(FHDEV(DEV_TAPE_MAJOR, 117)), "\\Device\\Tape117", exists_ntdev, S_IFBLK, true}, - {"/dev/st118", BRACK(FHDEV(DEV_TAPE_MAJOR, 118)), "\\Device\\Tape118", exists_ntdev, S_IFBLK, true}, - {"/dev/st119", BRACK(FHDEV(DEV_TAPE_MAJOR, 119)), "\\Device\\Tape119", exists_ntdev, S_IFBLK, true}, - {"/dev/st120", BRACK(FHDEV(DEV_TAPE_MAJOR, 120)), "\\Device\\Tape120", exists_ntdev, S_IFBLK, true}, - {"/dev/st121", BRACK(FHDEV(DEV_TAPE_MAJOR, 121)), "\\Device\\Tape121", exists_ntdev, S_IFBLK, true}, - {"/dev/st122", BRACK(FHDEV(DEV_TAPE_MAJOR, 122)), "\\Device\\Tape122", exists_ntdev, S_IFBLK, true}, - {"/dev/st123", BRACK(FHDEV(DEV_TAPE_MAJOR, 123)), "\\Device\\Tape123", exists_ntdev, S_IFBLK, true}, - {"/dev/st124", BRACK(FHDEV(DEV_TAPE_MAJOR, 124)), "\\Device\\Tape124", exists_ntdev, S_IFBLK, true}, - {"/dev/st125", BRACK(FHDEV(DEV_TAPE_MAJOR, 125)), "\\Device\\Tape125", exists_ntdev, S_IFBLK, true}, - {"/dev/st126", BRACK(FHDEV(DEV_TAPE_MAJOR, 126)), "\\Device\\Tape126", exists_ntdev, S_IFBLK, true}, - {"/dev/st127", BRACK(FHDEV(DEV_TAPE_MAJOR, 127)), "\\Device\\Tape127", exists_ntdev, S_IFBLK, true}, + {"/dev/st0", BRACK(FHDEV(DEV_TAPE_MAJOR, 0)), "\\Device\\Tape0", exists_ntdev, S_IFCHR, true}, + {"/dev/st1", BRACK(FHDEV(DEV_TAPE_MAJOR, 1)), "\\Device\\Tape1", exists_ntdev, S_IFCHR, true}, + {"/dev/st2", BRACK(FHDEV(DEV_TAPE_MAJOR, 2)), "\\Device\\Tape2", exists_ntdev, S_IFCHR, true}, + {"/dev/st3", BRACK(FHDEV(DEV_TAPE_MAJOR, 3)), "\\Device\\Tape3", exists_ntdev, S_IFCHR, true}, + {"/dev/st4", BRACK(FHDEV(DEV_TAPE_MAJOR, 4)), "\\Device\\Tape4", exists_ntdev, S_IFCHR, true}, + {"/dev/st5", BRACK(FHDEV(DEV_TAPE_MAJOR, 5)), "\\Device\\Tape5", exists_ntdev, S_IFCHR, true}, + {"/dev/st6", BRACK(FHDEV(DEV_TAPE_MAJOR, 6)), "\\Device\\Tape6", exists_ntdev, S_IFCHR, true}, + {"/dev/st7", BRACK(FHDEV(DEV_TAPE_MAJOR, 7)), "\\Device\\Tape7", exists_ntdev, S_IFCHR, true}, + {"/dev/st8", BRACK(FHDEV(DEV_TAPE_MAJOR, 8)), "\\Device\\Tape8", exists_ntdev, S_IFCHR, true}, + {"/dev/st9", BRACK(FHDEV(DEV_TAPE_MAJOR, 9)), "\\Device\\Tape9", exists_ntdev, S_IFCHR, true}, + {"/dev/st10", BRACK(FHDEV(DEV_TAPE_MAJOR, 10)), "\\Device\\Tape10", exists_ntdev, S_IFCHR, true}, + {"/dev/st11", BRACK(FHDEV(DEV_TAPE_MAJOR, 11)), "\\Device\\Tape11", exists_ntdev, S_IFCHR, true}, + {"/dev/st12", BRACK(FHDEV(DEV_TAPE_MAJOR, 12)), "\\Device\\Tape12", exists_ntdev, S_IFCHR, true}, + {"/dev/st13", BRACK(FHDEV(DEV_TAPE_MAJOR, 13)), "\\Device\\Tape13", exists_ntdev, S_IFCHR, true}, + {"/dev/st14", BRACK(FHDEV(DEV_TAPE_MAJOR, 14)), "\\Device\\Tape14", exists_ntdev, S_IFCHR, true}, + {"/dev/st15", BRACK(FHDEV(DEV_TAPE_MAJOR, 15)), "\\Device\\Tape15", exists_ntdev, S_IFCHR, true}, + {"/dev/st16", BRACK(FHDEV(DEV_TAPE_MAJOR, 16)), "\\Device\\Tape16", exists_ntdev, S_IFCHR, true}, + {"/dev/st17", BRACK(FHDEV(DEV_TAPE_MAJOR, 17)), "\\Device\\Tape17", exists_ntdev, S_IFCHR, true}, + {"/dev/st18", BRACK(FHDEV(DEV_TAPE_MAJOR, 18)), "\\Device\\Tape18", exists_ntdev, S_IFCHR, true}, + {"/dev/st19", BRACK(FHDEV(DEV_TAPE_MAJOR, 19)), "\\Device\\Tape19", exists_ntdev, S_IFCHR, true}, + {"/dev/st20", BRACK(FHDEV(DEV_TAPE_MAJOR, 20)), "\\Device\\Tape20", exists_ntdev, S_IFCHR, true}, + {"/dev/st21", BRACK(FHDEV(DEV_TAPE_MAJOR, 21)), "\\Device\\Tape21", exists_ntdev, S_IFCHR, true}, + {"/dev/st22", BRACK(FHDEV(DEV_TAPE_MAJOR, 22)), "\\Device\\Tape22", exists_ntdev, S_IFCHR, true}, + {"/dev/st23", BRACK(FHDEV(DEV_TAPE_MAJOR, 23)), "\\Device\\Tape23", exists_ntdev, S_IFCHR, true}, + {"/dev/st24", BRACK(FHDEV(DEV_TAPE_MAJOR, 24)), "\\Device\\Tape24", exists_ntdev, S_IFCHR, true}, + {"/dev/st25", BRACK(FHDEV(DEV_TAPE_MAJOR, 25)), "\\Device\\Tape25", exists_ntdev, S_IFCHR, true}, + {"/dev/st26", BRACK(FHDEV(DEV_TAPE_MAJOR, 26)), "\\Device\\Tape26", exists_ntdev, S_IFCHR, true}, + {"/dev/st27", BRACK(FHDEV(DEV_TAPE_MAJOR, 27)), "\\Device\\Tape27", exists_ntdev, S_IFCHR, true}, + {"/dev/st28", BRACK(FHDEV(DEV_TAPE_MAJOR, 28)), "\\Device\\Tape28", exists_ntdev, S_IFCHR, true}, + {"/dev/st29", BRACK(FHDEV(DEV_TAPE_MAJOR, 29)), "\\Device\\Tape29", exists_ntdev, S_IFCHR, true}, + {"/dev/st30", BRACK(FHDEV(DEV_TAPE_MAJOR, 30)), "\\Device\\Tape30", exists_ntdev, S_IFCHR, true}, + {"/dev/st31", BRACK(FHDEV(DEV_TAPE_MAJOR, 31)), "\\Device\\Tape31", exists_ntdev, S_IFCHR, true}, + {"/dev/st32", BRACK(FHDEV(DEV_TAPE_MAJOR, 32)), "\\Device\\Tape32", exists_ntdev, S_IFCHR, true}, + {"/dev/st33", BRACK(FHDEV(DEV_TAPE_MAJOR, 33)), "\\Device\\Tape33", exists_ntdev, S_IFCHR, true}, + {"/dev/st34", BRACK(FHDEV(DEV_TAPE_MAJOR, 34)), "\\Device\\Tape34", exists_ntdev, S_IFCHR, true}, + {"/dev/st35", BRACK(FHDEV(DEV_TAPE_MAJOR, 35)), "\\Device\\Tape35", exists_ntdev, S_IFCHR, true}, + {"/dev/st36", BRACK(FHDEV(DEV_TAPE_MAJOR, 36)), "\\Device\\Tape36", exists_ntdev, S_IFCHR, true}, + {"/dev/st37", BRACK(FHDEV(DEV_TAPE_MAJOR, 37)), "\\Device\\Tape37", exists_ntdev, S_IFCHR, true}, + {"/dev/st38", BRACK(FHDEV(DEV_TAPE_MAJOR, 38)), "\\Device\\Tape38", exists_ntdev, S_IFCHR, true}, + {"/dev/st39", BRACK(FHDEV(DEV_TAPE_MAJOR, 39)), "\\Device\\Tape39", exists_ntdev, S_IFCHR, true}, + {"/dev/st40", BRACK(FHDEV(DEV_TAPE_MAJOR, 40)), "\\Device\\Tape40", exists_ntdev, S_IFCHR, true}, + {"/dev/st41", BRACK(FHDEV(DEV_TAPE_MAJOR, 41)), "\\Device\\Tape41", exists_ntdev, S_IFCHR, true}, + {"/dev/st42", BRACK(FHDEV(DEV_TAPE_MAJOR, 42)), "\\Device\\Tape42", exists_ntdev, S_IFCHR, true}, + {"/dev/st43", BRACK(FHDEV(DEV_TAPE_MAJOR, 43)), "\\Device\\Tape43", exists_ntdev, S_IFCHR, true}, + {"/dev/st44", BRACK(FHDEV(DEV_TAPE_MAJOR, 44)), "\\Device\\Tape44", exists_ntdev, S_IFCHR, true}, + {"/dev/st45", BRACK(FHDEV(DEV_TAPE_MAJOR, 45)), "\\Device\\Tape45", exists_ntdev, S_IFCHR, true}, + {"/dev/st46", BRACK(FHDEV(DEV_TAPE_MAJOR, 46)), "\\Device\\Tape46", exists_ntdev, S_IFCHR, true}, + {"/dev/st47", BRACK(FHDEV(DEV_TAPE_MAJOR, 47)), "\\Device\\Tape47", exists_ntdev, S_IFCHR, true}, + {"/dev/st48", BRACK(FHDEV(DEV_TAPE_MAJOR, 48)), "\\Device\\Tape48", exists_ntdev, S_IFCHR, true}, + {"/dev/st49", BRACK(FHDEV(DEV_TAPE_MAJOR, 49)), "\\Device\\Tape49", exists_ntdev, S_IFCHR, true}, + {"/dev/st50", BRACK(FHDEV(DEV_TAPE_MAJOR, 50)), "\\Device\\Tape50", exists_ntdev, S_IFCHR, true}, + {"/dev/st51", BRACK(FHDEV(DEV_TAPE_MAJOR, 51)), "\\Device\\Tape51", exists_ntdev, S_IFCHR, true}, + {"/dev/st52", BRACK(FHDEV(DEV_TAPE_MAJOR, 52)), "\\Device\\Tape52", exists_ntdev, S_IFCHR, true}, + {"/dev/st53", BRACK(FHDEV(DEV_TAPE_MAJOR, 53)), "\\Device\\Tape53", exists_ntdev, S_IFCHR, true}, + {"/dev/st54", BRACK(FHDEV(DEV_TAPE_MAJOR, 54)), "\\Device\\Tape54", exists_ntdev, S_IFCHR, true}, + {"/dev/st55", BRACK(FHDEV(DEV_TAPE_MAJOR, 55)), "\\Device\\Tape55", exists_ntdev, S_IFCHR, true}, + {"/dev/st56", BRACK(FHDEV(DEV_TAPE_MAJOR, 56)), "\\Device\\Tape56", exists_ntdev, S_IFCHR, true}, + {"/dev/st57", BRACK(FHDEV(DEV_TAPE_MAJOR, 57)), "\\Device\\Tape57", exists_ntdev, S_IFCHR, true}, + {"/dev/st58", BRACK(FHDEV(DEV_TAPE_MAJOR, 58)), "\\Device\\Tape58", exists_ntdev, S_IFCHR, true}, + {"/dev/st59", BRACK(FHDEV(DEV_TAPE_MAJOR, 59)), "\\Device\\Tape59", exists_ntdev, S_IFCHR, true}, + {"/dev/st60", BRACK(FHDEV(DEV_TAPE_MAJOR, 60)), "\\Device\\Tape60", exists_ntdev, S_IFCHR, true}, + {"/dev/st61", BRACK(FHDEV(DEV_TAPE_MAJOR, 61)), "\\Device\\Tape61", exists_ntdev, S_IFCHR, true}, + {"/dev/st62", BRACK(FHDEV(DEV_TAPE_MAJOR, 62)), "\\Device\\Tape62", exists_ntdev, S_IFCHR, true}, + {"/dev/st63", BRACK(FHDEV(DEV_TAPE_MAJOR, 63)), "\\Device\\Tape63", exists_ntdev, S_IFCHR, true}, + {"/dev/st64", BRACK(FHDEV(DEV_TAPE_MAJOR, 64)), "\\Device\\Tape64", exists_ntdev, S_IFCHR, true}, + {"/dev/st65", BRACK(FHDEV(DEV_TAPE_MAJOR, 65)), "\\Device\\Tape65", exists_ntdev, S_IFCHR, true}, + {"/dev/st66", BRACK(FHDEV(DEV_TAPE_MAJOR, 66)), "\\Device\\Tape66", exists_ntdev, S_IFCHR, true}, + {"/dev/st67", BRACK(FHDEV(DEV_TAPE_MAJOR, 67)), "\\Device\\Tape67", exists_ntdev, S_IFCHR, true}, + {"/dev/st68", BRACK(FHDEV(DEV_TAPE_MAJOR, 68)), "\\Device\\Tape68", exists_ntdev, S_IFCHR, true}, + {"/dev/st69", BRACK(FHDEV(DEV_TAPE_MAJOR, 69)), "\\Device\\Tape69", exists_ntdev, S_IFCHR, true}, + {"/dev/st70", BRACK(FHDEV(DEV_TAPE_MAJOR, 70)), "\\Device\\Tape70", exists_ntdev, S_IFCHR, true}, + {"/dev/st71", BRACK(FHDEV(DEV_TAPE_MAJOR, 71)), "\\Device\\Tape71", exists_ntdev, S_IFCHR, true}, + {"/dev/st72", BRACK(FHDEV(DEV_TAPE_MAJOR, 72)), "\\Device\\Tape72", exists_ntdev, S_IFCHR, true}, + {"/dev/st73", BRACK(FHDEV(DEV_TAPE_MAJOR, 73)), "\\Device\\Tape73", exists_ntdev, S_IFCHR, true}, + {"/dev/st74", BRACK(FHDEV(DEV_TAPE_MAJOR, 74)), "\\Device\\Tape74", exists_ntdev, S_IFCHR, true}, + {"/dev/st75", BRACK(FHDEV(DEV_TAPE_MAJOR, 75)), "\\Device\\Tape75", exists_ntdev, S_IFCHR, true}, + {"/dev/st76", BRACK(FHDEV(DEV_TAPE_MAJOR, 76)), "\\Device\\Tape76", exists_ntdev, S_IFCHR, true}, + {"/dev/st77", BRACK(FHDEV(DEV_TAPE_MAJOR, 77)), "\\Device\\Tape77", exists_ntdev, S_IFCHR, true}, + {"/dev/st78", BRACK(FHDEV(DEV_TAPE_MAJOR, 78)), "\\Device\\Tape78", exists_ntdev, S_IFCHR, true}, + {"/dev/st79", BRACK(FHDEV(DEV_TAPE_MAJOR, 79)), "\\Device\\Tape79", exists_ntdev, S_IFCHR, true}, + {"/dev/st80", BRACK(FHDEV(DEV_TAPE_MAJOR, 80)), "\\Device\\Tape80", exists_ntdev, S_IFCHR, true}, + {"/dev/st81", BRACK(FHDEV(DEV_TAPE_MAJOR, 81)), "\\Device\\Tape81", exists_ntdev, S_IFCHR, true}, + {"/dev/st82", BRACK(FHDEV(DEV_TAPE_MAJOR, 82)), "\\Device\\Tape82", exists_ntdev, S_IFCHR, true}, + {"/dev/st83", BRACK(FHDEV(DEV_TAPE_MAJOR, 83)), "\\Device\\Tape83", exists_ntdev, S_IFCHR, true}, + {"/dev/st84", BRACK(FHDEV(DEV_TAPE_MAJOR, 84)), "\\Device\\Tape84", exists_ntdev, S_IFCHR, true}, + {"/dev/st85", BRACK(FHDEV(DEV_TAPE_MAJOR, 85)), "\\Device\\Tape85", exists_ntdev, S_IFCHR, true}, + {"/dev/st86", BRACK(FHDEV(DEV_TAPE_MAJOR, 86)), "\\Device\\Tape86", exists_ntdev, S_IFCHR, true}, + {"/dev/st87", BRACK(FHDEV(DEV_TAPE_MAJOR, 87)), "\\Device\\Tape87", exists_ntdev, S_IFCHR, true}, + {"/dev/st88", BRACK(FHDEV(DEV_TAPE_MAJOR, 88)), "\\Device\\Tape88", exists_ntdev, S_IFCHR, true}, + {"/dev/st89", BRACK(FHDEV(DEV_TAPE_MAJOR, 89)), "\\Device\\Tape89", exists_ntdev, S_IFCHR, true}, + {"/dev/st90", BRACK(FHDEV(DEV_TAPE_MAJOR, 90)), "\\Device\\Tape90", exists_ntdev, S_IFCHR, true}, + {"/dev/st91", BRACK(FHDEV(DEV_TAPE_MAJOR, 91)), "\\Device\\Tape91", exists_ntdev, S_IFCHR, true}, + {"/dev/st92", BRACK(FHDEV(DEV_TAPE_MAJOR, 92)), "\\Device\\Tape92", exists_ntdev, S_IFCHR, true}, + {"/dev/st93", BRACK(FHDEV(DEV_TAPE_MAJOR, 93)), "\\Device\\Tape93", exists_ntdev, S_IFCHR, true}, + {"/dev/st94", BRACK(FHDEV(DEV_TAPE_MAJOR, 94)), "\\Device\\Tape94", exists_ntdev, S_IFCHR, true}, + {"/dev/st95", BRACK(FHDEV(DEV_TAPE_MAJOR, 95)), "\\Device\\Tape95", exists_ntdev, S_IFCHR, true}, + {"/dev/st96", BRACK(FHDEV(DEV_TAPE_MAJOR, 96)), "\\Device\\Tape96", exists_ntdev, S_IFCHR, true}, + {"/dev/st97", BRACK(FHDEV(DEV_TAPE_MAJOR, 97)), "\\Device\\Tape97", exists_ntdev, S_IFCHR, true}, + {"/dev/st98", BRACK(FHDEV(DEV_TAPE_MAJOR, 98)), "\\Device\\Tape98", exists_ntdev, S_IFCHR, true}, + {"/dev/st99", BRACK(FHDEV(DEV_TAPE_MAJOR, 99)), "\\Device\\Tape99", exists_ntdev, S_IFCHR, true}, + {"/dev/st100", BRACK(FHDEV(DEV_TAPE_MAJOR, 100)), "\\Device\\Tape100", exists_ntdev, S_IFCHR, true}, + {"/dev/st101", BRACK(FHDEV(DEV_TAPE_MAJOR, 101)), "\\Device\\Tape101", exists_ntdev, S_IFCHR, true}, + {"/dev/st102", BRACK(FHDEV(DEV_TAPE_MAJOR, 102)), "\\Device\\Tape102", exists_ntdev, S_IFCHR, true}, + {"/dev/st103", BRACK(FHDEV(DEV_TAPE_MAJOR, 103)), "\\Device\\Tape103", exists_ntdev, S_IFCHR, true}, + {"/dev/st104", BRACK(FHDEV(DEV_TAPE_MAJOR, 104)), "\\Device\\Tape104", exists_ntdev, S_IFCHR, true}, + {"/dev/st105", BRACK(FHDEV(DEV_TAPE_MAJOR, 105)), "\\Device\\Tape105", exists_ntdev, S_IFCHR, true}, + {"/dev/st106", BRACK(FHDEV(DEV_TAPE_MAJOR, 106)), "\\Device\\Tape106", exists_ntdev, S_IFCHR, true}, + {"/dev/st107", BRACK(FHDEV(DEV_TAPE_MAJOR, 107)), "\\Device\\Tape107", exists_ntdev, S_IFCHR, true}, + {"/dev/st108", BRACK(FHDEV(DEV_TAPE_MAJOR, 108)), "\\Device\\Tape108", exists_ntdev, S_IFCHR, true}, + {"/dev/st109", BRACK(FHDEV(DEV_TAPE_MAJOR, 109)), "\\Device\\Tape109", exists_ntdev, S_IFCHR, true}, + {"/dev/st110", BRACK(FHDEV(DEV_TAPE_MAJOR, 110)), "\\Device\\Tape110", exists_ntdev, S_IFCHR, true}, + {"/dev/st111", BRACK(FHDEV(DEV_TAPE_MAJOR, 111)), "\\Device\\Tape111", exists_ntdev, S_IFCHR, true}, + {"/dev/st112", BRACK(FHDEV(DEV_TAPE_MAJOR, 112)), "\\Device\\Tape112", exists_ntdev, S_IFCHR, true}, + {"/dev/st113", BRACK(FHDEV(DEV_TAPE_MAJOR, 113)), "\\Device\\Tape113", exists_ntdev, S_IFCHR, true}, + {"/dev/st114", BRACK(FHDEV(DEV_TAPE_MAJOR, 114)), "\\Device\\Tape114", exists_ntdev, S_IFCHR, true}, + {"/dev/st115", BRACK(FHDEV(DEV_TAPE_MAJOR, 115)), "\\Device\\Tape115", exists_ntdev, S_IFCHR, true}, + {"/dev/st116", BRACK(FHDEV(DEV_TAPE_MAJOR, 116)), "\\Device\\Tape116", exists_ntdev, S_IFCHR, true}, + {"/dev/st117", BRACK(FHDEV(DEV_TAPE_MAJOR, 117)), "\\Device\\Tape117", exists_ntdev, S_IFCHR, true}, + {"/dev/st118", BRACK(FHDEV(DEV_TAPE_MAJOR, 118)), "\\Device\\Tape118", exists_ntdev, S_IFCHR, true}, + {"/dev/st119", BRACK(FHDEV(DEV_TAPE_MAJOR, 119)), "\\Device\\Tape119", exists_ntdev, S_IFCHR, true}, + {"/dev/st120", BRACK(FHDEV(DEV_TAPE_MAJOR, 120)), "\\Device\\Tape120", exists_ntdev, S_IFCHR, true}, + {"/dev/st121", BRACK(FHDEV(DEV_TAPE_MAJOR, 121)), "\\Device\\Tape121", exists_ntdev, S_IFCHR, true}, + {"/dev/st122", BRACK(FHDEV(DEV_TAPE_MAJOR, 122)), "\\Device\\Tape122", exists_ntdev, S_IFCHR, true}, + {"/dev/st123", BRACK(FHDEV(DEV_TAPE_MAJOR, 123)), "\\Device\\Tape123", exists_ntdev, S_IFCHR, true}, + {"/dev/st124", BRACK(FHDEV(DEV_TAPE_MAJOR, 124)), "\\Device\\Tape124", exists_ntdev, S_IFCHR, true}, + {"/dev/st125", BRACK(FHDEV(DEV_TAPE_MAJOR, 125)), "\\Device\\Tape125", exists_ntdev, S_IFCHR, true}, + {"/dev/st126", BRACK(FHDEV(DEV_TAPE_MAJOR, 126)), "\\Device\\Tape126", exists_ntdev, S_IFCHR, true}, + {"/dev/st127", BRACK(FHDEV(DEV_TAPE_MAJOR, 127)), "\\Device\\Tape127", exists_ntdev, S_IFCHR, true}, {"/dev/stderr", BRACK(FH_DEV_FD), "/proc/self/fd/2", exists, S_IFLNK, true}, {"/dev/stdin", BRACK(FH_DEV_FD), "/proc/self/fd/0", exists, S_IFLNK, true}, {"/dev/stdout", BRACK(FH_DEV_FD), "/proc/self/fd/1", exists, S_IFLNK, true}, diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index a467cb593c..46568acbb2 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -193,8 +193,8 @@ const _device dev_error_storage = "/dev/ttyS%(0-127)d", BRACK(FHDEV(DEV_SERIAL_MAJOR, {$1})), "\\??\\COM{$1 + 1}", exists_ntdev, S_IFCHR ":pipe", BRACK(FH_PIPE), "/dev/pipe", exists_internal, S_IFCHR ":fifo", BRACK(FH_FIFO), "/dev/fifo", exists_internal, S_IFCHR -"/dev/st%(0-127)d", BRACK(FHDEV(DEV_TAPE_MAJOR, {$1})), "\\Device\\Tape{$1}", exists_ntdev, S_IFBLK -"/dev/nst%(0-127)d", BRACK(FHDEV(DEV_TAPE_MAJOR, {$1 + 128})), "\\Device\\Tape{$1}", exists_ntdev, S_IFBLK +"/dev/st%(0-127)d", BRACK(FHDEV(DEV_TAPE_MAJOR, {$1})), "\\Device\\Tape{$1}", exists_ntdev, S_IFCHR +"/dev/nst%(0-127)d", BRACK(FHDEV(DEV_TAPE_MAJOR, {$1 + 128})), "\\Device\\Tape{$1}", exists_ntdev, S_IFCHR "/dev/fd%(0-15)d", BRACK(FHDEV(DEV_FLOPPY_MAJOR, {$1})), "\\Device\\Floppy{$1}", exists_ntdev, S_IFBLK "/dev/scd%(0-15)d", BRACK(FHDEV(DEV_CDROM_MAJOR, {$1})), "\\Device\\CdRom{$1}", exists_ntdev, S_IFBLK "/dev/sr%(0-15)d", BRACK(FHDEV(DEV_CDROM_MAJOR, {$1})), "\\Device\\CdRom{$1}", exists_ntdev, S_IFBLK From bdb9f5b17339b0d54e408c6d7999e3f387eea6cf Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 21 Jan 2023 21:33:03 +0900 Subject: [PATCH 138/767] Cygwin: fsync: Fix EINVAL for block device. The commit af8a7c13b516 has a problem that fsync returns EINVAL for block device. This patch treats block devices as a special case. https://cygwin.com/pipermail/cygwin/2023-January/252916.html Fixes: af8a7c13b516 ("Cygwin: fsync: Return EINVAL for special files.") Reported-by: Yano Ray Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/base.cc | 3 ++- winsup/cygwin/release/3.4.6 | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 winsup/cygwin/release/3.4.6 diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index b2738cf204..9b49ec7b9e 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1728,7 +1728,8 @@ fhandler_base::utimens (const struct timespec *tvp) int fhandler_base::fsync () { - if (!get_handle () || nohandle () || pc.isspecial ()) + if (!get_handle () || nohandle () + || (pc.isspecial () && !S_ISBLK (pc.dev.mode ()))) { set_errno (EINVAL); return -1; diff --git a/winsup/cygwin/release/3.4.6 b/winsup/cygwin/release/3.4.6 new file mode 100644 index 0000000000..c1476ff460 --- /dev/null +++ b/winsup/cygwin/release/3.4.6 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +Fix a problem that fsync returns EINVAL for block device. +Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252916.html From 6338d2f24a609f10363477da29cf883e4a063f83 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 22 Jan 2023 20:11:59 +0100 Subject: [PATCH 139/767] Cygwin: mount: allow any valid character in UNC paths The current code only allows server and share names to start with ASCII chars [a-zA-Z0-9],, which is not correct. Rather, check for a valid share character. Fixes: 1fd5e000ace55 ("import winsup-2000-02-17 snapshot") Signed-off-by: Corinna Vinschen --- winsup/cygwin/mount.cc | 15 ++++++++++++--- winsup/cygwin/release/3.4.6 | 3 +++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 9b40c4075a..d8e6e043b8 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -42,11 +42,20 @@ bool NO_COPY mount_info::got_usr_bin; bool NO_COPY mount_info::got_usr_lib; int NO_COPY mount_info::root_idx = -1; -/* is_unc_share: Return non-zero if PATH begins with //server/share +/* is_native_path: Return non-zero if PATH starts with \??\[a-zA-Z] or + with \\?\[a-zA-Z] or with \\.\[a-zA-Z]. + + is_unc_share: Return non-zero if PATH begins with //server/share or with one of the native prefixes //./ or //?/ + This function is only used to test for valid input strings. The later normalization drops the native prefixes. */ +/* list of invalid chars in UNC filenames. These are a few more than + for "normal" filenames. */ +const char _invalid_char[] = "\"/\\[]:|<>+=;,?*"; +#define valid_share_char(_c) (strchr (_invalid_char, (_c)) == NULL) + static inline bool is_native_path (const char *path) { @@ -63,9 +72,9 @@ is_unc_share (const char *path) const char *p; return (isdirsep (path[0]) && isdirsep (path[1]) - && isalnum (path[2]) + && valid_share_char (path[2]) && ((p = strpbrk (path + 3, "\\/")) != NULL) - && isalnum (p[1])); + && valid_share_char (p[1])); } /* Return true if src_path is a valid, internally supported device name. diff --git a/winsup/cygwin/release/3.4.6 b/winsup/cygwin/release/3.4.6 index c1476ff460..c21c44fbf5 100644 --- a/winsup/cygwin/release/3.4.6 +++ b/winsup/cygwin/release/3.4.6 @@ -3,3 +3,6 @@ Bug Fixes Fix a problem that fsync returns EINVAL for block device. Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252916.html + +Don't reject valid server and share names when mounting. +Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252928.html From cad3913ed8b1ce5db9396edc2f9e461cdb10998b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 23 Jan 2023 14:01:43 +0100 Subject: [PATCH 140/767] Cygwin: mount: differ allowed server name chars from allowed share name chars The list of invalid chars for server names differs from the list of invalid chars for share names. Apart from that, we don't allow control chars in both kinds of names. Fixes: 6338d2f24a60 ("Cygwin: mount: allow any valid character in UNC paths") Signed-off-by: Corinna Vinschen --- winsup/cygwin/mount.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index d8e6e043b8..b44d60e1e3 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -51,10 +51,23 @@ int NO_COPY mount_info::root_idx = -1; This function is only used to test for valid input strings. The later normalization drops the native prefixes. */ +/* list of invalid chars in server names. Note that underscore is ok, + but it cripples interoperability. */ +const char _invalid_server_char[] = ",~:!@#$%^&'.(){} "; +#define valid_server_char(_c) ({ \ + const char __c = (_c); \ + !iscntrl(__c) \ + && strchr (_invalid_server_char, (_c)) == NULL; \ + }) + /* list of invalid chars in UNC filenames. These are a few more than for "normal" filenames. */ -const char _invalid_char[] = "\"/\\[]:|<>+=;,?*"; -#define valid_share_char(_c) (strchr (_invalid_char, (_c)) == NULL) +const char _invalid_share_char[] = "\"/\\[]:|<>+=;,?*"; +#define valid_share_char(_c) ({ \ + const char __c = (_c); \ + !iscntrl(__c) \ + && strchr (_invalid_share_char, __c) == NULL; \ + }) static inline bool is_native_path (const char *path) @@ -72,7 +85,7 @@ is_unc_share (const char *path) const char *p; return (isdirsep (path[0]) && isdirsep (path[1]) - && valid_share_char (path[2]) + && valid_server_char (path[2]) && ((p = strpbrk (path + 3, "\\/")) != NULL) && valid_share_char (p[1])); } From bf915420042eadf29622c9a7b7ab12221f238fe5 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 25 Jan 2023 18:30:50 +0900 Subject: [PATCH 141/767] Cygwin: dsp: Fix hang on close() if another thread calls write(). fhandler_dev_dsp (OSS) has a problem that waitforallsent(), which is called from close(), falls into infinite loop if another thread calls write() accidentally after close(). This patch fixes the issue. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 9 +++++++++ winsup/cygwin/local_includes/fhandler.h | 1 + 2 files changed, 10 insertions(+) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 8798cf8762..cfbf6bec7c 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1093,6 +1093,8 @@ fhandler_dev_dsp::open (int flags, mode_t) debug_printf ("ACCMODE=%y audio_in=%d audio_out=%d, err=%d, ret=%d", flags & O_ACCMODE, num_in, num_out, err, ret); + if (ret) + being_closed = false; return ret; } @@ -1106,6 +1108,12 @@ fhandler_dev_dsp::_write (const void *ptr, size_t len) int len_s = len; const char *ptr_s = static_cast (ptr); + if (being_closed) + { + set_errno (EBADF); + return -1; + } + if (audio_out_) /* nothing to do */; else if (IS_WRITE ()) @@ -1207,6 +1215,7 @@ int fhandler_dev_dsp::close () { debug_printf ("audio_in=%p audio_out=%p", audio_in_, audio_out_); + being_closed = true; close_audio_in (); close_audio_out (); return fhandler_base::close (); diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 113e402934..f3dd1b5a4c 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2762,6 +2762,7 @@ class fhandler_dev_dsp: public fhandler_base int audiochannels_; Audio_out *audio_out_; Audio_in *audio_in_; + bool being_closed; public: fhandler_dev_dsp (); fhandler_dev_dsp *base () const {return (fhandler_dev_dsp *)archetype;} From 28594480df73bbed642b4471445fa106ee387730 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 26 Jan 2023 19:58:24 +0100 Subject: [PATCH 142/767] Cygwin: cygcheck: split out fetching data from cygwin.com In preparation of new functionality, split fetching data from cygwin.com out of the package_grep() function. Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 84 ++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 69f75927fc..ce97cfe3a8 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2008,7 +2008,7 @@ check_keys () static const char safe_chars[] = "$-_.!*'(),"; /* the URL to query. */ -static const char base_url[] = +static const char grep_base_url[] = "http://cygwin.com/cgi-bin2/package-grep.cgi?text=1&grep="; #ifdef __x86_64__ @@ -2018,34 +2018,13 @@ static const char base_url[] = #endif static const char *ARCH_str = ARCH_STR; -/* Queries Cygwin web site for packages containing files matching a regexp. - Return value is 1 if there was a problem, otherwise 0. */ static int -package_grep (char *search) +fetch_url (const char *url, FILE *outstream) { - char buf[1024]; - - /* construct the actual URL by escaping */ - char *url = (char *) alloca (sizeof (base_url) + strlen (ARCH_str) - + strlen (search) * 3); - strcpy (url, base_url); - - char *dest; - for (dest = &url[sizeof (base_url) - 1]; *search; search++) - { - if (isalnum (*search) - || memchr (safe_chars, *search, sizeof (safe_chars) - 1)) - { - *dest++ = *search; - } - else - { - *dest++ = '%'; - sprintf (dest, "%02x", (unsigned char) *search); - dest += 2; - } - } - strcpy (dest, ARCH_str); + DWORD rc = 0, rc_s = sizeof (DWORD); + HINTERNET hi = NULL, hurl = NULL; + char buf[4096]; + DWORD numread; /* Connect to the net and open the URL. */ if (InternetAttemptConnect (0) != ERROR_SUCCESS) @@ -2055,7 +2034,6 @@ package_grep (char *search) } /* Initialize WinInet and attempt to fetch our URL. */ - HINTERNET hi = NULL, hurl = NULL; if (!(hi = InternetOpenA ("cygcheck", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0))) return display_internet_error ("InternetOpen() failed", NULL); @@ -2065,34 +2043,62 @@ package_grep (char *search) "InternetOpenUrl() failed", hi, NULL); /* Check the HTTP response code. */ - DWORD rc = 0, rc_s = sizeof (DWORD); if (!HttpQueryInfoA (hurl, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, (void *) &rc, &rc_s, NULL)) return display_internet_error ("HttpQueryInfo() failed", hurl, hi, NULL); - if (rc != HTTP_STATUS_OK) - { - sprintf (buf, "error retrieving results from cygwin.com site, " - "HTTP status code %lu", rc); - return display_internet_error (buf, hurl, hi, NULL); - } - - /* Fetch result and print to stdout. */ - DWORD numread; + /* Fetch result and print to outstream. */ do { if (!InternetReadFile (hurl, (void *) buf, sizeof (buf), &numread)) return display_internet_error ("InternetReadFile failed", hurl, hi, NULL); if (numread) - fwrite ((void *) buf, (size_t) numread, 1, stdout); + fwrite ((void *) buf, (size_t) numread, 1, outstream); } while (numread); + if (rc != HTTP_STATUS_OK) + { + sprintf (buf, "error retrieving results from cygwin.com site, " + "HTTP status code %lu", rc); + return display_internet_error (buf, hurl, hi, NULL); + } + InternetCloseHandle (hurl); InternetCloseHandle (hi); return 0; } +/* Queries Cygwin web site for packages containing files matching a regexp. + Return value is 1 if there was a problem, otherwise 0. */ +static int +package_grep (char *search) +{ + /* construct the actual URL by escaping */ + char *url = (char *) alloca (sizeof (grep_base_url) + strlen (ARCH_str) + + strlen (search) * 3); + strcpy (url, grep_base_url); + + char *dest; + for (dest = &url[sizeof (grep_base_url) - 1]; *search; search++) + { + if (isalnum (*search) + || memchr (safe_chars, *search, sizeof (safe_chars) - 1)) + { + *dest++ = *search; + } + else + { + *dest++ = '%'; + sprintf (dest, "%02x", (unsigned char) *search); + dest += 2; + } + } + strcpy (dest, ARCH_str); + + return fetch_url (url, stdout); +} + static void __attribute__ ((__noreturn__)) usage (FILE * stream, int status) { From 963d6c79ead3941b399e3549bc753c2cb90ab79b Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Fri, 27 Jan 2023 08:53:35 +0000 Subject: [PATCH 143/767] RISC-V: Fix floating-point environment support for soft float We don't have floating-point exception or non-default rounding mode support for the RISC-V soft-float environment, `feraiseexcept' and `fesetround' do nothing unless the `__riscv_flen' macro has been set. Therefore following ISO C language requirements[1] only define macros for soft float that correspond to actually supported floating-point environment features, removing failures from GCC testing such as: FAIL: gcc.dg/torture/fp-int-convert-timode-3.c -O0 execution test FAIL: gcc.dg/torture/fp-int-convert-timode-4.c -O0 execution test References: [1] "Programming languages -- C", ISO/IEC 9899:2023, working draft -- September 3, 2022, Section 7.6 "Floating-point environment " Fixes: 7040b2de0883 ("Add RISC-V port for libm") Signed-off-by: Maciej W. Rozycki --- newlib/libc/machine/riscv/sys/fenv.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/newlib/libc/machine/riscv/sys/fenv.h b/newlib/libc/machine/riscv/sys/fenv.h index 6cbd321f34..772f3833f4 100644 --- a/newlib/libc/machine/riscv/sys/fenv.h +++ b/newlib/libc/machine/riscv/sys/fenv.h @@ -14,6 +14,8 @@ #include +#if __riscv_flen + /* Per "The RISC-V Instruction Set Manual: Volume I: User-Level ISA: * Version 2.1", Section 8.2, "Floating-Point Control and Status * Register": @@ -69,6 +71,13 @@ * floating-point unit." */ +#else /* !__riscv_flen */ + +#define FE_ALL_EXCEPT 0x00000000 +#define FE_TONEAREST 0x00000000 + +#endif /* !__riscv_flen */ + typedef size_t fenv_t; typedef size_t fexcept_t; extern const fenv_t fe_dfl_env; From 76d2053ec890884f149c8cd46dee95bde36cb95d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 28 Jan 2023 14:59:39 +0100 Subject: [PATCH 144/767] Cygwin: cygcheck: package info / available package search, take 1 cygcheck -i == dnf info cygcheck -e == dnf search Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/Makefile.am | 2 +- winsup/utils/mingw/cygcheck.cc | 519 +++++++++++++++++++++++++++++++-- 2 files changed, 503 insertions(+), 18 deletions(-) diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am index c26eef80f8..d9557d8b50 100644 --- a/winsup/utils/mingw/Makefile.am +++ b/winsup/utils/mingw/Makefile.am @@ -33,7 +33,7 @@ cygcheck_SOURCES = \ path.cc cygcheck_CPPFLAGS=-I$(srcdir)/.. -idirafter ${top_srcdir}/cygwin/include cygcheck_LDFLAGS = ${AM_LDFLAGS} -Wl,--disable-high-entropy-va -cygcheck_LDADD = -lz -lwininet -lpsapi -lntdll +cygcheck_LDADD = -lz -lwininet -lshlwapi -lpsapi -lntdll cygwin_console_helper_SOURCES = cygwin-console-helper.cc diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index ce97cfe3a8..4a57e9a7b9 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -6,25 +6,27 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ -#define cygwin_internal cygwin_internal_dontuse #include #include #include #include #include +#include #include #include #include #include #include +#include #include "path.h" #include "wide_path.h" #include #include +#define cygwin_internal cygwin_internal_dontuse #include +#undef cygwin_internal #define _NOMNTENT_MACROS #include -#undef cygwin_internal #include "loadlib.h" #ifndef max @@ -35,6 +37,11 @@ #define alloca __builtin_alloca #endif +extern "C" { +uintptr_t (*cygwin_internal) (cygwin_getinfo_types, ...); +WCHAR cygwin_dll_path[32768]; +}; + int verbose = 0; int registry = 0; int sysinfo = 0; @@ -45,6 +52,8 @@ int dump_only = 0; int find_package = 0; int list_package = 0; int grep_packages = 0; +int info_packages = 0; +int search_packages = 0; int del_orphaned_reg = 0; static char emptystr[] = ""; @@ -238,6 +247,14 @@ display_internet_error (const char *message, ...) return 1; } +static inline char * +stpcpy (char *d, const char *s) +{ + while ((*d++ = *s++)) + ; + return --d; +} + static void add_path (char *s, int maxlen, bool issys) { @@ -2069,10 +2086,462 @@ fetch_url (const char *url, FILE *outstream) return 0; } +struct passwd { + char *pw_name; /* user name */ + char *pw_passwd; /* encrypted password */ + uint32_t pw_uid; /* user uid */ + uint32_t pw_gid; /* user gid */ + char *pw_comment; /* comment */ + char *pw_gecos; /* Honeywell login info */ + char *pw_dir; /* home directory */ + char *pw_shell; /* default shell */ +}; + +struct sidbuf { + PSID psid; + int buffer[10]; +}; + +/* Downloads setup.ini from cygwin.com, if it hasn't been downloaded + already or is older than 24h. */ +static FILE * +maybe_download_setup_ini () +{ + time_t t24h_before; + char *path; + struct stat st; + FILE *fp; + struct passwd *pw; + sidbuf curr_user; + + t24h_before = time (NULL) - 24 * 60 * 60; + for (int i = 0; i < 2; ++i) + { + /* Check for the system-wide setup.ini file first. If that's too + old and not writable, check for ~/.setup.ini. */ + if (i == 0) + path = cygpath ("/etc/setup/setup.ini", NULL); + else + { + BOOL ret; + DWORD len; + HANDLE ptok; + + if (!OpenProcessToken (GetCurrentProcess (), TOKEN_QUERY, &ptok)) + return NULL; + ret = GetTokenInformation (ptok, TokenUser, &curr_user, + sizeof curr_user, &len); + CloseHandle (ptok); + if (!ret) + return NULL; + pw = (struct passwd *) cygwin_internal (CW_GETPWSID, FALSE, + curr_user.psid); + if (!pw) + return NULL; + path = cygpath (pw->pw_dir, "/.setup.ini", NULL); + } + /* If file exists, and has been downloaded less than 24h ago, + and if we can open it for reading, just use it. */ + if (stat (path, &st) == 0 + && st.st_mtime > t24h_before + && (fp = fopen (path, "rt")) != NULL) + return fp; + /* Otherwise, try to open it for writing and fetch from cygwin.com. */ + if ((fp = fopen (path, "w+")) != NULL) + { + fputs ("Fetching setup.ini from cygwin.com...\n", stderr); + if (!fetch_url ("https://cygwin.com/ftp/cygwin/x86_64/setup.ini", fp)) + { + fclose (fp); + fp = fopen (path, "rt"); + return fp; + } + fclose (fp); + } + } + return NULL; +} + +struct vers_info +{ + char *version; + char *install; + char *source; + char *depends2; +}; + +struct ini_package_info +{ + char *name; + char *sdesc; + char *ldesc; + char *category; + char *url; + char *license; + vers_info curr; + size_t prev_count; + vers_info *prev; + size_t test_count; + vers_info *test; +}; + +static void +free_pkg_info (ini_package_info *pi) +{ + free (pi->name); + free (pi->sdesc); + free (pi->ldesc); + free (pi->category); + free (pi->url); + free (pi->license); + free (pi->curr.version); + free (pi->curr.install); + free (pi->curr.source); + free (pi->curr.depends2); + if (pi->prev) + { + for (size_t i = 0; i < pi->prev_count; ++i) + { + free (pi->prev[i].version); + free (pi->prev[i].install); + free (pi->prev[i].source); + free (pi->prev[i].depends2); + } + free (pi->prev); + } + if (pi->test) + { + for (size_t i = 0; i < pi->test_count; ++i) + { + free (pi->test[i].version); + free (pi->test[i].install); + free (pi->test[i].source); + free (pi->test[i].depends2); + } + free (pi->test); + } +} + +static void +collect_quoted_string (char *&tgt, FILE *fp, char *buf, size_t size, size_t offset) +{ + bool found = false; + char *cp, *s; + + cp = buf + offset; + if (*cp != '"') /* just 'til end of line */ + { + if ((s = strchr (cp, '\n'))) + *s = '\0'; + tgt = strdup (cp); + return; + } + /* text starts with a quote, collect 'til the closing quote */ + ++cp; + do + { + if ((s = strrchr (cp, '"')) && (s == cp || s[-1] != '\\')) + { + *s = '\0'; + found = true; + } + if (!tgt) + s = (char *) calloc (strlen (cp) + 1, sizeof *s); + else + s = (char *) realloc (tgt, strlen (tgt) + strlen (cp) + 1); + if (s) + { + tgt = s; + strcat (tgt, cp); + } + } + while (!found && (cp = fgets (buf, size, fp))); +} + +static ini_package_info * +collect_pkg_info (FILE *fp, ini_package_info *pi) +{ + vers_info *vinfo = &pi->curr; + char buf[4096]; + char *s; + + memset (pi, 0, sizeof *pi); + /* Search next line starting with "@ ". */ + while ((s = fgets (buf, sizeof buf, fp))) + { + if (s[0] == '@' && s[1] == ' ') + break; + } + if (!s) + goto error; + /* Extract package name */ + if ((s = strchr (buf, '\n'))) + *s = '\0'; + pi->name = strdup (buf + 2); + /* collect all of this package block. */ + while ((s = fgets (buf, sizeof buf, fp))) + { + /* empty line? EOR. */ + if (s[0] == '\n') + break; + /* prev or test version? */ + if (buf[0] == '[') + { + vers_info **vers_p = NULL; + size_t *vers_cnt_p = NULL; + + if (!strncmp (buf, "[prev]", strlen ("[prev]"))) + { + vers_p = &pi->prev; + vers_cnt_p = &pi->prev_count; + } + else if (!strncmp (buf, "[test]", strlen ("[test]"))) + { + vers_p = &pi->test; + vers_cnt_p = &pi->test_count; + } + if (vers_p) + { + vers_info *v; + + v = (vers_info *) realloc (*vers_p, (*vers_cnt_p + 1) + * sizeof (vers_info)); + if (!v) + goto error; + *vers_p = v; + vinfo = *vers_p + *vers_cnt_p; + memset (vinfo, 0, sizeof *vinfo); + ++(*vers_cnt_p); + } + } + else if (!strncmp (buf, "sdesc: ", strlen ("sdesc: "))) + collect_quoted_string (pi->sdesc, fp, buf, sizeof buf, + strlen ("sdesc: ")); + else if (!strncmp (buf, "ldesc: ", strlen ("ldesc: "))) + collect_quoted_string (pi->ldesc, fp, buf, sizeof buf, + strlen ("ldesc: ")); + else + { + if ((s = strchr (buf, '\n'))) + *s = '\0'; + if (!strncmp (buf, "category: ", strlen ("category: "))) + pi->category = strdup (buf + strlen ("category: ")); + else if (!strncmp (buf, "url: ", strlen ("url: "))) + pi->url = strdup (buf + strlen ("url: ")); + else if (!strncmp (buf, "license: ", strlen ("license: "))) + pi->license = strdup (buf + strlen ("license: ")); + else if (!strncmp (buf, "version: ", strlen ("version: "))) + vinfo->version = strdup (buf + strlen ("version: ")); + else if (!strncmp (buf, "install: ", strlen ("install: "))) + vinfo->install = strdup (buf + strlen ("install: ")); + else if (!strncmp (buf, "source: ", strlen ("source: "))) + vinfo->source = strdup (buf + strlen ("source: ")); + else if (!strncmp (buf, "depends2: ", strlen ("depends2: "))) + vinfo->depends2 = strdup (buf + strlen ("depends2: ")); + } + } + return pi; +error: + free_pkg_info (pi); + return NULL; +} + +static void +package_info_print (ini_package_info *pi, vers_info *vers) +{ + char buf[4096]; + + printf ("Name : %s\n", pi->name); + if (vers->version) + { + char *version = strcpy (buf, vers->version); + char *release = NULL; + + release = strrchr (version, '-'); + if (release) + *release++ = '\0'; + printf ("Version : %s\n", version); + if (release) + printf ("Release : %s\n", release); + } + if (vers->install) + { + char *arch = strcpy (buf, vers->install); + char *size = NULL; + char *cp; + + cp = strchr (arch, '/'); + if (cp) + { + *cp++ = '\0'; + cp = strchr (cp, ' '); + if (cp) + { + size = ++cp; + cp = strchr (cp, ' '); + if (cp) + *cp = '\0'; + } + } + if (cp) + { + printf ("Architecture : %s\n", arch); + printf ("Size : %s\n", size); /* FIXME: human-readable */ + } + } + if (vers->source) + { + char *source = strcpy (buf, vers->source); + char *cp = strchr (source, ' '); + if (cp) + { + *cp = '\0'; + cp = strrchr (source, '/'); + if (cp) + printf ("Source : %s\n", cp + 1); + } + } + if (pi->sdesc) + printf ("Summary : %s\n", pi->sdesc); + if (pi->url) + printf ("Url : %s\n", pi->url); + if (pi->license) + printf ("License : %s\n", pi->license); + if (pi->ldesc) + { + char *ldesc = strcpy (buf, pi->ldesc); + + while (ldesc) + { + char *nl = strchr (ldesc, '\n'); + if (nl) + *nl = '\0'; + printf ("%s : %s\n", ldesc == buf ? "Description " : " ", + ldesc); + ldesc = nl ? nl + 1 : NULL; + } + } + puts (""); +} + +/* Print full info for the package matching the search string in terms of + name/version. */ +static int +package_info (char **search) +{ + FILE *fp = maybe_download_setup_ini (); + ini_package_info pi_buf, *pi; + + if (!fp) + return 1; + + while (search && *search) + { + rewind (fp); + while ((pi = collect_pkg_info (fp, &pi_buf))) + { + /* Name matches? Print all versions */ + if (PathMatchSpecA (pi->name, *search)) + { + if (pi->curr.version) + package_info_print (pi, &pi->curr); + for (size_t i = 0; i < pi->prev_count; ++i) + package_info_print (pi, pi->prev + i); + for (size_t i = 0; i < pi->test_count; ++i) + package_info_print (pi, pi->test + i); + } + else + { + /* Check if search matches name-version string */ + char nv_buf[4096], *nvp, *cp; + + nvp = stpcpy (nv_buf, pi->name); + *nvp++ = '-'; + + if (pi->curr.version) + { + stpcpy (nvp, pi->curr.version); + if (PathMatchSpecA (nv_buf, *search)) + package_info_print (pi, &pi->curr); + else if ((cp = strrchr (nvp, '-'))) /* try w/o release */ + { + *cp = '\0'; + if (PathMatchSpecA (nv_buf, *search)) + package_info_print (pi, &pi->curr); + } + } + for (size_t i = 0; i < pi->prev_count; ++i) + { + stpcpy (nvp, pi->prev[i].version); + if (PathMatchSpecA (nv_buf, *search)) + package_info_print (pi, pi->prev + i); + else if ((cp = strrchr (nvp, '-'))) /* try w/o release */ + { + *cp = '\0'; + if (PathMatchSpecA (nv_buf, *search)) + package_info_print (pi, pi->prev + i); + } + } + for (size_t i = 0; i < pi->test_count; ++i) + { + stpcpy (nvp, pi->test[i].version); + if (PathMatchSpecA (nv_buf, *search)) + package_info_print (pi, pi->test + i); + else if ((cp = strrchr (nvp, '-'))) /* try w/o release */ + { + *cp = '\0'; + if (PathMatchSpecA (nv_buf, *search)) + package_info_print (pi, pi->test + i); + } + } + } + free_pkg_info (&pi_buf); + } + ++search; + } + return 0; +} + +/* Search for the search string in name and sdesc of available packages. */ +static int +package_search (char **search) +{ + FILE *fp = maybe_download_setup_ini (); + ini_package_info pi_buf, *pi; + char *ext_search, *ep; + + if (!fp) + return 1; + + while (search && *search) + { + ext_search = (char *) malloc (strlen (*search) + 3); + ep = ext_search; + if (*(search)[0] != '*') + *ep++ = '*'; + ep = stpcpy (ep, *search); + if (ep[-1] != '*') + stpcpy (ep, "*"); + + rewind (fp); + while ((pi = collect_pkg_info (fp, &pi_buf))) + { + if (PathMatchSpecA (pi->name, ext_search) + || (pi->sdesc && PathMatchSpecA (pi->sdesc, ext_search))) + printf ("%s : %s\n", pi->name, pi->sdesc); + free_pkg_info (&pi_buf); + } + free (ext_search); + ++search; + } + + return 0; +} + /* Queries Cygwin web site for packages containing files matching a regexp. Return value is 1 if there was a problem, otherwise 0. */ static int -package_grep (char *search) +package_grep (const char *search) { /* construct the actual URL by escaping */ char *url = (char *) alloca (sizeof (grep_base_url) + strlen (ARCH_str) @@ -2109,6 +2578,8 @@ Usage: cygcheck [-v] [-h] PROGRAM\n\ cygcheck -k\n\ cygcheck -f FILE [FILE]...\n\ cygcheck -l [PACKAGE]...\n\ + cygcheck -i [PATTERN]...\n\ + cygcheck -e [PATTERN]...\n\ cygcheck -p REGEXP\n\ cygcheck --delete-orphaned-installation-keys\n\ cygcheck -h\n\n\ @@ -2124,8 +2595,12 @@ At least one command option or a PROGRAM is required, as shown above.\n\ -r, --registry also scan registry for Cygwin settings (with -s)\n\ -k, --keycheck perform a keyboard check session (must be run from a\n\ plain console only, not from a pty/rxvt/xterm)\n\ - -f, --find-package find the package to which FILE belongs\n\ - -l, --list-package list contents of PACKAGE (or all packages if none given)\n\ + -f, --find-package find the installed package to which FILE belongs\n\ + -l, --list-package list contents of the installed PACKAGE (or all\n\ + installed packages if none given)\n\ + -i, --info-package print full info on packages matching PATTERN, installed\n\ + and available packages\n\ + -e, --search-package list all available packages matching PATTERN\n\ -p, --package-query search for REGEXP in the entire cygwin.com package\n\ repository (requires internet connectivity)\n\ --delete-orphaned-installation-keys\n\ @@ -2153,6 +2628,8 @@ struct option longopts[] = { {"keycheck", no_argument, NULL, 'k'}, {"find-package", no_argument, NULL, 'f'}, {"list-package", no_argument, NULL, 'l'}, + {"info-packages", no_argument, NULL, 'i'}, + {"search-packages", no_argument, NULL, 'e'}, {"package-query", no_argument, NULL, 'p'}, {"delete-orphaned-installation-keys", no_argument, NULL, CO_DELETE_KEYS}, {"help", no_argument, NULL, 'h'}, @@ -2160,7 +2637,7 @@ struct option longopts[] = { {0, no_argument, NULL, 0} }; -static char opts[] = "cdsrvkflphV"; +static char opts[] = "cdsrvkfliephV"; static void print_version () @@ -2188,11 +2665,6 @@ nuke (char *ev) putenv (s); } -extern "C" { -uintptr_t (*cygwin_internal) (int, ...); -WCHAR cygwin_dll_path[32768]; -}; - static void load_cygwin (int& argc, char **&argv) { @@ -2201,8 +2673,8 @@ load_cygwin (int& argc, char **&argv) if (!(h = LoadLibrary ("cygwin1.dll"))) return; GetModuleFileNameW (h, cygwin_dll_path, 32768); - if ((cygwin_internal = (uintptr_t (*) (int, ...)) - GetProcAddress (h, "cygwin_internal"))) + if ((cygwin_internal = (uintptr_t (*) (cygwin_getinfo_types, ...)) + GetProcAddress (h, "cygwin_internal"))) { char **av = (char **) cygwin_internal (CW_ARGV); if (av && ((uintptr_t) av != (uintptr_t) -1)) @@ -2239,6 +2711,7 @@ load_cygwin (int& argc, char **&argv) putenv (path); } } + /* GDB chokes when the DLL got unloaded and, for some reason, fails to set any breakpoint after the fact. */ if (!IsDebuggerPresent ()) @@ -2287,6 +2760,12 @@ main (int argc, char **argv) case 'l': list_package = 1; break; + case 'i': + info_packages = 1; + break; + case 'e': + search_packages = 1; + break; case 'p': grep_packages = 1; break; @@ -2310,7 +2789,7 @@ main (int argc, char **argv) putenv ("POSIXLY_CORRECT="); if ((argc == 0) && !sysinfo && !keycheck && !check_setup && !list_package - && !del_orphaned_reg) + && !del_orphaned_reg && !info_packages && !search_packages) { if (givehelp) usage (stdout, 0); @@ -2319,18 +2798,20 @@ main (int argc, char **argv) } if ((check_setup || sysinfo || find_package || list_package || grep_packages - || del_orphaned_reg) + || del_orphaned_reg || info_packages || search_packages) && keycheck) usage (stderr, 1); - if ((find_package || list_package || grep_packages) + if ((find_package || list_package || grep_packages + || info_packages || search_packages) && (check_setup || del_orphaned_reg)) usage (stderr, 1); if (dump_only && !check_setup && !sysinfo) usage (stderr, 1); - if (find_package + list_package + grep_packages > 1) + if (find_package + list_package + grep_packages + + info_packages + search_packages > 1) usage (stderr, 1); if (keycheck) @@ -2339,6 +2820,10 @@ main (int argc, char **argv) del_orphaned_reg_installations (); if (grep_packages) return package_grep (*argv); + if (info_packages) + return package_info (argv); + if (search_packages) + return package_search (argv); init_paths (); From 022665af17d68c8e8bfe60258c69d5dc1c4f625d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 14:13:25 +0100 Subject: [PATCH 145/767] Cygwin: cygcheck: package info / available package search, take 2 - if the user has no perms to write to /etc/setup, don't try to fetch user homedir from Cygwin (crashes galore). Use LOCALAPPDATA path instead. - info is more rpm like - print info of installed package - added info selectors --inst, --curr, --prev, --test - add installation date TODO: - Human-readable filesize - url and license needs to be added to setup.ini yet - Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 313 +++++++++++++++++++++++-------- winsup/utils/mingw/cygcheck.h | 17 ++ winsup/utils/mingw/dump_setup.cc | 20 +- 3 files changed, 257 insertions(+), 93 deletions(-) create mode 100644 winsup/utils/mingw/cygcheck.h diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 4a57e9a7b9..ed1d8f85a2 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -20,6 +20,7 @@ #include #include "path.h" #include "wide_path.h" +#include "cygcheck.h" #include #include #define cygwin_internal cygwin_internal_dontuse @@ -53,9 +54,15 @@ int find_package = 0; int list_package = 0; int grep_packages = 0; int info_packages = 0; +int info_selector = 0; int search_packages = 0; int del_orphaned_reg = 0; +#define INFO_INST 0x01 +#define INFO_CURR 0x02 +#define INFO_PREV 0x04 +#define INFO_TEST 0x08 + static char emptystr[] = ""; #ifdef __GNUC__ @@ -2097,11 +2104,6 @@ struct passwd { char *pw_shell; /* default shell */ }; -struct sidbuf { - PSID psid; - int buffer[10]; -}; - /* Downloads setup.ini from cygwin.com, if it hasn't been downloaded already or is older than 24h. */ static FILE * @@ -2111,8 +2113,6 @@ maybe_download_setup_ini () char *path; struct stat st; FILE *fp; - struct passwd *pw; - sidbuf curr_user; t24h_before = time (NULL) - 24 * 60 * 60; for (int i = 0; i < 2; ++i) @@ -2123,22 +2123,15 @@ maybe_download_setup_ini () path = cygpath ("/etc/setup/setup.ini", NULL); else { - BOOL ret; - DWORD len; - HANDLE ptok; + char *localappdata = getenv ("LOCALAPPDATA"); + char *cp; - if (!OpenProcessToken (GetCurrentProcess (), TOKEN_QUERY, &ptok)) - return NULL; - ret = GetTokenInformation (ptok, TokenUser, &curr_user, - sizeof curr_user, &len); - CloseHandle (ptok); - if (!ret) - return NULL; - pw = (struct passwd *) cygwin_internal (CW_GETPWSID, FALSE, - curr_user.psid); - if (!pw) + if (!localappdata) return NULL; - path = cygpath (pw->pw_dir, "/.setup.ini", NULL); + path = (char *) malloc (strlen (localappdata) + + strlen ("\\.setup.ini") + 1); + cp = stpcpy (path, localappdata); + stpcpy (cp, "\\.setup.ini"); } /* If file exists, and has been downloaded less than 24h ago, and if we can open it for reading, just use it. */ @@ -2149,11 +2142,12 @@ maybe_download_setup_ini () /* Otherwise, try to open it for writing and fetch from cygwin.com. */ if ((fp = fopen (path, "w+")) != NULL) { - fputs ("Fetching setup.ini from cygwin.com...\n", stderr); + fprintf (stderr, "Fetching %s from cygwin.com...\n", path); if (!fetch_url ("https://cygwin.com/ftp/cygwin/x86_64/setup.ini", fp)) { fclose (fp); fp = fopen (path, "rt"); + fputs ("\n", stderr); return fp; } fclose (fp); @@ -2168,6 +2162,9 @@ struct vers_info char *install; char *source; char *depends2; + time_t install_date; + bool matches; + bool installed; }; struct ini_package_info @@ -2351,7 +2348,7 @@ package_info_print (ini_package_info *pi, vers_info *vers) { char buf[4096]; - printf ("Name : %s\n", pi->name); + printf ("Name : %s\n", pi->name); if (vers->version) { char *version = strcpy (buf, vers->version); @@ -2360,9 +2357,9 @@ package_info_print (ini_package_info *pi, vers_info *vers) release = strrchr (version, '-'); if (release) *release++ = '\0'; - printf ("Version : %s\n", version); + printf ("Version : %s\n", version); if (release) - printf ("Release : %s\n", release); + printf ("Release : %s\n", release); } if (vers->install) { @@ -2385,8 +2382,10 @@ package_info_print (ini_package_info *pi, vers_info *vers) } if (cp) { - printf ("Architecture : %s\n", arch); - printf ("Size : %s\n", size); /* FIXME: human-readable */ + printf ("Architecture: %s\n", arch); + if (vers->install_date) + printf ("Install Date: %s", ctime (&vers->install_date)); + printf ("Size : %s\n", size); /* FIXME: human-readable */ } } if (vers->source) @@ -2398,103 +2397,235 @@ package_info_print (ini_package_info *pi, vers_info *vers) *cp = '\0'; cp = strrchr (source, '/'); if (cp) - printf ("Source : %s\n", cp + 1); + printf ("Source : %s\n", cp + 1); } } if (pi->sdesc) - printf ("Summary : %s\n", pi->sdesc); + printf ("Summary : %s\n", pi->sdesc); if (pi->url) - printf ("Url : %s\n", pi->url); + printf ("Url : %s\n", pi->url); if (pi->license) - printf ("License : %s\n", pi->license); + printf ("License : %s\n", pi->license); if (pi->ldesc) - { - char *ldesc = strcpy (buf, pi->ldesc); + printf ("Description :\n%s\n", pi->ldesc); + puts (""); +} - while (ldesc) - { - char *nl = strchr (ldesc, '\n'); - if (nl) - *nl = '\0'; - printf ("%s : %s\n", ldesc == buf ? "Description " : " ", - ldesc); - ldesc = nl ? nl + 1 : NULL; - } +static void +package_info_check (ini_package_info *pi, vers_info *vi, pkgver *pv, + bool &am, bool &ai) +{ + vi->matches = true; + if (pv && !strcmp (vi->version, pv->ver)) + vi->installed = true; + am |= vi->matches; + ai |= vi->installed; +} + +static inline bool +check_name_version (char *pkg_name, char *pkg_version, char *search) +{ + char nv_buf[4096]; + char *nvp, *cp; + + nvp = stpcpy (nv_buf, pkg_name); + *nvp++ = '-'; + stpcpy (nvp, pkg_version); + if (PathMatchSpecA (nv_buf, search)) + return true; + if ((cp = strrchr (nvp, '-'))) /* try w/o release */ + { + *cp = '\0'; + if (PathMatchSpecA (nv_buf, search)) + return true; } - puts (""); + return false; +} + +static void +package_info_vers_check (ini_package_info *pi, vers_info *vi, char *search, + pkgver *pv, bool &am, bool &ai) +{ + vi->matches = check_name_version (pi->name, vi->version, search); + if (pv && !strcmp (vi->version, pv->ver)) + vi->installed = true; + am |= vi->matches; + ai |= vi->installed; +} + +int +pkg_comp (const void *a, const void *b) +{ + pkgver *pa = (pkgver *) a; + pkgver *pb = (pkgver *) b; + + return strcmp (pa->name, pb->name); } /* Print full info for the package matching the search string in terms of name/version. */ static int -package_info (char **search) +package_info (char **search, int selector) { FILE *fp = maybe_download_setup_ini (); ini_package_info pi_buf, *pi; + size_t inst_pkg_count; + pkgver *inst_pkgs; if (!fp) return 1; + if (selector == 0) + selector = INFO_CURR | INFO_PREV | INFO_TEST | INFO_INST; + + inst_pkgs = get_installed_packages (NULL, &inst_pkg_count); + while (search && *search) { rewind (fp); while ((pi = collect_pkg_info (fp, &pi_buf))) { + pkgver pv = { pi->name, NULL }, *inst_pkg = NULL; + bool avail_installed = false; + bool avail_matches = false; + bool inst_matches = false; + + if (selector & INFO_INST) + { + inst_pkg = (pkgver *) bsearch (&pv, inst_pkgs, inst_pkg_count, + sizeof *inst_pkgs, pkg_comp); + if (inst_pkg) + { + if (PathMatchSpecA (inst_pkg->name, *search)) + inst_matches = true; + else + inst_matches = check_name_version (inst_pkg->name, + inst_pkg->ver, + *search); + } + } + /* Name matches? Print all versions */ if (PathMatchSpecA (pi->name, *search)) { if (pi->curr.version) - package_info_print (pi, &pi->curr); + package_info_check (pi, &pi->curr, inst_pkg, + avail_matches, avail_installed); for (size_t i = 0; i < pi->prev_count; ++i) - package_info_print (pi, pi->prev + i); + package_info_check (pi, pi->prev + i, inst_pkg, + avail_matches, avail_installed); for (size_t i = 0; i < pi->test_count; ++i) - package_info_print (pi, pi->test + i); + package_info_check (pi, pi->test + i, inst_pkg, + avail_matches, avail_installed); } else { /* Check if search matches name-version string */ - char nv_buf[4096], *nvp, *cp; + if (pi->curr.version) + package_info_vers_check (pi, &pi->curr, *search, inst_pkg, + avail_matches, avail_installed); + for (size_t i = 0; i < pi->prev_count; ++i) + package_info_vers_check (pi, pi->prev + i, *search, inst_pkg, + avail_matches, avail_installed); + for (size_t i = 0; i < pi->test_count; ++i) + package_info_vers_check (pi, pi->test + i, *search, inst_pkg, + avail_matches, avail_installed); + } - nvp = stpcpy (nv_buf, pi->name); - *nvp++ = '-'; + /* First print installed package(s) */ + if (inst_pkg && inst_matches) + { + time_t install_ts = 0; + struct stat st; + char *path; - if (pi->curr.version) + printf ("Installed package:\n" + "------------------\n\n"); + /* fetch timestamp of last install. */ + + path = cygpath ("/etc/setup/", inst_pkg->name, ".lst.gz", NULL); + if (path) + { + if (stat (path, &st) == 0) + install_ts = st.st_mtime; + free (path); + } + + /* Fake min info if installed package is not available anymore */ + if (!avail_installed) + { + ini_package_info inst_pi = { 0 }; + + inst_pi.name = inst_pkg->name; + inst_pi.sdesc = pi->sdesc; + inst_pi.ldesc = pi->ldesc; + inst_pi.url = pi->url; + inst_pi.license = pi->license; + inst_pi.curr.version = inst_pkg->ver; + inst_pi.curr.install_date = install_ts; + package_info_print (&inst_pi, &pi->curr); + } + else { - stpcpy (nvp, pi->curr.version); - if (PathMatchSpecA (nv_buf, *search)) - package_info_print (pi, &pi->curr); - else if ((cp = strrchr (nvp, '-'))) /* try w/o release */ + if (pi->curr.installed) { - *cp = '\0'; - if (PathMatchSpecA (nv_buf, *search)) - package_info_print (pi, &pi->curr); + pi->curr.install_date = install_ts; + package_info_print (pi, &pi->curr); } + for (size_t i = 0; i < pi->prev_count; ++i) + if (pi->prev[i].installed) + { + pi->prev[i].install_date = install_ts; + package_info_print (pi, pi->prev + i); + } + for (size_t i = 0; i < pi->test_count; ++i) + if (pi->test[i].installed) + { + pi->test[i].install_date = install_ts; + package_info_print (pi, pi->test + i); + } } - for (size_t i = 0; i < pi->prev_count; ++i) + } + + /* Next print available, matching packages */ + if (avail_matches) + { + if ((selector & INFO_CURR) && pi->curr.matches) { - stpcpy (nvp, pi->prev[i].version); - if (PathMatchSpecA (nv_buf, *search)) - package_info_print (pi, pi->prev + i); - else if ((cp = strrchr (nvp, '-'))) /* try w/o release */ - { - *cp = '\0'; - if (PathMatchSpecA (nv_buf, *search)) + puts ("Latest available package:\n" + "-------------------------\n"); + package_info_print (pi, &pi->curr); + } + if (selector & INFO_PREV) + { + uint32_t header_printed = 0; + + for (size_t i = 0; i < pi->prev_count; ++i) + if (pi->prev[i].matches) + { + printf ("%s", header_printed++ + ? "" + : "Older available packages:\n" + "-------------------------\n\n"); package_info_print (pi, pi->prev + i); - } + } } - for (size_t i = 0; i < pi->test_count; ++i) + if (selector & INFO_TEST) { - stpcpy (nvp, pi->test[i].version); - if (PathMatchSpecA (nv_buf, *search)) - package_info_print (pi, pi->test + i); - else if ((cp = strrchr (nvp, '-'))) /* try w/o release */ - { - *cp = '\0'; - if (PathMatchSpecA (nv_buf, *search)) + uint32_t header_printed = 0; + + for (size_t i = 0; i < pi->test_count; ++i) + if (pi->test[i].matches) + { + printf ("%s", header_printed++ + ? "" + : "Available test packages:\n" + "------------------------\n\n"); package_info_print (pi, pi->test + i); - } + } } } + free_pkg_info (&pi_buf); } ++search; @@ -2578,7 +2709,7 @@ Usage: cygcheck [-v] [-h] PROGRAM\n\ cygcheck -k\n\ cygcheck -f FILE [FILE]...\n\ cygcheck -l [PACKAGE]...\n\ - cygcheck -i [PATTERN]...\n\ + cygcheck -i [--inst,--curr,--prev,--test] [PATTERN]...\n\ cygcheck -e [PATTERN]...\n\ cygcheck -p REGEXP\n\ cygcheck --delete-orphaned-installation-keys\n\ @@ -2595,12 +2726,19 @@ At least one command option or a PROGRAM is required, as shown above.\n\ -r, --registry also scan registry for Cygwin settings (with -s)\n\ -k, --keycheck perform a keyboard check session (must be run from a\n\ plain console only, not from a pty/rxvt/xterm)\n\ + -e, --search-package list all available packages matching PATTERN\n\ + PATTERN is a glob pattern with * and ? as wildcard chars\n\ + -i, --info-package print full info on packages matching PATTERN, installed\n\ + and available packages\n\ + PATTERN is a glob pattern with * and ? as wildcard chars\n\ + info selection specifiers (multiple allowed):\n\ + --inst only print info on installed package\n\ + --curr only print info on most recent available package\n\ + --prev only print info on older, but still available packages\n\ + --test only print info on test packages\n\ -f, --find-package find the installed package to which FILE belongs\n\ -l, --list-package list contents of the installed PACKAGE (or all\n\ installed packages if none given)\n\ - -i, --info-package print full info on packages matching PATTERN, installed\n\ - and available packages\n\ - -e, --search-package list all available packages matching PATTERN\n\ -p, --package-query search for REGEXP in the entire cygwin.com package\n\ repository (requires internet connectivity)\n\ --delete-orphaned-installation-keys\n\ @@ -2612,7 +2750,8 @@ At least one command option or a PROGRAM is required, as shown above.\n\ with another command, otherwise print this help\n\ -V, --version print the version of cygcheck and exit\n\ \n\ -Note: -c, -f, and -l only report on packages that are currently installed. To\n\ +Notes:\n\ + -c, -f, and -l only report on packages that are currently installed. To\n\ search all official Cygwin packages use -p instead. The -p REGEXP matches\n\ package names, descriptions, and names of files/paths within all packages.\n\ \n"); @@ -2629,6 +2768,10 @@ struct option longopts[] = { {"find-package", no_argument, NULL, 'f'}, {"list-package", no_argument, NULL, 'l'}, {"info-packages", no_argument, NULL, 'i'}, + {"inst", no_argument, NULL, 0x1001}, + {"curr", no_argument, NULL, 0x1002}, + {"prev", no_argument, NULL, 0x1004}, + {"test", no_argument, NULL, 0x1008}, {"search-packages", no_argument, NULL, 'e'}, {"package-query", no_argument, NULL, 'p'}, {"delete-orphaned-installation-keys", no_argument, NULL, CO_DELETE_KEYS}, @@ -2763,6 +2906,12 @@ main (int argc, char **argv) case 'i': info_packages = 1; break; + case 0x1001: + case 0x1002: + case 0x1004: + case 0x1008: + info_selector |= (i & 0xf); + break; case 'e': search_packages = 1; break; @@ -2821,7 +2970,7 @@ main (int argc, char **argv) if (grep_packages) return package_grep (*argv); if (info_packages) - return package_info (argv); + return package_info (argv, info_selector); if (search_packages) return package_search (argv); diff --git a/winsup/utils/mingw/cygcheck.h b/winsup/utils/mingw/cygcheck.h new file mode 100644 index 0000000000..fb104a8e25 --- /dev/null +++ b/winsup/utils/mingw/cygcheck.h @@ -0,0 +1,17 @@ +/* cygcheck.h + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#pragma once + +struct pkgver +{ + char *name; + char *ver; +}; + +extern pkgver *get_installed_packages (char **, size_t * = NULL); diff --git a/winsup/utils/mingw/dump_setup.cc b/winsup/utils/mingw/dump_setup.cc index ec70da0db0..06aa06f812 100644 --- a/winsup/utils/mingw/dump_setup.cc +++ b/winsup/utils/mingw/dump_setup.cc @@ -21,6 +21,7 @@ details. */ #include #include #include "path.h" +#include "cygcheck.h" #include static int package_len = 20; @@ -151,12 +152,6 @@ dump_file (const char *msg, const char *fn) return printed; } -struct pkgver -{ - char *name; - char *ver; -}; - extern "C" { int compar (const void *a, const void *b) @@ -403,8 +398,8 @@ check_package_files (int verbose, char *package) * Returns a calloc'd sorted list of packages or NULL if no info. * The last entry in the list is {NULL,NULL}. */ -static pkgver * -get_packages (char **argv) +pkgver * +get_installed_packages (char **argv, size_t *count) { char *setup = cygpath ("/etc/setup/installed.db", NULL); FILE *fp = fopen (setup, "rt"); @@ -464,13 +459,16 @@ get_packages (char **argv) fclose (fp); + if (count) + *count = n; + return packages; } void dump_setup (int verbose, char **argv, bool check_files) { - pkgver *packages = get_packages(argv); + pkgver *packages = get_installed_packages (argv); puts ("Cygwin Package Information"); if (packages == NULL) @@ -509,7 +507,7 @@ dump_setup (int verbose, char **argv, bool check_files) void package_list (int verbose, char **argv) { - pkgver *packages = get_packages(argv); + pkgver *packages = get_installed_packages (argv); if (packages == NULL) { puts ("No setup information found"); @@ -549,7 +547,7 @@ package_list (int verbose, char **argv) void package_find (int verbose, char **argv) { - pkgver *packages = get_packages(NULL); + pkgver *packages = get_installed_packages (NULL); if (packages == NULL) { puts ("No setup information found"); From c67e6570eef5b745e23d8c9449062b0f9f6c8cc4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 17:21:28 +0100 Subject: [PATCH 146/767] Cygwin: cygcheck: add human readable package size output Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 37 ++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index ed1d8f85a2..17a7669197 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -2343,6 +2344,27 @@ collect_pkg_info (FILE *fp, ini_package_info *pi) return NULL; } +static const char * +human_readable (char *buf, size_t bytes) +{ + const char *siz[] = { "B", "K", "M", "G", NULL }; + double db = bytes; + int idx = 0; + int prec; + + while (bytes > 1023 && siz[idx + 1]) + { + bytes >>= 10; + db /= 1024.0; + ++idx; + } + prec = log10 (db) + 1; + if (prec < 2) + prec = 2; + sprintf (buf, "%.*g %s", prec, db, siz[idx]); + return buf; +} + static void package_info_print (ini_package_info *pi, vers_info *vers) { @@ -2364,7 +2386,9 @@ package_info_print (ini_package_info *pi, vers_info *vers) if (vers->install) { char *arch = strcpy (buf, vers->install); - char *size = NULL; + char *sizep; + size_t size = 0; + char *cp; cp = strchr (arch, '/'); @@ -2374,10 +2398,13 @@ package_info_print (ini_package_info *pi, vers_info *vers) cp = strchr (cp, ' '); if (cp) { - size = ++cp; + sizep = ++cp; cp = strchr (cp, ' '); if (cp) - *cp = '\0'; + { + *cp = '\0'; + size = strtoull (sizep, NULL, 10); + } } } if (cp) @@ -2385,7 +2412,9 @@ package_info_print (ini_package_info *pi, vers_info *vers) printf ("Architecture: %s\n", arch); if (vers->install_date) printf ("Install Date: %s", ctime (&vers->install_date)); - printf ("Size : %s\n", size); /* FIXME: human-readable */ + + printf ("Size : %llu (%s)\n", size, + human_readable (buf, size)); } } if (vers->source) From 603f880cb7d3c15a4ac25e976dbc4b721f5a2922 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 17:51:42 +0100 Subject: [PATCH 147/767] Cygwin: cygcheck: simplify output when fetching setup.ini Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 17a7669197..7386ff9f79 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2143,7 +2143,7 @@ maybe_download_setup_ini () /* Otherwise, try to open it for writing and fetch from cygwin.com. */ if ((fp = fopen (path, "w+")) != NULL) { - fprintf (stderr, "Fetching %s from cygwin.com...\n", path); + fputs ("Fetching setup.ini from cygwin.com...\n", stderr); if (!fetch_url ("https://cygwin.com/ftp/cygwin/x86_64/setup.ini", fp)) { fclose (fp); From 784a141e0f96150abd91e71164aa5415d2a1aa82 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 17:52:13 +0100 Subject: [PATCH 148/767] Cygwin: cygcheck: improve documentation Signed-off-by: Corinna Vinschen --- winsup/doc/utils.xml | 85 ++++++++++++++++++++++++++++++++-- winsup/utils/mingw/cygcheck.cc | 11 +++-- 2 files changed, 87 insertions(+), 9 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 71c220d300..8e698ac4c1 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -131,6 +131,20 @@ cygcheck -k + + cygcheck + -e + PATTERN + + + cygcheck + -i + --inst + --curr + --prev + --test + PATTERN + cygcheck -f @@ -171,6 +185,16 @@ At least one command option or a PROGRAM is required, as shown above. -r, --registry also scan registry for Cygwin settings (with -s) -k, --keycheck perform a keyboard check session (must be run from a plain console only, not from a pty/rxvt/xterm) + -e, --search-package list all available packages matching PATTERN + PATTERN is a glob pattern with * and ? as wildcard chars + -i, --info-package print full info on packages matching PATTERN, installed + and available packages + PATTERN is a glob pattern with * and ? as wildcard chars + info selection specifiers (multiple allowed): + --inst only print info on installed package + --curr only print info on most recent available package + --prev only print info on older, but still available packages + --test only print info on test packages -f, --find-package find the package to which FILE belongs -l, --list-package list contents of PACKAGE (or all packages if none given) -p, --package-query search for REGEXP in the entire cygwin.com package @@ -184,9 +208,11 @@ At least one command option or a PROGRAM is required, as shown above. with another command, otherwise print this help -V, --version print the version of cygcheck and exit -Note: -c, -f, and -l only report on packages that are currently installed. To - search all official Cygwin packages use -p instead. The -p REGEXP matches - package names, descriptions, and names of files/paths within all packages. +Notes: + -c, -f, and -l only report on packages that are currently installed. + -i and -e report on available packages, too. To search for files within + uninstalled Cygwin packages, use -p. The -p REGEXP matches package names, + descriptions, and names of files/paths within all packages. @@ -218,6 +244,57 @@ Note: -c, -f, and -l only report on packages that are currently installed. To list one or more programs on the command line and specify -s, cygcheck will report on both. + The -e option allows to seach for available + packages in the Cygwin distribution. PATTERN is + a glob pattern, using * and ? as wildcard characters, just as in + filename patterns. PATTERN is searched for in + the package name and the summary of a package. + The -i option prints a lot of information + available for installed packages, as well as for available packages + in the Cygwin distribution. PATTERN is a glob + pattern, using * and ? as wildcard characters, just as in filename + patterns. PATTERN is compared against the + package name as well as against the combined package name and version. + With additional info selectors, --inst, + --curr, --prev, and + --test, allow to specify that only information + in terms of installed, current latest available, older available, + as well as test packages respectively, is requested. + + Example <command>cygcheck</command> -e/-i + usage + +$ cygcheck -e grep +grep : search for regular expression matches in text files +grep-debuginfo : Debug info for grep +grepmail : search mailboxes for mail matching an expression +pdfgrep : Command-line utility for searching text in PDFs +pdfgrep-debuginfo : Debug info for pdfgrep +sgrep : Search indexed text regions like SGML,XML and HTML files + +$ cygcheck -i --curr grep +Latest available package: +------------------------- + +Name : grep +Version : 3.8 +Release : 2 +Architecture: x86_64 +Size : 401340 (392 K) +Source : grep-3.8-2-src.tar.xz +Summary : search for regular expression matches in text files +Description : +GNU grep searches one or more input files for lines containing a +match to a specified pattern. By default, grep outputs the matching lines. +The GNU implementation includes several useful extensions over POSIX. + + + + + Note that -e and -i + options fetch info from a distribution db file. This file will be + downloading on demand and refreshed if it's older than 24 hours. The -f option helps you to track down which package a file came from, and -l lists all files in a package. For example, to find out about @@ -225,7 +302,7 @@ Note: -c, -f, and -l only report on packages that are currently installed. To Example <command>cygcheck</command> + id="utils-cygcheck-ex"><title>Example <command>cygcheck</command> -f/-l usage $ cygcheck -f /usr/bin/less diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 7386ff9f79..f4107176fd 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2738,7 +2738,7 @@ Usage: cygcheck [-v] [-h] PROGRAM\n\ cygcheck -k\n\ cygcheck -f FILE [FILE]...\n\ cygcheck -l [PACKAGE]...\n\ - cygcheck -i [--inst,--curr,--prev,--test] [PATTERN]...\n\ + cygcheck -i [--inst] [--curr] [--prev] [--test] [PATTERN]...\n\ cygcheck -e [PATTERN]...\n\ cygcheck -p REGEXP\n\ cygcheck --delete-orphaned-installation-keys\n\ @@ -2760,7 +2760,7 @@ At least one command option or a PROGRAM is required, as shown above.\n\ -i, --info-package print full info on packages matching PATTERN, installed\n\ and available packages\n\ PATTERN is a glob pattern with * and ? as wildcard chars\n\ - info selection specifiers (multiple allowed):\n\ + info selection specifiers (multiple allowed):\n\ --inst only print info on installed package\n\ --curr only print info on most recent available package\n\ --prev only print info on older, but still available packages\n\ @@ -2780,9 +2780,10 @@ At least one command option or a PROGRAM is required, as shown above.\n\ -V, --version print the version of cygcheck and exit\n\ \n\ Notes:\n\ - -c, -f, and -l only report on packages that are currently installed. To\n\ - search all official Cygwin packages use -p instead. The -p REGEXP matches\n\ - package names, descriptions, and names of files/paths within all packages.\n\ + -c, -f, and -l only report on packages that are currently installed.\n\ + -i and -e report on available packages, too. To search for files within\n\ + uninstalled Cygwin packages, use -p. The -p REGEXP matches package names,\n\ + descriptions, and names of files/paths within all packages.\n\ \n"); exit (status); } From c061551c67ec1155981eccf642c48d5701624dba Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 18:40:14 +0100 Subject: [PATCH 149/767] Cygwin: add new cygcheck capabilities to release notes Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 4 ++++ winsup/doc/new-features.xml | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 32c9ebaac4..3529c47878 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -8,3 +8,7 @@ What's new: now work in the console. - newgrp(1) tool. + +- cygcheck has new options searching for available packages in the + cygwin distro, as well as getting extended info on available and + installed packages. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 169f0fc526..e6eeb1faca 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -22,6 +22,12 @@ work in the console. newgrp(1) tool. + +cygcheck has new options searching for available packages in the +cygwin distro, as well as getting extended info on available and +installed packages. + + From 37c5b6d929bd6acd0f64467ccbd8a298a77ad98a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 20:35:45 +0100 Subject: [PATCH 150/767] Cygwin: cygcheck: find_url: fix error handling Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 38 ++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index f4107176fd..7773473716 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2050,6 +2050,7 @@ fetch_url (const char *url, FILE *outstream) HINTERNET hi = NULL, hurl = NULL; char buf[4096]; DWORD numread; + int ret; /* Connect to the net and open the URL. */ if (InternetAttemptConnect (0) != ERROR_SUCCESS) @@ -2064,34 +2065,49 @@ fetch_url (const char *url, FILE *outstream) return display_internet_error ("InternetOpen() failed", NULL); if (!(hurl = InternetOpenUrlA (hi, url, NULL, 0, 0, 0))) - return display_internet_error ("unable to contact cygwin.com site, " - "InternetOpenUrl() failed", hi, NULL); + { + ret = display_internet_error ("unable to contact cygwin.com site, " + "InternetOpenUrl() failed", hi, NULL); + goto out_open; + } /* Check the HTTP response code. */ if (!HttpQueryInfoA (hurl, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, (void *) &rc, &rc_s, NULL)) - return display_internet_error ("HttpQueryInfo() failed", hurl, hi, NULL); + { + ret = display_internet_error ("HttpQueryInfo() failed", hurl, hi, NULL); + goto out_open_url; + } + + if (rc != HTTP_STATUS_OK) + { + sprintf (buf, "error retrieving results from cygwin.com site, " + "HTTP status code %lu", rc); + ret = display_internet_error (buf, hurl, hi, NULL); + goto out_open_url; + } /* Fetch result and print to outstream. */ do { if (!InternetReadFile (hurl, (void *) buf, sizeof (buf), &numread)) - return display_internet_error ("InternetReadFile failed", hurl, hi, NULL); + { + ret = display_internet_error ("InternetReadFile failed", hurl, hi, + NULL); + goto out_open_url; + } if (numread) fwrite ((void *) buf, (size_t) numread, 1, outstream); } while (numread); - if (rc != HTTP_STATUS_OK) - { - sprintf (buf, "error retrieving results from cygwin.com site, " - "HTTP status code %lu", rc); - return display_internet_error (buf, hurl, hi, NULL); - } + ret = 0; +out_open_url: InternetCloseHandle (hurl); +out_open: InternetCloseHandle (hi); - return 0; + return ret; } struct passwd { From 4b157b44cad099c375801453dc245da660f0cb85 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 29 Jan 2023 21:32:25 +0100 Subject: [PATCH 151/767] Cygwin: cygcheck: lower setup.ini expiration time to 3 hours ...as is default for dnf Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 7773473716..7ac19afe5d 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2126,12 +2126,12 @@ struct passwd { static FILE * maybe_download_setup_ini () { - time_t t24h_before; + time_t t3h_before; char *path; struct stat st; FILE *fp; - t24h_before = time (NULL) - 24 * 60 * 60; + t3h_before = time (NULL) - 3 * 60 * 60; for (int i = 0; i < 2; ++i) { /* Check for the system-wide setup.ini file first. If that's too @@ -2150,10 +2150,10 @@ maybe_download_setup_ini () cp = stpcpy (path, localappdata); stpcpy (cp, "\\.setup.ini"); } - /* If file exists, and has been downloaded less than 24h ago, + /* If file exists, and has been downloaded less than 3h ago, and if we can open it for reading, just use it. */ if (stat (path, &st) == 0 - && st.st_mtime > t24h_before + && st.st_mtime > t3h_before && (fp = fopen (path, "rt")) != NULL) return fp; /* Otherwise, try to open it for writing and fetch from cygwin.com. */ From 3a4c740f59c03b4c8346fa0ee8599b1c0582ae96 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 28 Jan 2023 13:07:32 +0900 Subject: [PATCH 152/767] Cygwin: dsp: Implement SNDCTL_DSP_SETFRAGMENT ioctl(). Previously, SNDCTL_DSP_SETFRAGMENT was just a fake. In this patch, it has been implemented to allow latency control in some apps. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 78 ++++++++++++------------- winsup/cygwin/local_includes/fhandler.h | 3 + 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index cfbf6bec7c..dd1aac8e26 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -46,6 +46,8 @@ details. */ children. They only inherit the settings from the parent. */ +enum { DEFAULT_BLOCKS = 12, MAX_BLOCKS = 256 }; + class fhandler_dev_dsp::Audio { // This class contains functionality common to Audio_in and Audio_out public: @@ -67,7 +69,6 @@ class fhandler_dev_dsp::Audio void (fhandler_dev_dsp::Audio::*convert_) (unsigned char *buffer, int size_bytes); - enum { MAX_BLOCKS = 12 }; int bufferIndex_; // offset into pHdr_->lpData WAVEHDR *pHdr_; // data to be filled by write WAVEHDR wavehdr_[MAX_BLOCKS]; @@ -126,7 +127,6 @@ class fhandler_dev_dsp::Audio_out: public Audio bool waitforspace (); bool sendcurrent (); - enum { MAX_BLOCKS = 12 }; HWAVEOUT dev_; // The wave device /* Private copies of audiofreq_, audiobits_, audiochannels_, possibly set from wave file */ @@ -235,9 +235,9 @@ fhandler_dev_dsp::Audio::queue::query () fhandler_dev_dsp::Audio::Audio (fhandler_dev_dsp *my_fh) { bigwavebuffer_ = NULL; - Qisr2app_ = new queue (MAX_BLOCKS); - convert_ = &fhandler_dev_dsp::Audio::convert_none; fh = my_fh; + Qisr2app_ = new queue (fh->fragstotal_); + convert_ = &fhandler_dev_dsp::Audio::convert_none; } fhandler_dev_dsp::Audio::~Audio () @@ -389,14 +389,13 @@ fhandler_dev_dsp::Audio_out::start () { WAVEFORMATEX format; MMRESULT rc; - unsigned bSize = blockSize (freq_, bits_, channels_); if (dev_) return true; /* In case of fork bigwavebuffer may already exist */ if (!bigwavebuffer_) - bigwavebuffer_ = new char[MAX_BLOCKS * bSize]; + bigwavebuffer_ = new char[fh->fragstotal_ * fh->fragsize_]; if (!isvalid ()) return false; @@ -405,7 +404,7 @@ fhandler_dev_dsp::Audio_out::start () rc = waveOutOpen (&dev_, WAVE_MAPPER, &format, (DWORD_PTR) waveOut_callback, (DWORD_PTR) this, CALLBACK_FUNCTION); if (rc == MMSYSERR_NOERROR) - init (bSize); + init (fh->fragsize_); debug_printf ("%u = waveOutOpen(freq=%d bits=%d channels=%d)", rc, freq_, bits_, channels_); @@ -450,7 +449,7 @@ fhandler_dev_dsp::Audio_out::init (unsigned blockSize) // internally queue all of our buffer for later use by write Qisr2app_->reset (); - for (i = 0; i < MAX_BLOCKS; i++) + for (i = 0; i < fh->fragstotal_; i++) { wavehdr_[i].lpData = &bigwavebuffer_[i * blockSize]; wavehdr_[i].dwUser = (int) blockSize; @@ -505,8 +504,8 @@ fhandler_dev_dsp::Audio_out::buf_info (audio_buf_info *p, { /* If the device is running we use the internal values, possibly set from the wave file. */ - p->fragstotal = MAX_BLOCKS; - p->fragsize = blockSize (freq_, bits_, channels_); + p->fragstotal = fh->fragstotal_; + p->fragsize = fh->fragsize_; p->fragments = Qisr2app_->query (); if (pHdr_ != NULL) p->bytes = (int)pHdr_->dwUser - bufferIndex_ @@ -523,10 +522,10 @@ fhandler_dev_dsp::Audio_out::buf_info (audio_buf_info *p, void fhandler_dev_dsp::Audio_out::default_buf_info (audio_buf_info *p, int rate, int bits, int channels) { - p->fragstotal = MAX_BLOCKS; - p->fragsize = blockSize (rate, bits, channels); - p->fragments = MAX_BLOCKS; - p->bytes = p->fragsize * p->fragments; + p->fragstotal = DEFAULT_BLOCKS; + p->fragsize = blockSize (rate, bits, channels); + p->fragments = p->fragstotal; + p->bytes = p->fragsize * p->fragments; } /* This is called on an interupt so use locking.. Note Qisr2app_ @@ -552,8 +551,8 @@ fhandler_dev_dsp::Audio_out::waitforspace () set_errno (EAGAIN); return false; } - debug_printf ("100ms"); - switch (cygwait (100)) + debug_printf ("1ms"); + switch (cygwait (1)) { case WAIT_SIGNALED: if (!_my_tls.call_signal_handler ()) @@ -584,7 +583,7 @@ fhandler_dev_dsp::Audio_out::waitforspace () void fhandler_dev_dsp::Audio_out::waitforallsent () { - while (Qisr2app_->query () != MAX_BLOCKS) + while (Qisr2app_->query () != fh->fragstotal_) { debug_printf ("%d blocks in Qisr2app", Qisr2app_->query ()); Sleep (100); @@ -771,14 +770,13 @@ fhandler_dev_dsp::Audio_in::start (int rate, int bits, int channels) { WAVEFORMATEX format; MMRESULT rc; - unsigned bSize = blockSize (rate, bits, channels); if (dev_) return true; /* In case of fork bigwavebuffer may already exist */ if (!bigwavebuffer_) - bigwavebuffer_ = new char[MAX_BLOCKS * bSize]; + bigwavebuffer_ = new char[fh->fragstotal_ * fh->fragsize_]; if (!isvalid ()) return false; @@ -790,7 +788,7 @@ fhandler_dev_dsp::Audio_in::start (int rate, int bits, int channels) if (rc == MMSYSERR_NOERROR) { - if (!init (bSize)) + if (!init (fh->fragsize_)) return false; } return (rc == MMSYSERR_NOERROR); @@ -855,7 +853,7 @@ fhandler_dev_dsp::Audio_in::init (unsigned blockSize) // try to queue all of our buffer for reception Qisr2app_->reset (); - for (i = 0; i < MAX_BLOCKS; i++) + for (i = 0; i < fh->fragstotal_; i++) { wavehdr_[i].lpData = &bigwavebuffer_[i * blockSize]; wavehdr_[i].dwBufferLength = blockSize; @@ -963,7 +961,7 @@ fhandler_dev_dsp::Audio_in::waitfordata () void fhandler_dev_dsp::Audio_in::default_buf_info (audio_buf_info *p, int rate, int bits, int channels) { - p->fragstotal = MAX_BLOCKS; + p->fragstotal = DEFAULT_BLOCKS; p->fragsize = blockSize (rate, bits, channels); p->fragments = 0; p->bytes = 0; @@ -975,8 +973,8 @@ fhandler_dev_dsp::Audio_in::buf_info (audio_buf_info *p, { if (dev_) { - p->fragstotal = MAX_BLOCKS; - p->fragsize = blockSize (rate, bits, channels); + p->fragstotal = fh->fragstotal_; + p->fragsize = fh->fragsize_; p->fragments = Qisr2app_->query (); if (pHdr_ != NULL) p->bytes = pHdr_->dwBytesRecorded - bufferIndex_ @@ -1068,6 +1066,8 @@ fhandler_dev_dsp::open (int flags, mode_t) audiofreq_ = 8000; audiobits_ = 8; audiochannels_ = 1; + fragstotal_ = DEFAULT_BLOCKS; + fragment_has_been_set = false; switch (flags & O_ACCMODE) { case O_RDWR: @@ -1118,6 +1118,8 @@ fhandler_dev_dsp::_write (const void *ptr, size_t len) /* nothing to do */; else if (IS_WRITE ()) { + if (!fragment_has_been_set) + fragsize_ = Audio::blockSize (audiofreq_, audiobits_, audiochannels_); debug_printf ("Allocating"); if (!(audio_out_ = new Audio_out (this))) return -1; @@ -1162,6 +1164,8 @@ fhandler_dev_dsp::_read (void *ptr, size_t& len) /* nothing to do */; else if (IS_READ ()) { + if (!fragment_has_been_set) + fragsize_ = Audio::blockSize (audiofreq_, audiobits_, audiochannels_); debug_printf ("Allocating"); if (!(audio_in_ = new Audio_in (this))) { @@ -1237,19 +1241,9 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) break; CASE (SNDCTL_DSP_GETBLKSIZE) - /* This is valid even if audio_X is NULL */ - if (IS_WRITE ()) - { - *intbuf = audio_out_->blockSize (audiofreq_, - audiobits_, - audiochannels_); - } - else - { // I am very sure that IS_READ is valid - *intbuf = audio_in_->blockSize (audiofreq_, - audiobits_, - audiochannels_); - } + if (!fragment_has_been_set) + fragsize_ = Audio::blockSize (audiofreq_, audiobits_, audiochannels_); + *intbuf = fragsize_; return 0; CASE (SNDCTL_DSP_SETFMT) @@ -1404,9 +1398,15 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) } CASE (SNDCTL_DSP_SETFRAGMENT) - // Fake!! esound & mikmod require this on non PowerPC platforms. - // + { + if (audio_out_ || audio_in_) + return 0; /* Too late to set fragment. Ignore. */ + int *p = (int *) buf; + fragstotal_ = min (*p >> 16, MAX_BLOCKS); + fragsize_ = 1 << (*p & 0xffff); + fragment_has_been_set = true; return 0; + } CASE (SNDCTL_DSP_GETFMTS) *intbuf = AFMT_S16_LE | AFMT_U8; // only native formats returned here diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index f3dd1b5a4c..085a2a10d0 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2763,6 +2763,9 @@ class fhandler_dev_dsp: public fhandler_base Audio_out *audio_out_; Audio_in *audio_in_; bool being_closed; + bool fragment_has_been_set; + int fragstotal_; + int fragsize_; public: fhandler_dev_dsp (); fhandler_dev_dsp *base () const {return (fhandler_dev_dsp *)archetype;} From 89f930a9649ed9e419c7d8b2372c684313069a5b Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Wed, 1 Feb 2023 15:08:16 +0100 Subject: [PATCH 153/767] dumper: avoid linker problem when `libbfd` depends on `libsframe` A recent binutils version introduced `libsframe` and made it a dependency of `libbfd`. This caused a linker problem in the MSYS2 project, and once Cygwin upgrades to that binutils version it would cause the same problems there. Let's preemptively detect the presence of `libsframe` and if detected, link to it in addition to `libbfd`. Signed-off-by: Johannes Schindelin --- winsup/configure.ac | 5 +++++ winsup/utils/Makefile.am | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/winsup/configure.ac b/winsup/configure.ac index b155cabe43..76baf0a7da 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -118,6 +118,11 @@ AC_ARG_ENABLE([dumper], AM_CONDITIONAL(BUILD_DUMPER, [test "x$build_dumper" = "xyes"]) +AC_CHECK_LIB([sframe], [sframe_decode], + AC_MSG_NOTICE([Detected libsframe; Assuming that libbfd depends on it]), [true]) + +AM_CONDITIONAL(HAVE_LIBSFRAME, [test "x$ac_cv_lib_sframe_sframe_decode" = "xyes"]) + AC_CONFIG_FILES([ Makefile cygwin/Makefile diff --git a/winsup/utils/Makefile.am b/winsup/utils/Makefile.am index d4d56386f7..f59cf9f50c 100644 --- a/winsup/utils/Makefile.am +++ b/winsup/utils/Makefile.am @@ -89,6 +89,10 @@ profiler_LDADD = $(LDADD) -lntdll cygps_LDADD = $(LDADD) -lpsapi -lntdll newgrp_LDADD = $(LDADD) -luserenv +if HAVE_LIBSFRAME +dumper_LDADD += -lsframe +endif + if CROSS_BOOTSTRAP SUBDIRS = mingw endif From c6e601de84ea9f2be2b026c609cc3c1fe82a3103 Mon Sep 17 00:00:00 2001 From: "Victor L. Do Nascimento" Date: Fri, 3 Feb 2023 11:15:26 +0000 Subject: [PATCH 154/767] libc: arm: Implement setjmp GCC backwards compatibility. When compiling Newlib for arm targets with GCC 12.1 onward, the passing of architecture extension information to the assembler is automatic, making the use of .fpu and .arch_extension directives in assembly files redundant. With older versions of GCC, however, these directives must be hard-coded into the `arm/setjmp.S' file to allow the assembly of instructions concerning the storage and subsequent reloading of the floating point registers to/from the jump buffer, respectively. This patch conditionally adds the `.fpu vfpxd' and `.arch_extension mve' directives based on compile-time preprocessor macros concerning GCC version and target architectural features, such that both the assembly and linking of setjmp.S succeeds for older versions of Newlib. --- newlib/libc/machine/arm/setjmp.S | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S index c615f2428a..5e5952296c 100644 --- a/newlib/libc/machine/arm/setjmp.S +++ b/newlib/libc/machine/arm/setjmp.S @@ -64,6 +64,28 @@ .syntax unified +/* GCC 12.1 and later will tell the assembler exactly which floating + point (or MVE) unit is required and we don't want to override + that. Conversely, older versions of the compiler don't pass this + information so we need to enable the VFP version that is most + appropriate. The choice here should support all suitable VFP + versions that the older toolchains can handle. */ +#if __GNUC__ && __GNUC__ < 12 +/* Ensure that FPU instructions are correctly compiled and, likewise, + the appropriate build attributes are added to the resulting object + file. Check whether the MVE extension is present and whether + we have support for hardware floating point-operations. VFPxd + covers all the cases we need in this file for hardware + floating-point and should be compatible with all required FPUs + that we need to support. */ +# if __ARM_FP + .fpu vfpxd +# endif +# if __ARM_FEATURE_MVE + .arch_extension mve +# endif +#endif + #if __ARM_ARCH_ISA_THUMB == 1 && !__ARM_ARCH_ISA_ARM /* ARMv6-M-like has to be implemented in Thumb mode. */ From 23e49b18ce39bff5693a6dc8edbacfa59df79dab Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 6 Feb 2023 11:27:44 +0100 Subject: [PATCH 155/767] setlocale: create LC_ALL string when changing locale This patch is for the sake of gnulib. gnulib implements some form of a thread-safe setlocale variant called setlocale_null_r, which is supposed to return the locale strings in a thread-safe manner. This only succeeds if the system's setlocale already handles this thread-safe, otherwise gnulib adds some locking on its own. Newlib's setlocale always writes the global string array holding the LC_ALL value anew on each invocation of setlocale(LC_ALL, NULL). Since that doesn't allow to call setlocale(LC_ALL, NULL) in a thread-safe manner, so locking in gnulib is required. And here's the problem... The lock is decorated as dllexport when building for Cygwin. This collides with the default behaviour of ld to export all symbols. If it finds one decorated symbol, it will only export this symbol to the DLL import lib. Change setlocale so that it writes the global string array holding the LC_ALL value at the time the locale gets changed. On setlocale(LC_ALL, NULL), just return the pointer to the global LC_ALL string array, just as in GLibc. The burden of doing so is negligibly for all targets, but adds thread-safety for gnulib's setlocal_null_r() function, and gnulib can drop the lock entirely when building for Cygwin. Signed-off-by: Corinna Vinschen --- newlib/libc/locale/locale.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index 65e2b1833e..b0f6314ff4 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -289,7 +289,8 @@ struct __locale_t __global_locale = /* Renamed from current_locale_string to make clear this is only the *global* string for setlocale (LC_ALL, NULL). There's no equivalent functionality for uselocale. */ -static char global_locale_string[_LC_LAST * (ENCODING_LEN + 1/*"/"*/ + 1)]; +static char global_locale_string[_LC_LAST * (ENCODING_LEN + 1/*"/"*/ + 1)] + = "C"; static char *currentlocale (void); #endif /* _MB_CAPABLE */ @@ -312,6 +313,7 @@ _setlocale_r (struct _reent *p, static char saved_categories[_LC_LAST][ENCODING_LEN + 1]; int i, j, len, saverr; const char *env, *r; + char *ret; if (category < LC_ALL || category >= _LC_LAST) { @@ -321,7 +323,7 @@ _setlocale_r (struct _reent *p, if (locale == NULL) return category != LC_ALL ? __get_global_locale ()->categories[category] - : currentlocale(); + : global_locale_string; /* * Default to the current locale for everything. @@ -415,8 +417,12 @@ _setlocale_r (struct _reent *p, } if (category != LC_ALL) - return __loadlocale (__get_global_locale (), category, - new_categories[category]); + { + ret = __loadlocale (__get_global_locale (), category, + new_categories[category]); + currentlocale (); + return ret; + } for (i = 1; i < _LC_LAST; ++i) { From 013ccc0686131aa835f1364ea7ca9d07066e03e6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 7 Feb 2023 22:19:33 +0100 Subject: [PATCH 156/767] Cygwin: cygcheck: add latest product codes Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 72 ++++++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 7 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 7ac19afe5d..1ed4fdc6f3 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -1580,25 +1580,83 @@ dump_sysinfo () /* 0x00000074 */ "", /* 0x00000075 */ "", /* 0x00000076 */ "", - /* 0x00000077 */ "", + /* 0x00000077 */ " Team", /* 0x00000078 */ "", /* 0x00000079 */ " Education", /* 0x0000007a */ " Education N", /* 0x0000007b */ "", /* 0x0000007c */ "", - /* 0x0000007d */ "", - /* 0x0000007e */ "", + /* 0x0000007d */ " Enterprise 2015 LTSB", + /* 0x0000007e */ " Enterprise 2015 LTSB N", /* 0x0000007f */ "", /* 0x00000080 */ "", - /* 0x00000081 */ "", - /* 0x00000082 */ "", - /* 0x00000083 */ "", + /* 0x00000081 */ " Enterprise 2015 LTSB Evaluation", + /* 0x00000082 */ " Enterprise 2015 LTSB N Evaluation", + /* 0x00000083 */ " IoT Core Commercial", /* 0x00000084 */ "", /* 0x00000085 */ " Mobile Enterprise", + /* 0x00000086 */ "", + /* 0x00000087 */ "", + /* 0x00000088 */ "", + /* 0x00000089 */ "", + /* 0x0000008a */ "", + /* 0x0000008b */ "", + /* 0x0000008c */ "", + /* 0x0000008d */ "", + /* 0x0000008e */ "", + /* 0x0000008f */ "", + /* 0x00000090 */ "", + /* 0x00000091 */ " Server Datacenter, Semi-Annual Channel (core installation)", + /* 0x00000092 */ " Server Standard, Semi-Annual Channel (core installation)", + /* 0x00000093 */ "", + /* 0x00000094 */ "", + /* 0x00000095 */ "", + /* 0x00000096 */ "", + /* 0x00000097 */ "", + /* 0x00000098 */ "", + /* 0x00000099 */ "", + /* 0x0000009a */ "", + /* 0x0000009b */ "", + /* 0x0000009c */ "", + /* 0x0000009d */ "", + /* 0x0000009e */ "", + /* 0x0000009f */ "", + /* 0x000000a0 */ "", + /* 0x000000a1 */ " Pro for Workstations", + /* 0x000000a2 */ " Pro for Workstations N", + /* 0x000000a3 */ "", + /* 0x000000a4 */ " Pro Education", + /* 0x000000a5 */ "", + /* 0x000000a6 */ "", + /* 0x000000a7 */ "", + /* 0x000000a8 */ "", + /* 0x000000a9 */ "", + /* 0x000000aa */ "", + /* 0x000000ab */ "", + /* 0x000000ac */ "", + /* 0x000000ad */ "", + /* 0x000000ae */ "", + /* 0x000000af */ " Enterprise for Virtual Desktops", + /* 0x000000b0 */ "", + /* 0x000000b1 */ "", + /* 0x000000b2 */ "", + /* 0x000000b3 */ "", + /* 0x000000b4 */ "", + /* 0x000000b5 */ "", + /* 0x000000b6 */ "", + /* 0x000000b7 */ "", + /* 0x000000b8 */ "", + /* 0x000000b9 */ "", + /* 0x000000ba */ "", + /* 0x000000bb */ "", + /* 0x000000bc */ " IoT Enterprise", + /* 0x000000bd */ "", + /* 0x000000be */ "", + /* 0x000000bf */ " IoT Enterprise LTSC", }; if (prod == PRODUCT_UNLICENSED) strcat (osname, "Unlicensed"); - else if (prod > 0x00000085) + else if (prod > 0x000000bf) strcat (osname, ""); else strcat (osname, products[prod]); From 627c0f2b6715f37663ccd0c6c7f87b2f0ba0dc8f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 7 Feb 2023 22:49:38 +0100 Subject: [PATCH 157/767] Cygwin: cygcheck: collect build-depends info TODO: implement options to print all deps, all build-deps, all packages depending on packages matching the search string and so on. Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 1ed4fdc6f3..ac8343e664 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2237,6 +2237,7 @@ struct vers_info char *install; char *source; char *depends2; + char *build_depends; time_t install_date; bool matches; bool installed; @@ -2270,6 +2271,7 @@ free_pkg_info (ini_package_info *pi) free (pi->curr.install); free (pi->curr.source); free (pi->curr.depends2); + free (pi->curr.build_depends); if (pi->prev) { for (size_t i = 0; i < pi->prev_count; ++i) @@ -2278,6 +2280,7 @@ free_pkg_info (ini_package_info *pi) free (pi->prev[i].install); free (pi->prev[i].source); free (pi->prev[i].depends2); + free (pi->prev[i].build_depends); } free (pi->prev); } @@ -2289,6 +2292,7 @@ free_pkg_info (ini_package_info *pi) free (pi->test[i].install); free (pi->test[i].source); free (pi->test[i].depends2); + free (pi->test[i].build_depends); } free (pi->test); } @@ -2410,6 +2414,8 @@ collect_pkg_info (FILE *fp, ini_package_info *pi) vinfo->source = strdup (buf + strlen ("source: ")); else if (!strncmp (buf, "depends2: ", strlen ("depends2: "))) vinfo->depends2 = strdup (buf + strlen ("depends2: ")); + else if (!strncmp (buf, "build-depends: ", strlen ("build-depends: "))) + vinfo->build_depends = strdup (buf + strlen ("build-depends: ")); } } return pi; @@ -2503,6 +2509,12 @@ package_info_print (ini_package_info *pi, vers_info *vers) printf ("Source : %s\n", cp + 1); } } +#if 0 /* FIXME: needs CLI options */ + if (vers->depends2) + printf ("Dependencies: %s\n", vers->depends2); + if (vers->build_depends) + printf ("Build Deps : %s\n", vers->build_depends); +#endif if (pi->sdesc) printf ("Summary : %s\n", pi->sdesc); if (pi->url) From a022a8efd73011cc6047f06de12a3e83f29c799b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 8 Feb 2023 20:43:15 +0100 Subject: [PATCH 158/767] Cygwin: cygcheck: print categories in --info output Signed-off-by: Corinna Vinschen --- winsup/utils/mingw/cygcheck.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index ac8343e664..e5d0d6aec5 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2497,6 +2497,8 @@ package_info_print (ini_package_info *pi, vers_info *vers) human_readable (buf, size)); } } + if (pi->category) + printf ("Categories : %s\n", pi->category); if (vers->source) { char *source = strcpy (buf, vers->source); From 2a683f84a1da3d7b35fe595c64dc81e88100a511 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 8 Feb 2023 21:05:18 +0100 Subject: [PATCH 159/767] Cygwin: cygcheck: add dependency output -e --requires search packages depending on packages given as PATTERN -e --build-reqs search packages with build dependency matching PATTERN -i --depends print dependencies -i --build-deps print build dependencies (if available) Signed-off-by: Corinna Vinschen --- winsup/doc/utils.xml | 34 +++++-- winsup/utils/mingw/cygcheck.cc | 171 ++++++++++++++++++++++++--------- 2 files changed, 153 insertions(+), 52 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 8e698ac4c1..1e15a4d568 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -134,6 +134,8 @@ cygcheck -e + --requires + --build-reqs PATTERN @@ -143,6 +145,8 @@ --curr --prev --test + --deps + --build-deps PATTERN @@ -187,14 +191,22 @@ At least one command option or a PROGRAM is required, as shown above. plain console only, not from a pty/rxvt/xterm) -e, --search-package list all available packages matching PATTERN PATTERN is a glob pattern with * and ? as wildcard chars + search selection specifiers (multiple allowed):\n\ + --requires list packages depending on packages matching PATTERN + --build-reqs list packages depending on packages matching PATTERN + when building these packages + only the most recent available releases are checked + to collect requirements info -i, --info-package print full info on packages matching PATTERN, installed - and available packages + and available releases PATTERN is a glob pattern with * and ? as wildcard chars info selection specifiers (multiple allowed): - --inst only print info on installed package - --curr only print info on most recent available package - --prev only print info on older, but still available packages - --test only print info on test packages + --inst only print info on installed package release + --curr only print info on most recent available release + --prev only print info on older, still available releases + --test only print info on test releases + --deps additionally print package dependencies + --build-deps additionally print package build dependencies -f, --find-package find the package to which FILE belongs -l, --list-package list contents of PACKAGE (or all packages if none given) -p, --package-query search for REGEXP in the entire cygwin.com package @@ -248,7 +260,10 @@ Notes: packages in the Cygwin distribution. PATTERN is a glob pattern, using * and ? as wildcard characters, just as in filename patterns. PATTERN is searched for in - the package name and the summary of a package. + the package name and the summary of a package. + The --requires and --build-reqs + options allow to search for packages which have a certain dependency, + either at runtime or at build time. The -i option prints a lot of information available for installed packages, as well as for available packages in the Cygwin distribution. PATTERN is a glob @@ -259,7 +274,9 @@ Notes: --curr, --prev, and --test, allow to specify that only information in terms of installed, current latest available, older available, - as well as test packages respectively, is requested. + as well as test packages respectively, is requested. + The --deps and --build-deps + options allow to print additional dependency information. Example <command>cygcheck</command> -e/-i @@ -273,7 +290,7 @@ pdfgrep : Command-line utility for searching text in PDFs pdfgrep-debuginfo : Debug info for pdfgrep sgrep : Search indexed text regions like SGML,XML and HTML files -$ cygcheck -i --curr grep +$ cygcheck -i --curr --deps grep Latest available package: ------------------------- @@ -283,6 +300,7 @@ Release : 2 Architecture: x86_64 Size : 401340 (392 K) Source : grep-3.8-2-src.tar.xz +Dependencies: bash, cygwin, libintl8, libpcre2_8_0 Summary : search for regular expression matches in text files Description : GNU grep searches one or more input files for lines containing a diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index e5d0d6aec5..bdab6e2718 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -57,12 +57,19 @@ int grep_packages = 0; int info_packages = 0; int info_selector = 0; int search_packages = 0; +int search_selector = 0; int del_orphaned_reg = 0; #define INFO_INST 0x01 #define INFO_CURR 0x02 #define INFO_PREV 0x04 #define INFO_TEST 0x08 +#define INFO_ALL 0x0f +#define INFO_DEPS 0x10 +#define INFO_BLDDEPS 0x20 + +#define SRCH_REQS 0x40 +#define SRCH_BLDREQS 0x80 static char emptystr[] = ""; @@ -2335,7 +2342,7 @@ collect_quoted_string (char *&tgt, FILE *fp, char *buf, size_t size, size_t offs } static ini_package_info * -collect_pkg_info (FILE *fp, ini_package_info *pi) +collect_pkg_info (FILE *fp, ini_package_info *pi, bool search) { vers_info *vinfo = &pi->curr; char buf[4096]; @@ -2413,9 +2420,40 @@ collect_pkg_info (FILE *fp, ini_package_info *pi) else if (!strncmp (buf, "source: ", strlen ("source: "))) vinfo->source = strdup (buf + strlen ("source: ")); else if (!strncmp (buf, "depends2: ", strlen ("depends2: "))) - vinfo->depends2 = strdup (buf + strlen ("depends2: ")); - else if (!strncmp (buf, "build-depends: ", strlen ("build-depends: "))) - vinfo->build_depends = strdup (buf + strlen ("build-depends: ")); + { + if (!search) + vinfo->depends2 = strdup (buf + strlen ("depends2: ")); + else + { + /* For pattern matching we need a standarized format. + Make sure all deps are prepended by a space and all deps + are trailed by a comma. Note the missing space, that's + deliberate to keep it in the stored string. */ + char *start = buf + strlen ("depends2:"); + size_t len = strlen (start); + + vinfo->depends2 = (char *) calloc (len + 2, 1); + if (vinfo->depends2) + *stpcpy (vinfo->depends2, start) = ','; + } + } + else if (!strncmp (buf, "build-depends: ", + strlen ("build-depends: "))) + { + if (!search) + vinfo->build_depends = strdup (buf + + strlen ("build-depends: ")); + else + { + /* Ditto */ + char *start = buf + strlen ("build-depends:"); + size_t len = strlen (start); + + vinfo->build_depends = (char *) calloc (len + 2, 1); + if (vinfo->build_depends) + *stpcpy (vinfo->build_depends, start) = ','; + } + } } } return pi; @@ -2446,7 +2484,7 @@ human_readable (char *buf, size_t bytes) } static void -package_info_print (ini_package_info *pi, vers_info *vers) +package_info_print (ini_package_info *pi, vers_info *vers, int selector) { char buf[4096]; @@ -2511,12 +2549,10 @@ package_info_print (ini_package_info *pi, vers_info *vers) printf ("Source : %s\n", cp + 1); } } -#if 0 /* FIXME: needs CLI options */ - if (vers->depends2) + if ((selector & INFO_DEPS) && vers->depends2) printf ("Dependencies: %s\n", vers->depends2); - if (vers->build_depends) + if ((selector & INFO_BLDDEPS) && vers->build_depends) printf ("Build Deps : %s\n", vers->build_depends); -#endif if (pi->sdesc) printf ("Summary : %s\n", pi->sdesc); if (pi->url) @@ -2592,15 +2628,15 @@ package_info (char **search, int selector) if (!fp) return 1; - if (selector == 0) - selector = INFO_CURR | INFO_PREV | INFO_TEST | INFO_INST; + if ((selector & INFO_ALL) == 0) + selector = INFO_ALL; inst_pkgs = get_installed_packages (NULL, &inst_pkg_count); while (search && *search) { rewind (fp); - while ((pi = collect_pkg_info (fp, &pi_buf))) + while ((pi = collect_pkg_info (fp, &pi_buf, false))) { pkgver pv = { pi->name, NULL }, *inst_pkg = NULL; bool avail_installed = false; @@ -2680,26 +2716,26 @@ package_info (char **search, int selector) inst_pi.license = pi->license; inst_pi.curr.version = inst_pkg->ver; inst_pi.curr.install_date = install_ts; - package_info_print (&inst_pi, &pi->curr); + package_info_print (&inst_pi, &pi->curr, selector); } else { if (pi->curr.installed) { pi->curr.install_date = install_ts; - package_info_print (pi, &pi->curr); + package_info_print (pi, &pi->curr, selector); } for (size_t i = 0; i < pi->prev_count; ++i) if (pi->prev[i].installed) { pi->prev[i].install_date = install_ts; - package_info_print (pi, pi->prev + i); + package_info_print (pi, pi->prev + i, selector); } for (size_t i = 0; i < pi->test_count; ++i) if (pi->test[i].installed) { pi->test[i].install_date = install_ts; - package_info_print (pi, pi->test + i); + package_info_print (pi, pi->test + i, selector); } } } @@ -2711,7 +2747,7 @@ package_info (char **search, int selector) { puts ("Latest available package:\n" "-------------------------\n"); - package_info_print (pi, &pi->curr); + package_info_print (pi, &pi->curr, selector); } if (selector & INFO_PREV) { @@ -2724,7 +2760,7 @@ package_info (char **search, int selector) ? "" : "Older available packages:\n" "-------------------------\n\n"); - package_info_print (pi, pi->prev + i); + package_info_print (pi, pi->prev + i, selector); } } if (selector & INFO_TEST) @@ -2738,7 +2774,7 @@ package_info (char **search, int selector) ? "" : "Available test packages:\n" "------------------------\n\n"); - package_info_print (pi, pi->test + i); + package_info_print (pi, pi->test + i, selector); } } } @@ -2750,9 +2786,10 @@ package_info (char **search, int selector) return 0; } -/* Search for the search string in name and sdesc of available packages. */ +/* Search for the search string in name and sdesc of available packages. + The selector is used to search for dependencies. */ static int -package_search (char **search) +package_search (char **search, int selector) { FILE *fp = maybe_download_setup_ini (); ini_package_info pi_buf, *pi; @@ -2763,18 +2800,40 @@ package_search (char **search) while (search && *search) { - ext_search = (char *) malloc (strlen (*search) + 3); + rewind (fp); + + ext_search = (char *) malloc (strlen (*search) + 5); ep = ext_search; - if (*(search)[0] != '*') - *ep++ = '*'; - ep = stpcpy (ep, *search); - if (ep[-1] != '*') - stpcpy (ep, "*"); + if (selector) + { + ep = stpcpy (ep, "* "); + ep = stpcpy (ep, *search); + ep = stpcpy (ep, ",*"); + } + else + { + if (*(search)[0] != '*') + *ep++ = '*'; + ep = stpcpy (ep, *search); + if (ep[-1] != '*') + stpcpy (ep, "*"); + } - rewind (fp); - while ((pi = collect_pkg_info (fp, &pi_buf))) + while ((pi = collect_pkg_info (fp, &pi_buf, true))) { - if (PathMatchSpecA (pi->name, ext_search) + /* Skip debuginfo packages */ + if (PathMatchSpecA (pi->name, "*-debuginfo")) + continue; + if (selector) + { + /* search only curr version info for the dependency */ + if (((selector & SRCH_REQS) && pi->curr.depends2 + && PathMatchSpecA (pi->curr.depends2, ext_search)) + || ((selector & SRCH_BLDREQS) && pi->curr.build_depends + && PathMatchSpecA (pi->curr.build_depends, ext_search))) + printf ("%s : %s\n", pi->name, pi->sdesc); + } + else if (PathMatchSpecA (pi->name, ext_search) || (pi->sdesc && PathMatchSpecA (pi->sdesc, ext_search))) printf ("%s : %s\n", pi->name, pi->sdesc); free_pkg_info (&pi_buf); @@ -2837,34 +2896,42 @@ At least one command option or a PROGRAM is required, as shown above.\n\ \n\ PROGRAM list library (DLL) dependencies of PROGRAM\n\ -c, --check-setup show installed version of PACKAGE and verify integrity\n\ - (or for all installed packages if none specified)\n\ + (or for all installed packages if none specified)\n\ -d, --dump-only just list packages, do not verify (with -c)\n\ -s, --sysinfo produce diagnostic system information (implies -c)\n\ -r, --registry also scan registry for Cygwin settings (with -s)\n\ -k, --keycheck perform a keyboard check session (must be run from a\n\ - plain console only, not from a pty/rxvt/xterm)\n\ + plain console only, not from a pty/rxvt/xterm)\n\ -e, --search-package list all available packages matching PATTERN\n\ PATTERN is a glob pattern with * and ? as wildcard chars\n\ + search selection specifiers (multiple allowed):\n\ + --requires list packages depending on packages matching PATTERN\n\ + --build-reqs list packages depending on packages matching PATTERN\n\ + when building these packages\n\ + only the most recent available releases are checked\n\ + to collect requirements info\n\ -i, --info-package print full info on packages matching PATTERN, installed\n\ - and available packages\n\ + and available releases\n\ PATTERN is a glob pattern with * and ? as wildcard chars\n\ info selection specifiers (multiple allowed):\n\ - --inst only print info on installed package\n\ - --curr only print info on most recent available package\n\ - --prev only print info on older, but still available packages\n\ - --test only print info on test packages\n\ + --inst only print info on installed package release\n\ + --curr only print info on most recent available release\n\ + --prev only print info on older, still available releases\n\ + --test only print info on test releases\n\ + --deps additionally print package dependencies\n\ + --build-deps additionally print package build dependencies\n\ -f, --find-package find the installed package to which FILE belongs\n\ -l, --list-package list contents of the installed PACKAGE (or all\n\ installed packages if none given)\n\ -p, --package-query search for REGEXP in the entire cygwin.com package\n\ - repository (requires internet connectivity)\n\ + repository (requires internet connectivity)\n\ --delete-orphaned-installation-keys\n\ - Delete installation keys of old, now unused\n\ - installations from the registry. Requires the right\n\ - to change the registry.\n\ + Delete installation keys of old, now unused\n\ + installations from the registry. Requires the right\n\ + to change the registry.\n\ -v, --verbose produce more verbose output\n\ -h, --help annotate output with explanatory comments when given\n\ - with another command, otherwise print this help\n\ + with another command, otherwise print this help\n\ -V, --version print the version of cygcheck and exit\n\ \n\ Notes:\n\ @@ -2890,6 +2957,10 @@ struct option longopts[] = { {"curr", no_argument, NULL, 0x1002}, {"prev", no_argument, NULL, 0x1004}, {"test", no_argument, NULL, 0x1008}, + {"deps", no_argument, NULL, 0x1010}, + {"build-deps", no_argument, NULL, 0x1020}, + {"requires", no_argument, NULL, 0x1040}, + {"build-reqs", no_argument, NULL, 0x1080}, {"search-packages", no_argument, NULL, 'e'}, {"package-query", no_argument, NULL, 'p'}, {"delete-orphaned-installation-keys", no_argument, NULL, CO_DELETE_KEYS}, @@ -3028,11 +3099,17 @@ main (int argc, char **argv) case 0x1002: case 0x1004: case 0x1008: - info_selector |= (i & 0xf); + case 0x1010: + case 0x1020: + info_selector |= (i & 0x3f); break; case 'e': search_packages = 1; break; + case 0x1040: + case 0x1080: + search_selector |= (i & 0xc0); + break; case 'p': grep_packages = 1; break; @@ -3081,6 +3158,12 @@ main (int argc, char **argv) + info_packages + search_packages > 1) usage (stderr, 1); + if (!info_packages && info_selector) + usage (stderr, 1); + + if (!search_packages && search_selector) + usage (stderr, 1); + if (keycheck) return check_keys (); if (del_orphaned_reg) @@ -3090,7 +3173,7 @@ main (int argc, char **argv) if (info_packages) return package_info (argv, info_selector); if (search_packages) - return package_search (argv); + return package_search (argv, search_selector); init_paths (); From dc70c8dec19b74f0b8668704a2492b4b04d56b73 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 9 Feb 2023 14:41:12 +0100 Subject: [PATCH 160/767] Cygwin: cygcheck: improve OS output Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/mingw/cygcheck.cc | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index bdab6e2718..66af2ce0b6 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -31,6 +31,10 @@ #include <mntent.h> #include "loadlib.h" +#ifndef PRODUCT_IOTENTERPRISES +#define PRODUCT_IOTENTERPRISES 0x000000bf +#endif + #ifndef max #define max __max #endif @@ -1423,24 +1427,24 @@ dump_sysinfo () { case 0: strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "Vista" : "2008"); + ? "Vista" : "Server 2008"); break; case 1: strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "7" : "2008 R2"); + ? "7" : "Server 2008 R2"); break; case 2: strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "8" : "2012"); + ? "8" : "Server 2012"); break; case 3: strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "8.1" : "2012 R2"); + ? "8.1" : "Server 2012 R2"); break; case 4: default: strcpy (osname, osversion.wProductType == VER_NT_WORKSTATION - ? "10 Preview" : "2016 Preview"); + ? "10 Preview" : "Server 2016 Preview"); break; } else if (osversion.dwMajorVersion == 10) @@ -1450,13 +1454,13 @@ dump_sysinfo () else { if (osversion.dwBuildNumber <= 14393) - strcpy (osname, "2016"); + strcpy (osname, "Server 2016"); else if (osversion.dwBuildNumber <= 17763) - strcpy (osname, "2019"); + strcpy (osname, "Server 2019"); else if (osversion.dwBuildNumber <= 20348) - strcpy (osname, "2022"); + strcpy (osname, "Server 2022"); else - strcpy (osname, "20??"); + strcpy (osname, "Server 20??"); } } DWORD prod; @@ -1663,7 +1667,7 @@ dump_sysinfo () }; if (prod == PRODUCT_UNLICENSED) strcat (osname, "Unlicensed"); - else if (prod > 0x000000bf) + else if (prod > PRODUCT_IOTENTERPRISES) strcat (osname, ""); else strcat (osname, products[prod]); From 283583c5f24000dc4a5872725d21c4313d13350f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 9 Feb 2023 21:25:03 +0100 Subject: [PATCH 161/767] Cygwin: mkdir: use correct default permissions filtered by umask Older coreutils created directories with mode bits filtered through umask. Newer coreutils creates directories with full permissions, 0777 by default. This new coreutils behaviour uncovered the fact that default ACEs for newly created directories were not filtered by umask starting with commit bc444e5aa4ca. Fix it by applying umask on the default ACEs. Fixes: bc444e5aa4ca ("Reapply POSIX ACL change.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/release/3.4.6 | 3 +++ winsup/cygwin/sec/base.cc | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/release/3.4.6 b/winsup/cygwin/release/3.4.6 index c21c44fbf5..f9288dc799 100644 --- a/winsup/cygwin/release/3.4.6 +++ b/winsup/cygwin/release/3.4.6 @@ -6,3 +6,6 @@ Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252916.html Don't reject valid server and share names when mounting. Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252928.html + +Create directories with correctly umask-filtered default ACEs. +Addresses: https://cygwin.com/pipermail/cygwin/2023-February/253037.html diff --git a/winsup/cygwin/sec/base.cc b/winsup/cygwin/sec/base.cc index dc85ca72ac..e84bc2aee7 100644 --- a/winsup/cygwin/sec/base.cc +++ b/winsup/cygwin/sec/base.cc @@ -495,23 +495,25 @@ set_created_file_access (HANDLE handle, path_conv &pc, mode_t attr) S_ISGID bit is set, propagate it. */ if (S_ISDIR (attr)) { + mode_t def_attr = attr & ~cygheap->umask; + if (searchace (aclp, nentries, DEF_USER_OBJ) < 0) { aclp[nentries].a_type = DEF_USER_OBJ; aclp[nentries].a_id = ILLEGAL_UID; - aclp[nentries++].a_perm = (attr >> 6) & S_IRWXO; + aclp[nentries++].a_perm = (def_attr >> 6) & S_IRWXO; } if (searchace (aclp, nentries, DEF_GROUP_OBJ) < 0) { aclp[nentries].a_type = DEF_GROUP_OBJ; aclp[nentries].a_id = ILLEGAL_GID; - aclp[nentries++].a_perm = (attr >> 3) & S_IRWXO; + aclp[nentries++].a_perm = (def_attr >> 3) & S_IRWXO; } if (searchace (aclp, nentries, DEF_OTHER_OBJ) < 0) { aclp[nentries].a_type = DEF_OTHER_OBJ; aclp[nentries].a_id = ILLEGAL_UID; - aclp[nentries++].a_perm = attr & S_IRWXO; + aclp[nentries++].a_perm = def_attr & S_IRWXO; } if (attr_rd & S_ISGID) attr |= S_ISGID; From 9afd4c055814ddcb51ba9cc0e99250e5ded852cf Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 9 Feb 2023 21:47:15 +0100 Subject: [PATCH 162/767] Cygwin: chmod: don't drop default ACEs from directory ACLs commit bc444e5aa4ca introduced a call to get_posix_access() with a NULL pointer for the mode_t parameter because the value is not needed later on... entirely ignoring the fact that the mode_t bits are checked for the object being a directory. In turn, the get_posix_access() call never checked for default ACEs and returned only the standard ACEs. Thus, every chmod call on a directory dropped the default ACEs from its permissions, as well as the default NULL deny-ACE used to store specific bits. It got also impossible to set the sgid bit on directories. Fixes: bc444e5aa4ca ("Reapply POSIX ACL changes.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/disk_file.cc | 3 ++- winsup/cygwin/release/3.4.6 | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 6eb466e9c6..15dc24ffef 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -764,11 +764,12 @@ fhandler_disk_file::fchmod (mode_t mode) aclent_t *aclp; bool standard_acl = false; int nentries, idx; + mode_t attr = pc.isdir () ? S_IFDIR : 0; if (!get_file_sd (get_handle (), pc, sd, false)) { aclp = (aclent_t *) tp.c_get (); - if ((nentries = get_posix_access (sd, NULL, &uid, &gid, + if ((nentries = get_posix_access (sd, &attr, &uid, &gid, aclp, MAX_ACL_ENTRIES, &standard_acl)) >= 0) { diff --git a/winsup/cygwin/release/3.4.6 b/winsup/cygwin/release/3.4.6 index f9288dc799..ccc168a958 100644 --- a/winsup/cygwin/release/3.4.6 +++ b/winsup/cygwin/release/3.4.6 @@ -9,3 +9,6 @@ Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252928.html Create directories with correctly umask-filtered default ACEs. Addresses: https://cygwin.com/pipermail/cygwin/2023-February/253037.html + +Don't accidentally drop the default ACEs when chmod'ing directories. +Addresses: https://cygwin.com/pipermail/cygwin/2023-February/253037.html From 498fce80ef33d6ee11aed6f3bd8feda277bc4b30 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 9 Feb 2023 21:55:18 +0100 Subject: [PATCH 163/767] Cygwin: get_posix_access: Make mode_t parameter mandatory Avoid the mistake fixed in the preceeding commit by passing the mode_t argument by reference. This also affects a couple other functions calling get_posix_access in turn. Fixes: bc444e5aa4ca ("Reapply POSIX ACL changes.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/disk_file.cc | 10 +++++----- winsup/cygwin/fhandler/mqueue.cc | 2 +- winsup/cygwin/fhandler/procsys.cc | 6 +++--- winsup/cygwin/fhandler/pty.cc | 12 ++++++------ winsup/cygwin/fhandler/registry.cc | 2 +- winsup/cygwin/local_includes/security.h | 8 ++++---- winsup/cygwin/sec/acl.cc | 19 +++++++------------ winsup/cygwin/sec/base.cc | 8 ++++---- 8 files changed, 31 insertions(+), 36 deletions(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 15dc24ffef..8528f7f8d4 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -464,16 +464,16 @@ fhandler_base::fstat_helper (struct stat *buf) else if (pc.issymlink ()) { buf->st_size = pc.get_symlink_length (); + get_file_attribute (h, pc, buf->st_mode, + &buf->st_uid, &buf->st_gid); /* symlinks are everything for everyone! */ buf->st_mode = S_IFLNK | S_IRWXU | S_IRWXG | S_IRWXO; - get_file_attribute (h, pc, NULL, - &buf->st_uid, &buf->st_gid); goto done; } else if (pc.issocket ()) buf->st_mode = S_IFSOCK; - if (!get_file_attribute (h, pc, &buf->st_mode, &buf->st_uid, &buf->st_gid)) + if (!get_file_attribute (h, pc, buf->st_mode, &buf->st_uid, &buf->st_gid)) { /* If read-only attribute is set, modify ntsec return value */ if (::has_attribute (attributes, FILE_ATTRIBUTE_READONLY) @@ -769,7 +769,7 @@ fhandler_disk_file::fchmod (mode_t mode) if (!get_file_sd (get_handle (), pc, sd, false)) { aclp = (aclent_t *) tp.c_get (); - if ((nentries = get_posix_access (sd, &attr, &uid, &gid, + if ((nentries = get_posix_access (sd, attr, &uid, &gid, aclp, MAX_ACL_ENTRIES, &standard_acl)) >= 0) { @@ -879,7 +879,7 @@ fhandler_disk_file::fchown (uid_t uid, gid_t gid) goto out; aclp = (aclent_t *) tp.c_get (); - if ((nentries = get_posix_access (sd, &attr, &old_uid, &old_gid, + if ((nentries = get_posix_access (sd, attr, &old_uid, &old_gid, aclp, MAX_ACL_ENTRIES)) < 0) goto out; diff --git a/winsup/cygwin/fhandler/mqueue.cc b/winsup/cygwin/fhandler/mqueue.cc index 6b94bca855..2bf2cb0ea7 100644 --- a/winsup/cygwin/fhandler/mqueue.cc +++ b/winsup/cygwin/fhandler/mqueue.cc @@ -251,7 +251,7 @@ fhandler_mqueue::mqinfo_open (int flags) __seterrno_from_nt_status (status); return NULL; } - if (get_file_attribute (get_handle (), pc, &mode, NULL, NULL)) + if (get_file_attribute (get_handle (), pc, mode, NULL, NULL)) mode = STD_RBITS | STD_WBITS; return _mqinfo (fsi.EndOfFile.QuadPart, mode, flags, true); diff --git a/winsup/cygwin/fhandler/procsys.cc b/winsup/cygwin/fhandler/procsys.cc index cd1d35984d..4fa00481ad 100644 --- a/winsup/cygwin/fhandler/procsys.cc +++ b/winsup/cygwin/fhandler/procsys.cc @@ -86,7 +86,7 @@ fhandler_procsys::exists (struct stat *buf) { /* If requested, check permissions. */ if (buf) - get_object_attribute (h, &buf->st_uid, &buf->st_gid, &buf->st_mode); + get_object_attribute (h, &buf->st_uid, &buf->st_gid, buf->st_mode); NtClose (h); return virt_symlink; } @@ -99,7 +99,7 @@ fhandler_procsys::exists (struct stat *buf) { /* If requested, check permissions. */ if (buf) - get_object_attribute (h, &buf->st_uid, &buf->st_gid, &buf->st_mode); + get_object_attribute (h, &buf->st_uid, &buf->st_gid, buf->st_mode); NtClose (h); return virt_directory; } @@ -164,7 +164,7 @@ fhandler_procsys::exists (struct stat *buf) /* If requested, check permissions. If this is a parent handle from the above desperate parent check, skip. */ if (buf && !desperate_parent_check) - get_object_attribute (h, &buf->st_uid, &buf->st_gid, &buf->st_mode); + get_object_attribute (h, &buf->st_uid, &buf->st_gid, buf->st_mode); /* Check for the device type. */ status = NtQueryVolumeInformationFile (h, &io, &ffdi, sizeof ffdi, diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 7187095804..0dac80a163 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -1793,7 +1793,7 @@ fhandler_pty_slave::fstat (struct stat *st) st->st_mode = S_IFCHR; if (!input_available_event || get_object_attribute (input_available_event, &st->st_uid, &st->st_gid, - &st->st_mode)) + st->st_mode)) { /* If we can't access the ACL, or if the tty doesn't actually exist, then fake uid and gid to strict, system-like values. */ @@ -1839,7 +1839,7 @@ fhandler_pty_slave::facl (int cmd, int nentries, aclent_t *aclbufp) if (!input_available_event || get_object_sd (input_available_event, sd)) { - res = get_posix_access (NULL, &attr, NULL, NULL, aclbufp, nentries); + res = get_posix_access (NULL, attr, NULL, NULL, aclbufp, nentries); if (aclbufp && res == MIN_ACL_ENTRIES) { aclbufp[0].a_perm = S_IROTH | S_IWOTH; @@ -1849,9 +1849,9 @@ fhandler_pty_slave::facl (int cmd, int nentries, aclent_t *aclbufp) break; } if (cmd == GETACL) - res = get_posix_access (sd, &attr, NULL, NULL, aclbufp, nentries); + res = get_posix_access (sd, attr, NULL, NULL, aclbufp, nentries); else - res = get_posix_access (sd, &attr, NULL, NULL, NULL, 0); + res = get_posix_access (sd, attr, NULL, NULL, NULL, 0); break; default: set_errno (EINVAL); @@ -1935,7 +1935,7 @@ fhandler_pty_slave::fchmod (mode_t mode) } sd.malloc (sizeof (SECURITY_DESCRIPTOR)); RtlCreateSecurityDescriptor (sd, SECURITY_DESCRIPTOR_REVISION); - if (!get_object_attribute (input_available_event, &uid, &gid, &orig_mode) + if (!get_object_attribute (input_available_event, &uid, &gid, orig_mode) && !create_object_sd_from_attribute (uid, gid, S_IFCHR | mode, sd)) ret = fch_set_sd (sd, false); errout: @@ -1964,7 +1964,7 @@ fhandler_pty_slave::fchown (uid_t uid, gid_t gid) } sd.malloc (sizeof (SECURITY_DESCRIPTOR)); RtlCreateSecurityDescriptor (sd, SECURITY_DESCRIPTOR_REVISION); - if (!get_object_attribute (input_available_event, &o_uid, &o_gid, &mode)) + if (!get_object_attribute (input_available_event, &o_uid, &o_gid, mode)) { if (uid == ILLEGAL_UID) uid = o_uid; diff --git a/winsup/cygwin/fhandler/registry.cc b/winsup/cygwin/fhandler/registry.cc index 2830c708aa..ac413af9bb 100644 --- a/winsup/cygwin/fhandler/registry.cc +++ b/winsup/cygwin/fhandler/registry.cc @@ -552,7 +552,7 @@ fhandler_registry::fstat (struct stat *buf) } uid_t uid; gid_t gid; - if (get_reg_attribute (hKey, &buf->st_mode, &uid, &gid) == 0) + if (get_reg_attribute (hKey, buf->st_mode, &uid, &gid) == 0) { buf->st_uid = uid; buf->st_gid = gid; diff --git a/winsup/cygwin/local_includes/security.h b/winsup/cygwin/local_includes/security.h index 41b4e275f0..0316b753d4 100644 --- a/winsup/cygwin/local_includes/security.h +++ b/winsup/cygwin/local_includes/security.h @@ -411,17 +411,17 @@ legal_sid_type (SID_NAME_USE type) class path_conv; /* File manipulation */ -int get_file_attribute (HANDLE, path_conv &, mode_t *, +int get_file_attribute (HANDLE, path_conv &, mode_t &, uid_t *, gid_t *); int set_created_file_access (HANDLE, path_conv &, mode_t); int get_object_sd (HANDLE, security_descriptor &); -int get_object_attribute (HANDLE, uid_t *, gid_t *, mode_t *); +int get_object_attribute (HANDLE, uid_t *, gid_t *, mode_t &); int set_object_attribute (HANDLE, uid_t, gid_t, mode_t); int create_object_sd_from_attribute (uid_t, gid_t, mode_t, security_descriptor &); int set_object_sd (HANDLE, security_descriptor &, bool); -int get_reg_attribute (HKEY hkey, mode_t *, uid_t *, gid_t *); +int get_reg_attribute (HKEY hkey, mode_t &, uid_t *, gid_t *); LONG get_file_sd (HANDLE fh, path_conv &, security_descriptor &, bool); LONG set_file_sd (HANDLE fh, path_conv &, security_descriptor &, bool); bool add_access_allowed_ace (PACL, DWORD, PSID, size_t &, DWORD); @@ -441,7 +441,7 @@ struct acl; int searchace (struct acl *, int, int, uid_t id = ILLEGAL_UID); PSECURITY_DESCRIPTOR set_posix_access (mode_t, uid_t, gid_t, struct acl *, int, security_descriptor &, bool); -int get_posix_access (PSECURITY_DESCRIPTOR, mode_t *, uid_t *, gid_t *, +int get_posix_access (PSECURITY_DESCRIPTOR, mode_t &, uid_t *, gid_t *, struct acl *, int, bool * = NULL); int getacl (HANDLE, path_conv &, int, struct acl *); int setacl (HANDLE, path_conv &, int, struct acl *, bool &); diff --git a/winsup/cygwin/sec/acl.cc b/winsup/cygwin/sec/acl.cc index 5c23e22b60..2fd08ad625 100644 --- a/winsup/cygwin/sec/acl.cc +++ b/winsup/cygwin/sec/acl.cc @@ -577,7 +577,7 @@ setacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp, if (get_file_sd (handle, pc, sd, false)) return -1; - if (get_posix_access (sd, &attr, &uid, &gid, NULL, 0) < 0) + if (get_posix_access (sd, attr, &uid, &gid, NULL, 0) < 0) return -1; if (!set_posix_access (attr, uid, gid, aclbufp, nentries, sd_ret, pc.fs_is_samba ())) @@ -644,7 +644,7 @@ getace (aclent_t &acl, int type, int id, DWORD win_ace_mask, stock POSIX perms even if Administrators and SYSTEM is in the ACE. */ int get_posix_access (PSECURITY_DESCRIPTOR psd, - mode_t *attr_ret, uid_t *uid_ret, gid_t *gid_ret, + mode_t &attr_ret, uid_t *uid_ret, gid_t *gid_ret, aclent_t *aclbufp, int nentries, bool *std_acl) { tmp_pathbuf tp; @@ -689,8 +689,7 @@ get_posix_access (PSECURITY_DESCRIPTOR psd, unreadable. */ if (!psd) { - if (attr_ret) - *attr_ret &= S_IFMT; + attr_ret &= S_IFMT; if (uid_ret) *uid_ret = ACL_UNDEFINED_ID; if (gid_ret) @@ -732,11 +731,8 @@ get_posix_access (PSECURITY_DESCRIPTOR psd, /* Set uidret, gidret, and initalize attributes. */ uid = owner_sid.get_uid (&cldap); gid = group_sid.get_gid (&cldap); - if (attr_ret) - { - attr = *attr_ret & S_IFMT; - just_created = *attr_ret & S_JUSTCREATED; - } + attr = attr_ret & S_IFMT; + just_created = attr_ret & S_JUSTCREATED; /* Remember the fact that owner and group are the same account. */ owner_eq_group = owner_sid == group_sid; @@ -1174,8 +1170,7 @@ get_posix_access (PSECURITY_DESCRIPTOR psd, *uid_ret = uid; if (gid_ret) *gid_ret = gid; - if (attr_ret) - *attr_ret = attr; + attr_ret = attr; if (aclbufp) { if (pos > nentries) @@ -1201,7 +1196,7 @@ getacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp) if (get_file_sd (handle, pc, sd, false)) return -1; - int pos = get_posix_access (sd, &attr, NULL, NULL, aclbufp, nentries); + int pos = get_posix_access (sd, attr, NULL, NULL, aclbufp, nentries); syscall_printf ("%R = getacl(%S)", pos, pc.get_nt_native_path ()); return pos; } diff --git a/winsup/cygwin/sec/base.cc b/winsup/cygwin/sec/base.cc index e84bc2aee7..8b04b40b49 100644 --- a/winsup/cygwin/sec/base.cc +++ b/winsup/cygwin/sec/base.cc @@ -276,7 +276,7 @@ get_reg_sd (HANDLE handle, security_descriptor &sd_ret) } int -get_reg_attribute (HKEY hkey, mode_t *attribute, uid_t *uidret, +get_reg_attribute (HKEY hkey, mode_t &attribute, uid_t *uidret, gid_t *gidret) { security_descriptor sd; @@ -292,7 +292,7 @@ get_reg_attribute (HKEY hkey, mode_t *attribute, uid_t *uidret, int get_file_attribute (HANDLE handle, path_conv &pc, - mode_t *attribute, uid_t *uidret, gid_t *gidret) + mode_t &attribute, uid_t *uidret, gid_t *gidret) { if (pc.has_acls ()) { @@ -399,7 +399,7 @@ get_object_sd (HANDLE handle, security_descriptor &sd) int get_object_attribute (HANDLE handle, uid_t *uidret, gid_t *gidret, - mode_t *attribute) + mode_t &attribute) { security_descriptor sd; @@ -462,7 +462,7 @@ set_created_file_access (HANDLE handle, path_conv &pc, mode_t attr) attr |= S_IFDIR; attr_rd = attr; aclp = (aclent_t *) tp.c_get (); - if ((nentries = get_posix_access (sd, &attr_rd, &uid, &gid, aclp, + if ((nentries = get_posix_access (sd, attr_rd, &uid, &gid, aclp, MAX_ACL_ENTRIES, &std_acl)) >= 0) { if (S_ISLNK (attr)) From b030a77dff515a857cf60bfc53a2a5e5e239cbb2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 11 Feb 2023 12:53:34 +0100 Subject: [PATCH 164/767] Cygwin: cygcheck: fix dependency search Spaces are filtered out by PathMatchSpecA so they can't be used as pattern anchors. Overwrite all spaces with commas and fix the search expresion accordingly. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/mingw/cygcheck.cc | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 66af2ce0b6..b5bad4ec20 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2430,15 +2430,22 @@ collect_pkg_info (FILE *fp, ini_package_info *pi, bool search) else { /* For pattern matching we need a standarized format. - Make sure all deps are prepended by a space and all deps - are trailed by a comma. Note the missing space, that's - deliberate to keep it in the stored string. */ + Make sure all deps are prepended and trailed by a comma. + Note the missing space after the colon, that's deliberate + to keep it in the stored string. Originally we kept the + spaces in, but spaces are filtered out by PathMatchSpecA, + so we now replace all space by comma here. */ char *start = buf + strlen ("depends2:"); size_t len = strlen (start); vinfo->depends2 = (char *) calloc (len + 2, 1); if (vinfo->depends2) - *stpcpy (vinfo->depends2, start) = ','; + { + *stpcpy (vinfo->depends2, start) = ','; + char *cp = vinfo->depends2; + while ((cp = strchr (cp, ' '))) + *cp = ','; + } } } else if (!strncmp (buf, "build-depends: ", @@ -2455,7 +2462,12 @@ collect_pkg_info (FILE *fp, ini_package_info *pi, bool search) vinfo->build_depends = (char *) calloc (len + 2, 1); if (vinfo->build_depends) - *stpcpy (vinfo->build_depends, start) = ','; + { + *stpcpy (vinfo->build_depends, start) = ','; + char *cp = vinfo->build_depends; + while ((cp = strchr (cp, ' '))) + *cp++ = ','; + } } } } @@ -2810,7 +2822,7 @@ package_search (char **search, int selector) ep = ext_search; if (selector) { - ep = stpcpy (ep, "* "); + ep = stpcpy (ep, "*,"); ep = stpcpy (ep, *search); ep = stpcpy (ep, ",*"); } From f307fefe16da6134d1a3caa2ccebabdfdb1eb773 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 11 Feb 2023 12:58:13 +0100 Subject: [PATCH 165/767] Cygwin: cygcheck: fix default info selector evaluation Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/mingw/cygcheck.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index b5bad4ec20..9d6f192037 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -2645,7 +2645,7 @@ package_info (char **search, int selector) return 1; if ((selector & INFO_ALL) == 0) - selector = INFO_ALL; + selector |= INFO_ALL; inst_pkgs = get_installed_packages (NULL, &inst_pkg_count); From 210eca1b31090d4c93c22a3152f1faa795dfd775 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 12 Feb 2023 21:42:26 +0100 Subject: [PATCH 166/767] Cygwin: socket.h: define missing IPTOS_LOWCOST/IPTOS_MINCOST Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/include/cygwin/socket.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/include/cygwin/socket.h b/winsup/cygwin/include/cygwin/socket.h index 33f18091c6..dc56cb0f57 100644 --- a/winsup/cygwin/include/cygwin/socket.h +++ b/winsup/cygwin/include/cygwin/socket.h @@ -225,6 +225,8 @@ struct OLD_msghdr #define IPTOS_LOWDELAY 0x10 #define IPTOS_THROUGHPUT 0x08 #define IPTOS_RELIABILITY 0x04 +#define IPTOS_LOWCOST 0x02 +#define IPTOS_MINCOST IPTOS_LOWCOST #endif /* These need to appear somewhere around here */ From 60c25da90d015f27c5697c6db7ab0557585d09aa Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 12:20:20 +0100 Subject: [PATCH 167/767] Cygwin: mbrtowi: define replacement for mbrtowc, returning UTF-32 value Given how UTF-16 isn't capable to hold all Unicode chars in a single wchar_t, we need a function returning a wint_t value representing a UTF-32 value for comparison functions. Fortunately the important wide character functions like towupper/towlower, isw<class>, iswctype, etc, already take wint_t values and newlib handles them as UTF-32. If only we had switched wchar_t to 32 bit way back when... sigh. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/wchar.h | 4 ++++ winsup/cygwin/strfuncs.cc | 32 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index b2ddd45756..3d746c29b9 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -39,6 +39,10 @@ extern wctomb_f __utf8_wctomb; #define __WCTOMB (__get_current_locale ()->wctomb) +/* replacement function for mbrtowc, returning a wint_t representing + a UTF-32 value. Defined in strfuncs.cc */ +extern wint_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); + #ifdef __cplusplus } #endif diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 0ab2290539..0b9d8ac1f6 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -112,6 +112,38 @@ transform_chars_af_unix (PWCHAR out, const char *path, __socklen_t len) return out; } +/* replacement function for mbrtowc, returning a wint_t representing + a UTF-32 value. */ +extern "C" wint_t +mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) +{ + size_t len, len2; + wchar_t w1, w2; + + len = mbrtowc (&w1, s, n, ps); + if (len == (size_t) -1 || len == (size_t) -2) + return len; + *pwi = w1; + /* Convert surrogate pair to wint_t value */ + if (len > 0 && w1 >= 0xd800 && w1 <= 0xdbff) + { + s += len; + n -= len; + len2 = mbrtowc (&w2, s, n, ps); + if (len2 > 0 && w2 >= 0xdc00 && w2 <= 0xdfff) + { + len += len2; + *pwi = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000; + } + else + { + len = (size_t) -1; + errno = EILSEQ; + } + } + return len; +} + /* The SJIS, JIS and eucJP conversion in newlib does not use UTF as wchar_t character representation. That's unfortunate for us since we require UTF for the OS. What we do here is to have our own From eac830e0feac1e5f4fbb9637506bd071e7530a1f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 12:22:36 +0100 Subject: [PATCH 168/767] Cygwin: __collate_range_cmp: handle Unicode values >= 0x10000 So far the input to __collate_range_cmp was handled as a wchar_t. Change that to handle it as wint_t holding a UTF-32 value and add creating surrogate pairs for the call to wcscoll. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index ddd85bea16..0d204929d2 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1176,8 +1176,20 @@ strcoll (const char *__restrict s1, const char *__restrict s2) extern "C" int __collate_range_cmp (int c1, int c2) { - wchar_t s1[2] = { (wchar_t) c1, L'\0' }; - wchar_t s2[2] = { (wchar_t) c2, L'\0' }; + wchar_t s1[3] = { (wchar_t) c1, L'\0', L'\0' }; + wchar_t s2[3] = { (wchar_t) c2, L'\0', L'\0' }; + + /* Handle Unicode values >= 0x10000, convert to surrogate pair */ + if (c1 > 0xffff) + { + s1[0] = ((c1 - 0x10000) >> 10) + 0xd800; + s1[1] = ((c1 - 0x10000) & 0x3ff) + 0xdc00; + } + if (c2 > 0xffff) + { + s2[0] = ((c2 - 0x10000) >> 10) + 0xd800; + s2[1] = ((c2 - 0x10000) & 0x3ff) + 0xdc00; + } return wcscoll (s1, s2); } From 99da4956c5976770c1c1ce3d284c60c0cb5f1b57 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 12:47:54 +0100 Subject: [PATCH 169/767] Cygwin: fnmatch: convert wchar_t to wint_t ...thus handling all Unicode values sanely. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/libc/fnmatch.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index 410254ab86..06732426b9 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -52,7 +52,7 @@ __FBSDID("$FreeBSD: head/lib/libc/gen/fnmatch.c 288309 2015-09-27 12:52:18Z jill * 1. Patterns with illegal byte sequences match nothing. * 2. Illegal byte sequences in the "string" argument are handled by treating * them as single-byte characters with a value of the first byte of the - * sequence cast to wchar_t. + * sequence cast to wint_t. * 3. Multibyte conversion state objects (mbstate_t) are passed around and * used for most, but not all, conversions. Further work will be required * to support state-dependent encodings. @@ -72,7 +72,7 @@ __FBSDID("$FreeBSD: head/lib/libc/gen/fnmatch.c 288309 2015-09-27 12:52:18Z jill #define RANGE_NOMATCH 0 #define RANGE_ERROR (-1) -static int rangematch(const char *, wchar_t, int, char **, mbstate_t *); +static int rangematch(const char *, wint_t, int, char **, mbstate_t *); static int fnmatch1(const char *, const char *, const char *, int, mbstate_t, mbstate_t); @@ -92,16 +92,16 @@ fnmatch1(const char *pattern, const char *string, const char *stringstart, mbstate_t bt_patmbs, bt_strmbs; char *newp; char c; - wchar_t pc, sc; + wint_t pc, sc; size_t pclen, sclen; bt_pattern = bt_string = NULL; for (;;) { - pclen = mbrtowc(&pc, pattern, MB_LEN_MAX, &patmbs); + pclen = mbrtowi(&pc, pattern, MB_LEN_MAX, &patmbs); if (pclen == (size_t)-1 || pclen == (size_t)-2) return (FNM_NOMATCH); pattern += pclen; - sclen = mbrtowc(&sc, string, MB_LEN_MAX, &strmbs); + sclen = mbrtowi(&sc, string, MB_LEN_MAX, &strmbs); if (sclen == (size_t)-1 || sclen == (size_t)-2) { sc = (unsigned char)*string; sclen = 1; @@ -183,7 +183,7 @@ fnmatch1(const char *pattern, const char *string, const char *stringstart, break; case '\\': if (!(flags & FNM_NOESCAPE)) { - pclen = mbrtowc(&pc, pattern, MB_LEN_MAX, + pclen = mbrtowi(&pc, pattern, MB_LEN_MAX, &patmbs); if (pclen == (size_t)-1 || pclen == (size_t)-2) return (FNM_NOMATCH); @@ -208,7 +208,7 @@ fnmatch1(const char *pattern, const char *string, const char *stringstart, */ if (bt_pattern == NULL) return (FNM_NOMATCH); - sclen = mbrtowc(&sc, bt_string, MB_LEN_MAX, + sclen = mbrtowi(&sc, bt_string, MB_LEN_MAX, &bt_strmbs); if (sclen == (size_t)-1 || sclen == (size_t)-2) { @@ -232,11 +232,11 @@ fnmatch1(const char *pattern, const char *string, const char *stringstart, } static int -rangematch(const char *pattern, wchar_t test, int flags, char **newp, +rangematch(const char *pattern, wint_t test, int flags, char **newp, mbstate_t *patmbs) { int negate, ok; - wchar_t c, c2; + wint_t c, c2; size_t pclen; const char *origpat; #ifndef __CYGWIN__ @@ -274,7 +274,7 @@ rangematch(const char *pattern, wchar_t test, int flags, char **newp, return (RANGE_NOMATCH); } else if (*pattern == '\\' && !(flags & FNM_NOESCAPE)) pattern++; - pclen = mbrtowc(&c, pattern, MB_LEN_MAX, patmbs); + pclen = mbrtowi(&c, pattern, MB_LEN_MAX, patmbs); if (pclen == (size_t)-1 || pclen == (size_t)-2) return (RANGE_NOMATCH); pattern += pclen; @@ -287,7 +287,7 @@ rangematch(const char *pattern, wchar_t test, int flags, char **newp, if (*++pattern == '\\' && !(flags & FNM_NOESCAPE)) if (*pattern != EOS) pattern++; - pclen = mbrtowc(&c2, pattern, MB_LEN_MAX, patmbs); + pclen = mbrtowi(&c2, pattern, MB_LEN_MAX, patmbs); if (pclen == (size_t)-1 || pclen == (size_t)-2) return (RANGE_NOMATCH); pattern += pclen; From 0321fb5736545b5535e640b99b550ed6249f0e0c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 12:48:03 +0100 Subject: [PATCH 170/767] Cygwin: glob: convert wchar_t to wint_t ...thus handling all Unicode values sanely. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 0d9f9c8853..61fa610d60 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -71,7 +71,7 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex * GLOB_NOCHECK is specified. * 2. Illegal byte sequences in filenames are handled by treating them as * single-byte characters with a value of the first byte of the sequence - * cast to wchar_t. + * cast to wint_t. * 3. State-dependent encodings are not currently supported. */ @@ -162,7 +162,7 @@ static int compare(const void *, const void *); static int g_Ctoc(const Char *, char *, size_t); static int g_lstat(Char *, struct stat *, glob_t *); static DIR *g_opendir(Char *, glob_t *); -static const Char *g_strchr(const Char *, wchar_t); +static const Char *g_strchr(const Char *, wint_t); #ifdef notdef static Char *g_strcat(Char *, const Char *); #endif @@ -188,7 +188,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int size_t limit; Char *bufnext, *bufend, patbuf[MAXPATHLEN], prot; mbstate_t mbs; - wchar_t wc; + wint_t wc; size_t clen; patnext = pattern; @@ -213,7 +213,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int if (flags & GLOB_NOESCAPE) { memset(&mbs, 0, sizeof(mbs)); while (bufend - bufnext >= MB_CUR_MAX) { - clen = mbrtowc(&wc, patnext, MB_LEN_MAX, &mbs); + clen = mbrtowi(&wc, patnext, MB_LEN_MAX, &mbs); if (clen == (size_t)-1 || clen == (size_t)-2) return (GLOB_NOMATCH); else if (clen == 0) @@ -233,7 +233,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int prot = M_PROTECT; } else prot = 0; - clen = mbrtowc(&wc, patnext, MB_LEN_MAX, &mbs); + clen = mbrtowi(&wc, patnext, MB_LEN_MAX, &mbs); if (clen == (size_t)-1 || clen == (size_t)-2) return (GLOB_NOMATCH); else if (clen == 0) @@ -663,7 +663,7 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last, while ((dp = (*readdirfunc)(dirp))) { char *sc; Char *dc; - wchar_t wc; + wint_t wc; size_t clen; mbstate_t mbs; @@ -674,7 +674,7 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last, dc = pathend; sc = dp->d_name; while (dc < pathend_last) { - clen = mbrtowc(&wc, sc, MB_LEN_MAX, &mbs); + clen = mbrtowi(&wc, sc, MB_LEN_MAX, &mbs); if (clen == (size_t)-1 || clen == (size_t)-2) { wc = *sc; clen = 1; @@ -883,7 +883,7 @@ g_stat(Char *fn, struct stat *sb, glob_t *pglob) } static const Char * -g_strchr(const Char *str, wchar_t ch) +g_strchr(const Char *str, wint_t ch) { do { From 588624da2b0a921c7e72d12d19c2ac3321de0326 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 13:02:15 +0100 Subject: [PATCH 171/767] Cygwin: regex: convert wchar_t to wint_t - call mbrtowi instead of mbrtowc - drop Cygwin-only surrogate handling from wgetnext and xmbrtowc since it's encapsulated in mbrtowi. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/regcomp.c | 25 +++++-------------------- winsup/cygwin/regex/regexec.c | 22 +++------------------- 2 files changed, 8 insertions(+), 39 deletions(-) diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index a377e56fac..aef104c1ea 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -921,7 +921,7 @@ p_b_coll_elem(struct parse *p, struct cname *cp; int len; mbstate_t mbs; - wchar_t wc; + wint_t wc; size_t clen; while (MORE() && !SEETWO(endc, ']')) @@ -935,7 +935,7 @@ p_b_coll_elem(struct parse *p, if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0') return(cp->code); /* known name */ memset(&mbs, 0, sizeof(mbs)); - if ((clen = mbrtowc(&wc, sp, len, &mbs)) == len) + if ((clen = mbrtowi(&wc, sp, len, &mbs)) == len) return (wc); /* single character */ else if (clen == (size_t)-1 || clen == (size_t)-2) SETERROR(REG_ILLSEQ); @@ -1119,8 +1119,7 @@ static wint_t wgetnext(struct parse *p) { mbstate_t mbs; - wchar_t wc; - wint_t ret; + wint_t wc; size_t n; #ifdef __CYGWIN__ @@ -1136,29 +1135,15 @@ wgetnext(struct parse *p) return (wint_t) (unsigned char) *p->next++; #endif memset(&mbs, 0, sizeof(mbs)); - n = mbrtowc(&wc, p->next, p->end - p->next, &mbs); + n = mbrtowi(&wc, p->next, p->end - p->next, &mbs); if (n == (size_t)-1 || n == (size_t)-2) { SETERROR(REG_ILLSEQ); return (0); } - ret = wc; if (n == 0) n = 1; - else if (sizeof (wchar_t) == 2 && wc >= 0xd800 && wc <= 0xdbff) { - /* UTF-16 surrogate pair. Fetch second half and - compute UTF-32 value */ - size_t n2 = mbrtowc(&wc, p->next + n, - p->end - p->next - n, &mbs); - if (n2 == 0 || n2 == (size_t)-1 || n2 == (size_t)-2) { - SETERROR(REG_ILLSEQ); - return (0); - } - ret = (((ret & 0x3ff) << 10) | (wc & 0x3ff)) - + 0x10000; - n += n2; - } p->next += n; - return (ret); + return (wc); } static size_t diff --git a/winsup/cygwin/regex/regexec.c b/winsup/cygwin/regex/regexec.c index c400578b89..94e95e65ab 100644 --- a/winsup/cygwin/regex/regexec.c +++ b/winsup/cygwin/regex/regexec.c @@ -68,9 +68,9 @@ static __inline size_t xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy) { size_t nr; - wchar_t wc; + wint_t wc; - nr = mbrtowc(&wc, s, n, mbs); + nr = mbrtowi(&wc, s, n, mbs); if (wi != NULL) *wi = wc; if (nr == 0) @@ -80,24 +80,8 @@ xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy) if (wi != NULL) *wi = dummy; return (1); - } else { - if (sizeof (wchar_t) == 2 && wc >= 0xd800 && wc <= 0xdbff) { - /* UTF-16 surrogate pair. Fetch second half and - compute UTF-32 value */ - size_t n2 = mbrtowc(&wc, s + nr, n - nr, mbs); - if (n2 == 0 || n2 == (size_t)-1 || n2 == (size_t)-2) { - memset(mbs, 0, sizeof(*mbs)); - if (wi != NULL) - *wi = dummy; - return (1); - } - if (wi != NULL) - *wi = (((*wi & 0x3ff) << 10) | (wc & 0x3ff)) - + 0x10000; - nr += n2; - } + } else return (nr); - } } static __inline size_t From 1387ea9f984d5a7aa096a66b67d61dc2cc565d21 Mon Sep 17 00:00:00 2001 From: Jon Turney <jon.turney@dronecode.org.uk> Date: Tue, 14 Feb 2023 13:52:39 +0000 Subject: [PATCH 172/767] Cygwin: dumper: also link with libzstd, as libbfd may require it Also allow that linkage to be dynamic, as libzstd-devel doesn't currently provide a static library. --- .appveyor.yml | 1 + .github/workflows/cygwin.yml | 1 + winsup/configure.ac | 10 ++++++---- winsup/doc/faq-programming.xml | 2 +- winsup/utils/Makefile.am | 7 ++----- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 50a9101b7e..9f20f6d835 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -35,6 +35,7 @@ patch,\ cocom,\ gettext-devel,\ libiconv-devel,\ +libzstd-devel,\ zlib-devel,\ %PKGARCH%-gcc-core,\ %PKGARCH%-gcc-g++,\ diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 10d0255ef1..575ff1fdc8 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -81,6 +81,7 @@ jobs: gettext-devel, libiconv, libiconv-devel, + libzstd-devel, make, mingw64-${{ matrix.pkgarch }}-gcc-g++, mingw64-${{ matrix.pkgarch }}-zlib, diff --git a/winsup/configure.ac b/winsup/configure.ac index 76baf0a7da..13fce0da65 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -118,10 +118,12 @@ AC_ARG_ENABLE([dumper], AM_CONDITIONAL(BUILD_DUMPER, [test "x$build_dumper" = "xyes"]) -AC_CHECK_LIB([sframe], [sframe_decode], - AC_MSG_NOTICE([Detected libsframe; Assuming that libbfd depends on it]), [true]) - -AM_CONDITIONAL(HAVE_LIBSFRAME, [test "x$ac_cv_lib_sframe_sframe_decode" = "xyes"]) +# libbfd.a doesn't have a pkgconfig file, so we guess what it's dependencies +# are, based on what's present in the build environment +BFD_LIBS="-lintl -liconv -liberty -lz" +AC_CHECK_LIB([sframe], [sframe_decode], [BFD_LIBS="${BFD_LIBS} -lsframe"]) +AC_CHECK_LIB([zstd], [ZSTD_isError], [BFD_LIBS="${BFD_LIBS} -lzstd"]) +AC_SUBST([BFD_LIBS]) AC_CONFIG_FILES([ Makefile diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index 24c7f928ea..7fc6baf254 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -684,7 +684,7 @@ installed; you at least need <literal>gcc-g++</literal>, <para> Additionally, building the <code>dumper</code> utility requires -<literal>gettext-devel</literal>, <literal>libiconv-devel</literal> +<literal>gettext-devel</literal>, <literal>libiconv-devel</literal>, <literal>libzstd-devel</literal> and <literal>zlib-devel</literal>. Building this program can be disabled with the <literal>--disable-dumper</literal> option to <literal>configure</literal>. </para> diff --git a/winsup/utils/Makefile.am b/winsup/utils/Makefile.am index f59cf9f50c..57a4f377c5 100644 --- a/winsup/utils/Makefile.am +++ b/winsup/utils/Makefile.am @@ -79,7 +79,8 @@ LDADD = -lnetapi32 cygpath_CXXFLAGS = -fno-threadsafe-statics $(AM_CXXFLAGS) cygpath_LDADD = $(LDADD) -luserenv -lntdll dumper_CXXFLAGS = -I$(top_srcdir)/../include $(AM_CXXFLAGS) -dumper_LDADD = $(LDADD) -lpsapi -lbfd -lintl -liconv -liberty -lz -lntdll +dumper_LDADD = $(LDADD) -lpsapi -lntdll -lbfd @BFD_LIBS@ +dumper_LDFLAGS = ldd_LDADD = $(LDADD) -lpsapi -lntdll mount_CXXFLAGS = -DFSTAB_ONLY $(AM_CXXFLAGS) minidumper_LDADD = $(LDADD) -ldbghelp @@ -89,10 +90,6 @@ profiler_LDADD = $(LDADD) -lntdll cygps_LDADD = $(LDADD) -lpsapi -lntdll newgrp_LDADD = $(LDADD) -luserenv -if HAVE_LIBSFRAME -dumper_LDADD += -lsframe -endif - if CROSS_BOOTSTRAP SUBDIRS = mingw endif From 1fc35f30bdc67592150592ea78f808d44c913faf Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 20:18:42 +0100 Subject: [PATCH 173/767] Cygwin: mbrtowi: fix return type bad typo: change wint_t to size_t Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/wchar.h | 2 +- winsup/cygwin/strfuncs.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index 3d746c29b9..10b44791c5 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -41,7 +41,7 @@ extern wctomb_f __utf8_wctomb; /* replacement function for mbrtowc, returning a wint_t representing a UTF-32 value. Defined in strfuncs.cc */ -extern wint_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); +extern size_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); #ifdef __cplusplus } diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 0b9d8ac1f6..d62179a1de 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -114,7 +114,7 @@ transform_chars_af_unix (PWCHAR out, const char *path, __socklen_t len) /* replacement function for mbrtowc, returning a wint_t representing a UTF-32 value. */ -extern "C" wint_t +extern "C" size_t mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) { size_t len, len2; From 7faa6465531637d76e3c0733a4d2608bf7b3a54a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 14 Feb 2023 20:22:54 +0100 Subject: [PATCH 174/767] Cygwin: fnmatch: handle named character classes Handle [:<character-class>:] expressions in range brackets. TODO: Collating symbols [.<collsym>'.] and Equivalence class expressions [=<equiv-class>=] are recognized but skipped as if they are not present at all. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/libc/fnmatch.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index 06732426b9..9829904f08 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -274,6 +274,29 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, return (RANGE_NOMATCH); } else if (*pattern == '\\' && !(flags & FNM_NOESCAPE)) pattern++; + if (*pattern == '[' && (pattern[1] == ':' || pattern[1] == '.' + || pattern[1] == '=')) { + const char ctype = *++pattern; + const char *class_p = ++pattern; + + while (*pattern + && (*pattern != ctype || pattern[1] != ']')) + ++pattern; + if (!*pattern) + return (RANGE_ERROR); + if (ctype == ':') { + size_t clen = pattern - class_p; + char class[clen + 1]; + + *stpncpy (class, class_p, clen) = '\0'; + if (iswctype (test, wctype (class))) + ok = 1; + } + pattern += 2; + /* TODO: [. and [= are just ignored for now */ + continue; + + } pclen = mbrtowi(&c, pattern, MB_LEN_MAX, patmbs); if (pclen == (size_t)-1 || pclen == (size_t)-2) return (RANGE_NOMATCH); From d6d4436145b823ac28e19fb2257aaca4d94a725b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 14:11:45 +0100 Subject: [PATCH 175/767] Cygwin: glob: handle named character classes Handle [:<character-class>:] expressions in range brackets. TODO: Collating symbols [.<collsym>'.] and Equivalence class expressions [=<equiv-class>=] are recognized but skipped as if they are not present at all. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 83 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 73 insertions(+), 10 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 61fa610d60..1e8eda903e 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -110,6 +110,8 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #define DOLLAR '$' #define DOT '.' +#define COLON ':' +#define EQUALS '=' #define EOS '\0' #define LBRACKET '[' #define NOT '!' @@ -155,9 +157,9 @@ typedef char Char; #define M_ONE META('?') #define M_RNG META('-') #define M_SET META('[') +#define M_NAMED META(':') #define ismeta(c) (((c)&M_QUOTE) != 0) - static int compare(const void *, const void *); static int g_Ctoc(const Char *, char *, size_t); static int g_lstat(Char *, struct stat *, glob_t *); @@ -181,6 +183,39 @@ static int match(Char *, Char *, Char *); static void qprintf(const char *, Char *); #endif +/* Return value is either EOS, COLON, DOT, EQUALS, or LBRACKET if no class + expression found. */ +static inline Char +check_classes_expr(const Char *&cptr, char *classbuf = NULL, + size_t classbufsize = 0) +{ + const Char *ctype = NULL; + + if (*cptr == LBRACKET && + (cptr[1] == COLON || cptr[1] == DOT || cptr[1] == EQUALS)) { + ctype = ++cptr; + while (*++cptr != EOS && + (*cptr != *ctype || cptr[1] != RBRACKET)) + ; + if (*cptr == EOS) + return EOS; + if (classbuf) { + const Char *class_p = ctype + 1; + size_t clen = cptr - class_p; + size_t idx; + + if (clen < classbufsize) { + for (idx = 0; idx < clen; ++idx) + classbuf[idx] = class_p[idx]; + classbuf[idx] = '\0'; + } else + ctype = NULL; + } + cptr++; /* Advance cptr to closing RBRACKET of class expr */ + } + return ctype ? *ctype : LBRACKET; +} + int glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int), glob_t *__restrict pglob) { @@ -296,8 +331,10 @@ globexp2(const Char *ptr, const Char *pattern, glob_t *pglob, int *rv, size_t *l for (i = 0, pe = ++ptr; *pe; pe++) if (*pe == LBRACKET) { /* Ignore everything between [] */ - for (pm = pe++; *pe != RBRACKET && *pe != EOS; pe++) - continue; + for (pm = pe++; *pe != RBRACKET && *pe != EOS; pe++) { + if (check_classes_expr (pe) == EOS) + break; + } if (*pe == EOS) { /* * We could not find a matching RBRACKET. @@ -324,8 +361,10 @@ globexp2(const Char *ptr, const Char *pattern, glob_t *pglob, int *rv, size_t *l switch (*pm) { case LBRACKET: /* Ignore everything between [] */ - for (pm1 = pm++; *pm != RBRACKET && *pm != EOS; pm++) - continue; + for (pm1 = pm++; *pm != RBRACKET && *pm != EOS; pm++) { + if (check_classes_expr (pm) == EOS) + break; + } if (*pm == EOS) { /* * We could not find a matching RBRACKET. @@ -451,7 +490,7 @@ globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob) static int glob0(const Char *pattern, glob_t *pglob, size_t *limit) { - const Char *qpatnext; + const Char *qpatnext, *qpatrbsrch; int err; size_t oldpathc; Char *bufnext, c, patbuf[MAXPATHLEN]; @@ -467,8 +506,13 @@ glob0(const Char *pattern, glob_t *pglob, size_t *limit) c = *qpatnext; if (c == NOT) ++qpatnext; - if (*qpatnext == EOS || - g_strchr(qpatnext+1, RBRACKET) == NULL) { + for (qpatrbsrch = qpatnext; + *qpatrbsrch != RBRACKET && *qpatrbsrch != EOS; + ++qpatrbsrch) { + if (check_classes_expr (qpatrbsrch) == EOS) + break; + } + if (*qpatrbsrch == EOS) { *bufnext++ = LBRACKET; if (c == NOT) --qpatnext; @@ -477,8 +521,24 @@ glob0(const Char *pattern, glob_t *pglob, size_t *limit) *bufnext++ = M_SET; if (c == NOT) *bufnext++ = M_NOT; - c = *qpatnext++; + c = *qpatnext; do { + char cclass[64]; + wctype_t type; + Char ctype; + + ctype = check_classes_expr(qpatnext, cclass, + sizeof cclass); + if (ctype) { + if (ctype == COLON && + (type = wctype (cclass))) { + *bufnext++ = M_NAMED; + *bufnext++ = CHAR (type); + } + /* TODO: [. and [= are ignored yet */ + qpatnext++; + continue; + } *bufnext++ = CHAR(c); if (*qpatnext == RANGE && (c = qpatnext[1]) != RBRACKET) { @@ -795,7 +855,10 @@ match(Char *name, Char *pat, Char *patend) if ((negate_range = ((*pat & M_MASK) == M_NOT)) != EOS) ++pat; while (((c = *pat++) & M_MASK) != M_END) - if ((*pat & M_MASK) == M_RNG) { + if ((c & M_MASK) == M_NAMED) { + if (iswctype (k, *pat++)) + ok = 1; + } else if ((*pat & M_MASK) == M_RNG) { if (__collate_load_error ? CCHAR(c) <= CCHAR(k) && CCHAR(k) <= CCHAR(pat[1]) : __collate_range_cmp(CCHAR(c), CCHAR(k)) <= 0 From 65446dd4f0025ab323d210adbfb7c83ffebc9ab8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 14:22:26 +0100 Subject: [PATCH 176/767] Cygwin: add glob/fnmatch named class support to release notes Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/release/3.5.0 | 3 +++ winsup/doc/new-features.xml | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 3529c47878..d79cf2a0d5 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -12,3 +12,6 @@ What's new: - cygcheck has new options searching for available packages in the cygwin distro, as well as getting extended info on available and installed packages. + +- fnmatch(3) and glob(3) now support named character classes in the + search pattern, i.e., [:alnum:], etc. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index e6eeb1faca..d23a990ce3 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -28,6 +28,11 @@ cygwin distro, as well as getting extended info on available and installed packages. </para></listitem> +<listitem><para> +fnmatch(3) and glob(3) now support named character classes in the +search pattern, i.e., [:alnum:], etc. +</para></listitem> + </itemizedlist> </sect2> From be67844f5da8cb6fb4c39cfdb3460e6955660b8e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 15:04:16 +0100 Subject: [PATCH 177/767] Cygwin: Makefile.am: fix rule to create version from git describe Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 125358b4b3..c34ca6ddc3 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -430,7 +430,8 @@ uname_version.c: .FORCE $(AM_V_GEN)cd $(srcdir) && \ echo "const char *uname_dev_version = \ \"$$(git rev-parse --git-dir >/dev/null 2>&1 && \ - git describe --dirty | sed -e 's/cygwin-//')\";" \ + git describe --abbrev=12 --long --match 'cygwin*' --dirty | \ + sed -e 's/cygwin-//')\";" \ > $(abs_builddir)/uname_version-pre.c && \ if [ -f $(abs_builddir)/uname_version.c ] && \ cmp $(abs_builddir)/uname_version.c \ From b5f9b0241a36b8e0197405fc5ab23cbf0ba43e03 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 22:00:39 +0100 Subject: [PATCH 178/767] Cygwin: is_unicode_equiv: implement Unicode equivalence class check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit is_unicode_equiv compares two UTF-32 values and returns 1 if both are member of the same Unicode equivalence class, 0 otherwise. Note that this function only works with precomposed characters per Unicode normalization form C. It doesn't handle decomposed characters, just like its counterpart in glibc. I.e., equivalence class comparison using decomposed chars won't work. Example: fnmatch("[=n=]", "ñ") == 0 fnmatch("[=ñ=]", "n") == 0 but fnmatch("[=n=]", "n\x0303") == 1 fnmatch("[=n\x0303=]", "n") == 1 fnmatch("[=n\x0303=]", "n\x0303") == 1 Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/collate.h | 2 ++ winsup/cygwin/nlsfuncs.cc | 48 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/winsup/cygwin/local_includes/collate.h b/winsup/cygwin/local_includes/collate.h index a89829a833..c3454575dd 100644 --- a/winsup/cygwin/local_includes/collate.h +++ b/winsup/cygwin/local_includes/collate.h @@ -15,6 +15,8 @@ extern const int __collate_load_error; extern int __collate_range_cmp (int c1, int c2); +int is_unicode_equiv (wint_t, wint_t); + #ifdef __cplusplus }; #endif diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 0d204929d2..f3701312b9 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -11,6 +11,7 @@ details. */ #include <stdlib.h> #include <locale.h> #include <wchar.h> +#include <wctype.h> #include "path.h" #include "fhandler.h" #include "dtable.h" @@ -1110,6 +1111,7 @@ __collate_load_locale (struct __locale_t *locale, const char *name, /* We use the Windows functions for locale-specific string comparison and transformation. The advantage is that we don't need any files with collation information. */ + extern "C" int wcscoll_l (const wchar_t *__restrict ws1, const wchar_t *__restrict ws2, struct __locale_t *locale) @@ -1193,6 +1195,52 @@ __collate_range_cmp (int c1, int c2) return wcscoll (s1, s2); } +/* Check if UTF-32 input character `test' is in the same equivalence class + as the multibyte char in `equiv'. + Note that we only recognize input in Unicode normalization form C, that + is, we expect all letters to be composed. A single character is all we + look at. + To check equivalence, decompose pattern letter and input letter and check + the base character for equality. Also, convert all digits to the ASCII + digits 0 - 9 and compare. */ +extern "C" int +is_unicode_equiv (wint_t test, wint_t eqv) +{ + wchar_t decomp_testc[5] = { 0 }; + wchar_t decomp_eqvc[5] = { 0 }; + wchar_t testc[3] = { 0 }; + wchar_t eqvc[3] = { 0 }; + + /* For equivalence classes, case doesn't matter. However, be careful. + Only convert chars which have a "upper" to "lower". */ + if (iswupper (eqv)) + eqv = towlower (eqv); + if (iswupper (test)) + test = towlower (test); + /* Convert to UTF-16 string */ + if (eqv > 0x10000) { + eqvc[0] = ((eqv - 0x10000) >> 10) + 0xd800; + eqvc[1] = ((eqv - 0x10000) & 0x3ff) + 0xdc00; + } else + eqvc[0] = eqv; + if (test > 0x10000) { + testc[0] = ((test - 0x10000) >> 10) + 0xd800; + testc[1] = ((test - 0x10000) & 0x3ff) + 0xdc00; + } else + testc[0] = test; + /* Convert to denormalized form */ + FoldStringW (MAP_COMPOSITE | MAP_FOLDDIGITS, eqvc, -1, decomp_eqvc, 5); + FoldStringW (MAP_COMPOSITE | MAP_FOLDDIGITS, testc, -1, decomp_testc, 5); + /* If they are equivalent, the base char must be the same. */ + if (decomp_eqvc[0] != decomp_testc[0]) + return 0; + /* If it's a surrogate pair, check the second char, too */ + if (decomp_eqvc[0] >= 0xd800 && decomp_eqvc[0] <= 0xdbff && + decomp_eqvc[1] != decomp_testc[1]) + return 0; + return 1; +} + extern "C" size_t wcsxfrm_l (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn, struct __locale_t *locale) From 20162667de8c0029c974420230f2dcc903159e66 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 22:31:49 +0100 Subject: [PATCH 179/767] Cygwin: fnmatch: handle equivalence class expressions Handle [=x=] expressions in range brackets. Use the new is_unicode_equiv() function to perform the check. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/libc/fnmatch.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index 9829904f08..40c1f2d598 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -284,16 +284,25 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, ++pattern; if (!*pattern) return (RANGE_ERROR); - if (ctype == ':') { + if (ctype == ':') { /* named character class */ size_t clen = pattern - class_p; char class[clen + 1]; *stpncpy (class, class_p, clen) = '\0'; if (iswctype (test, wctype (class))) ok = 1; + } else if (ctype == '=') { /* equivalence class */ + size_t elen = pattern - class_p; + char equiv[elen + 1]; + wint_t eqv; + + *stpncpy (equiv, class_p, elen) = '\0'; + if (mbrtowi(&eqv, equiv, elen, patmbs) == elen + && is_unicode_equiv (test, eqv)) + ok = 1; } + /* TODO: [. is just ignored for now */ pattern += 2; - /* TODO: [. and [= are just ignored for now */ continue; } From 1df19b3caeaee95388a3c4d78559389bbcfc9ad5 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 22:34:46 +0100 Subject: [PATCH 180/767] Cygwin: glob: handle equivalence class expressions Handle [=x=] expressions in range brackets. Use the new is_unicode_equiv() function to perform the check. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 1e8eda903e..c882cd59d2 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -158,6 +158,7 @@ typedef char Char; #define M_RNG META('-') #define M_SET META('[') #define M_NAMED META(':') +#define M_EQUIV META('=') #define ismeta(c) (((c)&M_QUOTE) != 0) static int compare(const void *, const void *); @@ -186,7 +187,7 @@ static void qprintf(const char *, Char *); /* Return value is either EOS, COLON, DOT, EQUALS, or LBRACKET if no class expression found. */ static inline Char -check_classes_expr(const Char *&cptr, char *classbuf = NULL, +check_classes_expr(const Char *&cptr, wint_t *classbuf = NULL, size_t classbufsize = 0) { const Char *ctype = NULL; @@ -206,7 +207,7 @@ check_classes_expr(const Char *&cptr, char *classbuf = NULL, if (clen < classbufsize) { for (idx = 0; idx < clen; ++idx) - classbuf[idx] = class_p[idx]; + classbuf[idx] = CHAR(class_p[idx]); classbuf[idx] = '\0'; } else ctype = NULL; @@ -480,6 +481,11 @@ globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob) return patbuf; } +static void +wcitoascii(char *dst, wint_t *src) +{ + while ((*dst++ = *src++)); +} /* * The main glob() routine: compiles the pattern (optionally processing @@ -523,19 +529,30 @@ glob0(const Char *pattern, glob_t *pglob, size_t *limit) *bufnext++ = M_NOT; c = *qpatnext; do { - char cclass[64]; - wctype_t type; + wint_t wclass[64]; Char ctype; - ctype = check_classes_expr(qpatnext, cclass, - sizeof cclass); + ctype = check_classes_expr(qpatnext, wclass, + 64); if (ctype) { - if (ctype == COLON && - (type = wctype (cclass))) { - *bufnext++ = M_NAMED; - *bufnext++ = CHAR (type); + wctype_t type; + + if (ctype == COLON) { + char cclass[64]; + + /* No worries, char classes are + ASCII-only anyway */ + wcitoascii (cclass, wclass); + if ((type = wctype (cclass))) { + *bufnext++ = M_NAMED; + *bufnext++ = CHAR (type); + } + } else if (ctype == EQUALS && + wclass[0] && !wclass[1]) { + *bufnext++ = M_EQUIV; + *bufnext++ = CHAR (wclass[0]); } - /* TODO: [. and [= are ignored yet */ + /* TODO: [. is ignored yet */ qpatnext++; continue; } @@ -858,6 +875,9 @@ match(Char *name, Char *pat, Char *patend) if ((c & M_MASK) == M_NAMED) { if (iswctype (k, *pat++)) ok = 1; + } else if ((c & M_MASK) == M_EQUIV) { + if (is_unicode_equiv (k, *pat++)) + ok = 1; } else if ((*pat & M_MASK) == M_RNG) { if (__collate_load_error ? CCHAR(c) <= CCHAR(k) && CCHAR(k) <= CCHAR(pat[1]) : From c750a728bd21ad6234797e923fea47e3a6000260 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Feb 2023 22:37:32 +0100 Subject: [PATCH 181/767] add glob/fnmatch equivalence class support to release notes Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/release/3.5.0 | 5 +++-- winsup/doc/new-features.xml | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index d79cf2a0d5..502c1f356b 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -13,5 +13,6 @@ What's new: cygwin distro, as well as getting extended info on available and installed packages. -- fnmatch(3) and glob(3) now support named character classes in the - search pattern, i.e., [:alnum:], etc. +- fnmatch(3) and glob(3) now support named character classes and + equivalence class expressions in the search pattern, i.e., [:alnum:], + [=a=], etc. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index d23a990ce3..c310114613 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -29,8 +29,8 @@ installed packages. </para></listitem> <listitem><para> -fnmatch(3) and glob(3) now support named character classes in the -search pattern, i.e., [:alnum:], etc. +fnmatch(3) and glob(3) now support named character classes and equivalence +class expressions in the search pattern, i.e., [:alnum:], [=a=], etc. </para></listitem> </itemizedlist> From a9a17f5fe51498b182d4a11ac48207b8c7ffe8ec Mon Sep 17 00:00:00 2001 From: Takashi Yano <takashi.yano@nifty.ne.jp> Date: Tue, 14 Feb 2023 22:55:10 +0900 Subject: [PATCH 182/767] Cygwin: dsp: Fix SNDCTL_DSP_GET[IO]SPACE before read()/write(). Even with the commit 3a4c740f59c0, SNDCTL_DSP_GET[IO]SPACE ioctl() does not return the fragment set by SNDCTL_DSP_SETFRAGMENT if it is issued before read()/write(). This patch fixes the issue. Fixes: 3a4c740f59c0 ("Cygwin: dsp: Implement SNDCTL_DSP_SETFRAGMENT ioctl().") Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> --- winsup/cygwin/fhandler/dsp.cc | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index dd1aac8e26..16db6bb29c 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1369,11 +1369,17 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) return -1; } audio_buf_info *p = (audio_buf_info *) buf; - if (audio_out_) { - audio_out_->buf_info (p, audiofreq_, audiobits_, audiochannels_); - } else { - Audio_out::default_buf_info(p, audiofreq_, audiobits_, audiochannels_); - } + if (audio_out_) + audio_out_->buf_info (p, audiofreq_, audiobits_, audiochannels_); + else if (fragment_has_been_set) + { + p->bytes = fragsize_ * fragstotal_; + p->fragsize = fragsize_; + p->fragstotal = fragstotal_; + p->fragments = fragstotal_; + } + else + Audio_out::default_buf_info(p, audiofreq_, audiobits_, audiochannels_); debug_printf ("buf=%p frags=%d fragsize=%d bytes=%d", buf, p->fragments, p->fragsize, p->bytes); return 0; @@ -1387,11 +1393,17 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) return -1; } audio_buf_info *p = (audio_buf_info *) buf; - if (audio_in_) { - audio_in_->buf_info (p, audiofreq_, audiobits_, audiochannels_); - } else { - Audio_in::default_buf_info(p, audiofreq_, audiobits_, audiochannels_); - } + if (audio_in_) + audio_in_->buf_info (p, audiofreq_, audiobits_, audiochannels_); + else if (fragment_has_been_set) + { + p->bytes = 0; + p->fragsize = fragsize_; + p->fragstotal = fragstotal_; + p->fragments = 0; + } + else + Audio_in::default_buf_info(p, audiofreq_, audiobits_, audiochannels_); debug_printf ("buf=%p frags=%d fragsize=%d bytes=%d", buf, p->fragments, p->fragsize, p->bytes); return 0; From e4cc9e48462b538253d62109012b90befaaf7bc5 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Feb 2023 20:52:20 +0100 Subject: [PATCH 183/767] Cygwin: is_unicode_equiv: fix comment Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index f3701312b9..aa7e8434d7 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1196,7 +1196,7 @@ __collate_range_cmp (int c1, int c2) } /* Check if UTF-32 input character `test' is in the same equivalence class - as the multibyte char in `equiv'. + as UTF-32 character 'eqv'. Note that we only recognize input in Unicode normalization form C, that is, we expect all letters to be composed. A single character is all we look at. From f0417a620182083fa787eea90e2e1d9884c8e573 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 18 Feb 2023 23:14:11 +0100 Subject: [PATCH 184/767] Cygwin: is_unicode_equiv: fix normalization Change normalization to form KD and make room for longer decomposed sequences. --- winsup/cygwin/nlsfuncs.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index aa7e8434d7..d80567737d 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1200,14 +1200,14 @@ __collate_range_cmp (int c1, int c2) Note that we only recognize input in Unicode normalization form C, that is, we expect all letters to be composed. A single character is all we look at. - To check equivalence, decompose pattern letter and input letter and check - the base character for equality. Also, convert all digits to the ASCII - digits 0 - 9 and compare. */ + To check equivalence, decompose pattern letter and input letter into + normalization form KD and check the base character for equality. Also, + convert all digits to the ASCII digits 0 - 9 and compare. */ extern "C" int is_unicode_equiv (wint_t test, wint_t eqv) { - wchar_t decomp_testc[5] = { 0 }; - wchar_t decomp_eqvc[5] = { 0 }; + wchar_t decomp_testc[24] = { 0 }; + wchar_t decomp_eqvc[24] = { 0 }; wchar_t testc[3] = { 0 }; wchar_t eqvc[3] = { 0 }; @@ -1229,8 +1229,10 @@ is_unicode_equiv (wint_t test, wint_t eqv) } else testc[0] = test; /* Convert to denormalized form */ - FoldStringW (MAP_COMPOSITE | MAP_FOLDDIGITS, eqvc, -1, decomp_eqvc, 5); - FoldStringW (MAP_COMPOSITE | MAP_FOLDDIGITS, testc, -1, decomp_testc, 5); + FoldStringW (MAP_COMPOSITE | MAP_FOLDCZONE | MAP_FOLDDIGITS, + eqvc, -1, decomp_eqvc, 24); + FoldStringW (MAP_COMPOSITE | MAP_FOLDCZONE | MAP_FOLDDIGITS, + testc, -1, decomp_testc, 24); /* If they are equivalent, the base char must be the same. */ if (decomp_eqvc[0] != decomp_testc[0]) return 0; From 064e4bb8bb4236822c23ed63d419ba081f1e524a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 19 Feb 2023 14:23:53 +0100 Subject: [PATCH 185/767] Cygwin: convert __collate_range_cmp to __wcollate_range_cmp https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=179721 After FreeBSD eventually picked up the bugreport from within only 5 years, rename __collate_range_cmp to __wcollate_range_cmp as suggested all along, and make it type safe (wint_t instead of wchar_t for hopefully obvious reasons...) While at it, drop __collate_load_error and fix the checks for it in glob and fnmatch. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 8 ++++++-- winsup/cygwin/globals.cc | 3 --- winsup/cygwin/libc/fnmatch.c | 12 ++++-------- winsup/cygwin/local_includes/collate.h | 2 +- winsup/cygwin/nlsfuncs.cc | 6 ++---- winsup/cygwin/regex/regcomp.c | 6 +++--- 6 files changed, 16 insertions(+), 21 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index c882cd59d2..eb19e23de1 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -879,10 +879,14 @@ match(Char *name, Char *pat, Char *patend) if (is_unicode_equiv (k, *pat++)) ok = 1; } else if ((*pat & M_MASK) == M_RNG) { +#ifdef __CYGWIN__ + if ((!__get_current_collate_locale ()->lcid) ? +#else if (__collate_load_error ? +#endif CCHAR(c) <= CCHAR(k) && CCHAR(k) <= CCHAR(pat[1]) : - __collate_range_cmp(CCHAR(c), CCHAR(k)) <= 0 - && __collate_range_cmp(CCHAR(k), CCHAR(pat[1])) <= 0 + __wcollate_range_cmp(CCHAR(c), CCHAR(k)) <= 0 + && __wcollate_range_cmp(CCHAR(k), CCHAR(pat[1])) <= 0 ) ok = 1; pat += 2; diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index aef4a687db..c259ce18fc 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -96,9 +96,6 @@ char NO_COPY almost_null[1]; extern "C" { -/* We never have a collate load error. */ -const int __collate_load_error = 0; - /* Heavily-used const UNICODE_STRINGs are defined here once. The idea is a speed improvement by not having to initialize a UNICODE_STRING every time we make a string comparison. The _RDATA trick allows defining the strings diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index 40c1f2d598..dfbe3863fb 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -330,18 +330,14 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, c2 = towlower(c2); #ifdef __CYGWIN__ - if (__collate_load_error ? - c <= test && test <= c2 : - __collate_range_cmp(c, test) <= 0 - && __collate_range_cmp(test, c2) <= 0 - ) + if ((!__get_current_collate_locale ()->lcid) ? #else if (table->__collate_load_error ? +#endif c <= test && test <= c2 : - __collate_range_cmp(table, c, test) <= 0 - && __collate_range_cmp(table, test, c2) <= 0 + __wcollate_range_cmp(c, test) <= 0 + && __wcollate_range_cmp(test, c2) <= 0 ) -#endif ok = 1; } else if (c == test) ok = 1; diff --git a/winsup/cygwin/local_includes/collate.h b/winsup/cygwin/local_includes/collate.h index c3454575dd..d9e84f32eb 100644 --- a/winsup/cygwin/local_includes/collate.h +++ b/winsup/cygwin/local_includes/collate.h @@ -13,7 +13,7 @@ extern "C" { extern const int __collate_load_error; -extern int __collate_range_cmp (int c1, int c2); +extern int __wcollate_range_cmp (wint_t, wint_t); int is_unicode_equiv (wint_t, wint_t); diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index d80567737d..4d17fb4e39 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1172,11 +1172,9 @@ strcoll (const char *__restrict s1, const char *__restrict s2) return strcoll_l (s1, s2, __get_current_locale ()); } -/* BSD. Used from glob.cc, fnmatch.c and regcomp.c. Make sure caller is - using wide chars. Unfortunately the definition of this functions hides - the required input type. */ +/* BSD. Used from glob.cc, fnmatch.c and regcomp.c. */ extern "C" int -__collate_range_cmp (int c1, int c2) +__wcollate_range_cmp (wint_t c1, wint_t c2) { wchar_t s1[3] = { (wchar_t) c1, L'\0', L'\0' }; wchar_t s2[3] = { (wchar_t) c2, L'\0', L'\0' }; diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index aef104c1ea..5acfd4e52e 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -834,10 +834,10 @@ p_b_term(struct parse *p, cset *cs) (void)REQUIRE((uch)start <= (uch)finish, REG_ERANGE); CHaddrange(p, cs, start, finish); } else { - (void)REQUIRE(__collate_range_cmp(start, finish) <= 0, REG_ERANGE); + (void)REQUIRE(__wcollate_range_cmp(start, finish) <= 0, REG_ERANGE); for (i = 0; i <= UCHAR_MAX; i++) { - if ( __collate_range_cmp(start, i) <= 0 - && __collate_range_cmp(i, finish) <= 0 + if ( __wcollate_range_cmp(start, i) <= 0 + && __wcollate_range_cmp(i, finish) <= 0 ) CHadd(p, cs, i); } From 8cf9b4aaafb449cc8254a1e1bf5216bfe241641f Mon Sep 17 00:00:00 2001 From: Brian Inglis <Brian.Inglis@Shaw.ca> Date: Fri, 17 Feb 2023 13:56:23 -0700 Subject: [PATCH 186/767] newlib/libc/ctype/mkcaseconv: fix POSIX shell invalid == comparison --- newlib/libc/ctype/mkcaseconv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/ctype/mkcaseconv b/newlib/libc/ctype/mkcaseconv index ab0571d8fa..a455aed16e 100755 --- a/newlib/libc/ctype/mkcaseconv +++ b/newlib/libc/ctype/mkcaseconv @@ -89,7 +89,7 @@ then diff=-1 } item () { - if [ "$1" == "#error" ] + if [ "$1" = "#error" ] then echo "$*" return fi From 81ac069eecd077f54433f8447738c487e10071ea Mon Sep 17 00:00:00 2001 From: Brian Inglis <Brian.Inglis@Shaw.ca> Date: Fri, 17 Feb 2023 13:56:24 -0700 Subject: [PATCH 187/767] newlib/libc/{ctype, string}/*.t: Unicode 15 character width and property tables --- newlib/libc/ctype/categories.t | 62 +++++++++++++++++++------- newlib/libc/string/combining.t | 81 ++++++++++++++++++---------------- newlib/libc/string/wide.t | 6 +-- 3 files changed, 91 insertions(+), 58 deletions(-) diff --git a/newlib/libc/ctype/categories.t b/newlib/libc/ctype/categories.t index 38bb959e63..4fec4afb63 100644 --- a/newlib/libc/ctype/categories.t +++ b/newlib/libc/ctype/categories.t @@ -453,6 +453,7 @@ {CAT_Mn, 0x0CE2, 1}, {CAT_Nd, 0x0CE6, 9}, {CAT_Lo, 0x0CF1, 1}, + {CAT_Mc, 0x0CF3, 0}, {CAT_Mn, 0x0D00, 1}, {CAT_Mc, 0x0D02, 1}, {CAT_Lo, 0x0D04, 8}, @@ -514,7 +515,7 @@ {CAT_Lo, 0x0EBD, 0}, {CAT_Lo, 0x0EC0, 4}, {CAT_Lm, 0x0EC6, 0}, - {CAT_Mn, 0x0EC8, 5}, + {CAT_Mn, 0x0EC8, 6}, {CAT_Nd, 0x0ED0, 9}, {CAT_Lo, 0x0EDC, 3}, {CAT_Lo, 0x0F00, 0}, @@ -1682,6 +1683,7 @@ {CAT_Mn, 0x10EAB, 1}, {CAT_Pd, 0x10EAD, 0}, {CAT_Lo, 0x10EB0, 1}, + {CAT_Mn, 0x10EFD, 2}, {CAT_Lo, 0x10F00, 28}, {CAT_No, 0x10F1D, 9}, {CAT_Lo, 0x10F27, 0}, @@ -1763,6 +1765,8 @@ {CAT_Mn, 0x11236, 1}, {CAT_Po, 0x11238, 5}, {CAT_Mn, 0x1123E, 0}, + {CAT_Lo, 0x1123F, 1}, + {CAT_Mn, 0x11241, 0}, {CAT_Lo, 0x11280, 6}, {CAT_Lo, 0x11288, 0}, {CAT_Lo, 0x1128A, 3}, @@ -1923,6 +1927,7 @@ {CAT_Lo, 0x11A9D, 0}, {CAT_Po, 0x11A9E, 4}, {CAT_Lo, 0x11AB0, 72}, + {CAT_Po, 0x11B00, 9}, {CAT_Lo, 0x11C00, 8}, {CAT_Lo, 0x11C0A, 36}, {CAT_Mc, 0x11C2F, 0}, @@ -1968,6 +1973,19 @@ {CAT_Mn, 0x11EF3, 1}, {CAT_Mc, 0x11EF5, 1}, {CAT_Po, 0x11EF7, 1}, + {CAT_Mn, 0x11F00, 1}, + {CAT_Lo, 0x11F02, 0}, + {CAT_Mc, 0x11F03, 0}, + {CAT_Lo, 0x11F04, 12}, + {CAT_Lo, 0x11F12, 33}, + {CAT_Mc, 0x11F34, 1}, + {CAT_Mn, 0x11F36, 4}, + {CAT_Mc, 0x11F3E, 1}, + {CAT_Mn, 0x11F40, 0}, + {CAT_Mc, 0x11F41, 0}, + {CAT_Mn, 0x11F42, 0}, + {CAT_Po, 0x11F43, 12}, + {CAT_Nd, 0x11F50, 9}, {CAT_Lo, 0x11FB0, 0}, {CAT_No, 0x11FC0, 20}, {CAT_So, 0x11FD5, 7}, @@ -1980,8 +1998,11 @@ {CAT_Lo, 0x12480, 195}, {CAT_Lo, 0x12F90, 96}, {CAT_Po, 0x12FF1, 1}, - {CAT_Lo, 0x13000, 1070}, - {CAT_Cf, 0x13430, 8}, + {CAT_Lo, 0x13000, 1071}, + {CAT_Cf, 0x13430, 15}, + {CAT_Mn, 0x13440, 0}, + {CAT_Lo, 0x13441, 5}, + {CAT_Mn, 0x13447, 14}, {CAT_Lo, 0x14400, 582}, {CAT_Lo, 0x16800, 568}, {CAT_Lo, 0x16A40, 30}, @@ -2024,7 +2045,9 @@ {CAT_Lm, 0x1AFF5, 6}, {CAT_Lm, 0x1AFFD, 1}, {CAT_Lo, 0x1B000, 290}, + {CAT_Lo, 0x1B132, 0}, {CAT_Lo, 0x1B150, 2}, + {CAT_Lo, 0x1B155, 0}, {CAT_Lo, 0x1B164, 3}, {CAT_Lo, 0x1B170, 395}, {CAT_Lo, 0x1BC00, 106}, @@ -2055,6 +2078,7 @@ {CAT_So, 0x1D200, 65}, {CAT_Mn, 0x1D242, 2}, {CAT_So, 0x1D245, 0}, + {CAT_No, 0x1D2C0, 19}, {CAT_No, 0x1D2E0, 19}, {CAT_So, 0x1D300, 86}, {CAT_No, 0x1D360, 24}, @@ -2143,11 +2167,14 @@ {CAT_Ll, 0x1DF00, 9}, {CAT_Lo, 0x1DF0A, 0}, {CAT_Ll, 0x1DF0B, 19}, + {CAT_Ll, 0x1DF25, 5}, {CAT_Mn, 0x1E000, 6}, {CAT_Mn, 0x1E008, 16}, {CAT_Mn, 0x1E01B, 6}, {CAT_Mn, 0x1E023, 1}, {CAT_Mn, 0x1E026, 4}, + {CAT_Lm, 0x1E030, 61}, + {CAT_Mn, 0x1E08F, 0}, {CAT_Lo, 0x1E100, 44}, {CAT_Mn, 0x1E130, 6}, {CAT_Lm, 0x1E137, 6}, @@ -2160,6 +2187,10 @@ {CAT_Mn, 0x1E2EC, 3}, {CAT_Nd, 0x1E2F0, 9}, {CAT_Sc, 0x1E2FF, 0}, + {CAT_Lo, 0x1E4D0, 26}, + {CAT_Lm, 0x1E4EB, 0}, + {CAT_Mn, 0x1E4EC, 3}, + {CAT_Nd, 0x1E4F0, 9}, {CAT_Lo, 0x1E7E0, 6}, {CAT_Lo, 0x1E7E8, 3}, {CAT_Lo, 0x1E7ED, 1}, @@ -2230,10 +2261,10 @@ {CAT_So, 0x1F300, 250}, {CAT_Sk, 0x1F3FB, 4}, {CAT_So, 0x1F400, 727}, - {CAT_So, 0x1F6DD, 15}, + {CAT_So, 0x1F6DC, 16}, {CAT_So, 0x1F6F0, 12}, - {CAT_So, 0x1F700, 115}, - {CAT_So, 0x1F780, 88}, + {CAT_So, 0x1F700, 118}, + {CAT_So, 0x1F77B, 94}, {CAT_So, 0x1F7E0, 11}, {CAT_So, 0x1F7F0, 0}, {CAT_So, 0x1F800, 11}, @@ -2244,25 +2275,24 @@ {CAT_So, 0x1F8B0, 1}, {CAT_So, 0x1F900, 339}, {CAT_So, 0x1FA60, 13}, - {CAT_So, 0x1FA70, 4}, - {CAT_So, 0x1FA78, 4}, - {CAT_So, 0x1FA80, 6}, - {CAT_So, 0x1FA90, 28}, - {CAT_So, 0x1FAB0, 10}, - {CAT_So, 0x1FAC0, 5}, - {CAT_So, 0x1FAD0, 9}, - {CAT_So, 0x1FAE0, 7}, - {CAT_So, 0x1FAF0, 6}, + {CAT_So, 0x1FA70, 12}, + {CAT_So, 0x1FA80, 8}, + {CAT_So, 0x1FA90, 45}, + {CAT_So, 0x1FABF, 6}, + {CAT_So, 0x1FACE, 13}, + {CAT_So, 0x1FAE0, 8}, + {CAT_So, 0x1FAF0, 8}, {CAT_So, 0x1FB00, 146}, {CAT_So, 0x1FB94, 54}, {CAT_Nd, 0x1FBF0, 9}, {CAT_Lo, 0x20000, 42719}, - {CAT_Lo, 0x2A700, 4152}, + {CAT_Lo, 0x2A700, 4153}, {CAT_Lo, 0x2B740, 221}, {CAT_Lo, 0x2B820, 5761}, {CAT_Lo, 0x2CEB0, 7472}, {CAT_Lo, 0x2F800, 541}, {CAT_Lo, 0x30000, 4938}, + {CAT_Lo, 0x31350, 4191}, {CAT_Cf, 0xE0001, 0}, {CAT_Cf, 0xE0020, 95}, {CAT_Mn, 0xE0100, 239}, diff --git a/newlib/libc/string/combining.t b/newlib/libc/string/combining.t index da856bd74e..0d7345c49a 100644 --- a/newlib/libc/string/combining.t +++ b/newlib/libc/string/combining.t @@ -30,7 +30,7 @@ { 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, { 0x0D81, 0x0D81 }, { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, - { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EBC }, { 0x0EC8, 0x0ECD }, + { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EBC }, { 0x0EC8, 0x0ECE }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, { 0x0F99, 0x0FBC }, @@ -76,44 +76,47 @@ { 0x10376, 0x1037A }, { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x10AE5, 0x10AE6 }, { 0x10D24, 0x10D27 }, { 0x10EAB, 0x10EAC }, - { 0x10F46, 0x10F50 }, { 0x10F82, 0x10F85 }, { 0x11001, 0x11001 }, - { 0x11038, 0x11046 }, { 0x11070, 0x11070 }, { 0x11073, 0x11074 }, - { 0x1107F, 0x11081 }, { 0x110B3, 0x110B6 }, { 0x110B9, 0x110BA }, - { 0x110BD, 0x110BD }, { 0x110C2, 0x110C2 }, { 0x110CD, 0x110CD }, - { 0x11100, 0x11102 }, { 0x11127, 0x1112B }, { 0x1112D, 0x11134 }, - { 0x11173, 0x11173 }, { 0x11180, 0x11181 }, { 0x111B6, 0x111BE }, - { 0x111C9, 0x111CC }, { 0x111CF, 0x111CF }, { 0x1122F, 0x11231 }, - { 0x11234, 0x11234 }, { 0x11236, 0x11237 }, { 0x1123E, 0x1123E }, - { 0x112DF, 0x112DF }, { 0x112E3, 0x112EA }, { 0x11300, 0x11301 }, - { 0x1133B, 0x1133C }, { 0x11340, 0x11340 }, { 0x11366, 0x1136C }, - { 0x11370, 0x11374 }, { 0x11438, 0x1143F }, { 0x11442, 0x11444 }, - { 0x11446, 0x11446 }, { 0x1145E, 0x1145E }, { 0x114B3, 0x114B8 }, - { 0x114BA, 0x114BA }, { 0x114BF, 0x114C0 }, { 0x114C2, 0x114C3 }, - { 0x115B2, 0x115B5 }, { 0x115BC, 0x115BD }, { 0x115BF, 0x115C0 }, - { 0x115DC, 0x115DD }, { 0x11633, 0x1163A }, { 0x1163D, 0x1163D }, - { 0x1163F, 0x11640 }, { 0x116AB, 0x116AB }, { 0x116AD, 0x116AD }, - { 0x116B0, 0x116B5 }, { 0x116B7, 0x116B7 }, { 0x1171D, 0x1171F }, - { 0x11722, 0x11725 }, { 0x11727, 0x1172B }, { 0x1182F, 0x11837 }, - { 0x11839, 0x1183A }, { 0x1193B, 0x1193C }, { 0x1193E, 0x1193E }, - { 0x11943, 0x11943 }, { 0x119D4, 0x119D7 }, { 0x119DA, 0x119DB }, - { 0x119E0, 0x119E0 }, { 0x11A01, 0x11A0A }, { 0x11A33, 0x11A38 }, - { 0x11A3B, 0x11A3E }, { 0x11A47, 0x11A47 }, { 0x11A51, 0x11A56 }, - { 0x11A59, 0x11A5B }, { 0x11A8A, 0x11A96 }, { 0x11A98, 0x11A99 }, - { 0x11C30, 0x11C36 }, { 0x11C38, 0x11C3D }, { 0x11C3F, 0x11C3F }, - { 0x11C92, 0x11CA7 }, { 0x11CAA, 0x11CB0 }, { 0x11CB2, 0x11CB3 }, - { 0x11CB5, 0x11CB6 }, { 0x11D31, 0x11D36 }, { 0x11D3A, 0x11D3A }, - { 0x11D3C, 0x11D3D }, { 0x11D3F, 0x11D45 }, { 0x11D47, 0x11D47 }, - { 0x11D90, 0x11D91 }, { 0x11D95, 0x11D95 }, { 0x11D97, 0x11D97 }, - { 0x11EF3, 0x11EF4 }, { 0x13430, 0x13438 }, { 0x16AF0, 0x16AF4 }, - { 0x16B30, 0x16B36 }, { 0x16F4F, 0x16F4F }, { 0x16F8F, 0x16F92 }, - { 0x16FE4, 0x16FE4 }, { 0x1BC9D, 0x1BC9E }, { 0x1BCA0, 0x1BCA3 }, - { 0x1CF00, 0x1CF2D }, { 0x1CF30, 0x1CF46 }, { 0x1D167, 0x1D169 }, - { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, - { 0x1D242, 0x1D244 }, { 0x1DA00, 0x1DA36 }, { 0x1DA3B, 0x1DA6C }, - { 0x1DA75, 0x1DA75 }, { 0x1DA84, 0x1DA84 }, { 0x1DA9B, 0x1DA9F }, - { 0x1DAA1, 0x1DAAF }, { 0x1E000, 0x1E006 }, { 0x1E008, 0x1E018 }, - { 0x1E01B, 0x1E021 }, { 0x1E023, 0x1E024 }, { 0x1E026, 0x1E02A }, - { 0x1E130, 0x1E136 }, { 0x1E2AE, 0x1E2AE }, { 0x1E2EC, 0x1E2EF }, + { 0x10EFD, 0x10EFF }, { 0x10F46, 0x10F50 }, { 0x10F82, 0x10F85 }, + { 0x11001, 0x11001 }, { 0x11038, 0x11046 }, { 0x11070, 0x11070 }, + { 0x11073, 0x11074 }, { 0x1107F, 0x11081 }, { 0x110B3, 0x110B6 }, + { 0x110B9, 0x110BA }, { 0x110BD, 0x110BD }, { 0x110C2, 0x110C2 }, + { 0x110CD, 0x110CD }, { 0x11100, 0x11102 }, { 0x11127, 0x1112B }, + { 0x1112D, 0x11134 }, { 0x11173, 0x11173 }, { 0x11180, 0x11181 }, + { 0x111B6, 0x111BE }, { 0x111C9, 0x111CC }, { 0x111CF, 0x111CF }, + { 0x1122F, 0x11231 }, { 0x11234, 0x11234 }, { 0x11236, 0x11237 }, + { 0x1123E, 0x1123E }, { 0x11241, 0x11241 }, { 0x112DF, 0x112DF }, + { 0x112E3, 0x112EA }, { 0x11300, 0x11301 }, { 0x1133B, 0x1133C }, + { 0x11340, 0x11340 }, { 0x11366, 0x1136C }, { 0x11370, 0x11374 }, + { 0x11438, 0x1143F }, { 0x11442, 0x11444 }, { 0x11446, 0x11446 }, + { 0x1145E, 0x1145E }, { 0x114B3, 0x114B8 }, { 0x114BA, 0x114BA }, + { 0x114BF, 0x114C0 }, { 0x114C2, 0x114C3 }, { 0x115B2, 0x115B5 }, + { 0x115BC, 0x115BD }, { 0x115BF, 0x115C0 }, { 0x115DC, 0x115DD }, + { 0x11633, 0x1163A }, { 0x1163D, 0x1163D }, { 0x1163F, 0x11640 }, + { 0x116AB, 0x116AB }, { 0x116AD, 0x116AD }, { 0x116B0, 0x116B5 }, + { 0x116B7, 0x116B7 }, { 0x1171D, 0x1171F }, { 0x11722, 0x11725 }, + { 0x11727, 0x1172B }, { 0x1182F, 0x11837 }, { 0x11839, 0x1183A }, + { 0x1193B, 0x1193C }, { 0x1193E, 0x1193E }, { 0x11943, 0x11943 }, + { 0x119D4, 0x119D7 }, { 0x119DA, 0x119DB }, { 0x119E0, 0x119E0 }, + { 0x11A01, 0x11A0A }, { 0x11A33, 0x11A38 }, { 0x11A3B, 0x11A3E }, + { 0x11A47, 0x11A47 }, { 0x11A51, 0x11A56 }, { 0x11A59, 0x11A5B }, + { 0x11A8A, 0x11A96 }, { 0x11A98, 0x11A99 }, { 0x11C30, 0x11C36 }, + { 0x11C38, 0x11C3D }, { 0x11C3F, 0x11C3F }, { 0x11C92, 0x11CA7 }, + { 0x11CAA, 0x11CB0 }, { 0x11CB2, 0x11CB3 }, { 0x11CB5, 0x11CB6 }, + { 0x11D31, 0x11D36 }, { 0x11D3A, 0x11D3A }, { 0x11D3C, 0x11D3D }, + { 0x11D3F, 0x11D45 }, { 0x11D47, 0x11D47 }, { 0x11D90, 0x11D91 }, + { 0x11D95, 0x11D95 }, { 0x11D97, 0x11D97 }, { 0x11EF3, 0x11EF4 }, + { 0x11F00, 0x11F01 }, { 0x11F36, 0x11F3A }, { 0x11F40, 0x11F40 }, + { 0x11F42, 0x11F42 }, { 0x13430, 0x13440 }, { 0x13447, 0x13455 }, + { 0x16AF0, 0x16AF4 }, { 0x16B30, 0x16B36 }, { 0x16F4F, 0x16F4F }, + { 0x16F8F, 0x16F92 }, { 0x16FE4, 0x16FE4 }, { 0x1BC9D, 0x1BC9E }, + { 0x1BCA0, 0x1BCA3 }, { 0x1CF00, 0x1CF2D }, { 0x1CF30, 0x1CF46 }, + { 0x1D167, 0x1D169 }, { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, + { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 }, { 0x1DA00, 0x1DA36 }, + { 0x1DA3B, 0x1DA6C }, { 0x1DA75, 0x1DA75 }, { 0x1DA84, 0x1DA84 }, + { 0x1DA9B, 0x1DA9F }, { 0x1DAA1, 0x1DAAF }, { 0x1E000, 0x1E006 }, + { 0x1E008, 0x1E018 }, { 0x1E01B, 0x1E021 }, { 0x1E023, 0x1E024 }, + { 0x1E026, 0x1E02A }, { 0x1E08F, 0x1E08F }, { 0x1E130, 0x1E136 }, + { 0x1E2AE, 0x1E2AE }, { 0x1E2EC, 0x1E2EF }, { 0x1E4EC, 0x1E4EF }, { 0x1E8D0, 0x1E8D6 }, { 0x1E944, 0x1E94A }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F }, { 0xE0100, 0xE01EF } }; diff --git a/newlib/libc/string/wide.t b/newlib/libc/string/wide.t index e2ee66d6f2..11dd15f203 100644 --- a/newlib/libc/string/wide.t +++ b/newlib/libc/string/wide.t @@ -1,5 +1,5 @@ -//# EastAsianWidth-14.0.0.txt -//# Blocks-14.0.0.txt +//# EastAsianWidth-15.0.0.txt +//# Blocks-15.0.0.txt { { 0x1100, 0x115F }, { 0x231A, 0x231B }, { 0x2329, 0x232A }, { 0x23E9, 0x23EC }, { 0x23F0, 0x23F0 }, { 0x23F3, 0x23F3 }, @@ -26,7 +26,7 @@ { 0x1F550, 0x1F567 }, { 0x1F57A, 0x1F57A }, { 0x1F595, 0x1F596 }, { 0x1F5A4, 0x1F5A4 }, { 0x1F5FB, 0x1F64F }, { 0x1F680, 0x1F6C5 }, { 0x1F6CC, 0x1F6CC }, { 0x1F6D0, 0x1F6D2 }, { 0x1F6D5, 0x1F6D7 }, - { 0x1F6DD, 0x1F6DF }, { 0x1F6EB, 0x1F6EC }, { 0x1F6F4, 0x1F6FC }, + { 0x1F6DC, 0x1F6DF }, { 0x1F6EB, 0x1F6EC }, { 0x1F6F4, 0x1F6FC }, { 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 }, { 0x1F90C, 0x1F93A }, { 0x1F93C, 0x1F945 }, { 0x1F947, 0x1F9FF }, { 0x1FA70, 0x1FAFF }, { 0x20000, 0x2FFFD }, { 0x30000, 0x3FFFD } From 1cbe4b3dccf1d2f6bb443bb84dc50197b0e58bc4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Feb 2023 22:24:06 +0100 Subject: [PATCH 188/767] Cygwin: glob: sort in current locale's collating order Follow glibc here. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index eb19e23de1..b84c36fccd 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -615,7 +615,7 @@ glob0(const Char *pattern, glob_t *pglob, size_t *limit) static int compare(const void *p, const void *q) { - return(strcmp(*(char **)p, *(char **)q)); + return(strcoll(*(char **)p, *(char **)q)); } static int From ffba9604d10fa0df27eea5e1930a215086608581 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Feb 2023 22:29:37 +0100 Subject: [PATCH 189/767] Cygwin: add more UTF-32 helper functions wcintowcs: convert UTF-16 to UTF-32 string wcilen: return number of characters in a UTF-32 string wcincmp: compare two fixed-size UTF-32 strings Used in followup patches introducing collating symbols Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/wchar.h | 46 ++++++++++++++++++++++++++++ winsup/cygwin/strfuncs.cc | 17 ++++++++++ 2 files changed, 63 insertions(+) diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index 10b44791c5..6f2a4ad10f 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -39,10 +39,56 @@ extern wctomb_f __utf8_wctomb; #define __WCTOMB (__get_current_locale ()->wctomb) +/* convert wint_t string to wchar_t string. Make sure dest + has room for at least twice as much characters to account + for surrogate pairs, plus a wchar_t NUL. */ +void wcintowcs (wchar_t *, wint_t *, size_t); + /* replacement function for mbrtowc, returning a wint_t representing a UTF-32 value. Defined in strfuncs.cc */ extern size_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); +/* like wcslen, just for wint_t */ +static inline size_t +wcilen (const wint_t *wcs) +{ + size_t ret = 0; + + if (wcs) + while (*wcs++) + ++ret; + return ret; +} + +/* like wcscmp, just for wint_t */ +static inline int +wcicmp (const wint_t *s1, const wint_t *s2) +{ + while (*s1 == *s2++) + if (*s1++ == 0) + return (0); + return (*s1 - *--s2); +} + +/* like wcsncmp, just for wint_t */ +static inline int +wcincmp (const wint_t *s1, const wint_t *s2, size_t n) +{ + if (n == 0) + return (0); + do + { + if (*s1 != *s2++) + { + return (*s1 - *--s2); + } + if (*s1++ == 0) + break; + } + while (--n != 0); + return (0); +} + #ifdef __cplusplus } #endif diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index d62179a1de..e343a2fcc6 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -112,6 +112,23 @@ transform_chars_af_unix (PWCHAR out, const char *path, __socklen_t len) return out; } +/* convert wint_t string to wchar_t string. Make sure dest + has room for at least twice as much characters to account + for surrogate pairs, plus a wchar_t NUL. */ +extern "C" void +wcintowcs (wchar_t *dest, wint_t *src, size_t len) +{ + while (*src && len-- > 0) + if (*src > 0xffff) + { + *dest++ = ((*src - 0x10000) >> 10) + 0xd800; + *dest++ = ((*src++ - 0x10000) & 0x3ff) + 0xdc00; + } + else + *dest++ = *src++; + *dest = '\0'; +} + /* replacement function for mbrtowc, returning a wint_t representing a UTF-32 value. */ extern "C" size_t From 1eadb2388737d5411941be3fef07bec8a148cd42 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Feb 2023 22:38:41 +0100 Subject: [PATCH 190/767] Cygwin: nlsfuncs.cc: introduce collating elements and helper functions lc_collelem.h: autogenerated table of collating element, taken from glibc is_unicode_coll_elem: Check if a UTF-32 string is a collating element next_unicode_char: return length of prefix from a string constituting a complete character in the current locale, taking collating elements into acocunt. --- winsup/cygwin/local_includes/collate.h | 4 + winsup/cygwin/local_includes/lc_collelem.h | 2936 ++++++++++++++++++++ winsup/cygwin/nlsfuncs.cc | 79 + 3 files changed, 3019 insertions(+) create mode 100644 winsup/cygwin/local_includes/lc_collelem.h diff --git a/winsup/cygwin/local_includes/collate.h b/winsup/cygwin/local_includes/collate.h index d9e84f32eb..7b4c72dd58 100644 --- a/winsup/cygwin/local_includes/collate.h +++ b/winsup/cygwin/local_includes/collate.h @@ -17,6 +17,10 @@ extern int __wcollate_range_cmp (wint_t, wint_t); int is_unicode_equiv (wint_t, wint_t); +int is_unicode_coll_elem (const wint_t *); + +size_t next_unicode_char (wint_t *); + #ifdef __cplusplus }; #endif diff --git a/winsup/cygwin/local_includes/lc_collelem.h b/winsup/cygwin/local_includes/lc_collelem.h new file mode 100644 index 0000000000..49774550c4 --- /dev/null +++ b/winsup/cygwin/local_includes/lc_collelem.h @@ -0,0 +1,2936 @@ +/* This struct of collating elements data has been generated by fetching + locale data from a GLibc 2.18.90 source dir on 2023-02-19. */ +struct collating_element_t +{ + const char32_t *element; + const char *locale; +}; + +collating_element_t collating_element[] = +{ + { U"\U00000027\U00000059", "ha_NG" }, /* <'1Y> */ + { U"\U00000027\U00000079", "ha_NG" }, /* <'1y> */ + { U"\U00000041\U00000041", "da_DK" }, /* <A-A> */ + { U"\U00000041\U00000041", "nb_NO" }, /* <A-A> */ + { U"\U00000041\U00000061", "da_DK" }, /* <A-a> */ + { U"\U00000041\U00000061", "nb_NO" }, /* <A-a> */ + { U"\U00000041\U00000300", "ig_NG" }, /* <A`> */ + { U"\U00000041\U00000300", "yo_NG" }, /* <A`> */ + { U"\U00000041\U00000301", "ig_NG" }, /* <A'> */ + { U"\U00000041\U00000301", "yo_NG" }, /* <A'> */ + { U"\U00000041\U00000302", "yo_NG" }, /* <A/>> */ + { U"\U00000041\U0000030C", "yo_NG" }, /* <A<> */ + { U"\U00000043\U00000027\U00000048", "br_FR" }, /* <C'H> */ + { U"\U00000043\U00000027\U00000068", "br_FR" }, /* <C'h> */ + { U"\U00000043\U00000043\U00000053", "hu_HU" }, /* <C-C-S> */ + { U"\U00000043\U00000043\U00000073", "hu_HU" }, /* <C-C-s> */ + { U"\U00000043\U00000048", "br_FR" }, /* <C-H> */ + { U"\U00000043\U00000048", "cs_CZ" }, /* <C-H> */ + { U"\U00000043\U00000048", "cy_GB" }, /* <C-H> */ + { U"\U00000043\U00000048", "es_US" }, /* <C-H> */ + { U"\U00000043\U00000048", "hsb_DE" }, /* <C-H> */ + { U"\U00000043\U00000048", "ig_NG" }, /* <C-H> */ + { U"\U00000043\U00000048", "ik_CA" }, /* <C-H> */ + { U"\U00000043\U00000048", "om_KE" }, /* <CH> */ + { U"\U00000043\U00000053", "hu_HU" }, /* <C-S> */ + { U"\U00000043\U00000063\U00000053", "hu_HU" }, /* <C-c-S> */ + { U"\U00000043\U00000063\U00000073", "hu_HU" }, /* <C-c-s> */ + { U"\U00000043\U00000068", "br_FR" }, /* <C-h> */ + { U"\U00000043\U00000068", "cs_CZ" }, /* <C-h> */ + { U"\U00000043\U00000068", "cy_GB" }, /* <C-h> */ + { U"\U00000043\U00000068", "es_US" }, /* <C-h> */ + { U"\U00000043\U00000068", "hsb_DE" }, /* <C-h> */ + { U"\U00000043\U00000068", "ig_NG" }, /* <C-h> */ + { U"\U00000043\U00000068", "ik_CA" }, /* <C-h> */ + { U"\U00000043\U00000068", "om_KE" }, /* <Ch> */ + { U"\U00000043\U00000073", "hu_HU" }, /* <C-s> */ + { U"\U00000044\U00000044", "cy_GB" }, /* <D-D> */ + { U"\U00000044\U00000044\U0000005A", "hu_HU" }, /* <D-D-Z> */ + { U"\U00000044\U00000044\U0000005A\U00000053", "hu_HU" }, /* <D-D-Z-S> */ + { U"\U00000044\U00000044\U0000005A\U00000073", "hu_HU" }, /* <D-D-Z-s> */ + { U"\U00000044\U00000044\U0000007A", "hu_HU" }, /* <D-D-z> */ + { U"\U00000044\U00000044\U0000007A\U00000053", "hu_HU" }, /* <D-D-z-S> */ + { U"\U00000044\U00000044\U0000007A\U00000073", "hu_HU" }, /* <D-D-z-s> */ + { U"\U00000044\U00000048", "om_KE" }, /* <DH> */ + { U"\U00000044\U00000048", "sq_AL" }, /* <D-H> */ + { U"\U00000044\U0000005A", "hu_HU" }, /* <D-Z> */ + { U"\U00000044\U0000005A\U00000053", "hu_HU" }, /* <D-Z-S> */ + { U"\U00000044\U0000005A\U00000073", "hu_HU" }, /* <D-Z-s> */ + { U"\U00000044\U00000064", "cy_GB" }, /* <D-d> */ + { U"\U00000044\U00000064\U0000005A", "hu_HU" }, /* <D-d-Z> */ + { U"\U00000044\U00000064\U0000005A\U00000053", "hu_HU" }, /* <D-d-Z-S> */ + { U"\U00000044\U00000064\U0000005A\U00000073", "hu_HU" }, /* <D-d-Z-s> */ + { U"\U00000044\U00000064\U0000007A", "hu_HU" }, /* <D-d-z> */ + { U"\U00000044\U00000064\U0000007A\U00000053", "hu_HU" }, /* <D-d-z-S> */ + { U"\U00000044\U00000064\U0000007A\U00000073", "hu_HU" }, /* <D-d-z-s> */ + { U"\U00000044\U00000068", "om_KE" }, /* <Dh> */ + { U"\U00000044\U00000068", "sq_AL" }, /* <D-h> */ + { U"\U00000044\U0000007A", "hu_HU" }, /* <D-z> */ + { U"\U00000044\U0000007A\U00000053", "hu_HU" }, /* <D-z-S> */ + { U"\U00000044\U0000007A\U00000073", "hu_HU" }, /* <D-z-s> */ + { U"\U00000044\U00000179", "hsb_DE" }, /* <D-Z'> */ + { U"\U00000044\U0000017A", "hsb_DE" }, /* <D-z'> */ + { U"\U00000044\U0000017D", "bs_BA" }, /* <D-Z<> */ + { U"\U00000044\U0000017D", "hr_HR" }, /* <D-Z<> */ + { U"\U00000044\U0000017D", "sr_RS" }, /* <D-Z<> */ + { U"\U00000044\U0000017E", "bs_BA" }, /* <D-z<> */ + { U"\U00000044\U0000017E", "hr_HR" }, /* <D-z<> */ + { U"\U00000044\U0000017E", "sr_RS" }, /* <D-z<> */ + { U"\U00000045\U00000300", "ig_NG" }, /* <E`> */ + { U"\U00000045\U00000300", "yo_NG" }, /* <E`> */ + { U"\U00000045\U00000301", "ig_NG" }, /* <E'> */ + { U"\U00000045\U00000301", "yo_NG" }, /* <E'> */ + { U"\U00000045\U00000302", "yo_NG" }, /* <E/>> */ + { U"\U00000045\U0000030C", "yo_NG" }, /* <E<> */ + { U"\U00000045\U00000323", "yo_NG" }, /* <E_> */ + { U"\U00000045\U00000323\U00000300", "yo_NG" }, /* <E_2`> */ + { U"\U00000045\U00000323\U00000301", "yo_NG" }, /* <E_2'> */ + { U"\U00000046\U00000046", "cy_GB" }, /* <F-F> */ + { U"\U00000046\U00000066", "cy_GB" }, /* <F-f> */ + { U"\U00000047\U00000027", "uz_UZ" }, /* <G-'> */ + { U"\U00000047\U00000027", "uz_UZ@cyrillic" }, /* <G-'> */ + { U"\U00000047\U00000042", "ig_NG" }, /* <G-B> */ + { U"\U00000047\U00000042", "yo_NG" }, /* <G-B> */ + { U"\U00000047\U00000047\U00000059", "hu_HU" }, /* <G-G-Y> */ + { U"\U00000047\U00000047\U00000079", "hu_HU" }, /* <G-G-y> */ + { U"\U00000047\U00000048", "ig_NG" }, /* <G-H> */ + { U"\U00000047\U0000004A", "sq_AL" }, /* <G-J> */ + { U"\U00000047\U00000057", "ig_NG" }, /* <G-W> */ + { U"\U00000047\U00000059", "hu_HU" }, /* <G-Y> */ + { U"\U00000047\U00000062", "ig_NG" }, /* <G-b> */ + { U"\U00000047\U00000062", "yo_NG" }, /* <G-b> */ + { U"\U00000047\U00000067\U00000059", "hu_HU" }, /* <G-g-Y> */ + { U"\U00000047\U00000067\U00000079", "hu_HU" }, /* <G-g-y> */ + { U"\U00000047\U00000068", "ig_NG" }, /* <G-h> */ + { U"\U00000047\U0000006A", "sq_AL" }, /* <G-j> */ + { U"\U00000047\U00000077", "ig_NG" }, /* <G-w> */ + { U"\U00000047\U00000079", "hu_HU" }, /* <G-y> */ + { U"\U00000047\U00000126", "mt_MT" }, /* <G-H-> */ + { U"\U00000047\U00000127", "mt_MT" }, /* <G-h-> */ + { U"\U00000049\U00000045", "mt_MT" }, /* <I-E> */ + { U"\U00000049\U00000065", "mt_MT" }, /* <I-e> */ + { U"\U00000049\U00000300", "ig_NG" }, /* <I`> */ + { U"\U00000049\U00000300", "yo_NG" }, /* <I`> */ + { U"\U00000049\U00000301", "ig_NG" }, /* <I'> */ + { U"\U00000049\U00000301", "yo_NG" }, /* <I'> */ + { U"\U00000049\U00000302", "yo_NG" }, /* <I/>> */ + { U"\U00000049\U0000030C", "yo_NG" }, /* <I<> */ + { U"\U00000049\U00000323", "ig_NG" }, /* <I_> */ + { U"\U00000049\U00000323\U00000300", "ig_NG" }, /* <I_`> */ + { U"\U00000049\U00000323\U00000301", "ig_NG" }, /* <I_'> */ + { U"\U0000004B\U00000048", "om_KE" }, /* <KH> */ + { U"\U0000004B\U00000050", "ig_NG" }, /* <K-P> */ + { U"\U0000004B\U00000057", "ig_NG" }, /* <K-W> */ + { U"\U0000004B\U00000068", "om_KE" }, /* <Kh> */ + { U"\U0000004B\U00000070", "ig_NG" }, /* <K-p> */ + { U"\U0000004B\U00000077", "ig_NG" }, /* <K-w> */ + { U"\U0000004C\U0000004A", "bs_BA" }, /* <L-J> */ + { U"\U0000004C\U0000004A", "hr_HR" }, /* <L-J> */ + { U"\U0000004C\U0000004A", "sr_RS" }, /* <L-J> */ + { U"\U0000004C\U0000004C", "cy_GB" }, /* <L-L> */ + { U"\U0000004C\U0000004C", "es_US" }, /* <L-L> */ + { U"\U0000004C\U0000004C", "sq_AL" }, /* <L-L> */ + { U"\U0000004C\U0000004C\U00000059", "hu_HU" }, /* <L-L-Y> */ + { U"\U0000004C\U0000004C\U00000079", "hu_HU" }, /* <L-L-y> */ + { U"\U0000004C\U00000059", "hu_HU" }, /* <L-Y> */ + { U"\U0000004C\U0000006A", "bs_BA" }, /* <L-j> */ + { U"\U0000004C\U0000006A", "hr_HR" }, /* <L-j> */ + { U"\U0000004C\U0000006A", "sr_RS" }, /* <L-j> */ + { U"\U0000004C\U0000006C", "cy_GB" }, /* <L-l> */ + { U"\U0000004C\U0000006C", "es_US" }, /* <L-l> */ + { U"\U0000004C\U0000006C", "sq_AL" }, /* <L-l> */ + { U"\U0000004C\U0000006C\U00000059", "hu_HU" }, /* <L-l-Y> */ + { U"\U0000004C\U0000006C\U00000079", "hu_HU" }, /* <L-l-y> */ + { U"\U0000004C\U00000079", "hu_HU" }, /* <L-y> */ + { U"\U0000004C\U00000323", "ik_CA" }, /* <L-dot> */ + { U"\U0000004D\U00000300", "yo_NG" }, /* <M`> */ + { U"\U0000004D\U00000301", "yo_NG" }, /* <M'> */ + { U"\U0000004D\U00000304", "yo_NG" }, /* <M-> */ + { U"\U0000004E\U00000047", "cy_GB" }, /* <N-G> */ + { U"\U0000004E\U00000047", "fil_PH" }, /* <N-G> */ + { U"\U0000004E\U00000047", "mi_NZ" }, /* <N-G> */ + { U"\U0000004E\U00000047", "tl_PH" }, /* <N-G> */ + { U"\U0000004E\U0000004A", "bs_BA" }, /* <N-J> */ + { U"\U0000004E\U0000004A", "hr_HR" }, /* <N-J> */ + { U"\U0000004E\U0000004A", "sq_AL" }, /* <N-J> */ + { U"\U0000004E\U0000004A", "sr_RS" }, /* <N-J> */ + { U"\U0000004E\U0000004E\U00000059", "hu_HU" }, /* <N-N-Y> */ + { U"\U0000004E\U0000004E\U00000079", "hu_HU" }, /* <N-N-y> */ + { U"\U0000004E\U00000057", "ig_NG" }, /* <N-W> */ + { U"\U0000004E\U00000059", "hu_HU" }, /* <N-Y> */ + { U"\U0000004E\U00000059", "ig_NG" }, /* <N-Y> */ + { U"\U0000004E\U00000059", "om_KE" }, /* <NY> */ + { U"\U0000004E\U00000067", "cy_GB" }, /* <N-g> */ + { U"\U0000004E\U00000067", "fil_PH" }, /* <N-g> */ + { U"\U0000004E\U00000067", "mi_NZ" }, /* <N-g> */ + { U"\U0000004E\U00000067", "tl_PH" }, /* <N-g> */ + { U"\U0000004E\U0000006A", "bs_BA" }, /* <N-j> */ + { U"\U0000004E\U0000006A", "hr_HR" }, /* <N-j> */ + { U"\U0000004E\U0000006A", "sq_AL" }, /* <N-j> */ + { U"\U0000004E\U0000006A", "sr_RS" }, /* <N-j> */ + { U"\U0000004E\U0000006E\U00000059", "hu_HU" }, /* <N-n-Y> */ + { U"\U0000004E\U0000006E\U00000079", "hu_HU" }, /* <N-n-y> */ + { U"\U0000004E\U00000077", "ig_NG" }, /* <N-w> */ + { U"\U0000004E\U00000079", "hu_HU" }, /* <N-y> */ + { U"\U0000004E\U00000079", "ig_NG" }, /* <N-y> */ + { U"\U0000004E\U00000079", "om_KE" }, /* <Ny> */ + { U"\U0000004E\U00000300", "yo_NG" }, /* <N`> */ + { U"\U0000004E\U00000301", "yo_NG" }, /* <N'> */ + { U"\U0000004E\U00000304", "yo_NG" }, /* <N-> */ + { U"\U0000004E\U00000307", "ig_NG" }, /* <N.> */ + { U"\U0000004F\U00000027", "uz_UZ" }, /* <O-'> */ + { U"\U0000004F\U00000027", "uz_UZ@cyrillic" }, /* <O-'> */ + { U"\U0000004F\U00000300", "ig_NG" }, /* <O`> */ + { U"\U0000004F\U00000300", "yo_NG" }, /* <O`> */ + { U"\U0000004F\U00000301", "ig_NG" }, /* <O'> */ + { U"\U0000004F\U00000301", "yo_NG" }, /* <O'> */ + { U"\U0000004F\U00000302", "yo_NG" }, /* <O/>> */ + { U"\U0000004F\U0000030C", "yo_NG" }, /* <O<> */ + { U"\U0000004F\U00000323", "ig_NG" }, /* <O_> */ + { U"\U0000004F\U00000323", "yo_NG" }, /* <O_> */ + { U"\U0000004F\U00000323\U00000300", "ig_NG" }, /* <O_`> */ + { U"\U0000004F\U00000323\U00000300", "yo_NG" }, /* <O_2`> */ + { U"\U0000004F\U00000323\U00000301", "ig_NG" }, /* <O_'> */ + { U"\U0000004F\U00000323\U00000301", "yo_NG" }, /* <O_2'> */ + { U"\U0000004F\U00000358", "nan_TW@latin" }, /* <OO> */ + { U"\U00000050\U00000048", "cy_GB" }, /* <P-H> */ + { U"\U00000050\U00000048", "om_KE" }, /* <PH> */ + { U"\U00000050\U00000068", "cy_GB" }, /* <P-h> */ + { U"\U00000050\U00000068", "om_KE" }, /* <Ph> */ + { U"\U00000052\U00000048", "cy_GB" }, /* <R-H> */ + { U"\U00000052\U00000052", "sq_AL" }, /* <R-R> */ + { U"\U00000052\U00000068", "cy_GB" }, /* <R-h> */ + { U"\U00000052\U00000072", "sq_AL" }, /* <R-r> */ + { U"\U00000052\U00000303", "ha_NG" }, /* <R?> */ + { U"\U00000053\U00000048", "ha_NG" }, /* <S-H> */ + { U"\U00000053\U00000048", "ig_NG" }, /* <S-H> */ + { U"\U00000053\U00000048", "om_KE" }, /* <SH> */ + { U"\U00000053\U00000048", "sq_AL" }, /* <S-H> */ + { U"\U00000053\U00000052", "ik_CA" }, /* <S-R> */ + { U"\U00000053\U00000053\U0000005A", "hu_HU" }, /* <S-S-Z> */ + { U"\U00000053\U00000053\U0000007A", "hu_HU" }, /* <S-S-z> */ + { U"\U00000053\U0000005A", "hu_HU" }, /* <S-Z> */ + { U"\U00000053\U00000068", "ha_NG" }, /* <S-h> */ + { U"\U00000053\U00000068", "ig_NG" }, /* <S-h> */ + { U"\U00000053\U00000068", "om_KE" }, /* <Sh> */ + { U"\U00000053\U00000068", "sq_AL" }, /* <S-h> */ + { U"\U00000053\U00000072", "ik_CA" }, /* <S-r> */ + { U"\U00000053\U00000073\U0000005A", "hu_HU" }, /* <S-s-Z> */ + { U"\U00000053\U00000073\U0000007A", "hu_HU" }, /* <S-s-z> */ + { U"\U00000053\U0000007A", "hu_HU" }, /* <S-z> */ + { U"\U00000053\U00000323", "yo_NG" }, /* <S_> */ + { U"\U00000054\U00000048", "cy_GB" }, /* <T-H> */ + { U"\U00000054\U00000048", "sq_AL" }, /* <T-H> */ + { U"\U00000054\U00000053", "ha_NG" }, /* <T-S> */ + { U"\U00000054\U00000054\U00000059", "hu_HU" }, /* <T-T-Y> */ + { U"\U00000054\U00000054\U00000079", "hu_HU" }, /* <T-T-y> */ + { U"\U00000054\U00000059", "hu_HU" }, /* <T-Y> */ + { U"\U00000054\U00000068", "cy_GB" }, /* <T-h> */ + { U"\U00000054\U00000068", "sq_AL" }, /* <T-h> */ + { U"\U00000054\U00000073", "ha_NG" }, /* <T-s> */ + { U"\U00000054\U00000074\U00000059", "hu_HU" }, /* <T-t-Y> */ + { U"\U00000054\U00000074\U00000079", "hu_HU" }, /* <T-t-y> */ + { U"\U00000054\U00000079", "hu_HU" }, /* <T-y> */ + { U"\U00000055\U00000300", "ig_NG" }, /* <U`> */ + { U"\U00000055\U00000300", "yo_NG" }, /* <U`> */ + { U"\U00000055\U00000301", "ig_NG" }, /* <U'> */ + { U"\U00000055\U00000301", "yo_NG" }, /* <U'> */ + { U"\U00000055\U00000302", "yo_NG" }, /* <U/>> */ + { U"\U00000055\U0000030C", "yo_NG" }, /* <U<> */ + { U"\U00000055\U00000323", "ig_NG" }, /* <U_> */ + { U"\U00000055\U00000323\U00000300", "ig_NG" }, /* <u_`> */ + { U"\U00000055\U00000323\U00000301", "ig_NG" }, /* <U_'> */ + { U"\U00000057\U00000048", "mi_NZ" }, /* <W-H> */ + { U"\U00000057\U00000068", "mi_NZ" }, /* <W-h> */ + { U"\U00000058\U00000048", "sq_AL" }, /* <X-H> */ + { U"\U00000058\U00000068", "sq_AL" }, /* <X-h> */ + { U"\U0000005A\U00000048", "sq_AL" }, /* <Z-H> */ + { U"\U0000005A\U00000053", "hu_HU" }, /* <Z-S> */ + { U"\U0000005A\U0000005A\U00000053", "hu_HU" }, /* <Z-Z-S> */ + { U"\U0000005A\U0000005A\U00000073", "hu_HU" }, /* <Z-Z-s> */ + { U"\U0000005A\U00000068", "sq_AL" }, /* <Z-h> */ + { U"\U0000005A\U00000073", "hu_HU" }, /* <Z-s> */ + { U"\U0000005A\U0000007A\U00000053", "hu_HU" }, /* <Z-z-S> */ + { U"\U0000005A\U0000007A\U00000073", "hu_HU" }, /* <Z-z-s> */ + { U"\U00000061\U00000041", "da_DK" }, /* <a-A> */ + { U"\U00000061\U00000041", "nb_NO" }, /* <a-A> */ + { U"\U00000061\U00000061", "da_DK" }, /* <a-a> */ + { U"\U00000061\U00000061", "nb_NO" }, /* <a-a> */ + { U"\U00000061\U00000300", "ig_NG" }, /* <a`> */ + { U"\U00000061\U00000300", "yo_NG" }, /* <a`> */ + { U"\U00000061\U00000301", "ig_NG" }, /* <a'> */ + { U"\U00000061\U00000301", "yo_NG" }, /* <a'> */ + { U"\U00000061\U00000302", "yo_NG" }, /* <a/>> */ + { U"\U00000061\U0000030C", "yo_NG" }, /* <a<> */ + { U"\U00000063\U00000027\U00000048", "br_FR" }, /* <c'H> */ + { U"\U00000063\U00000027\U00000068", "br_FR" }, /* <c'h> */ + { U"\U00000063\U00000043\U00000053", "hu_HU" }, /* <c-C-S> */ + { U"\U00000063\U00000043\U00000073", "hu_HU" }, /* <c-C-s> */ + { U"\U00000063\U00000048", "br_FR" }, /* <c-H> */ + { U"\U00000063\U00000048", "cy_GB" }, /* <c-H> */ + { U"\U00000063\U00000048", "es_US" }, /* <c-H> */ + { U"\U00000063\U00000048", "hsb_DE" }, /* <c-H> */ + { U"\U00000063\U00000048", "ig_NG" }, /* <c-H> */ + { U"\U00000063\U00000048", "ik_CA" }, /* <c-H> */ + { U"\U00000063\U00000053", "hu_HU" }, /* <c-S> */ + { U"\U00000063\U00000063\U00000053", "hu_HU" }, /* <c-c-S> */ + { U"\U00000063\U00000063\U00000073", "hu_HU" }, /* <c-c-s> */ + { U"\U00000063\U00000068", "br_FR" }, /* <c-h> */ + { U"\U00000063\U00000068", "cs_CZ" }, /* <c-h> */ + { U"\U00000063\U00000068", "cy_GB" }, /* <c-h> */ + { U"\U00000063\U00000068", "es_US" }, /* <c-h> */ + { U"\U00000063\U00000068", "hsb_DE" }, /* <c-h> */ + { U"\U00000063\U00000068", "ig_NG" }, /* <c-h> */ + { U"\U00000063\U00000068", "ik_CA" }, /* <c-h> */ + { U"\U00000063\U00000068", "om_KE" }, /* <ch> */ + { U"\U00000063\U00000073", "hu_HU" }, /* <c-s> */ + { U"\U00000064\U00000044", "cy_GB" }, /* <d-D> */ + { U"\U00000064\U00000044\U0000005A", "hu_HU" }, /* <d-D-Z> */ + { U"\U00000064\U00000044\U0000005A\U00000053", "hu_HU" }, /* <d-D-Z-S> */ + { U"\U00000064\U00000044\U0000005A\U00000073", "hu_HU" }, /* <d-D-Z-s> */ + { U"\U00000064\U00000044\U0000007A", "hu_HU" }, /* <d-D-z> */ + { U"\U00000064\U00000044\U0000007A\U00000053", "hu_HU" }, /* <d-D-z-S> */ + { U"\U00000064\U00000044\U0000007A\U00000073", "hu_HU" }, /* <d-D-z-s> */ + { U"\U00000064\U00000048", "sq_AL" }, /* <d-H> */ + { U"\U00000064\U0000005A", "hu_HU" }, /* <d-Z> */ + { U"\U00000064\U0000005A\U00000053", "hu_HU" }, /* <d-Z-S> */ + { U"\U00000064\U0000005A\U00000073", "hu_HU" }, /* <d-Z-s> */ + { U"\U00000064\U00000064", "cy_GB" }, /* <d-d> */ + { U"\U00000064\U00000064\U0000005A", "hu_HU" }, /* <d-d-Z> */ + { U"\U00000064\U00000064\U0000005A\U00000053", "hu_HU" }, /* <d-d-Z-S> */ + { U"\U00000064\U00000064\U0000005A\U00000073", "hu_HU" }, /* <d-d-Z-s> */ + { U"\U00000064\U00000064\U0000007A", "hu_HU" }, /* <d-d-z> */ + { U"\U00000064\U00000064\U0000007A\U00000053", "hu_HU" }, /* <d-d-z-S> */ + { U"\U00000064\U00000064\U0000007A\U00000073", "hu_HU" }, /* <d-d-z-s> */ + { U"\U00000064\U00000068", "om_KE" }, /* <dh> */ + { U"\U00000064\U00000068", "sq_AL" }, /* <d-h> */ + { U"\U00000064\U0000007A", "hu_HU" }, /* <d-z> */ + { U"\U00000064\U0000007A\U00000053", "hu_HU" }, /* <d-z-S> */ + { U"\U00000064\U0000007A\U00000073", "hu_HU" }, /* <d-z-s> */ + { U"\U00000064\U00000179", "hsb_DE" }, /* <d-Z'> */ + { U"\U00000064\U0000017A", "hsb_DE" }, /* <d-z'> */ + { U"\U00000064\U0000017D", "bs_BA" }, /* <d-Z<> */ + { U"\U00000064\U0000017D", "hr_HR" }, /* <d-Z<> */ + { U"\U00000064\U0000017D", "sr_RS" }, /* <d-Z<> */ + { U"\U00000064\U0000017E", "bs_BA" }, /* <d-z<> */ + { U"\U00000064\U0000017E", "hr_HR" }, /* <d-z<> */ + { U"\U00000064\U0000017E", "sr_RS" }, /* <d-z<> */ + { U"\U00000065\U00000300", "ig_NG" }, /* <e`> */ + { U"\U00000065\U00000300", "yo_NG" }, /* <e`> */ + { U"\U00000065\U00000301", "ig_NG" }, /* <e'> */ + { U"\U00000065\U00000301", "yo_NG" }, /* <e'> */ + { U"\U00000065\U00000302", "yo_NG" }, /* <e/>> */ + { U"\U00000065\U0000030C", "yo_NG" }, /* <e<> */ + { U"\U00000065\U00000323", "yo_NG" }, /* <e_> */ + { U"\U00000065\U00000323\U00000300", "yo_NG" }, /* <e_2`> */ + { U"\U00000065\U00000323\U00000301", "yo_NG" }, /* <e_2'> */ + { U"\U00000066\U00000046", "cy_GB" }, /* <f-F> */ + { U"\U00000066\U00000066", "cy_GB" }, /* <f-f> */ + { U"\U00000067\U00000027", "uz_UZ" }, /* <g-'> */ + { U"\U00000067\U00000027", "uz_UZ@cyrillic" }, /* <g-'> */ + { U"\U00000067\U00000042", "ig_NG" }, /* <g-B> */ + { U"\U00000067\U00000042", "yo_NG" }, /* <g-B> */ + { U"\U00000067\U00000047\U00000059", "hu_HU" }, /* <g-G-Y> */ + { U"\U00000067\U00000047\U00000079", "hu_HU" }, /* <g-G-y> */ + { U"\U00000067\U00000048", "ig_NG" }, /* <g-H> */ + { U"\U00000067\U0000004A", "sq_AL" }, /* <g-J> */ + { U"\U00000067\U00000057", "ig_NG" }, /* <g-W> */ + { U"\U00000067\U00000059", "hu_HU" }, /* <g-Y> */ + { U"\U00000067\U00000062", "ig_NG" }, /* <g-b> */ + { U"\U00000067\U00000062", "yo_NG" }, /* <g-b> */ + { U"\U00000067\U00000067\U00000059", "hu_HU" }, /* <g-g-Y> */ + { U"\U00000067\U00000067\U00000079", "hu_HU" }, /* <g-g-y> */ + { U"\U00000067\U00000068", "ig_NG" }, /* <g-h> */ + { U"\U00000067\U0000006A", "sq_AL" }, /* <g-j> */ + { U"\U00000067\U00000077", "ig_NG" }, /* <g-w> */ + { U"\U00000067\U00000079", "hu_HU" }, /* <g-y> */ + { U"\U00000067\U00000126", "mt_MT" }, /* <g-H-> */ + { U"\U00000067\U00000127", "mt_MT" }, /* <g-h-> */ + { U"\U00000069\U00000045", "mt_MT" }, /* <i-E> */ + { U"\U00000069\U00000065", "mt_MT" }, /* <i-e> */ + { U"\U00000069\U00000300", "ig_NG" }, /* <i`> */ + { U"\U00000069\U00000300", "yo_NG" }, /* <i`> */ + { U"\U00000069\U00000301", "ig_NG" }, /* <i'> */ + { U"\U00000069\U00000301", "yo_NG" }, /* <i'> */ + { U"\U00000069\U00000302", "yo_NG" }, /* <i/>> */ + { U"\U00000069\U0000030C", "yo_NG" }, /* <i<> */ + { U"\U00000069\U00000323", "ig_NG" }, /* <i_> */ + { U"\U00000069\U00000323\U00000300", "ig_NG" }, /* <i_`> */ + { U"\U00000069\U00000323\U00000301", "ig_NG" }, /* <i_'> */ + { U"\U0000006B\U00000050", "ig_NG" }, /* <k-P> */ + { U"\U0000006B\U00000057", "ig_NG" }, /* <k-W> */ + { U"\U0000006B\U00000068", "om_KE" }, /* <kh> */ + { U"\U0000006B\U00000070", "ig_NG" }, /* <k-p> */ + { U"\U0000006B\U00000077", "ig_NG" }, /* <k-w> */ + { U"\U0000006C\U0000004A", "bs_BA" }, /* <l-J> */ + { U"\U0000006C\U0000004A", "hr_HR" }, /* <l-J> */ + { U"\U0000006C\U0000004A", "sr_RS" }, /* <l-J> */ + { U"\U0000006C\U0000004C", "cy_GB" }, /* <l-L> */ + { U"\U0000006C\U0000004C", "es_US" }, /* <l-L> */ + { U"\U0000006C\U0000004C", "sq_AL" }, /* <l-L> */ + { U"\U0000006C\U0000004C\U00000059", "hu_HU" }, /* <l-L-Y> */ + { U"\U0000006C\U0000004C\U00000079", "hu_HU" }, /* <l-L-y> */ + { U"\U0000006C\U00000059", "hu_HU" }, /* <l-Y> */ + { U"\U0000006C\U0000006A", "bs_BA" }, /* <l-j> */ + { U"\U0000006C\U0000006A", "hr_HR" }, /* <l-j> */ + { U"\U0000006C\U0000006A", "sr_RS" }, /* <l-j> */ + { U"\U0000006C\U0000006C", "cy_GB" }, /* <l-l> */ + { U"\U0000006C\U0000006C", "es_US" }, /* <l-l> */ + { U"\U0000006C\U0000006C", "sq_AL" }, /* <l-l> */ + { U"\U0000006C\U0000006C\U00000059", "hu_HU" }, /* <l-l-Y> */ + { U"\U0000006C\U0000006C\U00000079", "hu_HU" }, /* <l-l-y> */ + { U"\U0000006C\U00000079", "hu_HU" }, /* <l-y> */ + { U"\U0000006C\U00000323", "ik_CA" }, /* <l-dot> */ + { U"\U0000006D\U00000300", "yo_NG" }, /* <m`> */ + { U"\U0000006D\U00000301", "yo_NG" }, /* <m'> */ + { U"\U0000006D\U00000304", "yo_NG" }, /* <m-> */ + { U"\U0000006E\U00000047", "cy_GB" }, /* <n-G> */ + { U"\U0000006E\U00000047", "fil_PH" }, /* <n-G> */ + { U"\U0000006E\U00000047", "mi_NZ" }, /* <n-G> */ + { U"\U0000006E\U00000047", "tl_PH" }, /* <n-G> */ + { U"\U0000006E\U0000004A", "bs_BA" }, /* <n-J> */ + { U"\U0000006E\U0000004A", "hr_HR" }, /* <n-J> */ + { U"\U0000006E\U0000004A", "sq_AL" }, /* <n-J> */ + { U"\U0000006E\U0000004A", "sr_RS" }, /* <n-J> */ + { U"\U0000006E\U0000004E\U00000059", "hu_HU" }, /* <n-N-Y> */ + { U"\U0000006E\U0000004E\U00000079", "hu_HU" }, /* <n-N-y> */ + { U"\U0000006E\U00000057", "ig_NG" }, /* <n-W> */ + { U"\U0000006E\U00000059", "hu_HU" }, /* <n-Y> */ + { U"\U0000006E\U00000059", "ig_NG" }, /* <n-Y> */ + { U"\U0000006E\U00000067", "cy_GB" }, /* <n-g> */ + { U"\U0000006E\U00000067", "fil_PH" }, /* <n-g> */ + { U"\U0000006E\U00000067", "mi_NZ" }, /* <n-g> */ + { U"\U0000006E\U00000067", "tl_PH" }, /* <n-g> */ + { U"\U0000006E\U0000006A", "bs_BA" }, /* <n-j> */ + { U"\U0000006E\U0000006A", "hr_HR" }, /* <n-j> */ + { U"\U0000006E\U0000006A", "sq_AL" }, /* <n-j> */ + { U"\U0000006E\U0000006A", "sr_RS" }, /* <n-j> */ + { U"\U0000006E\U0000006E\U00000059", "hu_HU" }, /* <n-n-Y> */ + { U"\U0000006E\U0000006E\U00000079", "hu_HU" }, /* <n-n-y> */ + { U"\U0000006E\U00000077", "ig_NG" }, /* <n-w> */ + { U"\U0000006E\U00000079", "hu_HU" }, /* <n-y> */ + { U"\U0000006E\U00000079", "ig_NG" }, /* <n-y> */ + { U"\U0000006E\U00000079", "om_KE" }, /* <ny> */ + { U"\U0000006E\U00000300", "yo_NG" }, /* <n`> */ + { U"\U0000006E\U00000301", "yo_NG" }, /* <n'> */ + { U"\U0000006E\U00000304", "yo_NG" }, /* <n-> */ + { U"\U0000006E\U00000307", "ig_NG" }, /* <n.> */ + { U"\U0000006F\U00000027", "uz_UZ" }, /* <o-'> */ + { U"\U0000006F\U00000027", "uz_UZ@cyrillic" }, /* <o-'> */ + { U"\U0000006F\U00000300", "ig_NG" }, /* <o`> */ + { U"\U0000006F\U00000300", "yo_NG" }, /* <o`> */ + { U"\U0000006F\U00000301", "ig_NG" }, /* <o'> */ + { U"\U0000006F\U00000301", "yo_NG" }, /* <o'> */ + { U"\U0000006F\U00000302", "yo_NG" }, /* <o/>> */ + { U"\U0000006F\U0000030C", "yo_NG" }, /* <o<> */ + { U"\U0000006F\U00000323", "ig_NG" }, /* <o_> */ + { U"\U0000006F\U00000323", "yo_NG" }, /* <o_> */ + { U"\U0000006F\U00000323\U00000300", "ig_NG" }, /* <o_`> */ + { U"\U0000006F\U00000323\U00000300", "yo_NG" }, /* <o_2`> */ + { U"\U0000006F\U00000323\U00000301", "ig_NG" }, /* <o_'> */ + { U"\U0000006F\U00000323\U00000301", "yo_NG" }, /* <o_2'> */ + { U"\U0000006F\U00000358", "nan_TW@latin" }, /* <oo> */ + { U"\U00000070\U00000048", "cy_GB" }, /* <p-H> */ + { U"\U00000070\U00000068", "cy_GB" }, /* <p-h> */ + { U"\U00000070\U00000068", "om_KE" }, /* <ph> */ + { U"\U00000072\U00000048", "cy_GB" }, /* <r-H> */ + { U"\U00000072\U00000052", "sq_AL" }, /* <r-R> */ + { U"\U00000072\U00000068", "cy_GB" }, /* <r-h> */ + { U"\U00000072\U00000072", "sq_AL" }, /* <r-r> */ + { U"\U00000072\U00000303", "ha_NG" }, /* <r?> */ + { U"\U00000073\U00000048", "ha_NG" }, /* <s-H> */ + { U"\U00000073\U00000048", "ig_NG" }, /* <s-H> */ + { U"\U00000073\U00000048", "sq_AL" }, /* <s-H> */ + { U"\U00000073\U00000052", "ik_CA" }, /* <s-R> */ + { U"\U00000073\U00000053\U0000005A", "hu_HU" }, /* <s-S-Z> */ + { U"\U00000073\U00000053\U0000007A", "hu_HU" }, /* <s-S-z> */ + { U"\U00000073\U0000005A", "hu_HU" }, /* <s-Z> */ + { U"\U00000073\U00000068", "ha_NG" }, /* <s-h> */ + { U"\U00000073\U00000068", "ig_NG" }, /* <s-h> */ + { U"\U00000073\U00000068", "om_KE" }, /* <sh> */ + { U"\U00000073\U00000068", "sq_AL" }, /* <s-h> */ + { U"\U00000073\U00000072", "ik_CA" }, /* <s-r> */ + { U"\U00000073\U00000073\U0000005A", "hu_HU" }, /* <s-s-Z> */ + { U"\U00000073\U00000073\U0000007A", "hu_HU" }, /* <s-s-z> */ + { U"\U00000073\U0000007A", "hu_HU" }, /* <s-z> */ + { U"\U00000073\U00000323", "yo_NG" }, /* <s_> */ + { U"\U00000074\U00000048", "cy_GB" }, /* <t-H> */ + { U"\U00000074\U00000048", "sq_AL" }, /* <t-H> */ + { U"\U00000074\U00000053", "ha_NG" }, /* <t-S> */ + { U"\U00000074\U00000054\U00000059", "hu_HU" }, /* <t-T-Y> */ + { U"\U00000074\U00000054\U00000079", "hu_HU" }, /* <t-T-y> */ + { U"\U00000074\U00000059", "hu_HU" }, /* <t-Y> */ + { U"\U00000074\U00000068", "cy_GB" }, /* <t-h> */ + { U"\U00000074\U00000068", "sq_AL" }, /* <t-h> */ + { U"\U00000074\U00000073", "ha_NG" }, /* <t-s> */ + { U"\U00000074\U00000074\U00000059", "hu_HU" }, /* <t-t-Y> */ + { U"\U00000074\U00000074\U00000079", "hu_HU" }, /* <t-t-y> */ + { U"\U00000074\U00000079", "hu_HU" }, /* <t-y> */ + { U"\U00000075\U00000300", "ig_NG" }, /* <u`> */ + { U"\U00000075\U00000300", "yo_NG" }, /* <u`> */ + { U"\U00000075\U00000301", "ig_NG" }, /* <u'> */ + { U"\U00000075\U00000301", "yo_NG" }, /* <u'> */ + { U"\U00000075\U00000302", "yo_NG" }, /* <u/>> */ + { U"\U00000075\U0000030C", "yo_NG" }, /* <u<> */ + { U"\U00000075\U00000323", "ig_NG" }, /* <u_> */ + { U"\U00000075\U00000323\U00000300", "ig_NG" }, /* <U_`> */ + { U"\U00000075\U00000323\U00000301", "ig_NG" }, /* <u_'> */ + { U"\U00000077\U00000048", "mi_NZ" }, /* <w-H> */ + { U"\U00000077\U00000068", "mi_NZ" }, /* <w-h> */ + { U"\U00000078\U00000048", "sq_AL" }, /* <x-H> */ + { U"\U00000078\U00000068", "sq_AL" }, /* <x-h> */ + { U"\U0000007A\U00000048", "sq_AL" }, /* <z-H> */ + { U"\U0000007A\U00000053", "hu_HU" }, /* <z-S> */ + { U"\U0000007A\U0000005A\U00000053", "hu_HU" }, /* <z-Z-S> */ + { U"\U0000007A\U0000005A\U00000073", "hu_HU" }, /* <z-Z-s> */ + { U"\U0000007A\U00000068", "sq_AL" }, /* <z-h> */ + { U"\U0000007A\U00000073", "hu_HU" }, /* <z-s> */ + { U"\U0000007A\U0000007A\U00000053", "hu_HU" }, /* <z-z-S> */ + { U"\U0000007A\U0000007A\U00000073", "hu_HU" }, /* <z-z-s> */ + { U"\U00000141\U00000323", "ik_CA" }, /* <Lbar-dot> */ + { U"\U00000142\U00000323", "ik_CA" }, /* <lbar-dot> */ + { U"\U00000412\U0000042C", "uk_UA" }, /* <V-SS> */ + { U"\U00000412\U0000044C", "uk_UA" }, /* <V-ss> */ + { U"\U00000414\U0000042C", "uk_UA" }, /* <D-SS> */ + { U"\U00000414\U0000044C", "uk_UA" }, /* <D-ss> */ + { U"\U00000417\U0000042C", "uk_UA" }, /* <Z-SS> */ + { U"\U00000417\U0000044C", "uk_UA" }, /* <Z-ss> */ + { U"\U0000041B\U0000042C", "uk_UA" }, /* <L-SS> */ + { U"\U0000041B\U0000044C", "uk_UA" }, /* <L-ss> */ + { U"\U0000041D\U0000042C", "uk_UA" }, /* <N-SS> */ + { U"\U0000041D\U0000044C", "uk_UA" }, /* <N-ss> */ + { U"\U00000420\U0000042C", "uk_UA" }, /* <R-SS> */ + { U"\U00000420\U0000044C", "uk_UA" }, /* <R-ss> */ + { U"\U00000421\U0000042C", "uk_UA" }, /* <S-SS> */ + { U"\U00000421\U0000044C", "uk_UA" }, /* <S-ss> */ + { U"\U00000422\U0000042C", "uk_UA" }, /* <T-SS> */ + { U"\U00000422\U0000044C", "uk_UA" }, /* <T-ss> */ + { U"\U00000426\U0000042C", "uk_UA" }, /* <TS-SS> */ + { U"\U00000426\U0000044C", "uk_UA" }, /* <TS-ss> */ + { U"\U00000432\U0000042C", "uk_UA" }, /* <v-SS> */ + { U"\U00000432\U0000044C", "uk_UA" }, /* <v-ss> */ + { U"\U00000434\U0000042C", "uk_UA" }, /* <d-SS> */ + { U"\U00000434\U0000044C", "uk_UA" }, /* <d-ss> */ + { U"\U00000437\U0000042C", "uk_UA" }, /* <z-SS> */ + { U"\U00000437\U0000044C", "uk_UA" }, /* <z-ss> */ + { U"\U0000043B\U0000042C", "uk_UA" }, /* <l-SS> */ + { U"\U0000043B\U0000044C", "uk_UA" }, /* <l-ss> */ + { U"\U0000043D\U0000042C", "uk_UA" }, /* <n-SS> */ + { U"\U0000043D\U0000044C", "uk_UA" }, /* <n-ss> */ + { U"\U00000440\U0000042C", "uk_UA" }, /* <r-SS> */ + { U"\U00000440\U0000044C", "uk_UA" }, /* <r-ss> */ + { U"\U00000441\U0000042C", "uk_UA" }, /* <s-SS> */ + { U"\U00000441\U0000044C", "uk_UA" }, /* <s-ss> */ + { U"\U00000442\U0000042C", "uk_UA" }, /* <t-SS> */ + { U"\U00000442\U0000044C", "uk_UA" }, /* <t-ss> */ + { U"\U00000446\U0000042C", "uk_UA" }, /* <ts-SS> */ + { U"\U00000446\U0000044C", "uk_UA" }, /* <ts-ss> */ + { U"\U000005D1\U000005BF", "yi_US" }, /* <B+'H-> */ + { U"\U000005DB\U000005BC", "yi_US" }, /* <K+.MH> */ + { U"\U000005E4\U000005BC", "yi_US" }, /* <P+.MH> */ + { U"\U000005E4\U000005BF", "yi_US" }, /* <P+'H-> */ + { U"\U000005E9\U000005C2", "yi_US" }, /* <Sh'H.L> */ + { U"\U000005EA\U000005BC", "yi_US" }, /* <T+.MH> */ + { U"\U00000626\U00000627", "ug_CN" }, /* <ara_h_alef> */ + { U"\U00000626\U00000648", "ug_CN" }, /* <ara_h_waw> */ + { U"\U00000626\U00000649", "ug_CN" }, /* <ara_h_alma> */ + { U"\U00000626\U000006C6", "ug_CN" }, /* <ara_h_oe> */ + { U"\U00000626\U000006C7", "ug_CN" }, /* <ara_h_u> */ + { U"\U00000626\U000006C8", "ug_CN" }, /* <ara_h_yu> */ + { U"\U00000626\U000006D0", "ug_CN" }, /* <ara_h_e> */ + { U"\U00000626\U000006D5", "ug_CN" }, /* <ara_h_ae> */ + { U"\U00000627\U00000653", "fa_IR" }, /* <Alef-Madda> */ + { U"\U00000627\U00000654", "fa_IR" }, /* <Alef-Hamza> */ + { U"\U00000627\U00000655", "fa_IR" }, /* <Alef-HamzaBelow> */ + { U"\U00000648\U00000654", "fa_IR" }, /* <Waw-Hamza> */ + { U"\U00000649\U00000654", "fa_IR" }, /* <AlefMaksura-Hamza> */ + { U"\U0000064A\U00000654", "fa_IR" }, /* <Yeh-Hamza> */ + { U"\U000006CC\U00000654", "fa_IR" }, /* <FarsiYeh-Hamza> */ + { U"\U00000915\U0000094D\U00000937", "mr_IN" }, /* <dv_ksha> */ + { U"\U0000091C\U0000094D\U0000091E", "mr_IN" }, /* <dv_dnya> */ + { U"\U00000936\U0000094D\U00000930", "mr_IN" }, /* <dv_shra> */ + { U"\U00000A95\U00000ACD\U00000AB7", "" }, /* <gu-ksha> */ + { U"\U00000A9C\U00000ACD\U00000A9E", "" }, /* <gu-dnya> */ + { U"\U00000AA4\U00000ACD\U00000AB0", "" }, /* <gu-tra> */ + { U"\U00000AB6\U00000ACD\U00000AB0", "" }, /* <gu-shra> */ + { U"\U00000B15\U00000B4D\U00000B37", "or_IN" }, /* <ORIYA_LETTER_KA-ORIYA_SIGN_VIRAMA-ORIYA_LETTER_SSA> */ + { U"\U00000B21\U00000B3C", "or_IN" }, /* <ORIYA_LETTER_DDA-ORIYA_SIGN_NUKTA> */ + { U"\U00000B22\U00000B3C", "or_IN" }, /* <ORIYA_LETTER_DDHA-ORIYA_SIGN_NUKTA> */ + { U"\U00000B95\U00000BCD", "" }, /* <pure-ta-k> */ + { U"\U00000B95\U00000BCD\U00000BB7", "" }, /* <tagl_KSHA> */ + { U"\U00000B99\U00000BCD", "" }, /* <pure-ta-ng> */ + { U"\U00000B9A\U00000BCD", "" }, /* <pure-ta-c> */ + { U"\U00000B9C\U00000BCD", "" }, /* <pure-ta-j> */ + { U"\U00000B9E\U00000BCD", "" }, /* <pure-ta-ny> */ + { U"\U00000B9F\U00000BCD", "" }, /* <pure-ta-tt> */ + { U"\U00000BA3\U00000BCD", "" }, /* <pure-ta-nn> */ + { U"\U00000BA4\U00000BCD", "" }, /* <pure-ta-t> */ + { U"\U00000BA8\U00000BCD", "" }, /* <pure-ta-n> */ + { U"\U00000BA9\U00000BCD", "" }, /* <pure-ta-nnn> */ + { U"\U00000BAA\U00000BCD", "" }, /* <pure-ta-p> */ + { U"\U00000BAE\U00000BCD", "" }, /* <pure-ta-m> */ + { U"\U00000BAF\U00000BCD", "" }, /* <pure-ta-y> */ + { U"\U00000BB0\U00000BCD", "" }, /* <pure-ta-r> */ + { U"\U00000BB1\U00000BCD", "" }, /* <pure-ta-rr> */ + { U"\U00000BB2\U00000BCD", "" }, /* <pure-ta-l> */ + { U"\U00000BB3\U00000BCD", "" }, /* <pure-ta-ll> */ + { U"\U00000BB4\U00000BCD", "" }, /* <pure-ta-lll> */ + { U"\U00000BB5\U00000BCD", "" }, /* <pure-ta-v> */ + { U"\U00000BB6\U00000BCD", "" }, /* <pure-ta-sh> */ + { U"\U00000BB7\U00000BCD", "" }, /* <pure-ta-ss> */ + { U"\U00000BB8\U00000BCD", "" }, /* <pure-ta-s> */ + { U"\U00000BB8\U00000BCD\U00000BB0\U00000BC0", "" }, /* <tagl_SHRI> */ + { U"\U00000BB9\U00000BCD", "" }, /* <pure-ta-h> */ + { U"\U00000BC6\U00000BBE", "" }, /* <ta_split_o> */ + { U"\U00000BC6\U00000BD7", "" }, /* <ta_split_au> */ + { U"\U00000BC7\U00000BBE", "" }, /* <ta_split_oo> */ + { U"\U00000CBF\U00000CD5", "" }, /* <kn-sign_ii> */ + { U"\U00000CC6\U00000CC2", "" }, /* <kn-sign_shorto> */ + { U"\U00000CC6\U00000CC2\U00000CD5", "" }, /* <kn-sign_o> */ + { U"\U00000CC6\U00000CD5", "" }, /* <kn-sign_e> */ + { U"\U00000CC6\U00000CD6", "" }, /* <kn-sign_ai> */ + { U"\U00000CCA\U00000CD5", "" }, /* <kn-sign1_o> */ + { U"\U00000D15\U00000D4D", "" }, /* <ml-chillu-k> */ + { U"\U00000D16\U00000D4D", "" }, /* <ml-kh> */ + { U"\U00000D17\U00000D4D", "" }, /* <ml-g> */ + { U"\U00000D18\U00000D4D", "" }, /* <ml-gh> */ + { U"\U00000D19\U00000D4D", "" }, /* <ml-ng> */ + { U"\U00000D1A\U00000D4D", "" }, /* <ml-ch> */ + { U"\U00000D1B\U00000D4D", "" }, /* <ml-chh> */ + { U"\U00000D1C\U00000D4D", "" }, /* <ml-j> */ + { U"\U00000D1D\U00000D4D", "" }, /* <ml-jh> */ + { U"\U00000D1E\U00000D4D", "" }, /* <ml-ny> */ + { U"\U00000D1F\U00000D4D", "" }, /* <ml-t> */ + { U"\U00000D20\U00000D4D", "" }, /* <ml-tt> */ + { U"\U00000D21\U00000D4D", "" }, /* <ml-d> */ + { U"\U00000D22\U00000D4D", "" }, /* <ml-dh> */ + { U"\U00000D23\U00000D4D", "" }, /* <ml-chillu-nn> */ + { U"\U00000D24\U00000D4D", "" }, /* <ml-th> */ + { U"\U00000D25\U00000D4D", "" }, /* <ml-thh> */ + { U"\U00000D26\U00000D4D", "" }, /* <ml-dd> */ + { U"\U00000D27\U00000D4D", "" }, /* <ml-ddh> */ + { U"\U00000D28\U00000D4D", "" }, /* <ml-chillu-n> */ + { U"\U00000D2A\U00000D4D", "" }, /* <ml-p> */ + { U"\U00000D2B\U00000D4D", "" }, /* <ml-ph> */ + { U"\U00000D2C\U00000D4D", "" }, /* <ml-b> */ + { U"\U00000D2D\U00000D4D", "" }, /* <ml-bh> */ + { U"\U00000D2E\U00000D4D", "" }, /* <ml-m> */ + { U"\U00000D2F\U00000D4D", "" }, /* <ml-y> */ + { U"\U00000D30\U00000D4D", "" }, /* <ml-chillu-r> */ + { U"\U00000D31\U00000D4D", "" }, /* <ml-rr> */ + { U"\U00000D32\U00000D4D", "" }, /* <ml-chillu-l> */ + { U"\U00000D33\U00000D4D", "" }, /* <ml-chillu-ll> */ + { U"\U00000D34\U00000D4D", "" }, /* <ml-zh> */ + { U"\U00000D35\U00000D4D", "" }, /* <ml-v> */ + { U"\U00000D36\U00000D4D", "" }, /* <ml-ss> */ + { U"\U00000D37\U00000D4D", "" }, /* <ml-sh> */ + { U"\U00000D38\U00000D4D", "" }, /* <ml-s> */ + { U"\U00000D39\U00000D4D", "" }, /* <ml-h> */ + { U"\U00000D41\U00000D4D", "" }, /* <ml-samvruthokaram> */ + { U"\U00000D46\U00000D3E", "" }, /* <ml-split-o> */ + { U"\U00000D46\U00000D57", "" }, /* <ml-split-au> */ + { U"\U00000D47\U00000D3E", "" }, /* <ml-split-oo> */ + { U"\U00000E40\U00000E01", "th_TH" }, /* <ko-kai-e> */ + { U"\U00000E40\U00000E02", "th_TH" }, /* <kho-khai-e> */ + { U"\U00000E40\U00000E03", "th_TH" }, /* <kho-khuat-e> */ + { U"\U00000E40\U00000E04", "th_TH" }, /* <kho-khwai-e> */ + { U"\U00000E40\U00000E05", "th_TH" }, /* <kho-khon-e> */ + { U"\U00000E40\U00000E06", "th_TH" }, /* <kho-rakhang-e> */ + { U"\U00000E40\U00000E07", "th_TH" }, /* <ngo-ngu-e> */ + { U"\U00000E40\U00000E08", "th_TH" }, /* <cho-chan-e> */ + { U"\U00000E40\U00000E09", "th_TH" }, /* <cho-ching-e> */ + { U"\U00000E40\U00000E0A", "th_TH" }, /* <cho-chang-e> */ + { U"\U00000E40\U00000E0B", "th_TH" }, /* <so-so-e> */ + { U"\U00000E40\U00000E0C", "th_TH" }, /* <cho-choe-e> */ + { U"\U00000E40\U00000E0D", "th_TH" }, /* <yo-ying-e> */ + { U"\U00000E40\U00000E0E", "th_TH" }, /* <do-chada-e> */ + { U"\U00000E40\U00000E0F", "th_TH" }, /* <to-patak-e> */ + { U"\U00000E40\U00000E10", "th_TH" }, /* <tho-than-e> */ + { U"\U00000E40\U00000E11", "th_TH" }, /* <tho-nangmontho-e> */ + { U"\U00000E40\U00000E12", "th_TH" }, /* <tho-phuthao-e> */ + { U"\U00000E40\U00000E13", "th_TH" }, /* <no-nen-e> */ + { U"\U00000E40\U00000E14", "th_TH" }, /* <do-dek-e> */ + { U"\U00000E40\U00000E15", "th_TH" }, /* <to-tao-e> */ + { U"\U00000E40\U00000E16", "th_TH" }, /* <tho-thung-e> */ + { U"\U00000E40\U00000E17", "th_TH" }, /* <tho-thahan-e> */ + { U"\U00000E40\U00000E18", "th_TH" }, /* <tho-thong-e> */ + { U"\U00000E40\U00000E19", "th_TH" }, /* <no-nu-e> */ + { U"\U00000E40\U00000E1A", "th_TH" }, /* <bo-baimai-e> */ + { U"\U00000E40\U00000E1B", "th_TH" }, /* <po-pla-e> */ + { U"\U00000E40\U00000E1C", "th_TH" }, /* <pho-phung-e> */ + { U"\U00000E40\U00000E1D", "th_TH" }, /* <fo-fa-e> */ + { U"\U00000E40\U00000E1E", "th_TH" }, /* <pho-phan-e> */ + { U"\U00000E40\U00000E1F", "th_TH" }, /* <fo-fan-e> */ + { U"\U00000E40\U00000E20", "th_TH" }, /* <pho-samphao-e> */ + { U"\U00000E40\U00000E21", "th_TH" }, /* <mo-ma-e> */ + { U"\U00000E40\U00000E22", "th_TH" }, /* <yo-yak-e> */ + { U"\U00000E40\U00000E23", "th_TH" }, /* <ro-rua-e> */ + { U"\U00000E40\U00000E25", "th_TH" }, /* <lo-ling-e> */ + { U"\U00000E40\U00000E27", "th_TH" }, /* <wo-waen-e> */ + { U"\U00000E40\U00000E28", "th_TH" }, /* <so-sala-e> */ + { U"\U00000E40\U00000E29", "th_TH" }, /* <so-rusi-e> */ + { U"\U00000E40\U00000E2A", "th_TH" }, /* <so-sua-e> */ + { U"\U00000E40\U00000E2B", "th_TH" }, /* <ho-hip-e> */ + { U"\U00000E40\U00000E2C", "th_TH" }, /* <lo-chula-e> */ + { U"\U00000E40\U00000E2D", "th_TH" }, /* <o-ang-e> */ + { U"\U00000E40\U00000E2E", "th_TH" }, /* <ho-nokhuk-e> */ + { U"\U00000E41\U00000E01", "th_TH" }, /* <ko-kai-ae> */ + { U"\U00000E41\U00000E02", "th_TH" }, /* <kho-khai-ae> */ + { U"\U00000E41\U00000E03", "th_TH" }, /* <kho-khuat-ae> */ + { U"\U00000E41\U00000E04", "th_TH" }, /* <kho-khwai-ae> */ + { U"\U00000E41\U00000E05", "th_TH" }, /* <kho-khon-ae> */ + { U"\U00000E41\U00000E06", "th_TH" }, /* <kho-rakhang-ae> */ + { U"\U00000E41\U00000E07", "th_TH" }, /* <ngo-ngu-ae> */ + { U"\U00000E41\U00000E08", "th_TH" }, /* <cho-chan-ae> */ + { U"\U00000E41\U00000E09", "th_TH" }, /* <cho-ching-ae> */ + { U"\U00000E41\U00000E0A", "th_TH" }, /* <cho-chang-ae> */ + { U"\U00000E41\U00000E0B", "th_TH" }, /* <so-so-ae> */ + { U"\U00000E41\U00000E0C", "th_TH" }, /* <cho-choe-ae> */ + { U"\U00000E41\U00000E0D", "th_TH" }, /* <yo-ying-ae> */ + { U"\U00000E41\U00000E0E", "th_TH" }, /* <do-chada-ae> */ + { U"\U00000E41\U00000E0F", "th_TH" }, /* <to-patak-ae> */ + { U"\U00000E41\U00000E10", "th_TH" }, /* <tho-than-ae> */ + { U"\U00000E41\U00000E11", "th_TH" }, /* <tho-nangmontho-ae> */ + { U"\U00000E41\U00000E12", "th_TH" }, /* <tho-phuthao-ae> */ + { U"\U00000E41\U00000E13", "th_TH" }, /* <no-nen-ae> */ + { U"\U00000E41\U00000E14", "th_TH" }, /* <do-dek-ae> */ + { U"\U00000E41\U00000E15", "th_TH" }, /* <to-tao-ae> */ + { U"\U00000E41\U00000E16", "th_TH" }, /* <tho-thung-ae> */ + { U"\U00000E41\U00000E17", "th_TH" }, /* <tho-thahan-ae> */ + { U"\U00000E41\U00000E18", "th_TH" }, /* <tho-thong-ae> */ + { U"\U00000E41\U00000E19", "th_TH" }, /* <no-nu-ae> */ + { U"\U00000E41\U00000E1A", "th_TH" }, /* <bo-baimai-ae> */ + { U"\U00000E41\U00000E1B", "th_TH" }, /* <po-pla-ae> */ + { U"\U00000E41\U00000E1C", "th_TH" }, /* <pho-phung-ae> */ + { U"\U00000E41\U00000E1D", "th_TH" }, /* <fo-fa-ae> */ + { U"\U00000E41\U00000E1E", "th_TH" }, /* <pho-phan-ae> */ + { U"\U00000E41\U00000E1F", "th_TH" }, /* <fo-fan-ae> */ + { U"\U00000E41\U00000E20", "th_TH" }, /* <pho-samphao-ae> */ + { U"\U00000E41\U00000E21", "th_TH" }, /* <mo-ma-ae> */ + { U"\U00000E41\U00000E22", "th_TH" }, /* <yo-yak-ae> */ + { U"\U00000E41\U00000E23", "th_TH" }, /* <ro-rua-ae> */ + { U"\U00000E41\U00000E25", "th_TH" }, /* <lo-ling-ae> */ + { U"\U00000E41\U00000E27", "th_TH" }, /* <wo-waen-ae> */ + { U"\U00000E41\U00000E28", "th_TH" }, /* <so-sala-ae> */ + { U"\U00000E41\U00000E29", "th_TH" }, /* <so-rusi-ae> */ + { U"\U00000E41\U00000E2A", "th_TH" }, /* <so-sua-ae> */ + { U"\U00000E41\U00000E2B", "th_TH" }, /* <ho-hip-ae> */ + { U"\U00000E41\U00000E2C", "th_TH" }, /* <lo-chula-ae> */ + { U"\U00000E41\U00000E2D", "th_TH" }, /* <o-ang-ae> */ + { U"\U00000E41\U00000E2E", "th_TH" }, /* <ho-nokhuk-ae> */ + { U"\U00000E42\U00000E01", "th_TH" }, /* <ko-kai-o> */ + { U"\U00000E42\U00000E02", "th_TH" }, /* <kho-khai-o> */ + { U"\U00000E42\U00000E03", "th_TH" }, /* <kho-khuat-o> */ + { U"\U00000E42\U00000E04", "th_TH" }, /* <kho-khwai-o> */ + { U"\U00000E42\U00000E05", "th_TH" }, /* <kho-khon-o> */ + { U"\U00000E42\U00000E06", "th_TH" }, /* <kho-rakhang-o> */ + { U"\U00000E42\U00000E07", "th_TH" }, /* <ngo-ngu-o> */ + { U"\U00000E42\U00000E08", "th_TH" }, /* <cho-chan-o> */ + { U"\U00000E42\U00000E09", "th_TH" }, /* <cho-ching-o> */ + { U"\U00000E42\U00000E0A", "th_TH" }, /* <cho-chang-o> */ + { U"\U00000E42\U00000E0B", "th_TH" }, /* <so-so-o> */ + { U"\U00000E42\U00000E0C", "th_TH" }, /* <cho-choe-o> */ + { U"\U00000E42\U00000E0D", "th_TH" }, /* <yo-ying-o> */ + { U"\U00000E42\U00000E0E", "th_TH" }, /* <do-chada-o> */ + { U"\U00000E42\U00000E0F", "th_TH" }, /* <to-patak-o> */ + { U"\U00000E42\U00000E10", "th_TH" }, /* <tho-than-o> */ + { U"\U00000E42\U00000E11", "th_TH" }, /* <tho-nangmontho-o> */ + { U"\U00000E42\U00000E12", "th_TH" }, /* <tho-phuthao-o> */ + { U"\U00000E42\U00000E13", "th_TH" }, /* <no-nen-o> */ + { U"\U00000E42\U00000E14", "th_TH" }, /* <do-dek-o> */ + { U"\U00000E42\U00000E15", "th_TH" }, /* <to-tao-o> */ + { U"\U00000E42\U00000E16", "th_TH" }, /* <tho-thung-o> */ + { U"\U00000E42\U00000E17", "th_TH" }, /* <tho-thahan-o> */ + { U"\U00000E42\U00000E18", "th_TH" }, /* <tho-thong-o> */ + { U"\U00000E42\U00000E19", "th_TH" }, /* <no-nu-o> */ + { U"\U00000E42\U00000E1A", "th_TH" }, /* <bo-baimai-o> */ + { U"\U00000E42\U00000E1B", "th_TH" }, /* <po-pla-o> */ + { U"\U00000E42\U00000E1C", "th_TH" }, /* <pho-phung-o> */ + { U"\U00000E42\U00000E1D", "th_TH" }, /* <fo-fa-o> */ + { U"\U00000E42\U00000E1E", "th_TH" }, /* <pho-phan-o> */ + { U"\U00000E42\U00000E1F", "th_TH" }, /* <fo-fan-o> */ + { U"\U00000E42\U00000E20", "th_TH" }, /* <pho-samphao-o> */ + { U"\U00000E42\U00000E21", "th_TH" }, /* <mo-ma-o> */ + { U"\U00000E42\U00000E22", "th_TH" }, /* <yo-yak-o> */ + { U"\U00000E42\U00000E23", "th_TH" }, /* <ro-rua-o> */ + { U"\U00000E42\U00000E25", "th_TH" }, /* <lo-ling-o> */ + { U"\U00000E42\U00000E27", "th_TH" }, /* <wo-waen-o> */ + { U"\U00000E42\U00000E28", "th_TH" }, /* <so-sala-o> */ + { U"\U00000E42\U00000E29", "th_TH" }, /* <so-rusi-o> */ + { U"\U00000E42\U00000E2A", "th_TH" }, /* <so-sua-o> */ + { U"\U00000E42\U00000E2B", "th_TH" }, /* <ho-hip-o> */ + { U"\U00000E42\U00000E2C", "th_TH" }, /* <lo-chula-o> */ + { U"\U00000E42\U00000E2D", "th_TH" }, /* <o-ang-o> */ + { U"\U00000E42\U00000E2E", "th_TH" }, /* <ho-nokhuk-o> */ + { U"\U00000E43\U00000E01", "th_TH" }, /* <ko-kai-ai-maimuan> */ + { U"\U00000E43\U00000E02", "th_TH" }, /* <kho-khai-ai-maimuan> */ + { U"\U00000E43\U00000E03", "th_TH" }, /* <kho-khuat-ai-maimuan> */ + { U"\U00000E43\U00000E04", "th_TH" }, /* <kho-khwai-ai-maimuan> */ + { U"\U00000E43\U00000E05", "th_TH" }, /* <kho-khon-ai-maimuan> */ + { U"\U00000E43\U00000E06", "th_TH" }, /* <kho-rakhang-ai-maimuan> */ + { U"\U00000E43\U00000E07", "th_TH" }, /* <ngo-ngu-ai-maimuan> */ + { U"\U00000E43\U00000E08", "th_TH" }, /* <cho-chan-ai-maimuan> */ + { U"\U00000E43\U00000E09", "th_TH" }, /* <cho-ching-ai-maimuan> */ + { U"\U00000E43\U00000E0A", "th_TH" }, /* <cho-chang-ai-maimuan> */ + { U"\U00000E43\U00000E0B", "th_TH" }, /* <so-so-ai-maimuan> */ + { U"\U00000E43\U00000E0C", "th_TH" }, /* <cho-choe-ai-maimuan> */ + { U"\U00000E43\U00000E0D", "th_TH" }, /* <yo-ying-ai-maimuan> */ + { U"\U00000E43\U00000E0E", "th_TH" }, /* <do-chada-ai-maimuan> */ + { U"\U00000E43\U00000E0F", "th_TH" }, /* <to-patak-ai-maimuan> */ + { U"\U00000E43\U00000E10", "th_TH" }, /* <tho-than-ai-maimuan> */ + { U"\U00000E43\U00000E11", "th_TH" }, /* <tho-nangmontho-ai-maimuan> */ + { U"\U00000E43\U00000E12", "th_TH" }, /* <tho-phuthao-ai-maimuan> */ + { U"\U00000E43\U00000E13", "th_TH" }, /* <no-nen-ai-maimuan> */ + { U"\U00000E43\U00000E14", "th_TH" }, /* <do-dek-ai-maimuan> */ + { U"\U00000E43\U00000E15", "th_TH" }, /* <to-tao-ai-maimuan> */ + { U"\U00000E43\U00000E16", "th_TH" }, /* <tho-thung-ai-maimuan> */ + { U"\U00000E43\U00000E17", "th_TH" }, /* <tho-thahan-ai-maimuan> */ + { U"\U00000E43\U00000E18", "th_TH" }, /* <tho-thong-ai-maimuan> */ + { U"\U00000E43\U00000E19", "th_TH" }, /* <no-nu-ai-maimuan> */ + { U"\U00000E43\U00000E1A", "th_TH" }, /* <bo-baimai-ai-maimuan> */ + { U"\U00000E43\U00000E1B", "th_TH" }, /* <po-pla-ai-maimuan> */ + { U"\U00000E43\U00000E1C", "th_TH" }, /* <pho-phung-ai-maimuan> */ + { U"\U00000E43\U00000E1D", "th_TH" }, /* <fo-fa-ai-maimuan> */ + { U"\U00000E43\U00000E1E", "th_TH" }, /* <pho-phan-ai-maimuan> */ + { U"\U00000E43\U00000E1F", "th_TH" }, /* <fo-fan-ai-maimuan> */ + { U"\U00000E43\U00000E20", "th_TH" }, /* <pho-samphao-ai-maimuan> */ + { U"\U00000E43\U00000E21", "th_TH" }, /* <mo-ma-ai-maimuan> */ + { U"\U00000E43\U00000E22", "th_TH" }, /* <yo-yak-ai-maimuan> */ + { U"\U00000E43\U00000E23", "th_TH" }, /* <ro-rua-ai-maimuan> */ + { U"\U00000E43\U00000E25", "th_TH" }, /* <lo-ling-ai-maimuan> */ + { U"\U00000E43\U00000E27", "th_TH" }, /* <wo-waen-ai-maimuan> */ + { U"\U00000E43\U00000E28", "th_TH" }, /* <so-sala-ai-maimuan> */ + { U"\U00000E43\U00000E29", "th_TH" }, /* <so-rusi-ai-maimuan> */ + { U"\U00000E43\U00000E2A", "th_TH" }, /* <so-sua-ai-maimuan> */ + { U"\U00000E43\U00000E2B", "th_TH" }, /* <ho-hip-ai-maimuan> */ + { U"\U00000E43\U00000E2C", "th_TH" }, /* <lo-chula-ai-maimuan> */ + { U"\U00000E43\U00000E2D", "th_TH" }, /* <o-ang-ai-maimuan> */ + { U"\U00000E43\U00000E2E", "th_TH" }, /* <ho-nokhuk-ai-maimuan> */ + { U"\U00000E44\U00000E01", "th_TH" }, /* <ko-kai-ai-maimalai> */ + { U"\U00000E44\U00000E02", "th_TH" }, /* <kho-khai-ai-maimalai> */ + { U"\U00000E44\U00000E03", "th_TH" }, /* <kho-khuat-ai-maimalai> */ + { U"\U00000E44\U00000E04", "th_TH" }, /* <kho-khwai-ai-maimalai> */ + { U"\U00000E44\U00000E05", "th_TH" }, /* <kho-khon-ai-maimalai> */ + { U"\U00000E44\U00000E06", "th_TH" }, /* <kho-rakhang-ai-maimalai> */ + { U"\U00000E44\U00000E07", "th_TH" }, /* <ngo-ngu-ai-maimalai> */ + { U"\U00000E44\U00000E08", "th_TH" }, /* <cho-chan-ai-maimalai> */ + { U"\U00000E44\U00000E09", "th_TH" }, /* <cho-ching-ai-maimalai> */ + { U"\U00000E44\U00000E0A", "th_TH" }, /* <cho-chang-ai-maimalai> */ + { U"\U00000E44\U00000E0B", "th_TH" }, /* <so-so-ai-maimalai> */ + { U"\U00000E44\U00000E0C", "th_TH" }, /* <cho-choe-ai-maimalai> */ + { U"\U00000E44\U00000E0D", "th_TH" }, /* <yo-ying-ai-maimalai> */ + { U"\U00000E44\U00000E0E", "th_TH" }, /* <do-chada-ai-maimalai> */ + { U"\U00000E44\U00000E0F", "th_TH" }, /* <to-patak-ai-maimalai> */ + { U"\U00000E44\U00000E10", "th_TH" }, /* <tho-than-ai-maimalai> */ + { U"\U00000E44\U00000E11", "th_TH" }, /* <tho-nangmontho-ai-maimalai> */ + { U"\U00000E44\U00000E12", "th_TH" }, /* <tho-phuthao-ai-maimalai> */ + { U"\U00000E44\U00000E13", "th_TH" }, /* <no-nen-ai-maimalai> */ + { U"\U00000E44\U00000E14", "th_TH" }, /* <do-dek-ai-maimalai> */ + { U"\U00000E44\U00000E15", "th_TH" }, /* <to-tao-ai-maimalai> */ + { U"\U00000E44\U00000E16", "th_TH" }, /* <tho-thung-ai-maimalai> */ + { U"\U00000E44\U00000E17", "th_TH" }, /* <tho-thahan-ai-maimalai> */ + { U"\U00000E44\U00000E18", "th_TH" }, /* <tho-thong-ai-maimalai> */ + { U"\U00000E44\U00000E19", "th_TH" }, /* <no-nu-ai-maimalai> */ + { U"\U00000E44\U00000E1A", "th_TH" }, /* <bo-baimai-ai-maimalai> */ + { U"\U00000E44\U00000E1B", "th_TH" }, /* <po-pla-ai-maimalai> */ + { U"\U00000E44\U00000E1C", "th_TH" }, /* <pho-phung-ai-maimalai> */ + { U"\U00000E44\U00000E1D", "th_TH" }, /* <fo-fa-ai-maimalai> */ + { U"\U00000E44\U00000E1E", "th_TH" }, /* <pho-phan-ai-maimalai> */ + { U"\U00000E44\U00000E1F", "th_TH" }, /* <fo-fan-ai-maimalai> */ + { U"\U00000E44\U00000E20", "th_TH" }, /* <pho-samphao-ai-maimalai> */ + { U"\U00000E44\U00000E21", "th_TH" }, /* <mo-ma-ai-maimalai> */ + { U"\U00000E44\U00000E22", "th_TH" }, /* <yo-yak-ai-maimalai> */ + { U"\U00000E44\U00000E23", "th_TH" }, /* <ro-rua-ai-maimalai> */ + { U"\U00000E44\U00000E25", "th_TH" }, /* <lo-ling-ai-maimalai> */ + { U"\U00000E44\U00000E27", "th_TH" }, /* <wo-waen-ai-maimalai> */ + { U"\U00000E44\U00000E28", "th_TH" }, /* <so-sala-ai-maimalai> */ + { U"\U00000E44\U00000E29", "th_TH" }, /* <so-rusi-ai-maimalai> */ + { U"\U00000E44\U00000E2A", "th_TH" }, /* <so-sua-ai-maimalai> */ + { U"\U00000E44\U00000E2B", "th_TH" }, /* <ho-hip-ai-maimalai> */ + { U"\U00000E44\U00000E2C", "th_TH" }, /* <lo-chula-ai-maimalai> */ + { U"\U00000E44\U00000E2D", "th_TH" }, /* <o-ang-ai-maimalai> */ + { U"\U00000E44\U00000E2E", "th_TH" }, /* <ho-nokhuk-ai-maimalai> */ + { U"\U00000EC0\U00000E81", "lo_LA" }, /* <ko-e> */ + { U"\U00000EC0\U00000E82", "lo_LA" }, /* <kho-sung-e> */ + { U"\U00000EC0\U00000E84", "lo_LA" }, /* <kho-tam-e> */ + { U"\U00000EC0\U00000E87", "lo_LA" }, /* <ngo-e> */ + { U"\U00000EC0\U00000E88", "lo_LA" }, /* <cho-e> */ + { U"\U00000EC0\U00000E8A", "lo_LA" }, /* <xo-e> */ + { U"\U00000EC0\U00000E8D", "lo_LA" }, /* <nyo-e> */ + { U"\U00000EC0\U00000E94", "lo_LA" }, /* <do-e> */ + { U"\U00000EC0\U00000E95", "lo_LA" }, /* <to-e> */ + { U"\U00000EC0\U00000E96", "lo_LA" }, /* <tho-sung-e> */ + { U"\U00000EC0\U00000E97", "lo_LA" }, /* <tho-tam-e> */ + { U"\U00000EC0\U00000E99", "lo_LA" }, /* <no-e> */ + { U"\U00000EC0\U00000E9A", "lo_LA" }, /* <bo-e> */ + { U"\U00000EC0\U00000E9B", "lo_LA" }, /* <po-e> */ + { U"\U00000EC0\U00000E9C", "lo_LA" }, /* <pho-sung-e> */ + { U"\U00000EC0\U00000E9D", "lo_LA" }, /* <fo-tam-e> */ + { U"\U00000EC0\U00000E9E", "lo_LA" }, /* <pho-tam-e> */ + { U"\U00000EC0\U00000E9F", "lo_LA" }, /* <fo-sung-e> */ + { U"\U00000EC0\U00000EA1", "lo_LA" }, /* <mo-e> */ + { U"\U00000EC0\U00000EA2", "lo_LA" }, /* <yo-e> */ + { U"\U00000EC0\U00000EA3", "lo_LA" }, /* <ro-e> */ + { U"\U00000EC0\U00000EA5", "lo_LA" }, /* <lo-e> */ + { U"\U00000EC0\U00000EA7", "lo_LA" }, /* <wo-e> */ + { U"\U00000EC0\U00000EAA", "lo_LA" }, /* <so-e> */ + { U"\U00000EC0\U00000EAB", "lo_LA" }, /* <ho-e> */ + { U"\U00000EC0\U00000EAD", "lo_LA" }, /* <o-e> */ + { U"\U00000EC0\U00000EAE", "lo_LA" }, /* <hor-e> */ + { U"\U00000EC0\U00000EDC", "lo_LA" }, /* <nhor-e> */ + { U"\U00000EC0\U00000EDD", "lo_LA" }, /* <mhor-e> */ + { U"\U00000EC1\U00000E81", "lo_LA" }, /* <ko-ae> */ + { U"\U00000EC1\U00000E82", "lo_LA" }, /* <kho-sung-ae> */ + { U"\U00000EC1\U00000E84", "lo_LA" }, /* <kho-tam-ae> */ + { U"\U00000EC1\U00000E87", "lo_LA" }, /* <ngo-ae> */ + { U"\U00000EC1\U00000E88", "lo_LA" }, /* <cho-ae> */ + { U"\U00000EC1\U00000E8A", "lo_LA" }, /* <xo-ae> */ + { U"\U00000EC1\U00000E8D", "lo_LA" }, /* <nyo-ae> */ + { U"\U00000EC1\U00000E94", "lo_LA" }, /* <do-ae> */ + { U"\U00000EC1\U00000E95", "lo_LA" }, /* <to-ae> */ + { U"\U00000EC1\U00000E96", "lo_LA" }, /* <tho-sung-ae> */ + { U"\U00000EC1\U00000E97", "lo_LA" }, /* <tho-tam-ae> */ + { U"\U00000EC1\U00000E99", "lo_LA" }, /* <no-ae> */ + { U"\U00000EC1\U00000E9A", "lo_LA" }, /* <bo-ae> */ + { U"\U00000EC1\U00000E9B", "lo_LA" }, /* <po-ae> */ + { U"\U00000EC1\U00000E9C", "lo_LA" }, /* <pho-sung-ae> */ + { U"\U00000EC1\U00000E9D", "lo_LA" }, /* <fo-tam-ae> */ + { U"\U00000EC1\U00000E9E", "lo_LA" }, /* <pho-tam-ae> */ + { U"\U00000EC1\U00000E9F", "lo_LA" }, /* <fo-sung-ae> */ + { U"\U00000EC1\U00000EA1", "lo_LA" }, /* <mo-ae> */ + { U"\U00000EC1\U00000EA2", "lo_LA" }, /* <yo-ae> */ + { U"\U00000EC1\U00000EA3", "lo_LA" }, /* <ro-ae> */ + { U"\U00000EC1\U00000EA5", "lo_LA" }, /* <lo-ae> */ + { U"\U00000EC1\U00000EA7", "lo_LA" }, /* <wo-ae> */ + { U"\U00000EC1\U00000EAA", "lo_LA" }, /* <so-ae> */ + { U"\U00000EC1\U00000EAB", "lo_LA" }, /* <ho-ae> */ + { U"\U00000EC1\U00000EAD", "lo_LA" }, /* <o-ae> */ + { U"\U00000EC1\U00000EAE", "lo_LA" }, /* <hor-ae> */ + { U"\U00000EC1\U00000EDC", "lo_LA" }, /* <nhor-ae> */ + { U"\U00000EC1\U00000EDD", "lo_LA" }, /* <mhor-ae> */ + { U"\U00000EC2\U00000E81", "lo_LA" }, /* <ko-o> */ + { U"\U00000EC2\U00000E82", "lo_LA" }, /* <kho-sung-o> */ + { U"\U00000EC2\U00000E84", "lo_LA" }, /* <kho-tam-o> */ + { U"\U00000EC2\U00000E87", "lo_LA" }, /* <ngo-o> */ + { U"\U00000EC2\U00000E88", "lo_LA" }, /* <cho-o> */ + { U"\U00000EC2\U00000E8A", "lo_LA" }, /* <xo-o> */ + { U"\U00000EC2\U00000E8D", "lo_LA" }, /* <nyo-o> */ + { U"\U00000EC2\U00000E94", "lo_LA" }, /* <do-o> */ + { U"\U00000EC2\U00000E95", "lo_LA" }, /* <to-o> */ + { U"\U00000EC2\U00000E96", "lo_LA" }, /* <tho-sung-o> */ + { U"\U00000EC2\U00000E97", "lo_LA" }, /* <tho-tam-o> */ + { U"\U00000EC2\U00000E99", "lo_LA" }, /* <no-o> */ + { U"\U00000EC2\U00000E9A", "lo_LA" }, /* <bo-o> */ + { U"\U00000EC2\U00000E9B", "lo_LA" }, /* <po-o> */ + { U"\U00000EC2\U00000E9C", "lo_LA" }, /* <pho-sung-o> */ + { U"\U00000EC2\U00000E9D", "lo_LA" }, /* <fo-tam-o> */ + { U"\U00000EC2\U00000E9E", "lo_LA" }, /* <pho-tam-o> */ + { U"\U00000EC2\U00000E9F", "lo_LA" }, /* <fo-sung-o> */ + { U"\U00000EC2\U00000EA1", "lo_LA" }, /* <mo-o> */ + { U"\U00000EC2\U00000EA2", "lo_LA" }, /* <yo-o> */ + { U"\U00000EC2\U00000EA3", "lo_LA" }, /* <ro-o> */ + { U"\U00000EC2\U00000EA5", "lo_LA" }, /* <lo-o> */ + { U"\U00000EC2\U00000EA7", "lo_LA" }, /* <wo-o> */ + { U"\U00000EC2\U00000EAA", "lo_LA" }, /* <so-o> */ + { U"\U00000EC2\U00000EAB", "lo_LA" }, /* <ho-o> */ + { U"\U00000EC2\U00000EAD", "lo_LA" }, /* <o-o> */ + { U"\U00000EC2\U00000EAE", "lo_LA" }, /* <hor-o> */ + { U"\U00000EC2\U00000EDC", "lo_LA" }, /* <nhor-o> */ + { U"\U00000EC2\U00000EDD", "lo_LA" }, /* <mhor-o> */ + { U"\U00000EC3\U00000E81", "lo_LA" }, /* <ko-ai-maimuan> */ + { U"\U00000EC3\U00000E82", "lo_LA" }, /* <kho-sung-ai-maimuan> */ + { U"\U00000EC3\U00000E84", "lo_LA" }, /* <kho-tam-ai-maimuan> */ + { U"\U00000EC3\U00000E87", "lo_LA" }, /* <ngo-ai-maimuan> */ + { U"\U00000EC3\U00000E88", "lo_LA" }, /* <cho-ai-maimuan> */ + { U"\U00000EC3\U00000E8A", "lo_LA" }, /* <xo-ai-maimuan> */ + { U"\U00000EC3\U00000E8D", "lo_LA" }, /* <nyo-ai-maimuan> */ + { U"\U00000EC3\U00000E94", "lo_LA" }, /* <do-ai-maimuan> */ + { U"\U00000EC3\U00000E95", "lo_LA" }, /* <to-ai-maimuan> */ + { U"\U00000EC3\U00000E96", "lo_LA" }, /* <tho-sung-ai-maimuan> */ + { U"\U00000EC3\U00000E97", "lo_LA" }, /* <tho-tam-ai-maimuan> */ + { U"\U00000EC3\U00000E99", "lo_LA" }, /* <no-ai-maimuan> */ + { U"\U00000EC3\U00000E9A", "lo_LA" }, /* <bo-ai-maimuan> */ + { U"\U00000EC3\U00000E9B", "lo_LA" }, /* <po-ai-maimuan> */ + { U"\U00000EC3\U00000E9C", "lo_LA" }, /* <pho-sung-ai-maimuan> */ + { U"\U00000EC3\U00000E9D", "lo_LA" }, /* <fo-tam-ai-maimuan> */ + { U"\U00000EC3\U00000E9E", "lo_LA" }, /* <pho-tam-ai-maimuan> */ + { U"\U00000EC3\U00000E9F", "lo_LA" }, /* <fo-sung-ai-maimuan> */ + { U"\U00000EC3\U00000EA1", "lo_LA" }, /* <mo-ai-maimuan> */ + { U"\U00000EC3\U00000EA2", "lo_LA" }, /* <yo-ai-maimuan> */ + { U"\U00000EC3\U00000EA3", "lo_LA" }, /* <ro-ai-maimuan> */ + { U"\U00000EC3\U00000EA5", "lo_LA" }, /* <lo-ai-maimuan> */ + { U"\U00000EC3\U00000EA7", "lo_LA" }, /* <wo-ai-maimuan> */ + { U"\U00000EC3\U00000EAA", "lo_LA" }, /* <so-ai-maimuan> */ + { U"\U00000EC3\U00000EAB", "lo_LA" }, /* <ho-ai-maimuan> */ + { U"\U00000EC3\U00000EAD", "lo_LA" }, /* <o-ai-maimuan> */ + { U"\U00000EC3\U00000EAE", "lo_LA" }, /* <hor-ai-maimuan> */ + { U"\U00000EC3\U00000EDC", "lo_LA" }, /* <nhor-ai-maimuan> */ + { U"\U00000EC3\U00000EDD", "lo_LA" }, /* <mhor-ai-maimuan> */ + { U"\U00000EC4\U00000E81", "lo_LA" }, /* <ko-ai-maimalai> */ + { U"\U00000EC4\U00000E82", "lo_LA" }, /* <kho-sung-ai-maimalai> */ + { U"\U00000EC4\U00000E84", "lo_LA" }, /* <kho-tam-ai-maimalai> */ + { U"\U00000EC4\U00000E87", "lo_LA" }, /* <ngo-ai-maimalai> */ + { U"\U00000EC4\U00000E88", "lo_LA" }, /* <cho-ai-maimalai> */ + { U"\U00000EC4\U00000E8A", "lo_LA" }, /* <xo-ai-maimalai> */ + { U"\U00000EC4\U00000E8D", "lo_LA" }, /* <nyo-ai-maimalai> */ + { U"\U00000EC4\U00000E94", "lo_LA" }, /* <do-ai-maimalai> */ + { U"\U00000EC4\U00000E95", "lo_LA" }, /* <to-ai-maimalai> */ + { U"\U00000EC4\U00000E96", "lo_LA" }, /* <tho-sung-ai-maimalai> */ + { U"\U00000EC4\U00000E97", "lo_LA" }, /* <tho-tam-ai-maimalai> */ + { U"\U00000EC4\U00000E99", "lo_LA" }, /* <no-ai-maimalai> */ + { U"\U00000EC4\U00000E9A", "lo_LA" }, /* <bo-ai-maimalai> */ + { U"\U00000EC4\U00000E9B", "lo_LA" }, /* <po-ai-maimalai> */ + { U"\U00000EC4\U00000E9C", "lo_LA" }, /* <pho-sung-ai-maimalai> */ + { U"\U00000EC4\U00000E9D", "lo_LA" }, /* <fo-tam-ai-maimalai> */ + { U"\U00000EC4\U00000E9E", "lo_LA" }, /* <pho-tam-ai-maimalai> */ + { U"\U00000EC4\U00000E9F", "lo_LA" }, /* <fo-sung-ai-maimalai> */ + { U"\U00000EC4\U00000EA1", "lo_LA" }, /* <mo-ai-maimalai> */ + { U"\U00000EC4\U00000EA2", "lo_LA" }, /* <yo-ai-maimalai> */ + { U"\U00000EC4\U00000EA3", "lo_LA" }, /* <ro-ai-maimalai> */ + { U"\U00000EC4\U00000EA5", "lo_LA" }, /* <lo-ai-maimalai> */ + { U"\U00000EC4\U00000EA7", "lo_LA" }, /* <wo-ai-maimalai> */ + { U"\U00000EC4\U00000EAA", "lo_LA" }, /* <so-ai-maimalai> */ + { U"\U00000EC4\U00000EAB", "lo_LA" }, /* <ho-ai-maimalai> */ + { U"\U00000EC4\U00000EAD", "lo_LA" }, /* <o-ai-maimalai> */ + { U"\U00000EC4\U00000EAE", "lo_LA" }, /* <hor-ai-maimalai> */ + { U"\U00000EC4\U00000EDC", "lo_LA" }, /* <nhor-ai-maimalai> */ + { U"\U00000EC4\U00000EDD", "lo_LA" }, /* <mhor-ai-maimalai> */ + { U"\U00000F42\U00000F45", "" }, /* <TIB-GACA> */ + { U"\U00000F42\U00000F49", "" }, /* <TIB-GANYA> */ + { U"\U00000F42\U00000F4F", "" }, /* <TIB-GATA> */ + { U"\U00000F42\U00000F51", "" }, /* <TIB-GAD> */ + { U"\U00000F42\U00000F51\U00000F42", "" }, /* <TIB-GADAGA> */ + { U"\U00000F42\U00000F51\U00000F44", "" }, /* <TIB-GADANGA> */ + { U"\U00000F42\U00000F51\U00000F51", "" }, /* <TIB-GADADA> */ + { U"\U00000F42\U00000F51\U00000F53", "" }, /* <TIB-GADANA> */ + { U"\U00000F42\U00000F51\U00000F56", "" }, /* <TIB-GADABA> */ + { U"\U00000F42\U00000F51\U00000F58", "" }, /* <TIB-GADAMA> */ + { U"\U00000F42\U00000F51\U00000F60", "" }, /* <TIB-GADA-A> */ + { U"\U00000F42\U00000F51\U00000F62", "" }, /* <TIB-GADARA> */ + { U"\U00000F42\U00000F51\U00000F63", "" }, /* <TIB-GADALA> */ + { U"\U00000F42\U00000F51\U00000F66", "" }, /* <TIB-GADASA> */ + { U"\U00000F42\U00000F51\U00000F72", "" }, /* <TIB-GADAI> */ + { U"\U00000F42\U00000F51\U00000F72\U00000F72", "" }, /* <TIB-GADAII> */ + { U"\U00000F42\U00000F51\U00000F74", "" }, /* <TIB-GADAU> */ + { U"\U00000F42\U00000F51\U00000F7A", "" }, /* <TIB-GADAE> */ + { U"\U00000F42\U00000F51\U00000F7B", "" }, /* <TIB-GADAEE> */ + { U"\U00000F42\U00000F51\U00000F7C", "" }, /* <TIB-GADAO> */ + { U"\U00000F42\U00000F51\U00000F7D", "" }, /* <TIB-GADAOO> */ + { U"\U00000F42\U00000F51\U00000F7E", "" }, /* <TIB-GADAMA2> */ + { U"\U00000F42\U00000F51\U00000FAD", "" }, /* <TIB-GADAsubWA> */ + { U"\U00000F42\U00000F53", "" }, /* <TIB-GAN> */ + { U"\U00000F42\U00000F53\U00000F42", "" }, /* <TIB-GANAGA> */ + { U"\U00000F42\U00000F53\U00000F44", "" }, /* <TIB-GANANGA> */ + { U"\U00000F42\U00000F53\U00000F51", "" }, /* <TIB-GANADA> */ + { U"\U00000F42\U00000F53\U00000F53", "" }, /* <TIB-GANANA> */ + { U"\U00000F42\U00000F53\U00000F56", "" }, /* <TIB-GANABA> */ + { U"\U00000F42\U00000F53\U00000F58", "" }, /* <TIB-GANAMA> */ + { U"\U00000F42\U00000F53\U00000F5D", "" }, /* <TIB-GANAWA> */ + { U"\U00000F42\U00000F53\U00000F60", "" }, /* <TIB-GANA-A> */ + { U"\U00000F42\U00000F53\U00000F62", "" }, /* <TIB-GANARA> */ + { U"\U00000F42\U00000F53\U00000F63", "" }, /* <TIB-GANALA> */ + { U"\U00000F42\U00000F53\U00000F66", "" }, /* <TIB-GANASA> */ + { U"\U00000F42\U00000F53\U00000F72", "" }, /* <TIB-GANAI> */ + { U"\U00000F42\U00000F53\U00000F72\U00000F72", "" }, /* <TIB-GANAII> */ + { U"\U00000F42\U00000F53\U00000F74", "" }, /* <TIB-GANAU> */ + { U"\U00000F42\U00000F53\U00000F7A", "" }, /* <TIB-GANAE> */ + { U"\U00000F42\U00000F53\U00000F7B", "" }, /* <TIB-GANAEE> */ + { U"\U00000F42\U00000F53\U00000F7C", "" }, /* <TIB-GANAO> */ + { U"\U00000F42\U00000F53\U00000F7D", "" }, /* <TIB-GANAOO> */ + { U"\U00000F42\U00000F53\U00000F7E", "" }, /* <TIB-GANAMA2> */ + { U"\U00000F42\U00000F53\U00000FAD", "" }, /* <TIB-GANAsubWA> */ + { U"\U00000F42\U00000F59", "" }, /* <TIB-GATSA> */ + { U"\U00000F42\U00000F5E", "" }, /* <TIB-GAZHA> */ + { U"\U00000F42\U00000F5F", "" }, /* <TIB-GAZA> */ + { U"\U00000F42\U00000F61", "" }, /* <TIB-GAYA> */ + { U"\U00000F42\U00000F64", "" }, /* <TIB-GASHA> */ + { U"\U00000F42\U00000F66", "" }, /* <TIB-GAS> */ + { U"\U00000F42\U00000F66\U00000F42", "" }, /* <TIB-GASAGA> */ + { U"\U00000F42\U00000F66\U00000F44", "" }, /* <TIB-GASANGA> */ + { U"\U00000F42\U00000F66\U00000F51", "" }, /* <TIB-GASADA> */ + { U"\U00000F42\U00000F66\U00000F53", "" }, /* <TIB-GASANA> */ + { U"\U00000F42\U00000F66\U00000F56", "" }, /* <TIB-GASABA> */ + { U"\U00000F42\U00000F66\U00000F58", "" }, /* <TIB-GASAMA> */ + { U"\U00000F42\U00000F66\U00000F60", "" }, /* <TIB-GASA-A> */ + { U"\U00000F42\U00000F66\U00000F62", "" }, /* <TIB-GASARA> */ + { U"\U00000F42\U00000F66\U00000F63", "" }, /* <TIB-GASALA> */ + { U"\U00000F42\U00000F66\U00000F66", "" }, /* <TIB-GASASA> */ + { U"\U00000F42\U00000F66\U00000F72", "" }, /* <TIB-GASAI> */ + { U"\U00000F42\U00000F66\U00000F72\U00000F72", "" }, /* <TIB-GASAII> */ + { U"\U00000F42\U00000F66\U00000F74", "" }, /* <TIB-GASAU> */ + { U"\U00000F42\U00000F66\U00000F7A", "" }, /* <TIB-GASAE> */ + { U"\U00000F42\U00000F66\U00000F7B", "" }, /* <TIB-GASAEE> */ + { U"\U00000F42\U00000F66\U00000F7C", "" }, /* <TIB-GASAO> */ + { U"\U00000F42\U00000F66\U00000F7D", "" }, /* <TIB-GASAOO> */ + { U"\U00000F42\U00000F66\U00000FAD", "" }, /* <TIB-GASAsubWA> */ + { U"\U00000F51\U00000F40", "" }, /* <TIB-DKA> */ + { U"\U00000F51\U00000F42", "" }, /* <TIB-DAGA> */ + { U"\U00000F51\U00000F42\U00000F42", "" }, /* <TIB-DGAG> */ + { U"\U00000F51\U00000F42\U00000F44", "" }, /* <TIB-DGANG> */ + { U"\U00000F51\U00000F42\U00000F51", "" }, /* <TIB-DGAD> */ + { U"\U00000F51\U00000F42\U00000F53", "" }, /* <TIB-DGAN> */ + { U"\U00000F51\U00000F42\U00000F56", "" }, /* <TIB-DGAB> */ + { U"\U00000F51\U00000F42\U00000F58", "" }, /* <TIB-DGAM> */ + { U"\U00000F51\U00000F42\U00000F5D", "" }, /* <TIB-DGAW> */ + { U"\U00000F51\U00000F42\U00000F60", "" }, /* <TIB-DGA-> */ + { U"\U00000F51\U00000F42\U00000F62", "" }, /* <TIB-DGAR> */ + { U"\U00000F51\U00000F42\U00000F63", "" }, /* <TIB-DGAL> */ + { U"\U00000F51\U00000F42\U00000F66", "" }, /* <TIB-DGAS> */ + { U"\U00000F51\U00000F42\U00000F72", "" }, /* <TIB-DGAI> */ + { U"\U00000F51\U00000F42\U00000F74", "" }, /* <TIB-DGU> */ + { U"\U00000F51\U00000F42\U00000F7A", "" }, /* <TIB-DGE> */ + { U"\U00000F51\U00000F42\U00000F7B", "" }, /* <TIB-DGEE> */ + { U"\U00000F51\U00000F42\U00000F7C", "" }, /* <TIB-DGO> */ + { U"\U00000F51\U00000F42\U00000F7D", "" }, /* <TIB-DGOO> */ + { U"\U00000F51\U00000F42\U00000FAD", "" }, /* <TIB-DGsubWA> */ + { U"\U00000F51\U00000F42\U00000FB1", "" }, /* <TIB-DGsubYA> */ + { U"\U00000F51\U00000F42\U00000FB2", "" }, /* <TIB-DGsubRA> */ + { U"\U00000F51\U00000F44", "" }, /* <TIB-DANGA> */ + { U"\U00000F51\U00000F44\U00000F42", "" }, /* <TIB-DANGAGA> */ + { U"\U00000F51\U00000F44\U00000F44", "" }, /* <TIB-DANGANGA> */ + { U"\U00000F51\U00000F44\U00000F51", "" }, /* <TIB-DANGADA> */ + { U"\U00000F51\U00000F44\U00000F53", "" }, /* <TIB-DANGANA> */ + { U"\U00000F51\U00000F44\U00000F56", "" }, /* <TIB-DANGABA> */ + { U"\U00000F51\U00000F44\U00000F58", "" }, /* <TIB-DANGAMA> */ + { U"\U00000F51\U00000F44\U00000F60", "" }, /* <TIB-DANGA-A> */ + { U"\U00000F51\U00000F44\U00000F62", "" }, /* <TIB-DANGARA> */ + { U"\U00000F51\U00000F44\U00000F63", "" }, /* <TIB-DANGALA> */ + { U"\U00000F51\U00000F44\U00000F66", "" }, /* <TIB-DANGASA> */ + { U"\U00000F51\U00000F44\U00000F72", "" }, /* <TIB-DANGAI> */ + { U"\U00000F51\U00000F44\U00000F72\U00000F72", "" }, /* <TIB-DANGAII> */ + { U"\U00000F51\U00000F44\U00000F74", "" }, /* <TIB-DANGAU> */ + { U"\U00000F51\U00000F44\U00000F7A", "" }, /* <TIB-DANGAE> */ + { U"\U00000F51\U00000F44\U00000F7B", "" }, /* <TIB-DANGAEE> */ + { U"\U00000F51\U00000F44\U00000F7C", "" }, /* <TIB-DANGAO> */ + { U"\U00000F51\U00000F44\U00000F7D", "" }, /* <TIB-DANGAOO> */ + { U"\U00000F51\U00000F44\U00000FAD", "" }, /* <TIB-DANGAsubWA> */ + { U"\U00000F51\U00000F54", "" }, /* <TIB-DAPA> */ + { U"\U00000F51\U00000F56", "" }, /* <TIB-DABA> */ + { U"\U00000F51\U00000F56\U00000F42", "" }, /* <TIB-DABAGA> */ + { U"\U00000F51\U00000F56\U00000F44", "" }, /* <TIB-DABANGA> */ + { U"\U00000F51\U00000F56\U00000F51", "" }, /* <TIB-DABADA> */ + { U"\U00000F51\U00000F56\U00000F53", "" }, /* <TIB-DABANA> */ + { U"\U00000F51\U00000F56\U00000F56", "" }, /* <TIB-DABABA> */ + { U"\U00000F51\U00000F56\U00000F58", "" }, /* <TIB-DABAMA> */ + { U"\U00000F51\U00000F56\U00000F60", "" }, /* <TIB-DABA-A> */ + { U"\U00000F51\U00000F56\U00000F62", "" }, /* <TIB-DABARA> */ + { U"\U00000F51\U00000F56\U00000F63", "" }, /* <TIB-DABALA> */ + { U"\U00000F51\U00000F56\U00000F66", "" }, /* <TIB-DABASA> */ + { U"\U00000F51\U00000F56\U00000F72", "" }, /* <TIB-DABAI> */ + { U"\U00000F51\U00000F56\U00000F72\U00000F72", "" }, /* <TIB-DABAII> */ + { U"\U00000F51\U00000F56\U00000F74", "" }, /* <TIB-DABAU> */ + { U"\U00000F51\U00000F56\U00000F7A", "" }, /* <TIB-DABAE> */ + { U"\U00000F51\U00000F56\U00000F7B", "" }, /* <TIB-DABAEE> */ + { U"\U00000F51\U00000F56\U00000F7C", "" }, /* <TIB-DABAO> */ + { U"\U00000F51\U00000F56\U00000F7D", "" }, /* <TIB-DABAOI> */ + { U"\U00000F51\U00000F56\U00000FAD", "" }, /* <TIB-DABAsubWA> */ + { U"\U00000F51\U00000F56\U00000FB1", "" }, /* <TIB-DABAsubYA> */ + { U"\U00000F51\U00000F56\U00000FB2", "" }, /* <TIB-DABAsubRA> */ + { U"\U00000F51\U00000F58", "" }, /* <TIB-DAMA> */ + { U"\U00000F51\U00000F58\U00000F42", "" }, /* <TIB-DAMAGA> */ + { U"\U00000F51\U00000F58\U00000F44", "" }, /* <TIB-DAMANGA> */ + { U"\U00000F51\U00000F58\U00000F51", "" }, /* <TIB-DAMADA> */ + { U"\U00000F51\U00000F58\U00000F53", "" }, /* <TIB-DAMANA> */ + { U"\U00000F51\U00000F58\U00000F56", "" }, /* <TIB-DAMABA> */ + { U"\U00000F51\U00000F58\U00000F58", "" }, /* <TIB-DAMAMA> */ + { U"\U00000F51\U00000F58\U00000F5D", "" }, /* <TIB-DAMAWA> */ + { U"\U00000F51\U00000F58\U00000F60", "" }, /* <TIB-DAMA-A> */ + { U"\U00000F51\U00000F58\U00000F62", "" }, /* <TIB-DAMARA> */ + { U"\U00000F51\U00000F58\U00000F63", "" }, /* <TIB-DAMALA> */ + { U"\U00000F51\U00000F58\U00000F66", "" }, /* <TIB-DAMASA> */ + { U"\U00000F51\U00000F58\U00000F72", "" }, /* <TIB-DAMAI> */ + { U"\U00000F51\U00000F58\U00000F72\U00000F72", "" }, /* <TIB-DAMAII> */ + { U"\U00000F51\U00000F58\U00000F74", "" }, /* <TIB-DAMAU> */ + { U"\U00000F51\U00000F58\U00000F7A", "" }, /* <TIB-DAMAE> */ + { U"\U00000F51\U00000F58\U00000F7B", "" }, /* <TIB-DAMAEE> */ + { U"\U00000F51\U00000F58\U00000F7C", "" }, /* <TIB-DAMAO> */ + { U"\U00000F51\U00000F58\U00000F7D", "" }, /* <TIB-DAMAOO> */ + { U"\U00000F51\U00000F58\U00000FAD", "" }, /* <TIB-DAMAsubWA> */ + { U"\U00000F51\U00000F58\U00000FB1", "" }, /* <TIB-DAMAsubYA> */ + { U"\U00000F56\U00000F40", "" }, /* <TIB-BKA> */ + { U"\U00000F56\U00000F42", "" }, /* <TIB-BAGA> */ + { U"\U00000F56\U00000F42\U00000F42", "" }, /* <TIB-BGAG> */ + { U"\U00000F56\U00000F42\U00000F44", "" }, /* <TIB-BGANG> */ + { U"\U00000F56\U00000F42\U00000F51", "" }, /* <TIB-BGAD> */ + { U"\U00000F56\U00000F42\U00000F53", "" }, /* <TIB-BGAN> */ + { U"\U00000F56\U00000F42\U00000F56", "" }, /* <TIB-BGAB> */ + { U"\U00000F56\U00000F42\U00000F58", "" }, /* <TIB-BGAM> */ + { U"\U00000F56\U00000F42\U00000F5D", "" }, /* <TIB-BGAW> */ + { U"\U00000F56\U00000F42\U00000F60", "" }, /* <TIB-BGA-> */ + { U"\U00000F56\U00000F42\U00000F62", "" }, /* <TIB-BGAR> */ + { U"\U00000F56\U00000F42\U00000F63", "" }, /* <TIB-BGAL> */ + { U"\U00000F56\U00000F42\U00000F72", "" }, /* <TIB-BGAI> */ + { U"\U00000F56\U00000F42\U00000F72\U00000F72", "" }, /* <TIB-BGAII> */ + { U"\U00000F56\U00000F42\U00000F74", "" }, /* <TIB-BGU> */ + { U"\U00000F56\U00000F42\U00000F7A", "" }, /* <TIB-BGE> */ + { U"\U00000F56\U00000F42\U00000F7B", "" }, /* <TIB-BGEE> */ + { U"\U00000F56\U00000F42\U00000F7C", "" }, /* <TIB-BGO> */ + { U"\U00000F56\U00000F42\U00000F7D", "" }, /* <TIB-BGOO> */ + { U"\U00000F56\U00000F42\U00000F7E", "" }, /* <TIB-BGAM2> */ + { U"\U00000F56\U00000F42\U00000FAD", "" }, /* <TIB-BGsubWA> */ + { U"\U00000F56\U00000F42\U00000FB1", "" }, /* <TIB-BGsubYA> */ + { U"\U00000F56\U00000F42\U00000FB2", "" }, /* <TIB-BGsubRA> */ + { U"\U00000F56\U00000F42\U00000FB3", "" }, /* <TIB-BGsubLA> */ + { U"\U00000F56\U00000F45", "" }, /* <TIB-BACA> */ + { U"\U00000F56\U00000F4F", "" }, /* <TIB-BATA> */ + { U"\U00000F56\U00000F51", "" }, /* <TIB-BADA> */ + { U"\U00000F56\U00000F51\U00000F42", "" }, /* <TIB-BADAGA> */ + { U"\U00000F56\U00000F51\U00000F44", "" }, /* <TIB-BADANGA> */ + { U"\U00000F56\U00000F51\U00000F51", "" }, /* <TIB-BADADA> */ + { U"\U00000F56\U00000F51\U00000F53", "" }, /* <TIB-BADANA> */ + { U"\U00000F56\U00000F51\U00000F56", "" }, /* <TIB-BADABA> */ + { U"\U00000F56\U00000F51\U00000F58", "" }, /* <TIB-BADAMA> */ + { U"\U00000F56\U00000F51\U00000F60", "" }, /* <TIB-BADA-A> */ + { U"\U00000F56\U00000F51\U00000F62", "" }, /* <TIB-BADARA> */ + { U"\U00000F56\U00000F51\U00000F63", "" }, /* <TIB-BADALA> */ + { U"\U00000F56\U00000F51\U00000F66", "" }, /* <TIB-BADASA> */ + { U"\U00000F56\U00000F51\U00000F72", "" }, /* <TIB-BADAI> */ + { U"\U00000F56\U00000F51\U00000F72\U00000F72", "" }, /* <TIB-BADAII> */ + { U"\U00000F56\U00000F51\U00000F74", "" }, /* <TIB-BADAU> */ + { U"\U00000F56\U00000F51\U00000F7A", "" }, /* <TIB-BADAE> */ + { U"\U00000F56\U00000F51\U00000F7B", "" }, /* <TIB-BADAEE> */ + { U"\U00000F56\U00000F51\U00000F7C", "" }, /* <TIB-BADAO> */ + { U"\U00000F56\U00000F51\U00000F7D", "" }, /* <TIB-BADAOO> */ + { U"\U00000F56\U00000F51\U00000F7E", "" }, /* <TIB-BADAMA2> */ + { U"\U00000F56\U00000F51\U00000FAD", "" }, /* <TIB-BADAsubWA> */ + { U"\U00000F56\U00000F59", "" }, /* <TIB-BATSA> */ + { U"\U00000F56\U00000F5E", "" }, /* <TIB-BAZHA> */ + { U"\U00000F56\U00000F5F", "" }, /* <TIB-BAZA> */ + { U"\U00000F56\U00000F62", "" }, /* <TIB-BARA> */ + { U"\U00000F56\U00000F62\U00000F90", "" }, /* <TIB-BRKA> */ + { U"\U00000F56\U00000F62\U00000F92", "" }, /* <TIB-BARAsubGA> */ + { U"\U00000F56\U00000F62\U00000F94", "" }, /* <TIB-BARAsubNGA> */ + { U"\U00000F56\U00000F62\U00000F97", "" }, /* <TIB-BARAsubJA> */ + { U"\U00000F56\U00000F62\U00000F99", "" }, /* <TIB-BARAsubNYA> */ + { U"\U00000F56\U00000F62\U00000F9F", "" }, /* <TIB-BARAsubTA> */ + { U"\U00000F56\U00000F62\U00000FA1", "" }, /* <TIB-BARAsubDA> */ + { U"\U00000F56\U00000F62\U00000FA3", "" }, /* <TIB-BARAsubNA> */ + { U"\U00000F56\U00000F62\U00000FA9", "" }, /* <TIB-BARAsubTSA> */ + { U"\U00000F56\U00000F62\U00000FAB", "" }, /* <TIB-BARAsubDZA> */ + { U"\U00000F56\U00000F63\U00000F90", "" }, /* <TIB-BLKA> */ + { U"\U00000F56\U00000F63\U00000F92", "" }, /* <TIB-BALAsubGA> */ + { U"\U00000F56\U00000F63\U00000F94", "" }, /* <TIB-BALAsubNGA> */ + { U"\U00000F56\U00000F63\U00000F95", "" }, /* <TIB-BALAsubCA> */ + { U"\U00000F56\U00000F63\U00000F97", "" }, /* <TIB-BALAsubJA> */ + { U"\U00000F56\U00000F63\U00000F9F", "" }, /* <TIB-BALAsubTA> */ + { U"\U00000F56\U00000F63\U00000FA1", "" }, /* <TIB-BALAsubDA> */ + { U"\U00000F56\U00000F64", "" }, /* <TIB-BASHA> */ + { U"\U00000F56\U00000F66", "" }, /* <TIB-BASA> */ + { U"\U00000F56\U00000F66\U00000F42", "" }, /* <TIB-BASAGA> */ + { U"\U00000F56\U00000F66\U00000F44", "" }, /* <TIB-BASANGA> */ + { U"\U00000F56\U00000F66\U00000F51", "" }, /* <TIB-BASADA> */ + { U"\U00000F56\U00000F66\U00000F53", "" }, /* <TIB-BASANA> */ + { U"\U00000F56\U00000F66\U00000F56", "" }, /* <TIB-BASABA> */ + { U"\U00000F56\U00000F66\U00000F58", "" }, /* <TIB-BASAMA> */ + { U"\U00000F56\U00000F66\U00000F60", "" }, /* <TIB-BASA-A> */ + { U"\U00000F56\U00000F66\U00000F62", "" }, /* <TIB-BASARA> */ + { U"\U00000F56\U00000F66\U00000F63", "" }, /* <TIB-BASALA> */ + { U"\U00000F56\U00000F66\U00000F66", "" }, /* <TIB-BASASA> */ + { U"\U00000F56\U00000F66\U00000F72", "" }, /* <TIB-BASAI> */ + { U"\U00000F56\U00000F66\U00000F72\U00000F72", "" }, /* <TIB-BASAII> */ + { U"\U00000F56\U00000F66\U00000F74", "" }, /* <TIB-BASAU> */ + { U"\U00000F56\U00000F66\U00000F7A", "" }, /* <TIB-BASAE> */ + { U"\U00000F56\U00000F66\U00000F7B", "" }, /* <TIB-BASAEE> */ + { U"\U00000F56\U00000F66\U00000F7C", "" }, /* <TIB-BASAO> */ + { U"\U00000F56\U00000F66\U00000F7D", "" }, /* <TIB-BASAOO> */ + { U"\U00000F56\U00000F66\U00000F7E", "" }, /* <TIB-BASAMA2> */ + { U"\U00000F56\U00000F66\U00000F90", "" }, /* <TIB-BSKA> */ + { U"\U00000F56\U00000F66\U00000F92", "" }, /* <TIB-BASAsubGA> */ + { U"\U00000F56\U00000F66\U00000F94", "" }, /* <TIB-BASAsubNGA> */ + { U"\U00000F56\U00000F66\U00000F99", "" }, /* <TIB-BASAsubNYA> */ + { U"\U00000F56\U00000F66\U00000F9F", "" }, /* <TIB-BASAsubTA> */ + { U"\U00000F56\U00000F66\U00000FA1", "" }, /* <TIB-BASAsubDA> */ + { U"\U00000F56\U00000F66\U00000FA3", "" }, /* <TIB-BASAsubNA> */ + { U"\U00000F56\U00000F66\U00000FA9", "" }, /* <TIB-BASAsubTSA> */ + { U"\U00000F56\U00000F66\U00000FAD", "" }, /* <TIB-BASAsubWA> */ + { U"\U00000F56\U00000F66\U00000FB2", "" }, /* <TIB-BSRA> */ + { U"\U00000F56\U00000F66\U00000FB3", "" }, /* <TIB-BSLA> */ + { U"\U00000F58\U00000F41", "" }, /* <TIB-MKHA> */ + { U"\U00000F58\U00000F42", "" }, /* <TIB-MAGA> */ + { U"\U00000F58\U00000F42\U00000F42", "" }, /* <TIB-MGAG> */ + { U"\U00000F58\U00000F42\U00000F44", "" }, /* <TIB-MGANG> */ + { U"\U00000F58\U00000F42\U00000F51", "" }, /* <TIB-MGAD> */ + { U"\U00000F58\U00000F42\U00000F53", "" }, /* <TIB-MGAN> */ + { U"\U00000F58\U00000F42\U00000F56", "" }, /* <TIB-MAGABA> */ + { U"\U00000F58\U00000F42\U00000F58", "" }, /* <TIB-MAGAMA> */ + { U"\U00000F58\U00000F42\U00000F60", "" }, /* <TIB-MAGA-A> */ + { U"\U00000F58\U00000F42\U00000F62", "" }, /* <TIB-MAGARA> */ + { U"\U00000F58\U00000F42\U00000F63", "" }, /* <TIB-MAGALA> */ + { U"\U00000F58\U00000F42\U00000F72", "" }, /* <TIB-MAGAI> */ + { U"\U00000F58\U00000F42\U00000F72\U00000F72", "" }, /* <TIB-MAGAII> */ + { U"\U00000F58\U00000F42\U00000F74", "" }, /* <TIB-MAGAU> */ + { U"\U00000F58\U00000F42\U00000F7A", "" }, /* <TIB-MAGAE> */ + { U"\U00000F58\U00000F42\U00000F7B", "" }, /* <TIB-MAGAEE> */ + { U"\U00000F58\U00000F42\U00000F7C", "" }, /* <TIB-MAGAO> */ + { U"\U00000F58\U00000F42\U00000F7D", "" }, /* <TIB-MAGAOO> */ + { U"\U00000F58\U00000F42\U00000FAD", "" }, /* <TIB-MAGAsubWA> */ + { U"\U00000F58\U00000F42\U00000FB1", "" }, /* <TIB-MAGAsubYA> */ + { U"\U00000F58\U00000F42\U00000FB2", "" }, /* <TIB-MAGAsubRA> */ + { U"\U00000F58\U00000F44", "" }, /* <TIB-MANGA> */ + { U"\U00000F58\U00000F44\U00000F42", "" }, /* <TIB-MANGAGA> */ + { U"\U00000F58\U00000F44\U00000F44", "" }, /* <TIB-MANGANGA> */ + { U"\U00000F58\U00000F44\U00000F51", "" }, /* <TIB-MANGADA> */ + { U"\U00000F58\U00000F44\U00000F53", "" }, /* <TIB-MANGANA> */ + { U"\U00000F58\U00000F44\U00000F56", "" }, /* <TIB-MANGABA> */ + { U"\U00000F58\U00000F44\U00000F58", "" }, /* <TIB-MANGAMA> */ + { U"\U00000F58\U00000F44\U00000F60", "" }, /* <TIB-MANGA-A> */ + { U"\U00000F58\U00000F44\U00000F62", "" }, /* <TIB-MANGARA> */ + { U"\U00000F58\U00000F44\U00000F63", "" }, /* <TIB-MANGALA> */ + { U"\U00000F58\U00000F44\U00000F72", "" }, /* <TIB-MANGAI> */ + { U"\U00000F58\U00000F44\U00000F72\U00000F72", "" }, /* <TIB-MANGAII> */ + { U"\U00000F58\U00000F44\U00000F74", "" }, /* <TIB-MANGAU> */ + { U"\U00000F58\U00000F44\U00000F7A", "" }, /* <TIB-MANGAE> */ + { U"\U00000F58\U00000F44\U00000F7B", "" }, /* <TIB-MANGAEE> */ + { U"\U00000F58\U00000F44\U00000F7C", "" }, /* <TIB-MANGAO> */ + { U"\U00000F58\U00000F44\U00000F7D", "" }, /* <TIB-MANGAOO> */ + { U"\U00000F58\U00000F44\U00000FAD", "" }, /* <TIB-MANGAsubWA> */ + { U"\U00000F58\U00000F46", "" }, /* <TIB-MACHA> */ + { U"\U00000F58\U00000F47", "" }, /* <TIB-MAJA> */ + { U"\U00000F58\U00000F49", "" }, /* <TIB-MANYA> */ + { U"\U00000F58\U00000F50", "" }, /* <TIB-MATHA> */ + { U"\U00000F58\U00000F51", "" }, /* <TIB-MADA> */ + { U"\U00000F58\U00000F51\U00000F42", "" }, /* <TIB-MADAGA> */ + { U"\U00000F58\U00000F51\U00000F44", "" }, /* <TIB-MADANGA> */ + { U"\U00000F58\U00000F51\U00000F51", "" }, /* <TIB-MADADA> */ + { U"\U00000F58\U00000F51\U00000F53", "" }, /* <TIB-MADANA> */ + { U"\U00000F58\U00000F51\U00000F56", "" }, /* <TIB-MADABA> */ + { U"\U00000F58\U00000F51\U00000F58", "" }, /* <TIB-MADAMA> */ + { U"\U00000F58\U00000F51\U00000F60", "" }, /* <TIB-MADA-A> */ + { U"\U00000F58\U00000F51\U00000F62", "" }, /* <TIB-MADARA> */ + { U"\U00000F58\U00000F51\U00000F63", "" }, /* <TIB-MADALA> */ + { U"\U00000F58\U00000F51\U00000F66", "" }, /* <TIB-MADASA> */ + { U"\U00000F58\U00000F51\U00000F72", "" }, /* <TIB-MADAI> */ + { U"\U00000F58\U00000F51\U00000F72\U00000F72", "" }, /* <TIB-MADAII> */ + { U"\U00000F58\U00000F51\U00000F74", "" }, /* <TIB-MADAU> */ + { U"\U00000F58\U00000F51\U00000F7A", "" }, /* <TIB-MADAE> */ + { U"\U00000F58\U00000F51\U00000F7B", "" }, /* <TIB-MADAEE> */ + { U"\U00000F58\U00000F51\U00000F7C", "" }, /* <TIB-MADAO> */ + { U"\U00000F58\U00000F51\U00000F7D", "" }, /* <TIB-MADAOO> */ + { U"\U00000F58\U00000F51\U00000FAD", "" }, /* <TIB-MADAsubWA> */ + { U"\U00000F58\U00000F53", "" }, /* <TIB-MANA> */ + { U"\U00000F58\U00000F53\U00000F42", "" }, /* <TIB-MANAGA> */ + { U"\U00000F58\U00000F53\U00000F44", "" }, /* <TIB-MANANGA> */ + { U"\U00000F58\U00000F53\U00000F51", "" }, /* <TIB-MANADA> */ + { U"\U00000F58\U00000F53\U00000F53", "" }, /* <TIB-MANANA> */ + { U"\U00000F58\U00000F53\U00000F56", "" }, /* <TIB-MANABA> */ + { U"\U00000F58\U00000F53\U00000F58", "" }, /* <TIB-MANAMA> */ + { U"\U00000F58\U00000F53\U00000F60", "" }, /* <TIB-MANA-A> */ + { U"\U00000F58\U00000F53\U00000F62", "" }, /* <TIB-MANARA> */ + { U"\U00000F58\U00000F53\U00000F63", "" }, /* <TIB-MANALA> */ + { U"\U00000F58\U00000F53\U00000F66", "" }, /* <TIB-MANASA> */ + { U"\U00000F58\U00000F53\U00000F72", "" }, /* <TIB-MANAI> */ + { U"\U00000F58\U00000F53\U00000F72\U00000F72", "" }, /* <TIB-MANAII> */ + { U"\U00000F58\U00000F53\U00000F74", "" }, /* <TIB-MANAU> */ + { U"\U00000F58\U00000F53\U00000F7A", "" }, /* <TIB-MANAE> */ + { U"\U00000F58\U00000F53\U00000F7B", "" }, /* <TIB-MANAEE> */ + { U"\U00000F58\U00000F53\U00000F7C", "" }, /* <TIB-MANAO> */ + { U"\U00000F58\U00000F53\U00000F7D", "" }, /* <TIB-MANAOO> */ + { U"\U00000F58\U00000F53\U00000F7E", "" }, /* <TIB-MANAMA2> */ + { U"\U00000F58\U00000F53\U00000FAD", "" }, /* <TIB-MANAsubWA> */ + { U"\U00000F58\U00000F5A", "" }, /* <TIB-MATSHA> */ + { U"\U00000F58\U00000F5B", "" }, /* <TIB-MADZA> */ + { U"\U00000F60\U00000F41", "" }, /* <TIB--KHA> */ + { U"\U00000F60\U00000F42", "" }, /* <TIB--AGA> */ + { U"\U00000F60\U00000F42\U00000F42", "" }, /* <TIB--AGAGA> */ + { U"\U00000F60\U00000F42\U00000F44", "" }, /* <TIB--AGANGA> */ + { U"\U00000F60\U00000F42\U00000F51", "" }, /* <TIB--AGADA> */ + { U"\U00000F60\U00000F42\U00000F53", "" }, /* <TIB--AGANA> */ + { U"\U00000F60\U00000F42\U00000F56", "" }, /* <TIB--AGABA> */ + { U"\U00000F60\U00000F42\U00000F58", "" }, /* <TIB--AGAMA> */ + { U"\U00000F60\U00000F42\U00000F60", "" }, /* <TIB--AGA-A> */ + { U"\U00000F60\U00000F42\U00000F62", "" }, /* <TIB--AGARA> */ + { U"\U00000F60\U00000F42\U00000F63", "" }, /* <TIB--AGALA> */ + { U"\U00000F60\U00000F42\U00000F66", "" }, /* <TIB--AGASA> */ + { U"\U00000F60\U00000F42\U00000F72", "" }, /* <TIB--AGAI> */ + { U"\U00000F60\U00000F42\U00000F72\U00000F72", "" }, /* <TIB--AGAII> */ + { U"\U00000F60\U00000F42\U00000F74", "" }, /* <TIB--AGAU> */ + { U"\U00000F60\U00000F42\U00000F7A", "" }, /* <TIB--AGAE> */ + { U"\U00000F60\U00000F42\U00000F7B", "" }, /* <TIB--AGAEE> */ + { U"\U00000F60\U00000F42\U00000F7C", "" }, /* <TIB--AGAO> */ + { U"\U00000F60\U00000F42\U00000F7D", "" }, /* <TIB--AGAOO> */ + { U"\U00000F60\U00000F42\U00000F7E", "" }, /* <TIB--AGAMA2> */ + { U"\U00000F60\U00000F42\U00000FAD", "" }, /* <TIB--AGAsubWA> */ + { U"\U00000F60\U00000F42\U00000FB1", "" }, /* <TIB--AGAsubYA> */ + { U"\U00000F60\U00000F42\U00000FB2", "" }, /* <TIB--AGAsubRA> */ + { U"\U00000F60\U00000F46", "" }, /* <TIB--ACHA> */ + { U"\U00000F60\U00000F47", "" }, /* <TIB--AJA> */ + { U"\U00000F60\U00000F50", "" }, /* <TIB--ATHA> */ + { U"\U00000F60\U00000F51", "" }, /* <TIB--ADA> */ + { U"\U00000F60\U00000F51\U00000F42", "" }, /* <TIB--ADAGA> */ + { U"\U00000F60\U00000F51\U00000F44", "" }, /* <TIB--ADANGA> */ + { U"\U00000F60\U00000F51\U00000F51", "" }, /* <TIB--ADADA> */ + { U"\U00000F60\U00000F51\U00000F53", "" }, /* <TIB--ADANA> */ + { U"\U00000F60\U00000F51\U00000F56", "" }, /* <TIB--ADABA> */ + { U"\U00000F60\U00000F51\U00000F58", "" }, /* <TIB--ADAMA> */ + { U"\U00000F60\U00000F51\U00000F5D", "" }, /* <TIB--ADAWA> */ + { U"\U00000F60\U00000F51\U00000F60", "" }, /* <TIB--ADA-A> */ + { U"\U00000F60\U00000F51\U00000F62", "" }, /* <TIB--ADARA> */ + { U"\U00000F60\U00000F51\U00000F63", "" }, /* <TIB--ADALA> */ + { U"\U00000F60\U00000F51\U00000F66", "" }, /* <TIB--ADASA> */ + { U"\U00000F60\U00000F51\U00000F72", "" }, /* <TIB--ADAI> */ + { U"\U00000F60\U00000F51\U00000F72\U00000F72", "" }, /* <TIB--ADAII> */ + { U"\U00000F60\U00000F51\U00000F74", "" }, /* <TIB--ADAU> */ + { U"\U00000F60\U00000F51\U00000F7A", "" }, /* <TIB--ADAE> */ + { U"\U00000F60\U00000F51\U00000F7B", "" }, /* <TIB--ADAEE> */ + { U"\U00000F60\U00000F51\U00000F7C", "" }, /* <TIB--ADAO> */ + { U"\U00000F60\U00000F51\U00000F7D", "" }, /* <TIB--ADAOO> */ + { U"\U00000F60\U00000F51\U00000F7E", "" }, /* <TIB--ADAMA2> */ + { U"\U00000F60\U00000F51\U00000FAD", "" }, /* <TIB--ADAsubWA> */ + { U"\U00000F60\U00000F51\U00000FB2", "" }, /* <TIB--ADAsubRA> */ + { U"\U00000F60\U00000F55", "" }, /* <TIB--APHA> */ + { U"\U00000F60\U00000F56", "" }, /* <TIB--ABA> */ + { U"\U00000F60\U00000F56\U00000F42", "" }, /* <TIB--ABAGA> */ + { U"\U00000F60\U00000F56\U00000F44", "" }, /* <TIB--ABANGA> */ + { U"\U00000F60\U00000F56\U00000F51", "" }, /* <TIB--ABADA> */ + { U"\U00000F60\U00000F56\U00000F53", "" }, /* <TIB--ABANA> */ + { U"\U00000F60\U00000F56\U00000F56", "" }, /* <TIB--ABABA> */ + { U"\U00000F60\U00000F56\U00000F58", "" }, /* <TIB--ABAMA> */ + { U"\U00000F60\U00000F56\U00000F60", "" }, /* <TIB--ABA-A> */ + { U"\U00000F60\U00000F56\U00000F62", "" }, /* <TIB--ABARA> */ + { U"\U00000F60\U00000F56\U00000F63", "" }, /* <TIB--ABALA> */ + { U"\U00000F60\U00000F56\U00000F66", "" }, /* <TIB--ABASA> */ + { U"\U00000F60\U00000F56\U00000F72", "" }, /* <TIB--ABAI> */ + { U"\U00000F60\U00000F56\U00000F72\U00000F72", "" }, /* <TIB--ABAII> */ + { U"\U00000F60\U00000F56\U00000F74", "" }, /* <TIB--ABAU> */ + { U"\U00000F60\U00000F56\U00000F7A", "" }, /* <TIB--ABAE> */ + { U"\U00000F60\U00000F56\U00000F7B", "" }, /* <TIB--ABAEE> */ + { U"\U00000F60\U00000F56\U00000F7C", "" }, /* <TIB--ABAO> */ + { U"\U00000F60\U00000F56\U00000F7D", "" }, /* <TIB--ABAOO> */ + { U"\U00000F60\U00000F56\U00000F7E", "" }, /* <TIB--ABAMA2> */ + { U"\U00000F60\U00000F56\U00000FAD", "" }, /* <TIB--ABAsubWA> */ + { U"\U00000F60\U00000F56\U00000FB1", "" }, /* <TIB--ABAsubYA> */ + { U"\U00000F60\U00000F56\U00000FB2", "" }, /* <TIB--ABAsubRA> */ + { U"\U00000F60\U00000F5A", "" }, /* <TIB--ATSHA> */ + { U"\U00000F60\U00000F5B", "" }, /* <TIB--ADZA> */ + { U"\U00000F62\U00000F90", "" }, /* <TIB-RKA> */ + { U"\U00000F62\U00000F92", "" }, /* <TIB-RAGA> */ + { U"\U00000F62\U00000F94", "" }, /* <TIB-RAsubNGA> */ + { U"\U00000F62\U00000F97", "" }, /* <TIB-RAJA> */ + { U"\U00000F62\U00000F99", "" }, /* <TIB-RANYA> */ + { U"\U00000F62\U00000F9F", "" }, /* <TIB-RATA> */ + { U"\U00000F62\U00000FA1", "" }, /* <TIB-RADA> */ + { U"\U00000F62\U00000FA3", "" }, /* <TIB-RANA> */ + { U"\U00000F62\U00000FA6", "" }, /* <TIB-RABA> */ + { U"\U00000F62\U00000FA8", "" }, /* <TIB-RAMA> */ + { U"\U00000F62\U00000FA9", "" }, /* <TIB-RATSA> */ + { U"\U00000F62\U00000FAB", "" }, /* <TIB-RADZA> */ + { U"\U00000F63\U00000F90", "" }, /* <TIB-LKA> */ + { U"\U00000F63\U00000F92", "" }, /* <TIB-LAGA> */ + { U"\U00000F63\U00000F94", "" }, /* <TIB-LAsubNGA> */ + { U"\U00000F63\U00000F95", "" }, /* <TIB-LACA> */ + { U"\U00000F63\U00000F97", "" }, /* <TIB-LAJA> */ + { U"\U00000F63\U00000F9F", "" }, /* <TIB-LATA> */ + { U"\U00000F63\U00000FA1", "" }, /* <TIB-LADA> */ + { U"\U00000F63\U00000FA4", "" }, /* <TIB-LAPA> */ + { U"\U00000F63\U00000FA6", "" }, /* <TIB-LABA> */ + { U"\U00000F63\U00000FB7", "" }, /* <TIB-LHA> */ + { U"\U00000F66\U00000F90", "" }, /* <TIB-SKA> */ + { U"\U00000F66\U00000F92", "" }, /* <TIB-SAGA> */ + { U"\U00000F66\U00000F94", "" }, /* <TIB-SAsubNGA> */ + { U"\U00000F66\U00000F99", "" }, /* <TIB-SANYA> */ + { U"\U00000F66\U00000F9F", "" }, /* <TIB-SATA> */ + { U"\U00000F66\U00000FA1", "" }, /* <TIB-SADA> */ + { U"\U00000F66\U00000FA3", "" }, /* <TIB-SANA> */ + { U"\U00000F66\U00000FA4", "" }, /* <TIB-SAPA> */ + { U"\U00000F66\U00000FA6", "" }, /* <TIB-SABA> */ + { U"\U00000F66\U00000FA8", "" }, /* <TIB-SAMA> */ + { U"\U00000F66\U00000FA9", "" }, /* <TIB-SATSA> */ + { U"\U00000F71\U00000F72", "" }, /* <TIB-'I> */ + { U"\U00000F71\U00000F74", "" }, /* <TIB-'UU> */ + { U"\U00000F71\U00000F80", "" }, /* <TIB-'II> */ + { U"\U00000F88\U00000F90", "" }, /* <TIB-LCE-TSA-CAN-KA> */ + { U"\U00000F88\U00000F91", "" }, /* <TIB-LCE-TSA-CAN-KHA> */ + { U"\U00000F89\U00000FA4", "" }, /* <TIB-MCHU-CAN-subPA> */ + { U"\U00000F89\U00000FA5", "" }, /* <TIB-MCHU-CAN-subPHA> */ + { U"\U00000F89\U00000FAD", "" }, /* <TIB-MCHU-CAN-subWA> */ + { U"\U00000F89\U00000FBA", "" }, /* <TIB-MCHU-CAN-subFFWA> */ + { U"\U00001000\U00001037\U0000103A", "" }, /* <MMK1000BDot> */ + { U"\U00001000\U00001039", "" }, /* <MMK1000A> */ + { U"\U00001000\U0000103A", "" }, /* <MMK1000B> */ + { U"\U00001000\U0000103B\U0000103D\U00001014\U0000103A\U0000102F\U00001015\U0000103A", "" }, /* <MM_FirstPerson> */ + { U"\U00001001\U00001037\U0000103A", "" }, /* <MMK1001BDot> */ + { U"\U00001001\U00001039", "" }, /* <MMK1001A> */ + { U"\U00001001\U0000103A", "" }, /* <MMK1001B> */ + { U"\U00001002\U00001037\U0000103A", "" }, /* <MMK1002BDot> */ + { U"\U00001002\U00001039", "" }, /* <MMK1002A> */ + { U"\U00001002\U0000103A", "" }, /* <MMK1002B> */ + { U"\U00001003\U00001037\U0000103A", "" }, /* <MMK1003BDot> */ + { U"\U00001003\U00001039", "" }, /* <MMK1003A> */ + { U"\U00001003\U0000103A", "" }, /* <MMK1003B> */ + { U"\U00001004\U00001037\U0000103A", "" }, /* <MMK1004BDot> */ + { U"\U00001004\U00001039", "" }, /* <MMK1004A> */ + { U"\U00001004\U0000103A", "" }, /* <MMK1004B> */ + { U"\U00001005\U00001037\U0000103A", "" }, /* <MMK1005BDot> */ + { U"\U00001005\U00001039", "" }, /* <MMK1005A> */ + { U"\U00001005\U0000103A", "" }, /* <MMK1005B> */ + { U"\U00001006\U00001037\U0000103A", "" }, /* <MMK1006BDot> */ + { U"\U00001006\U00001039", "" }, /* <MMK1006A> */ + { U"\U00001006\U0000103A", "" }, /* <MMK1006B> */ + { U"\U00001007\U00001037\U0000103A", "" }, /* <MMK1007BDot> */ + { U"\U00001007\U00001039", "" }, /* <MMK1007A> */ + { U"\U00001007\U0000103A", "" }, /* <MMK1007B> */ + { U"\U00001009\U00001037\U0000103A", "" }, /* <MMK1009BDot> */ + { U"\U00001009\U00001039", "" }, /* <MMK1009A> */ + { U"\U00001009\U0000103A", "" }, /* <MMK1009B> */ + { U"\U0000100A\U00001037\U0000103A", "" }, /* <MMK100ABDot> */ + { U"\U0000100A\U00001039", "" }, /* <MMK100AA> */ + { U"\U0000100A\U0000103A", "" }, /* <MMK100AB> */ + { U"\U0000100B\U00001037\U0000103A", "" }, /* <MMK100BBDot> */ + { U"\U0000100B\U00001039", "" }, /* <MMK100BA> */ + { U"\U0000100B\U0000103A", "" }, /* <MMK100BB> */ + { U"\U0000100C\U00001037\U0000103A", "" }, /* <MMK100CBDot> */ + { U"\U0000100C\U00001039", "" }, /* <MMK100CA> */ + { U"\U0000100C\U0000103A", "" }, /* <MMK100CB> */ + { U"\U0000100D\U00001037\U0000103A", "" }, /* <MMK100DBDot> */ + { U"\U0000100D\U00001039", "" }, /* <MMK100DA> */ + { U"\U0000100D\U0000103A", "" }, /* <MMK100DB> */ + { U"\U0000100E\U00001037\U0000103A", "" }, /* <MMK100EBDot> */ + { U"\U0000100E\U00001039", "" }, /* <MMK100EA> */ + { U"\U0000100E\U0000103A", "" }, /* <MMK100EB> */ + { U"\U0000100F\U00001037\U0000103A", "" }, /* <MMK100FBDot> */ + { U"\U0000100F\U00001039", "" }, /* <MMK100FA> */ + { U"\U0000100F\U0000103A", "" }, /* <MMK100FB> */ + { U"\U00001010\U00001037\U0000103A", "" }, /* <MMK1010BDot> */ + { U"\U00001010\U00001039", "" }, /* <MMK1010A> */ + { U"\U00001010\U0000103A", "" }, /* <MMK1010B> */ + { U"\U00001011\U00001037\U0000103A", "" }, /* <MMK1011BDot> */ + { U"\U00001011\U00001039", "" }, /* <MMK1011A> */ + { U"\U00001011\U00001039\U00001019\U00001004\U0000103A\U00001038", "" }, /* <MM_Rice> */ + { U"\U00001011\U0000103A", "" }, /* <MMK1011B> */ + { U"\U00001012\U00001037\U0000103A", "" }, /* <MMK1012BDot> */ + { U"\U00001012\U00001039", "" }, /* <MMK1012A> */ + { U"\U00001012\U0000103A", "" }, /* <MMK1012B> */ + { U"\U00001013\U00001037\U0000103A", "" }, /* <MMK1013BDot> */ + { U"\U00001013\U00001039", "" }, /* <MMK1013A> */ + { U"\U00001013\U0000103A", "" }, /* <MMK1013B> */ + { U"\U00001014\U00001037\U0000103A", "" }, /* <MMK1014BDot> */ + { U"\U00001014\U00001039", "" }, /* <MMK1014A> */ + { U"\U00001014\U0000103A", "" }, /* <MMK1014B> */ + { U"\U00001015\U00001037\U0000103A", "" }, /* <MMK1015BDot> */ + { U"\U00001015\U00001039", "" }, /* <MMK1015A> */ + { U"\U00001015\U0000103A", "" }, /* <MMK1015B> */ + { U"\U00001016\U00001037\U0000103A", "" }, /* <MMK1016BDot> */ + { U"\U00001016\U00001039", "" }, /* <MMK1016A> */ + { U"\U00001016\U0000103A", "" }, /* <MMK1016B> */ + { U"\U00001017\U00001037\U0000103A", "" }, /* <MMK1017BDot> */ + { U"\U00001017\U00001039", "" }, /* <MMK1017A> */ + { U"\U00001017\U0000103A", "" }, /* <MMK1017B> */ + { U"\U00001018\U00001037\U0000103A", "" }, /* <MMK1018BDot> */ + { U"\U00001018\U00001039", "" }, /* <MMK1018A> */ + { U"\U00001018\U0000103A", "" }, /* <MMK1018B> */ + { U"\U00001019\U00001037\U0000103A", "" }, /* <MMK1019BDot> */ + { U"\U00001019\U00001039", "" }, /* <MMK1019A> */ + { U"\U00001019\U0000103A", "" }, /* <MMK1019B> */ + { U"\U0000101A\U00001031\U0000102C\U00001000\U0000103A\U0000103B\U0000102C\U00001038", "" }, /* <MM_Man> */ + { U"\U0000101A\U00001037\U0000103A", "" }, /* <MMK101ABDot> */ + { U"\U0000101A\U00001039", "" }, /* <MMK101AA> */ + { U"\U0000101A\U0000103A", "" }, /* <MMK101AB> */ + { U"\U0000101B\U00001037\U0000103A", "" }, /* <MMK101BBDot> */ + { U"\U0000101B\U00001039", "" }, /* <MMK101BA> */ + { U"\U0000101B\U0000103A", "" }, /* <MMK101BB> */ + { U"\U0000101C\U00001000\U0000103A\U0000103B\U0000102C", "" }, /* <MM_RightPali> */ + { U"\U0000101C\U00001037\U0000103A", "" }, /* <MMK101CBDot> */ + { U"\U0000101C\U00001039", "" }, /* <MMK101CA> */ + { U"\U0000101C\U00001039\U00001018\U00001000\U0000103A", "" }, /* <MM_Tea> */ + { U"\U0000101C\U0000103A", "" }, /* <MMK101CB> */ + { U"\U0000101D\U00001037\U0000103A", "" }, /* <MMK101DBDot> */ + { U"\U0000101D\U00001039", "" }, /* <MMK101DA> */ + { U"\U0000101D\U0000103A", "" }, /* <MMK101DB> */ + { U"\U0000101E\U00001037\U0000103A", "" }, /* <MMK101EBDot> */ + { U"\U0000101E\U00001039", "" }, /* <MMK101EA> */ + { U"\U0000101E\U00001039\U00001019\U0000102E", "" }, /* <MM_Daughter> */ + { U"\U0000101E\U0000103A", "" }, /* <MMK101EB> */ + { U"\U0000101F\U00001037\U0000103A", "" }, /* <MMK101FBDot> */ + { U"\U0000101F\U00001039", "" }, /* <MMK101FA> */ + { U"\U0000101F\U0000103A", "" }, /* <MMK101FB> */ + { U"\U00001020\U00001037\U0000103A", "" }, /* <MMK1020BDot> */ + { U"\U00001020\U00001039", "" }, /* <MMK1020A> */ + { U"\U00001020\U0000103A", "" }, /* <MMK1020B> */ + { U"\U00001023\U00001005\U00001037\U0000103A", "" }, /* <MMI1023K1005BDot> */ + { U"\U00001023\U00001005\U00001039", "" }, /* <MMI1023K1005A> */ + { U"\U00001023\U00001005\U0000103A", "" }, /* <MMI1023K1005B> */ + { U"\U00001023\U0000100B\U00001037\U0000103A", "" }, /* <MMI1023K100BBDot> */ + { U"\U00001023\U0000100B\U00001039", "" }, /* <MMI1023K100BA> */ + { U"\U00001023\U0000100B\U0000103A", "" }, /* <MMI1023K100BB> */ + { U"\U00001023\U00001010\U00001037\U0000103A", "" }, /* <MMI1023K1010BDot> */ + { U"\U00001023\U00001010\U00001039", "" }, /* <MMI1023K1010A> */ + { U"\U00001023\U00001010\U0000103A", "" }, /* <MMI1023K1010B> */ + { U"\U00001023\U00001012\U00001037\U0000103A", "" }, /* <MMI1023K1012BDot> */ + { U"\U00001023\U00001012\U00001039", "" }, /* <MMI1023K1012A> */ + { U"\U00001023\U00001012\U0000103A", "" }, /* <MMI1023K1012B> */ + { U"\U00001023\U00001014\U00001037\U0000103A", "" }, /* <MMI1023K1014BDot> */ + { U"\U00001023\U00001014\U00001039", "" }, /* <MMI1023K1014A> */ + { U"\U00001023\U00001014\U0000103A", "" }, /* <MMI1023K1014B> */ + { U"\U00001023\U00001019\U00001037\U0000103A", "" }, /* <MMI1023K1019BDot> */ + { U"\U00001023\U00001019\U00001039", "" }, /* <MMI1023K1019A> */ + { U"\U00001023\U00001019\U0000103A", "" }, /* <MMI1023K1019B> */ + { U"\U00001023\U0000101E\U00001037\U0000103A", "" }, /* <MMI1023K101EBDot> */ + { U"\U00001023\U0000101E\U00001039", "" }, /* <MMI1023K101EA> */ + { U"\U00001023\U0000101E\U0000103A", "" }, /* <MMI1023K101EB> */ + { U"\U00001023\U0000103F", "" }, /* <MMI1023K101E> */ + { U"\U00001025\U00001000\U00001037\U0000103A", "" }, /* <MMI1025K1000BDot> */ + { U"\U00001025\U00001000\U00001039", "" }, /* <MMI1025K1000A> */ + { U"\U00001025\U00001000\U0000103A", "" }, /* <MMI1025K1000B> */ + { U"\U00001025\U00001005\U00001037\U0000103A", "" }, /* <MMI1025K1005BDot> */ + { U"\U00001025\U00001005\U00001039", "" }, /* <MMI1025K1005A> */ + { U"\U00001025\U00001005\U0000103A", "" }, /* <MMI1025K1005B> */ + { U"\U00001025\U0000100A\U00001037\U0000103A", "" }, /* <MMI1025K100ABDot> */ + { U"\U00001025\U0000100A\U00001039", "" }, /* <MMI1025K100AA> */ + { U"\U00001025\U0000100A\U0000103A", "" }, /* <MMI1025K100AB> */ + { U"\U00001025\U0000100F\U00001037\U0000103A", "" }, /* <MMI1025K100FBDot> */ + { U"\U00001025\U0000100F\U00001039", "" }, /* <MMI1025K100FA> */ + { U"\U00001025\U0000100F\U0000103A", "" }, /* <MMI1025K100FB> */ + { U"\U00001025\U00001010\U00001037\U0000103A", "" }, /* <MMI1025K1010BDot> */ + { U"\U00001025\U00001010\U00001039", "" }, /* <MMI1025K1010A> */ + { U"\U00001025\U00001010\U0000103A", "" }, /* <MMI1025K1010B> */ + { U"\U00001025\U00001012\U00001037\U0000103A", "" }, /* <MMI1025K1012BDot> */ + { U"\U00001025\U00001012\U00001039", "" }, /* <MMI1025K1012A> */ + { U"\U00001025\U00001012\U0000103A", "" }, /* <MMI1025K1012B> */ + { U"\U00001025\U00001014\U00001037\U0000103A", "" }, /* <MMI1025K1014BDot> */ + { U"\U00001025\U00001014\U00001039", "" }, /* <MMI1025K1014A> */ + { U"\U00001025\U00001014\U0000103A", "" }, /* <MMI1025K1014B> */ + { U"\U00001025\U00001015\U00001037\U0000103A", "" }, /* <MMI1025K1015BDot> */ + { U"\U00001025\U00001015\U00001039", "" }, /* <MMI1025K1015A> */ + { U"\U00001025\U00001015\U0000103A", "" }, /* <MMI1025K1015B> */ + { U"\U00001025\U00001019\U00001037\U0000103A", "" }, /* <MMI1025K1019BDot> */ + { U"\U00001025\U00001019\U00001039", "" }, /* <MMI1025K1019A> */ + { U"\U00001025\U00001019\U0000103A", "" }, /* <MMI1025K1019B> */ + { U"\U00001025\U0000101E\U00001037\U0000103A", "" }, /* <MMI1025K101EBDot> */ + { U"\U00001025\U0000101E\U00001039", "" }, /* <MMI1025K101EA> */ + { U"\U00001025\U0000101E\U0000103A", "" }, /* <MMI1025K101EB> */ + { U"\U00001025\U0000102E", "" }, /* <MMI1025102E> */ + { U"\U00001025\U0000102F\U00001036", "" }, /* <MMI1025K1036> */ + { U"\U00001025\U0000103F", "" }, /* <MMI1025K101E> */ + { U"\U00001027\U0000100A\U00001037\U0000103A", "" }, /* <MMI1027K100ABDot> */ + { U"\U00001027\U0000100A\U00001039", "" }, /* <MMI1027K100AA> */ + { U"\U00001027\U0000100A\U0000103A", "" }, /* <MMI1027K100AB> */ + { U"\U00001029\U0000100B\U00001037\U0000103A", "" }, /* <MMI1029K100BBDot> */ + { U"\U00001029\U0000100B\U00001039", "" }, /* <MMI1029K100BA> */ + { U"\U00001029\U0000100B\U0000103A", "" }, /* <MMI1029K100BB> */ + { U"\U00001029\U00001010\U00001037\U0000103A", "" }, /* <MMI1029K1010BDot> */ + { U"\U00001029\U00001010\U00001039", "" }, /* <MMI1029K1010A> */ + { U"\U00001029\U00001010\U0000103A", "" }, /* <MMI1029K1010B> */ + { U"\U00001029\U00001031\U0000102C\U00001004\U00001037\U0000103A", "" }, /* <MMI10291031102CK1004BDot> */ + { U"\U00001029\U00001031\U0000102C\U00001004\U00001039", "" }, /* <MMI10291031102CK1004A> */ + { U"\U00001029\U00001031\U0000102C\U00001004\U0000103A", "" }, /* <MMI10291031102CK1004B> */ + { U"\U0000102B", "" }, /* <MMV102CALT0> */ + { U"\U0000102B\U00001000\U00001037\U0000103A", "" }, /* <MMV102CALT0K1000ADot> */ + { U"\U0000102B\U00001000\U00001039", "" }, /* <MMV102CALT0K1000B> */ + { U"\U0000102B\U00001000\U0000103A", "" }, /* <MMV102CALT0K1000A> */ + { U"\U0000102B\U00001001\U00001037\U0000103A", "" }, /* <MMV102CALT0K1001ADot> */ + { U"\U0000102B\U00001001\U00001039", "" }, /* <MMV102CALT0K1001B> */ + { U"\U0000102B\U00001001\U0000103A", "" }, /* <MMV102CALT0K1001A> */ + { U"\U0000102B\U00001002\U00001037\U0000103A", "" }, /* <MMV102CALT0K1002ADot> */ + { U"\U0000102B\U00001002\U00001039", "" }, /* <MMV102CALT0K1002B> */ + { U"\U0000102B\U00001002\U0000103A", "" }, /* <MMV102CALT0K1002A> */ + { U"\U0000102B\U00001003\U00001037\U0000103A", "" }, /* <MMV102CALT0K1003ADot> */ + { U"\U0000102B\U00001003\U00001039", "" }, /* <MMV102CALT0K1003B> */ + { U"\U0000102B\U00001003\U0000103A", "" }, /* <MMV102CALT0K1003A> */ + { U"\U0000102B\U00001004\U00001037\U0000103A", "" }, /* <MMV102CALT0K1004ADot> */ + { U"\U0000102B\U00001004\U0000103A", "" }, /* <MMV102CALT0K1004A> */ + { U"\U0000102B\U00001004\U0000103A\U00001039", "" }, /* <MMV102CALT0K1004B> */ + { U"\U0000102B\U00001005\U00001037\U0000103A", "" }, /* <MMV102CALT0K1005ADot> */ + { U"\U0000102B\U00001005\U00001039", "" }, /* <MMV102CALT0K1005B> */ + { U"\U0000102B\U00001005\U0000103A", "" }, /* <MMV102CALT0K1005A> */ + { U"\U0000102B\U00001006\U00001037\U0000103A", "" }, /* <MMV102CALT0K1006ADot> */ + { U"\U0000102B\U00001006\U00001039", "" }, /* <MMV102CALT0K1006B> */ + { U"\U0000102B\U00001006\U0000103A", "" }, /* <MMV102CALT0K1006A> */ + { U"\U0000102B\U00001007\U00001037\U0000103A", "" }, /* <MMV102CALT0K1007ADot> */ + { U"\U0000102B\U00001007\U00001039", "" }, /* <MMV102CALT0K1007B> */ + { U"\U0000102B\U00001007\U0000103A", "" }, /* <MMV102CALT0K1007A> */ + { U"\U0000102B\U00001009\U00001037\U0000103A", "" }, /* <MMV102CALT0K1009ADot> */ + { U"\U0000102B\U00001009\U00001039", "" }, /* <MMV102CALT0K1009B> */ + { U"\U0000102B\U00001009\U0000103A", "" }, /* <MMV102CALT0K1009A> */ + { U"\U0000102B\U0000100A\U00001037\U0000103A", "" }, /* <MMV102CALT0K100AADot> */ + { U"\U0000102B\U0000100A\U00001039", "" }, /* <MMV102CALT0K100AB> */ + { U"\U0000102B\U0000100A\U0000103A", "" }, /* <MMV102CALT0K100AA> */ + { U"\U0000102B\U0000100B\U00001037\U0000103A", "" }, /* <MMV102CALT0K100BADot> */ + { U"\U0000102B\U0000100B\U00001039", "" }, /* <MMV102CALT0K100BB> */ + { U"\U0000102B\U0000100B\U0000103A", "" }, /* <MMV102CALT0K100BA> */ + { U"\U0000102B\U0000100C\U00001037\U0000103A", "" }, /* <MMV102CALT0K100CADot> */ + { U"\U0000102B\U0000100C\U00001039", "" }, /* <MMV102CALT0K100CB> */ + { U"\U0000102B\U0000100C\U0000103A", "" }, /* <MMV102CALT0K100CA> */ + { U"\U0000102B\U0000100D\U00001037\U0000103A", "" }, /* <MMV102CALT0K100DADot> */ + { U"\U0000102B\U0000100D\U00001039", "" }, /* <MMV102CALT0K100DB> */ + { U"\U0000102B\U0000100D\U0000103A", "" }, /* <MMV102CALT0K100DA> */ + { U"\U0000102B\U0000100E\U00001037\U0000103A", "" }, /* <MMV102CALT0K100EADot> */ + { U"\U0000102B\U0000100E\U00001039", "" }, /* <MMV102CALT0K100EB> */ + { U"\U0000102B\U0000100E\U0000103A", "" }, /* <MMV102CALT0K100EA> */ + { U"\U0000102B\U0000100F\U00001037\U0000103A", "" }, /* <MMV102CALT0K100FADot> */ + { U"\U0000102B\U0000100F\U00001039", "" }, /* <MMV102CALT0K100FB> */ + { U"\U0000102B\U0000100F\U0000103A", "" }, /* <MMV102CALT0K100FA> */ + { U"\U0000102B\U00001010\U00001037\U0000103A", "" }, /* <MMV102CALT0K1010ADot> */ + { U"\U0000102B\U00001010\U00001039", "" }, /* <MMV102CALT0K1010B> */ + { U"\U0000102B\U00001010\U0000103A", "" }, /* <MMV102CALT0K1010A> */ + { U"\U0000102B\U00001011\U00001037\U0000103A", "" }, /* <MMV102CALT0K1011ADot> */ + { U"\U0000102B\U00001011\U00001039", "" }, /* <MMV102CALT0K1011B> */ + { U"\U0000102B\U00001011\U0000103A", "" }, /* <MMV102CALT0K1011A> */ + { U"\U0000102B\U00001012\U00001037\U0000103A", "" }, /* <MMV102CALT0K1012ADot> */ + { U"\U0000102B\U00001012\U00001039", "" }, /* <MMV102CALT0K1012B> */ + { U"\U0000102B\U00001012\U0000103A", "" }, /* <MMV102CALT0K1012A> */ + { U"\U0000102B\U00001013\U00001037\U0000103A", "" }, /* <MMV102CALT0K1013ADot> */ + { U"\U0000102B\U00001013\U00001039", "" }, /* <MMV102CALT0K1013B> */ + { U"\U0000102B\U00001013\U0000103A", "" }, /* <MMV102CALT0K1013A> */ + { U"\U0000102B\U00001014\U00001037\U0000103A", "" }, /* <MMV102CALT0K1014ADot> */ + { U"\U0000102B\U00001014\U00001039", "" }, /* <MMV102CALT0K1014B> */ + { U"\U0000102B\U00001014\U0000103A", "" }, /* <MMV102CALT0K1014A> */ + { U"\U0000102B\U00001015\U00001037\U0000103A", "" }, /* <MMV102CALT0K1015ADot> */ + { U"\U0000102B\U00001015\U00001039", "" }, /* <MMV102CALT0K1015B> */ + { U"\U0000102B\U00001015\U0000103A", "" }, /* <MMV102CALT0K1015A> */ + { U"\U0000102B\U00001016\U00001037\U0000103A", "" }, /* <MMV102CALT0K1016ADot> */ + { U"\U0000102B\U00001016\U00001039", "" }, /* <MMV102CALT0K1016B> */ + { U"\U0000102B\U00001016\U0000103A", "" }, /* <MMV102CALT0K1016A> */ + { U"\U0000102B\U00001017\U00001037\U0000103A", "" }, /* <MMV102CALT0K1017ADot> */ + { U"\U0000102B\U00001017\U00001039", "" }, /* <MMV102CALT0K1017B> */ + { U"\U0000102B\U00001017\U0000103A", "" }, /* <MMV102CALT0K1017A> */ + { U"\U0000102B\U00001018\U00001037\U0000103A", "" }, /* <MMV102CALT0K1018ADot> */ + { U"\U0000102B\U00001018\U00001039", "" }, /* <MMV102CALT0K1018B> */ + { U"\U0000102B\U00001018\U0000103A", "" }, /* <MMV102CALT0K1018A> */ + { U"\U0000102B\U00001019\U00001037\U0000103A", "" }, /* <MMV102CALT0K1019ADot> */ + { U"\U0000102B\U00001019\U00001039", "" }, /* <MMV102CALT0K1019B> */ + { U"\U0000102B\U00001019\U0000103A", "" }, /* <MMV102CALT0K1019A> */ + { U"\U0000102B\U0000101A\U00001037\U0000103A", "" }, /* <MMV102CALT0K101AADot> */ + { U"\U0000102B\U0000101A\U00001039", "" }, /* <MMV102CALT0K101AB> */ + { U"\U0000102B\U0000101A\U0000103A", "" }, /* <MMV102CALT0K101AA> */ + { U"\U0000102B\U0000101B\U00001037\U0000103A", "" }, /* <MMV102CALT0K101BADot> */ + { U"\U0000102B\U0000101B\U00001039", "" }, /* <MMV102CALT0K101BB> */ + { U"\U0000102B\U0000101B\U0000103A", "" }, /* <MMV102CALT0K101BA> */ + { U"\U0000102B\U0000101C\U00001037\U0000103A", "" }, /* <MMV102CALT0K101CADot> */ + { U"\U0000102B\U0000101C\U00001039", "" }, /* <MMV102CALT0K101CB> */ + { U"\U0000102B\U0000101C\U0000103A", "" }, /* <MMV102CALT0K101CA> */ + { U"\U0000102B\U0000101D\U00001037\U0000103A", "" }, /* <MMV102CALT0K101DADot> */ + { U"\U0000102B\U0000101D\U00001039", "" }, /* <MMV102CALT0K101DB> */ + { U"\U0000102B\U0000101D\U0000103A", "" }, /* <MMV102CALT0K101DA> */ + { U"\U0000102B\U0000101E\U00001037\U0000103A", "" }, /* <MMV102CALT0K101EADot> */ + { U"\U0000102B\U0000101E\U00001039", "" }, /* <MMV102CALT0K101EB> */ + { U"\U0000102B\U0000101E\U0000103A", "" }, /* <MMV102CALT0K101EA> */ + { U"\U0000102B\U0000101F\U00001037\U0000103A", "" }, /* <MMV102CALT0K101FADot> */ + { U"\U0000102B\U0000101F\U00001039", "" }, /* <MMV102CALT0K101FB> */ + { U"\U0000102B\U0000101F\U0000103A", "" }, /* <MMV102CALT0K101FA> */ + { U"\U0000102B\U00001020\U00001037\U0000103A", "" }, /* <MMV102CALT0K1020ADot> */ + { U"\U0000102B\U00001020\U00001039", "" }, /* <MMV102CALT0K1020B> */ + { U"\U0000102B\U00001020\U0000103A", "" }, /* <MMV102CALT0K1020A> */ + { U"\U0000102C", "" }, /* <MMV102C> */ + { U"\U0000102C\U00001000\U00001037\U0000103A", "" }, /* <MMV102CK1000ADot> */ + { U"\U0000102C\U00001000\U00001039", "" }, /* <MMV102CK1000B> */ + { U"\U0000102C\U00001000\U0000103A", "" }, /* <MMV102CK1000A> */ + { U"\U0000102C\U00001001\U00001037\U0000103A", "" }, /* <MMV102CK1001ADot> */ + { U"\U0000102C\U00001001\U00001039", "" }, /* <MMV102CK1001B> */ + { U"\U0000102C\U00001001\U0000103A", "" }, /* <MMV102CK1001A> */ + { U"\U0000102C\U00001002\U00001037\U0000103A", "" }, /* <MMV102CK1002ADot> */ + { U"\U0000102C\U00001002\U00001039", "" }, /* <MMV102CK1002B> */ + { U"\U0000102C\U00001002\U0000103A", "" }, /* <MMV102CK1002A> */ + { U"\U0000102C\U00001003\U00001037\U0000103A", "" }, /* <MMV102CK1003ADot> */ + { U"\U0000102C\U00001003\U00001039", "" }, /* <MMV102CK1003B> */ + { U"\U0000102C\U00001003\U0000103A", "" }, /* <MMV102CK1003A> */ + { U"\U0000102C\U00001004\U00001037\U0000103A", "" }, /* <MMV102CK1004ADot> */ + { U"\U0000102C\U00001004\U0000103A", "" }, /* <MMV102CK1004A> */ + { U"\U0000102C\U00001004\U0000103A\U00001039", "" }, /* <MMV102CK1004B> */ + { U"\U0000102C\U00001005\U00001037\U0000103A", "" }, /* <MMV102CK1005ADot> */ + { U"\U0000102C\U00001005\U00001039", "" }, /* <MMV102CK1005B> */ + { U"\U0000102C\U00001005\U0000103A", "" }, /* <MMV102CK1005A> */ + { U"\U0000102C\U00001006\U00001037\U0000103A", "" }, /* <MMV102CK1006ADot> */ + { U"\U0000102C\U00001006\U00001039", "" }, /* <MMV102CK1006B> */ + { U"\U0000102C\U00001006\U0000103A", "" }, /* <MMV102CK1006A> */ + { U"\U0000102C\U00001007\U00001037\U0000103A", "" }, /* <MMV102CK1007ADot> */ + { U"\U0000102C\U00001007\U00001039", "" }, /* <MMV102CK1007B> */ + { U"\U0000102C\U00001007\U0000103A", "" }, /* <MMV102CK1007A> */ + { U"\U0000102C\U00001009\U00001037\U0000103A", "" }, /* <MMV102CK1009ADot> */ + { U"\U0000102C\U00001009\U00001039", "" }, /* <MMV102CK1009B> */ + { U"\U0000102C\U00001009\U0000103A", "" }, /* <MMV102CK1009A> */ + { U"\U0000102C\U0000100A\U00001037\U0000103A", "" }, /* <MMV102CK100AADot> */ + { U"\U0000102C\U0000100A\U00001039", "" }, /* <MMV102CK100AB> */ + { U"\U0000102C\U0000100A\U0000103A", "" }, /* <MMV102CK100AA> */ + { U"\U0000102C\U0000100B\U00001037\U0000103A", "" }, /* <MMV102CK100BADot> */ + { U"\U0000102C\U0000100B\U00001039", "" }, /* <MMV102CK100BB> */ + { U"\U0000102C\U0000100B\U0000103A", "" }, /* <MMV102CK100BA> */ + { U"\U0000102C\U0000100C\U00001037\U0000103A", "" }, /* <MMV102CK100CADot> */ + { U"\U0000102C\U0000100C\U00001039", "" }, /* <MMV102CK100CB> */ + { U"\U0000102C\U0000100C\U0000103A", "" }, /* <MMV102CK100CA> */ + { U"\U0000102C\U0000100D\U00001037\U0000103A", "" }, /* <MMV102CK100DADot> */ + { U"\U0000102C\U0000100D\U00001039", "" }, /* <MMV102CK100DB> */ + { U"\U0000102C\U0000100D\U0000103A", "" }, /* <MMV102CK100DA> */ + { U"\U0000102C\U0000100E\U00001037\U0000103A", "" }, /* <MMV102CK100EADot> */ + { U"\U0000102C\U0000100E\U00001039", "" }, /* <MMV102CK100EB> */ + { U"\U0000102C\U0000100E\U0000103A", "" }, /* <MMV102CK100EA> */ + { U"\U0000102C\U0000100F\U00001037\U0000103A", "" }, /* <MMV102CK100FADot> */ + { U"\U0000102C\U0000100F\U00001039", "" }, /* <MMV102CK100FB> */ + { U"\U0000102C\U0000100F\U0000103A", "" }, /* <MMV102CK100FA> */ + { U"\U0000102C\U00001010\U00001037\U0000103A", "" }, /* <MMV102CK1010ADot> */ + { U"\U0000102C\U00001010\U00001039", "" }, /* <MMV102CK1010B> */ + { U"\U0000102C\U00001010\U0000103A", "" }, /* <MMV102CK1010A> */ + { U"\U0000102C\U00001011\U00001037\U0000103A", "" }, /* <MMV102CK1011ADot> */ + { U"\U0000102C\U00001011\U00001039", "" }, /* <MMV102CK1011B> */ + { U"\U0000102C\U00001011\U0000103A", "" }, /* <MMV102CK1011A> */ + { U"\U0000102C\U00001012\U00001037\U0000103A", "" }, /* <MMV102CK1012ADot> */ + { U"\U0000102C\U00001012\U00001039", "" }, /* <MMV102CK1012B> */ + { U"\U0000102C\U00001012\U0000103A", "" }, /* <MMV102CK1012A> */ + { U"\U0000102C\U00001013\U00001037\U0000103A", "" }, /* <MMV102CK1013ADot> */ + { U"\U0000102C\U00001013\U00001039", "" }, /* <MMV102CK1013B> */ + { U"\U0000102C\U00001013\U0000103A", "" }, /* <MMV102CK1013A> */ + { U"\U0000102C\U00001014\U00001037\U0000103A", "" }, /* <MMV102CK1014ADot> */ + { U"\U0000102C\U00001014\U00001039", "" }, /* <MMV102CK1014B> */ + { U"\U0000102C\U00001014\U0000103A", "" }, /* <MMV102CK1014A> */ + { U"\U0000102C\U00001015\U00001037\U0000103A", "" }, /* <MMV102CK1015ADot> */ + { U"\U0000102C\U00001015\U00001039", "" }, /* <MMV102CK1015B> */ + { U"\U0000102C\U00001015\U0000103A", "" }, /* <MMV102CK1015A> */ + { U"\U0000102C\U00001016\U00001037\U0000103A", "" }, /* <MMV102CK1016ADot> */ + { U"\U0000102C\U00001016\U00001039", "" }, /* <MMV102CK1016B> */ + { U"\U0000102C\U00001016\U0000103A", "" }, /* <MMV102CK1016A> */ + { U"\U0000102C\U00001017\U00001037\U0000103A", "" }, /* <MMV102CK1017ADot> */ + { U"\U0000102C\U00001017\U00001039", "" }, /* <MMV102CK1017B> */ + { U"\U0000102C\U00001017\U0000103A", "" }, /* <MMV102CK1017A> */ + { U"\U0000102C\U00001018\U00001037\U0000103A", "" }, /* <MMV102CK1018ADot> */ + { U"\U0000102C\U00001018\U00001039", "" }, /* <MMV102CK1018B> */ + { U"\U0000102C\U00001018\U0000103A", "" }, /* <MMV102CK1018A> */ + { U"\U0000102C\U00001019\U00001037\U0000103A", "" }, /* <MMV102CK1019ADot> */ + { U"\U0000102C\U00001019\U00001039", "" }, /* <MMV102CK1019B> */ + { U"\U0000102C\U00001019\U0000103A", "" }, /* <MMV102CK1019A> */ + { U"\U0000102C\U0000101A\U00001037\U0000103A", "" }, /* <MMV102CK101AADot> */ + { U"\U0000102C\U0000101A\U00001039", "" }, /* <MMV102CK101AB> */ + { U"\U0000102C\U0000101A\U0000103A", "" }, /* <MMV102CK101AA> */ + { U"\U0000102C\U0000101B\U00001037\U0000103A", "" }, /* <MMV102CK101BADot> */ + { U"\U0000102C\U0000101B\U00001039", "" }, /* <MMV102CK101BB> */ + { U"\U0000102C\U0000101B\U0000103A", "" }, /* <MMV102CK101BA> */ + { U"\U0000102C\U0000101C\U00001037\U0000103A", "" }, /* <MMV102CK101CADot> */ + { U"\U0000102C\U0000101C\U00001039", "" }, /* <MMV102CK101CB> */ + { U"\U0000102C\U0000101C\U0000103A", "" }, /* <MMV102CK101CA> */ + { U"\U0000102C\U0000101D\U00001037\U0000103A", "" }, /* <MMV102CK101DADot> */ + { U"\U0000102C\U0000101D\U00001039", "" }, /* <MMV102CK101DB> */ + { U"\U0000102C\U0000101D\U0000103A", "" }, /* <MMV102CK101DA> */ + { U"\U0000102C\U0000101E\U00001037\U0000103A", "" }, /* <MMV102CK101EADot> */ + { U"\U0000102C\U0000101E\U00001039", "" }, /* <MMV102CK101EB> */ + { U"\U0000102C\U0000101E\U0000103A", "" }, /* <MMV102CK101EA> */ + { U"\U0000102C\U0000101F\U00001037\U0000103A", "" }, /* <MMV102CK101FADot> */ + { U"\U0000102C\U0000101F\U00001039", "" }, /* <MMV102CK101FB> */ + { U"\U0000102C\U0000101F\U0000103A", "" }, /* <MMV102CK101FA> */ + { U"\U0000102C\U00001020\U00001037\U0000103A", "" }, /* <MMV102CK1020ADot> */ + { U"\U0000102C\U00001020\U00001039", "" }, /* <MMV102CK1020B> */ + { U"\U0000102C\U00001020\U0000103A", "" }, /* <MMV102CK1020A> */ + { U"\U0000102C\U0000103A", "" }, /* <MMT102C103A> */ + { U"\U0000102C\U0000103F", "" }, /* <MMV102CK101EC> */ + { U"\U0000102D", "" }, /* <MMV102D> */ + { U"\U0000102D\U00001000\U00001037\U0000103A", "" }, /* <MMV102DK1000ADot> */ + { U"\U0000102D\U00001000\U00001039", "" }, /* <MMV102DK1000B> */ + { U"\U0000102D\U00001000\U0000103A", "" }, /* <MMV102DK1000A> */ + { U"\U0000102D\U00001001\U00001037\U0000103A", "" }, /* <MMV102DK1001ADot> */ + { U"\U0000102D\U00001001\U00001039", "" }, /* <MMV102DK1001B> */ + { U"\U0000102D\U00001001\U0000103A", "" }, /* <MMV102DK1001A> */ + { U"\U0000102D\U00001002\U00001037\U0000103A", "" }, /* <MMV102DK1002ADot> */ + { U"\U0000102D\U00001002\U00001039", "" }, /* <MMV102DK1002B> */ + { U"\U0000102D\U00001002\U0000103A", "" }, /* <MMV102DK1002A> */ + { U"\U0000102D\U00001003\U00001037\U0000103A", "" }, /* <MMV102DK1003ADot> */ + { U"\U0000102D\U00001003\U00001039", "" }, /* <MMV102DK1003B> */ + { U"\U0000102D\U00001003\U0000103A", "" }, /* <MMV102DK1003A> */ + { U"\U0000102D\U00001004\U00001037\U0000103A", "" }, /* <MMV102DK1004ADot> */ + { U"\U0000102D\U00001004\U0000103A", "" }, /* <MMV102DK1004A> */ + { U"\U0000102D\U00001004\U0000103A\U00001039", "" }, /* <MMV102DK1004B> */ + { U"\U0000102D\U00001005\U00001037\U0000103A", "" }, /* <MMV102DK1005ADot> */ + { U"\U0000102D\U00001005\U00001039", "" }, /* <MMV102DK1005B> */ + { U"\U0000102D\U00001005\U0000103A", "" }, /* <MMV102DK1005A> */ + { U"\U0000102D\U00001006\U00001037\U0000103A", "" }, /* <MMV102DK1006ADot> */ + { U"\U0000102D\U00001006\U00001039", "" }, /* <MMV102DK1006B> */ + { U"\U0000102D\U00001006\U0000103A", "" }, /* <MMV102DK1006A> */ + { U"\U0000102D\U00001007\U00001037\U0000103A", "" }, /* <MMV102DK1007ADot> */ + { U"\U0000102D\U00001007\U00001039", "" }, /* <MMV102DK1007B> */ + { U"\U0000102D\U00001007\U0000103A", "" }, /* <MMV102DK1007A> */ + { U"\U0000102D\U00001009\U00001037\U0000103A", "" }, /* <MMV102DK1009ADot> */ + { U"\U0000102D\U00001009\U00001039", "" }, /* <MMV102DK1009B> */ + { U"\U0000102D\U00001009\U0000103A", "" }, /* <MMV102DK1009A> */ + { U"\U0000102D\U0000100A\U00001037\U0000103A", "" }, /* <MMV102DK100AADot> */ + { U"\U0000102D\U0000100A\U00001039", "" }, /* <MMV102DK100AB> */ + { U"\U0000102D\U0000100A\U0000103A", "" }, /* <MMV102DK100AA> */ + { U"\U0000102D\U0000100B\U00001037\U0000103A", "" }, /* <MMV102DK100BADot> */ + { U"\U0000102D\U0000100B\U00001039", "" }, /* <MMV102DK100BB> */ + { U"\U0000102D\U0000100B\U0000103A", "" }, /* <MMV102DK100BA> */ + { U"\U0000102D\U0000100C\U00001037\U0000103A", "" }, /* <MMV102DK100CADot> */ + { U"\U0000102D\U0000100C\U00001039", "" }, /* <MMV102DK100CB> */ + { U"\U0000102D\U0000100C\U0000103A", "" }, /* <MMV102DK100CA> */ + { U"\U0000102D\U0000100D\U00001037\U0000103A", "" }, /* <MMV102DK100DADot> */ + { U"\U0000102D\U0000100D\U00001039", "" }, /* <MMV102DK100DB> */ + { U"\U0000102D\U0000100D\U0000103A", "" }, /* <MMV102DK100DA> */ + { U"\U0000102D\U0000100E\U00001037\U0000103A", "" }, /* <MMV102DK100EADot> */ + { U"\U0000102D\U0000100E\U00001039", "" }, /* <MMV102DK100EB> */ + { U"\U0000102D\U0000100E\U0000103A", "" }, /* <MMV102DK100EA> */ + { U"\U0000102D\U0000100F\U00001037\U0000103A", "" }, /* <MMV102DK100FADot> */ + { U"\U0000102D\U0000100F\U00001039", "" }, /* <MMV102DK100FB> */ + { U"\U0000102D\U0000100F\U0000103A", "" }, /* <MMV102DK100FA> */ + { U"\U0000102D\U00001010\U00001037\U0000103A", "" }, /* <MMV102DK1010ADot> */ + { U"\U0000102D\U00001010\U00001039", "" }, /* <MMV102DK1010B> */ + { U"\U0000102D\U00001010\U0000103A", "" }, /* <MMV102DK1010A> */ + { U"\U0000102D\U00001011\U00001037\U0000103A", "" }, /* <MMV102DK1011ADot> */ + { U"\U0000102D\U00001011\U00001039", "" }, /* <MMV102DK1011B> */ + { U"\U0000102D\U00001011\U0000103A", "" }, /* <MMV102DK1011A> */ + { U"\U0000102D\U00001012\U00001037\U0000103A", "" }, /* <MMV102DK1012ADot> */ + { U"\U0000102D\U00001012\U00001039", "" }, /* <MMV102DK1012B> */ + { U"\U0000102D\U00001012\U0000103A", "" }, /* <MMV102DK1012A> */ + { U"\U0000102D\U00001013\U00001037\U0000103A", "" }, /* <MMV102DK1013ADot> */ + { U"\U0000102D\U00001013\U00001039", "" }, /* <MMV102DK1013B> */ + { U"\U0000102D\U00001013\U0000103A", "" }, /* <MMV102DK1013A> */ + { U"\U0000102D\U00001014\U00001037\U0000103A", "" }, /* <MMV102DK1014ADot> */ + { U"\U0000102D\U00001014\U00001039", "" }, /* <MMV102DK1014B> */ + { U"\U0000102D\U00001014\U0000103A", "" }, /* <MMV102DK1014A> */ + { U"\U0000102D\U00001015\U00001037\U0000103A", "" }, /* <MMV102DK1015ADot> */ + { U"\U0000102D\U00001015\U00001039", "" }, /* <MMV102DK1015B> */ + { U"\U0000102D\U00001015\U0000103A", "" }, /* <MMV102DK1015A> */ + { U"\U0000102D\U00001016\U00001037\U0000103A", "" }, /* <MMV102DK1016ADot> */ + { U"\U0000102D\U00001016\U00001039", "" }, /* <MMV102DK1016B> */ + { U"\U0000102D\U00001016\U0000103A", "" }, /* <MMV102DK1016A> */ + { U"\U0000102D\U00001017\U00001037\U0000103A", "" }, /* <MMV102DK1017ADot> */ + { U"\U0000102D\U00001017\U00001039", "" }, /* <MMV102DK1017B> */ + { U"\U0000102D\U00001017\U0000103A", "" }, /* <MMV102DK1017A> */ + { U"\U0000102D\U00001018\U00001037\U0000103A", "" }, /* <MMV102DK1018ADot> */ + { U"\U0000102D\U00001018\U00001039", "" }, /* <MMV102DK1018B> */ + { U"\U0000102D\U00001018\U0000103A", "" }, /* <MMV102DK1018A> */ + { U"\U0000102D\U00001019\U00001037\U0000103A", "" }, /* <MMV102DK10191037A> */ + { U"\U0000102D\U00001019\U00001037\U0000103A", "" }, /* <MMV102DK1019ADot> */ + { U"\U0000102D\U00001019\U00001039", "" }, /* <MMV102DK1019B> */ + { U"\U0000102D\U00001019\U0000103A", "" }, /* <MMV102DK1019A> */ + { U"\U0000102D\U00001019\U0000103A\U00001037", "" }, /* <MMV102DK10191037A2> */ + { U"\U0000102D\U00001019\U0000103A\U00001038", "" }, /* <MMV102DK10191038A> */ + { U"\U0000102D\U0000101A\U00001037\U0000103A", "" }, /* <MMV102DK101AADot> */ + { U"\U0000102D\U0000101A\U00001039", "" }, /* <MMV102DK101AB> */ + { U"\U0000102D\U0000101A\U0000103A", "" }, /* <MMV102DK101AA> */ + { U"\U0000102D\U0000101B\U00001037\U0000103A", "" }, /* <MMV102DK101BADot> */ + { U"\U0000102D\U0000101B\U00001039", "" }, /* <MMV102DK101BB> */ + { U"\U0000102D\U0000101B\U0000103A", "" }, /* <MMV102DK101BA> */ + { U"\U0000102D\U0000101C\U00001037\U0000103A", "" }, /* <MMV102DK101CADot> */ + { U"\U0000102D\U0000101C\U00001039", "" }, /* <MMV102DK101CB> */ + { U"\U0000102D\U0000101C\U0000103A", "" }, /* <MMV102DK101CA> */ + { U"\U0000102D\U0000101D\U00001037\U0000103A", "" }, /* <MMV102DK101DADot> */ + { U"\U0000102D\U0000101D\U00001039", "" }, /* <MMV102DK101DB> */ + { U"\U0000102D\U0000101D\U0000103A", "" }, /* <MMV102DK101DA> */ + { U"\U0000102D\U0000101E\U00001037\U0000103A", "" }, /* <MMV102DK101EADot> */ + { U"\U0000102D\U0000101E\U00001039", "" }, /* <MMV102DK101EB> */ + { U"\U0000102D\U0000101E\U0000103A", "" }, /* <MMV102DK101EA> */ + { U"\U0000102D\U0000101F\U00001037\U0000103A", "" }, /* <MMV102DK101FADot> */ + { U"\U0000102D\U0000101F\U00001039", "" }, /* <MMV102DK101FB> */ + { U"\U0000102D\U0000101F\U0000103A", "" }, /* <MMV102DK101FA> */ + { U"\U0000102D\U00001020\U00001037\U0000103A", "" }, /* <MMV102DK1020ADot> */ + { U"\U0000102D\U00001020\U00001039", "" }, /* <MMV102DK1020B> */ + { U"\U0000102D\U00001020\U0000103A", "" }, /* <MMV102DK1020A> */ + { U"\U0000102D\U0000102F", "" }, /* <MMV102D102F> */ + { U"\U0000102D\U0000102F\U00001000\U00001037\U0000103A", "" }, /* <MMV102D102FK1000ADot> */ + { U"\U0000102D\U0000102F\U00001000\U00001039", "" }, /* <MMV102D102FK1000B> */ + { U"\U0000102D\U0000102F\U00001000\U0000103A", "" }, /* <MMV102D102FK1000A> */ + { U"\U0000102D\U0000102F\U00001001\U00001037\U0000103A", "" }, /* <MMV102D102FK1001ADot> */ + { U"\U0000102D\U0000102F\U00001001\U00001039", "" }, /* <MMV102D102FK1001B> */ + { U"\U0000102D\U0000102F\U00001001\U0000103A", "" }, /* <MMV102D102FK1001A> */ + { U"\U0000102D\U0000102F\U00001002\U00001037\U0000103A", "" }, /* <MMV102D102FK1002ADot> */ + { U"\U0000102D\U0000102F\U00001002\U00001039", "" }, /* <MMV102D102FK1002B> */ + { U"\U0000102D\U0000102F\U00001002\U0000103A", "" }, /* <MMV102D102FK1002A> */ + { U"\U0000102D\U0000102F\U00001003\U00001037\U0000103A", "" }, /* <MMV102D102FK1003ADot> */ + { U"\U0000102D\U0000102F\U00001003\U00001039", "" }, /* <MMV102D102FK1003B> */ + { U"\U0000102D\U0000102F\U00001003\U0000103A", "" }, /* <MMV102D102FK1003A> */ + { U"\U0000102D\U0000102F\U00001004\U00001037\U0000103A", "" }, /* <MMV102D102FK1004ADot> */ + { U"\U0000102D\U0000102F\U00001004\U0000103A", "" }, /* <MMV102D102FK1004A> */ + { U"\U0000102D\U0000102F\U00001004\U0000103A\U00001039", "" }, /* <MMV102D102FK1004B> */ + { U"\U0000102D\U0000102F\U00001005\U00001037\U0000103A", "" }, /* <MMV102D102FK1005ADot> */ + { U"\U0000102D\U0000102F\U00001005\U00001039", "" }, /* <MMV102D102FK1005B> */ + { U"\U0000102D\U0000102F\U00001005\U0000103A", "" }, /* <MMV102D102FK1005A> */ + { U"\U0000102D\U0000102F\U00001006\U00001037\U0000103A", "" }, /* <MMV102D102FK1006ADot> */ + { U"\U0000102D\U0000102F\U00001006\U00001039", "" }, /* <MMV102D102FK1006B> */ + { U"\U0000102D\U0000102F\U00001006\U0000103A", "" }, /* <MMV102D102FK1006A> */ + { U"\U0000102D\U0000102F\U00001007\U00001037\U0000103A", "" }, /* <MMV102D102FK1007ADot> */ + { U"\U0000102D\U0000102F\U00001007\U00001039", "" }, /* <MMV102D102FK1007B> */ + { U"\U0000102D\U0000102F\U00001007\U0000103A", "" }, /* <MMV102D102FK1007A> */ + { U"\U0000102D\U0000102F\U00001009\U00001037\U0000103A", "" }, /* <MMV102D102FK1009ADot> */ + { U"\U0000102D\U0000102F\U00001009\U00001039", "" }, /* <MMV102D102FK1009B> */ + { U"\U0000102D\U0000102F\U00001009\U0000103A", "" }, /* <MMV102D102FK1009A> */ + { U"\U0000102D\U0000102F\U0000100A\U00001037\U0000103A", "" }, /* <MMV102D102FK100AADot> */ + { U"\U0000102D\U0000102F\U0000100A\U00001039", "" }, /* <MMV102D102FK100AB> */ + { U"\U0000102D\U0000102F\U0000100A\U0000103A", "" }, /* <MMV102D102FK100AA> */ + { U"\U0000102D\U0000102F\U0000100B\U00001037\U0000103A", "" }, /* <MMV102D102FK100BADot> */ + { U"\U0000102D\U0000102F\U0000100B\U00001039", "" }, /* <MMV102D102FK100BB> */ + { U"\U0000102D\U0000102F\U0000100B\U0000103A", "" }, /* <MMV102D102FK100BA> */ + { U"\U0000102D\U0000102F\U0000100C\U00001037\U0000103A", "" }, /* <MMV102D102FK100CADot> */ + { U"\U0000102D\U0000102F\U0000100C\U00001039", "" }, /* <MMV102D102FK100CB> */ + { U"\U0000102D\U0000102F\U0000100C\U0000103A", "" }, /* <MMV102D102FK100CA> */ + { U"\U0000102D\U0000102F\U0000100D\U00001037\U0000103A", "" }, /* <MMV102D102FK100DADot> */ + { U"\U0000102D\U0000102F\U0000100D\U00001039", "" }, /* <MMV102D102FK100DB> */ + { U"\U0000102D\U0000102F\U0000100D\U0000103A", "" }, /* <MMV102D102FK100DA> */ + { U"\U0000102D\U0000102F\U0000100E\U00001037\U0000103A", "" }, /* <MMV102D102FK100EADot> */ + { U"\U0000102D\U0000102F\U0000100E\U00001039", "" }, /* <MMV102D102FK100EB> */ + { U"\U0000102D\U0000102F\U0000100E\U0000103A", "" }, /* <MMV102D102FK100EA> */ + { U"\U0000102D\U0000102F\U0000100F\U00001037\U0000103A", "" }, /* <MMV102D102FK100FADot> */ + { U"\U0000102D\U0000102F\U0000100F\U00001039", "" }, /* <MMV102D102FK100FB> */ + { U"\U0000102D\U0000102F\U0000100F\U0000103A", "" }, /* <MMV102D102FK100FA> */ + { U"\U0000102D\U0000102F\U00001010\U00001037\U0000103A", "" }, /* <MMV102D102FK1010ADot> */ + { U"\U0000102D\U0000102F\U00001010\U00001039", "" }, /* <MMV102D102FK1010B> */ + { U"\U0000102D\U0000102F\U00001010\U0000103A", "" }, /* <MMV102D102FK1010A> */ + { U"\U0000102D\U0000102F\U00001011\U00001037\U0000103A", "" }, /* <MMV102D102FK1011ADot> */ + { U"\U0000102D\U0000102F\U00001011\U00001039", "" }, /* <MMV102D102FK1011B> */ + { U"\U0000102D\U0000102F\U00001011\U0000103A", "" }, /* <MMV102D102FK1011A> */ + { U"\U0000102D\U0000102F\U00001012\U00001037\U0000103A", "" }, /* <MMV102D102FK1012ADot> */ + { U"\U0000102D\U0000102F\U00001012\U00001039", "" }, /* <MMV102D102FK1012B> */ + { U"\U0000102D\U0000102F\U00001012\U0000103A", "" }, /* <MMV102D102FK1012A> */ + { U"\U0000102D\U0000102F\U00001013\U00001037\U0000103A", "" }, /* <MMV102D102FK1013ADot> */ + { U"\U0000102D\U0000102F\U00001013\U00001039", "" }, /* <MMV102D102FK1013B> */ + { U"\U0000102D\U0000102F\U00001013\U0000103A", "" }, /* <MMV102D102FK1013A> */ + { U"\U0000102D\U0000102F\U00001014\U00001037\U0000103A", "" }, /* <MMV102D102FK1014ADot> */ + { U"\U0000102D\U0000102F\U00001014\U00001039", "" }, /* <MMV102D102FK1014B> */ + { U"\U0000102D\U0000102F\U00001014\U0000103A", "" }, /* <MMV102D102FK1014A> */ + { U"\U0000102D\U0000102F\U00001015\U00001037\U0000103A", "" }, /* <MMV102D102FK1015ADot> */ + { U"\U0000102D\U0000102F\U00001015\U00001039", "" }, /* <MMV102D102FK1015B> */ + { U"\U0000102D\U0000102F\U00001015\U0000103A", "" }, /* <MMV102D102FK1015A> */ + { U"\U0000102D\U0000102F\U00001016\U00001037\U0000103A", "" }, /* <MMV102D102FK1016ADot> */ + { U"\U0000102D\U0000102F\U00001016\U00001039", "" }, /* <MMV102D102FK1016B> */ + { U"\U0000102D\U0000102F\U00001016\U0000103A", "" }, /* <MMV102D102FK1016A> */ + { U"\U0000102D\U0000102F\U00001017\U00001037\U0000103A", "" }, /* <MMV102D102FK1017ADot> */ + { U"\U0000102D\U0000102F\U00001017\U00001039", "" }, /* <MMV102D102FK1017B> */ + { U"\U0000102D\U0000102F\U00001017\U0000103A", "" }, /* <MMV102D102FK1017A> */ + { U"\U0000102D\U0000102F\U00001018\U00001037\U0000103A", "" }, /* <MMV102D102FK1018ADot> */ + { U"\U0000102D\U0000102F\U00001018\U00001039", "" }, /* <MMV102D102FK1018B> */ + { U"\U0000102D\U0000102F\U00001018\U0000103A", "" }, /* <MMV102D102FK1018A> */ + { U"\U0000102D\U0000102F\U00001019\U00001037\U0000103A", "" }, /* <MMV102D102FK1019ADot> */ + { U"\U0000102D\U0000102F\U00001019\U00001039", "" }, /* <MMV102D102FK1019B> */ + { U"\U0000102D\U0000102F\U00001019\U0000103A", "" }, /* <MMV102D102FK1019A> */ + { U"\U0000102D\U0000102F\U0000101A\U00001037\U0000103A", "" }, /* <MMV102D102FK101AADot> */ + { U"\U0000102D\U0000102F\U0000101A\U00001039", "" }, /* <MMV102D102FK101AB> */ + { U"\U0000102D\U0000102F\U0000101A\U0000103A", "" }, /* <MMV102D102FK101AA> */ + { U"\U0000102D\U0000102F\U0000101B\U00001037\U0000103A", "" }, /* <MMV102D102FK101BADot> */ + { U"\U0000102D\U0000102F\U0000101B\U00001039", "" }, /* <MMV102D102FK101BB> */ + { U"\U0000102D\U0000102F\U0000101B\U0000103A", "" }, /* <MMV102D102FK101BA> */ + { U"\U0000102D\U0000102F\U0000101C\U00001037\U0000103A", "" }, /* <MMV102D102FK101CADot> */ + { U"\U0000102D\U0000102F\U0000101C\U00001039", "" }, /* <MMV102D102FK101CB> */ + { U"\U0000102D\U0000102F\U0000101C\U0000103A", "" }, /* <MMV102D102FK101CA> */ + { U"\U0000102D\U0000102F\U0000101D\U00001037\U0000103A", "" }, /* <MMV102D102FK101DADot> */ + { U"\U0000102D\U0000102F\U0000101D\U00001039", "" }, /* <MMV102D102FK101DB> */ + { U"\U0000102D\U0000102F\U0000101D\U0000103A", "" }, /* <MMV102D102FK101DA> */ + { U"\U0000102D\U0000102F\U0000101E\U00001037\U0000103A", "" }, /* <MMV102D102FK101EADot> */ + { U"\U0000102D\U0000102F\U0000101E\U00001039", "" }, /* <MMV102D102FK101EB> */ + { U"\U0000102D\U0000102F\U0000101E\U0000103A", "" }, /* <MMV102D102FK101EA> */ + { U"\U0000102D\U0000102F\U0000101F\U00001037\U0000103A", "" }, /* <MMV102D102FK101FADot> */ + { U"\U0000102D\U0000102F\U0000101F\U00001039", "" }, /* <MMV102D102FK101FB> */ + { U"\U0000102D\U0000102F\U0000101F\U0000103A", "" }, /* <MMV102D102FK101FA> */ + { U"\U0000102D\U0000102F\U00001020\U00001037\U0000103A", "" }, /* <MMV102D102FK1020ADot> */ + { U"\U0000102D\U0000102F\U00001020\U00001039", "" }, /* <MMV102D102FK1020B> */ + { U"\U0000102D\U0000102F\U00001020\U0000103A", "" }, /* <MMV102D102FK1020A> */ + { U"\U0000102D\U0000102F\U0000103F", "" }, /* <MMV102D102FK101EC> */ + { U"\U0000102D\U00001036", "" }, /* <MMV102DK1019C> */ + { U"\U0000102D\U00001036\U00001037", "" }, /* <MMV102DK10191037C> */ + { U"\U0000102D\U00001036\U00001038", "" }, /* <MMV102DK10191038C> */ + { U"\U0000102D\U0000103F", "" }, /* <MMV102DK101EC> */ + { U"\U0000102E", "" }, /* <MMV102E> */ + { U"\U0000102E\U00001000\U00001037\U0000103A", "" }, /* <MMV102EK1000ADot> */ + { U"\U0000102E\U00001000\U00001039", "" }, /* <MMV102EK1000B> */ + { U"\U0000102E\U00001000\U0000103A", "" }, /* <MMV102EK1000A> */ + { U"\U0000102E\U00001001\U00001037\U0000103A", "" }, /* <MMV102EK1001ADot> */ + { U"\U0000102E\U00001001\U00001039", "" }, /* <MMV102EK1001B> */ + { U"\U0000102E\U00001001\U0000103A", "" }, /* <MMV102EK1001A> */ + { U"\U0000102E\U00001002\U00001037\U0000103A", "" }, /* <MMV102EK1002ADot> */ + { U"\U0000102E\U00001002\U00001039", "" }, /* <MMV102EK1002B> */ + { U"\U0000102E\U00001002\U0000103A", "" }, /* <MMV102EK1002A> */ + { U"\U0000102E\U00001003\U00001037\U0000103A", "" }, /* <MMV102EK1003ADot> */ + { U"\U0000102E\U00001003\U00001039", "" }, /* <MMV102EK1003B> */ + { U"\U0000102E\U00001003\U0000103A", "" }, /* <MMV102EK1003A> */ + { U"\U0000102E\U00001004\U00001037\U0000103A", "" }, /* <MMV102EK1004ADot> */ + { U"\U0000102E\U00001004\U0000103A", "" }, /* <MMV102EK1004A> */ + { U"\U0000102E\U00001004\U0000103A\U00001039", "" }, /* <MMV102EK1004B> */ + { U"\U0000102E\U00001005\U00001037\U0000103A", "" }, /* <MMV102EK1005ADot> */ + { U"\U0000102E\U00001005\U00001039", "" }, /* <MMV102EK1005B> */ + { U"\U0000102E\U00001005\U0000103A", "" }, /* <MMV102EK1005A> */ + { U"\U0000102E\U00001006\U00001037\U0000103A", "" }, /* <MMV102EK1006ADot> */ + { U"\U0000102E\U00001006\U00001039", "" }, /* <MMV102EK1006B> */ + { U"\U0000102E\U00001006\U0000103A", "" }, /* <MMV102EK1006A> */ + { U"\U0000102E\U00001007\U00001037\U0000103A", "" }, /* <MMV102EK1007ADot> */ + { U"\U0000102E\U00001007\U00001039", "" }, /* <MMV102EK1007B> */ + { U"\U0000102E\U00001007\U0000103A", "" }, /* <MMV102EK1007A> */ + { U"\U0000102E\U00001009\U00001037\U0000103A", "" }, /* <MMV102EK1009ADot> */ + { U"\U0000102E\U00001009\U00001039", "" }, /* <MMV102EK1009B> */ + { U"\U0000102E\U00001009\U0000103A", "" }, /* <MMV102EK1009A> */ + { U"\U0000102E\U0000100A\U00001037\U0000103A", "" }, /* <MMV102EK100AADot> */ + { U"\U0000102E\U0000100A\U00001039", "" }, /* <MMV102EK100AB> */ + { U"\U0000102E\U0000100A\U0000103A", "" }, /* <MMV102EK100AA> */ + { U"\U0000102E\U0000100B\U00001037\U0000103A", "" }, /* <MMV102EK100BADot> */ + { U"\U0000102E\U0000100B\U00001039", "" }, /* <MMV102EK100BB> */ + { U"\U0000102E\U0000100B\U0000103A", "" }, /* <MMV102EK100BA> */ + { U"\U0000102E\U0000100C\U00001037\U0000103A", "" }, /* <MMV102EK100CADot> */ + { U"\U0000102E\U0000100C\U00001039", "" }, /* <MMV102EK100CB> */ + { U"\U0000102E\U0000100C\U0000103A", "" }, /* <MMV102EK100CA> */ + { U"\U0000102E\U0000100D\U00001037\U0000103A", "" }, /* <MMV102EK100DADot> */ + { U"\U0000102E\U0000100D\U00001039", "" }, /* <MMV102EK100DB> */ + { U"\U0000102E\U0000100D\U0000103A", "" }, /* <MMV102EK100DA> */ + { U"\U0000102E\U0000100E\U00001037\U0000103A", "" }, /* <MMV102EK100EADot> */ + { U"\U0000102E\U0000100E\U00001039", "" }, /* <MMV102EK100EB> */ + { U"\U0000102E\U0000100E\U0000103A", "" }, /* <MMV102EK100EA> */ + { U"\U0000102E\U0000100F\U00001037\U0000103A", "" }, /* <MMV102EK100FADot> */ + { U"\U0000102E\U0000100F\U00001039", "" }, /* <MMV102EK100FB> */ + { U"\U0000102E\U0000100F\U0000103A", "" }, /* <MMV102EK100FA> */ + { U"\U0000102E\U00001010\U00001037\U0000103A", "" }, /* <MMV102EK1010ADot> */ + { U"\U0000102E\U00001010\U00001039", "" }, /* <MMV102EK1010B> */ + { U"\U0000102E\U00001010\U0000103A", "" }, /* <MMV102EK1010A> */ + { U"\U0000102E\U00001011\U00001037\U0000103A", "" }, /* <MMV102EK1011ADot> */ + { U"\U0000102E\U00001011\U00001039", "" }, /* <MMV102EK1011B> */ + { U"\U0000102E\U00001011\U0000103A", "" }, /* <MMV102EK1011A> */ + { U"\U0000102E\U00001012\U00001037\U0000103A", "" }, /* <MMV102EK1012ADot> */ + { U"\U0000102E\U00001012\U00001039", "" }, /* <MMV102EK1012B> */ + { U"\U0000102E\U00001012\U0000103A", "" }, /* <MMV102EK1012A> */ + { U"\U0000102E\U00001013\U00001037\U0000103A", "" }, /* <MMV102EK1013ADot> */ + { U"\U0000102E\U00001013\U00001039", "" }, /* <MMV102EK1013B> */ + { U"\U0000102E\U00001013\U0000103A", "" }, /* <MMV102EK1013A> */ + { U"\U0000102E\U00001014\U00001037\U0000103A", "" }, /* <MMV102EK1014ADot> */ + { U"\U0000102E\U00001014\U00001039", "" }, /* <MMV102EK1014B> */ + { U"\U0000102E\U00001014\U0000103A", "" }, /* <MMV102EK1014A> */ + { U"\U0000102E\U00001015\U00001037\U0000103A", "" }, /* <MMV102EK1015ADot> */ + { U"\U0000102E\U00001015\U00001039", "" }, /* <MMV102EK1015B> */ + { U"\U0000102E\U00001015\U0000103A", "" }, /* <MMV102EK1015A> */ + { U"\U0000102E\U00001016\U00001037\U0000103A", "" }, /* <MMV102EK1016ADot> */ + { U"\U0000102E\U00001016\U00001039", "" }, /* <MMV102EK1016B> */ + { U"\U0000102E\U00001016\U0000103A", "" }, /* <MMV102EK1016A> */ + { U"\U0000102E\U00001017\U00001037\U0000103A", "" }, /* <MMV102EK1017ADot> */ + { U"\U0000102E\U00001017\U00001039", "" }, /* <MMV102EK1017B> */ + { U"\U0000102E\U00001017\U0000103A", "" }, /* <MMV102EK1017A> */ + { U"\U0000102E\U00001018\U00001037\U0000103A", "" }, /* <MMV102EK1018ADot> */ + { U"\U0000102E\U00001018\U00001039", "" }, /* <MMV102EK1018B> */ + { U"\U0000102E\U00001018\U0000103A", "" }, /* <MMV102EK1018A> */ + { U"\U0000102E\U00001019\U00001037\U0000103A", "" }, /* <MMV102EK1019ADot> */ + { U"\U0000102E\U00001019\U00001039", "" }, /* <MMV102EK1019B> */ + { U"\U0000102E\U00001019\U0000103A", "" }, /* <MMV102EK1019A> */ + { U"\U0000102E\U0000101A\U00001037\U0000103A", "" }, /* <MMV102EK101AADot> */ + { U"\U0000102E\U0000101A\U00001039", "" }, /* <MMV102EK101AB> */ + { U"\U0000102E\U0000101A\U0000103A", "" }, /* <MMV102EK101AA> */ + { U"\U0000102E\U0000101B\U00001037\U0000103A", "" }, /* <MMV102EK101BADot> */ + { U"\U0000102E\U0000101B\U00001039", "" }, /* <MMV102EK101BB> */ + { U"\U0000102E\U0000101B\U0000103A", "" }, /* <MMV102EK101BA> */ + { U"\U0000102E\U0000101C\U00001037\U0000103A", "" }, /* <MMV102EK101CADot> */ + { U"\U0000102E\U0000101C\U00001039", "" }, /* <MMV102EK101CB> */ + { U"\U0000102E\U0000101C\U0000103A", "" }, /* <MMV102EK101CA> */ + { U"\U0000102E\U0000101D\U00001037\U0000103A", "" }, /* <MMV102EK101DADot> */ + { U"\U0000102E\U0000101D\U00001039", "" }, /* <MMV102EK101DB> */ + { U"\U0000102E\U0000101D\U0000103A", "" }, /* <MMV102EK101DA> */ + { U"\U0000102E\U0000101E\U00001037\U0000103A", "" }, /* <MMV102EK101EADot> */ + { U"\U0000102E\U0000101E\U00001039", "" }, /* <MMV102EK101EB> */ + { U"\U0000102E\U0000101E\U0000103A", "" }, /* <MMV102EK101EA> */ + { U"\U0000102E\U0000101F\U00001037\U0000103A", "" }, /* <MMV102EK101FADot> */ + { U"\U0000102E\U0000101F\U00001039", "" }, /* <MMV102EK101FB> */ + { U"\U0000102E\U0000101F\U0000103A", "" }, /* <MMV102EK101FA> */ + { U"\U0000102E\U00001020\U00001037\U0000103A", "" }, /* <MMV102EK1020ADot> */ + { U"\U0000102E\U00001020\U00001039", "" }, /* <MMV102EK1020B> */ + { U"\U0000102E\U00001020\U0000103A", "" }, /* <MMV102EK1020A> */ + { U"\U0000102E\U0000103F", "" }, /* <MMV102EK101EC> */ + { U"\U0000102F", "" }, /* <MMV102F> */ + { U"\U0000102F\U00001000\U00001037\U0000103A", "" }, /* <MMV102FK1000ADot> */ + { U"\U0000102F\U00001000\U00001039", "" }, /* <MMV102FK1000B> */ + { U"\U0000102F\U00001000\U0000103A", "" }, /* <MMV102FK1000A> */ + { U"\U0000102F\U00001001\U00001037\U0000103A", "" }, /* <MMV102FK1001ADot> */ + { U"\U0000102F\U00001001\U00001039", "" }, /* <MMV102FK1001B> */ + { U"\U0000102F\U00001001\U0000103A", "" }, /* <MMV102FK1001A> */ + { U"\U0000102F\U00001002\U00001037\U0000103A", "" }, /* <MMV102FK1002ADot> */ + { U"\U0000102F\U00001002\U00001039", "" }, /* <MMV102FK1002B> */ + { U"\U0000102F\U00001002\U0000103A", "" }, /* <MMV102FK1002A> */ + { U"\U0000102F\U00001003\U00001037\U0000103A", "" }, /* <MMV102FK1003ADot> */ + { U"\U0000102F\U00001003\U00001039", "" }, /* <MMV102FK1003B> */ + { U"\U0000102F\U00001003\U0000103A", "" }, /* <MMV102FK1003A> */ + { U"\U0000102F\U00001004\U00001037\U0000103A", "" }, /* <MMV102FK1004ADot> */ + { U"\U0000102F\U00001004\U0000103A", "" }, /* <MMV102FK1004A> */ + { U"\U0000102F\U00001004\U0000103A\U00001039", "" }, /* <MMV102FK1004B> */ + { U"\U0000102F\U00001005\U00001037\U0000103A", "" }, /* <MMV102FK1005ADot> */ + { U"\U0000102F\U00001005\U00001039", "" }, /* <MMV102FK1005B> */ + { U"\U0000102F\U00001005\U0000103A", "" }, /* <MMV102FK1005A> */ + { U"\U0000102F\U00001006\U00001037\U0000103A", "" }, /* <MMV102FK1006ADot> */ + { U"\U0000102F\U00001006\U00001039", "" }, /* <MMV102FK1006B> */ + { U"\U0000102F\U00001006\U0000103A", "" }, /* <MMV102FK1006A> */ + { U"\U0000102F\U00001007\U00001037\U0000103A", "" }, /* <MMV102FK1007ADot> */ + { U"\U0000102F\U00001007\U00001039", "" }, /* <MMV102FK1007B> */ + { U"\U0000102F\U00001007\U0000103A", "" }, /* <MMV102FK1007A> */ + { U"\U0000102F\U00001009\U00001037\U0000103A", "" }, /* <MMV102FK1009ADot> */ + { U"\U0000102F\U00001009\U00001039", "" }, /* <MMV102FK1009B> */ + { U"\U0000102F\U00001009\U0000103A", "" }, /* <MMV102FK1009A> */ + { U"\U0000102F\U0000100A\U00001037\U0000103A", "" }, /* <MMV102FK100AADot> */ + { U"\U0000102F\U0000100A\U00001039", "" }, /* <MMV102FK100AB> */ + { U"\U0000102F\U0000100A\U0000103A", "" }, /* <MMV102FK100AA> */ + { U"\U0000102F\U0000100B\U00001037\U0000103A", "" }, /* <MMV102FK100BADot> */ + { U"\U0000102F\U0000100B\U00001039", "" }, /* <MMV102FK100BB> */ + { U"\U0000102F\U0000100B\U0000103A", "" }, /* <MMV102FK100BA> */ + { U"\U0000102F\U0000100C\U00001037\U0000103A", "" }, /* <MMV102FK100CADot> */ + { U"\U0000102F\U0000100C\U00001039", "" }, /* <MMV102FK100CB> */ + { U"\U0000102F\U0000100C\U0000103A", "" }, /* <MMV102FK100CA> */ + { U"\U0000102F\U0000100D\U00001037\U0000103A", "" }, /* <MMV102FK100DADot> */ + { U"\U0000102F\U0000100D\U00001039", "" }, /* <MMV102FK100DB> */ + { U"\U0000102F\U0000100D\U0000103A", "" }, /* <MMV102FK100DA> */ + { U"\U0000102F\U0000100E\U00001037\U0000103A", "" }, /* <MMV102FK100EADot> */ + { U"\U0000102F\U0000100E\U00001039", "" }, /* <MMV102FK100EB> */ + { U"\U0000102F\U0000100E\U0000103A", "" }, /* <MMV102FK100EA> */ + { U"\U0000102F\U0000100F\U00001037\U0000103A", "" }, /* <MMV102FK100FADot> */ + { U"\U0000102F\U0000100F\U00001039", "" }, /* <MMV102FK100FB> */ + { U"\U0000102F\U0000100F\U0000103A", "" }, /* <MMV102FK100FA> */ + { U"\U0000102F\U00001010\U00001037\U0000103A", "" }, /* <MMV102FK1010ADot> */ + { U"\U0000102F\U00001010\U00001039", "" }, /* <MMV102FK1010B> */ + { U"\U0000102F\U00001010\U0000103A", "" }, /* <MMV102FK1010A> */ + { U"\U0000102F\U00001011\U00001037\U0000103A", "" }, /* <MMV102FK1011ADot> */ + { U"\U0000102F\U00001011\U00001039", "" }, /* <MMV102FK1011B> */ + { U"\U0000102F\U00001011\U0000103A", "" }, /* <MMV102FK1011A> */ + { U"\U0000102F\U00001012\U00001037\U0000103A", "" }, /* <MMV102FK1012ADot> */ + { U"\U0000102F\U00001012\U00001039", "" }, /* <MMV102FK1012B> */ + { U"\U0000102F\U00001012\U0000103A", "" }, /* <MMV102FK1012A> */ + { U"\U0000102F\U00001013\U00001037\U0000103A", "" }, /* <MMV102FK1013ADot> */ + { U"\U0000102F\U00001013\U00001039", "" }, /* <MMV102FK1013B> */ + { U"\U0000102F\U00001013\U0000103A", "" }, /* <MMV102FK1013A> */ + { U"\U0000102F\U00001014\U00001037\U0000103A", "" }, /* <MMV102FK1014ADot> */ + { U"\U0000102F\U00001014\U00001039", "" }, /* <MMV102FK1014B> */ + { U"\U0000102F\U00001014\U0000103A", "" }, /* <MMV102FK1014A> */ + { U"\U0000102F\U00001015\U00001037\U0000103A", "" }, /* <MMV102FK1015ADot> */ + { U"\U0000102F\U00001015\U00001039", "" }, /* <MMV102FK1015B> */ + { U"\U0000102F\U00001015\U0000103A", "" }, /* <MMV102FK1015A> */ + { U"\U0000102F\U00001016\U00001037\U0000103A", "" }, /* <MMV102FK1016ADot> */ + { U"\U0000102F\U00001016\U00001039", "" }, /* <MMV102FK1016B> */ + { U"\U0000102F\U00001016\U0000103A", "" }, /* <MMV102FK1016A> */ + { U"\U0000102F\U00001017\U00001037\U0000103A", "" }, /* <MMV102FK1017ADot> */ + { U"\U0000102F\U00001017\U00001039", "" }, /* <MMV102FK1017B> */ + { U"\U0000102F\U00001017\U0000103A", "" }, /* <MMV102FK1017A> */ + { U"\U0000102F\U00001018\U00001037\U0000103A", "" }, /* <MMV102FK1018ADot> */ + { U"\U0000102F\U00001018\U00001039", "" }, /* <MMV102FK1018B> */ + { U"\U0000102F\U00001018\U0000103A", "" }, /* <MMV102FK1018A> */ + { U"\U0000102F\U00001019\U00001037\U0000103A", "" }, /* <MMV102FK10191037A> */ + { U"\U0000102F\U00001019\U00001037\U0000103A", "" }, /* <MMV102FK1019ADot> */ + { U"\U0000102F\U00001019\U00001039", "" }, /* <MMV102FK1019B> */ + { U"\U0000102F\U00001019\U0000103A", "" }, /* <MMV102FK1019A> */ + { U"\U0000102F\U00001019\U0000103A\U00001037", "" }, /* <MMV102FK10191037A2> */ + { U"\U0000102F\U00001019\U0000103A\U00001038", "" }, /* <MMV102FK10191038A> */ + { U"\U0000102F\U0000101A\U00001037\U0000103A", "" }, /* <MMV102FK101AADot> */ + { U"\U0000102F\U0000101A\U00001039", "" }, /* <MMV102FK101AB> */ + { U"\U0000102F\U0000101A\U0000103A", "" }, /* <MMV102FK101AA> */ + { U"\U0000102F\U0000101B\U00001037\U0000103A", "" }, /* <MMV102FK101BADot> */ + { U"\U0000102F\U0000101B\U00001039", "" }, /* <MMV102FK101BB> */ + { U"\U0000102F\U0000101B\U0000103A", "" }, /* <MMV102FK101BA> */ + { U"\U0000102F\U0000101C\U00001037\U0000103A", "" }, /* <MMV102FK101CADot> */ + { U"\U0000102F\U0000101C\U00001039", "" }, /* <MMV102FK101CB> */ + { U"\U0000102F\U0000101C\U0000103A", "" }, /* <MMV102FK101CA> */ + { U"\U0000102F\U0000101D\U00001037\U0000103A", "" }, /* <MMV102FK101DADot> */ + { U"\U0000102F\U0000101D\U00001039", "" }, /* <MMV102FK101DB> */ + { U"\U0000102F\U0000101D\U0000103A", "" }, /* <MMV102FK101DA> */ + { U"\U0000102F\U0000101E\U00001037\U0000103A", "" }, /* <MMV102FK101EADot> */ + { U"\U0000102F\U0000101E\U00001039", "" }, /* <MMV102FK101EB> */ + { U"\U0000102F\U0000101E\U0000103A", "" }, /* <MMV102FK101EA> */ + { U"\U0000102F\U0000101F\U00001037\U0000103A", "" }, /* <MMV102FK101FADot> */ + { U"\U0000102F\U0000101F\U00001039", "" }, /* <MMV102FK101FB> */ + { U"\U0000102F\U0000101F\U0000103A", "" }, /* <MMV102FK101FA> */ + { U"\U0000102F\U00001020\U00001037\U0000103A", "" }, /* <MMV102FK1020ADot> */ + { U"\U0000102F\U00001020\U00001039", "" }, /* <MMV102FK1020B> */ + { U"\U0000102F\U00001020\U0000103A", "" }, /* <MMV102FK1020A> */ + { U"\U0000102F\U00001036", "" }, /* <MMV102FK1019C> */ + { U"\U0000102F\U00001036\U00001037", "" }, /* <MMV102FK10191037C> */ + { U"\U0000102F\U00001036\U00001038", "" }, /* <MMV102FK10191038C> */ + { U"\U0000102F\U0000103F", "" }, /* <MMV102FK101EC> */ + { U"\U00001030", "" }, /* <MMV1030> */ + { U"\U00001030\U00001000\U00001037\U0000103A", "" }, /* <MMV1030K1000ADot> */ + { U"\U00001030\U00001000\U00001039", "" }, /* <MMV1030K1000B> */ + { U"\U00001030\U00001000\U0000103A", "" }, /* <MMV1030K1000A> */ + { U"\U00001030\U00001001\U00001037\U0000103A", "" }, /* <MMV1030K1001ADot> */ + { U"\U00001030\U00001001\U00001039", "" }, /* <MMV1030K1001B> */ + { U"\U00001030\U00001001\U0000103A", "" }, /* <MMV1030K1001A> */ + { U"\U00001030\U00001002\U00001037\U0000103A", "" }, /* <MMV1030K1002ADot> */ + { U"\U00001030\U00001002\U00001039", "" }, /* <MMV1030K1002B> */ + { U"\U00001030\U00001002\U0000103A", "" }, /* <MMV1030K1002A> */ + { U"\U00001030\U00001003\U00001037\U0000103A", "" }, /* <MMV1030K1003ADot> */ + { U"\U00001030\U00001003\U00001039", "" }, /* <MMV1030K1003B> */ + { U"\U00001030\U00001003\U0000103A", "" }, /* <MMV1030K1003A> */ + { U"\U00001030\U00001004\U00001037\U0000103A", "" }, /* <MMV1030K1004ADot> */ + { U"\U00001030\U00001004\U0000103A", "" }, /* <MMV1030K1004A> */ + { U"\U00001030\U00001004\U0000103A\U00001039", "" }, /* <MMV1030K1004B> */ + { U"\U00001030\U00001005\U00001037\U0000103A", "" }, /* <MMV1030K1005ADot> */ + { U"\U00001030\U00001005\U00001039", "" }, /* <MMV1030K1005B> */ + { U"\U00001030\U00001005\U0000103A", "" }, /* <MMV1030K1005A> */ + { U"\U00001030\U00001006\U00001037\U0000103A", "" }, /* <MMV1030K1006ADot> */ + { U"\U00001030\U00001006\U00001039", "" }, /* <MMV1030K1006B> */ + { U"\U00001030\U00001006\U0000103A", "" }, /* <MMV1030K1006A> */ + { U"\U00001030\U00001007\U00001037\U0000103A", "" }, /* <MMV1030K1007ADot> */ + { U"\U00001030\U00001007\U00001039", "" }, /* <MMV1030K1007B> */ + { U"\U00001030\U00001007\U0000103A", "" }, /* <MMV1030K1007A> */ + { U"\U00001030\U00001009\U00001037\U0000103A", "" }, /* <MMV1030K1009ADot> */ + { U"\U00001030\U00001009\U00001039", "" }, /* <MMV1030K1009B> */ + { U"\U00001030\U00001009\U0000103A", "" }, /* <MMV1030K1009A> */ + { U"\U00001030\U0000100A\U00001037\U0000103A", "" }, /* <MMV1030K100AADot> */ + { U"\U00001030\U0000100A\U00001039", "" }, /* <MMV1030K100AB> */ + { U"\U00001030\U0000100A\U0000103A", "" }, /* <MMV1030K100AA> */ + { U"\U00001030\U0000100B\U00001037\U0000103A", "" }, /* <MMV1030K100BADot> */ + { U"\U00001030\U0000100B\U00001039", "" }, /* <MMV1030K100BB> */ + { U"\U00001030\U0000100B\U0000103A", "" }, /* <MMV1030K100BA> */ + { U"\U00001030\U0000100C\U00001037\U0000103A", "" }, /* <MMV1030K100CADot> */ + { U"\U00001030\U0000100C\U00001039", "" }, /* <MMV1030K100CB> */ + { U"\U00001030\U0000100C\U0000103A", "" }, /* <MMV1030K100CA> */ + { U"\U00001030\U0000100D\U00001037\U0000103A", "" }, /* <MMV1030K100DADot> */ + { U"\U00001030\U0000100D\U00001039", "" }, /* <MMV1030K100DB> */ + { U"\U00001030\U0000100D\U0000103A", "" }, /* <MMV1030K100DA> */ + { U"\U00001030\U0000100E\U00001037\U0000103A", "" }, /* <MMV1030K100EADot> */ + { U"\U00001030\U0000100E\U00001039", "" }, /* <MMV1030K100EB> */ + { U"\U00001030\U0000100E\U0000103A", "" }, /* <MMV1030K100EA> */ + { U"\U00001030\U0000100F\U00001037\U0000103A", "" }, /* <MMV1030K100FADot> */ + { U"\U00001030\U0000100F\U00001039", "" }, /* <MMV1030K100FB> */ + { U"\U00001030\U0000100F\U0000103A", "" }, /* <MMV1030K100FA> */ + { U"\U00001030\U00001010\U00001037\U0000103A", "" }, /* <MMV1030K1010ADot> */ + { U"\U00001030\U00001010\U00001039", "" }, /* <MMV1030K1010B> */ + { U"\U00001030\U00001010\U0000103A", "" }, /* <MMV1030K1010A> */ + { U"\U00001030\U00001011\U00001037\U0000103A", "" }, /* <MMV1030K1011ADot> */ + { U"\U00001030\U00001011\U00001039", "" }, /* <MMV1030K1011B> */ + { U"\U00001030\U00001011\U0000103A", "" }, /* <MMV1030K1011A> */ + { U"\U00001030\U00001012\U00001037\U0000103A", "" }, /* <MMV1030K1012ADot> */ + { U"\U00001030\U00001012\U00001039", "" }, /* <MMV1030K1012B> */ + { U"\U00001030\U00001012\U0000103A", "" }, /* <MMV1030K1012A> */ + { U"\U00001030\U00001013\U00001037\U0000103A", "" }, /* <MMV1030K1013ADot> */ + { U"\U00001030\U00001013\U00001039", "" }, /* <MMV1030K1013B> */ + { U"\U00001030\U00001013\U0000103A", "" }, /* <MMV1030K1013A> */ + { U"\U00001030\U00001014\U00001037\U0000103A", "" }, /* <MMV1030K1014ADot> */ + { U"\U00001030\U00001014\U00001039", "" }, /* <MMV1030K1014B> */ + { U"\U00001030\U00001014\U0000103A", "" }, /* <MMV1030K1014A> */ + { U"\U00001030\U00001015\U00001037\U0000103A", "" }, /* <MMV1030K1015ADot> */ + { U"\U00001030\U00001015\U00001039", "" }, /* <MMV1030K1015B> */ + { U"\U00001030\U00001015\U0000103A", "" }, /* <MMV1030K1015A> */ + { U"\U00001030\U00001016\U00001037\U0000103A", "" }, /* <MMV1030K1016ADot> */ + { U"\U00001030\U00001016\U00001039", "" }, /* <MMV1030K1016B> */ + { U"\U00001030\U00001016\U0000103A", "" }, /* <MMV1030K1016A> */ + { U"\U00001030\U00001017\U00001037\U0000103A", "" }, /* <MMV1030K1017ADot> */ + { U"\U00001030\U00001017\U00001039", "" }, /* <MMV1030K1017B> */ + { U"\U00001030\U00001017\U0000103A", "" }, /* <MMV1030K1017A> */ + { U"\U00001030\U00001018\U00001037\U0000103A", "" }, /* <MMV1030K1018ADot> */ + { U"\U00001030\U00001018\U00001039", "" }, /* <MMV1030K1018B> */ + { U"\U00001030\U00001018\U0000103A", "" }, /* <MMV1030K1018A> */ + { U"\U00001030\U00001019\U00001037\U0000103A", "" }, /* <MMV1030K1019ADot> */ + { U"\U00001030\U00001019\U00001039", "" }, /* <MMV1030K1019B> */ + { U"\U00001030\U00001019\U0000103A", "" }, /* <MMV1030K1019A> */ + { U"\U00001030\U0000101A\U00001037\U0000103A", "" }, /* <MMV1030K101AADot> */ + { U"\U00001030\U0000101A\U00001039", "" }, /* <MMV1030K101AB> */ + { U"\U00001030\U0000101A\U0000103A", "" }, /* <MMV1030K101AA> */ + { U"\U00001030\U0000101B\U00001037\U0000103A", "" }, /* <MMV1030K101BADot> */ + { U"\U00001030\U0000101B\U00001039", "" }, /* <MMV1030K101BB> */ + { U"\U00001030\U0000101B\U0000103A", "" }, /* <MMV1030K101BA> */ + { U"\U00001030\U0000101C\U00001037\U0000103A", "" }, /* <MMV1030K101CADot> */ + { U"\U00001030\U0000101C\U00001039", "" }, /* <MMV1030K101CB> */ + { U"\U00001030\U0000101C\U0000103A", "" }, /* <MMV1030K101CA> */ + { U"\U00001030\U0000101D\U00001037\U0000103A", "" }, /* <MMV1030K101DADot> */ + { U"\U00001030\U0000101D\U00001039", "" }, /* <MMV1030K101DB> */ + { U"\U00001030\U0000101D\U0000103A", "" }, /* <MMV1030K101DA> */ + { U"\U00001030\U0000101E\U00001037\U0000103A", "" }, /* <MMV1030K101EADot> */ + { U"\U00001030\U0000101E\U00001039", "" }, /* <MMV1030K101EB> */ + { U"\U00001030\U0000101E\U0000103A", "" }, /* <MMV1030K101EA> */ + { U"\U00001030\U0000101F\U00001037\U0000103A", "" }, /* <MMV1030K101FADot> */ + { U"\U00001030\U0000101F\U00001039", "" }, /* <MMV1030K101FB> */ + { U"\U00001030\U0000101F\U0000103A", "" }, /* <MMV1030K101FA> */ + { U"\U00001030\U00001020\U00001037\U0000103A", "" }, /* <MMV1030K1020ADot> */ + { U"\U00001030\U00001020\U00001039", "" }, /* <MMV1030K1020B> */ + { U"\U00001030\U00001020\U0000103A", "" }, /* <MMV1030K1020A> */ + { U"\U00001030\U0000103F", "" }, /* <MMV1030K101EC> */ + { U"\U00001031", "" }, /* <MMV1031> */ + { U"\U00001031\U00001000\U00001037\U0000103A", "" }, /* <MMV1031K1000ADot> */ + { U"\U00001031\U00001000\U00001039", "" }, /* <MMV1031K1000B> */ + { U"\U00001031\U00001000\U0000103A", "" }, /* <MMV1031K1000A> */ + { U"\U00001031\U00001001\U00001037\U0000103A", "" }, /* <MMV1031K1001ADot> */ + { U"\U00001031\U00001001\U00001039", "" }, /* <MMV1031K1001B> */ + { U"\U00001031\U00001001\U0000103A", "" }, /* <MMV1031K1001A> */ + { U"\U00001031\U00001002\U00001037\U0000103A", "" }, /* <MMV1031K1002ADot> */ + { U"\U00001031\U00001002\U00001039", "" }, /* <MMV1031K1002B> */ + { U"\U00001031\U00001002\U0000103A", "" }, /* <MMV1031K1002A> */ + { U"\U00001031\U00001003\U00001037\U0000103A", "" }, /* <MMV1031K1003ADot> */ + { U"\U00001031\U00001003\U00001039", "" }, /* <MMV1031K1003B> */ + { U"\U00001031\U00001003\U0000103A", "" }, /* <MMV1031K1003A> */ + { U"\U00001031\U00001004\U00001037\U0000103A", "" }, /* <MMV1031K1004ADot> */ + { U"\U00001031\U00001004\U0000103A", "" }, /* <MMV1031K1004A> */ + { U"\U00001031\U00001004\U0000103A\U00001039", "" }, /* <MMV1031K1004B> */ + { U"\U00001031\U00001005\U00001037\U0000103A", "" }, /* <MMV1031K1005ADot> */ + { U"\U00001031\U00001005\U00001039", "" }, /* <MMV1031K1005B> */ + { U"\U00001031\U00001005\U0000103A", "" }, /* <MMV1031K1005A> */ + { U"\U00001031\U00001006\U00001037\U0000103A", "" }, /* <MMV1031K1006ADot> */ + { U"\U00001031\U00001006\U00001039", "" }, /* <MMV1031K1006B> */ + { U"\U00001031\U00001006\U0000103A", "" }, /* <MMV1031K1006A> */ + { U"\U00001031\U00001007\U00001037\U0000103A", "" }, /* <MMV1031K1007ADot> */ + { U"\U00001031\U00001007\U00001039", "" }, /* <MMV1031K1007B> */ + { U"\U00001031\U00001007\U0000103A", "" }, /* <MMV1031K1007A> */ + { U"\U00001031\U00001009\U00001037\U0000103A", "" }, /* <MMV1031K1009ADot> */ + { U"\U00001031\U00001009\U00001039", "" }, /* <MMV1031K1009B> */ + { U"\U00001031\U00001009\U0000103A", "" }, /* <MMV1031K1009A> */ + { U"\U00001031\U0000100A\U00001037\U0000103A", "" }, /* <MMV1031K100AADot> */ + { U"\U00001031\U0000100A\U00001039", "" }, /* <MMV1031K100AB> */ + { U"\U00001031\U0000100A\U0000103A", "" }, /* <MMV1031K100AA> */ + { U"\U00001031\U0000100B\U00001037\U0000103A", "" }, /* <MMV1031K100BADot> */ + { U"\U00001031\U0000100B\U00001039", "" }, /* <MMV1031K100BB> */ + { U"\U00001031\U0000100B\U0000103A", "" }, /* <MMV1031K100BA> */ + { U"\U00001031\U0000100C\U00001037\U0000103A", "" }, /* <MMV1031K100CADot> */ + { U"\U00001031\U0000100C\U00001039", "" }, /* <MMV1031K100CB> */ + { U"\U00001031\U0000100C\U0000103A", "" }, /* <MMV1031K100CA> */ + { U"\U00001031\U0000100D\U00001037\U0000103A", "" }, /* <MMV1031K100DADot> */ + { U"\U00001031\U0000100D\U00001039", "" }, /* <MMV1031K100DB> */ + { U"\U00001031\U0000100D\U0000103A", "" }, /* <MMV1031K100DA> */ + { U"\U00001031\U0000100E\U00001037\U0000103A", "" }, /* <MMV1031K100EADot> */ + { U"\U00001031\U0000100E\U00001039", "" }, /* <MMV1031K100EB> */ + { U"\U00001031\U0000100E\U0000103A", "" }, /* <MMV1031K100EA> */ + { U"\U00001031\U0000100F\U00001037\U0000103A", "" }, /* <MMV1031K100FADot> */ + { U"\U00001031\U0000100F\U00001039", "" }, /* <MMV1031K100FB> */ + { U"\U00001031\U0000100F\U0000103A", "" }, /* <MMV1031K100FA> */ + { U"\U00001031\U00001010\U00001037\U0000103A", "" }, /* <MMV1031K1010ADot> */ + { U"\U00001031\U00001010\U00001039", "" }, /* <MMV1031K1010B> */ + { U"\U00001031\U00001010\U0000103A", "" }, /* <MMV1031K1010A> */ + { U"\U00001031\U00001011\U00001037\U0000103A", "" }, /* <MMV1031K1011ADot> */ + { U"\U00001031\U00001011\U00001039", "" }, /* <MMV1031K1011B> */ + { U"\U00001031\U00001011\U0000103A", "" }, /* <MMV1031K1011A> */ + { U"\U00001031\U00001012\U00001037\U0000103A", "" }, /* <MMV1031K1012ADot> */ + { U"\U00001031\U00001012\U00001039", "" }, /* <MMV1031K1012B> */ + { U"\U00001031\U00001012\U0000103A", "" }, /* <MMV1031K1012A> */ + { U"\U00001031\U00001013\U00001037\U0000103A", "" }, /* <MMV1031K1013ADot> */ + { U"\U00001031\U00001013\U00001039", "" }, /* <MMV1031K1013B> */ + { U"\U00001031\U00001013\U0000103A", "" }, /* <MMV1031K1013A> */ + { U"\U00001031\U00001014\U00001037\U0000103A", "" }, /* <MMV1031K1014ADot> */ + { U"\U00001031\U00001014\U00001039", "" }, /* <MMV1031K1014B> */ + { U"\U00001031\U00001014\U0000103A", "" }, /* <MMV1031K1014A> */ + { U"\U00001031\U00001015\U00001037\U0000103A", "" }, /* <MMV1031K1015ADot> */ + { U"\U00001031\U00001015\U00001039", "" }, /* <MMV1031K1015B> */ + { U"\U00001031\U00001015\U0000103A", "" }, /* <MMV1031K1015A> */ + { U"\U00001031\U00001016\U00001037\U0000103A", "" }, /* <MMV1031K1016ADot> */ + { U"\U00001031\U00001016\U00001039", "" }, /* <MMV1031K1016B> */ + { U"\U00001031\U00001016\U0000103A", "" }, /* <MMV1031K1016A> */ + { U"\U00001031\U00001017\U00001037\U0000103A", "" }, /* <MMV1031K1017ADot> */ + { U"\U00001031\U00001017\U00001039", "" }, /* <MMV1031K1017B> */ + { U"\U00001031\U00001017\U0000103A", "" }, /* <MMV1031K1017A> */ + { U"\U00001031\U00001018\U00001037\U0000103A", "" }, /* <MMV1031K1018ADot> */ + { U"\U00001031\U00001018\U00001039", "" }, /* <MMV1031K1018B> */ + { U"\U00001031\U00001018\U0000103A", "" }, /* <MMV1031K1018A> */ + { U"\U00001031\U00001019\U00001037\U0000103A", "" }, /* <MMV1031K1019ADot> */ + { U"\U00001031\U00001019\U00001039", "" }, /* <MMV1031K1019B> */ + { U"\U00001031\U00001019\U0000103A", "" }, /* <MMV1031K1019A> */ + { U"\U00001031\U0000101A\U00001037\U0000103A", "" }, /* <MMV1031K101AADot> */ + { U"\U00001031\U0000101A\U00001039", "" }, /* <MMV1031K101AB> */ + { U"\U00001031\U0000101A\U0000103A", "" }, /* <MMV1031K101AA> */ + { U"\U00001031\U0000101B\U00001037\U0000103A", "" }, /* <MMV1031K101BADot> */ + { U"\U00001031\U0000101B\U00001039", "" }, /* <MMV1031K101BB> */ + { U"\U00001031\U0000101B\U0000103A", "" }, /* <MMV1031K101BA> */ + { U"\U00001031\U0000101C\U00001037\U0000103A", "" }, /* <MMV1031K101CADot> */ + { U"\U00001031\U0000101C\U00001039", "" }, /* <MMV1031K101CB> */ + { U"\U00001031\U0000101C\U0000103A", "" }, /* <MMV1031K101CA> */ + { U"\U00001031\U0000101D\U00001037\U0000103A", "" }, /* <MMV1031K101DADot> */ + { U"\U00001031\U0000101D\U00001039", "" }, /* <MMV1031K101DB> */ + { U"\U00001031\U0000101D\U0000103A", "" }, /* <MMV1031K101DA> */ + { U"\U00001031\U0000101E\U00001037\U0000103A", "" }, /* <MMV1031K101EADot> */ + { U"\U00001031\U0000101E\U00001039", "" }, /* <MMV1031K101EB> */ + { U"\U00001031\U0000101E\U0000103A", "" }, /* <MMV1031K101EA> */ + { U"\U00001031\U0000101F\U00001037\U0000103A", "" }, /* <MMV1031K101FADot> */ + { U"\U00001031\U0000101F\U00001039", "" }, /* <MMV1031K101FB> */ + { U"\U00001031\U0000101F\U0000103A", "" }, /* <MMV1031K101FA> */ + { U"\U00001031\U00001020\U00001037\U0000103A", "" }, /* <MMV1031K1020ADot> */ + { U"\U00001031\U00001020\U00001039", "" }, /* <MMV1031K1020B> */ + { U"\U00001031\U00001020\U0000103A", "" }, /* <MMV1031K1020A> */ + { U"\U00001031\U0000102B", "" }, /* <MMV1031102CALT0> */ + { U"\U00001031\U0000102B\U00001000\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1000ADot> */ + { U"\U00001031\U0000102B\U00001000\U00001039", "" }, /* <MMV1031102CALT0K1000B> */ + { U"\U00001031\U0000102B\U00001000\U0000103A", "" }, /* <MMV1031102CALT0K1000A> */ + { U"\U00001031\U0000102B\U00001001\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1001ADot> */ + { U"\U00001031\U0000102B\U00001001\U00001039", "" }, /* <MMV1031102CALT0K1001B> */ + { U"\U00001031\U0000102B\U00001001\U0000103A", "" }, /* <MMV1031102CALT0K1001A> */ + { U"\U00001031\U0000102B\U00001002\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1002ADot> */ + { U"\U00001031\U0000102B\U00001002\U00001039", "" }, /* <MMV1031102CALT0K1002B> */ + { U"\U00001031\U0000102B\U00001002\U0000103A", "" }, /* <MMV1031102CALT0K1002A> */ + { U"\U00001031\U0000102B\U00001003\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1003ADot> */ + { U"\U00001031\U0000102B\U00001003\U00001039", "" }, /* <MMV1031102CALT0K1003B> */ + { U"\U00001031\U0000102B\U00001003\U0000103A", "" }, /* <MMV1031102CALT0K1003A> */ + { U"\U00001031\U0000102B\U00001004\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1004ADot> */ + { U"\U00001031\U0000102B\U00001004\U0000103A", "" }, /* <MMV1031102CALT0K1004A> */ + { U"\U00001031\U0000102B\U00001004\U0000103A\U00001039", "" }, /* <MMV1031102CALT0K1004B> */ + { U"\U00001031\U0000102B\U00001005\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1005ADot> */ + { U"\U00001031\U0000102B\U00001005\U00001039", "" }, /* <MMV1031102CALT0K1005B> */ + { U"\U00001031\U0000102B\U00001005\U0000103A", "" }, /* <MMV1031102CALT0K1005A> */ + { U"\U00001031\U0000102B\U00001006\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1006ADot> */ + { U"\U00001031\U0000102B\U00001006\U00001039", "" }, /* <MMV1031102CALT0K1006B> */ + { U"\U00001031\U0000102B\U00001006\U0000103A", "" }, /* <MMV1031102CALT0K1006A> */ + { U"\U00001031\U0000102B\U00001007\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1007ADot> */ + { U"\U00001031\U0000102B\U00001007\U00001039", "" }, /* <MMV1031102CALT0K1007B> */ + { U"\U00001031\U0000102B\U00001007\U0000103A", "" }, /* <MMV1031102CALT0K1007A> */ + { U"\U00001031\U0000102B\U00001009\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1009ADot> */ + { U"\U00001031\U0000102B\U00001009\U00001039", "" }, /* <MMV1031102CALT0K1009B> */ + { U"\U00001031\U0000102B\U00001009\U0000103A", "" }, /* <MMV1031102CALT0K1009A> */ + { U"\U00001031\U0000102B\U0000100A\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K100AADot> */ + { U"\U00001031\U0000102B\U0000100A\U00001039", "" }, /* <MMV1031102CALT0K100AB> */ + { U"\U00001031\U0000102B\U0000100A\U0000103A", "" }, /* <MMV1031102CALT0K100AA> */ + { U"\U00001031\U0000102B\U0000100B\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K100BADot> */ + { U"\U00001031\U0000102B\U0000100B\U00001039", "" }, /* <MMV1031102CALT0K100BB> */ + { U"\U00001031\U0000102B\U0000100B\U0000103A", "" }, /* <MMV1031102CALT0K100BA> */ + { U"\U00001031\U0000102B\U0000100C\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K100CADot> */ + { U"\U00001031\U0000102B\U0000100C\U00001039", "" }, /* <MMV1031102CALT0K100CB> */ + { U"\U00001031\U0000102B\U0000100C\U0000103A", "" }, /* <MMV1031102CALT0K100CA> */ + { U"\U00001031\U0000102B\U0000100D\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K100DADot> */ + { U"\U00001031\U0000102B\U0000100D\U00001039", "" }, /* <MMV1031102CALT0K100DB> */ + { U"\U00001031\U0000102B\U0000100D\U0000103A", "" }, /* <MMV1031102CALT0K100DA> */ + { U"\U00001031\U0000102B\U0000100E\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K100EADot> */ + { U"\U00001031\U0000102B\U0000100E\U00001039", "" }, /* <MMV1031102CALT0K100EB> */ + { U"\U00001031\U0000102B\U0000100E\U0000103A", "" }, /* <MMV1031102CALT0K100EA> */ + { U"\U00001031\U0000102B\U0000100F\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K100FADot> */ + { U"\U00001031\U0000102B\U0000100F\U00001039", "" }, /* <MMV1031102CALT0K100FB> */ + { U"\U00001031\U0000102B\U0000100F\U0000103A", "" }, /* <MMV1031102CALT0K100FA> */ + { U"\U00001031\U0000102B\U00001010\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1010ADot> */ + { U"\U00001031\U0000102B\U00001010\U00001039", "" }, /* <MMV1031102CALT0K1010B> */ + { U"\U00001031\U0000102B\U00001010\U0000103A", "" }, /* <MMV1031102CALT0K1010A> */ + { U"\U00001031\U0000102B\U00001011\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1011ADot> */ + { U"\U00001031\U0000102B\U00001011\U00001039", "" }, /* <MMV1031102CALT0K1011B> */ + { U"\U00001031\U0000102B\U00001011\U0000103A", "" }, /* <MMV1031102CALT0K1011A> */ + { U"\U00001031\U0000102B\U00001012\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1012ADot> */ + { U"\U00001031\U0000102B\U00001012\U00001039", "" }, /* <MMV1031102CALT0K1012B> */ + { U"\U00001031\U0000102B\U00001012\U0000103A", "" }, /* <MMV1031102CALT0K1012A> */ + { U"\U00001031\U0000102B\U00001013\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1013ADot> */ + { U"\U00001031\U0000102B\U00001013\U00001039", "" }, /* <MMV1031102CALT0K1013B> */ + { U"\U00001031\U0000102B\U00001013\U0000103A", "" }, /* <MMV1031102CALT0K1013A> */ + { U"\U00001031\U0000102B\U00001014\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1014ADot> */ + { U"\U00001031\U0000102B\U00001014\U00001039", "" }, /* <MMV1031102CALT0K1014B> */ + { U"\U00001031\U0000102B\U00001014\U0000103A", "" }, /* <MMV1031102CALT0K1014A> */ + { U"\U00001031\U0000102B\U00001015\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1015ADot> */ + { U"\U00001031\U0000102B\U00001015\U00001039", "" }, /* <MMV1031102CALT0K1015B> */ + { U"\U00001031\U0000102B\U00001015\U0000103A", "" }, /* <MMV1031102CALT0K1015A> */ + { U"\U00001031\U0000102B\U00001016\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1016ADot> */ + { U"\U00001031\U0000102B\U00001016\U00001039", "" }, /* <MMV1031102CALT0K1016B> */ + { U"\U00001031\U0000102B\U00001016\U0000103A", "" }, /* <MMV1031102CALT0K1016A> */ + { U"\U00001031\U0000102B\U00001017\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1017ADot> */ + { U"\U00001031\U0000102B\U00001017\U00001039", "" }, /* <MMV1031102CALT0K1017B> */ + { U"\U00001031\U0000102B\U00001017\U0000103A", "" }, /* <MMV1031102CALT0K1017A> */ + { U"\U00001031\U0000102B\U00001018\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1018ADot> */ + { U"\U00001031\U0000102B\U00001018\U00001039", "" }, /* <MMV1031102CALT0K1018B> */ + { U"\U00001031\U0000102B\U00001018\U0000103A", "" }, /* <MMV1031102CALT0K1018A> */ + { U"\U00001031\U0000102B\U00001019\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1019ADot> */ + { U"\U00001031\U0000102B\U00001019\U00001039", "" }, /* <MMV1031102CALT0K1019B> */ + { U"\U00001031\U0000102B\U00001019\U0000103A", "" }, /* <MMV1031102CALT0K1019A> */ + { U"\U00001031\U0000102B\U0000101A\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K101AADot> */ + { U"\U00001031\U0000102B\U0000101A\U00001039", "" }, /* <MMV1031102CALT0K101AB> */ + { U"\U00001031\U0000102B\U0000101A\U0000103A", "" }, /* <MMV1031102CALT0K101AA> */ + { U"\U00001031\U0000102B\U0000101B\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K101BADot> */ + { U"\U00001031\U0000102B\U0000101B\U00001039", "" }, /* <MMV1031102CALT0K101BB> */ + { U"\U00001031\U0000102B\U0000101B\U0000103A", "" }, /* <MMV1031102CALT0K101BA> */ + { U"\U00001031\U0000102B\U0000101C\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K101CADot> */ + { U"\U00001031\U0000102B\U0000101C\U00001039", "" }, /* <MMV1031102CALT0K101CB> */ + { U"\U00001031\U0000102B\U0000101C\U0000103A", "" }, /* <MMV1031102CALT0K101CA> */ + { U"\U00001031\U0000102B\U0000101D\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K101DADot> */ + { U"\U00001031\U0000102B\U0000101D\U00001039", "" }, /* <MMV1031102CALT0K101DB> */ + { U"\U00001031\U0000102B\U0000101D\U0000103A", "" }, /* <MMV1031102CALT0K101DA> */ + { U"\U00001031\U0000102B\U0000101E\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K101EADot> */ + { U"\U00001031\U0000102B\U0000101E\U00001039", "" }, /* <MMV1031102CALT0K101EB> */ + { U"\U00001031\U0000102B\U0000101E\U0000103A", "" }, /* <MMV1031102CALT0K101EA> */ + { U"\U00001031\U0000102B\U0000101F\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K101FADot> */ + { U"\U00001031\U0000102B\U0000101F\U00001039", "" }, /* <MMV1031102CALT0K101FB> */ + { U"\U00001031\U0000102B\U0000101F\U0000103A", "" }, /* <MMV1031102CALT0K101FA> */ + { U"\U00001031\U0000102B\U00001020\U00001037\U0000103A", "" }, /* <MMV1031102CALT0K1020ADot> */ + { U"\U00001031\U0000102B\U00001020\U00001039", "" }, /* <MMV1031102CALT0K1020B> */ + { U"\U00001031\U0000102B\U00001020\U0000103A", "" }, /* <MMV1031102CALT0K1020A> */ + { U"\U00001031\U0000102B\U0000103A", "" }, /* <MMV1031102C103AALT0> */ + { U"\U00001031\U0000102C", "" }, /* <MMV1031102C> */ + { U"\U00001031\U0000102C\U00001000\U00001037\U0000103A", "" }, /* <MMV1031102CK1000ADot> */ + { U"\U00001031\U0000102C\U00001000\U00001039", "" }, /* <MMV1031102CK1000B> */ + { U"\U00001031\U0000102C\U00001000\U0000103A", "" }, /* <MMV1031102CK1000A> */ + { U"\U00001031\U0000102C\U00001001\U00001037\U0000103A", "" }, /* <MMV1031102CK1001ADot> */ + { U"\U00001031\U0000102C\U00001001\U00001039", "" }, /* <MMV1031102CK1001B> */ + { U"\U00001031\U0000102C\U00001001\U0000103A", "" }, /* <MMV1031102CK1001A> */ + { U"\U00001031\U0000102C\U00001002\U00001037\U0000103A", "" }, /* <MMV1031102CK1002ADot> */ + { U"\U00001031\U0000102C\U00001002\U00001039", "" }, /* <MMV1031102CK1002B> */ + { U"\U00001031\U0000102C\U00001002\U0000103A", "" }, /* <MMV1031102CK1002A> */ + { U"\U00001031\U0000102C\U00001003\U00001037\U0000103A", "" }, /* <MMV1031102CK1003ADot> */ + { U"\U00001031\U0000102C\U00001003\U00001039", "" }, /* <MMV1031102CK1003B> */ + { U"\U00001031\U0000102C\U00001003\U0000103A", "" }, /* <MMV1031102CK1003A> */ + { U"\U00001031\U0000102C\U00001004\U00001037\U0000103A", "" }, /* <MMV1031102CK1004ADot> */ + { U"\U00001031\U0000102C\U00001004\U0000103A", "" }, /* <MMV1031102CK1004A> */ + { U"\U00001031\U0000102C\U00001004\U0000103A\U00001039", "" }, /* <MMV1031102CK1004B> */ + { U"\U00001031\U0000102C\U00001005\U00001037\U0000103A", "" }, /* <MMV1031102CK1005ADot> */ + { U"\U00001031\U0000102C\U00001005\U00001039", "" }, /* <MMV1031102CK1005B> */ + { U"\U00001031\U0000102C\U00001005\U0000103A", "" }, /* <MMV1031102CK1005A> */ + { U"\U00001031\U0000102C\U00001006\U00001037\U0000103A", "" }, /* <MMV1031102CK1006ADot> */ + { U"\U00001031\U0000102C\U00001006\U00001039", "" }, /* <MMV1031102CK1006B> */ + { U"\U00001031\U0000102C\U00001006\U0000103A", "" }, /* <MMV1031102CK1006A> */ + { U"\U00001031\U0000102C\U00001007\U00001037\U0000103A", "" }, /* <MMV1031102CK1007ADot> */ + { U"\U00001031\U0000102C\U00001007\U00001039", "" }, /* <MMV1031102CK1007B> */ + { U"\U00001031\U0000102C\U00001007\U0000103A", "" }, /* <MMV1031102CK1007A> */ + { U"\U00001031\U0000102C\U00001009\U00001037\U0000103A", "" }, /* <MMV1031102CK1009ADot> */ + { U"\U00001031\U0000102C\U00001009\U00001039", "" }, /* <MMV1031102CK1009B> */ + { U"\U00001031\U0000102C\U00001009\U0000103A", "" }, /* <MMV1031102CK1009A> */ + { U"\U00001031\U0000102C\U0000100A\U00001037\U0000103A", "" }, /* <MMV1031102CK100AADot> */ + { U"\U00001031\U0000102C\U0000100A\U00001039", "" }, /* <MMV1031102CK100AB> */ + { U"\U00001031\U0000102C\U0000100A\U0000103A", "" }, /* <MMV1031102CK100AA> */ + { U"\U00001031\U0000102C\U0000100B\U00001037\U0000103A", "" }, /* <MMV1031102CK100BADot> */ + { U"\U00001031\U0000102C\U0000100B\U00001039", "" }, /* <MMV1031102CK100BB> */ + { U"\U00001031\U0000102C\U0000100B\U0000103A", "" }, /* <MMV1031102CK100BA> */ + { U"\U00001031\U0000102C\U0000100C\U00001037\U0000103A", "" }, /* <MMV1031102CK100CADot> */ + { U"\U00001031\U0000102C\U0000100C\U00001039", "" }, /* <MMV1031102CK100CB> */ + { U"\U00001031\U0000102C\U0000100C\U0000103A", "" }, /* <MMV1031102CK100CA> */ + { U"\U00001031\U0000102C\U0000100D\U00001037\U0000103A", "" }, /* <MMV1031102CK100DADot> */ + { U"\U00001031\U0000102C\U0000100D\U00001039", "" }, /* <MMV1031102CK100DB> */ + { U"\U00001031\U0000102C\U0000100D\U0000103A", "" }, /* <MMV1031102CK100DA> */ + { U"\U00001031\U0000102C\U0000100E\U00001037\U0000103A", "" }, /* <MMV1031102CK100EADot> */ + { U"\U00001031\U0000102C\U0000100E\U00001039", "" }, /* <MMV1031102CK100EB> */ + { U"\U00001031\U0000102C\U0000100E\U0000103A", "" }, /* <MMV1031102CK100EA> */ + { U"\U00001031\U0000102C\U0000100F\U00001037\U0000103A", "" }, /* <MMV1031102CK100FADot> */ + { U"\U00001031\U0000102C\U0000100F\U00001039", "" }, /* <MMV1031102CK100FB> */ + { U"\U00001031\U0000102C\U0000100F\U0000103A", "" }, /* <MMV1031102CK100FA> */ + { U"\U00001031\U0000102C\U00001010\U00001037\U0000103A", "" }, /* <MMV1031102CK1010ADot> */ + { U"\U00001031\U0000102C\U00001010\U00001039", "" }, /* <MMV1031102CK1010B> */ + { U"\U00001031\U0000102C\U00001010\U0000103A", "" }, /* <MMV1031102CK1010A> */ + { U"\U00001031\U0000102C\U00001011\U00001037\U0000103A", "" }, /* <MMV1031102CK1011ADot> */ + { U"\U00001031\U0000102C\U00001011\U00001039", "" }, /* <MMV1031102CK1011B> */ + { U"\U00001031\U0000102C\U00001011\U0000103A", "" }, /* <MMV1031102CK1011A> */ + { U"\U00001031\U0000102C\U00001012\U00001037\U0000103A", "" }, /* <MMV1031102CK1012ADot> */ + { U"\U00001031\U0000102C\U00001012\U00001039", "" }, /* <MMV1031102CK1012B> */ + { U"\U00001031\U0000102C\U00001012\U0000103A", "" }, /* <MMV1031102CK1012A> */ + { U"\U00001031\U0000102C\U00001013\U00001037\U0000103A", "" }, /* <MMV1031102CK1013ADot> */ + { U"\U00001031\U0000102C\U00001013\U00001039", "" }, /* <MMV1031102CK1013B> */ + { U"\U00001031\U0000102C\U00001013\U0000103A", "" }, /* <MMV1031102CK1013A> */ + { U"\U00001031\U0000102C\U00001014\U00001037\U0000103A", "" }, /* <MMV1031102CK1014ADot> */ + { U"\U00001031\U0000102C\U00001014\U00001039", "" }, /* <MMV1031102CK1014B> */ + { U"\U00001031\U0000102C\U00001014\U0000103A", "" }, /* <MMV1031102CK1014A> */ + { U"\U00001031\U0000102C\U00001015\U00001037\U0000103A", "" }, /* <MMV1031102CK1015ADot> */ + { U"\U00001031\U0000102C\U00001015\U00001039", "" }, /* <MMV1031102CK1015B> */ + { U"\U00001031\U0000102C\U00001015\U0000103A", "" }, /* <MMV1031102CK1015A> */ + { U"\U00001031\U0000102C\U00001016\U00001037\U0000103A", "" }, /* <MMV1031102CK1016ADot> */ + { U"\U00001031\U0000102C\U00001016\U00001039", "" }, /* <MMV1031102CK1016B> */ + { U"\U00001031\U0000102C\U00001016\U0000103A", "" }, /* <MMV1031102CK1016A> */ + { U"\U00001031\U0000102C\U00001017\U00001037\U0000103A", "" }, /* <MMV1031102CK1017ADot> */ + { U"\U00001031\U0000102C\U00001017\U00001039", "" }, /* <MMV1031102CK1017B> */ + { U"\U00001031\U0000102C\U00001017\U0000103A", "" }, /* <MMV1031102CK1017A> */ + { U"\U00001031\U0000102C\U00001018\U00001037\U0000103A", "" }, /* <MMV1031102CK1018ADot> */ + { U"\U00001031\U0000102C\U00001018\U00001039", "" }, /* <MMV1031102CK1018B> */ + { U"\U00001031\U0000102C\U00001018\U0000103A", "" }, /* <MMV1031102CK1018A> */ + { U"\U00001031\U0000102C\U00001019\U00001037\U0000103A", "" }, /* <MMV1031102CK1019ADot> */ + { U"\U00001031\U0000102C\U00001019\U00001039", "" }, /* <MMV1031102CK1019B> */ + { U"\U00001031\U0000102C\U00001019\U0000103A", "" }, /* <MMV1031102CK1019A> */ + { U"\U00001031\U0000102C\U0000101A\U00001037\U0000103A", "" }, /* <MMV1031102CK101AADot> */ + { U"\U00001031\U0000102C\U0000101A\U00001039", "" }, /* <MMV1031102CK101AB> */ + { U"\U00001031\U0000102C\U0000101A\U0000103A", "" }, /* <MMV1031102CK101AA> */ + { U"\U00001031\U0000102C\U0000101B\U00001037\U0000103A", "" }, /* <MMV1031102CK101BADot> */ + { U"\U00001031\U0000102C\U0000101B\U00001039", "" }, /* <MMV1031102CK101BB> */ + { U"\U00001031\U0000102C\U0000101B\U0000103A", "" }, /* <MMV1031102CK101BA> */ + { U"\U00001031\U0000102C\U0000101C\U00001037\U0000103A", "" }, /* <MMV1031102CK101CADot> */ + { U"\U00001031\U0000102C\U0000101C\U00001039", "" }, /* <MMV1031102CK101CB> */ + { U"\U00001031\U0000102C\U0000101C\U0000103A", "" }, /* <MMV1031102CK101CA> */ + { U"\U00001031\U0000102C\U0000101D\U00001037\U0000103A", "" }, /* <MMV1031102CK101DADot> */ + { U"\U00001031\U0000102C\U0000101D\U00001039", "" }, /* <MMV1031102CK101DB> */ + { U"\U00001031\U0000102C\U0000101D\U0000103A", "" }, /* <MMV1031102CK101DA> */ + { U"\U00001031\U0000102C\U0000101E\U00001037\U0000103A", "" }, /* <MMV1031102CK101EADot> */ + { U"\U00001031\U0000102C\U0000101E\U00001039", "" }, /* <MMV1031102CK101EB> */ + { U"\U00001031\U0000102C\U0000101E\U0000103A", "" }, /* <MMV1031102CK101EA> */ + { U"\U00001031\U0000102C\U0000101F\U00001037\U0000103A", "" }, /* <MMV1031102CK101FADot> */ + { U"\U00001031\U0000102C\U0000101F\U00001039", "" }, /* <MMV1031102CK101FB> */ + { U"\U00001031\U0000102C\U0000101F\U0000103A", "" }, /* <MMV1031102CK101FA> */ + { U"\U00001031\U0000102C\U00001020\U00001037\U0000103A", "" }, /* <MMV1031102CK1020ADot> */ + { U"\U00001031\U0000102C\U00001020\U00001039", "" }, /* <MMV1031102CK1020B> */ + { U"\U00001031\U0000102C\U00001020\U0000103A", "" }, /* <MMV1031102CK1020A> */ + { U"\U00001031\U0000102C\U0000103A", "" }, /* <MMV1031102C103A> */ + { U"\U00001031\U0000102C\U0000103F", "" }, /* <MMV1031102CK101EC> */ + { U"\U00001031\U0000103F", "" }, /* <MMV1031K101EC> */ + { U"\U00001032", "" }, /* <MMV1032> */ + { U"\U00001032\U00001000\U00001037\U0000103A", "" }, /* <MMV1032K1000ADot> */ + { U"\U00001032\U00001000\U00001039", "" }, /* <MMV1032K1000B> */ + { U"\U00001032\U00001000\U0000103A", "" }, /* <MMV1032K1000A> */ + { U"\U00001032\U00001001\U00001037\U0000103A", "" }, /* <MMV1032K1001ADot> */ + { U"\U00001032\U00001001\U00001039", "" }, /* <MMV1032K1001B> */ + { U"\U00001032\U00001001\U0000103A", "" }, /* <MMV1032K1001A> */ + { U"\U00001032\U00001002\U00001037\U0000103A", "" }, /* <MMV1032K1002ADot> */ + { U"\U00001032\U00001002\U00001039", "" }, /* <MMV1032K1002B> */ + { U"\U00001032\U00001002\U0000103A", "" }, /* <MMV1032K1002A> */ + { U"\U00001032\U00001003\U00001037\U0000103A", "" }, /* <MMV1032K1003ADot> */ + { U"\U00001032\U00001003\U00001039", "" }, /* <MMV1032K1003B> */ + { U"\U00001032\U00001003\U0000103A", "" }, /* <MMV1032K1003A> */ + { U"\U00001032\U00001004\U00001037\U0000103A", "" }, /* <MMV1032K1004ADot> */ + { U"\U00001032\U00001004\U0000103A", "" }, /* <MMV1032K1004A> */ + { U"\U00001032\U00001004\U0000103A\U00001039", "" }, /* <MMV1032K1004B> */ + { U"\U00001032\U00001005\U00001037\U0000103A", "" }, /* <MMV1032K1005ADot> */ + { U"\U00001032\U00001005\U00001039", "" }, /* <MMV1032K1005B> */ + { U"\U00001032\U00001005\U0000103A", "" }, /* <MMV1032K1005A> */ + { U"\U00001032\U00001006\U00001037\U0000103A", "" }, /* <MMV1032K1006ADot> */ + { U"\U00001032\U00001006\U00001039", "" }, /* <MMV1032K1006B> */ + { U"\U00001032\U00001006\U0000103A", "" }, /* <MMV1032K1006A> */ + { U"\U00001032\U00001007\U00001037\U0000103A", "" }, /* <MMV1032K1007ADot> */ + { U"\U00001032\U00001007\U00001039", "" }, /* <MMV1032K1007B> */ + { U"\U00001032\U00001007\U0000103A", "" }, /* <MMV1032K1007A> */ + { U"\U00001032\U00001009\U00001037\U0000103A", "" }, /* <MMV1032K1009ADot> */ + { U"\U00001032\U00001009\U00001039", "" }, /* <MMV1032K1009B> */ + { U"\U00001032\U00001009\U0000103A", "" }, /* <MMV1032K1009A> */ + { U"\U00001032\U0000100A\U00001037\U0000103A", "" }, /* <MMV1032K100AADot> */ + { U"\U00001032\U0000100A\U00001039", "" }, /* <MMV1032K100AB> */ + { U"\U00001032\U0000100A\U0000103A", "" }, /* <MMV1032K100AA> */ + { U"\U00001032\U0000100B\U00001037\U0000103A", "" }, /* <MMV1032K100BADot> */ + { U"\U00001032\U0000100B\U00001039", "" }, /* <MMV1032K100BB> */ + { U"\U00001032\U0000100B\U0000103A", "" }, /* <MMV1032K100BA> */ + { U"\U00001032\U0000100C\U00001037\U0000103A", "" }, /* <MMV1032K100CADot> */ + { U"\U00001032\U0000100C\U00001039", "" }, /* <MMV1032K100CB> */ + { U"\U00001032\U0000100C\U0000103A", "" }, /* <MMV1032K100CA> */ + { U"\U00001032\U0000100D\U00001037\U0000103A", "" }, /* <MMV1032K100DADot> */ + { U"\U00001032\U0000100D\U00001039", "" }, /* <MMV1032K100DB> */ + { U"\U00001032\U0000100D\U0000103A", "" }, /* <MMV1032K100DA> */ + { U"\U00001032\U0000100E\U00001037\U0000103A", "" }, /* <MMV1032K100EADot> */ + { U"\U00001032\U0000100E\U00001039", "" }, /* <MMV1032K100EB> */ + { U"\U00001032\U0000100E\U0000103A", "" }, /* <MMV1032K100EA> */ + { U"\U00001032\U0000100F\U00001037\U0000103A", "" }, /* <MMV1032K100FADot> */ + { U"\U00001032\U0000100F\U00001039", "" }, /* <MMV1032K100FB> */ + { U"\U00001032\U0000100F\U0000103A", "" }, /* <MMV1032K100FA> */ + { U"\U00001032\U00001010\U00001037\U0000103A", "" }, /* <MMV1032K1010ADot> */ + { U"\U00001032\U00001010\U00001039", "" }, /* <MMV1032K1010B> */ + { U"\U00001032\U00001010\U0000103A", "" }, /* <MMV1032K1010A> */ + { U"\U00001032\U00001011\U00001037\U0000103A", "" }, /* <MMV1032K1011ADot> */ + { U"\U00001032\U00001011\U00001039", "" }, /* <MMV1032K1011B> */ + { U"\U00001032\U00001011\U0000103A", "" }, /* <MMV1032K1011A> */ + { U"\U00001032\U00001012\U00001037\U0000103A", "" }, /* <MMV1032K1012ADot> */ + { U"\U00001032\U00001012\U00001039", "" }, /* <MMV1032K1012B> */ + { U"\U00001032\U00001012\U0000103A", "" }, /* <MMV1032K1012A> */ + { U"\U00001032\U00001013\U00001037\U0000103A", "" }, /* <MMV1032K1013ADot> */ + { U"\U00001032\U00001013\U00001039", "" }, /* <MMV1032K1013B> */ + { U"\U00001032\U00001013\U0000103A", "" }, /* <MMV1032K1013A> */ + { U"\U00001032\U00001014\U00001037\U0000103A", "" }, /* <MMV1032K1014ADot> */ + { U"\U00001032\U00001014\U00001039", "" }, /* <MMV1032K1014B> */ + { U"\U00001032\U00001014\U0000103A", "" }, /* <MMV1032K1014A> */ + { U"\U00001032\U00001015\U00001037\U0000103A", "" }, /* <MMV1032K1015ADot> */ + { U"\U00001032\U00001015\U00001039", "" }, /* <MMV1032K1015B> */ + { U"\U00001032\U00001015\U0000103A", "" }, /* <MMV1032K1015A> */ + { U"\U00001032\U00001016\U00001037\U0000103A", "" }, /* <MMV1032K1016ADot> */ + { U"\U00001032\U00001016\U00001039", "" }, /* <MMV1032K1016B> */ + { U"\U00001032\U00001016\U0000103A", "" }, /* <MMV1032K1016A> */ + { U"\U00001032\U00001017\U00001037\U0000103A", "" }, /* <MMV1032K1017ADot> */ + { U"\U00001032\U00001017\U00001039", "" }, /* <MMV1032K1017B> */ + { U"\U00001032\U00001017\U0000103A", "" }, /* <MMV1032K1017A> */ + { U"\U00001032\U00001018\U00001037\U0000103A", "" }, /* <MMV1032K1018ADot> */ + { U"\U00001032\U00001018\U00001039", "" }, /* <MMV1032K1018B> */ + { U"\U00001032\U00001018\U0000103A", "" }, /* <MMV1032K1018A> */ + { U"\U00001032\U00001019\U00001037\U0000103A", "" }, /* <MMV1032K1019ADot> */ + { U"\U00001032\U00001019\U00001039", "" }, /* <MMV1032K1019B> */ + { U"\U00001032\U00001019\U0000103A", "" }, /* <MMV1032K1019A> */ + { U"\U00001032\U0000101A\U00001037\U0000103A", "" }, /* <MMV1032K101AADot> */ + { U"\U00001032\U0000101A\U00001039", "" }, /* <MMV1032K101AB> */ + { U"\U00001032\U0000101A\U0000103A", "" }, /* <MMV1032K101AA> */ + { U"\U00001032\U0000101B\U00001037\U0000103A", "" }, /* <MMV1032K101BADot> */ + { U"\U00001032\U0000101B\U00001039", "" }, /* <MMV1032K101BB> */ + { U"\U00001032\U0000101B\U0000103A", "" }, /* <MMV1032K101BA> */ + { U"\U00001032\U0000101C\U00001037\U0000103A", "" }, /* <MMV1032K101CADot> */ + { U"\U00001032\U0000101C\U00001039", "" }, /* <MMV1032K101CB> */ + { U"\U00001032\U0000101C\U0000103A", "" }, /* <MMV1032K101CA> */ + { U"\U00001032\U0000101D\U00001037\U0000103A", "" }, /* <MMV1032K101DADot> */ + { U"\U00001032\U0000101D\U00001039", "" }, /* <MMV1032K101DB> */ + { U"\U00001032\U0000101D\U0000103A", "" }, /* <MMV1032K101DA> */ + { U"\U00001032\U0000101E\U00001037\U0000103A", "" }, /* <MMV1032K101EADot> */ + { U"\U00001032\U0000101E\U00001039", "" }, /* <MMV1032K101EB> */ + { U"\U00001032\U0000101E\U0000103A", "" }, /* <MMV1032K101EA> */ + { U"\U00001032\U0000101F\U00001037\U0000103A", "" }, /* <MMV1032K101FADot> */ + { U"\U00001032\U0000101F\U00001039", "" }, /* <MMV1032K101FB> */ + { U"\U00001032\U0000101F\U0000103A", "" }, /* <MMV1032K101FA> */ + { U"\U00001032\U00001020\U00001037\U0000103A", "" }, /* <MMV1032K1020ADot> */ + { U"\U00001032\U00001020\U00001039", "" }, /* <MMV1032K1020B> */ + { U"\U00001032\U00001020\U0000103A", "" }, /* <MMV1032K1020A> */ + { U"\U00001032\U0000103F", "" }, /* <MMV1032K101EC> */ + { U"\U00001033", "" }, /* <MMV1033> */ + { U"\U00001034", "" }, /* <MMV1034> */ + { U"\U00001035", "" }, /* <MMV1035> */ + { U"\U00001036", "" }, /* <MMV1036> */ + { U"\U00001036\U00001000\U00001037\U0000103A", "" }, /* <MMV1036K1000ADot> */ + { U"\U00001036\U00001000\U00001039", "" }, /* <MMV1036K1000B> */ + { U"\U00001036\U00001000\U0000103A", "" }, /* <MMV1036K1000A> */ + { U"\U00001036\U00001001\U00001037\U0000103A", "" }, /* <MMV1036K1001ADot> */ + { U"\U00001036\U00001001\U00001039", "" }, /* <MMV1036K1001B> */ + { U"\U00001036\U00001001\U0000103A", "" }, /* <MMV1036K1001A> */ + { U"\U00001036\U00001002\U00001037\U0000103A", "" }, /* <MMV1036K1002ADot> */ + { U"\U00001036\U00001002\U00001039", "" }, /* <MMV1036K1002B> */ + { U"\U00001036\U00001002\U0000103A", "" }, /* <MMV1036K1002A> */ + { U"\U00001036\U00001003\U00001037\U0000103A", "" }, /* <MMV1036K1003ADot> */ + { U"\U00001036\U00001003\U00001039", "" }, /* <MMV1036K1003B> */ + { U"\U00001036\U00001003\U0000103A", "" }, /* <MMV1036K1003A> */ + { U"\U00001036\U00001004\U00001037\U0000103A", "" }, /* <MMV1036K1004ADot> */ + { U"\U00001036\U00001004\U0000103A", "" }, /* <MMV1036K1004A> */ + { U"\U00001036\U00001004\U0000103A\U00001039", "" }, /* <MMV1036K1004B> */ + { U"\U00001036\U00001005\U00001037\U0000103A", "" }, /* <MMV1036K1005ADot> */ + { U"\U00001036\U00001005\U00001039", "" }, /* <MMV1036K1005B> */ + { U"\U00001036\U00001005\U0000103A", "" }, /* <MMV1036K1005A> */ + { U"\U00001036\U00001006\U00001037\U0000103A", "" }, /* <MMV1036K1006ADot> */ + { U"\U00001036\U00001006\U00001039", "" }, /* <MMV1036K1006B> */ + { U"\U00001036\U00001006\U0000103A", "" }, /* <MMV1036K1006A> */ + { U"\U00001036\U00001007\U00001037\U0000103A", "" }, /* <MMV1036K1007ADot> */ + { U"\U00001036\U00001007\U00001039", "" }, /* <MMV1036K1007B> */ + { U"\U00001036\U00001007\U0000103A", "" }, /* <MMV1036K1007A> */ + { U"\U00001036\U00001009\U00001037\U0000103A", "" }, /* <MMV1036K1009ADot> */ + { U"\U00001036\U00001009\U00001039", "" }, /* <MMV1036K1009B> */ + { U"\U00001036\U00001009\U0000103A", "" }, /* <MMV1036K1009A> */ + { U"\U00001036\U0000100A\U00001037\U0000103A", "" }, /* <MMV1036K100AADot> */ + { U"\U00001036\U0000100A\U00001039", "" }, /* <MMV1036K100AB> */ + { U"\U00001036\U0000100A\U0000103A", "" }, /* <MMV1036K100AA> */ + { U"\U00001036\U0000100B\U00001037\U0000103A", "" }, /* <MMV1036K100BADot> */ + { U"\U00001036\U0000100B\U00001039", "" }, /* <MMV1036K100BB> */ + { U"\U00001036\U0000100B\U0000103A", "" }, /* <MMV1036K100BA> */ + { U"\U00001036\U0000100C\U00001037\U0000103A", "" }, /* <MMV1036K100CADot> */ + { U"\U00001036\U0000100C\U00001039", "" }, /* <MMV1036K100CB> */ + { U"\U00001036\U0000100C\U0000103A", "" }, /* <MMV1036K100CA> */ + { U"\U00001036\U0000100D\U00001037\U0000103A", "" }, /* <MMV1036K100DADot> */ + { U"\U00001036\U0000100D\U00001039", "" }, /* <MMV1036K100DB> */ + { U"\U00001036\U0000100D\U0000103A", "" }, /* <MMV1036K100DA> */ + { U"\U00001036\U0000100E\U00001037\U0000103A", "" }, /* <MMV1036K100EADot> */ + { U"\U00001036\U0000100E\U00001039", "" }, /* <MMV1036K100EB> */ + { U"\U00001036\U0000100E\U0000103A", "" }, /* <MMV1036K100EA> */ + { U"\U00001036\U0000100F\U00001037\U0000103A", "" }, /* <MMV1036K100FADot> */ + { U"\U00001036\U0000100F\U00001039", "" }, /* <MMV1036K100FB> */ + { U"\U00001036\U0000100F\U0000103A", "" }, /* <MMV1036K100FA> */ + { U"\U00001036\U00001010\U00001037\U0000103A", "" }, /* <MMV1036K1010ADot> */ + { U"\U00001036\U00001010\U00001039", "" }, /* <MMV1036K1010B> */ + { U"\U00001036\U00001010\U0000103A", "" }, /* <MMV1036K1010A> */ + { U"\U00001036\U00001011\U00001037\U0000103A", "" }, /* <MMV1036K1011ADot> */ + { U"\U00001036\U00001011\U00001039", "" }, /* <MMV1036K1011B> */ + { U"\U00001036\U00001011\U0000103A", "" }, /* <MMV1036K1011A> */ + { U"\U00001036\U00001012\U00001037\U0000103A", "" }, /* <MMV1036K1012ADot> */ + { U"\U00001036\U00001012\U00001039", "" }, /* <MMV1036K1012B> */ + { U"\U00001036\U00001012\U0000103A", "" }, /* <MMV1036K1012A> */ + { U"\U00001036\U00001013\U00001037\U0000103A", "" }, /* <MMV1036K1013ADot> */ + { U"\U00001036\U00001013\U00001039", "" }, /* <MMV1036K1013B> */ + { U"\U00001036\U00001013\U0000103A", "" }, /* <MMV1036K1013A> */ + { U"\U00001036\U00001014\U00001037\U0000103A", "" }, /* <MMV1036K1014ADot> */ + { U"\U00001036\U00001014\U00001039", "" }, /* <MMV1036K1014B> */ + { U"\U00001036\U00001014\U0000103A", "" }, /* <MMV1036K1014A> */ + { U"\U00001036\U00001015\U00001037\U0000103A", "" }, /* <MMV1036K1015ADot> */ + { U"\U00001036\U00001015\U00001039", "" }, /* <MMV1036K1015B> */ + { U"\U00001036\U00001015\U0000103A", "" }, /* <MMV1036K1015A> */ + { U"\U00001036\U00001016\U00001037\U0000103A", "" }, /* <MMV1036K1016ADot> */ + { U"\U00001036\U00001016\U00001039", "" }, /* <MMV1036K1016B> */ + { U"\U00001036\U00001016\U0000103A", "" }, /* <MMV1036K1016A> */ + { U"\U00001036\U00001017\U00001037\U0000103A", "" }, /* <MMV1036K1017ADot> */ + { U"\U00001036\U00001017\U00001039", "" }, /* <MMV1036K1017B> */ + { U"\U00001036\U00001017\U0000103A", "" }, /* <MMV1036K1017A> */ + { U"\U00001036\U00001018\U00001037\U0000103A", "" }, /* <MMV1036K1018ADot> */ + { U"\U00001036\U00001018\U00001039", "" }, /* <MMV1036K1018B> */ + { U"\U00001036\U00001018\U0000103A", "" }, /* <MMV1036K1018A> */ + { U"\U00001036\U00001019\U00001037\U0000103A", "" }, /* <MMV1036K1019ADot> */ + { U"\U00001036\U00001019\U00001039", "" }, /* <MMV1036K1019B> */ + { U"\U00001036\U00001019\U0000103A", "" }, /* <MMV1036K1019A> */ + { U"\U00001036\U0000101A\U00001037\U0000103A", "" }, /* <MMV1036K101AADot> */ + { U"\U00001036\U0000101A\U00001039", "" }, /* <MMV1036K101AB> */ + { U"\U00001036\U0000101A\U0000103A", "" }, /* <MMV1036K101AA> */ + { U"\U00001036\U0000101B\U00001037\U0000103A", "" }, /* <MMV1036K101BADot> */ + { U"\U00001036\U0000101B\U00001039", "" }, /* <MMV1036K101BB> */ + { U"\U00001036\U0000101B\U0000103A", "" }, /* <MMV1036K101BA> */ + { U"\U00001036\U0000101C\U00001037\U0000103A", "" }, /* <MMV1036K101CADot> */ + { U"\U00001036\U0000101C\U00001039", "" }, /* <MMV1036K101CB> */ + { U"\U00001036\U0000101C\U0000103A", "" }, /* <MMV1036K101CA> */ + { U"\U00001036\U0000101D\U00001037\U0000103A", "" }, /* <MMV1036K101DADot> */ + { U"\U00001036\U0000101D\U00001039", "" }, /* <MMV1036K101DB> */ + { U"\U00001036\U0000101D\U0000103A", "" }, /* <MMV1036K101DA> */ + { U"\U00001036\U0000101E\U00001037\U0000103A", "" }, /* <MMV1036K101EADot> */ + { U"\U00001036\U0000101E\U00001039", "" }, /* <MMV1036K101EB> */ + { U"\U00001036\U0000101E\U0000103A", "" }, /* <MMV1036K101EA> */ + { U"\U00001036\U0000101F\U00001037\U0000103A", "" }, /* <MMV1036K101FADot> */ + { U"\U00001036\U0000101F\U00001039", "" }, /* <MMV1036K101FB> */ + { U"\U00001036\U0000101F\U0000103A", "" }, /* <MMV1036K101FA> */ + { U"\U00001036\U00001020\U00001037\U0000103A", "" }, /* <MMV1036K1020ADot> */ + { U"\U00001036\U00001020\U00001039", "" }, /* <MMV1036K1020B> */ + { U"\U00001036\U00001020\U0000103A", "" }, /* <MMV1036K1020A> */ + { U"\U00001036\U0000103F", "" }, /* <MMV1036K101EC> */ + { U"\U00001037", "" }, /* <MMT1037> */ + { U"\U00001037\U00001038", "" }, /* <MMT10371038> */ + { U"\U00001038", "" }, /* <MMT1038> */ + { U"\U0000103B", "" }, /* <MMYRWH103B> */ + { U"\U0000103B\U0000103D", "" }, /* <MMYRWH103B103D> */ + { U"\U0000103B\U0000103D\U0000103E", "" }, /* <MMYRWH103B103D103E> */ + { U"\U0000103B\U0000103E", "" }, /* <MMYRWH103B103E> */ + { U"\U0000103C", "" }, /* <MMYRWH103C> */ + { U"\U0000103C\U0000103D", "" }, /* <MMYRWH103C103D> */ + { U"\U0000103C\U0000103D\U0000103E", "" }, /* <MMYRWH103C103D103E> */ + { U"\U0000103C\U0000103E", "" }, /* <MMYRWH103C103E> */ + { U"\U0000103D", "" }, /* <MMYRWH103D> */ + { U"\U0000103D\U0000103E", "" }, /* <MMYRWH103D103E> */ + { U"\U0000103E", "" }, /* <MMYRWH103E> */ + { U"\U00001056", "" }, /* <MMV1056> */ + { U"\U00001057", "" }, /* <MMV1057> */ + { U"\U00001058", "" }, /* <MMV1058> */ + { U"\U00001059", "" }, /* <MMV1059> */ + { U"\U0000105E", "" }, /* <MMYRWH105E> */ + { U"\U0000105F", "" }, /* <MMYRWH105F> */ + { U"\U00001060", "" }, /* <MMYRWH1060> */ + { U"\U00001062", "" }, /* <MMV1062> */ + { U"\U00001062\U0000103A", "" }, /* <MMT1062103A> */ + { U"\U00001063", "" }, /* <MMV1063> */ + { U"\U00001063\U0000103A", "" }, /* <MMT1063103A> */ + { U"\U00001064", "" }, /* <MMT1064> */ + { U"\U00001067", "" }, /* <MMV1067> */ + { U"\U00001068", "" }, /* <MMV1068> */ + { U"\U00001069", "" }, /* <MMT1069> */ + { U"\U00001069\U00001037", "" }, /* <MMT10691037> */ + { U"\U0000106A", "" }, /* <MMT106A> */ + { U"\U0000106A\U00001037", "" }, /* <MMT106A1037> */ + { U"\U0000106B", "" }, /* <MMT106B> */ + { U"\U0000106B\U00001037", "" }, /* <MMT106B1037> */ + { U"\U0000106C", "" }, /* <MMT106C> */ + { U"\U0000106D", "" }, /* <MMT106D> */ + { U"\U00001071", "" }, /* <MMV1071> */ + { U"\U00001072", "" }, /* <MMV1072> */ + { U"\U00001073", "" }, /* <MMV1073> */ + { U"\U00001074", "" }, /* <MMV1074> */ + { U"\U00001082", "" }, /* <MMYRWH1082> */ + { U"\U00001083", "" }, /* <MMV1083> */ + { U"\U00001084", "" }, /* <MMV1084> */ + { U"\U00001085", "" }, /* <MMV1085> */ + { U"\U00001086", "" }, /* <MMV1086> */ + { U"\U00001087", "" }, /* <MMT1087> */ + { U"\U00001088", "" }, /* <MMT1088> */ + { U"\U00001089", "" }, /* <MMT1089> */ + { U"\U0000108A", "" }, /* <MMT108A> */ + { U"\U0000108B", "" }, /* <MMT108B> */ + { U"\U0000108C", "" }, /* <MMT108C> */ + { U"\U0000108D", "" }, /* <MMT108D> */ + { U"\U0000108F", "" }, /* <MMT108F> */ + { U"\U00001780\U000017CC", "km_KH" }, /* <KHMER_LETTER_KA-KHMER_SIGN_ROBAT> */ + { U"\U00001781\U000017CC", "km_KH" }, /* <KHMER_LETTER_KHA-KHMER_SIGN_ROBAT> */ + { U"\U00001782\U000017CC", "km_KH" }, /* <KHMER_LETTER_KO-KHMER_SIGN_ROBAT> */ + { U"\U00001783\U000017CC", "km_KH" }, /* <KHMER_LETTER_KHO-KHMER_SIGN_ROBAT> */ + { U"\U00001784\U000017CC", "km_KH" }, /* <KHMER_LETTER_NGO-KHMER_SIGN_ROBAT> */ + { U"\U00001785\U000017CC", "km_KH" }, /* <KHMER_LETTER_CA-KHMER_SIGN_ROBAT> */ + { U"\U00001786\U000017CC", "km_KH" }, /* <KHMER_LETTER_CHA-KHMER_SIGN_ROBAT> */ + { U"\U00001787\U000017CC", "km_KH" }, /* <KHMER_LETTER_CO-KHMER_SIGN_ROBAT> */ + { U"\U00001788\U000017CC", "km_KH" }, /* <KHMER_LETTER_CHO-KHMER_SIGN_ROBAT> */ + { U"\U00001789\U000017CC", "km_KH" }, /* <KHMER_LETTER_NYO-KHMER_SIGN_ROBAT> */ + { U"\U0000178A\U000017CC", "km_KH" }, /* <KHMER_LETTER_DA-KHMER_SIGN_ROBAT> */ + { U"\U0000178B\U000017CC", "km_KH" }, /* <KHMER_LETTER_TTHA-KHMER_SIGN_ROBAT> */ + { U"\U0000178C\U000017CC", "km_KH" }, /* <KHMER_LETTER_DO-KHMER_SIGN_ROBAT> */ + { U"\U0000178D\U000017CC", "km_KH" }, /* <KHMER_LETTER_TTHO-KHMER_SIGN_ROBAT> */ + { U"\U0000178E\U000017CC", "km_KH" }, /* <KHMER_LETTER_NNO-KHMER_SIGN_ROBAT> */ + { U"\U0000178F\U000017CC", "km_KH" }, /* <KHMER_LETTER_TA-KHMER_SIGN_ROBAT> */ + { U"\U00001790\U000017CC", "km_KH" }, /* <KHMER_LETTER_THA-KHMER_SIGN_ROBAT> */ + { U"\U00001791\U000017CC", "km_KH" }, /* <KHMER_LETTER_TO-KHMER_SIGN_ROBAT> */ + { U"\U00001792\U000017CC", "km_KH" }, /* <KHMER_LETTER_THO-KHMER_SIGN_ROBAT> */ + { U"\U00001793\U000017CC", "km_KH" }, /* <KHMER_LETTER_NO-KHMER_SIGN_ROBAT> */ + { U"\U00001794\U000017CC", "km_KH" }, /* <KHMER_LETTER_BA-KHMER_SIGN_ROBAT> */ + { U"\U00001795\U000017CC", "km_KH" }, /* <KHMER_LETTER_PHA-KHMER_SIGN_ROBAT> */ + { U"\U00001796\U000017CC", "km_KH" }, /* <KHMER_LETTER_PO-KHMER_SIGN_ROBAT> */ + { U"\U00001797\U000017CC", "km_KH" }, /* <KHMER_LETTER_PHO-KHMER_SIGN_ROBAT> */ + { U"\U00001798\U000017CC", "km_KH" }, /* <KHMER_LETTER_MO-KHMER_SIGN_ROBAT> */ + { U"\U00001799\U000017CC", "km_KH" }, /* <KHMER_LETTER_YO-KHMER_SIGN_ROBAT> */ + { U"\U0000179A\U000017CC", "km_KH" }, /* <KHMER_LETTER_RO-KHMER_SIGN_ROBAT> */ + { U"\U0000179B\U000017CC", "km_KH" }, /* <KHMER_LETTER_LO-KHMER_SIGN_ROBAT> */ + { U"\U0000179C\U000017CC", "km_KH" }, /* <KHMER_LETTER_VO-KHMER_SIGN_ROBAT> */ + { U"\U0000179D\U000017CC", "km_KH" }, /* <KHMER_LETTER_SHA-KHMER_SIGN_ROBAT> */ + { U"\U0000179E\U000017CC", "km_KH" }, /* <KHMER_LETTER_SSO-KHMER_SIGN_ROBAT> */ + { U"\U0000179F\U000017CC", "km_KH" }, /* <KHMER_LETTER_SA-KHMER_SIGN_ROBAT> */ + { U"\U000017A0\U000017CC", "km_KH" }, /* <KHMER_LETTER_HA-KHMER_SIGN_ROBAT> */ + { U"\U000017A1\U000017CC", "km_KH" }, /* <KHMER_LETTER_LA-KHMER_SIGN_ROBAT> */ + { U"\U000017A2\U000017CC", "km_KH" }, /* <KHMER_LETTER_QA-KHMER_SIGN_ROBAT> */ + { U"\U000017A3\U000017CC", "km_KH" }, /* <KHMER_INDEPENDENT_VOWEL_QAQ-KHMER_SIGN_ROBAT> */ + { U"\U000017AB\U000017CC", "km_KH" }, /* <KHMER_INDEPENDENT_VOWEL_RY-KHMER_SIGN_ROBAT> */ + { U"\U000017AC\U000017CC", "km_KH" }, /* <KHMER_INDEPENDENT_VOWEL_RYY-KHMER_SIGN_ROBAT> */ + { U"\U000017AD\U000017CC", "km_KH" }, /* <KHMER_INDEPENDENT_VOWEL_LY-KHMER_SIGN_ROBAT> */ + { U"\U000017AE\U000017CC", "km_KH" }, /* <KHMER_INDEPENDENT_VOWEL_LYY-KHMER_SIGN_ROBAT> */ + { U"\U000017B6\U000017C6", "km_KH" }, /* <KHMER_VOWEL_SIGN_AA-KHMER_SIGN_NIKAHIT> */ + { U"\U000017BB\U000017C6", "km_KH" }, /* <KHMER_VOWEL_SIGN_U-KHMER_SIGN_NIKAHIT> */ + { U"\U00001EB8\U00000300", "yo_NG" }, /* <E_`> */ + { U"\U00001EB8\U00000301", "yo_NG" }, /* <E_'> */ + { U"\U00001EB8\U00000302", "yo_NG" }, /* <E_/>> */ + { U"\U00001EB8\U0000030C", "yo_NG" }, /* <E_<> */ + { U"\U00001EB9\U00000300", "yo_NG" }, /* <e_`> */ + { U"\U00001EB9\U00000301", "yo_NG" }, /* <e_'> */ + { U"\U00001EB9\U00000302", "yo_NG" }, /* <e_/>> */ + { U"\U00001EB9\U0000030C", "yo_NG" }, /* <e_<> */ + { U"\U00001ECA\U00000300", "ig_NG" }, /* <I_2`> */ + { U"\U00001ECA\U00000301", "ig_NG" }, /* <I_2'> */ + { U"\U00001ECB\U00000300", "ig_NG" }, /* <i_2`> */ + { U"\U00001ECB\U00000301", "ig_NG" }, /* <i_2'> */ + { U"\U00001ECC\U00000300", "ig_NG" }, /* <O_2`> */ + { U"\U00001ECC\U00000300", "yo_NG" }, /* <O_`> */ + { U"\U00001ECC\U00000301", "ig_NG" }, /* <O_2'> */ + { U"\U00001ECC\U00000301", "yo_NG" }, /* <O_'> */ + { U"\U00001ECC\U00000302", "yo_NG" }, /* <O_/>> */ + { U"\U00001ECC\U0000030C", "yo_NG" }, /* <O_<> */ + { U"\U00001ECD\U00000300", "ig_NG" }, /* <o_2`> */ + { U"\U00001ECD\U00000300", "yo_NG" }, /* <o_`> */ + { U"\U00001ECD\U00000301", "ig_NG" }, /* <o_2'> */ + { U"\U00001ECD\U00000301", "yo_NG" }, /* <o_'> */ + { U"\U00001ECD\U00000302", "yo_NG" }, /* <o_/>> */ + { U"\U00001ECD\U0000030C", "yo_NG" }, /* <o_<> */ + { U"\U00001EE4\U00000300", "ig_NG" }, /* <U_2`> */ + { U"\U00001EE4\U00000301", "ig_NG" }, /* <U_2'> */ + { U"\U00001EE5\U00000300", "ig_NG" }, /* <u_2`> */ + { U"\U00001EE5\U00000301", "ig_NG" }, /* <u_2'> */ + { U"\U00002019\U00000059", "ha_NG" }, /* <'2Y> */ + { U"\U00002019\U00000079", "ha_NG" }, /* <'2y> */ + { U"\U0000207F", "nan_TW@latin" }, /* <nn> */ + { U"\U00002D33\U00002D6F", "ber_MA" }, /* <TIF-G-W> */ + { U"\U00002D3D\U00002D6F", "ber_MA" }, /* <TIF-K-W> */ +}; diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 4d17fb4e39..20143f19d8 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -17,8 +17,10 @@ details. */ #include "dtable.h" #include "cygheap.h" #include "tls_pbuf.h" +#include "collate.h" #include "lc_msg.h" #include "lc_era.h" +#include "lc_collelem.h" #define _LC(x) &lc_##x##_ptr,lc_##x##_end-lc_##x##_ptr @@ -1241,6 +1243,83 @@ is_unicode_equiv (wint_t test, wint_t eqv) return 1; } +static int +comp_coll_elem (const void *key, const void *array_member) +{ + collating_element_t *ckey = (collating_element_t *) key; + collating_element_t *carray_member = (collating_element_t *) array_member; + + int ret = wcicmp ((const wint_t *) ckey->element, + (const wint_t *) carray_member->element); + /* The locale in the collating_element array never has a codeset + attached. So the length of the collating_element locale is + always <= length of the key locale, and that's all we need to + check. Also, if the collating_element locale is empty, we're + all set. */ + if (ret == 0 && carray_member->locale[0]) + ret = strncmp (ckey->locale, carray_member->locale, + strlen (carray_member->locale)); + return ret; +} + +extern "C" int +is_unicode_coll_elem (const wint_t *test) +{ + collating_element_t ct = { + (const char32_t *) test, + __get_current_locale ()->categories[LC_COLLATE] + }; + collating_element_t *cmatch; + + if (wcilen (test) == 1) + return 1; + cmatch = (collating_element_t *) + bsearch (&ct, collating_element, ce_size, ce_e_size, comp_coll_elem); + return !!cmatch; +} + +static int +comp_coll_elem_n (const void *key, const void *array_member) +{ + collating_element_t *ckey = (collating_element_t *) key; + collating_element_t *carray_member = (collating_element_t *) array_member; + + int ret = wcincmp ((const wint_t *) ckey->element, + (const wint_t *) carray_member->element, + wcilen ((const wint_t *) carray_member->element)); + /* The locale in the collating_element array never has a codeset + attached. So the length of the collating_element locale is + always <= length of the key locale, and that's all we need to + check. Also, if the collating_element locale is empty, we're + all set. */ + if (ret == 0 && carray_member->locale[0]) + ret = strncmp (ckey->locale, carray_member->locale, + strlen (carray_member->locale)); + return ret; +} + +/* Return the number of UTF-32 chars making up the next full character in + inp, taking valid collation elements in the current locale into account. */ +extern "C" size_t +next_unicode_char (wint_t *inp) +{ + collating_element_t ct = { + (const char32_t *) inp, + __get_current_locale ()->categories[LC_COLLATE] + }; + collating_element_t *cmatch; + + if (wcilen (inp) > 1) + { + cmatch = (collating_element_t *) + bsearch (&ct, collating_element, ce_size, ce_e_size, + comp_coll_elem_n); + if (cmatch) + return wcilen ((const wint_t *) cmatch->element); + } + return 1; +} + extern "C" size_t wcsxfrm_l (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn, struct __locale_t *locale) From 244faaea8e24c70a1d61b939623364e3bdfaa28c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Feb 2023 22:47:17 +0100 Subject: [PATCH 191/767] Cygwin: glob: convert internal character datatype to wint_t uint_fast64_t doesn't allow easy string handling, so convert the internal "Char" type to wint_t. Given that UTF-32 only needs 21 bits, we're well off with 28 usable character bits. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index b84c36fccd..4ef947929a 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -130,12 +130,13 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #ifndef DEBUG -#define M_QUOTE 0x8000000000ULL -#define M_PROTECT 0x4000000000ULL -#define M_MASK 0xffffffffffULL -#define M_CHAR 0x00ffffffffULL +#define M_QUOTE 0x40000000U +#define M_PROTECT 0x20000000U +#define M_MASK 0x70ffffffU +#define M_COLL_MASK 0x700000ffU +#define M_CHAR 0x0fffffffU -typedef uint_fast64_t Char; +typedef wint_t Char; #else From ce5aa098071304cfd3bd1bd535a7571089344b1a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Feb 2023 22:50:17 +0100 Subject: [PATCH 192/767] Cygwin: glob: implement collating symbol support Allow the [.<sym>.] expression This requires a string comparision rather than a character comparison. Introduce and use __wscollate_range_cmp. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 115 +++++++++++++++++-------- winsup/cygwin/local_includes/collate.h | 1 + winsup/cygwin/nlsfuncs.cc | 19 ++++ 3 files changed, 98 insertions(+), 37 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 4ef947929a..66681786aa 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -160,6 +160,9 @@ typedef char Char; #define M_SET META('[') #define M_NAMED META(':') #define M_EQUIV META('=') +#define M_COLL(_ccnt) META('.' | ((_ccnt) << 8)) +#define M_COLL_P(_c) (((_c) & M_COLL_MASK) == META('.')) +#define M_COLL_CNT(_c) (((_c) & ~M_COLL_MASK) >> 8) #define ismeta(c) (((c)&M_QUOTE) != 0) static int compare(const void *, const void *); @@ -528,41 +531,61 @@ glob0(const Char *pattern, glob_t *pglob, size_t *limit) *bufnext++ = M_SET; if (c == NOT) *bufnext++ = M_NOT; - c = *qpatnext; + c = *qpatnext++; do { wint_t wclass[64]; Char ctype; - ctype = check_classes_expr(qpatnext, wclass, + ctype = check_classes_expr(--qpatnext, wclass, 64); - if (ctype) { + ++qpatnext; + if (ctype == COLON) { wctype_t type; - - if (ctype == COLON) { - char cclass[64]; - - /* No worries, char classes are - ASCII-only anyway */ - wcitoascii (cclass, wclass); - if ((type = wctype (cclass))) { - *bufnext++ = M_NAMED; - *bufnext++ = CHAR (type); - } - } else if (ctype == EQUALS && - wclass[0] && !wclass[1]) { + char cclass[64]; + + /* No worries, char classes are + ASCII-only anyway */ + wcitoascii (cclass, wclass); + if ((type = wctype (cclass))) { + *bufnext++ = M_NAMED; + *bufnext++ = CHAR (type); + } + continue; + } + if (ctype == EQUALS) { + if (wclass[0] && !wclass[1]) { *bufnext++ = M_EQUIV; *bufnext++ = CHAR (wclass[0]); } - /* TODO: [. is ignored yet */ - qpatnext++; continue; } - *bufnext++ = CHAR(c); + if (ctype == DOT && + is_unicode_coll_elem (wclass)) { + *bufnext++ = + M_COLL (wcilen (wclass)); + wint_t *wcp = wclass; + while ((*bufnext++ = *wcp++)) + ; + --bufnext; /* drop NUL */ + } else + *bufnext++ = CHAR(c); if (*qpatnext == RANGE && (c = qpatnext[1]) != RBRACKET) { *bufnext++ = M_RNG; - *bufnext++ = CHAR(c); - qpatnext += 2; + + ctype = check_classes_expr(++qpatnext, + wclass, 64); + if (ctype == DOT && + is_unicode_coll_elem (wclass)) { + *bufnext++ = + M_COLL (wcilen (wclass)); + wint_t *wcp = wclass; + while ((*bufnext++ = *wcp++)) + ; + --bufnext; /* drop NUL */ + } else + *bufnext++ = CHAR(c); + ++qpatnext; } } while ((c = *qpatnext++) != RBRACKET); pglob->gl_flags |= GLOB_MAGCHAR; @@ -849,11 +872,12 @@ static int match(Char *name, Char *pat, Char *patend) { int ok, negate_range; - Char c, k; + Char *c, *k; + size_t k_len; while (pat < patend) { - c = *pat++; - switch (c & M_MASK) { + c = pat++; + switch (*c & M_MASK) { case M_ALL: if (pat == patend) return(1); @@ -868,36 +892,53 @@ match(Char *name, Char *pat, Char *patend) break; case M_SET: ok = 0; - if ((k = *name++) == EOS) + if (*(k = name) == EOS) return(0); + k_len = next_unicode_char (k); + name += k_len; if ((negate_range = ((*pat & M_MASK) == M_NOT)) != EOS) ++pat; - while (((c = *pat++) & M_MASK) != M_END) - if ((c & M_MASK) == M_NAMED) { - if (iswctype (k, *pat++)) + while ((*(c = pat++) & M_MASK) != M_END) { + size_t len1 = 1, len2 = 1; + + if ((*c & M_MASK) == M_NAMED) { + if (iswctype (*k, *pat++)) ok = 1; - } else if ((c & M_MASK) == M_EQUIV) { - if (is_unicode_equiv (k, *pat++)) + continue; + } + if ((*c & M_MASK) == M_EQUIV) { + if (is_unicode_equiv (*k, *pat++)) ok = 1; - } else if ((*pat & M_MASK) == M_RNG) { + continue; + } + if (M_COLL_P(*c)) { + len1 = M_COLL_CNT(*c); + ++c; + pat += len1; + } + if ((*pat & M_MASK) == M_RNG) { + if (M_COLL_P(pat[1])) + len2 = M_COLL_CNT(*++pat); #ifdef __CYGWIN__ if ((!__get_current_collate_locale ()->lcid) ? #else if (__collate_load_error ? #endif - CCHAR(c) <= CCHAR(k) && CCHAR(k) <= CCHAR(pat[1]) : - __wcollate_range_cmp(CCHAR(c), CCHAR(k)) <= 0 - && __wcollate_range_cmp(CCHAR(k), CCHAR(pat[1])) <= 0 + *c <= *k && *k <= pat[1] : + __wscollate_range_cmp(c, k, len1, k_len) <= 0 + && __wscollate_range_cmp(k, pat + 1, k_len, len2) <= 0 ) ok = 1; - pat += 2; - } else if (c == k) + pat += len2 + 1; + } else if (len1 == k_len && + wcincmp (c, k, len1) == 0) ok = 1; + } if (ok == negate_range) return(0); break; default: - if (Cchar(*name++) != Cchar(c)) + if (Cchar(*name++) != Cchar(*c)) return(0); break; } diff --git a/winsup/cygwin/local_includes/collate.h b/winsup/cygwin/local_includes/collate.h index 7b4c72dd58..498d5e1cd4 100644 --- a/winsup/cygwin/local_includes/collate.h +++ b/winsup/cygwin/local_includes/collate.h @@ -14,6 +14,7 @@ extern "C" { extern const int __collate_load_error; extern int __wcollate_range_cmp (wint_t, wint_t); +extern int __wscollate_range_cmp (wint_t *, wint_t *, size_t, size_t); int is_unicode_equiv (wint_t, wint_t); diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 20143f19d8..eb9948dd37 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1195,6 +1195,25 @@ __wcollate_range_cmp (wint_t c1, wint_t c2) return wcscoll (s1, s2); } +/* Not so much BSD. Used from glob.cc, fnmatch.c and regcomp.c. + + First arg is always from pattern space, second arg is the tested string. + len is the length of the pattern in the first arg. */ +extern "C" int +__wscollate_range_cmp (wint_t *c1, wint_t *c2, + size_t c1len, size_t c2len) +{ + wchar_t s1[c1len * 2 + 1] = { 0 }; /* # of chars if all are surrogates */ + wchar_t s2[c2len * 2 + 1] = { 0 }; + + wcintowcs (s1, c1, c1len); + wcintowcs (s2, c2, c2len); + return wcscoll_l (s1, s2, __get_current_locale ()); +} + +const size_t ce_size = sizeof collating_element / sizeof *collating_element; +const size_t ce_e_size = sizeof *collating_element; + /* Check if UTF-32 input character `test' is in the same equivalence class as UTF-32 character 'eqv'. Note that we only recognize input in Unicode normalization form C, that From 4ab778df242efdc364b9a42b225c071e0ecc3cb7 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Feb 2023 23:00:04 +0100 Subject: [PATCH 193/767] Cygwin: linux-locale-helpers: helper tools to generate locale data from Linux Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/linux-locale-helpers/README | 10 + .../fetch-lc_collate-elements-from-glibc | 61 +++++ .../fetch-lc_messages-from-linux.c | 169 +++++++++++++ .../fetch-lc_time_era-from-linux.c | 237 ++++++++++++++++++ 4 files changed, 477 insertions(+) create mode 100644 winsup/cygwin/linux-locale-helpers/README create mode 100755 winsup/cygwin/linux-locale-helpers/fetch-lc_collate-elements-from-glibc create mode 100644 winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c create mode 100644 winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c diff --git a/winsup/cygwin/linux-locale-helpers/README b/winsup/cygwin/linux-locale-helpers/README new file mode 100644 index 0000000000..2489416bc8 --- /dev/null +++ b/winsup/cygwin/linux-locale-helpers/README @@ -0,0 +1,10 @@ +These scripts and helper applications are used to create locale data +required for complete locale support, but either missing in Windows +or implemented in a non-POSIXy way. + +The script has to run from inside a glibc git clone. +The C tools can be built without any special options. + +All three tools generate the new locale headers (lc_collelem.h, +lc_era.h, lc_msg.h) in the current working directory. They can just +be copied to local_includes and commited without further changes. diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc_collate-elements-from-glibc b/winsup/cygwin/linux-locale-helpers/fetch-lc_collate-elements-from-glibc new file mode 100755 index 0000000000..a0ff0e62f1 --- /dev/null +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc_collate-elements-from-glibc @@ -0,0 +1,61 @@ +#!/bin/bash +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Assuming +# +# git clone https://sourceware.org/git/glibc.git +# cd glibc +# +topdir="$(git rev-parse --show-toplevel)" +if [ -z "${topdir}" ] +then + echo "Not a git dir? Exit." + exit 1 +fi +cd "${topdir}" +glibc_conf="$(grep 'GNU C Library' configure.ac)" +if [ -z "${glibc_conf}" ] +then + echo "No GLibc configure.ac? Wrong git repo? Exit." + exit 1 +fi +if [ ! -f version.h ] +then + echo "No version.h file? Exit." + exit 1 +fi +version=$(sed -n -e 's/#define VERSION "\(.*\)"/\1/p' version.h) +if [ -z "${version}" ] +then + echo "Malformed version.h file. Exit." + exit 1 +fi +if [ ! -d localedata/locales ] +then + echo "No localedata/locales subdir. Broken repo? Exit." + exit 1 +fi +( + cd localedata/locales + cat <<-EOF + /* This struct of collating elements data has been generated by fetching + locale data from a GLibc ${version} source dir on $(date +%F). */ + struct collating_element_t + { + const char32_t *element; + const char *locale; + }; + + collating_element_t collating_element[] = + { + EOF + grep -r collating-element * \ + | sed -e 's#^\([^:]*\):collating-element[ \t]*\([^ \t]*\)[ \t]*from[ \t]*"\(.*\)".*$# { U"\3", "\1" }, /* \2 */# + s/<U\([[:xdigit:]]\{4\}\)>/\\U0000\1/g + s/<U\([[:xdigit:]]\{5\}\)>/\\U000\1/g + s/<U\([[:xdigit:]]\{6\}\)>/\\U00\1/g + s/iso14651_t1_common//g' \ + | sort + echo "};" +) > lc_collelem.h diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c b/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c new file mode 100644 index 0000000000..03755c6aa7 --- /dev/null +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c @@ -0,0 +1,169 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +#define _GNU_SOURCE +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dirent.h> +#include <time.h> +#include <locale.h> +#include <langinfo.h> +#include <wchar.h> + +struct lc_msg_t { + char locale[64]; + char yesstr[256]; + char nostr[256]; + char yesexpr[256]; + char noexpr[256]; +} msg[512]; +int mcnt = 0; + +char * +xfrm_utf (const wchar_t *ws) +{ + static char xfrm[256]; + char *p = xfrm; + int wconst = 0; + + while (*ws) + { + if (*ws < 0x80 && (!wconst || !wcschr (L"aAbBcCdDeEfF", *ws))) + { + *p++ = *ws; + wconst = 0; + } + else + { + p += sprintf (p, "\\x%04lx", *ws); + wconst = 1; + } + ++ws; + } + *p = '\0'; + return xfrm; +} + +void +read_locale_messages (char *name) +{ + char *nl; + char locale[64]; + wchar_t nlbuf[256]; + + strcpy (locale, name); + nl = strchr (locale, '@'); + if (nl) + stpcpy (stpcpy (nl, ".utf8"), strchr (name, '@')); + else + strcat (locale, ".utf8"); + printf ("%s\n", locale); + setlocale (LC_ALL, locale); + + strcpy (msg[mcnt].locale, name); + nl = nl_langinfo (YESSTR); + mbstowcs (nlbuf, nl, 256); + strcpy (msg[mcnt].yesstr, xfrm_utf (nlbuf)); + nl = nl_langinfo (NOSTR); + mbstowcs (nlbuf, nl, 256); + strcpy (msg[mcnt].nostr, xfrm_utf (nlbuf)); + nl = nl_langinfo (YESEXPR); + mbstowcs (nlbuf, nl, 256); + strcpy (msg[mcnt].yesexpr, xfrm_utf (nlbuf)); + nl = nl_langinfo (NOEXPR); + mbstowcs (nlbuf, nl, 256); + strcpy (msg[mcnt].noexpr, xfrm_utf (nlbuf)); + /* Serbian locale rename weirdness */ + if (!strncmp (msg[mcnt].locale, "sr_RS", 5)) + { + /* Create additional equivalent entry for the old locale sr_SP. */ + ++mcnt; + memcpy (&msg[mcnt], &msg[mcnt - 1], sizeof msg[mcnt]); + msg[mcnt].locale[3] = 'S'; + msg[mcnt].locale[4] = 'P'; + /* Create additional equivalent entry for sr_ME@latin missing in Linux. */ + if (!strcmp (msg[mcnt].locale, "sr_SP@latin")) + { + ++mcnt; + memcpy (&msg[mcnt], &msg[mcnt - 1], sizeof msg[mcnt]); + msg[mcnt].locale[3] = 'M'; + msg[mcnt].locale[4] = 'E'; + } + } + ++mcnt; +} + +int +locale_cmp (const void *a, const void *b) +{ + struct lc_msg_t *la = (struct lc_msg_t *) a; + struct lc_msg_t *lb = (struct lc_msg_t *) b; + return strcmp (la->locale, lb->locale); +} + +void +create_list () +{ + FILE *fp = fopen ("lc_msg.h", "w"); + FILE *pp = popen ("rpm -q glibc", "r"); + char vers[64]; + int i; + struct tm *tm; + time_t tim; + char tstr[64]; + + fgets (vers, 64, pp); + pclose (pp); + if (strchr (vers, '\n')) + *strchr (vers, '\n') = '\0'; + tim = time (NULL); + tm = gmtime (&tim); + strftime (tstr, 64, "%F", tm); + fprintf (fp, +"/* This struct of LC_MESSAGES data has been generated by fetching locale\n" +" data from a Linux system using %s on %s. */\n" +"\n" +"struct lc_msg_t\n" +"{\n" +" const char *locale;\n" +" const wchar_t *yesexpr;\n" +" const wchar_t *noexpr;\n" +" const wchar_t *yesstr;\n" +" const wchar_t *nostr;\n" +"};\n" +"\n" +"static struct lc_msg_t lc_msg[] =\n" +"{\n", vers, tstr); + + qsort (msg, mcnt, sizeof (struct lc_msg_t), locale_cmp); + for (i = 0; i < mcnt; ++i) + fprintf (fp, " { \"%s\", L\"%s\", L\"%s\", L\"%s\", L\"%s\" },\n", + msg[i].locale, + msg[i].yesexpr, msg[i].noexpr, + msg[i].yesstr, msg[i].nostr); + fputs ("};\n", fp); + fclose (fp); +} + +int +main () +{ + char name[32], *c; + FILE *pp; + + pp = popen ("locale -a | grep -a '_' | fgrep -v .", "r"); + if (!pp) + { + perror ("popen failed"); + return 1; + } + while (fgets (name, 32, pp)) + { + c = strchr (name, '\n'); + if (c) + *c = '\0'; + read_locale_messages (name); + } + pclose (pp); + create_list (); + return 0; +} diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c b/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c new file mode 100644 index 0000000000..1ee75ca6ba --- /dev/null +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c @@ -0,0 +1,237 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +#define _GNU_SOURCE +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dirent.h> +#include <time.h> +#include <locale.h> +#include <langinfo.h> +#include <wchar.h> + +struct lc_era_t { + char locale[64]; + char *date_fmt; + char *d_fmt; + char *d_t_fmt; + char *t_fmt; + char *t_fmt_ampm; + char *era; + char *era_d_fmt; + char *era_d_t_fmt; + char *era_t_fmt; + char *alt_digits; +} era[512]; +int ecnt = 0; + +char * +xfrm_utf (const wchar_t *ws, int slist) +{ + static char xfrm[4096]; + char *p = xfrm; + int wconst = 0; + + while (*ws) + { + if (*ws < 0x80 && (!wconst || !wcschr (L"aAbBcCdDeEfF", *ws))) + { + *p++ = *ws; + wconst = 0; + } + else + { + p += sprintf (p, "\\x%04lx", *ws); + wconst = 1; + } + ++ws; + if (!*ws && slist) + { + ++ws; + if (*ws) + p += sprintf (p, ";"); + } + } + *p = '\0'; + return xfrm; +} + +char * +xfrm_slist (const char *slist) +{ + static wchar_t wxfrm[4096], *wp; + char *xfrm, *p, *ret; + + wp = wxfrm; + while (*slist) + { + size_t len = mbstowcs (wp, slist, wxfrm + 4096 - wp) + 1; + slist += strlen (slist) + 1; + wp += len; + } + *wp++ = L'\0'; + xfrm = xfrm_utf (wxfrm, 1); + p = xfrm; + while (*p) + p += strlen (p) + 1; + ++p; + ret = (char *) malloc (p - xfrm); + memcpy (ret, xfrm, p - xfrm); + return ret; +} + +void +read_locale_era (char *name) +{ + char *nl, *nlera, *altd; + char locale[64]; + wchar_t nlbuf[256]; + + strcpy (locale, name); + nl = strchr (locale, '@'); + if (nl) + stpcpy (stpcpy (nl, ".utf8"), strchr (name, '@')); + else + strcat (locale, ".utf8"); + printf ("%s\n", locale); + setlocale (LC_ALL, locale); + + nlera = nl_langinfo (ERA); + altd = nl_langinfo (ALT_DIGITS); + + if (!*nlera && !*altd) + return; + + strcpy (era[ecnt].locale, name); + nl = nl_langinfo (_DATE_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].date_fmt = strdup (xfrm_utf (nlbuf, 0)); + nl = nl_langinfo (D_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].d_fmt = strdup (xfrm_utf (nlbuf, 0)); + nl = nl_langinfo (D_T_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].d_t_fmt = strdup (xfrm_utf (nlbuf, 0)); + nl = nl_langinfo (T_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].t_fmt = strdup (xfrm_utf (nlbuf, 0)); + nl = nl_langinfo (T_FMT_AMPM); + mbstowcs (nlbuf, nl, 256); + era[ecnt].t_fmt_ampm = strdup (xfrm_utf (nlbuf, 0)); + + era[ecnt].era = *nlera ? xfrm_slist (nlera) : "\0"; + era[ecnt].alt_digits = *altd ? xfrm_slist (altd) : "\0"; + + nl = nl_langinfo (ERA_D_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].era_d_fmt = strdup (xfrm_utf (nlbuf, 0)); + nl = nl_langinfo (ERA_D_T_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].era_d_t_fmt = strdup (xfrm_utf (nlbuf, 0)); + nl = nl_langinfo (ERA_T_FMT); + mbstowcs (nlbuf, nl, 256); + era[ecnt].era_t_fmt = strdup (xfrm_utf (nlbuf, 0)); + /* Serbian locale rename weirdness */ + if (!strncmp (era[ecnt].locale, "sr_RS", 5)) + { + /* Create additional equivalent entries for the old locale sr_SP. */ + ++ecnt; + memcpy (&era[ecnt], &era[ecnt - 1], sizeof era[ecnt]); + era[ecnt].locale[3] = 'S'; + era[ecnt].locale[4] = 'P'; + /* Create additional equivalent entry for sr_ME@latin missing in Linux. */ + if (!strcmp (era[ecnt].locale, "sr_SP@latin")) + { + ++ecnt; + memcpy (&era[ecnt], &era[ecnt - 1], sizeof era[ecnt]); + era[ecnt].locale[3] = 'M'; + era[ecnt].locale[4] = 'E'; + } + } + ++ecnt; +} + +int +locale_cmp (const void *a, const void *b) +{ + struct lc_era_t *la = (struct lc_era_t *) a; + struct lc_era_t *lb = (struct lc_era_t *) b; + return strcmp (la->locale, lb->locale); +} + +void +create_list () +{ + FILE *fp = fopen ("lc_era.h", "w"); + FILE *pp = popen ("rpm -q glibc", "r"); + char vers[64]; + int i; + struct tm *tm; + time_t tim; + char tstr[64]; + + fgets (vers, 64, pp); + pclose (pp); + if (strchr (vers, '\n')) + *strchr (vers, '\n') = '\0'; + tim = time (NULL); + tm = gmtime (&tim); + strftime (tstr, 64, "%F", tm); + fprintf (fp, +"/* This struct of LC_TIME ERA data has been generated by fetching locale\n" +" data from a Linux system using %s on %s. */\n" +"\n" +"struct lc_era_t\n" +"{\n" +" const char *locale;\n" +" const wchar_t *date_fmt;\n" +" const wchar_t *d_fmt;\n" +" const wchar_t *d_t_fmt;\n" +" const wchar_t *t_fmt;\n" +" const wchar_t *t_fmt_ampm;\n" +" const wchar_t *era;\n" +" const wchar_t *era_d_fmt;\n" +" const wchar_t *era_d_t_fmt;\n" +" const wchar_t *era_t_fmt;\n" +" const wchar_t *alt_digits;\n" +"};\n" +"\n" +"static struct lc_era_t lc_era[] =\n" +"{\n", vers, tstr); + + qsort (era, ecnt, sizeof (struct lc_era_t), locale_cmp); + for (i = 0; i < ecnt; ++i) + fprintf (fp, " { \"%s\", L\"%s\", L\"%s\", L\"%s\", L\"%s\", L\"%s\", " + "L\"%s\", L\"%s\", L\"%s\", L\"%s\", L\"%s\" },\n", + era[i].locale, era[i].date_fmt, + era[i].d_fmt, era[i].d_t_fmt, + era[i].t_fmt, era[i].t_fmt_ampm, + era[i].era, era[i].era_d_fmt, + era[i].era_d_t_fmt, era[i].era_t_fmt, + era[i].alt_digits); + fputs ("};\n", fp); + fclose (fp); +} + +int +main () +{ + char name[32], *c; + FILE *pp; + + pp = popen ("locale -a | grep -a '_' | fgrep -v .", "r"); + if (!pp) + { + perror ("popen failed"); + return 1; + } + while (fgets (name, 32, pp)) + { + c = strchr (name, '\n'); + if (c) + *c = '\0'; + read_locale_era (name); + } + pclose (pp); + create_list (); + return 0; +} From 4349a1e4db294808b11a1bb50594c5ea1072d000 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 22 Feb 2023 10:00:10 +0100 Subject: [PATCH 194/767] Cygwin: glob: fix includes Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 66681786aa..8bcdd61b20 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -90,17 +90,11 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #include <string.h> #include <unistd.h> #include <wchar.h> +#include <wctype.h> #include "collate.h" #ifdef __CYGWIN__ -#include <wctype.h> -#include "path.h" -#include "fhandler.h" -#include "dtable.h" -#include "cygheap.h" -#include "cygwin/version.h" - #define CCHAR(c) (ignore_case_with_glob ? towlower (CHAR (c)) : CHAR (c)) #define Cchar(c) (ignore_case_with_glob ? towlower (c) : (c)) #endif From f3f20038c480e43ae264b760f4d8b14b618ca973 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 22 Feb 2023 10:03:03 +0100 Subject: [PATCH 195/767] Cygwin: glob: perform correct utf-32 -> multibyte conversion g_Ctoc, converting the UTF-32 filenames to multibyte, still used UTF-16 to multibyte conversion. Introduce a wirtomb helper and fix that. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 2 +- winsup/cygwin/local_includes/wchar.h | 4 ++++ winsup/cygwin/strfuncs.cc | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 8bcdd61b20..2f86e46985 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -1024,7 +1024,7 @@ g_Ctoc(const Char *str, char *buf, size_t len) memset(&mbs, 0, sizeof(mbs)); while (len >= (size_t) MB_CUR_MAX) { - clen = wcrtomb(buf, *str, &mbs); + clen = wirtomb(buf, *str, &mbs); if (clen == (size_t)-1) return (1); if (*str == L'\0') diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index 6f2a4ad10f..3907732a26 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -44,6 +44,10 @@ extern wctomb_f __utf8_wctomb; for surrogate pairs, plus a wchar_t NUL. */ void wcintowcs (wchar_t *, wint_t *, size_t); +/* replacement function for wcrtomb, converting a UTF-32 char to a + multibyte string. */ +size_t wirtomb (char *, wint_t, mbstate_t *); + /* replacement function for mbrtowc, returning a wint_t representing a UTF-32 value. Defined in strfuncs.cc */ extern size_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index e343a2fcc6..80e3eb0ad6 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -129,6 +129,25 @@ wcintowcs (wchar_t *dest, wint_t *src, size_t len) *dest = '\0'; } +/* replacement function for wcrtomb, converting a UTF-32 char to a + multibyte string. */ +extern "C" size_t +wirtomb (char *s, wint_t wi, mbstate_t *ps) +{ + wchar_t wc[3] = { (wchar_t) wi, '\0', '\0' }; + const wchar_t *wcp = wc; + size_t nwc = 1; + + if (wi >= 0x10000) + { + wi -= 0x10000; + wc[0] = (wi >> 10) + 0xd800; + wc[1] = (wi & 0x3ff) + 0xdc00; + nwc = 2; + } + return wcsnrtombs (s, &wcp, nwc, SIZE_MAX, ps); +} + /* replacement function for mbrtowc, returning a wint_t representing a UTF-32 value. */ extern "C" size_t From a51147467e6cf58618433286f93d17043e00b0fc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 22 Feb 2023 10:47:54 +0100 Subject: [PATCH 196/767] Cygwin: glob: perform ignore_case_with_glob on input Rather than converting single chars on the fly to lowercase in case ignore_case_with_glob is set, perform the conversion on the entire input (pattern and filenames). --- winsup/cygwin/glob.cc | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 2f86e46985..64c3507d89 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -95,8 +95,9 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #include "collate.h" #ifdef __CYGWIN__ -#define CCHAR(c) (ignore_case_with_glob ? towlower (CHAR (c)) : CHAR (c)) #define Cchar(c) (ignore_case_with_glob ? towlower (c) : (c)) +#else +#define Cchar(c) (c) #endif #undef MAXPATHLEN @@ -122,6 +123,7 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #define SLASH '/' #define COMMA ',' +#undef DEBUG /* never define */ #ifndef DEBUG #define M_QUOTE 0x40000000U @@ -252,7 +254,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int return (GLOB_NOMATCH); else if (clen == 0) break; - *bufnext++ = wc; + *bufnext++ = Cchar(wc); patnext += clen; } } else { @@ -272,7 +274,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int return (GLOB_NOMATCH); else if (clen == 0) break; - *bufnext++ = wc | prot; + *bufnext++ = Cchar(wc) | prot; patnext += clen; } } @@ -779,6 +781,19 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last, break; sc += clen; } +#ifdef __CYGWIN__ + if (ignore_case_with_glob) { + wint_t lower_path[MAXPATHLEN]; + wint_t *lp = lower_path, *sp = pathend; + + while ((*lp++ = towlower(*sp++))) + ; + if (!match(lower_path, pattern, restpattern)) { + *pathend = EOS; + continue; + } + } else +#endif if (!match(pathend, pattern, restpattern)) { *pathend = EOS; continue; @@ -932,7 +947,7 @@ match(Char *name, Char *pat, Char *patend) return(0); break; default: - if (Cchar(*name++) != Cchar(*c)) + if (*name++ != *c) return(0); break; } From 2229f42400b992669a99cba9b42b600b0ba01b7f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 22 Feb 2023 12:20:32 +0100 Subject: [PATCH 197/767] Cygwin: __wscollate_range_cmp: workaround wcscoll's case-insensitivity Most locales using latin characters ignore case while sorting. This is what wcscoll does (correctly so). However, there's an internal order of collating sequences compared to the base character, which is case-sensitive, at least in GLibc. There's no way to express this in Windows, because CompareString and LCMapString *always* use case-insensitivity in those locales, even if none of the *IGNORECASE sorting flags are used. We want to follow glibc's behaviour more closely, so we add an extra check for the case and make sure upper and lower cased letters don't comapre as identical. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index eb9948dd37..543f20e443 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1206,6 +1206,12 @@ __wscollate_range_cmp (wint_t *c1, wint_t *c2, wchar_t s1[c1len * 2 + 1] = { 0 }; /* # of chars if all are surrogates */ wchar_t s2[c2len * 2 + 1] = { 0 }; + /* wcscoll() ignores case in many locales. but we don't want that + for filenames... */ + if ((iswupper (*c1) && !iswupper (*c2)) + || (iswlower (*c1) && !iswlower (*c2))) + return *c1 - *c2; + wcintowcs (s1, c1, c1len); wcintowcs (s2, c2, c2len); return wcscoll_l (s1, s2, __get_current_locale ()); From 97d483c2f81c0865bead701f4d2824a21fae4938 Mon Sep 17 00:00:00 2001 From: Hau Hsu <hau.hsu@sifive.com> Date: Wed, 22 Feb 2023 09:59:07 +0800 Subject: [PATCH 198/767] RISC-V: Use the new libm code if possible Set __OBSOLETE_MATH_DEFAULT to 0 if 'd' extension is supported (i.e. __riscv_flen == 64). Base on the comment for __OBSOLETE_MATH_DEFAULT: > ... it assumes that the toolchain has ISO C99 support (hexfloat > literals, standard fenv semantics), the target has IEEE-754 conforming > binary32 float and binary64 double (not mixed endian) representation, > standard SNaN representation, double and single precision arithmetics > has similar latency and it has no legacy SVID matherr support, only > POSIX errno and fenv exception based error handling. Signed-off-by: Hau Hsu <hau.hsu@sifive.com> --- newlib/libc/include/machine/ieeefp.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h index 9bb8af02f4..a29557a6d0 100644 --- a/newlib/libc/include/machine/ieeefp.h +++ b/newlib/libc/include/machine/ieeefp.h @@ -221,6 +221,11 @@ #ifdef __riscv_flen # define _SUPPORTS_ERREXCEPT #endif +#if __riscv_flen == 64 +# define __OBSOLETE_MATH_DEFAULT 0 +#else +# define __OBSOLETE_MATH_DEFAULT 1 +#endif #endif #ifdef __i960__ From 17ac400c11bab30ac2c0bef12cbf7788f0b6f954 Mon Sep 17 00:00:00 2001 From: Jeff Johnston <jjohnstn@redhat.com> Date: Thu, 9 Feb 2023 16:59:31 -0500 Subject: [PATCH 199/767] Fix libgloss/newlib build to conditionally use top include dir - conditionally use -idirafter option for arm --- libgloss/Makefile.am | 4 ++++ libgloss/Makefile.in | 3 ++- libgloss/config/arm.mh | 34 ++++++++++++++++++++++++++++++++++ libgloss/config/default.mh | 2 +- libgloss/configure | 16 ++++++++++++++++ libgloss/configure.ac | 4 ++++ newlib/Makefile.am | 4 ++++ newlib/Makefile.in | 3 ++- 8 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 libgloss/config/arm.mh diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 4309cd3a4b..d4b7d40772 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -24,7 +24,11 @@ includetool_DATA = includesystooldir = $(tooldir)/include/sys includesystool_DATA = +if NEED_TOP_INCLUDE_DIR AM_CPPFLAGS = -idirafter $(srcroot)/include +else +AM_CPPFLAGS = +endif # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index a117577ea8..187d0edb00 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -807,7 +807,8 @@ includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) -AM_CPPFLAGS = -idirafter $(srcroot)/include +@NEED_TOP_INCLUDE_DIR_FALSE@AM_CPPFLAGS = +@NEED_TOP_INCLUDE_DIR_TRUE@AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). diff --git a/libgloss/config/arm.mh b/libgloss/config/arm.mh new file mode 100644 index 0000000000..81f0920f97 --- /dev/null +++ b/libgloss/config/arm.mh @@ -0,0 +1,34 @@ +NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` +NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` + +INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include +# Note that when building the library, ${MULTILIB} is not the way multilib +# options are passed; they're passed in $(CFLAGS). +CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} +LDFLAGS_FOR_TARGET = ${MULTILIB} ${NEWLIB_LDFLAGS} +AR_FLAGS = rc + +.c.o: + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< + +.C.o: + $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< +.s.o: + $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + +# +# GCC knows to run the preprocessor on .S files before it assembles them. +# +.S.o: + $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< + +# +# this is a bogus target that'll produce an assembler from the +# C source with the right compiler options. this is so we can +# track down code generation or debug symbol bugs. +# +.c.s: + $(CC) $(CFLAGS_FOR_TARGET) -S $(INCLUDES) $(CFLAGS) $< + +# We don't build docs in subdirs, so stub out the rules. +.PHONY: doc docs dvi html install-html info install-info clean-info pdf install-pdf diff --git a/libgloss/config/default.mh b/libgloss/config/default.mh index 81f0920f97..4e7f106f93 100644 --- a/libgloss/config/default.mh +++ b/libgloss/config/default.mh @@ -1,7 +1,7 @@ NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` -INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include +INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. # Note that when building the library, ${MULTILIB} is not the way multilib # options are passed; they're passed in $(CFLAGS). CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} diff --git a/libgloss/configure b/libgloss/configure index 28754b6d5a..c076104117 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -630,6 +630,8 @@ CPPFLAGS LDFLAGS CFLAGS CC +NEED_TOP_INCLUDE_DIR_FALSE +NEED_TOP_INCLUDE_DIR_TRUE CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE CONFIG_RISCV_FALSE @@ -2949,6 +2951,7 @@ case "${target}" in ;; arm*-*-elf | arm*-*-coff | arm*-*-*) config_arm=true + host_makefile_frag=${srcdir}/config/arm.mh ;; spu-*-elf) ac_config_files="$ac_config_files spu/Makefile" @@ -3081,6 +3084,15 @@ fi + if test x$config_arm = xtrue; then + NEED_TOP_INCLUDE_DIR_TRUE= + NEED_TOP_INCLUDE_DIR_FALSE='#' +else + NEED_TOP_INCLUDE_DIR_TRUE='#' + NEED_TOP_INCLUDE_DIR_FALSE= +fi + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5347,6 +5359,10 @@ if test -z "${CONFIG_WINCE_TRUE}" && test -z "${CONFIG_WINCE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_WINCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${NEED_TOP_INCLUDE_DIR_TRUE}" && test -z "${NEED_TOP_INCLUDE_DIR_FALSE}"; then + as_fn_error $? "conditional \"NEED_TOP_INCLUDE_DIR\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 5fb26845c2..a332193ce0 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -214,6 +214,7 @@ case "${target}" in ;; arm*-*-elf | arm*-*-coff | arm*-*-*) config_arm=true + host_makefile_frag=${srcdir}/config/arm.mh ;; spu-*-elf) AC_CONFIG_FILES([spu/Makefile]) @@ -252,6 +253,9 @@ m4_foreach_w([SUBDIR], [ AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) +dnl arm platforms have a special header file found in the main include directory +AM_CONDITIONAL([NEED_TOP_INCLUDE_DIR], [[test x$config_arm] = xtrue]) + dnl For now, don't bother configuring testsuite dnl dnl if test "${config_testsuite}" = "true"; diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 3bebf27ebd..a188845d6c 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -70,7 +70,11 @@ toollibdir = $(tooldir)/lib$(MULTISUBDIR) # These are useful for standalone object files like crt0.o. AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(<F))) AM_CCASFLAGS = $(AM_CCASFLAGS_$(subst /,_,$(@D))) $(AM_CCASFLAGS_$(subst /,_,$(@D)_$(<F))) +if HAVE_LIBC_MACHINE_ARM AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) -idirafter $(srcroot)/include +else +AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) +endif toollib_LIBRARIES = libm.a \ libc.a diff --git a/newlib/Makefile.in b/newlib/Makefile.in index bc967bd707..b1685772d6 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -3848,7 +3848,8 @@ toollibdir = $(tooldir)/lib$(MULTISUBDIR) # These are useful for standalone object files like crt0.o. AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(<F))) AM_CCASFLAGS = $(AM_CCASFLAGS_$(subst /,_,$(@D))) $(AM_CCASFLAGS_$(subst /,_,$(@D)_$(<F))) -AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) -idirafter $(srcroot)/include +@HAVE_LIBC_MACHINE_ARM_FALSE@AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) +@HAVE_LIBC_MACHINE_ARM_TRUE@AM_CPPFLAGS = $(NEWLIB_CFLAGS) $(TARGET_CFLAGS) $(AM_CPPFLAGS_$(subst /,_,$(@D))) $(AM_CPPFLAGS_$(subst /,_,$(@D)_$(<F))) -idirafter $(srcroot)/include toollib_LIBRARIES = libm.a libc.a $(am__append_72) @HAVE_MULTISUBDIR_TRUE@BUILD_MULTISUBDIR = $(builddir)$(MULTISUBDIR) toollib_DATA = $(CRT0) $(CRT1) From ac405ab9bc07789d5576fd823cbaa7eef472b11b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 23 Feb 2023 00:22:56 +0100 Subject: [PATCH 200/767] Cygwin: locale(1): drop using LCID, use Windows locale names LCIDs are deprecated since Windows Vista. Worse, lots of new locales have been added in the meantime which have no LCID attached. They are only available by locale name. As first step, rearrange the locale(1) tool to use Windows locale names, rather than LCIDs, so we can now enumerate *all* locales available in more recent Windows versions. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/locale.cc | 320 ++++++++++++++++++++++++----------------- 1 file changed, 190 insertions(+), 130 deletions(-) diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 3f7e5dcca6..1d90550f34 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -30,6 +30,7 @@ #include <getopt.h> #include <string.h> #include <wchar.h> +#include <wctype.h> #include <locale.h> #include <langinfo.h> #include <limits.h> @@ -107,17 +108,42 @@ struct option longopts[] = { const char *opts = "acfhikmnsuUvV"; int -getlocale (LCID lcid, char *name) +getlocale (PWCHAR loc_name, wchar_t *iso639, wchar_t *iso3166, + wchar_t *iso15924 = NULL) { - char iso639[10]; - char iso3166[10]; + wchar_t *cp; - iso3166[0] = '\0'; - if (!GetLocaleInfo (lcid, LOCALE_SISO639LANGNAME, iso639, 10)) + /* Skip language-only locales, e. g. "en" */ + if (!(cp = wcschr (loc_name, L'-'))) return 0; - GetLocaleInfo (lcid, LOCALE_SISO3166CTRYNAME, iso3166, 10); - sprintf (name, "%s%s%s", iso639, lcid > 0x3ff ? "_" : "", - lcid > 0x3ff ? iso3166 : ""); + ++cp; + /* Script inside? Scripts are Upper/Lower, e. g. "Latn" */ + if (iswupper (cp[0]) && iswlower (cp[1])) + { + wchar_t *cp2; + + /* Skip language-Script locales, missing country */ + if (!(cp2 = wcschr (cp + 2, L'-'))) + return 0; + /* Otherwise, store in iso15924 */ + if (iso15924) + wcpcpy (wcpncpy (iso15924, cp, cp2 - cp), L";"); + } + cp = wcsrchr (loc_name, L'-'); + if (cp) + { + /* Skip numeric iso3166 country name. */ + if (iswdigit (cp[1])) + return 0; + /* Special case postfix after iso3166 country name: ca-ES-valencia. + Use the postfix thingy as script so it will become a @modifier */ + if (iswlower (cp[1])) + wcpcpy (iso15924, cp + 1); + } + + if (!GetLocaleInfoEx (loc_name, LOCALE_SISO639LANGNAME, iso639, 10)) + return 0; + GetLocaleInfoEx (loc_name, LOCALE_SISO3166CTRYNAME, iso3166, 10); return 1; } @@ -132,14 +158,6 @@ loc_t *locale; size_t loc_max; size_t loc_num; -void -print_codeset (const char *codeset) -{ - for (; *codeset; ++codeset) - if (*codeset != '-') - putc (tolower ((int)(unsigned char) *codeset), stdout); -} - void print_locale_with_codeset (int verbose, loc_t *locale, bool utf8, const char *modifier) @@ -158,7 +176,7 @@ print_locale_with_codeset (int verbose, loc_t *locale, bool utf8, sysroot = (const char *) cygwin_create_path (CCP_WIN_W_TO_POSIX, sysbuf); if (!sysroot) - sysroot = "kernel32.dll"; + sysroot = "kernel32.dll"; } snprintf (locname, 32, "%s%s%s%s", locale->name, utf8 ? ".utf8" : "", modifier ? "@" : "", modifier ?: ""); @@ -187,7 +205,7 @@ print_locale (int verbose, loc_t *locale) { if (!modifier) print_locale_with_codeset (verbose, locale, true, NULL); - else if (!strcmp (modifier, "@cjknarrow")) + else if (strcmp (modifier, "@euro")) { *modifier++ = '\0'; print_locale_with_codeset (verbose, locale, true, modifier); @@ -213,7 +231,7 @@ add_locale (const char *name, const wchar_t *language, const wchar_t *territory, { loc_t *tmp = (loc_t *) realloc (locale, (loc_max + 32) * sizeof (loc_t)); if (!tmp) - { + { fprintf (stderr, "Out of memory!\n"); exit (1); } @@ -266,110 +284,147 @@ add_locale_alias_locales () c = strchr (replace, '.'); if (c) *c = '\0'; + /* Ignore "ja_JP" and "ko_KR" locales from here, they are in the Windows + DB anyway. */ + if (!strcmp (alias, "ja_JP") || !strcmp (alias, "ko_KR")) + continue; search.name = replace; loc = (loc_t *) bsearch (&search, locale, orig_loc_num, sizeof (loc_t), compare_locales); + add_locale (alias, loc ? loc->language : L"", loc ? loc->territory : L"", true); } fclose (fp); } -void -print_all_locales (int verbose) +BOOL +print_all_locales_proc (LPWSTR loc_name, DWORD info, LPARAM param) { - LCID lcid = 0; - char name[32]; + wchar_t iso639[32] = { 0 }; + wchar_t iso3166[32] = { 0 }; + wchar_t iso15924[32] = { 0 }; DWORD cp; - unsigned lang, sublang; +#if 0 + struct { + wchar_t language[256]; + wchar_t country[256]; + char loc[32]; + } loc_list[32]; + int lcnt = 0; +#endif - add_locale ("C", L"C", L"POSIX"); - add_locale ("POSIX", L"C", L"POSIX", true); - for (lang = 1; lang <= 0xff; ++lang) + if (getlocale (loc_name, iso639, iso3166, iso15924)) { - struct { - wchar_t language[256]; - wchar_t country[256]; - char loc[32]; - } loc_list[32]; - int lcnt = 0; - - for (sublang = 1; sublang <= 0x3f; ++sublang) + char *c, posix_loc[32]; + wchar_t language[256]; + wchar_t country[256]; + wchar_t currency[9]; + + c = posix_loc + snprintf (posix_loc, sizeof posix_loc, "%ls_%ls", + iso639, iso3166); + /* Inuktitut: equivalent @latin due to lack of info on Linux */ + if (!wcscmp (iso639, L"iu")) { - lcid = (sublang << 10) | lang; - if (getlocale (lcid, name)) + if (wcscmp (iso15924, L"Latn;")) + return TRUE; + } + /* Javanese: only use @latin locale. */ + else if (!wcscmp (iso639, L"jv")) + { + if (wcscmp (iso15924, L"Latn;")) + return TRUE; + } + /* Mongolian: only use @mongolian locale. */ + else if (!wcscmp (iso639, L"mn")) + { + if (wcscmp (iso15924, L"Mong;")) + return TRUE; + } + /* Serbian: Windows default is Latin, Linux default is Cyrillic. + We want the Linux default and attach @latin otherwise */ + else if (!wcscmp (iso639, L"sr") && !wcscmp (iso15924, L"Latn;")) + stpcpy (c, "@latin"); + /* Tamazight: no modifier, iso639 is "ber" on Linux. + "zgh-Tfng-MA" is equivalent to "ber_MA". */ + else if (!wcscmp (iso639, L"zgh")) + snprintf (posix_loc, sizeof posix_loc, "ber_%.27ls", iso3166); + /* Tamazight: "tzm-Latn-DZ" is equivalent to "ber_DZ", + skip everything else. */ + else if (!wcscmp (iso639, L"tzm")) + { + if (!wcscmp (iso3166, L"DZ") && !wcscmp (iso15924, L"Latn;")) + snprintf (posix_loc, sizeof posix_loc, "ber_%.27ls", iso3166); + else + return TRUE; + } + /* In all other cases, we check if the script from the Windows + locale is the default locale in that language. If not, we + add it as modifier if possible, or skip it */ + else if (iso15924[0]) + { + wchar_t scriptless_win_locale[32]; + wchar_t default_iso15924[32]; + + wcpcpy (wcpcpy (wcpcpy (scriptless_win_locale, iso639), L"_"), + iso3166); + if ((GetLocaleInfoEx (scriptless_win_locale, LOCALE_SSCRIPTS, + default_iso15924, 32) + || GetLocaleInfoEx (iso639, LOCALE_SSCRIPTS, + default_iso15924, 32)) + && !wcsstr (default_iso15924, iso15924)) { - wchar_t language[256]; - wchar_t country[256]; - int i; - char *c, loc[32]; - wchar_t wbuf[9]; - - /* Go figure. Even the English name of a language or - locale might contain native characters. */ - GetLocaleInfoW (lcid, LOCALE_SENGLANGUAGE, language, 256); - GetLocaleInfoW (lcid, LOCALE_SENGCOUNTRY, country, 256); - /* Avoid dups */ - for (i = 0; i < lcnt; ++ i) - if (!wcscmp (loc_list[i].language, language) - && !wcscmp (loc_list[i].country, country)) - break; - if (i < lcnt) - continue; - if (lcnt < 32) - { - wcscpy (loc_list[lcnt].language, language); - wcscpy (loc_list[lcnt].country, country); - } - c = stpcpy (loc, name); - /* Now check certain conditions to figure out if that - locale requires a modifier. */ - if (lang == LANG_SERBIAN && !strncmp (loc, "sr_", 3) - && wcsstr (language, L"(Latin)")) + if (!wcscmp (iso15924, L"Latn;")) stpcpy (c, "@latin"); - else if (lang == LANG_UZBEK - && sublang == SUBLANG_UZBEK_CYRILLIC) + else if (!wcscmp (iso15924, L"Cyrl;")) stpcpy (c, "@cyrillic"); - /* Avoid more dups */ - for (i = 0; i < lcnt; ++ i) - if (!strcmp (loc_list[i].loc, loc)) - { - lcnt++; - break; - } - if (i < lcnt) - continue; - if (lcnt < 32) - strcpy (loc_list[lcnt++].loc, loc); - /* Print */ - add_locale (loc, language, country); - /* Check for locales which sport a modifier for - changing the codeset and other stuff. */ - if (lang == LANG_BELARUSIAN - && sublang == SUBLANG_BELARUSIAN_BELARUS) - stpcpy (c, "@latin"); - else if (lang == LANG_TATAR - && sublang == SUBLANG_TATAR_RUSSIA) - stpcpy (c, "@iqtelif"); - else if (GetLocaleInfoW (lcid, - LOCALE_IDEFAULTANSICODEPAGE - | LOCALE_RETURN_NUMBER, - (PWCHAR) &cp, sizeof cp) - && cp == 1252 /* Latin1*/ - && GetLocaleInfoW (lcid, LOCALE_SINTLSYMBOL, wbuf, 9) - && !wcsncmp (wbuf, L"EUR", 3)) - stpcpy (c, "@euro"); - else if (lang == LANG_JAPANESE - || lang == LANG_KOREAN - || lang == LANG_CHINESE) - stpcpy (c, "@cjknarrow"); + else if (!wcscmp (iso15924, L"Deva;")) + stpcpy (c, "@devanagari"); + else if (!wcscmp (iso15924, L"Adlm;")) + stpcpy (c, "@adlam"); else - continue; - add_locale (loc, language, country); + return TRUE; } } + + /* Print */ + GetLocaleInfoEx (loc_name, LOCALE_SENGLISHLANGUAGENAME, language, 256); + GetLocaleInfoEx (loc_name, LOCALE_SENGLISHCOUNTRYNAME, country, 256); + add_locale (posix_loc, language, country); + /* Check for locales sporting an additional modifier for + changing the codeset and other stuff. */ + if (!wcscmp (iso639, L"be") && !wcscmp (iso3166, L"BY")) + stpcpy (c, "@latin"); + if (!wcscmp (iso639, L"tt") && !wcscmp (iso3166, L"RU")) + stpcpy (c, "@iqtelif"); + else if (GetLocaleInfoEx (loc_name, + LOCALE_IDEFAULTANSICODEPAGE + | LOCALE_RETURN_NUMBER, + (PWCHAR) &cp, sizeof cp) + && cp == 1252 /* Latin1*/ + && GetLocaleInfoEx (loc_name, LOCALE_SINTLSYMBOL, currency, 9) + && !wcsncmp (currency, L"EUR", 3)) + stpcpy (c, "@euro"); + else if (!wcscmp (iso639, L"ja") + || !wcscmp (iso639, L"ko") + || !wcscmp (iso639, L"zh")) + stpcpy (c, "@cjknarrow"); + else + return TRUE; + add_locale (posix_loc, language, country); } + return TRUE; +} + +void +print_all_locales (int verbose) +{ + add_locale ("C", L"C", L"POSIX"); + add_locale ("POSIX", L"C", L"POSIX", true); + EnumSystemLocalesEx (print_all_locales_proc, + LOCALE_WINDOWS | LOCALE_SUPPLEMENTAL, + 0, NULL); /* First sort allows add_locale_alias_locales to bsearch in locales. */ qsort (locale, loc_num, sizeof (loc_t), compare_locales); add_locale_alias_locales (); @@ -544,8 +599,8 @@ const char *fake_string[] = { lc_names_t lc_ctype_names[] = { - { "ctype-class-names", is_string_fake, 0, 0 }, - { "ctype-map-names", is_string_fake, 2, 0 }, + { "ctype-class-names", is_string_fake, 0, 0 }, + { "ctype-map-names", is_string_fake, 2, 0 }, { "ctype-outdigit0_mb", is_string, _NL_CTYPE_OUTDIGITS0_MB, 0 }, { "ctype-outdigit1_mb", is_string, _NL_CTYPE_OUTDIGITS1_MB, 0 }, { "ctype-outdigit2_mb", is_string, _NL_CTYPE_OUTDIGITS2_MB, 0 }, @@ -556,30 +611,30 @@ lc_names_t lc_ctype_names[] = { "ctype-outdigit7_mb", is_string, _NL_CTYPE_OUTDIGITS7_MB, 0 }, { "ctype-outdigit8_mb", is_string, _NL_CTYPE_OUTDIGITS8_MB, 0 }, { "ctype-outdigit9_mb", is_string, _NL_CTYPE_OUTDIGITS9_MB, 0 }, - { "ctype-outdigit0_wc", is_wchar, _NL_CTYPE_OUTDIGITS0_WC, 0 }, - { "ctype-outdigit1_wc", is_wchar, _NL_CTYPE_OUTDIGITS1_WC, 0 }, - { "ctype-outdigit2_wc", is_wchar, _NL_CTYPE_OUTDIGITS2_WC, 0 }, - { "ctype-outdigit3_wc", is_wchar, _NL_CTYPE_OUTDIGITS3_WC, 0 }, - { "ctype-outdigit4_wc", is_wchar, _NL_CTYPE_OUTDIGITS4_WC, 0 }, - { "ctype-outdigit5_wc", is_wchar, _NL_CTYPE_OUTDIGITS5_WC, 0 }, - { "ctype-outdigit6_wc", is_wchar, _NL_CTYPE_OUTDIGITS6_WC, 0 }, - { "ctype-outdigit7_wc", is_wchar, _NL_CTYPE_OUTDIGITS7_WC, 0 }, - { "ctype-outdigit8_wc", is_wchar, _NL_CTYPE_OUTDIGITS8_WC, 0 }, - { "ctype-outdigit9_wc", is_wchar, _NL_CTYPE_OUTDIGITS9_WC, 0 }, + { "ctype-outdigit0_wc", is_wchar, _NL_CTYPE_OUTDIGITS0_WC, 0 }, + { "ctype-outdigit1_wc", is_wchar, _NL_CTYPE_OUTDIGITS1_WC, 0 }, + { "ctype-outdigit2_wc", is_wchar, _NL_CTYPE_OUTDIGITS2_WC, 0 }, + { "ctype-outdigit3_wc", is_wchar, _NL_CTYPE_OUTDIGITS3_WC, 0 }, + { "ctype-outdigit4_wc", is_wchar, _NL_CTYPE_OUTDIGITS4_WC, 0 }, + { "ctype-outdigit5_wc", is_wchar, _NL_CTYPE_OUTDIGITS5_WC, 0 }, + { "ctype-outdigit6_wc", is_wchar, _NL_CTYPE_OUTDIGITS6_WC, 0 }, + { "ctype-outdigit7_wc", is_wchar, _NL_CTYPE_OUTDIGITS7_WC, 0 }, + { "ctype-outdigit8_wc", is_wchar, _NL_CTYPE_OUTDIGITS8_WC, 0 }, + { "ctype-outdigit9_wc", is_wchar, _NL_CTYPE_OUTDIGITS9_WC, 0 }, { "charmap", is_string, CODESET, 0 }, { "ctype-mb-cur-max", is_int, _NL_CTYPE_MB_CUR_MAX, 0 }, - { NULL, is_end, 0, 0 } + { NULL, is_end, 0, 0 } }; lc_names_t lc_numeric_names[] = { { "decimal_point", is_string, RADIXCHAR, 0 }, - { "thousands_sep", is_string, THOUSEP, 0 }, + { "thousands_sep", is_string, THOUSEP, 0 }, { "grouping", is_grouping, _NL_NUMERIC_GROUPING, 0 }, { "numeric-decimal-point-wc", is_wchar, _NL_NUMERIC_DECIMAL_POINT_WC, 0 }, { "numeric-thousands-sep-wc", is_wchar, _NL_NUMERIC_THOUSANDS_SEP_WC, 0 }, { "numeric-codeset", is_string, _NL_NUMERIC_CODESET, 0 }, - { NULL, is_end, 0, 0 } + { NULL, is_end, 0, 0 } }; lc_names_t lc_time_names[] = @@ -600,13 +655,13 @@ lc_names_t lc_time_names[] = { "era_t_fmt", is_string, ERA_T_FMT, 0 }, { "date_fmt", is_string, _DATE_FMT, 0 }, { "time-codeset", is_string, _NL_TIME_CODESET, 0 }, - { NULL, is_end, 0, 0 } + { NULL, is_end, 0, 0 } }; lc_names_t lc_collate_names[] = { { "collate-codeset", is_string, _NL_COLLATE_CODESET, 0 }, - { NULL, is_end, 0, 0 } + { NULL, is_end, 0, 0 } }; lc_names_t lc_monetary_names[] = @@ -635,7 +690,7 @@ lc_names_t lc_monetary_names[] = { "monetary-decimal-point-wc", is_wchar, _NL_MONETARY_WMON_DECIMAL_POINT, 0 }, { "monetary-thousands-sep-wc", is_wchar, _NL_MONETARY_WMON_THOUSANDS_SEP, 0 }, { "monetary-codeset", is_string, _NL_MONETARY_CODESET, 0 }, - { NULL, is_end, 0, 0 } + { NULL, is_end, 0, 0 } }; lc_names_t lc_messages_names[] = @@ -645,7 +700,7 @@ lc_names_t lc_messages_names[] = { "yesstr", is_string, YESSTR, 0 }, { "nostr", is_string, NOSTR, 0 }, { "messages-codeset", is_string, _NL_MESSAGES_CODESET, 0 }, - { NULL, is_end, 0, 0 } + { NULL, is_end, 0, 0 } }; void @@ -739,14 +794,13 @@ int main (int argc, char **argv) { int opt; - LCID lcid = 0; + wchar_t loc_name[256] = { 0 }; int all = 0; int cat = 0; int key = 0; int maps = 0; int verbose = 0; const char *utf = ""; - char name[32]; setlocale (LC_ALL, ""); while ((opt = getopt_long (argc, argv, opts, longopts, NULL)) != -1) @@ -765,19 +819,22 @@ main (int argc, char **argv) maps = 1; break; case 'i': - lcid = (UINT_PTR) GetKeyboardLayout (0) & 0xffff; + GetLocaleInfoW ((UINT_PTR) GetKeyboardLayout (0) & 0xffff, LOCALE_SNAME, + loc_name, 256); break; case 's': - lcid = GetSystemDefaultUILanguage (); + GetLocaleInfoW (GetSystemDefaultUILanguage (), LOCALE_SNAME, + loc_name, 256); break; case 'u': - lcid = GetUserDefaultUILanguage (); + GetLocaleInfoW (GetUserDefaultUILanguage (), LOCALE_SNAME, + loc_name, 256); break; case 'f': - lcid = GetUserDefaultLCID (); + GetUserDefaultLocaleName (loc_name, 256); break; case 'n': - lcid = GetSystemDefaultLCID (); + GetSystemDefaultLocaleName (loc_name, 256); break; case 'U': utf = ".UTF-8"; @@ -799,10 +856,13 @@ main (int argc, char **argv) print_all_locales (verbose); else if (maps) print_charmaps (); - else if (lcid) + else if (loc_name[0]) { - if (getlocale (lcid, name)) - printf ("%s%s\n", name, utf); + wchar_t iso639[10]; + wchar_t iso3166[10]; + + if (getlocale (loc_name, iso639, iso3166, NULL)) + printf ("%ls_%ls%s", iso639, iso3166, utf); } else if (optind < argc) while (optind < argc) From 89eb4bce152f93a9ace37bb7c67941a0e3bf19ae Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Feb 2023 16:07:26 +0100 Subject: [PATCH 201/767] Cygwin: support KOI8-T codeset Used on Linux as default codeset for Tajik. There's no matching Windows codepage, so fake it as CP103. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- newlib/libc/locale/locale.c | 15 +++++--- newlib/libc/locale/nl_langinfo.c | 2 ++ newlib/libc/stdlib/sb_charsets.c | 60 +++++++++++++++++++++----------- winsup/cygwin/nlsfuncs.cc | 2 ++ winsup/utils/locale.cc | 1 + 5 files changed, 55 insertions(+), 25 deletions(-) diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index b0f6314ff4..e58ba3dbef 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -50,10 +50,10 @@ but uses the UTF-8 charset. The following charsets are recognized: <<"UTF-8">>, <<"JIS">>, <<"EUCJP">>, <<"SJIS">>, <<"KOI8-R">>, <<"KOI8-U">>, -<<"GEORGIAN-PS">>, <<"PT154">>, <<"TIS-620">>, <<"ISO-8859-x">> with -1 <= x <= 16, or <<"CPxxx">> with xxx in [437, 720, 737, 775, 850, 852, 855, -857, 858, 862, 866, 874, 932, 1125, 1250, 1251, 1252, 1253, 1254, 1255, 1256, -1257, 1258]. +<<"KOI8-T">>, <<"GEORGIAN-PS">>, <<"PT154">>, <<"TIS-620">>, <<"ISO-8859-x">> +with 1 <= x <= 16, or <<"CPxxx">> with xxx in [437, 720, 737, 775, 850, 852, +855, 857, 858, 862, 866, 874, 932, 1125, 1250, 1251, 1252, 1253, 1254, 1255, +1256, 1257, 1258]. Charsets are case insensitive. For instance, <<"EUCJP">> and <<"eucJP">> are equivalent. Charset names with dashes can also be written without @@ -769,7 +769,7 @@ __loadlocale (struct __locale_t *loc, int category, char *new_locale) break; case 'K': case 'k': - /* KOI8-R, KOI8-U and the aliases without dash */ + /* KOI8-R, KOI8-U, KOI8-T and the aliases without dash */ if (strncasecmp (charset, "KOI8", 4)) FAIL; c = charset + 4; @@ -785,6 +785,11 @@ __loadlocale (struct __locale_t *loc, int category, char *new_locale) val = 21866; strcpy (charset, "CP21866"); } + else if (*c == 'T' || *c == 't') + { + val = 103; + strcpy (charset, "CP103"); + } else FAIL; mbc_max = 1; diff --git a/newlib/libc/locale/nl_langinfo.c b/newlib/libc/locale/nl_langinfo.c index eb984912fc..aaa1aef864 100644 --- a/newlib/libc/locale/nl_langinfo.c +++ b/newlib/libc/locale/nl_langinfo.c @@ -233,6 +233,8 @@ char *nl_langinfo_l (nl_item item, struct __locale_t *locale) ret = "GEORGIAN-PS"; else if (strcmp (ret + 2, "102") == 0) ret = "PT154"; + else if (strcmp (ret + 2, "103") == 0) + ret = "KOI8-T"; } else if (ret[0] == 'S'/*JIS*/) { diff --git a/newlib/libc/stdlib/sb_charsets.c b/newlib/libc/stdlib/sb_charsets.c index 961eb15736..4984a2fe35 100644 --- a/newlib/libc/stdlib/sb_charsets.c +++ b/newlib/libc/stdlib/sb_charsets.c @@ -196,12 +196,12 @@ wchar_t __iso_8859_conv[14][0x60] = { #endif /* _MB_EXTENDED_CHARSETS_ISO */ #ifdef _MB_EXTENDED_CHARSETS_WINDOWS -/* Tables for the Windows default singlebyte ANSI codepage conversion. +/* Tables for the Windows default singlebyte ANSI codepage conversion. The first index into the table is a value computed from the codepage value (function __cp_index), the second index is the value of the incoming character - 0x80. Values < 0x80 don't have to be converted anyway. */ -wchar_t __cp_conv[26][0x80] = { +wchar_t __cp_conv[27][0x80] = { /* CP437 */ { 0xc7, 0xfc, 0xe9, 0xe2, 0xe4, 0xe0, 0xe5, 0xe7, 0xea, 0xeb, 0xe8, 0xef, 0xee, 0xec, 0xc4, 0xc5, @@ -619,37 +619,54 @@ wchar_t __cp_conv[26][0x80] = { { 0x80, 0x81, 0x201a, 0x192, 0x201e, 0x2026, 0x2020, 0x2021, 0x2c6, 0x2030, 0x160, 0x2039, 0x152, 0x8d, 0x8e, 0x8f, 0x90, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, - 0x2dc, 0x2122, 0x161, 0x203a, 0x153, 0x9d, 0x9e, 0x178, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0x2dc, 0x2122, 0x161, 0x203a, 0x153, 0x9d, 0x9e, 0x178, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff }, /* CP102 (PT154) Cyrillic-Asian charset, used as the default charset in the kk_KZ locale (Kazakh, Kazakhstan). */ { 0x496, 0x492, 0x4ee, 0x493, 0x201e, 0x2026, 0x4b6, 0x4ae, - 0x4b2, 0x4af, 0x4a0, 0x4e2, 0x4a2, 0x49a, 0x4ba, 0x4b8, + 0x4b2, 0x4af, 0x4a0, 0x4e2, 0x4a2, 0x49a, 0x4ba, 0x4b8, 0x497, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, - 0x4b3, 0x4b7, 0x4a1, 0x4e3, 0x4a3, 0x49b, 0x4bb, 0x4b9, + 0x4b3, 0x4b7, 0x4a1, 0x4e3, 0x4a3, 0x49b, 0x4bb, 0x4b9, 0xa0, 0x40e, 0x45e, 0x408, 0x4e8, 0x498, 0x4b0, 0xa7, 0x401, 0xa9, 0x4d8, 0xab, 0xac, 0x4ef, 0xae, 0x49c, 0xb0, 0x4b1, 0x406, 0x456, 0x499, 0x4e9, 0xb6, 0xb7, - 0x451, 0x2116, 0x4d9, 0xbb, 0x458, 0x4aa, 0x4ab, 0x49d, - 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, - 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, - 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, - 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, - 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, - 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, - 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, - 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f } + 0x451, 0x2116, 0x4d9, 0xbb, 0x458, 0x4aa, 0x4ab, 0x49d, + 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, + 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, + 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, + 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, + 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, + 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, + 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, + 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f }, + /* CP103 (KOI8-T) */ + { 0x049b, 0x0493, 0x201a, 0x0492, 0x201e, 0x2026, 0x2020, 0x2021, + 0x88, 0x2030, 0x04b3, 0x2039, 0x04b2, 0x04b7, 0x04b6, 0x8f, + 0x049a, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, + 0x98, 0x2122, 0x9a, 0x203a, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0x04ef, 0x04ee, 0x0451, 0xa4, 0x04e3, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0x401, 0xb4, 0x04e2, 0xb6, 0xb7, + 0xb8, 0x2116, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xa9, + 0x44e, 0x430, 0x431, 0x446, 0x434, 0x435, 0x444, 0x433, + 0x445, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, + 0x43f, 0x44f, 0x440, 0x441, 0x442, 0x443, 0x436, 0x432, + 0x44c, 0x44b, 0x437, 0x448, 0x44d, 0x449, 0x447, 0x44a, + 0x42e, 0x410, 0x411, 0x426, 0x414, 0x415, 0x424, 0x413, + 0x425, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, + 0x41f, 0x42f, 0x420, 0x421, 0x422, 0x423, 0x416, 0x412, + 0x42c, 0x42b, 0x417, 0x428, 0x42d, 0x429, 0x427, 0x42a }, }; #endif /* _MB_EXTENDED_CHARSETS_WINDOWS */ @@ -776,6 +793,9 @@ __cp_val_index (int val) case 102: cp_idx = 25; break; + case 103: + cp_idx = 26; + break; default: cp_idx = -1; break; diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 543f20e443..0d2764b058 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1510,6 +1510,8 @@ __set_charset_from_locale (const char *locale, char *charset) cs = "CP1251"; else if (lcid == 0x0422) /* uk_UA (Ukrainian/Ukraine) */ cs = "KOI8-U"; + else if (lcid == 0x0428) /* tg_TJ (Tajik/Tajikistan) */ + cs = "KOI8-T"; else cs = "ISO-8859-5"; break; diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 1d90550f34..193e91e3fa 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -486,6 +486,7 @@ print_charmaps () "ISO-8859-8", "ISO-8859-9", "KOI8-R", + "KOI8-T", "KOI8-U", "PT154", "SJIS", From e95a7a795522165a2d022dbb4df281d6be661c83 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Feb 2023 16:37:44 +0100 Subject: [PATCH 202/767] Cygwin: convert Windows locale handling from LCID to ISO5646 strings Since Windows Vista, locale handling is converted from using numeric locale identifiers (LCID) to using ISO5646 locale strings. In the meantime Windows introduced new locales which don't even have a LCID attached. Those were unusable in Cygwin because locale information for these locales required to call the new locale functions taking a locale string. Convert Cygwin to drop LCIDs and use Windows ISO5646 locales instead. The last place using LCIDs is the __set_charset_from_locale function. Checking numerically is easier and uslay faster than checking strings. However, this function is clearly a TODO --- newlib/libc/locale/setlocale.h | 2 +- winsup/cygwin/glob.cc | 2 +- winsup/cygwin/libc/fnmatch.c | 2 +- winsup/cygwin/nlsfuncs.cc | 449 ++++++++++++++++++--------------- winsup/cygwin/regex/regcomp.c | 2 +- 5 files changed, 243 insertions(+), 214 deletions(-) diff --git a/newlib/libc/locale/setlocale.h b/newlib/libc/locale/setlocale.h index 3530ec664d..7abf92f7ec 100644 --- a/newlib/libc/locale/setlocale.h +++ b/newlib/libc/locale/setlocale.h @@ -46,7 +46,7 @@ __BEGIN_DECLS #ifdef __CYGWIN__ struct lc_collate_T { - __uint32_t lcid; + wchar_t win_locale[ENCODING_LEN + 1]; int (*mbtowc) (struct _reent *, wchar_t *, const char *, size_t, mbstate_t *); char codeset[ENCODING_LEN + 1]; diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 64c3507d89..63a07a930f 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -929,7 +929,7 @@ match(Char *name, Char *pat, Char *patend) if (M_COLL_P(pat[1])) len2 = M_COLL_CNT(*++pat); #ifdef __CYGWIN__ - if ((!__get_current_collate_locale ()->lcid) ? + if ((!__get_current_collate_locale ()->win_locale[0]) ? #else if (__collate_load_error ? #endif diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index dfbe3863fb..beb67f01e5 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -330,7 +330,7 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, c2 = towlower(c2); #ifdef __CYGWIN__ - if ((!__get_current_collate_locale ()->lcid) ? + if ((!__get_current_collate_locale ()->win_locale[0]) ? #else if (table->__collate_load_error ? #endif diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 0d2764b058..60bababd26 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -25,128 +25,129 @@ details. */ #define _LC(x) &lc_##x##_ptr,lc_##x##_end-lc_##x##_ptr #define getlocaleinfo(category,type) \ - __getlocaleinfo(lcid,(type),_LC(category)) + __getlocaleinfo(win_locale,(type),_LC(category)) +#define getlocaleint(type) \ + __getlocaleint(win_locale,(type)) #define setlocaleinfo(category,val) \ __setlocaleinfo(_LC(category),(val)) #define eval_datetimefmt(type,flags) \ - __eval_datetimefmt(lcid,(type),(flags),&lc_time_ptr,\ + __eval_datetimefmt(win_locale,(type),(flags),&lc_time_ptr,\ lc_time_end-lc_time_ptr) #define charfromwchar(category,in) \ __charfromwchar (_##category##_locale->in,_LC(category),f_wctomb) #define has_modifier(x) ((x)[0] && !strcmp (modifier, (x))) -static char last_locale[ENCODING_LEN + 1]; -static LCID last_lcid; - -/* Fetch LCID from POSIX locale specifier. +/* Fetch Windows RFC 5646 locale from POSIX locale specifier. Return values: -1: Invalid locale 0: C or POSIX - >0: LCID + 1: valid locale */ -static LCID -__get_lcid_from_locale (const char *name) +static int +__get_rfc5646_from_locale (const char *name, wchar_t *win_locale) { - char locale[ENCODING_LEN + 1]; - char *c; - LCID lcid; - - /* Speed up reusing the same locale as before, for instance in LC_ALL case. */ - if (!strcmp (name, last_locale)) - { - debug_printf ("LCID=%04y", last_lcid); - return last_lcid; - } - stpcpy (last_locale, name); - stpcpy (locale, name); - /* Store modifier for later use. */ - const char *modifier = strchr (last_locale, '@') ? : ""; + wchar_t wlocale[ENCODING_LEN + 1] = { 0 }; + wchar_t locale[ENCODING_LEN + 1]; + wchar_t *c; + + win_locale[0] = L'\0'; + mbstowcs (locale, name, ENCODING_LEN + 1); + /* Remember modifier for later use. */ + const char *modifier = strchr (name, '@') ? : ""; /* Drop charset and modifier */ - c = strchr (locale, '.'); + c = wcschr (locale, L'.'); if (!c) - c = strchr (locale, '@'); + c = wcschr (locale, L'@'); if (c) - *c = '\0'; + *c = L'\0'; /* "POSIX" already converted to "C" in loadlocale. */ - if (!strcmp (locale, "C")) - return last_lcid = 0; - c = strchr (locale, '_'); + if (!wcscmp (locale, L"C")) + return 0; + c = wcschr (locale, '_'); if (!c) - return last_lcid = (LCID) -1; - - wchar_t wlocale[ENCODING_LEN + 1]; + { + /* try if the locale can be resolved from the language tag + fix up Linux-only locale first */ + if (!wcscmp (locale, L"ber")) + wcscpy (locale, L"tzm"); + if (ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 0) + return -1; + wcpcpy (win_locale, wlocale); + return 1; + } - /* Convert to RFC 4646 syntax. */ + /* Convert to RFC 5646 syntax. */ *c = '-'; - mbstowcs (wlocale, locale, ENCODING_LEN + 1); - lcid = LocaleNameToLCID (wlocale, 0); - /* Bug on Windows 10: LocaleNameToLCID returns LOCALE_CUSTOM_UNSPECIFIED - for unknown locales. */ - if (lcid == 0 || lcid == LOCALE_CUSTOM_UNSPECIFIED) + /* Override a few locales with a different default script as used + on Linux. Linux also supports no_NO which is equivalent to nb_NO, + but Windows can resolve that nicely. Also, "tzm" and "zgh" are + subsumed under "ber" on Linux. */ + struct { + const wchar_t *loc; + const wchar_t *wloc; + } override_locale[] = { + { L"ber-DZ" , L"tzm-Latn-DZ" }, + { L"ber-MA" , L"zgh-Tfng-MA" }, + { L"mn-CN" , L"mn-Mong-CN" }, + { L"mn-MN" , L"mn-Mong-MN" }, + { L"pa-PK" , L"pa-Arab-PK" }, + { L"sd-IN" , L"sd-Deva-IN" }, + { L"sr-BA" , L"sr-Cyrl-BA" }, + { L"sr-ME" , L"sr-Cyrl-ME" }, + { L"sr-RS" , L"sr-Cyrl-RS" }, + { L"sr-XK" , L"sr-Cyrl-XK" }, + { L"tzm-MA", L"tzm-Tfng-MA" }, + { NULL , NULL } + }; + + for (int i = 0; override_locale[i].loc + && override_locale[i].loc[0] <= locale[0]; ++i) { - /* Unfortunately there are a couple of locales for which no form - without a Script part per RFC 4646 exists. - Linux also supports no_NO which is equivalent to nb_NO. */ - struct { - const char *loc; - const wchar_t *wloc; - } sc_only_locale[] = { - { "az-AZ" , L"az-Latn-AZ" }, - { "bs-BA" , L"bs-Latn-BA" }, - { "chr-US", L"chr-Cher-US"}, - { "ff-SN" , L"ff-Latn-SN" }, - { "ha-NG" , L"ha-Latn-NG" }, - { "iu-CA" , L"iu-Latn-CA" }, - { "ks-IN" , L"ks-Arab-IN" }, - { "ku-IQ" , L"ku-Arab-IQ" }, - { "mn-CN" , L"mn-Mong-CN" }, - { "mn-MN" , L"mn-Mong-MN" }, - { "no-NO" , L"nb-NO" }, - { "pa-PK" , L"pa-Arab-PK" }, - { "quc-GT", L"quc-Latn-GT" }, - { "sd-PK" , L"sd-Arab-PK" }, - { "sd-IN" , L"sd-Deva-IN" }, - { "sr-BA" , L"sr-Cyrl-BA" }, - { "sr-ME" , L"sr-Cyrl-ME" }, - { "sr-RS" , L"sr-Cyrl-RS" }, - { "tg-TJ" , L"tg-Cyrl-TJ" }, - { "tzm-DZ", L"tzm-Latn-DZ" }, - { "tzm-MA", L"tzm-Tfng-MA" }, - { "uz-UZ" , L"uz-Latn-UZ" }, - { NULL , NULL } - }; - for (int i = 0; sc_only_locale[i].loc - && sc_only_locale[i].loc[0] <= locale[0]; ++i) - if (!strcmp (locale, sc_only_locale[i].loc)) - { - lcid = LocaleNameToLCID (sc_only_locale[i].wloc, 0); - if (!strncmp (locale, "sr-", 3)) - { - /* "@latin" modifier for the sr_XY locales changes - collation behaviour so lcid should accommodate that - by being set to the Latin sublang. */ - if (lcid != 0 && lcid != LOCALE_CUSTOM_UNSPECIFIED - && has_modifier ("@latin")) - lcid = MAKELANGID (lcid & 0x3ff, (lcid >> 10) - 1); - } - else if (!strncmp (locale, "uz-", 3)) - { - /* Equivalent for "@cyrillic" modifier in uz_UZ locale */ - if (lcid != 0 && lcid != LOCALE_CUSTOM_UNSPECIFIED - && has_modifier ("@cyrillic")) - lcid = MAKELANGID (lcid & 0x3ff, (lcid >> 10) + 1); - } - break; - } + if (!wcscmp (locale, override_locale[i].loc)) + { + wcscpy (wlocale, override_locale[i].wloc); + break; + } + } + if (!wlocale[0] + && ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 1) + return -1; + + /* Check for modifiers changing the script */ + const wchar_t *iso15924_script[] = { L"Latn-", L"Cyrl-", L"Deva-", L"Adlm-" }; + int idx = -1; + + if (modifier[0]) + { + if (!strcmp (++modifier, "latin")) + idx = 0; + else if (!strcmp (modifier, "cyrillic")) + idx = 1; + else if (!strcmp (modifier, "devanagari")) + idx = 2; + else if (!strcmp (modifier, "adlam")) + idx = 3; + } + if (idx >= 0) + { + wchar_t *iso3166 = wcschr (wlocale, L'-') + 1; + wchar_t *wlp; + + /* Copy iso639 language part including dash */ + wlp = wcpncpy (win_locale, wlocale, iso3166 - wlocale); + /* Concat new iso15924 script */ + wlp = wcpcpy (wlp, iso15924_script[idx]); + /* Concat iso3166 territory. Skip script, if already in the locale */ + wchar_t *skip_script = wcschr (iso3166, L'-'); + if (skip_script) + iso3166 = skip_script + 1; + wcpcpy (wlp, iso3166); } - if (lcid && lcid != LOCALE_CUSTOM_UNSPECIFIED) - last_lcid = lcid; else - last_lcid = (LCID) -1; - debug_printf ("LCID=%04y", last_lcid); - return last_lcid; + wcpcpy (win_locale, wlocale); + return 1; } /* Never returns -1. Just skips invalid chars instead. Only if return_invalid @@ -257,7 +258,7 @@ rebase_locale_buf (const void *ptrv, const void *ptrvend, const char *newbase, } static wchar_t * -__getlocaleinfo (LCID lcid, LCTYPE type, char **ptr, size_t size) +__getlocaleinfo (wchar_t *loc, LCTYPE type, char **ptr, size_t size) { size_t num; wchar_t *ret; @@ -265,7 +266,7 @@ __getlocaleinfo (LCID lcid, LCTYPE type, char **ptr, size_t size) if ((uintptr_t) *ptr % 1) ++*ptr; ret = (wchar_t *) *ptr; - num = GetLocaleInfoW (lcid, type, ret, size / sizeof (wchar_t)); + num = GetLocaleInfoEx (loc, type, ret, size / sizeof (wchar_t)); *ptr = (char *) (ret + num); return ret; } @@ -296,10 +297,10 @@ __charfromwchar (const wchar_t *in, char **ptr, size_t size, wctomb_p f_wctomb) } static UINT -getlocaleint (LCID lcid, LCTYPE type) +__getlocaleint (wchar_t *loc, LCTYPE type) { UINT val; - return GetLocaleInfoW (lcid, type | LOCALE_RETURN_NUMBER, (PWCHAR) &val, + return GetLocaleInfoEx (loc, type | LOCALE_RETURN_NUMBER, (PWCHAR) &val, sizeof val) ? val : 0; } @@ -310,7 +311,7 @@ enum dt_flags { }; static wchar_t * -__eval_datetimefmt (LCID lcid, LCTYPE type, dt_flags flags, char **ptr, +__eval_datetimefmt (wchar_t *loc, LCTYPE type, dt_flags flags, char **ptr, size_t size) { wchar_t buf[80]; @@ -327,7 +328,7 @@ __eval_datetimefmt (LCID lcid, LCTYPE type, dt_flags flags, char **ptr, ++*ptr; wchar_t *ret = (wchar_t *) *ptr; wchar_t *p = (wchar_t *) *ptr; - GetLocaleInfoW (lcid, type, buf, 80); + GetLocaleInfoEx (loc, type, buf, 80); for (wchar_t *fmt = buf; *fmt; ++fmt) switch (fc = *fmt) { @@ -390,20 +391,21 @@ __eval_datetimefmt (LCID lcid, LCTYPE type, dt_flags flags, char **ptr, /* Convert Windows grouping format into POSIX grouping format. */ static char * -conv_grouping (LCID lcid, LCTYPE type, char **lc_ptr) +conv_grouping (wchar_t *loc, LCTYPE type, char **lc_ptr) { - char buf[10]; /* Per MSDN max size of LOCALE_SGROUPING element incl. NUL */ + wchar_t buf[10]; /* Per MSDN max size of LOCALE_SGROUPING element incl. NUL */ bool repeat = false; char *ptr = *lc_ptr; char *ret = ptr; - GetLocaleInfoA (lcid, type, buf, 10); - /* Convert Windows grouping format into POSIX grouping format. */ - for (char *c = buf; *c; ++c) + GetLocaleInfoEx (loc, type, buf, 10); + /* Convert Windows grouping format into POSIX grouping format. Note that + only ASCII chars are used in the grouping format. */ + for (wchar_t *c = buf; *c; ++c) { - if (*c < '0' || *c > '9') + if (*c < L'0' || *c > L'9') continue; - char val = *c - '0'; + char val = *c - L'0'; if (!val) { repeat = true; @@ -429,10 +431,11 @@ __set_lc_time_from_win (const char *name, char **lc_time_buf, wctomb_p f_wctomb, const char *charset) { - LCID lcid = __get_lcid_from_locale (name); - if (lcid == (LCID) -1) - return lcid; - if (!lcid && !strcmp (charset, "ASCII")) + wchar_t win_locale[ENCODING_LEN + 1]; + int ret = __get_rfc5646_from_locale (name, win_locale); + if (ret < 0) + return ret; + if (!ret && !strcmp (charset, "ASCII")) return 0; # define MAX_TIME_BUFFER_SIZE 4096 @@ -445,17 +448,17 @@ __set_lc_time_from_win (const char *name, char *lc_time_ptr = new_lc_time_buf; /* C.foo is just a copy of "C" with fixed charset. */ - if (!lcid) + if (!ret) memcpy (_time_locale, _C_time_locale, sizeof (struct lc_time_T)); /* codeset */ _time_locale->codeset = lc_time_ptr; lc_time_ptr = stpcpy (lc_time_ptr, charset) + 1; - if (lcid) + if (ret) { char locale[ENCODING_LEN + 1]; strcpy (locale, name); - /* Removes the charset from the locale and attach the modifer to the + /* Removes the charset from the locale and attach the modifier to the language_TERRITORY part. */ char *c = strchr (locale, '.'); if (c) @@ -476,17 +479,22 @@ __set_lc_time_from_win (const char *name, sizeof *lc_era, locale_cmp); /* mon */ - /* Windows has a bug in Japanese and Korean locales. In these - locales, strings returned for LOCALE_SABBREVMONTHNAME* are missing - the suffix representing a month. Unfortunately this is not - documented in English. A Japanese article describing the problem - is http://msdn.microsoft.com/ja-jp/library/cc422084.aspx + /* Windows has a bug in "ja-JP" and "ko-KR" (but not in "ko-KP"). + In these locales, strings returned for LOCALE_SABBREVMONTHNAME* + are missing the suffix representing a month. + + A Japanese article describing the problem was + https://msdn.microsoft.com/ja-jp/library/cc422084.aspx, which is + only available via + https://web.archive.org/web/20110922195821/https://msdn.microsoft.com/ja-jp/library/cc422084.aspx + these days. Testing indicates that this problem is still present + in Windows 11. + The workaround is to use LOCALE_SMONTHNAME* in these locales, even for the abbreviated month name. */ - const LCTYPE mon_base = - lcid == MAKELANGID (LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN) - || lcid == MAKELANGID (LANG_KOREAN, SUBLANG_KOREAN) - ? LOCALE_SMONTHNAME1 : LOCALE_SABBREVMONTHNAME1; + const LCTYPE mon_base = !wcscmp (win_locale, L"ja-JP") + || !wcscmp (win_locale, L"ko-KR") + ? LOCALE_SMONTHNAME1 : LOCALE_SABBREVMONTHNAME1; for (int i = 0; i < 12; ++i) { _time_locale->wmon[i] = getlocaleinfo (time, mon_base + i); @@ -495,7 +503,8 @@ __set_lc_time_from_win (const char *name, /* month and alt_month */ for (int i = 0; i < 12; ++i) { - _time_locale->wmonth[i] = getlocaleinfo (time, LOCALE_SMONTHNAME1 + i); + _time_locale->wmonth[i] = getlocaleinfo (time, + LOCALE_SMONTHNAME1 + i); _time_locale->month[i] = _time_locale->alt_month[i] = charfromwchar (time, wmonth[i]); } @@ -570,7 +579,7 @@ __set_lc_time_from_win (const char *name, /* md */ { wchar_t buf[80]; - GetLocaleInfoW (lcid, LOCALE_IDATE, buf, 80); + GetLocaleInfoEx (win_locale, LOCALE_IDATE, buf, 80); _time_locale->md_order = (const char *) lc_time_ptr; lc_time_ptr = stpcpy (lc_time_ptr, *buf == L'1' ? "dm" : "md") + 1; } @@ -690,10 +699,11 @@ __set_lc_ctype_from_win (const char *name, char **lc_ctype_buf, wctomb_p f_wctomb, const char *charset, int mb_cur_max) { - LCID lcid = __get_lcid_from_locale (name); - if (lcid == (LCID) -1) - return lcid; - if (!lcid && !strcmp (charset, "ASCII")) + wchar_t win_locale[ENCODING_LEN + 1]; + int ret = __get_rfc5646_from_locale (name, win_locale); + if (ret < 0) + return ret; + if (!ret && !strcmp (charset, "ASCII")) return 0; # define MAX_CTYPE_BUFFER_SIZE 256 @@ -704,7 +714,7 @@ __set_lc_ctype_from_win (const char *name, return -1; char *lc_ctype_ptr = new_lc_ctype_buf; /* C.foo is just a copy of "C" with fixed charset. */ - if (!lcid) + if (!ret) memcpy (_ctype_locale, _C_ctype_locale, sizeof (struct lc_ctype_T)); /* codeset */ _ctype_locale->codeset = lc_ctype_ptr; @@ -713,11 +723,11 @@ __set_lc_ctype_from_win (const char *name, _ctype_locale->mb_cur_max = lc_ctype_ptr; *lc_ctype_ptr++ = mb_cur_max; *lc_ctype_ptr++ = '\0'; - if (lcid) + if (ret) { /* outdigits and woutdigits */ wchar_t digits[11]; - GetLocaleInfoW (lcid, LOCALE_SNATIVEDIGITS, digits, 11); + GetLocaleInfoEx (win_locale, LOCALE_SNATIVEDIGITS, digits, 11); for (int i = 0; i <= 9; ++i) { mbstate_t state; @@ -762,10 +772,11 @@ __set_lc_numeric_from_win (const char *name, char **lc_numeric_buf, wctomb_p f_wctomb, const char *charset) { - LCID lcid = __get_lcid_from_locale (name); - if (lcid == (LCID) -1) - return lcid; - if (!lcid && !strcmp (charset, "ASCII")) + wchar_t win_locale[ENCODING_LEN + 1]; + int ret = __get_rfc5646_from_locale (name, win_locale); + if (ret < 0) + return ret; + if (!ret && !strcmp (charset, "ASCII")) return 0; # define MAX_NUMERIC_BUFFER_SIZE 256 @@ -777,20 +788,20 @@ __set_lc_numeric_from_win (const char *name, return -1; char *lc_numeric_ptr = new_lc_numeric_buf; /* C.foo is just a copy of "C" with fixed charset. */ - if (!lcid) + if (!ret) memcpy (_numeric_locale, _C_numeric_locale, sizeof (struct lc_numeric_T)); else { /* decimal_point and thousands_sep */ - if (lcid == 0x0429) /* fa_IR. Windows decimal_point is slash, - correct is dot */ + /* fa_IR. Windows decimal_point is slash, correct is dot */ + if (!wcscmp (win_locale, L"fa-IR")) { _numeric_locale->wdecimal_point = setlocaleinfo (numeric, L'.'); _numeric_locale->wthousands_sep = setlocaleinfo (numeric, L','); } - else if (lcid == 0x0463) /* ps_AF. Windows decimal_point is dot, - thousands_sep is comma, correct are - arabic separators. */ + /* ps_AF. Windows decimal_point is dot, thousands_sep is comma, + correct are arabic separators. */ + else if (!wcscmp (win_locale, L"ps-AF")) { _numeric_locale->wdecimal_point = setlocaleinfo (numeric, 0x066b); _numeric_locale->wthousands_sep = setlocaleinfo (numeric, 0x066c); @@ -805,7 +816,7 @@ __set_lc_numeric_from_win (const char *name, _numeric_locale->decimal_point = charfromwchar (numeric, wdecimal_point); _numeric_locale->thousands_sep = charfromwchar (numeric, wthousands_sep); /* grouping */ - _numeric_locale->grouping = conv_grouping (lcid, LOCALE_SGROUPING, + _numeric_locale->grouping = conv_grouping (win_locale, LOCALE_SGROUPING, &lc_numeric_ptr); } /* codeset */ @@ -837,10 +848,11 @@ __set_lc_monetary_from_win (const char *name, char **lc_monetary_buf, wctomb_p f_wctomb, const char *charset) { - LCID lcid = __get_lcid_from_locale (name); - if (lcid == (LCID) -1) - return lcid; - if (!lcid && !strcmp (charset, "ASCII")) + wchar_t win_locale[ENCODING_LEN + 1]; + int ret = __get_rfc5646_from_locale (name, win_locale); + if (ret < 0) + return ret; + if (!ret && !strcmp (charset, "ASCII")) return 0; # define MAX_MONETARY_BUFFER_SIZE 512 @@ -852,7 +864,7 @@ __set_lc_monetary_from_win (const char *name, return -1; char *lc_monetary_ptr = new_lc_monetary_buf; /* C.foo is just a copy of "C" with fixed charset. */ - if (!lcid) + if (!ret) memcpy (_monetary_locale, _C_monetary_locale, sizeof (struct lc_monetary_T)); else { @@ -881,11 +893,11 @@ __set_lc_monetary_from_win (const char *name, _monetary_locale->currency_symbol = charfromwchar (monetary, wcurrency_symbol); /* mon_decimal_point and mon_thousands_sep */ - if (lcid == 0x0429 || lcid == 0x0463) /* fa_IR or ps_AF. Windows - mon_decimal_point is slash - and comma, mon_thousands_sep - is comma and dot, correct - are arabic separators. */ + /* fa_IR or ps_AF. Windows mon_decimal_point is slash and comma, + mon_thousands_sep is comma and dot, correct + are arabic separators. */ + if (!wcscmp (win_locale, L"fa-IR") + || !wcscmp (win_locale, L"ps-AF")) { _monetary_locale->wmon_decimal_point = setlocaleinfo (monetary, 0x066b); @@ -904,7 +916,8 @@ __set_lc_monetary_from_win (const char *name, _monetary_locale->mon_thousands_sep = charfromwchar (monetary, wmon_thousands_sep); /* mon_grouping */ - _monetary_locale->mon_grouping = conv_grouping (lcid, LOCALE_SMONGROUPING, + _monetary_locale->mon_grouping = conv_grouping (win_locale, + LOCALE_SMONGROUPING, &lc_monetary_ptr); /* positive_sign */ _monetary_locale->wpositive_sign = getlocaleinfo (monetary, @@ -915,33 +928,33 @@ __set_lc_monetary_from_win (const char *name, LOCALE_SNEGATIVESIGN); _monetary_locale->negative_sign = charfromwchar (monetary, wnegative_sign); /* int_frac_digits */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_IINTLCURRDIGITS); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_IINTLCURRDIGITS); _monetary_locale->int_frac_digits = lc_monetary_ptr++; /* frac_digits */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_ICURRDIGITS); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_ICURRDIGITS); _monetary_locale->frac_digits = lc_monetary_ptr++; /* p_cs_precedes and int_p_cs_precedes */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_IPOSSYMPRECEDES); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_IPOSSYMPRECEDES); _monetary_locale->p_cs_precedes = _monetary_locale->int_p_cs_precedes = lc_monetary_ptr++; /* p_sep_by_space and int_p_sep_by_space */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_IPOSSEPBYSPACE); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_IPOSSEPBYSPACE); _monetary_locale->p_sep_by_space = _monetary_locale->int_p_sep_by_space = lc_monetary_ptr++; /* n_cs_precedes and int_n_cs_precedes */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_INEGSYMPRECEDES); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_INEGSYMPRECEDES); _monetary_locale->n_cs_precedes = _monetary_locale->int_n_cs_precedes = lc_monetary_ptr++; /* n_sep_by_space and int_n_sep_by_space */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_INEGSEPBYSPACE); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_INEGSEPBYSPACE); _monetary_locale->n_sep_by_space = _monetary_locale->int_n_sep_by_space = lc_monetary_ptr++; /* p_sign_posn and int_p_sign_posn */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_IPOSSIGNPOSN); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_IPOSSIGNPOSN); _monetary_locale->p_sign_posn = _monetary_locale->int_p_sign_posn = lc_monetary_ptr++; /* n_sign_posn and int_n_sign_posn */ - *lc_monetary_ptr = (char) getlocaleint (lcid, LOCALE_INEGSIGNPOSN); + *lc_monetary_ptr = (char) getlocaleint (LOCALE_INEGSIGNPOSN); _monetary_locale->n_sign_posn = _monetary_locale->int_n_sign_posn = lc_monetary_ptr++; } @@ -970,10 +983,11 @@ __set_lc_messages_from_win (const char *name, char **lc_messages_buf, wctomb_p f_wctomb, const char *charset) { - LCID lcid = __get_lcid_from_locale (name); - if (lcid == (LCID) -1) - return lcid; - if (!lcid && !strcmp (charset, "ASCII")) + wchar_t win_locale[ENCODING_LEN + 1]; + int ret = __get_rfc5646_from_locale (name, win_locale); + if (ret < 0) + return ret; + if (!ret && !strcmp (charset, "ASCII")) return 0; char locale[ENCODING_LEN + 1]; @@ -981,7 +995,7 @@ __set_lc_messages_from_win (const char *name, lc_msg_t *msg = NULL; /* C.foo is just a copy of "C" with fixed charset. */ - if (!lcid) + if (!ret) memcpy (_messages_locale, _C_messages_locale, sizeof (struct lc_messages_T)); else { @@ -1012,7 +1026,7 @@ __set_lc_messages_from_win (const char *name, target charset are simply ignored, as on Linux. */ size_t len = 0; len += (strlen (charset) + 1); - if (lcid) + if (ret) { len += lc_wcstombs (f_wctomb, NULL, msg->yesexpr, 0) + 1; len += lc_wcstombs (f_wctomb, NULL, msg->noexpr, 0) + 1; @@ -1036,7 +1050,7 @@ __set_lc_messages_from_win (const char *name, /* codeset */ _messages_locale->codeset = c; c = stpcpy (c, charset) + 1; - if (lcid) + if (ret) { _messages_locale->yesexpr = (const char *) c; len = lc_wcstombs (f_wctomb, c, msg->yesexpr, lc_messages_end - c); @@ -1065,7 +1079,7 @@ __set_lc_messages_from_win (const char *name, const struct lc_collate_T _C_collate_locale = { - 0, + L"", __ascii_mbtowc, "ASCII" }; @@ -1080,10 +1094,11 @@ __collate_load_locale (struct __locale_t *locale, const char *name, char *bufp = NULL; struct lc_collate_T *cop = NULL; - LCID lcid = __get_lcid_from_locale (name); - if (lcid == (LCID) -1) - return -1; - if (lcid) + wchar_t win_locale[ENCODING_LEN + 1]; + int ret = __get_rfc5646_from_locale (name, win_locale); + if (ret < 0) + return ret; + if (ret) { bufp = (char *) malloc (1); /* dummy */ if (!bufp) @@ -1094,12 +1109,12 @@ __collate_load_locale (struct __locale_t *locale, const char *name, free (bufp); return -1; } - cop->lcid = lcid; + wcscpy (cop->win_locale, win_locale); cop->mbtowc = (mbtowc_p) f_mbtowc; stpcpy (cop->codeset, charset); } struct __lc_cats tmp = locale->lc_cat[LC_COLLATE]; - locale->lc_cat[LC_COLLATE].ptr = lcid == 0 ? &_C_collate_locale : cop; + locale->lc_cat[LC_COLLATE].ptr = !win_locale[0] ? &_C_collate_locale : cop; locale->lc_cat[LC_COLLATE].buf = bufp; /* If buf is not NULL, both pointers have been alloc'ed */ if (tmp.buf) @@ -1119,11 +1134,11 @@ wcscoll_l (const wchar_t *__restrict ws1, const wchar_t *__restrict ws2, struct __locale_t *locale) { int ret; - LCID collate_lcid = __get_collate_locale (locale)->lcid; + const wchar_t *collate_locale = __get_collate_locale (locale)->win_locale; - if (!collate_lcid) + if (!collate_locale[0]) return wcscmp (ws1, ws2); - ret = CompareStringW (collate_lcid, 0, ws1, -1, ws2, -1); + ret = CompareStringEx (collate_locale, 0, ws1, -1, ws2, -1, NULL, NULL, 0); if (!ret) set_errno (EINVAL); return ret - CSTR_EQUAL; @@ -1143,12 +1158,10 @@ strcoll_l (const char *__restrict s1, const char *__restrict s2, wchar_t *ws1, *ws2; tmp_pathbuf tp; int ret; - LCID collate_lcid = __get_collate_locale (locale)->lcid; + const wchar_t *collate_locale = __get_collate_locale (locale)->win_locale; - if (!collate_lcid) + if (!collate_locale[0]) return strcmp (s1, s2); - /* The ANSI version of CompareString uses the default charset of the lcid, - so we must use the Unicode version. */ mbtowc_p collate_mbtowc = __get_collate_locale (locale)->mbtowc; n1 = lc_mbstowcs (collate_mbtowc, NULL, s1, 0) + 1; ws1 = (n1 > NT_MAX_PATH ? (wchar_t *) malloc (n1 * sizeof (wchar_t)) @@ -1158,7 +1171,7 @@ strcoll_l (const char *__restrict s1, const char *__restrict s2, ws2 = (n2 > NT_MAX_PATH ? (wchar_t *) malloc (n2 * sizeof (wchar_t)) : tp.w_get ()); lc_mbstowcs (collate_mbtowc, ws2, s2, n2); - ret = CompareStringW (collate_lcid, 0, ws1, -1, ws2, -1); + ret = CompareStringEx (collate_locale, 0, ws1, -1, ws2, -1, NULL, NULL, 0); if (n1 > NT_MAX_PATH) free (ws1); if (n2 > NT_MAX_PATH) @@ -1350,15 +1363,15 @@ wcsxfrm_l (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn, struct __locale_t *locale) { size_t ret; - LCID collate_lcid = __get_collate_locale (locale)->lcid; + const wchar_t *collate_locale = __get_collate_locale (locale)->win_locale; - if (!collate_lcid) + if (!collate_locale[0]) return wcslcpy (ws1, ws2, wsn); /* Don't use LCMAP_SORTKEY in conjunction with LCMAP_BYTEREV. The cchDest parameter is used as byte count with LCMAP_SORTKEY but as char count with LCMAP_BYTEREV. */ - ret = LCMapStringW (collate_lcid, LCMAP_SORTKEY, ws2, -1, ws1, - wsn * sizeof (wchar_t)); + ret = LCMapStringEx (collate_locale, LCMAP_SORTKEY, ws2, -1, ws1, + wsn * sizeof (wchar_t), NULL, NULL, 0); if (ret) { ret /= sizeof (wchar_t); @@ -1380,7 +1393,8 @@ wcsxfrm_l (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn, set_errno (EINVAL); else { - ret = LCMapStringW (collate_lcid, LCMAP_SORTKEY, ws2, -1, NULL, 0); + ret = LCMapStringEx (collate_locale, LCMAP_SORTKEY, ws2, -1, + NULL, 0, NULL, NULL, 0); if (ret) wsn = ret / sizeof (wchar_t); } @@ -1401,12 +1415,10 @@ strxfrm_l (char *__restrict s1, const char *__restrict s2, size_t sn, size_t n2; wchar_t *ws2; tmp_pathbuf tp; - LCID collate_lcid = __get_collate_locale (locale)->lcid; + const wchar_t *collate_locale = __get_collate_locale (locale)->win_locale; - if (!collate_lcid) + if (!collate_locale[0]) return strlcpy (s1, s2, sn); - /* The ANSI version of LCMapString uses the default charset of the lcid, - so we must use the Unicode version. */ mbtowc_p collate_mbtowc = __get_collate_locale (locale)->mbtowc; n2 = lc_mbstowcs (collate_mbtowc, NULL, s2, 0) + 1; ws2 = (n2 > NT_MAX_PATH ? (wchar_t *) malloc (n2 * sizeof (wchar_t)) @@ -1415,8 +1427,8 @@ strxfrm_l (char *__restrict s1, const char *__restrict s2, size_t sn, { lc_mbstowcs (collate_mbtowc, ws2, s2, n2); /* The sort key is a NUL-terminated byte string. */ - ret = LCMapStringW (collate_lcid, LCMAP_SORTKEY, ws2, -1, - (PWCHAR) s1, sn); + ret = LCMapStringEx (collate_locale, LCMAP_SORTKEY, ws2, -1, + (PWCHAR) s1, sn, NULL, NULL, 0); } if (ret == 0) { @@ -1424,7 +1436,8 @@ strxfrm_l (char *__restrict s1, const char *__restrict s2, size_t sn, if (!ws2 || GetLastError () != ERROR_INSUFFICIENT_BUFFER) set_errno (EINVAL); else - ret = LCMapStringW (collate_lcid, LCMAP_SORTKEY, ws2, -1, NULL, 0); + ret = LCMapStringEx (collate_locale, LCMAP_SORTKEY, ws2, -1, + NULL, 0, NULL, NULL, 0); } if (ws2 && n2 > NT_MAX_PATH) free (ws2); @@ -1442,20 +1455,30 @@ strxfrm (char *__restrict s1, const char *__restrict s2, size_t sn) /* Fetch default ANSI codepage from locale info and generate a setlocale compatible character set code. Called from newlib's setlocale(), if the charset isn't given explicitely in the POSIX compatible locale specifier. */ + +/* FIXME: Check all locales against their Linux counterpart again and + make sure the codeset conversion is correct. + FIXME: Perhaps, convert to locale names only. + FIXME: Perhaps, maintain a sorted list of Linux locales and their + default codesets. */ extern "C" void __set_charset_from_locale (const char *locale, char *charset) { UINT cp; - LCID lcid = __get_lcid_from_locale (locale); + wchar_t win_locale[ENCODING_LEN + 1]; + + int ret = __get_rfc5646_from_locale (locale, win_locale); wchar_t wbuf[9]; /* "C" locale, or invalid locale? */ - if (lcid == 0 || lcid == (LCID) -1) + if (ret <= 0) cp = 20127; - else if (!GetLocaleInfoW (lcid, + else if (!GetLocaleInfoEx (win_locale, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (PWCHAR) &cp, sizeof cp)) cp = 0; + /* For simplicity, we still convert to LCID here. */ + LCID lcid = LocaleNameToLCID (win_locale, 0); /* Translate codepage and lcid to a charset closely aligned with the default charsets defined in Glibc. */ const char *cs; @@ -1481,11 +1504,12 @@ __set_charset_from_locale (const char *locale, char *charset) cs = "BIG5"; break; case 1250: - if (lcid == 0x181a /* sr_BA (Serbian Language/Bosnia + if (lcid == 0x181a /* sr_BA (Serbian/Bosnia and Herzegovina) */ - || lcid == 0x241a /* sr_RS (Serbian Language/Serbia) */ - || lcid == 0x2c1a /* sr_ME (Serbian Language/Montenegro)*/ - || lcid == 0x0442) /* tk_TM (Turkmen/Turkmenistan) */ + || lcid == 0x241a /* sr_RS (Serbian/Serbia) */ + || lcid == 0x2c1a /* sr_ME (Serbian/Montenegro)*/ + || lcid == 0x0442 /* tk_TM (Turkmen/Turkmenistan) */ + || !wcscmp (win_locale, L"sr-Latn-XK")) /* (Serbian/Kosovo) */ cs = "UTF-8"; else if (lcid == 0x041c) /* sq_AL (Albanian/Albania) */ cs = "ISO-8859-1"; @@ -1498,17 +1522,21 @@ __set_charset_from_locale (const char *locale, char *charset) || lcid == 0x281a /* sr_RS (Serbian Language/Serbia) */ || lcid == 0x301a /* sr_ME (Serbian Language/Montenegro)*/ || lcid == 0x0440 /* ky_KG (Kyrgyz/Kyrgyzstan) */ + || lcid == 0x082c /* az_AZ@cyrillic (Azerbaijani/Azerbaijan) */ || lcid == 0x0843 /* uz_UZ (Uzbek/Uzbekistan) */ /* tt_RU (Tatar/Russia), IQTElif alphabet */ || (lcid == 0x0444 && has_modifier ("@iqtelif")) - || lcid == 0x0450) /* mn_MN (Mongolian/Mongolia) */ + || lcid == 0x0450 /* mn_MN (Mongolian/Mongolia) */ + || !wcscmp (win_locale, L"sr-Cyrl-XK")) /* (Serbian/Kosovo) */ cs = "UTF-8"; else if (lcid == 0x0423) /* be_BY (Belarusian/Belarus) */ cs = has_modifier ("@latin") ? "UTF-8" : "CP1251"; - else if (lcid == 0x0402) /* bg_BG (Bulgarian/Bulgaria) */ + else if (lcid == 0x0402 /* bg_BG (Bulgarian/Bulgaria) */ + || lcid == 0x0423) /* be_BY (Belarusian/Belarus) */ cs = "CP1251"; - else if (lcid == 0x0422) /* uk_UA (Ukrainian/Ukraine) */ + else if (lcid == 0x0422 /* uk_UA (Ukrainian/Ukraine) */ + || !wcscmp (win_locale, L"ru-UA")) /* (Russian/Ukraine) */ cs = "KOI8-U"; else if (lcid == 0x0428) /* tg_TJ (Tajik/Tajikistan) */ cs = "KOI8-T"; @@ -1532,7 +1560,8 @@ __set_charset_from_locale (const char *locale, char *charset) || lcid == 0x0832 /* tn_BW (Tswana/Botswana) */ || lcid == 0x0432 /* tn_ZA (Tswana/South Africa) */ || lcid == 0x0488 /* wo_SN (Wolof/Senegal) */ - || lcid == 0x046a) /* yo_NG (Yoruba/Nigeria) */ + || lcid == 0x046a /* yo_NG (Yoruba/Nigeria) */ + || lcid == 0x085f) /* ber_DZ (Tamazight/Algeria) */ cs = "UTF-8"; else if (lcid == 0x042e) /* hsb_DE (Upper Sorbian/Germany) */ cs = "ISO-8859-2"; diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 5acfd4e52e..9e29257cb3 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -827,7 +827,7 @@ p_b_term(struct parse *p, cset *cs) CHadd(p, cs, start); else { #ifdef __CYGWIN__ - if (!__get_current_collate_locale ()->lcid) { + if (!__get_current_collate_locale ()->win_locale[0]) { #else if (__collate_load_error) { #endif From 0ab22f0af975e114003ec6bfa5d72f66f5999c44 Mon Sep 17 00:00:00 2001 From: Takashi Yano <takashi.yano@nifty.ne.jp> Date: Sat, 25 Feb 2023 10:28:34 +0900 Subject: [PATCH 203/767] Cygwin: dsp: Fix SNDCTL_DSP_{POST,SYNC} ioctl() behaviour. Previously, SNDCTL_DSP_POST and SNDCTL_DSP_SYNC were implemented wrongly. Due to this issue, module-oss of pulseaudio generates choppy sound when SNDCTL_DSP_POST is called. This patch fixes that. Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> --- winsup/cygwin/fhandler/dsp.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 16db6bb29c..27f0a50ceb 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -133,6 +133,8 @@ class fhandler_dev_dsp::Audio_out: public Audio int freq_; int bits_; int channels_; + + friend fhandler_dev_dsp; }; static void CALLBACK waveIn_callback (HWAVEIN hWave, UINT msg, @@ -1429,11 +1431,16 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) return 0; CASE (SNDCTL_DSP_POST) + if (audio_out_) + audio_out_->sendcurrent (); // force out last block whatever size.. + return 0; + CASE (SNDCTL_DSP_SYNC) - // Stop audio out device - close_audio_out (); - // Stop audio in device - close_audio_in (); + if (audio_out_) + { + audio_out_->sendcurrent (); // force out last block whatever size.. + audio_out_->waitforallsent (); // block till finished.. + } return 0; default: From 98aed7943ee3000281b1226e5a68152a3da7358f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 13:20:05 +0100 Subject: [PATCH 204/767] Cygwin: locale(1): fix typo Windows locales need a dash instead of an underscore. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/locale.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 193e91e3fa..fffac920d8 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -367,7 +367,7 @@ print_all_locales_proc (LPWSTR loc_name, DWORD info, LPARAM param) wchar_t scriptless_win_locale[32]; wchar_t default_iso15924[32]; - wcpcpy (wcpcpy (wcpcpy (scriptless_win_locale, iso639), L"_"), + wcpcpy (wcpcpy (wcpcpy (scriptless_win_locale, iso639), L"-"), iso3166); if ((GetLocaleInfoEx (scriptless_win_locale, LOCALE_SSCRIPTS, default_iso15924, 32) From 2b052b3c5080c1b601129fcceda5f6537a442c87 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 13:19:27 +0100 Subject: [PATCH 205/767] Cygwin: fully support KOI8-T codeset Commit 89eb4bce152f was pretty half-hearted, missing the codepage character type tables and wctomb/mbtowc mappings. Fixes: 89eb4bce152f ("Cygwin: support KOI8-T codeset") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- newlib/libc/ctype/ctype_cp.h | 33 +++++++++++++++++++++++++++++++-- newlib/libc/stdlib/mbtowc_r.c | 12 ++++++++++-- newlib/libc/stdlib/wctomb_r.c | 11 +++++++++-- winsup/cygwin/ctype.cc | 2 +- 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/newlib/libc/ctype/ctype_cp.h b/newlib/libc/ctype/ctype_cp.h index 9370778a28..192cfa43de 100644 --- a/newlib/libc/ctype/ctype_cp.h +++ b/newlib/libc/ctype/ctype_cp.h @@ -469,13 +469,31 @@ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_PT154_255 _L +#define _CTYPE_CP103_128_254 \ + _L, _L, _P, _U, _P, _P, _P, _P, \ + 0, _P, _L, _P, _U, _L, _U, 0, \ + _U, _P, _P, _P, _P, _P, _P, _P, \ + 0, _P, 0, _P, 0, 0, 0, 0, \ + 0, _L, _U, _L, _P, _L, _P, _P, \ + 0, 0, 0, _P, _P, _P, _P, 0, \ + _P, _P, _P, _U, 0, _U, _P, _P, \ + 0, _P, 0, _P, 0, 0, 0, _P, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U +#define _CTYPE_CP103_255 _U #if defined(ALLOW_NEGATIVE_CTYPE_INDEX) #ifndef __CYGWIN__ static const #endif -char __ctype_cp[26][128 + 256] = { +char __ctype_cp[27][128 + 256] = { { _CTYPE_CP437_128_254, 0, _CTYPE_DATA_0_127, @@ -632,11 +650,17 @@ char __ctype_cp[26][128 + 256] = { _CTYPE_PT154_128_254, _CTYPE_PT154_255 }, + { _CTYPE_CP103_128_254, + 0, + _CTYPE_DATA_0_127, + _CTYPE_CP103_128_254, + _CTYPE_CP103_255 + }, }; #else /* !defined(ALLOW_NEGATIVE_CTYPE_INDEX) */ -static const char __ctype_cp[26][1 + 256] = { +static const char __ctype_cp[27][1 + 256] = { { 0, _CTYPE_DATA_0_127, _CTYPE_CP437_128_254, @@ -767,6 +791,11 @@ static const char __ctype_cp[26][1 + 256] = { _CTYPE_PT154_128_254, _CTYPE_PT154_255 }, + { 0, + _CTYPE_DATA_0_127, + _CTYPE_CP103_128_254, + _CTYPE_CP103_255 + }, }; #endif /* ALLOW_NEGATIVE_CTYPE_INDEX */ diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c index ca876f9a02..01e596db8b 100644 --- a/newlib/libc/stdlib/mbtowc_r.c +++ b/newlib/libc/stdlib/mbtowc_r.c @@ -487,7 +487,14 @@ __cp_102_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, return ___cp_mbtowc (r, pwc, s, n, 25, state); } -static mbtowc_p __cp_xxx_mbtowc[26] = { +static int +__cp_103_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, + mbstate_t *state) +{ + return ___cp_mbtowc (r, pwc, s, n, 26, state); +} + +static mbtowc_p __cp_xxx_mbtowc[27] = { __cp_437_mbtowc, __cp_720_mbtowc, __cp_737_mbtowc, @@ -513,7 +520,8 @@ static mbtowc_p __cp_xxx_mbtowc[26] = { __cp_20866_mbtowc, __cp_21866_mbtowc, __cp_101_mbtowc, - __cp_102_mbtowc + __cp_102_mbtowc, + __cp_103_mbtowc, }; /* val *MUST* be valid! All checks for validity are supposed to be diff --git a/newlib/libc/stdlib/wctomb_r.c b/newlib/libc/stdlib/wctomb_r.c index a7f87cd9e2..3081e93702 100644 --- a/newlib/libc/stdlib/wctomb_r.c +++ b/newlib/libc/stdlib/wctomb_r.c @@ -611,7 +611,13 @@ __cp_102_wctomb (struct _reent *r, char *s, wchar_t _wchar, mbstate_t *state) return ___cp_wctomb (r, s, _wchar, 25, state); } -static wctomb_p __cp_xxx_wctomb[26] = { +static int +__cp_103_wctomb (struct _reent *r, char *s, wchar_t _wchar, mbstate_t *state) +{ + return ___cp_wctomb (r, s, _wchar, 26, state); +} + +static wctomb_p __cp_xxx_wctomb[27] = { __cp_437_wctomb, __cp_720_wctomb, __cp_737_wctomb, @@ -637,7 +643,8 @@ static wctomb_p __cp_xxx_wctomb[26] = { __cp_20866_wctomb, __cp_21866_wctomb, __cp_101_wctomb, - __cp_102_wctomb + __cp_102_wctomb, + __cp_103_wctomb, }; /* val *MUST* be valid! All checks for validity are supposed to be diff --git a/winsup/cygwin/ctype.cc b/winsup/cygwin/ctype.cc index 7bdc78edf0..d99e331baa 100644 --- a/winsup/cygwin/ctype.cc +++ b/winsup/cygwin/ctype.cc @@ -16,7 +16,7 @@ extern char _ctype_b[128 + 256]; time-critical anyway. */ extern int __iso_8859_index (const char *charset_ext); /* Newlib */ extern int __cp_index (const char *charset_ext); /* Newlib */ -extern const char __ctype_cp[22][128 + 256]; /* Newlib */ +extern const char __ctype_cp[27][128 + 256]; /* Newlib */ extern const char __ctype_iso[15][128 + 256]; /* Newlib */ void From f20aee9091518214a1e8dfcdc707024e9f8c1331 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 13:23:20 +0100 Subject: [PATCH 206/767] ctype_cp.h/ctype_iso.h: clean whitespace Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- newlib/libc/ctype/ctype_cp.h | 56 +++++++++++++++++------------------ newlib/libc/ctype/ctype_iso.h | 30 +++++++++---------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/newlib/libc/ctype/ctype_cp.h b/newlib/libc/ctype/ctype_cp.h index 192cfa43de..f6aa2e582f 100644 --- a/newlib/libc/ctype/ctype_cp.h +++ b/newlib/libc/ctype/ctype_cp.h @@ -1,8 +1,8 @@ -/* ctype table definitions for Windows codepage charsets. +/* ctype table definitions for Windows codepage charsets. Included by ctype_.c. */ #define _CTYPE_CP437_128_254 \ - _U, _L, _L, _L, _L, _L, _L, _L, \ + _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _L, _U, _U, _P, _P, _P, _P, _P, \ @@ -20,7 +20,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP437_255 _S|_B #define _CTYPE_CP720_128_254 \ - 0, 0, _L, _L, 0, _L, 0, _L, \ + 0, 0, _L, _L, 0, _L, 0, _L, \ _L, _L, _L, _L, _L, 0, 0, 0, \ 0, _P, _P, _L, _P, _P, _L, _L, \ _U|_L, _U|_L, _U|_L, _U|_L, _P, _U|_L, _U|_L, _U|_L, \ @@ -38,7 +38,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP720_255 _S|_B #define _CTYPE_CP737_128_254 \ - _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _L, _L, _L, _L, _L, _L, _L, _L, \ @@ -56,7 +56,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP737_255 _S|_B #define _CTYPE_CP775_128_254 \ - _U, _L, _L, _L, _L, _L, _L, _L, \ + _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _U, _L, _L, _U, _U, _U, \ _U, _L, _U, _L, _L, _U, _P, _U, \ _L, _U, _U, _L, _P, _U, _P, _P, \ @@ -74,7 +74,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP775_255 _S|_B #define _CTYPE_CP850_128_254 \ - _U, _L, _L, _L, _L, _L, _L, _L, \ + _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _L, _U, _U, _L, _P, _U, _P, _L, \ @@ -92,7 +92,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP850_255 _S|_B #define _CTYPE_CP852_128_254 \ - _U, _L, _L, _L, _L, _L, _L, _L, \ + _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _U, _L, _L, _U, _U, _U, \ _U, _U, _L, _L, _L, _U, _L, _U, \ _L, _U, _U, _U, _L, _U, _P, _L, \ @@ -110,7 +110,7 @@ _P, _P, _P, _L, _U, _L, _P #define _CTYPE_CP852_255 _S|_B #define _CTYPE_CP855_128_254 \ - _L, _U, _L, _U, _L, _U, _L, _U, \ + _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ _L, _U, _L, _U, _L, _U, _L, _U, \ @@ -128,7 +128,7 @@ _U, _L, _U, _L, _U, _P, _P #define _CTYPE_CP855_255 _S|_B #define _CTYPE_CP857_128_254 \ - _U, _L, _L, _L, _L, _L, _L, _L, \ + _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _U, _U, _U, _L, _P, _U, _U, _L, \ @@ -146,7 +146,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP857_255 _S|_B #define _CTYPE_CP858_128_254 \ - _U, _L, _L, _L, _L, _L, _L, _L, \ + _U, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _U, _U, \ _U, _L, _U, _L, _L, _L, _L, _L, \ _L, _U, _U, _L, _P, _U, _P, _L, \ @@ -164,7 +164,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP858_255 _S|_B #define _CTYPE_CP862_128_254 \ - _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ + _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, _U|_L, \ _U|_L, _U|_L, _U|_L, _P, _P, _P, _P, _L, \ @@ -182,7 +182,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP862_255 _S|_B #define _CTYPE_CP866_128_254 \ - _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ @@ -200,7 +200,7 @@ _P, _P, _P, _P, _P, _P, _P #define _CTYPE_CP866_255 _S|_B #define _CTYPE_CP874_128_254 \ - _P, 0, 0, 0, 0, _P, 0, 0, \ + _P, 0, 0, 0, 0, _P, 0, 0, \ 0, 0, 0, 0, 0, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, 0, 0, 0, 0, 0, 0, 0, \ @@ -218,7 +218,7 @@ _P, _P, _U|_L, _U|_L, 0, 0, 0 #define _CTYPE_CP874_255 0 #define _CTYPE_CP1125_128_254 \ - _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ _U, _U, _U, _U, _U, _U, _U, _U, \ @@ -236,7 +236,7 @@ _U, _L, _P, _P, _P, _P, _P #define _CTYPE_CP1125_255 _S|_B #define _CTYPE_CP1250_128_254 \ - _P, 0, _P, 0, _P, _P, _P, _P, \ + _P, 0, _P, 0, _P, _P, _P, _P, \ 0, _P, _U, _P, _U, _U, _U, _U, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, _L, _P, _L, _L, _L, _L, \ @@ -254,7 +254,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1250_255 _P #define _CTYPE_CP1251_128_254 \ - _U, _U, _P, _L, _P, _P, _P, _P, \ + _U, _U, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, _U, _U, _U, \ _L, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, _L, _P, _L, _L, _L, _L, \ @@ -272,7 +272,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1251_255 _L #define _CTYPE_CP1252_128_254 \ - _P, 0, _P, _L, _P, _P, _P, _P, \ + _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, _U, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _L, _P, _L, 0, _L, _U, \ @@ -290,7 +290,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1252_255 _L #define _CTYPE_CP1253_128_254 \ - _P, 0, _P, _L, _P, _P, _P, _P, \ + _P, 0, _P, _L, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, 0, 0, 0, \ @@ -308,7 +308,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1253_255 _L #define _CTYPE_CP1254_128_254 \ - _P, 0, _P, _L, _P, _P, _P, _P, \ + _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _L, _P, _L, 0, 0, _U, \ @@ -326,7 +326,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1254_255 _L #define _CTYPE_CP1255_128_254 \ - _P, 0, _P, _L, _P, _P, _P, _P, \ + _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, 0, _P, 0, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, 0, _P, 0, 0, 0, 0, \ @@ -344,7 +344,7 @@ _U|_L, _U|_L, _U|_L, 0, 0, _P, _P #define _CTYPE_CP1255_255 0 #define _CTYPE_CP1256_128_254 \ - _P, _U|_L, _P, _L, _P, _P, _P, _P, \ + _P, _U|_L, _P, _L, _P, _P, _P, _P, \ _P, _P, _U|_L, _P, _U, _U|_L, _U|_L, _U|_L, \ _U|_L, _P, _P, _P, _P, _P, _P, _P, \ _U|_L, _P, _U|_L, _P, _L, _P, _P, _U|_L, \ @@ -362,7 +362,7 @@ _P, _L, _P, _L, _L, _P, _P #define _CTYPE_CP1256_255 _U|_L #define _CTYPE_CP1257_128_254 \ - _P, 0, _P, 0, _P, _P, _P, _P, \ + _P, 0, _P, 0, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, _P, _P, _P, \ 0, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, _P, _P, 0, \ @@ -380,7 +380,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_CP1257_255 _P #define _CTYPE_CP1258_128_254 \ - _P, 0, _P, _L, _P, _P, _P, _P, \ + _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, 0, _P, _U, 0, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, 0, _P, _L, 0, 0, _U, \ @@ -398,7 +398,7 @@ _L, _L, _L, _L, _L, _L, _P #define _CTYPE_CP1258_255 _L #define _CTYPE_CP20866_128_254 \ - _P, _P, _P, _P, _P, _P, _P, _P, \ + _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _S|_B, _P, _P, _P, _P, _P, \ @@ -416,7 +416,7 @@ _U, _U, _U, _U, _U, _U, _U #define _CTYPE_CP20866_255 _U #define _CTYPE_CP21866_128_254 \ - _P, _P, _P, _P, _P, _P, _P, _P, \ + _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _S|_B, _P, _P, _P, _P, _P, \ @@ -434,7 +434,7 @@ _U, _U, _U, _U, _U, _U, _U #define _CTYPE_CP21866_255 _U #define _CTYPE_GEORGIAN_PS_128_254 \ - _P, 0, _P, _L, _P, _P, _P, _P, \ + _P, 0, _P, _L, _P, _P, _P, _P, \ _P, _P, _U, _P, _U, _U, 0, 0, \ 0, _P, _P, _P, _P, _P, _P, _P, \ _P, _P, _L, _P, _L, 0, _L, _U, \ @@ -452,7 +452,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_GEORGIAN_PS_255 _L #define _CTYPE_PT154_128_254 \ - _U, _U, _U, _L, _P, _P, _U, _U, \ + _U, _U, _U, _L, _P, _P, _U, _U, \ _U, _L, _U, _U, _U, _U, _U, _U, \ _L, _P, _P, _P, _P, _P, _P, _P, \ _L, _L, _L, _L, _L, _L, _L, _L, \ @@ -470,7 +470,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_PT154_255 _L #define _CTYPE_CP103_128_254 \ - _L, _L, _P, _U, _P, _P, _P, _P, \ + _L, _L, _P, _U, _P, _P, _P, _P, \ 0, _P, _L, _P, _U, _L, _U, 0, \ _U, _P, _P, _P, _P, _P, _P, _P, \ 0, _P, 0, _P, 0, 0, 0, 0, \ diff --git a/newlib/libc/ctype/ctype_iso.h b/newlib/libc/ctype/ctype_iso.h index 60087dc92d..616e4cc03a 100644 --- a/newlib/libc/ctype/ctype_iso.h +++ b/newlib/libc/ctype/ctype_iso.h @@ -1,4 +1,4 @@ -/* ctype table definitions for ISO-8859-x charsets. +/* ctype table definitions for ISO-8859-x charsets. Included by ctype_.c. */ #define _CTYPE_ISO_8859_1_128_254 \ @@ -20,7 +20,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_1_255 _L #define _CTYPE_ISO_8859_2_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -38,7 +38,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_2_255 _P #define _CTYPE_ISO_8859_3_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -56,7 +56,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_3_255 _P #define _CTYPE_ISO_8859_4_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -74,7 +74,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_4_255 _L #define _CTYPE_ISO_8859_5_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -92,7 +92,7 @@ _L, _L, _L, _L, _L, _P, _L #define _CTYPE_ISO_8859_5_255 _L #define _CTYPE_ISO_8859_6_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -110,7 +110,7 @@ 0, 0, 0, 0, 0, 0, 0 #define _CTYPE_ISO_8859_6_255 0 #define _CTYPE_ISO_8859_7_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -128,7 +128,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_7_255 0 #define _CTYPE_ISO_8859_8_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -146,7 +146,7 @@ _U|_L, _U|_L, _U|_L, 0, 0, _P, _P #define _CTYPE_ISO_8859_8_255 0 #define _CTYPE_ISO_8859_9_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -164,7 +164,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_9_255 _L #define _CTYPE_ISO_8859_10_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -182,7 +182,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_10_255 _L #define _CTYPE_ISO_8859_11_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -200,7 +200,7 @@ _U|_L, _U|_L, _U|_L, _U|_L, 0, 0, 0 #define _CTYPE_ISO_8859_11_255 0 #define _CTYPE_ISO_8859_13_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -218,7 +218,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_13_255 _P #define _CTYPE_ISO_8859_14_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -236,7 +236,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_14_255 _L #define _CTYPE_ISO_8859_15_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ @@ -254,7 +254,7 @@ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_ISO_8859_15_255 _L #define _CTYPE_ISO_8859_16_128_254 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ + _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ _C, _C, _C, _C, _C, _C, _C, _C, \ From 57bac33359db23ea74f3d84374dea1da536ed1e6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 15:09:12 +0100 Subject: [PATCH 207/767] Cygwin: locale: fix devanagar modifier Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 2 +- winsup/utils/locale.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 60bababd26..c2f9c08c9f 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -125,7 +125,7 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) idx = 0; else if (!strcmp (modifier, "cyrillic")) idx = 1; - else if (!strcmp (modifier, "devanagari")) + else if (!strcmp (modifier, "devanagar")) idx = 2; else if (!strcmp (modifier, "adlam")) idx = 3; diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index fffac920d8..2c7845fc24 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -380,7 +380,7 @@ print_all_locales_proc (LPWSTR loc_name, DWORD info, LPARAM param) else if (!wcscmp (iso15924, L"Cyrl;")) stpcpy (c, "@cyrillic"); else if (!wcscmp (iso15924, L"Deva;")) - stpcpy (c, "@devanagari"); + stpcpy (c, "@devanagar"); else if (!wcscmp (iso15924, L"Adlm;")) stpcpy (c, "@adlam"); else From 7b591704b886ab60a6c31363bd776acafb32ed09 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 16:06:34 +0100 Subject: [PATCH 208/767] Cygwin: locale: new script creating linux default codeset mapping New script creating a mapping table from locale to default codeset for this locale. We use that in Cygwin now to generate the own default codeset mapping based on Linux locale names. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- .../fetch-lc-def-codesets-from-linux | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux new file mode 100755 index 0000000000..c8c60ecac3 --- /dev/null +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux @@ -0,0 +1,48 @@ +#!/bin/bash +( + cat <<-EOF + /* This struct of default codesets has been generated by fetching + locale data from a Linux system using $(rpm -q glibc | head -1) on $(date +%F) */ + struct default_codeset_t + { + const char *locale; + const char *codeset; + } default_codeset[] = + { + EOF + while read line + do + locale=$(echo "${line}" | awk '/^locale:/{ print $2; }') + if [ -z "${locale}" ] + then + continue + fi + # No aliases + idx=$(expr index "${locale}" '_') + if [ "${idx}" -eq 0 ] + then + continue + fi + # No explicit codesets + idx=$(expr index "${locale}" '.') + if [ "${idx}" -ne 0 ] + then + continue + fi + while read line2 + do + codeset=$(echo "${line2}" | awk '/codeset/{ print $3; }') + if [ -n "${codeset}" ] + then + # Translate into internal codeset names. */ + case "${codeset}" in + BIG5*) codeset="BIG5";; + *) ;; + esac + printf " { \"%s\", \"%s\" },\n" "${locale}" "${codeset}" + break + fi + done + done <<<$(locale -av) + echo "};" +) > lc_def_codesets.h From 2483e54be852e66d1a96a0da2af8324b51ef8b65 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 16:11:54 +0100 Subject: [PATCH 209/767] Cygwin: locale: Set default charset from Linux locale -> codeset mapping Generate lc_def_codeset.h header containing the default mapping from locale to codeset on Linux. Use this mapping in __set_charset_from_locale in the first place. For every locale not covered by this table, just map Windows codepages to equivalent codesets used on Linux/Unix, getting rid of LCIDs entirely. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- .../cygwin/local_includes/lc_def_codesets.h | 342 ++++++++++++++++++ winsup/cygwin/nlsfuncs.cc | 156 ++------ 2 files changed, 376 insertions(+), 122 deletions(-) create mode 100644 winsup/cygwin/local_includes/lc_def_codesets.h diff --git a/winsup/cygwin/local_includes/lc_def_codesets.h b/winsup/cygwin/local_includes/lc_def_codesets.h new file mode 100644 index 0000000000..9c7230391e --- /dev/null +++ b/winsup/cygwin/local_includes/lc_def_codesets.h @@ -0,0 +1,342 @@ +/* This struct of default codesets has been generated by fetching + locale data from a Linux system using glibc-2.36-9.fc37.x86_64 on 2023-02-25 */ +struct default_codeset_t +{ + const char *locale; + const char *codeset; +} default_codeset[] = +{ + { "aa_DJ", "ISO-8859-1" }, + { "aa_ER", "UTF-8" }, + { "aa_ER@saaho", "UTF-8" }, + { "aa_ET", "UTF-8" }, + { "af_ZA", "ISO-8859-1" }, + { "agr_PE", "UTF-8" }, + { "ak_GH", "UTF-8" }, + { "am_ET", "UTF-8" }, + { "an_ES", "ISO-8859-15" }, + { "anp_IN", "UTF-8" }, + { "ar_AE", "ISO-8859-6" }, + { "ar_BH", "ISO-8859-6" }, + { "ar_DZ", "ISO-8859-6" }, + { "ar_EG", "ISO-8859-6" }, + { "ar_IN", "UTF-8" }, + { "ar_IQ", "ISO-8859-6" }, + { "ar_JO", "ISO-8859-6" }, + { "ar_KW", "ISO-8859-6" }, + { "ar_LB", "ISO-8859-6" }, + { "ar_LY", "ISO-8859-6" }, + { "ar_MA", "ISO-8859-6" }, + { "ar_OM", "ISO-8859-6" }, + { "ar_QA", "ISO-8859-6" }, + { "ar_SA", "ISO-8859-6" }, + { "ar_SD", "ISO-8859-6" }, + { "ar_SS", "UTF-8" }, + { "ar_SY", "ISO-8859-6" }, + { "ar_TN", "ISO-8859-6" }, + { "ar_YE", "ISO-8859-6" }, + { "as_IN", "UTF-8" }, + { "ast_ES", "ISO-8859-15" }, + { "ayc_PE", "UTF-8" }, + { "az_AZ", "UTF-8" }, + { "az_IR", "UTF-8" }, + { "be_BY", "CP1251" }, + { "be_BY@latin", "UTF-8" }, + { "bem_ZM", "UTF-8" }, + { "ber_DZ", "UTF-8" }, + { "ber_MA", "UTF-8" }, + { "bg_BG", "CP1251" }, + { "bho_IN", "UTF-8" }, + { "bho_NP", "UTF-8" }, + { "bi_VU", "UTF-8" }, + { "bn_BD", "UTF-8" }, + { "bn_IN", "UTF-8" }, + { "bo_CN", "UTF-8" }, + { "bo_IN", "UTF-8" }, + { "br_FR", "ISO-8859-1" }, + { "br_FR@euro", "ISO-8859-15" }, + { "brx_IN", "UTF-8" }, + { "bs_BA", "ISO-8859-2" }, + { "byn_ER", "UTF-8" }, + { "ca_AD", "ISO-8859-15" }, + { "ca_ES", "ISO-8859-1" }, + { "ca_ES@euro", "ISO-8859-15" }, + { "ca_ES@valencia", "UTF-8" }, + { "ca_FR", "ISO-8859-15" }, + { "ca_IT", "ISO-8859-15" }, + { "ce_RU", "UTF-8" }, + { "chr_US", "UTF-8" }, + { "ckb_IQ", "UTF-8" }, + { "cmn_TW", "UTF-8" }, + { "crh_UA", "UTF-8" }, + { "cs_CZ", "ISO-8859-2" }, + { "csb_PL", "UTF-8" }, + { "cv_RU", "UTF-8" }, + { "cy_GB", "ISO-8859-14" }, + { "da_DK", "ISO-8859-1" }, + { "de_AT", "ISO-8859-1" }, + { "de_AT@euro", "ISO-8859-15" }, + { "de_BE", "ISO-8859-1" }, + { "de_BE@euro", "ISO-8859-15" }, + { "de_CH", "ISO-8859-1" }, + { "de_DE", "ISO-8859-1" }, + { "de_DE@euro", "ISO-8859-15" }, + { "de_IT", "ISO-8859-1" }, + { "de_LU", "ISO-8859-1" }, + { "de_LU@euro", "ISO-8859-15" }, + { "doi_IN", "UTF-8" }, + { "dsb_DE", "UTF-8" }, + { "dv_MV", "UTF-8" }, + { "dz_BT", "UTF-8" }, + { "el_CY", "ISO-8859-7" }, + { "el_GR", "ISO-8859-7" }, + { "el_GR@euro", "ISO-8859-7" }, + { "en_AG", "UTF-8" }, + { "en_AU", "ISO-8859-1" }, + { "en_BW", "ISO-8859-1" }, + { "en_CA", "ISO-8859-1" }, + { "en_DK", "ISO-8859-1" }, + { "en_GB", "ISO-8859-1" }, + { "en_HK", "ISO-8859-1" }, + { "en_IE", "ISO-8859-1" }, + { "en_IE@euro", "ISO-8859-15" }, + { "en_IL", "UTF-8" }, + { "en_IN", "UTF-8" }, + { "en_NG", "UTF-8" }, + { "en_NZ", "ISO-8859-1" }, + { "en_PH", "ISO-8859-1" }, + { "en_SG", "ISO-8859-1" }, + { "en_US", "ISO-8859-1" }, + { "en_ZA", "ISO-8859-1" }, + { "en_ZM", "UTF-8" }, + { "en_ZW", "ISO-8859-1" }, + { "es_AR", "ISO-8859-1" }, + { "es_BO", "ISO-8859-1" }, + { "es_CL", "ISO-8859-1" }, + { "es_CO", "ISO-8859-1" }, + { "es_CR", "ISO-8859-1" }, + { "es_CU", "UTF-8" }, + { "es_DO", "ISO-8859-1" }, + { "es_EC", "ISO-8859-1" }, + { "es_ES", "ISO-8859-1" }, + { "es_ES@euro", "ISO-8859-15" }, + { "es_GT", "ISO-8859-1" }, + { "es_HN", "ISO-8859-1" }, + { "es_MX", "ISO-8859-1" }, + { "es_NI", "ISO-8859-1" }, + { "es_PA", "ISO-8859-1" }, + { "es_PE", "ISO-8859-1" }, + { "es_PR", "ISO-8859-1" }, + { "es_PY", "ISO-8859-1" }, + { "es_SV", "ISO-8859-1" }, + { "es_US", "ISO-8859-1" }, + { "es_UY", "ISO-8859-1" }, + { "es_VE", "ISO-8859-1" }, + { "et_EE", "ISO-8859-1" }, + { "eu_ES", "ISO-8859-1" }, + { "eu_ES@euro", "ISO-8859-15" }, + { "fa_IR", "UTF-8" }, + { "ff_SN", "UTF-8" }, + { "fi_FI", "ISO-8859-1" }, + { "fi_FI@euro", "ISO-8859-15" }, + { "fil_PH", "UTF-8" }, + { "fo_FO", "ISO-8859-1" }, + { "fr_BE", "ISO-8859-1" }, + { "fr_BE@euro", "ISO-8859-15" }, + { "fr_CA", "ISO-8859-1" }, + { "fr_CH", "ISO-8859-1" }, + { "fr_FR", "ISO-8859-1" }, + { "fr_FR@euro", "ISO-8859-15" }, + { "fr_LU", "ISO-8859-1" }, + { "fr_LU@euro", "ISO-8859-15" }, + { "fur_IT", "UTF-8" }, + { "fy_DE", "UTF-8" }, + { "fy_NL", "UTF-8" }, + { "ga_IE", "ISO-8859-1" }, + { "ga_IE@euro", "ISO-8859-15" }, + { "gd_GB", "ISO-8859-15" }, + { "gez_ER", "UTF-8" }, + { "gez_ER@abegede", "UTF-8" }, + { "gez_ET", "UTF-8" }, + { "gez_ET@abegede", "UTF-8" }, + { "gl_ES", "ISO-8859-1" }, + { "gl_ES@euro", "ISO-8859-15" }, + { "gu_IN", "UTF-8" }, + { "gv_GB", "ISO-8859-1" }, + { "ha_NG", "UTF-8" }, + { "hak_TW", "UTF-8" }, + { "he_IL", "ISO-8859-8" }, + { "hi_IN", "UTF-8" }, + { "hif_FJ", "UTF-8" }, + { "hne_IN", "UTF-8" }, + { "hr_HR", "ISO-8859-2" }, + { "hsb_DE", "ISO-8859-2" }, + { "ht_HT", "UTF-8" }, + { "hu_HU", "ISO-8859-2" }, + { "hy_AM", "UTF-8" }, + { "ia_FR", "UTF-8" }, + { "id_ID", "ISO-8859-1" }, + { "ig_NG", "UTF-8" }, + { "ik_CA", "UTF-8" }, + { "is_IS", "ISO-8859-1" }, + { "it_CH", "ISO-8859-1" }, + { "it_IT", "ISO-8859-1" }, + { "it_IT@euro", "ISO-8859-15" }, + { "iu_CA", "UTF-8" }, + { "ja_JP", "EUC-JP" }, + { "ka_GE", "GEORGIAN-PS" }, + { "kab_DZ", "UTF-8" }, + { "kk_KZ", "PT154" }, + { "kl_GL", "ISO-8859-1" }, + { "km_KH", "UTF-8" }, + { "kn_IN", "UTF-8" }, + { "ko_KR", "EUC-KR" }, + { "kok_IN", "UTF-8" }, + { "ks_IN", "UTF-8" }, + { "ks_IN@devanagar", "UTF-8" }, + { "ku_TR", "ISO-8859-9" }, + { "kw_GB", "ISO-8859-1" }, + { "ky_KG", "UTF-8" }, + { "lb_LU", "UTF-8" }, + { "lg_UG", "ISO-8859-10" }, + { "li_BE", "UTF-8" }, + { "li_NL", "UTF-8" }, + { "lij_IT", "UTF-8" }, + { "ln_CD", "UTF-8" }, + { "lo_LA", "UTF-8" }, + { "lt_LT", "ISO-8859-13" }, + { "lv_LV", "ISO-8859-13" }, + { "lzh_TW", "UTF-8" }, + { "mag_IN", "UTF-8" }, + { "mai_IN", "UTF-8" }, + { "mai_NP", "UTF-8" }, + { "mfe_MU", "UTF-8" }, + { "mg_MG", "ISO-8859-15" }, + { "mhr_RU", "UTF-8" }, + { "mi_NZ", "ISO-8859-13" }, + { "miq_NI", "UTF-8" }, + { "mjw_IN", "UTF-8" }, + { "mk_MK", "ISO-8859-5" }, + { "ml_IN", "UTF-8" }, + { "mn_MN", "UTF-8" }, + { "mni_IN", "UTF-8" }, + { "mnw_MM", "UTF-8" }, + { "mr_IN", "UTF-8" }, + { "ms_MY", "ISO-8859-1" }, + { "mt_MT", "ISO-8859-3" }, + { "my_MM", "UTF-8" }, + { "nan_TW", "UTF-8" }, + { "nan_TW@latin", "UTF-8" }, + { "nb_NO", "ISO-8859-1" }, + { "nds_DE", "UTF-8" }, + { "nds_NL", "UTF-8" }, + { "ne_NP", "UTF-8" }, + { "nhn_MX", "UTF-8" }, + { "niu_NU", "UTF-8" }, + { "niu_NZ", "UTF-8" }, + { "nl_AW", "UTF-8" }, + { "nl_BE", "ISO-8859-1" }, + { "nl_BE@euro", "ISO-8859-15" }, + { "nl_NL", "ISO-8859-1" }, + { "nl_NL@euro", "ISO-8859-15" }, + { "nn_NO", "ISO-8859-1" }, + { "no_NO", "ISO-8859-1" }, + { "nr_ZA", "UTF-8" }, + { "nso_ZA", "UTF-8" }, + { "oc_FR", "ISO-8859-1" }, + { "om_ET", "UTF-8" }, + { "om_KE", "ISO-8859-1" }, + { "or_IN", "UTF-8" }, + { "os_RU", "UTF-8" }, + { "pa_IN", "UTF-8" }, + { "pa_PK", "UTF-8" }, + { "pap_AW", "UTF-8" }, + { "pap_CW", "UTF-8" }, + { "pl_PL", "ISO-8859-2" }, + { "ps_AF", "UTF-8" }, + { "pt_BR", "ISO-8859-1" }, + { "pt_PT", "ISO-8859-1" }, + { "pt_PT@euro", "ISO-8859-15" }, + { "quz_PE", "UTF-8" }, + { "raj_IN", "UTF-8" }, + { "rif_MA", "UTF-8" }, + { "ro_RO", "ISO-8859-2" }, + { "ru_RU", "ISO-8859-5" }, + { "ru_UA", "KOI8-U" }, + { "rw_RW", "UTF-8" }, + { "sa_IN", "UTF-8" }, + { "sah_RU", "UTF-8" }, + { "sat_IN", "UTF-8" }, + { "sc_IT", "UTF-8" }, + { "sd_IN", "UTF-8" }, + { "sd_IN@devanagar", "UTF-8" }, + { "se_NO", "UTF-8" }, + { "sgs_LT", "UTF-8" }, + { "shn_MM", "UTF-8" }, + { "shs_CA", "UTF-8" }, + { "si_LK", "UTF-8" }, + { "sid_ET", "UTF-8" }, + { "sk_SK", "ISO-8859-2" }, + { "sl_SI", "ISO-8859-2" }, + { "sm_WS", "UTF-8" }, + { "so_DJ", "ISO-8859-1" }, + { "so_ET", "UTF-8" }, + { "so_KE", "ISO-8859-1" }, + { "so_SO", "ISO-8859-1" }, + { "sq_AL", "ISO-8859-1" }, + { "sq_MK", "UTF-8" }, + { "sr_ME", "UTF-8" }, + { "sr_RS", "UTF-8" }, + { "sr_RS@latin", "UTF-8" }, + { "ss_ZA", "UTF-8" }, + { "st_ZA", "ISO-8859-1" }, + { "sv_FI", "ISO-8859-1" }, + { "sv_FI@euro", "ISO-8859-15" }, + { "sv_SE", "ISO-8859-1" }, + { "sw_KE", "UTF-8" }, + { "sw_TZ", "UTF-8" }, + { "szl_PL", "UTF-8" }, + { "ta_IN", "UTF-8" }, + { "ta_LK", "UTF-8" }, + { "te_IN", "UTF-8" }, + { "tg_TJ", "KOI8-T" }, + { "th_TH", "TIS-620" }, + { "the_NP", "UTF-8" }, + { "ti_ER", "UTF-8" }, + { "ti_ET", "UTF-8" }, + { "tig_ER", "UTF-8" }, + { "tk_TM", "UTF-8" }, + { "tl_PH", "ISO-8859-1" }, + { "tn_ZA", "UTF-8" }, + { "to_TO", "UTF-8" }, + { "tpi_PG", "UTF-8" }, + { "tr_CY", "ISO-8859-9" }, + { "tr_TR", "ISO-8859-9" }, + { "ts_ZA", "UTF-8" }, + { "tt_RU", "UTF-8" }, + { "tt_RU@iqtelif", "UTF-8" }, + { "ug_CN", "UTF-8" }, + { "uk_UA", "KOI8-U" }, + { "unm_US", "UTF-8" }, + { "ur_IN", "UTF-8" }, + { "ur_PK", "UTF-8" }, + { "uz_UZ", "ISO-8859-1" }, + { "uz_UZ@cyrillic", "UTF-8" }, + { "ve_ZA", "UTF-8" }, + { "vi_VN", "UTF-8" }, + { "wa_BE", "ISO-8859-1" }, + { "wa_BE@euro", "ISO-8859-15" }, + { "wae_CH", "UTF-8" }, + { "wal_ET", "UTF-8" }, + { "wo_SN", "UTF-8" }, + { "xh_ZA", "ISO-8859-1" }, + { "yi_US", "CP1255" }, + { "yo_NG", "UTF-8" }, + { "yue_HK", "UTF-8" }, + { "yuw_PG", "UTF-8" }, + { "zh_CN", "GB2312" }, + { "zh_HK", "BIG5" }, + { "zh_SG", "GB2312" }, + { "zh_TW", "BIG5" }, + { "zu_ZA", "ISO-8859-1" }, +}; diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index c2f9c08c9f..8257c23b2f 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -21,6 +21,7 @@ details. */ #include "lc_msg.h" #include "lc_era.h" #include "lc_collelem.h" +#include "lc_def_codesets.h" #define _LC(x) &lc_##x##_ptr,lc_##x##_end-lc_##x##_ptr @@ -474,7 +475,8 @@ __set_lc_time_from_win (const char *name, locale. */ lc_era_t locale_key = { locale, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL, NULL }; - lc_era_t *era = (lc_era_t *) bsearch ((void *) &locale_key, (void *) lc_era, + lc_era_t *era = (lc_era_t *) bsearch ((void *) &locale_key, + (void *) lc_era, sizeof lc_era / sizeof *lc_era, sizeof *lc_era, locale_cmp); @@ -1455,34 +1457,42 @@ strxfrm (char *__restrict s1, const char *__restrict s2, size_t sn) /* Fetch default ANSI codepage from locale info and generate a setlocale compatible character set code. Called from newlib's setlocale(), if the charset isn't given explicitely in the POSIX compatible locale specifier. */ - -/* FIXME: Check all locales against their Linux counterpart again and - make sure the codeset conversion is correct. - FIXME: Perhaps, convert to locale names only. - FIXME: Perhaps, maintain a sorted list of Linux locales and their - default codesets. */ extern "C" void -__set_charset_from_locale (const char *locale, char *charset) +__set_charset_from_locale (const char *loc, char *charset) { - UINT cp; wchar_t win_locale[ENCODING_LEN + 1]; + char locale[ENCODING_LEN + 1]; + const char *modifier; + char *c; + UINT cp; - int ret = __get_rfc5646_from_locale (locale, win_locale); - wchar_t wbuf[9]; + /* Cut out explicit codeset */ + stpcpy (locale, loc); + modifier = strchr (loc, '@'); + if ((c = strchr (locale, '.'))) + stpcpy (c, modifier ?: ""); + + default_codeset_t srch_dc = { locale, NULL }; + default_codeset_t *dc = (default_codeset_t *) + bsearch ((void *) &srch_dc, (void *) default_codeset, + sizeof default_codeset / sizeof *default_codeset, + sizeof *default_codeset, locale_cmp); + if (dc) + { + stpcpy (charset, dc->codeset); + return; + } /* "C" locale, or invalid locale? */ - if (ret <= 0) + if (__get_rfc5646_from_locale (locale, win_locale) <= 0) cp = 20127; - else if (!GetLocaleInfoEx (win_locale, + else if (GetLocaleInfoEx (win_locale, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (PWCHAR) &cp, sizeof cp)) cp = 0; - /* For simplicity, we still convert to LCID here. */ - LCID lcid = LocaleNameToLCID (win_locale, 0); /* Translate codepage and lcid to a charset closely aligned with the default charsets defined in Glibc. */ const char *cs; - const char *modifier = strchr (locale, '@') ?: ""; switch (cp) { case 20127: @@ -1504,131 +1514,33 @@ __set_charset_from_locale (const char *locale, char *charset) cs = "BIG5"; break; case 1250: - if (lcid == 0x181a /* sr_BA (Serbian/Bosnia - and Herzegovina) */ - || lcid == 0x241a /* sr_RS (Serbian/Serbia) */ - || lcid == 0x2c1a /* sr_ME (Serbian/Montenegro)*/ - || lcid == 0x0442 /* tk_TM (Turkmen/Turkmenistan) */ - || !wcscmp (win_locale, L"sr-Latn-XK")) /* (Serbian/Kosovo) */ - cs = "UTF-8"; - else if (lcid == 0x041c) /* sq_AL (Albanian/Albania) */ - cs = "ISO-8859-1"; - else - cs = "ISO-8859-2"; + cs = "ISO-8859-2"; break; case 1251: - if (lcid == 0x1c1a /* sr_BA (Serbian Language/Bosnia - and Herzegovina) */ - || lcid == 0x281a /* sr_RS (Serbian Language/Serbia) */ - || lcid == 0x301a /* sr_ME (Serbian Language/Montenegro)*/ - || lcid == 0x0440 /* ky_KG (Kyrgyz/Kyrgyzstan) */ - || lcid == 0x082c /* az_AZ@cyrillic (Azerbaijani/Azerbaijan) */ - || lcid == 0x0843 /* uz_UZ (Uzbek/Uzbekistan) */ - /* tt_RU (Tatar/Russia), - IQTElif alphabet */ - || (lcid == 0x0444 && has_modifier ("@iqtelif")) - || lcid == 0x0450 /* mn_MN (Mongolian/Mongolia) */ - || !wcscmp (win_locale, L"sr-Cyrl-XK")) /* (Serbian/Kosovo) */ - cs = "UTF-8"; - else if (lcid == 0x0423) /* be_BY (Belarusian/Belarus) */ - cs = has_modifier ("@latin") ? "UTF-8" : "CP1251"; - else if (lcid == 0x0402 /* bg_BG (Bulgarian/Bulgaria) */ - || lcid == 0x0423) /* be_BY (Belarusian/Belarus) */ - cs = "CP1251"; - else if (lcid == 0x0422 /* uk_UA (Ukrainian/Ukraine) */ - || !wcscmp (win_locale, L"ru-UA")) /* (Russian/Ukraine) */ - cs = "KOI8-U"; - else if (lcid == 0x0428) /* tg_TJ (Tajik/Tajikistan) */ - cs = "KOI8-T"; - else - cs = "ISO-8859-5"; + cs = "ISO-8859-5"; break; case 1252: - if (lcid == 0x0452) /* cy_GB (Welsh/Great Britain) */ - cs = "ISO-8859-14"; - else if (lcid == 0x4009 /* en_IN (English/India) */ - || lcid == 0x0867 /* ff_SN (Fulah/Senegal) */ - || lcid == 0x0464 /* fil_PH (Filipino/Philippines) */ - || lcid == 0x0462 /* fy_NL (Frisian/Netherlands) */ - || lcid == 0x0468 /* ha_NG (Hausa/Nigeria) */ - || lcid == 0x0475 /* haw_US (Hawaiian/United States) */ - || lcid == 0x0470 /* ig_NG (Igbo/Nigeria) */ - || lcid == 0x085d /* iu_CA (Inuktitut/Canada) */ - || lcid == 0x046c /* nso_ZA (Northern Sotho/South Africa) */ - || lcid == 0x0487 /* rw_RW (Kinyarwanda/Rwanda) */ - || lcid == 0x043b /* se_NO (Northern Saami/Norway) */ - || lcid == 0x0832 /* tn_BW (Tswana/Botswana) */ - || lcid == 0x0432 /* tn_ZA (Tswana/South Africa) */ - || lcid == 0x0488 /* wo_SN (Wolof/Senegal) */ - || lcid == 0x046a /* yo_NG (Yoruba/Nigeria) */ - || lcid == 0x085f) /* ber_DZ (Tamazight/Algeria) */ - cs = "UTF-8"; - else if (lcid == 0x042e) /* hsb_DE (Upper Sorbian/Germany) */ - cs = "ISO-8859-2"; - else if (lcid == 0x0491 /* gd_GB (Scots Gaelic/Great Britain) */ - || (has_modifier ("@euro") - && GetLocaleInfoW (lcid, LOCALE_SINTLSYMBOL, wbuf, 9) - && !wcsncmp (wbuf, L"EUR", 3))) - cs = "ISO-8859-15"; - else - cs = "ISO-8859-1"; + cs = "ISO-8859-1"; break; case 1253: cs = "ISO-8859-7"; break; case 1254: - if (lcid == 0x042c) /* az_AZ (Azeri/Azerbaijan) */ - cs = "UTF-8"; - else if (lcid == 0x0443) /* uz_UZ (Uzbek/Uzbekistan) */ - cs = "ISO-8859-1"; - else - cs = "ISO-8859-9"; + cs = "ISO-8859-9"; break; case 1255: cs = "ISO-8859-8"; break; case 1256: - if (lcid == 0x0429 /* fa_IR (Persian/Iran) */ - || lcid == 0x0846 /* pa_PK (Punjabi/Pakistan) */ - || lcid == 0x0859 /* sd_PK (Sindhi/Pakistan) */ - || lcid == 0x0480 /* ug_CN (Uyghur/China) */ - || lcid == 0x0420) /* ur_PK (Urdu/Pakistan) */ - cs = "UTF-8"; - else - cs = "ISO-8859-6"; + cs = "ISO-8859-6"; break; case 1257: - if (lcid == 0x0425) /* et_EE (Estonian/Estonia) */ - cs = "ISO-8859-15"; - else - cs = "ISO-8859-13"; + cs = "ISO-8859-13"; break; case 1258: default: - if (lcid == 0x3c09 /* en_HK (English/Hong Kong) */ - || lcid == 0x200c /* fr_RE (French/Réunion) */ - || lcid == 0x240c /* fr_CD (French/Congo) */ - || lcid == 0x280c /* fr_SN (French/Senegal) */ - || lcid == 0x2c0c /* fr_CM (French/Cameroon) */ - || lcid == 0x300c /* fr_CI (French/Ivory Coast) */ - || lcid == 0x340c /* fr_ML (French/Mali) */ - || lcid == 0x380c /* fr_MA (French/Morocco) */ - || lcid == 0x3c0c /* fr_HT (French/Haiti) */ - || lcid == 0x0477 /* so_SO (Somali/Somali) */ - || lcid == 0x0430) /* st_ZA (Sotho/South Africa) */ - cs = "ISO-8859-1"; - else if (lcid == 0x818) /* ro_MD (Romanian/Moldovia) */ - cs = "ISO-8859-2"; - else if (lcid == 0x043a) /* mt_MT (Maltese/Malta) */ - cs = "ISO-8859-3"; - else if (lcid == 0x0481) /* mi_NZ (Maori/New Zealand) */ - cs = "ISO-8859-13"; - else if (lcid == 0x0437) /* ka_GE (Georgian/Georgia) */ - cs = "GEORGIAN-PS"; - else if (lcid == 0x043f) /* kk_KZ (Kazakh/Kazakhstan) */ - cs = "PT154"; - else - cs = "UTF-8"; + cs = "UTF-8"; + break; } stpcpy (charset, cs); } From 6e6111671a1258ead1235c7e129b1f272c67f9e9 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 19:43:08 +0100 Subject: [PATCH 210/767] Cygwin: locale(1): redefine rule for adding a @euro locale The @euro locale is only useful, if the locale uses the EUR currency and the codeset of the base locale is ISO-8859-1, or the locale is el_GR. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/locale.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 2c7845fc24..25c4d32702 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -221,7 +221,7 @@ compare_locales (const void *a, const void *b) return strcmp (la->name, lb->name); } -void +size_t add_locale (const char *name, const wchar_t *language, const wchar_t *territory, bool alias = false) { @@ -246,7 +246,7 @@ add_locale (const char *name, const wchar_t *language, const wchar_t *territory, locale[loc_num].codeset = strdup (nl_langinfo (CODESET)); setlocale (LC_CTYPE, orig_locale); locale[loc_num].alias = alias; - ++loc_num; + return loc_num++; } void @@ -304,7 +304,6 @@ print_all_locales_proc (LPWSTR loc_name, DWORD info, LPARAM param) wchar_t iso639[32] = { 0 }; wchar_t iso3166[32] = { 0 }; wchar_t iso15924[32] = { 0 }; - DWORD cp; #if 0 struct { @@ -391,18 +390,18 @@ print_all_locales_proc (LPWSTR loc_name, DWORD info, LPARAM param) /* Print */ GetLocaleInfoEx (loc_name, LOCALE_SENGLISHLANGUAGENAME, language, 256); GetLocaleInfoEx (loc_name, LOCALE_SENGLISHCOUNTRYNAME, country, 256); - add_locale (posix_loc, language, country); + size_t idx = add_locale (posix_loc, language, country); /* Check for locales sporting an additional modifier for changing the codeset and other stuff. */ if (!wcscmp (iso639, L"be") && !wcscmp (iso3166, L"BY")) stpcpy (c, "@latin"); if (!wcscmp (iso639, L"tt") && !wcscmp (iso3166, L"RU")) stpcpy (c, "@iqtelif"); - else if (GetLocaleInfoEx (loc_name, - LOCALE_IDEFAULTANSICODEPAGE - | LOCALE_RETURN_NUMBER, - (PWCHAR) &cp, sizeof cp) - && cp == 1252 /* Latin1*/ + /* If the base locale is ISO-8859-1 and the locale defines currency + as EUR, add a @euro locale. For historical reasons there's also + a greek @euro locale, albeit it doesn't change the codeset. */ + else if ((!strcmp (locale[idx].codeset, "ISO-8859-1") + || !strcmp (posix_loc, "el_GR")) && GetLocaleInfoEx (loc_name, LOCALE_SINTLSYMBOL, currency, 9) && !wcsncmp (currency, L"EUR", 3)) stpcpy (c, "@euro"); From a31d4039d0bcf3a18c2fe2b26a810f1c399a8a9e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Feb 2023 20:15:53 +0100 Subject: [PATCH 211/767] Cygwin: fetch-lc-def-codesets-from-linux: speed up Drop shell read loop in favor of performing the locale output evaluation inside a single awk invocation. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- .../fetch-lc-def-codesets-from-linux | 46 +++++-------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux index c8c60ecac3..1a8afede86 100755 --- a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux @@ -10,39 +10,17 @@ } default_codeset[] = { EOF - while read line - do - locale=$(echo "${line}" | awk '/^locale:/{ print $2; }') - if [ -z "${locale}" ] - then - continue - fi - # No aliases - idx=$(expr index "${locale}" '_') - if [ "${idx}" -eq 0 ] - then - continue - fi - # No explicit codesets - idx=$(expr index "${locale}" '.') - if [ "${idx}" -ne 0 ] - then - continue - fi - while read line2 - do - codeset=$(echo "${line2}" | awk '/codeset/{ print $3; }') - if [ -n "${codeset}" ] - then - # Translate into internal codeset names. */ - case "${codeset}" in - BIG5*) codeset="BIG5";; - *) ;; - esac - printf " { \"%s\", \"%s\" },\n" "${locale}" "${codeset}" - break - fi - done - done <<<$(locale -av) + locale -av | \ + awk '/^locale:/{ + if ( index ($2, "_") == 0 ) next # No aliases + if ( index ($2, ".") > 0 ) next # No explicit codesets + locale=$2; + } + /codeset/ { + if ( length (locale) == 0 ) next + codeset = gensub (/BIG5.*/, "BIG5", 1, $3); + printf " { \"%s\", \"%s\" },\n", locale, codeset; + locale = ""; + }' echo "};" ) > lc_def_codesets.h From c42b98bdc665fc108efde0a7979fe4c36e8f5f60 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Feb 2023 17:04:03 +0100 Subject: [PATCH 212/767] Cygwin: introduce /proc/codesets and /proc/locales So far locale(1) had to have knowledge how to construct, thus duplicating the effort how Cygwin handles locale strings. Move locale list and codeset list generation into Cygwin by providing /proc/codesets and /proc/locales files. /proc/locales does not list aliases, those are still handled in locale(1). locale(1) opens the files and ueses that info for printing, like any other application can do now. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 283 +++++++++++++++++++++++++++++ winsup/cygwin/release/3.5.0 | 5 + winsup/doc/new-features.xml | 7 + winsup/utils/locale.cc | 317 ++++++++++----------------------- 4 files changed, 387 insertions(+), 225 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 6a91398612..74e5d95011 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -11,6 +11,7 @@ details. */ #include <unistd.h> #include <stdlib.h> #include <stdio.h> +#include <langinfo.h> #include "cygerrno.h" #include "security.h" #include "path.h" @@ -49,16 +50,20 @@ static off_t format_proc_filesystems (void *, char *&); static off_t format_proc_swaps (void *, char *&); static off_t format_proc_devices (void *, char *&); static off_t format_proc_misc (void *, char *&); +static off_t format_proc_locales (void *, char *&); +static off_t format_proc_codesets (void *, char *&); /* names of objects in /proc */ static const virt_tab_t proc_tab[] = { { _VN ("."), FH_PROC, virt_directory, NULL }, { _VN (".."), FH_PROC, virt_directory, NULL }, + { _VN ("codesets"), FH_PROC, virt_file, format_proc_codesets }, { _VN ("cpuinfo"), FH_PROC, virt_file, format_proc_cpuinfo }, { _VN ("cygdrive"), FH_PROC, virt_symlink, format_proc_cygdrive }, { _VN ("devices"), FH_PROC, virt_file, format_proc_devices }, { _VN ("filesystems"), FH_PROC, virt_file, format_proc_filesystems }, { _VN ("loadavg"), FH_PROC, virt_file, format_proc_loadavg }, + { _VN ("locales"), FH_PROC, virt_file, format_proc_locales }, { _VN ("meminfo"), FH_PROC, virt_file, format_proc_meminfo }, { _VN ("misc"), FH_PROC, virt_file, format_proc_misc }, { _VN ("mounts"), FH_PROC, virt_symlink, format_proc_mounts }, @@ -2071,4 +2076,282 @@ format_proc_misc (void *, char *&destbuf) return bufptr - buf; } +static char * +add_locale (char *bufptr, const char *posix_locale, const char *codeset, + bool explicit_utf8, const char *modifier, const wchar_t *win_locale) +{ + const char *start = bufptr; + bufptr = stpcpy (bufptr, posix_locale); + if (explicit_utf8) + bufptr = stpcpy (bufptr, ".utf8"); + if (modifier && modifier[0]) + bufptr = stpcpy (bufptr, modifier); + if (bufptr - start < 16) + { + if (bufptr - start < 8) + bufptr = stpcpy (bufptr, "\t"); + bufptr = stpcpy (bufptr, "\t"); + } + bufptr = stpcpy (bufptr, "\t"); + start = bufptr; + bufptr = stpcpy (bufptr, codeset); + if (win_locale && win_locale[0]) + { + if (bufptr - start < 16) + { + if (bufptr - start < 8) + bufptr = stpcpy (bufptr, "\t"); + bufptr = stpcpy (bufptr, "\t"); + } + bufptr = stpcpy (bufptr, "\t"); + bufptr += wcstombs (bufptr, win_locale, wcslen (win_locale) * 2); + } + bufptr = stpcpy (bufptr, "\n"); + return bufptr; +} + +static BOOL +format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) +{ + char **bufptr_p = (char **) param; + wchar_t iso15924_postfix[32] = { 0 }; + wchar_t iso15924[32] = { 0 }; + wchar_t iso3166[32] = { 0 }; + wchar_t iso639[32] = { 0 }; + wchar_t currency[9] = { 0 }; + char modifier[32] = { 0 }; + char posix_loc[32]; + char *codeset; + locale_t loc; + wchar_t *cp; + + /* Skip language-only locales, e. g. "en" */ + if (!(cp = wcschr (win_locale, L'-'))) + return TRUE; + ++cp; + /* Script inside? Scripts are Upper/Lower, e. g. "Latn" */ + if (iswupper (cp[0]) && iswlower (cp[1])) + { + wchar_t *cp2; + + /* Skip language-Script locales, missing country */ + if (!(cp2 = wcschr (cp + 2, L'-'))) + return TRUE; + /* Otherwise, store in iso15924 */ + if (iso15924) + wcpcpy (wcpncpy (iso15924, cp, cp2 - cp), L";"); + } + cp = wcsrchr (win_locale, L'-'); + if (cp) + { + /* Skip numeric iso3166 country name. */ + if (iswdigit (cp[1])) + return TRUE; + /* Special case postfix after iso3166 country name: ca-ES-valencia. + Use the postfix thingy as script so it will become a @modifier */ + if (iswlower (cp[1])) + wcpcpy (iso15924_postfix, cp + 1); + } + + if (!GetLocaleInfoEx (win_locale, LOCALE_SISO639LANGNAME, iso639, 10)) + return TRUE; + GetLocaleInfoEx (win_locale, LOCALE_SISO3166CTRYNAME, iso3166, 10); + + snprintf (posix_loc, sizeof posix_loc, "%.3ls_%.3ls", iso639, iso3166); + /* Inuktitut: equivalent @latin due to lack of info on Linux */ + if (!wcscmp (iso639, L"iu")) + { + if (wcscmp (iso15924, L"Latn;")) + return TRUE; + } + /* Javanese: only use @latin locale. */ + else if (!wcscmp (iso639, L"jv")) + { + if (wcscmp (iso15924, L"Latn;")) + return TRUE; + } + /* Mongolian: only use @mongolian locale. */ + else if (!wcscmp (iso639, L"mn")) + { + if (wcscmp (iso15924, L"Mong;")) + return TRUE; + } + /* Serbian: Windows default is Latin, Linux default is Cyrillic. + We want the Linux default and attach @latin otherwise */ + else if (!wcscmp (iso639, L"sr") && !wcscmp (iso15924, L"Latn;")) + stpcpy (modifier, "@latin"); + /* Tamazight: no modifier, iso639 is "ber" on Linux. + "zgh-Tfng-MA" is equivalent to "ber_MA". */ + else if (!wcscmp (iso639, L"zgh")) + snprintf (posix_loc, sizeof posix_loc, "ber_%.27ls", iso3166); + /* Tamazight: "tzm-Latn-DZ" is equivalent to "ber_DZ", + skip everything else. */ + else if (!wcscmp (iso639, L"tzm")) + { + if (!wcscmp (iso3166, L"DZ") && !wcscmp (iso15924, L"Latn;")) + snprintf (posix_loc, sizeof posix_loc, "ber_%.27ls", iso3166); + else + return TRUE; + } + /* In all other cases, we check if the script from the Windows + locale is the default locale in that language. If not, we + add it as modifier if possible, or skip it */ + else if (iso15924[0]) + { + wchar_t scriptless_win_locale[32]; + wchar_t default_iso15924[32]; + + wcpcpy (wcpcpy (wcpcpy (scriptless_win_locale, iso639), L"-"), + iso3166); + if ((GetLocaleInfoEx (scriptless_win_locale, LOCALE_SSCRIPTS, + default_iso15924, 32) + || GetLocaleInfoEx (iso639, LOCALE_SSCRIPTS, + default_iso15924, 32)) + && !wcsstr (default_iso15924, iso15924)) + { + if (!wcscmp (iso15924, L"Latn;")) + stpcpy (modifier, "@latin"); + else if (!wcscmp (iso15924, L"Cyrl;")) + stpcpy (modifier, "@cyrillic"); + else if (!wcscmp (iso15924, L"Deva;")) + stpcpy (modifier, "@devanagar"); + else if (!wcscmp (iso15924, L"Adlm;")) + stpcpy (modifier, "@adlam"); + else + return TRUE; + } + } + else if (iso15924_postfix[0]) + { + modifier[0] = '@'; + wcstombs (modifier + 1, iso15924_postfix, 31); + } + + loc = newlocale (LC_CTYPE_MASK, posix_loc, (locale_t) 0); + codeset = nl_langinfo_l (CODESET, loc); + *bufptr_p = add_locale (*bufptr_p, posix_loc, codeset, false, modifier, + win_locale); + *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, + win_locale); + + /* Only one cross each */ + if (modifier[0]) + return TRUE; + + /* Check for locales sporting an additional modifier for + changing the codeset and other stuff. */ + if (!wcscmp (iso639, L"be") && !wcscmp (iso3166, L"BY")) + stpcpy (modifier, "@latin"); + if (!wcscmp (iso639, L"tt") && !wcscmp (iso3166, L"RU")) + stpcpy (modifier, "@iqtelif"); + /* If the base locale is ISO-8859-1 and the locale defines currency + as EUR, add a @euro locale. For historical reasons there's also + a greek @euro locale, albeit it doesn't change the codeset. */ + else if ((!strcmp (codeset, "ISO-8859-1") + || !strcmp (posix_loc, "el_GR")) + && GetLocaleInfoEx (win_locale, LOCALE_SINTLSYMBOL, currency, 9) + && !wcsncmp (currency, L"EUR", 3)) + stpcpy (modifier, "@euro"); + else if (!wcscmp (iso639, L"ja") + || !wcscmp (iso639, L"ko") + || !wcscmp (iso639, L"zh")) + stpcpy (modifier, "@cjknarrow"); + else + return TRUE; + + *bufptr_p = add_locale (*bufptr_p, posix_loc, codeset, false, modifier, + win_locale); + *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, + win_locale); + + freelocale (loc); + return TRUE; +} + +static off_t +format_proc_locales (void *, char *&destbuf) +{ + tmp_pathbuf tp; + char *buf = tp.t_get (); + char *bufptr = buf; + + bufptr = stpcpy (bufptr, "Locale:\t\t\tCodeset:\t\tWindows-Locale:\n"); + bufptr = add_locale (bufptr, "C", "ANSI_X3.4-1968", false, NULL, NULL); + bufptr = add_locale (bufptr, "C", "UTF-8", true, NULL, NULL); + bufptr = add_locale (bufptr, "POSIX", "ANSI_X3.4-1968", false, NULL, NULL); + + EnumSystemLocalesEx (format_proc_locale_proc, + LOCALE_WINDOWS | LOCALE_SUPPLEMENTAL, + (LPARAM) &bufptr, NULL); + + destbuf = (char *) crealloc_abort (destbuf, bufptr - buf); + memcpy (destbuf, buf, bufptr - buf); + return bufptr - buf; +} + +static off_t +format_proc_codesets (void *, char *&destbuf) +{ + tmp_pathbuf tp; + char *buf = tp.c_get (); + char *bufptr = stpcpy (buf, + "ASCII\n" + "BIG5\n" + "CP1125\n" + "CP1250\n" + "CP1251\n" + "CP1252\n" + "CP1253\n" + "CP1254\n" + "CP1255\n" + "CP1256\n" + "CP1257\n" + "CP1258\n" + "CP437\n" + "CP720\n" + "CP737\n" + "CP775\n" + "CP850\n" + "CP852\n" + "CP855\n" + "CP857\n" + "CP858\n" + "CP862\n" + "CP866\n" + "CP874\n" + "CP932\n" + "EUC-CN\n" + "EUC-JP\n" + "EUC-KR\n" + "GB2312\n" + "GBK\n" + "GEORGIAN-PS\n" + "ISO-8859-1\n" + "ISO-8859-10\n" + "ISO-8859-11\n" + "ISO-8859-13\n" + "ISO-8859-14\n" + "ISO-8859-15\n" + "ISO-8859-16\n" + "ISO-8859-2\n" + "ISO-8859-3\n" + "ISO-8859-4\n" + "ISO-8859-5\n" + "ISO-8859-6\n" + "ISO-8859-7\n" + "ISO-8859-8\n" + "ISO-8859-9\n" + "KOI8-R\n" + "KOI8-T\n" + "KOI8-U\n" + "PT154\n" + "SJIS\n" + "TIS-620\n" + "UTF-8\n"); + + destbuf = (char *) crealloc_abort (destbuf, bufptr - buf); + memcpy (destbuf, buf, bufptr - buf); + return bufptr - buf; +} + #undef print diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 502c1f356b..cc1b52bd22 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -16,3 +16,8 @@ What's new: - fnmatch(3) and glob(3) now support named character classes and equivalence class expressions in the search pattern, i.e., [:alnum:], [=a=], etc. + +- Introduce /proc/codesets and /proc/locales with information on + supported codesets and locales for all interested parties. Locale(1) + opens these files and uses the info for printing locale info like any + other process could do. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index c310114613..80046247e5 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -33,6 +33,13 @@ fnmatch(3) and glob(3) now support named character classes and equivalence class expressions in the search pattern, i.e., [:alnum:], [=a=], etc. </para></listitem> +<listitem><para> +Introduce /proc/codesets and /proc/locales with information on supported +codesets and locales for all interested parties. Locale(1) opens these +files and uses the info for printing locale info like any other process +could do. +</para></listitem> + </itemizedlist> </sect2> diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 25c4d32702..953cc21846 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -159,58 +159,46 @@ size_t loc_max; size_t loc_num; void -print_locale_with_codeset (int verbose, loc_t *locale, bool utf8, - const char *modifier) +print_locale (int verbose, loc_t *locale) { - static const char *sysroot; - char locname[32]; + static const char *kernel32; + static const char *cygwin1; if (verbose && (!strcmp (locale->name, "C") || !strcmp (locale->name, "POSIX"))) return; - if (!sysroot) + if (!kernel32) { - WCHAR sysbuf[PATH_MAX]; - HMODULE k32 = GetModuleHandleW (L"kernel32.dll"); - if (GetModuleFileNameW (k32, sysbuf, PATH_MAX)) - sysroot = (const char *) cygwin_create_path (CCP_WIN_W_TO_POSIX, - sysbuf); - if (!sysroot) - sysroot = "kernel32.dll"; + WCHAR dllpathbuf[PATH_MAX]; + HMODULE dll; + + dll = GetModuleHandleW (L"kernel32.dll"); + if (GetModuleFileNameW (dll, dllpathbuf, PATH_MAX)) + kernel32 = (const char *) cygwin_create_path (CCP_WIN_W_TO_POSIX, + dllpathbuf); + if (!kernel32) + kernel32 = "kernel32.dll"; + dll = GetModuleHandleW (L"cygwin1.dll"); + if (GetModuleFileNameW (dll, dllpathbuf, PATH_MAX)) + cygwin1 = (const char *) cygwin_create_path (CCP_WIN_W_TO_POSIX, + dllpathbuf); + if (!cygwin1) + cygwin1 = "cygwin1.dll"; } - snprintf (locname, 32, "%s%s%s%s", locale->name, utf8 ? ".utf8" : "", - modifier ? "@" : "", modifier ?: ""); - if (verbose) - fputs ("locale: ", stdout); if (verbose) { - printf ("%-15s ", locname); + printf ("locale: %-15s ", locale->name); printf ("archive: %s\n", - locale->alias ? LOCALE_ALIAS : sysroot); + locale->alias ? LOCALE_ALIAS + : !strcmp (locale->name, "C.utf8") ? cygwin1 + : kernel32); puts ("-------------------------------------------------------------------------------"); printf (" language | %ls\n", locale->language); printf ("territory | %ls\n", locale->territory); - printf (" codeset | %s\n\n", utf8 ? "UTF-8" : locale->codeset); + printf (" codeset | %s\n\n", locale->codeset); } else - printf ("%s\n", locname); -} - -void -print_locale (int verbose, loc_t *locale) -{ - print_locale_with_codeset (verbose, locale, false, NULL); - char *modifier = strchr (locale->name, '@'); - if (!locale->alias) - { - if (!modifier) - print_locale_with_codeset (verbose, locale, true, NULL); - else if (strcmp (modifier, "@euro")) - { - *modifier++ = '\0'; - print_locale_with_codeset (verbose, locale, true, modifier); - } - } + printf ("%s\n", locale->name); } int @@ -222,10 +210,10 @@ compare_locales (const void *a, const void *b) } size_t -add_locale (const char *name, const wchar_t *language, const wchar_t *territory, +add_locale (const char *name, const char *codeset, const wchar_t *language, const wchar_t *territory, bool alias = false) { - char orig_locale[32]; + locale_t loc; if (loc_num >= loc_max) { @@ -241,10 +229,9 @@ add_locale (const char *name, const wchar_t *language, const wchar_t *territory, locale[loc_num].name = strdup (name); locale[loc_num].language = wcsdup (language); locale[loc_num].territory = wcsdup (territory); - strcpy (orig_locale, setlocale (LC_CTYPE, NULL)); - setlocale (LC_CTYPE, name); - locale[loc_num].codeset = strdup (nl_langinfo (CODESET)); - setlocale (LC_CTYPE, orig_locale); + loc = newlocale (LC_CTYPE_MASK, name, (locale_t) 0); + locale[loc_num].codeset = strdup (nl_langinfo_l (CODESET, loc)); + freelocale (loc); locale[loc_num].alias = alias; return loc_num++; } @@ -257,6 +244,7 @@ add_locale_alias_locales () char orig_locale[32]; loc_t search, *loc; size_t orig_loc_num = loc_num; + locale_t sysloc; FILE *fp = fopen (LOCALE_ALIAS, "rt"); if (!fp) @@ -292,138 +280,66 @@ add_locale_alias_locales () loc = (loc_t *) bsearch (&search, locale, orig_loc_num, sizeof (loc_t), compare_locales); - add_locale (alias, loc ? loc->language : L"", loc ? loc->territory : L"", - true); + sysloc = newlocale (LC_CTYPE_MASK, alias, (locale_t) 0); + add_locale (alias, nl_langinfo_l (CODESET, sysloc), + loc ? loc->language : L"", loc ? loc->territory : L"", true); + freelocale (sysloc); } fclose (fp); } -BOOL -print_all_locales_proc (LPWSTR loc_name, DWORD info, LPARAM param) +void +print_all_locales (int verbose) { - wchar_t iso639[32] = { 0 }; - wchar_t iso3166[32] = { 0 }; - wchar_t iso15924[32] = { 0 }; - -#if 0 - struct { - wchar_t language[256]; - wchar_t country[256]; - char loc[32]; - } loc_list[32]; - int lcnt = 0; -#endif - - if (getlocale (loc_name, iso639, iso3166, iso15924)) + FILE *fp = fopen ("/proc/locales", "r"); + char line[80]; + + if (!fp) { - char *c, posix_loc[32]; - wchar_t language[256]; - wchar_t country[256]; - wchar_t currency[9]; - - c = posix_loc + snprintf (posix_loc, sizeof posix_loc, "%ls_%ls", - iso639, iso3166); - /* Inuktitut: equivalent @latin due to lack of info on Linux */ - if (!wcscmp (iso639, L"iu")) - { - if (wcscmp (iso15924, L"Latn;")) - return TRUE; - } - /* Javanese: only use @latin locale. */ - else if (!wcscmp (iso639, L"jv")) - { - if (wcscmp (iso15924, L"Latn;")) - return TRUE; - } - /* Mongolian: only use @mongolian locale. */ - else if (!wcscmp (iso639, L"mn")) - { - if (wcscmp (iso15924, L"Mong;")) - return TRUE; - } - /* Serbian: Windows default is Latin, Linux default is Cyrillic. - We want the Linux default and attach @latin otherwise */ - else if (!wcscmp (iso639, L"sr") && !wcscmp (iso15924, L"Latn;")) - stpcpy (c, "@latin"); - /* Tamazight: no modifier, iso639 is "ber" on Linux. - "zgh-Tfng-MA" is equivalent to "ber_MA". */ - else if (!wcscmp (iso639, L"zgh")) - snprintf (posix_loc, sizeof posix_loc, "ber_%.27ls", iso3166); - /* Tamazight: "tzm-Latn-DZ" is equivalent to "ber_DZ", - skip everything else. */ - else if (!wcscmp (iso639, L"tzm")) - { - if (!wcscmp (iso3166, L"DZ") && !wcscmp (iso15924, L"Latn;")) - snprintf (posix_loc, sizeof posix_loc, "ber_%.27ls", iso3166); - else - return TRUE; - } - /* In all other cases, we check if the script from the Windows - locale is the default locale in that language. If not, we - add it as modifier if possible, or skip it */ - else if (iso15924[0]) + fprintf (stderr, "%s: can't open /proc/locales, old Cygwin DLL?\n", + program_invocation_short_name); + return; + } + /* Skip header line */ + fgets (line, 80, fp); + while (fgets (line, 80, fp)) + { + char *posix_loc; + char *codeset; + char *win_loc; + char *nl; + wchar_t win_locale[32]; + wchar_t language[64] = { 0 }; + wchar_t country[64] = { 0 }; + + nl = strchr (line, '\n'); + if (nl) + *nl = '\0'; + posix_loc = line; + codeset = strchr (posix_loc, '\t'); + if (!codeset) + continue; + *codeset = '\0'; + while (*++codeset == '\t') + ; + win_loc = strchr (codeset, '\t'); + if (win_loc) { - wchar_t scriptless_win_locale[32]; - wchar_t default_iso15924[32]; - - wcpcpy (wcpcpy (wcpcpy (scriptless_win_locale, iso639), L"-"), - iso3166); - if ((GetLocaleInfoEx (scriptless_win_locale, LOCALE_SSCRIPTS, - default_iso15924, 32) - || GetLocaleInfoEx (iso639, LOCALE_SSCRIPTS, - default_iso15924, 32)) - && !wcsstr (default_iso15924, iso15924)) + *win_loc = '\0'; + while (*++win_loc == '\t') + ; + if (win_loc[0]) { - if (!wcscmp (iso15924, L"Latn;")) - stpcpy (c, "@latin"); - else if (!wcscmp (iso15924, L"Cyrl;")) - stpcpy (c, "@cyrillic"); - else if (!wcscmp (iso15924, L"Deva;")) - stpcpy (c, "@devanagar"); - else if (!wcscmp (iso15924, L"Adlm;")) - stpcpy (c, "@adlam"); - else - return TRUE; + mbstowcs (win_locale, win_loc, 32); + GetLocaleInfoEx (win_locale, LOCALE_SENGLISHLANGUAGENAME, + language, 64); + GetLocaleInfoEx (win_locale, LOCALE_SENGLISHCOUNTRYNAME, + country, 64); } } - - /* Print */ - GetLocaleInfoEx (loc_name, LOCALE_SENGLISHLANGUAGENAME, language, 256); - GetLocaleInfoEx (loc_name, LOCALE_SENGLISHCOUNTRYNAME, country, 256); - size_t idx = add_locale (posix_loc, language, country); - /* Check for locales sporting an additional modifier for - changing the codeset and other stuff. */ - if (!wcscmp (iso639, L"be") && !wcscmp (iso3166, L"BY")) - stpcpy (c, "@latin"); - if (!wcscmp (iso639, L"tt") && !wcscmp (iso3166, L"RU")) - stpcpy (c, "@iqtelif"); - /* If the base locale is ISO-8859-1 and the locale defines currency - as EUR, add a @euro locale. For historical reasons there's also - a greek @euro locale, albeit it doesn't change the codeset. */ - else if ((!strcmp (locale[idx].codeset, "ISO-8859-1") - || !strcmp (posix_loc, "el_GR")) - && GetLocaleInfoEx (loc_name, LOCALE_SINTLSYMBOL, currency, 9) - && !wcsncmp (currency, L"EUR", 3)) - stpcpy (c, "@euro"); - else if (!wcscmp (iso639, L"ja") - || !wcscmp (iso639, L"ko") - || !wcscmp (iso639, L"zh")) - stpcpy (c, "@cjknarrow"); - else - return TRUE; - add_locale (posix_loc, language, country); + add_locale (posix_loc, codeset, language, country); } - return TRUE; -} - -void -print_all_locales (int verbose) -{ - add_locale ("C", L"C", L"POSIX"); - add_locale ("POSIX", L"C", L"POSIX", true); - EnumSystemLocalesEx (print_all_locales_proc, - LOCALE_WINDOWS | LOCALE_SUPPLEMENTAL, - 0, NULL); + fclose (fp); /* First sort allows add_locale_alias_locales to bsearch in locales. */ qsort (locale, loc_num, sizeof (loc_t), compare_locales); add_locale_alias_locales (); @@ -435,67 +351,18 @@ print_all_locales (int verbose) void print_charmaps () { - /* FIXME: We need a method to fetch the available charsets from Cygwin, */ - const char *charmaps[] = - { - "ASCII", - "BIG5", - "CP1125", - "CP1250", - "CP1251", - "CP1252", - "CP1253", - "CP1254", - "CP1255", - "CP1256", - "CP1257", - "CP1258", - "CP437", - "CP720", - "CP737", - "CP775", - "CP850", - "CP852", - "CP855", - "CP857", - "CP858", - "CP862", - "CP866", - "CP874", - "CP932", - "EUC-CN", - "EUC-JP", - "EUC-KR", - "GB2312", - "GBK", - "GEORGIAN-PS", - "ISO-8859-1", - "ISO-8859-10", - "ISO-8859-11", - "ISO-8859-13", - "ISO-8859-14", - "ISO-8859-15", - "ISO-8859-16", - "ISO-8859-2", - "ISO-8859-3", - "ISO-8859-4", - "ISO-8859-5", - "ISO-8859-6", - "ISO-8859-7", - "ISO-8859-8", - "ISO-8859-9", - "KOI8-R", - "KOI8-T", - "KOI8-U", - "PT154", - "SJIS", - "TIS-620", - "UTF-8", - NULL - }; - const char **charmap = charmaps; - while (*charmap) - printf ("%s\n", *charmap++); + FILE *fp = fopen ("/proc/codesets", "r"); + char line[80]; + + if (!fp) + { + fprintf (stderr, "%s: can't open /proc/codesets, old Cygwin DLL?\n", + program_invocation_short_name); + return; + } + while (fgets (line, 80, fp)) + fputs (line, stdout); + fclose (fp); } void From abd81bc01fb715768eb00d18124205b72fba35da Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Feb 2023 17:17:33 +0100 Subject: [PATCH 213/767] Cygwin: locale: fix devanagari modifier Effectively revert commit 57bac33359db. The fact that the devanagari modifier was called devanagar (missing the trailing 'i') is a result of `locale -av' shortening the locale name to a maximum of 15 characters. D'oh. I guess we need a better way to do this... Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 2 +- .../linux-locale-helpers/fetch-lc-def-codesets-from-linux | 2 +- winsup/cygwin/local_includes/lc_def_codesets.h | 6 +++--- winsup/cygwin/nlsfuncs.cc | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 74e5d95011..bb32d64986 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2214,7 +2214,7 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) else if (!wcscmp (iso15924, L"Cyrl;")) stpcpy (modifier, "@cyrillic"); else if (!wcscmp (iso15924, L"Deva;")) - stpcpy (modifier, "@devanagar"); + stpcpy (modifier, "@devanagari"); else if (!wcscmp (iso15924, L"Adlm;")) stpcpy (modifier, "@adlam"); else diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux index 1a8afede86..2a6f6cca2a 100755 --- a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux @@ -14,7 +14,7 @@ awk '/^locale:/{ if ( index ($2, "_") == 0 ) next # No aliases if ( index ($2, ".") > 0 ) next # No explicit codesets - locale=$2; + locale = gensub (/devanagar.*/, "devanagari", 1, $2); } /codeset/ { if ( length (locale) == 0 ) next diff --git a/winsup/cygwin/local_includes/lc_def_codesets.h b/winsup/cygwin/local_includes/lc_def_codesets.h index 9c7230391e..db7d7f2fb1 100644 --- a/winsup/cygwin/local_includes/lc_def_codesets.h +++ b/winsup/cygwin/local_includes/lc_def_codesets.h @@ -1,5 +1,5 @@ /* This struct of default codesets has been generated by fetching - locale data from a Linux system using glibc-2.36-9.fc37.x86_64 on 2023-02-25 */ + locale data from a Linux system using glibc-2.36-9.fc37.x86_64 on 2023-02-26 */ struct default_codeset_t { const char *locale; @@ -193,7 +193,7 @@ struct default_codeset_t { "ko_KR", "EUC-KR" }, { "kok_IN", "UTF-8" }, { "ks_IN", "UTF-8" }, - { "ks_IN@devanagar", "UTF-8" }, + { "ks_IN@devanagari", "UTF-8" }, { "ku_TR", "ISO-8859-9" }, { "kw_GB", "ISO-8859-1" }, { "ky_KG", "UTF-8" }, @@ -269,7 +269,7 @@ struct default_codeset_t { "sat_IN", "UTF-8" }, { "sc_IT", "UTF-8" }, { "sd_IN", "UTF-8" }, - { "sd_IN@devanagar", "UTF-8" }, + { "sd_IN@devanagari", "UTF-8" }, { "se_NO", "UTF-8" }, { "sgs_LT", "UTF-8" }, { "shn_MM", "UTF-8" }, diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 8257c23b2f..dd0fc8dc5f 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -126,7 +126,7 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) idx = 0; else if (!strcmp (modifier, "cyrillic")) idx = 1; - else if (!strcmp (modifier, "devanagar")) + else if (!strcmp (modifier, "devanagari")) idx = 2; else if (!strcmp (modifier, "adlam")) idx = 3; From 5011c8cc48a22d9ccfc8d11a0f5cbfc0e5db73a6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Feb 2023 20:14:54 +0100 Subject: [PATCH 214/767] Cygwin: fetch-lc-def-codesets-from-linux: fix locale name handling As the former call to `locale -av' has the unwanted side effect to shorten the locale name to <= 15 chars, don't use it. Use `locale -a' instead and fetch the codeset from another call to `locale' for each locale. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- .../fetch-lc-def-codesets-from-linux | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux index 2a6f6cca2a..9bb0533418 100755 --- a/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc-def-codesets-from-linux @@ -10,17 +10,16 @@ } default_codeset[] = { EOF - locale -av | \ - awk '/^locale:/{ - if ( index ($2, "_") == 0 ) next # No aliases - if ( index ($2, ".") > 0 ) next # No explicit codesets - locale = gensub (/devanagar.*/, "devanagari", 1, $2); - } - /codeset/ { - if ( length (locale) == 0 ) next - codeset = gensub (/BIG5.*/, "BIG5", 1, $3); - printf " { \"%s\", \"%s\" },\n", locale, codeset; - locale = ""; - }' + locale -a | \ + awk '{ + if ( index ($1, "_") == 0 ) next # No aliases + if ( index ($1, ".") > 0 ) next # No explicit codesets + locale = $1 + cmd = "LC_CTYPE=" locale " locale -ck LC_CTYPE | grep charmap" + cmd | getline codeset + codeset = gensub (/charmap="(.*)"/, "\\1", 1, codeset) + codeset = gensub (/BIG5.*/, "BIG5", 1, codeset); + printf " { \"%s\", \"%s\" },\n", locale, codeset; + }' echo "};" ) > lc_def_codesets.h From c8397ae8171f00dcfb071130e6ea2b64aea17ded Mon Sep 17 00:00:00 2001 From: Henrik Nilsson via Newlib <newlib@sourceware.org> Date: Fri, 17 Feb 2023 06:56:49 +0100 Subject: [PATCH 215/767] nano-mallocr: Prevent NULL pointer de-reference in free_list The existing code checked if there was a chunk in free_list and that the tail was not the next chunk. The check if there is a chunk is not needed since it's already known but the case of a single chunk in free_list needs to be handled differently. --- newlib/libc/stdlib/nano-mallocr.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/newlib/libc/stdlib/nano-mallocr.c b/newlib/libc/stdlib/nano-mallocr.c index b2273ba609..a2b50facc3 100644 --- a/newlib/libc/stdlib/nano-mallocr.c +++ b/newlib/libc/stdlib/nano-mallocr.c @@ -333,14 +333,23 @@ void * nano_malloc(RARG malloc_size_t s) { p->size += alloc_size; - /* Remove chunk from free_list */ + /* Remove chunk from free_list. Since p != NULL there is + at least one chunk */ r = free_list; - while (r && p != r->next) + if (r->next == NULL) { - r = r->next; + /* There is only a single chunk, remove it */ + free_list = NULL; + } + else + { + /* Search for the chunk before the one to be removed */ + while (p != r->next) + { + r = r->next; + } + r->next = NULL; } - r->next = NULL; - r = p; } else From 6e75277b122c47ca63d9520780291cf4bc7251cf Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 28 Feb 2023 12:10:40 +0100 Subject: [PATCH 216/767] Cygwin: __wscollate_range_cmp: fix incorrect comment The comment that the first arg must be the pattern was added during development, before it turned out that __wscollate_range_cmp can be implemented in an order independent way. Better explain why this function uses pointers to strings. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index dd0fc8dc5f..04d7072e79 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1212,8 +1212,8 @@ __wcollate_range_cmp (wint_t c1, wint_t c2) /* Not so much BSD. Used from glob.cc, fnmatch.c and regcomp.c. - First arg is always from pattern space, second arg is the tested string. - len is the length of the pattern in the first arg. */ + The args are pointers to wint_t strings. This allows to compare + against collating symbols. */ extern "C" int __wscollate_range_cmp (wint_t *c1, wint_t *c2, size_t c1len, size_t c2len) From 0d2ad77c40b641ebe2965568945a622f3f6dbd5c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 28 Feb 2023 16:45:52 +0100 Subject: [PATCH 217/767] Cygwin: fnmatch: drop static variable fnmatch calls fnmatch1 with a static mbstate_t. This breaks calling fnmatch from multiple threads. Fix it by folding fnmatch1 into fnmatch and moving all mbstates to local variables. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/libc/fnmatch.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index beb67f01e5..d109c2124a 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -73,22 +73,13 @@ __FBSDID("$FreeBSD: head/lib/libc/gen/fnmatch.c 288309 2015-09-27 12:52:18Z jill #define RANGE_ERROR (-1) static int rangematch(const char *, wint_t, int, char **, mbstate_t *); -static int fnmatch1(const char *, const char *, const char *, int, mbstate_t, - mbstate_t); int fnmatch(const char *pattern, const char *string, int flags) { - static const mbstate_t initial; - - return (fnmatch1(pattern, string, string, flags, initial, initial)); -} - -static int -fnmatch1(const char *pattern, const char *string, const char *stringstart, - int flags, mbstate_t patmbs, mbstate_t strmbs) -{ + const char *stringstart = string; const char *bt_pattern, *bt_string; + mbstate_t patmbs, strmbs; mbstate_t bt_patmbs, bt_strmbs; char *newp; char c; From 77883ac914939e3fd5b3001b78857a3d11942104 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 10:34:41 +0100 Subject: [PATCH 218/767] Cygwin: wcitoascii: move to wchar.h as inline function Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 6 ------ winsup/cygwin/local_includes/wchar.h | 8 ++++++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 63a07a930f..0b85a147ac 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -481,12 +481,6 @@ globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob) return patbuf; } -static void -wcitoascii(char *dst, wint_t *src) -{ - while ((*dst++ = *src++)); -} - /* * The main glob() routine: compiles the pattern (optionally processing * quotes), calls glob1() to do the real pattern matching, and finally diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index 3907732a26..b09d014c04 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -52,6 +52,14 @@ size_t wirtomb (char *, wint_t, mbstate_t *); a UTF-32 value. Defined in strfuncs.cc */ extern size_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); +/* convert wint_t string to char string, but *only* if the string consists + entirely of ASCII chars */ +static inline void +wcitoascii(char *dst, wint_t *src) +{ + while ((*dst++ = *src++)); +} + /* like wcslen, just for wint_t */ static inline size_t wcilen (const wint_t *wcs) From b81969345d807ec299d8afb3c55e27f732b7cb06 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 10:36:09 +0100 Subject: [PATCH 219/767] Cygwin: add wcipcpy and wcipncpy helper functions wint_t replacements for wcpcpy and wcpncpy Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 9 +++------ winsup/cygwin/local_includes/wchar.h | 30 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 0b85a147ac..dadc67e4c1 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -203,13 +203,10 @@ check_classes_expr(const Char *&cptr, wint_t *classbuf = NULL, if (classbuf) { const Char *class_p = ctype + 1; size_t clen = cptr - class_p; - size_t idx; - if (clen < classbufsize) { - for (idx = 0; idx < clen; ++idx) - classbuf[idx] = CHAR(class_p[idx]); - classbuf[idx] = '\0'; - } else + if (clen < classbufsize) + *wcipncpy (classbuf, class_p, clen) = '\0'; + else ctype = NULL; } cptr++; /* Advance cptr to closing RBRACKET of class expr */ diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index b09d014c04..125e49ece1 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -101,6 +101,36 @@ wcincmp (const wint_t *s1, const wint_t *s2, size_t n) return (0); } +/* like wcpcpy, just for wint_t */ +static inline wint_t * +wcipcpy (wint_t *s1, const wint_t *s2) +{ + while ((*s1++ = *s2++)) + ; + return --s1; +} + +/* like wcpncpy, just for wint_t */ +static inline wint_t * +wcipncpy (wint_t *dst, const wint_t *src, size_t count) +{ + wint_t *ret = NULL; + + while (count > 0) + { + --count; + if ((*dst++ = *src++) == L'\0') + { + ret = dst - 1; + break; + } + } + while (count-- > 0) + *dst++ = L'\0'; + + return ret ? ret : dst; +} + #ifdef __cplusplus } #endif From 9870f1d1ffe36f77328c001fdf402c94f56c25ce Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 10:36:55 +0100 Subject: [PATCH 220/767] Cygwin: wcichr: add wint_t replacement for wcschr Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/wchar.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index 125e49ece1..d1b6385917 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -72,6 +72,19 @@ wcilen (const wint_t *wcs) return ret; } +/* like wcschr, just for wint_t */ +static inline wint_t * +wcichr (const wint_t *str, wint_t chr) +{ + do + { + if (*str == chr) + return (wint_t *) str; + } + while (*str++); + return NULL; +} + /* like wcscmp, just for wint_t */ static inline int wcicmp (const wint_t *s1, const wint_t *s2) From 149cabea8220c7baf1185ccfaea03922bbfd390a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 10:44:52 +0100 Subject: [PATCH 221/767] Cygwin: mbsnrtowci: like mbsnrtowcs, just for wint_t Deviation from standard: If the input is broken, the output will be broken. I. e., we just copy the current byte over into the wint_t destination and try to pick up on the next byte. This is in line with the way fnmatch works. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/wchar.h | 8 +++++ winsup/cygwin/strfuncs.cc | 53 ++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index d1b6385917..ecf489cd58 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -52,6 +52,14 @@ size_t wirtomb (char *, wint_t, mbstate_t *); a UTF-32 value. Defined in strfuncs.cc */ extern size_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); +/* replacement function for mbsnrtowcs, returning a wint_t representing + a UTF-32 value. Defined in strfuncs.cc. + Deviation from standard: If the input is broken, the output will be + broken. I. e., we just copy the current byte over into the wint_t + destination and try to pick up on the next byte. This is in line + with the way fnmatch works. */ +extern size_t mbsnrtowci(wint_t *, const char **, size_t, size_t, mbstate_t *); + /* convert wint_t string to char string, but *only* if the string consists entirely of ASCII chars */ static inline void diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 80e3eb0ad6..9324e15531 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -180,6 +180,59 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) return len; } +extern "C" size_t +mbsnrtowci(wint_t *dst, const char **src, size_t nms, size_t len, mbstate_t *ps) +{ + wint_t *ptr = dst; + const char *tmp_src; + size_t max; + size_t count = 0; + size_t bytes; + + if (dst == NULL) + { + /* Ignore original len value and do not alter src pointer if the + dst pointer is NULL. */ + len = (size_t)-1; + tmp_src = *src; + src = &tmp_src; + } + max = len; + while (len > 0) + { + bytes = mbrtowi (ptr, *src, MB_CUR_MAX, ps); + if (bytes > 0) + { + *src += bytes; + nms -= bytes; + ++count; + ptr = (dst == NULL) ? NULL : ptr + 1; + --len; + } + else if (bytes == 0) + { + *src = NULL; + return count; + } + else + { + /* Deviation from standard: If the input is broken, the output + will be broken. I. e., we just copy the current byte over + into the wint_t destination and try to pick up on the next + byte. This is in line with the way fnmatch works. */ + ps->__count = 0; + if (dst) + { + *ptr++ = (const wint_t) *(*src)++; + ++count; + --nms; + --len; + } + } + } + return (size_t) max; +} + /* The SJIS, JIS and eucJP conversion in newlib does not use UTF as wchar_t character representation. That's unfortunate for us since we require UTF for the OS. What we do here is to have our own From c36064bbd0c50323c15842c89a0024c780983e87 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 10:54:00 +0100 Subject: [PATCH 222/767] Cygwin: fnmatch: support collating symbols in [. .] brackets This requires quite a few changes in how fnmatch operates. It always operates on wint_t strings now, just like regex and glob, and it always keeps a pointer on the character inside the string, rather than operating on a single character. As a result, just drop the ifdef's for Cygwin. The code is non-portable now anyway... Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/libc/fnmatch.c | 288 +++++++++++++++++++---------------- 1 file changed, 158 insertions(+), 130 deletions(-) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index d109c2124a..8a229a1420 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -72,71 +72,77 @@ __FBSDID("$FreeBSD: head/lib/libc/gen/fnmatch.c 288309 2015-09-27 12:52:18Z jill #define RANGE_NOMATCH 0 #define RANGE_ERROR (-1) -static int rangematch(const char *, wint_t, int, char **, mbstate_t *); +static int rangematch(const wint_t *, wint_t *, int, wint_t **, mbstate_t *); int -fnmatch(const char *pattern, const char *string, int flags) +fnmatch(const char *in_pattern, const char *in_string, int flags) { - const char *stringstart = string; - const char *bt_pattern, *bt_string; - mbstate_t patmbs, strmbs; + size_t pclen = strlen (in_pattern); + size_t sclen = strlen (in_string); + wint_t *pattern = (wint_t *) alloca ((pclen + 1) * sizeof (wint_t)); + wint_t *string = (wint_t *) alloca ((sclen + 1) * sizeof (wint_t)); + + const wint_t *stringstart = string; + const wint_t *bt_pattern, *bt_string; + mbstate_t patmbs = { 0 }; + mbstate_t strmbs = { 0 }; mbstate_t bt_patmbs, bt_strmbs; - char *newp; - char c; - wint_t pc, sc; - size_t pclen, sclen; + wint_t *newp; + wint_t *c; + wint_t *pc, *sc; + + pclen = mbsnrtowci (pattern, &in_pattern, (size_t) -1, pclen, &patmbs); + if (pclen == (size_t) -1) + return (FNM_NOMATCH); + pattern[pclen] = '\0'; + sclen = mbsnrtowci (string, &in_string, (size_t) -1, sclen, &strmbs); + if (sclen == (size_t) -1) + return (FNM_NOMATCH); + string[sclen] = '\0'; bt_pattern = bt_string = NULL; for (;;) { - pclen = mbrtowi(&pc, pattern, MB_LEN_MAX, &patmbs); - if (pclen == (size_t)-1 || pclen == (size_t)-2) - return (FNM_NOMATCH); - pattern += pclen; - sclen = mbrtowi(&sc, string, MB_LEN_MAX, &strmbs); - if (sclen == (size_t)-1 || sclen == (size_t)-2) { - sc = (unsigned char)*string; - sclen = 1; - memset(&strmbs, 0, sizeof(strmbs)); - } - switch (pc) { + pc = pattern++; + sc = string; + switch (*pc) { case EOS: - if ((flags & FNM_LEADING_DIR) && sc == '/') + if ((flags & FNM_LEADING_DIR) && *sc == '/') return (0); - if (sc == EOS) + if (*sc == EOS) return (0); goto backtrack; case '?': - if (sc == EOS) + if (*sc == EOS) return (FNM_NOMATCH); - if (sc == '/' && (flags & FNM_PATHNAME)) + if (*sc == '/' && (flags & FNM_PATHNAME)) goto backtrack; - if (sc == '.' && (flags & FNM_PERIOD) && + if (*sc == '.' && (flags & FNM_PERIOD) && (string == stringstart || ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) goto backtrack; - string += sclen; + ++string; break; case '*': - c = *pattern; + c = pattern; /* Collapse multiple stars. */ - while (c == '*') - c = *++pattern; + while (*c == '*') + *c = *++pattern; - if (sc == '.' && (flags & FNM_PERIOD) && + if (*sc == '.' && (flags & FNM_PERIOD) && (string == stringstart || ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) goto backtrack; /* Optimize for pattern with * at end or before /. */ - if (c == EOS) + if (*c == EOS) if (flags & FNM_PATHNAME) return ((flags & FNM_LEADING_DIR) || - strchr(string, '/') == NULL ? + wcichr(string, '/') == NULL ? 0 : FNM_NOMATCH); else return (0); - else if (c == '/' && flags & FNM_PATHNAME) { - if ((string = strchr(string, '/')) == NULL) + else if (*c == '/' && flags & FNM_PATHNAME) { + if ((string = wcichr(string, '/')) == NULL) return (FNM_NOMATCH); break; } @@ -147,47 +153,46 @@ fnmatch(const char *pattern, const char *string, int flags) * there is no way having it match more characters * can help us, given that we are already here. */ - bt_pattern = pattern, bt_patmbs = patmbs; - bt_string = string, bt_strmbs = strmbs; + bt_pattern = pattern; + bt_patmbs = patmbs; + bt_string = string; + bt_strmbs = strmbs; break; case '[': - if (sc == EOS) + if (*sc == EOS) return (FNM_NOMATCH); - if (sc == '/' && (flags & FNM_PATHNAME)) + if (*sc == '/' && (flags & FNM_PATHNAME)) goto backtrack; - if (sc == '.' && (flags & FNM_PERIOD) && + if (*sc == '.' && (flags & FNM_PERIOD) && (string == stringstart || ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) goto backtrack; - switch (rangematch(pattern, sc, flags, &newp, - &patmbs)) { + int ret = rangematch(pattern, sc, flags, &newp, + &patmbs); + switch (ret) { case RANGE_ERROR: goto norm; - case RANGE_MATCH: - pattern = newp; - break; case RANGE_NOMATCH: goto backtrack; + default: /* > 0 ... case RANGE_MATCH */ + pattern = newp; + break; } - string += sclen; + string += ret; break; case '\\': if (!(flags & FNM_NOESCAPE)) { - pclen = mbrtowi(&pc, pattern, MB_LEN_MAX, - &patmbs); - if (pclen == (size_t)-1 || pclen == (size_t)-2) - return (FNM_NOMATCH); - pattern += pclen; + pc = pattern++; } fallthrough; default: norm: - string += sclen; - if (pc == sc) + ++string; + if (*pc == *sc) ; else if ((flags & FNM_CASEFOLD) && - (towlower(pc) == towlower(sc))) + (towlower(*pc) == towlower(*sc))) ; else { backtrack: @@ -199,22 +204,16 @@ fnmatch(const char *pattern, const char *string, int flags) */ if (bt_pattern == NULL) return (FNM_NOMATCH); - sclen = mbrtowi(&sc, bt_string, MB_LEN_MAX, - &bt_strmbs); - if (sclen == (size_t)-1 || - sclen == (size_t)-2) { - sc = (unsigned char)*bt_string; - sclen = 1; - memset(&bt_strmbs, 0, - sizeof(bt_strmbs)); - } - if (sc == EOS) + sc = (wint_t *) bt_string; + if (*sc == EOS) return (FNM_NOMATCH); - if (sc == '/' && flags & FNM_PATHNAME) + if (*sc == '/' && flags & FNM_PATHNAME) return (FNM_NOMATCH); - bt_string += sclen; - pattern = bt_pattern, patmbs = bt_patmbs; - string = bt_string, strmbs = bt_strmbs; + ++bt_string; + pattern = (wint_t *) bt_pattern; + patmbs = bt_patmbs; + string = (wint_t *) bt_string; + strmbs = bt_strmbs; } break; } @@ -222,18 +221,46 @@ fnmatch(const char *pattern, const char *string, int flags) /* NOTREACHED */ } +/* Return value is either '\0', ':', '.', '=', or '[' if no class + expression found. cptr_p is set to the next character which needs + checking. */ +static inline wint_t +check_classes_expr(const wint_t **cptr_p, wint_t *classbuf, size_t classbufsize) +{ + const wint_t *ctype = NULL; + const wint_t *cptr = *cptr_p; + + if (*cptr == '[' && + (cptr[1] == ':' || cptr[1] == '.' || cptr[1] == '=')) { + ctype = ++cptr; + while (*++cptr && (*cptr != *ctype || cptr[1] != ']')) + ; + if (!*cptr) + return '\0'; + if (classbuf) { + const wint_t *class_p = ctype + 1; + size_t clen = cptr - class_p; + + if (clen < classbufsize) + *wcipncpy (classbuf, class_p, clen) = '\0'; + else + ctype = NULL; + } + cptr += 2; /* Advance cptr to next char after class expr. */ + } + *cptr_p = cptr; + return ctype ? *ctype : '['; +} + static int -rangematch(const char *pattern, wint_t test, int flags, char **newp, +rangematch(const wint_t *pattern, wint_t *test, int flags, wint_t **newp, mbstate_t *patmbs) { int negate, ok; - wint_t c, c2; - size_t pclen; - const char *origpat; -#ifndef __CYGWIN__ - struct xlocale_collate *table = - (struct xlocale_collate*)__get_locale()->components[XLC_COLLATE]; -#endif + wint_t *c, *c2; + //size_t pclen; + const wint_t *origpat; + size_t tlen = next_unicode_char (test); /* * A bracket expression starting with an unquoted circumflex @@ -245,8 +272,10 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, if ( (negate = (*pattern == '!' || *pattern == '^')) ) ++pattern; - if (flags & FNM_CASEFOLD) - test = towlower(test); + if (flags & FNM_CASEFOLD) { + for (int idx = 0; idx < tlen; ++idx) + test[idx] = towlower(test[idx]); + } /* * A right bracket shall lose its special meaning and represent @@ -256,6 +285,11 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, ok = 0; origpat = pattern; for (;;) { + wint_t wclass[64], wclass2[64]; + char cclass[64]; + wint_t ctype; + size_t clen = 1, c2len = 1; + if (*pattern == ']' && pattern > origpat) { pattern++; break; @@ -265,75 +299,69 @@ rangematch(const char *pattern, wint_t test, int flags, char **newp, return (RANGE_NOMATCH); } else if (*pattern == '\\' && !(flags & FNM_NOESCAPE)) pattern++; - if (*pattern == '[' && (pattern[1] == ':' || pattern[1] == '.' - || pattern[1] == '=')) { - const char ctype = *++pattern; - const char *class_p = ++pattern; - - while (*pattern - && (*pattern != ctype || pattern[1] != ']')) - ++pattern; - if (!*pattern) - return (RANGE_ERROR); - if (ctype == ':') { /* named character class */ - size_t clen = pattern - class_p; - char class[clen + 1]; - - *stpncpy (class, class_p, clen) = '\0'; - if (iswctype (test, wctype (class))) - ok = 1; - } else if (ctype == '=') { /* equivalence class */ - size_t elen = pattern - class_p; - char equiv[elen + 1]; - wint_t eqv; - - *stpncpy (equiv, class_p, elen) = '\0'; - if (mbrtowi(&eqv, equiv, elen, patmbs) == elen - && is_unicode_equiv (test, eqv)) - ok = 1; - } - /* TODO: [. is just ignored for now */ - pattern += 2; + switch (ctype = check_classes_expr (&pattern, wclass, 64)) { + case ':': + /* No worries, char classes are ASCII-only */ + wcitoascii (cclass, wclass); + if (iswctype (*test, wctype (cclass))) + ok = 1; continue; - + case '=': + if (wcilen (wclass) == 1 && + is_unicode_equiv (*test, *wclass)) + ok = 1; + continue; + case '.': + if (!is_unicode_coll_elem (wclass)) + return (RANGE_NOMATCH); + c = wclass; + clen = wcilen (wclass); + break; + default: + c = (wint_t *) pattern++; + break; + } + if (flags & FNM_CASEFOLD) { + for (int idx = 0; idx < tlen; ++idx) + c[idx] = towlower(c[idx]); } - pclen = mbrtowi(&c, pattern, MB_LEN_MAX, patmbs); - if (pclen == (size_t)-1 || pclen == (size_t)-2) - return (RANGE_NOMATCH); - pattern += pclen; - - if (flags & FNM_CASEFOLD) - c = towlower(c); if (*pattern == '-' && *(pattern + 1) != EOS && *(pattern + 1) != ']') { if (*++pattern == '\\' && !(flags & FNM_NOESCAPE)) if (*pattern != EOS) pattern++; - pclen = mbrtowi(&c2, pattern, MB_LEN_MAX, patmbs); - if (pclen == (size_t)-1 || pclen == (size_t)-2) - return (RANGE_NOMATCH); - pattern += pclen; - if (c2 == EOS) + const wint_t *orig_pattern = pattern; + switch (ctype = check_classes_expr (&pattern, wclass2, + 64)) { + case '.': + if (!is_unicode_coll_elem (wclass2)) + return (RANGE_NOMATCH); + c2 = wclass2; + c2len = wcilen (wclass2); + break; + default: + pattern = orig_pattern; + c2 = (wint_t *) pattern++; + } + if (*c2 == EOS) return (RANGE_ERROR); - if (flags & FNM_CASEFOLD) - c2 = towlower(c2); + if (flags & FNM_CASEFOLD) { + for (int idx = 0; idx < tlen; ++idx) + c2[idx] = towlower(c2[idx]); + } -#ifdef __CYGWIN__ if ((!__get_current_collate_locale ()->win_locale[0]) ? -#else - if (table->__collate_load_error ? -#endif c <= test && test <= c2 : - __wcollate_range_cmp(c, test) <= 0 - && __wcollate_range_cmp(test, c2) <= 0 + __wscollate_range_cmp(c, test, clen, tlen) <= 0 + && __wscollate_range_cmp(test, c2, tlen, c2len) <= 0 ) ok = 1; - } else if (c == test) + } else if (clen == tlen && wcincmp (c, test, clen) == 0) ok = 1; } - *newp = (char *)pattern; - return (ok == negate ? RANGE_NOMATCH : RANGE_MATCH); + *newp = (wint_t *) pattern; + return (ok == negate ? RANGE_NOMATCH : tlen); } From c0aba3141b99cdbc32470204fc5bde421b3d76e5 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 11:49:52 +0100 Subject: [PATCH 223/767] Cygwin: add collating symbols support to release message Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/release/3.5.0 | 6 +++--- winsup/doc/new-features.xml | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index cc1b52bd22..d6b24e5f99 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -13,9 +13,9 @@ What's new: cygwin distro, as well as getting extended info on available and installed packages. -- fnmatch(3) and glob(3) now support named character classes and - equivalence class expressions in the search pattern, i.e., [:alnum:], - [=a=], etc. +- fnmatch(3) and glob(3) now support named character classes, equivalence + class expressions, and collating symbols in the search pattern, i.e., + [:alnum:], [=a=], [.aa.]. - Introduce /proc/codesets and /proc/locales with information on supported codesets and locales for all interested parties. Locale(1) diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 80046247e5..0858b01e5c 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -29,8 +29,9 @@ installed packages. </para></listitem> <listitem><para> -fnmatch(3) and glob(3) now support named character classes and equivalence -class expressions in the search pattern, i.e., [:alnum:], [=a=], etc. +fnmatch(3) and glob(3) now support named character classes, equivalence +class expressions, and collating symbols in the search pattern, i.e., +[:alnum:], [=a=], [.aa.]. </para></listitem> <listitem><para> From 68db1fa7babf9c9c19b36fa4cf4bb747190c0769 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 1 Mar 2023 21:20:26 +0100 Subject: [PATCH 224/767] Cygwin: define CHARCLASS_NAME_MAX CHARCLASS_NAME_MAX isn't defined yet, accidentally. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/include/limits.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/include/limits.h b/winsup/cygwin/include/limits.h index 51cc8835d8..28b7527f51 100644 --- a/winsup/cygwin/include/limits.h +++ b/winsup/cygwin/include/limits.h @@ -375,9 +375,8 @@ details. */ #undef BC_STRING_MAX #define BC_STRING_MAX 1000 -/* Maximum number of bytes in a character class name. Not implemented. */ -#undef CHARCLASS_NAME_MAX -/* #define CHARCLASS_NAME_MAX >= _POSIX2_CHARCLASS_NAME_MAX */ +/* Maximum number of bytes in a character class name. */ +#define CHARCLASS_NAME_MAX 14 /* Maximum number of weights that can be assigned to an entry of the LC_COLLATE order keyword in the locale definition file. */ From b782dcb2b363974da249c94adedd95d218d89bef Mon Sep 17 00:00:00 2001 From: Srinath Parvathaneni <srinath.parvathaneni@arm.com> Date: Fri, 3 Mar 2023 12:45:40 +0000 Subject: [PATCH 225/767] arm: Fix the SP used in setting stack limit for standalone application. Move the instruction that saves SP before the mode check so that applications that start in USER mode correctly set the stack limit. --- libgloss/arm/crt0.S | 3 +-- newlib/libc/sys/arm/crt0.S | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S index 78515180bf..79ae1e2511 100644 --- a/libgloss/arm/crt0.S +++ b/libgloss/arm/crt0.S @@ -149,13 +149,12 @@ #if (__ARM_ARCH_PROFILE != 'M') /* Following code is compatible for both ARM and Thumb ISA. */ mrs r4, CPSR + mov r3, sp /* Save input SP value. */ /* Test mode bits - in User of all are 0. */ tst r4, #(CPSR_M_MASK) /* "eq" means r4 AND #0x0F is 0. */ beq .Lskip_cpu_modes - mov r3, sp /* Save input SP value. */ - /* FIQ mode, interrupts disabled. */ mov r1, #(CPSR_M_FIQ|CPSR_M_32BIT|CPSR_I_MASK|CPSR_F_MASK) msr CPSR_c, r1 diff --git a/newlib/libc/sys/arm/crt0.S b/newlib/libc/sys/arm/crt0.S index 6b01d8a88b..121246cfaf 100644 --- a/newlib/libc/sys/arm/crt0.S +++ b/newlib/libc/sys/arm/crt0.S @@ -149,13 +149,12 @@ #if (__ARM_ARCH_PROFILE != 'M') /* Following code is compatible for both ARM and Thumb ISA. */ mrs r4, CPSR + mov r3, sp /* Save input SP value. */ /* Test mode bits - in User of all are 0. */ tst r4, #(CPSR_M_MASK) /* "eq" means r4 AND #0x0F is 0. */ beq .Lskip_cpu_modes - mov r3, sp /* Save input SP value. */ - /* FIQ mode, interrupts disabled. */ mov r1, #(CPSR_M_FIQ|CPSR_M_32BIT|CPSR_I_MASK|CPSR_F_MASK) msr CPSR_c, r1 From 1d3d2ba54bf7fb7f47510b70cc71489b293ff60d Mon Sep 17 00:00:00 2001 From: Srinath Parvathaneni <srinath.parvathaneni@arm.com> Date: Fri, 3 Mar 2023 13:12:18 +0000 Subject: [PATCH 226/767] arm: Restrict processor mode change when in hypervisor mode If a CPU implements EL2 as its highest exception level then programs using newlib may start in hypervisor mode. In that state it is not trivial to switch into the various EL1 modes to configure the individual exception stacks, so do not try. --- libgloss/arm/crt0.S | 14 +++++++------- newlib/libc/sys/arm/crt0.S | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S index 79ae1e2511..cd1a20d617 100644 --- a/libgloss/arm/crt0.S +++ b/libgloss/arm/crt0.S @@ -122,10 +122,10 @@ * +-----+ <- SP_svc of getting in and out of secure state are not as * | | simple as writing to the CPSR mode bits. * | IRQ | -= 0x2000 - Mode switch via CPSR is not allowed once in -* | | non-privileged mode, so we take care not to enter -* ^ +-----+ <- SP_und "User" to set up its SP, and also skip most -* s | | operations if already in that mode. -* t | UND | -= 0x1000 +* | | non-privileged mode or in hypervisor mode, so we +* ^ +-----+ <- SP_und take care not to enter "User" or "Hypervisor" mode +* s | | to set up its SP, and also skip most operations if +* t | UND | -= 0x1000 already in these modes. * a | | Input parameters: * c +-----+ <- SP_und - sp - Initialized SP * k | | - r2 - May contain SL value from semihosting @@ -150,9 +150,9 @@ /* Following code is compatible for both ARM and Thumb ISA. */ mrs r4, CPSR mov r3, sp /* Save input SP value. */ - /* Test mode bits - in User of all are 0. */ - tst r4, #(CPSR_M_MASK) - /* "eq" means r4 AND #0x0F is 0. */ + ands r1, r4, #(CPSR_M_MASK) + beq .Lskip_cpu_modes + cmp r1, #(CPSR_M_HYP) beq .Lskip_cpu_modes /* FIQ mode, interrupts disabled. */ diff --git a/newlib/libc/sys/arm/crt0.S b/newlib/libc/sys/arm/crt0.S index 121246cfaf..90d5be393d 100644 --- a/newlib/libc/sys/arm/crt0.S +++ b/newlib/libc/sys/arm/crt0.S @@ -122,10 +122,10 @@ * +-----+ <- SP_svc of getting in and out of secure state are not as * | | simple as writing to the CPSR mode bits. * | IRQ | -= 0x2000 - Mode switch via CPSR is not allowed once in -* | | non-privileged mode, so we take care not to enter -* ^ +-----+ <- SP_und "User" to set up its SP, and also skip most -* s | | operations if already in that mode. -* t | UND | -= 0x1000 +* | | non-privileged mode or in hypervisor mode, so we +* ^ +-----+ <- SP_und take care not to enter "User" or "Hypervisor" mode +* s | | to set up its SP, and also skip most operations if +* t | UND | -= 0x1000 already in these modes. * a | | Input parameters: * c +-----+ <- SP_und - sp - Initialized SP * k | | - r2 - May contain SL value from semihosting @@ -150,9 +150,9 @@ /* Following code is compatible for both ARM and Thumb ISA. */ mrs r4, CPSR mov r3, sp /* Save input SP value. */ - /* Test mode bits - in User of all are 0. */ - tst r4, #(CPSR_M_MASK) - /* "eq" means r4 AND #0x0F is 0. */ + ands r1, r4, #(CPSR_M_MASK) + beq .Lskip_cpu_modes + cmp r1, #(CPSR_M_HYP) beq .Lskip_cpu_modes /* FIQ mode, interrupts disabled. */ From 6bc687e35d6a74b4b9d8531c73b3f6cc571bc744 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 3 Mar 2023 11:32:31 +0100 Subject: [PATCH 227/767] Cygwin: glob: fix conversion from UTF-32 to multibyte The conversion function g_Ctoc missed to drop the flag values from the wint_t value. That wasn't noticable with the original version because it used a 64 bit Char type and the flags were in the upper 32 bit region. So the flag values were silently dropped when wcrtomb was called. After converting Char to wint_t, we have to do drop the flags explicitely. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/glob.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index dadc67e4c1..4730d09f55 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -130,7 +130,7 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #define M_PROTECT 0x20000000U #define M_MASK 0x70ffffffU #define M_COLL_MASK 0x700000ffU -#define M_CHAR 0x0fffffffU +#define M_CHAR 0x00ffffffU typedef wint_t Char; @@ -1030,7 +1030,7 @@ g_Ctoc(const Char *str, char *buf, size_t len) memset(&mbs, 0, sizeof(mbs)); while (len >= (size_t) MB_CUR_MAX) { - clen = wirtomb(buf, *str, &mbs); + clen = wirtomb(buf, CHAR (*str), &mbs); if (clen == (size_t)-1) return (1); if (*str == L'\0') From 5ca1c57a82e040cf98cd8468d806b398d019ddbe Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 3 Mar 2023 18:15:52 +0100 Subject: [PATCH 228/767] Cygwin: is_unicode_equiv: fix comment Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 04d7072e79..95e291a283 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1268,7 +1268,7 @@ is_unicode_equiv (wint_t test, wint_t eqv) testc[1] = ((test - 0x10000) & 0x3ff) + 0xdc00; } else testc[0] = test; - /* Convert to denormalized form */ + /* Convert to decomposed form */ FoldStringW (MAP_COMPOSITE | MAP_FOLDCZONE | MAP_FOLDDIGITS, eqvc, -1, decomp_eqvc, 24); FoldStringW (MAP_COMPOSITE | MAP_FOLDCZONE | MAP_FOLDDIGITS, From 523985b31e5ed6318705a30525716187d758bc2f Mon Sep 17 00:00:00 2001 From: Takashi Yano <takashi.yano@nifty.ne.jp> Date: Tue, 7 Mar 2023 00:13:55 +0900 Subject: [PATCH 229/767] Cygwin: ctty: Add missing fixup_after_{exec,fork}() call. Previously, fixup_after_{exec,fork}() calls for CTTY were missing. This patch fixes that. Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> --- winsup/cygwin/dtable.cc | 5 +++++ winsup/cygwin/fhandler/console.cc | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 6b2394814c..8ebd7b2115 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -913,6 +913,8 @@ dtable::fixup_after_exec () else if (i <= 2) SetStdHandle (std_consts[i], fh->get_output_handle ()); } + if (cygheap->ctty) + cygheap->ctty->fixup_after_exec (); } void @@ -939,6 +941,9 @@ dtable::fixup_after_fork (HANDLE parent) else if (i <= 2) SetStdHandle (std_consts[i], fh->get_output_handle ()); } + + if (cygheap->ctty) + cygheap->ctty->fixup_after_fork (parent); } static void diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 0cbfe4ea41..23e733e947 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -723,6 +723,7 @@ fhandler_console::set_unit () pc.file_attributes (FILE_ATTRIBUTE_NORMAL); else { + _tc = NULL; set_handle (NULL); set_output_handle (NULL); created = false; @@ -4251,6 +4252,12 @@ fhandler_console::fixup_after_fork_exec (bool execing) set_unit (); setup_io_mutex (); wpbuf.init (); + if (cygheap->ctty == this && !get_handle () && !get_output_handle ()) + { + close_with_arch (); + cygheap->ctty = NULL; + return; + } if (!execing) return; From ce979464f3b83422469ae2c0bf1d32f5160812b4 Mon Sep 17 00:00:00 2001 From: Takashi Yano <takashi.yano@nifty.ne.jp> Date: Tue, 7 Mar 2023 00:18:04 +0900 Subject: [PATCH 230/767] Cygwin: console: Suppress unnecessary open_shared_console() calls. Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> --- winsup/cygwin/fhandler/console.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 23e733e947..b0252dba48 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -645,7 +645,7 @@ scan_console (HWND hw, LPARAM lp) { *p->shared_console_info = cs; CloseHandle (h); - return TRUE; + return FALSE; } UnmapViewOfFile ((void *) cs); CloseHandle (h); From 13a84ac79b1c8e7e6aa3c7a2444ae2cbbe5ee430 Mon Sep 17 00:00:00 2001 From: Takashi Yano <takashi.yano@nifty.ne.jp> Date: Sun, 5 Mar 2023 19:02:13 +0900 Subject: [PATCH 231/767] Cygwin: ctty: Replace ctty constant with more descriptive macros. This patch replaces ctty constants with more descriptive macros (CTTY_UNINITIALIZED and CTTY_RELEASED) rather than -1 and -2 as well as checking sign with CTTY_IS_VALID(). Fixes: 3b7df69aaa57 (Cygwin: ctty: Add comments for the special values: -1 and -2.) Suggested-by: Corinna Vinschen <corinna@vinschen.de> Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> --- winsup/cygwin/dtable.cc | 8 ++++---- winsup/cygwin/exceptions.cc | 2 +- winsup/cygwin/external.cc | 4 ++-- winsup/cygwin/fhandler/console.cc | 10 ++++++---- winsup/cygwin/fhandler/process.cc | 4 ++-- winsup/cygwin/fhandler/pty.cc | 12 ++++++------ winsup/cygwin/fhandler/termios.cc | 7 ++++--- winsup/cygwin/local_includes/fhandler.h | 11 +++++++++++ winsup/cygwin/local_includes/tty.h | 2 +- winsup/cygwin/pinfo.cc | 17 +++++++---------- winsup/cygwin/spawn.cc | 2 +- winsup/cygwin/syscalls.cc | 6 ++---- winsup/cygwin/tty.cc | 2 +- 13 files changed, 48 insertions(+), 39 deletions(-) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 8ebd7b2115..301ec8ca9f 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -323,7 +323,7 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) || GetNumberOfConsoleInputEvents (handle, (DWORD *) &buf)) { /* Console I/O */ - if (myself->ctty > 0) + if (CTTY_IS_VALID (myself->ctty)) dev.parse (myself->ctty); else { @@ -603,10 +603,10 @@ fh_alloc (path_conv& pc) fhraw = cnew_no_ctor (fhandler_console, -1); debug_printf ("not called from open for /dev/tty"); } - else if (myself->ctty <= 0 && last_tty_dev + else if (!CTTY_IS_VALID (myself->ctty) && last_tty_dev && !myself->set_ctty (fh_last_tty_dev, 0)) debug_printf ("no /dev/tty assigned"); - else if (myself->ctty > 0) + else if (CTTY_IS_VALID (myself->ctty)) { debug_printf ("determining /dev/tty assignment for ctty %p", myself->ctty); if (iscons_dev (myself->ctty)) @@ -682,7 +682,7 @@ build_fh_pc (path_conv& pc) /* Keep track of the last tty-like thing opened. We could potentially want to open it if /dev/tty is referenced. */ - if (myself->ctty > 0 || !fh->is_tty () || !pc.isctty_capable ()) + if (CTTY_IS_VALID (myself->ctty) || !fh->is_tty () || !pc.isctty_capable ()) last_tty_dev = FH_NADA; else last_tty_dev = fh->dev (); diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index c3433ab947..642afb788a 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1049,7 +1049,7 @@ ctrl_c_handler (DWORD type) return FALSE; } - if (myself->ctty != -1) + if (myself->ctty != CTTY_UNINITIALIZED) { if (type == CTRL_CLOSE_EVENT) { diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc index 582bab84f7..97e4528741 100644 --- a/winsup/cygwin/external.cc +++ b/winsup/cygwin/external.cc @@ -73,12 +73,12 @@ fillout_pinfo (pid_t pid, int winpid) ep.pid = thispid + MAX_PID; ep.dwProcessId = thispid; ep.process_state = PID_IN_USE; - ep.ctty = -1; + ep.ctty = CTTY_UNINITIALIZED; break; } else if (nextpid || p->pid == pid) { - ep.ctty = (p->ctty < 0 || iscons_dev (p->ctty)) + ep.ctty = (!CTTY_IS_VALID (p->ctty) || iscons_dev (p->ctty)) ? p->ctty : device::minor (p->ctty); ep.pid = p->pid; ep.ppid = p->ppid; diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index b0252dba48..7768a99418 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -665,12 +665,13 @@ fhandler_console::set_unit () this_unit == FH_CONSOLE || this_unit == FH_CONIN || this_unit == FH_CONOUT; if (!generic_console && this_unit != FH_TTY) unit = get_minor (); - else if (myself->ctty != -1) + else if (myself->ctty != CTTY_UNINITIALIZED) unit = device::minor (myself->ctty); if (shared_console_info[unit]) ; /* Do nothing */ - else if (generic_console && myself->ctty != -1 && !iscons_dev (myself->ctty)) + else if (generic_console + && myself->ctty != CTTY_UNINITIALIZED && !iscons_dev (myself->ctty)) devset = FH_ERROR; else { @@ -1732,7 +1733,7 @@ int fhandler_console::dup (fhandler_base *child, int flags) { /* See comments in fhandler_pty_slave::dup */ - if (myself->ctty != -2) + if (myself->ctty != CTTY_RELEASED) myself->set_ctty (this, flags); return 0; } @@ -1933,7 +1934,8 @@ fhandler_console::close () memset (&con_ra, 0, sizeof (con_ra)); if (!have_execed && !invisible_console - && (myself->ctty <= 0 || get_device () == (dev_t) myself->ctty)) + && (!CTTY_IS_VALID (myself->ctty) + || get_device () == (dev_t) myself->ctty)) free_console (); if (shared_console_info[unit]) diff --git a/winsup/cygwin/fhandler/process.cc b/winsup/cygwin/fhandler/process.cc index 864e2f4d50..1e5e83b4ab 100644 --- a/winsup/cygwin/fhandler/process.cc +++ b/winsup/cygwin/fhandler/process.cc @@ -468,7 +468,7 @@ static off_t format_process_ctty (void *data, char *&destbuf) { _pinfo *p = (_pinfo *) data; - if (p->ctty < 0) + if (!CTTY_IS_VALID (p->ctty)) { destbuf = (char *) crealloc_abort (destbuf, 2); return __small_sprintf (destbuf, "\n"); @@ -1098,7 +1098,7 @@ format_process_stat (void *data, char *&destbuf) /* ctty maj is 31:16, min is 15:0; tty_nr s/b maj 15:8, min 31:20, 7:0; maj is 31:16 >> 16 & fff << 8; min is 15:0 >> 8 & ff << 20 | & ff */ int tty_nr = 0; - if (p->ctty > 0) + if (CTTY_IS_VALID (p->ctty)) tty_nr = (((p->ctty >> 8) & 0xff) << 20) | (((p->ctty >> 16) & 0xfff) << 8) | (p->ctty & 0xff); diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 0dac80a163..664d7dbc63 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -1609,12 +1609,12 @@ fhandler_pty_slave::dup (fhandler_base *child, int flags) /* This code was added in Oct 2001 for some undisclosed reason. However, setting the controlling tty on a dup causes rxvt to hang when the parent does a dup since the controlling pgid changes. - Specifically testing for -2 (ctty has been setsid'ed) works around - this problem. However, it's difficult to see scenarios in which you - have a dup'able fd, no controlling tty, and not having run setsid. - So, we might want to consider getting rid of the set_ctty in tty-like dup - methods entirely at some point */ - if (myself->ctty != -2) + Specifically testing for CTTY_RELEASED (ctty has been setsid'ed) + works around this problem. However, it's difficult to see scenarios + in which you have a dup'able fd, no controlling tty, and not having + run setsid. So, we might want to consider getting rid of the + set_ctty in tty-like dup methods entirely at some point */ + if (myself->ctty != CTTY_RELEASED) myself->set_ctty (this, flags); report_tty_counts (child, "duped slave", ""); return 0; diff --git a/winsup/cygwin/fhandler/termios.cc b/winsup/cygwin/fhandler/termios.cc index 5b92cdd319..1a5dfdd1bb 100644 --- a/winsup/cygwin/fhandler/termios.cc +++ b/winsup/cygwin/fhandler/termios.cc @@ -111,7 +111,7 @@ fhandler_termios::tcsetpgrp (const pid_t pgid) int fhandler_termios::tcgetpgrp () { - if (myself->ctty > 0 && myself->ctty == tc ()->ntty) + if (CTTY_IS_VALID (myself->ctty) && myself->ctty == tc ()->ntty) return tc ()->pgid; set_errno (ENOTTY); return -1; @@ -685,7 +685,7 @@ fhandler_termios::sigflush () pid_t fhandler_termios::tcgetsid () { - if (myself->ctty > 0 && myself->ctty == tc ()->ntty) + if (CTTY_IS_VALID (myself->ctty) && myself->ctty == tc ()->ntty) return tc ()->getsid (); set_errno (ENOTTY); return -1; @@ -730,7 +730,8 @@ fhandler_termios::ioctl (int cmd, void *varg) termios_printf ("myself->ctty %d, myself->sid %d, myself->pid %d, arg %d, tc()->getsid () %d\n", myself->ctty, myself->sid, myself->pid, arg, tc ()->getsid ()); - if (myself->ctty > 0 || myself->sid != myself->pid || (!arg && tc ()->getsid () > 0)) + if (CTTY_IS_VALID (myself->ctty) || myself->sid != myself->pid + || (!arg && tc ()->getsid () > 0)) { set_errno (EPERM); return -1; diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 085a2a10d0..f82f565cf4 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -1905,6 +1905,17 @@ class fhandler_serial: public fhandler_base #define release_output_mutex() \ __release_output_mutex (__PRETTY_FUNCTION__, __LINE__) +/* + -1: CTTY is not initialized yet. Can associate with the TTY + which is associated with the own session. + -2: CTTY has been released by setsid(). Can associate with + a new TTY as CTTY, but cannot associate with the TTYs + already associated with other sessions. +*/ +#define CTTY_UNINITIALIZED -1 +#define CTTY_RELEASED -2 +#define CTTY_IS_VALID(c) ((c) > 0) + extern DWORD mutex_timeout; DWORD acquire_attach_mutex (DWORD t); void release_attach_mutex (void); diff --git a/winsup/cygwin/local_includes/tty.h b/winsup/cygwin/local_includes/tty.h index cd1d6ecaac..df3bf60bf4 100644 --- a/winsup/cygwin/local_includes/tty.h +++ b/winsup/cygwin/local_includes/tty.h @@ -13,7 +13,7 @@ details. */ #define INP_BUFFER_SIZE 256 #define OUT_BUFFER_SIZE 256 #define NTTYS 128 -#define real_tty_attached(p) ((p)->ctty > 0 && !iscons_dev ((p)->ctty)) +#define real_tty_attached(p) (CTTY_IS_VALID ((p)->ctty) && !iscons_dev ((p)->ctty)) /* Input/Output/ioctl events */ diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 37770b643e..bfd338e5b8 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -97,7 +97,7 @@ pinfo_init (char **envp, int envc) myself.thisproc (NULL); myself->pgid = myself->sid = myself->pid; - myself->ctty = -1; /* -1 means not initialized yet. */ + myself->ctty = CTTY_UNINITIALIZED; myself->uid = ILLEGAL_UID; myself->gid = ILLEGAL_GID; environ_init (NULL, 0); /* call after myself has been set up */ @@ -212,7 +212,7 @@ pinfo::exit (DWORD n) maybe_set_exit_code_from_windows (); /* may block */ exit_state = ES_FINAL; - if (myself->ctty > 0 && !iscons_dev (myself->ctty)) + if (CTTY_IS_VALID (myself->ctty) && !iscons_dev (myself->ctty)) { lock_ttys here; tty *t = cygwin_shared->tty[device::minor(myself->ctty)]; @@ -514,7 +514,7 @@ pinfo::pinfo (HANDLE parent, pinfo_minimal& from, pid_t pid): const char * _pinfo::_ctty (char *buf) { - if (ctty <= 0) + if (!CTTY_IS_VALID (ctty)) strcpy (buf, "no ctty"); else { @@ -530,12 +530,9 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) { tty_min& tc = *fh->tc (); debug_printf ("old %s, ctty device number %y, tc.ntty device number %y flags & O_NOCTTY %y", __ctty (), ctty, tc.ntty, flags & O_NOCTTY); - if (fh && (ctty <= 0 || ctty == tc.ntty) && !(flags & O_NOCTTY)) + if (fh && (!CTTY_IS_VALID (ctty) || ctty == tc.ntty) && !(flags & O_NOCTTY)) { - if (tc.getsid () && tc.getsid () != sid && ctty == -2) - /* ctty == -2 means CTTY has been released by setsid(). - Can be associated only with a new TTY which is not - associated with any other session. */ + if (tc.getsid () && tc.getsid () != sid && ctty == CTTY_RELEASED) ; /* Do nothing if another session is associated with the TTY. */ else { @@ -581,14 +578,14 @@ _pinfo::set_ctty (fhandler_termios *fh, int flags) an obvious bug surfaces. */ if (sid == pid && !tc.getsid ()) tc.setsid (sid); - if (ctty > 0) + if (CTTY_IS_VALID (ctty)) sid = tc.getsid (); /* See above */ if ((!tc.getpgid () || being_debugged ()) && pgid == pid) tc.setpgid (pgid); } debug_printf ("cygheap->ctty now %p, archetype %p", cygheap->ctty, fh ? fh->archetype : NULL); - return ctty > 0; + return CTTY_IS_VALID (ctty); } /* Test to determine if a process really exists and is processing signals. diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 32ba5b3778..4d0ca127b9 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -623,7 +623,7 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, si.cb = sizeof (si); if (!iscygwin ()) - init_console_handler (myself->ctty > 0); + init_console_handler (CTTY_IS_VALID (myself->ctty)); loop: /* When ruid != euid we create the new process under the current original diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 15ddbb0a86..3908aee2ea 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1176,9 +1176,7 @@ setsid (void) syscall_printf ("hmm. pgid %d pid %d", myself->pgid, myself->pid); else { - myself->ctty = -2; /* -2 means CTTY has been released by setsid(). - Can be associated only with a new TTY which - is not associated with any session. */ + myself->ctty = CTTY_RELEASED; myself->sid = myself->pid; myself->pgid = myself->pid; if (cygheap->ctty) @@ -2843,7 +2841,7 @@ ctermid (char *str) { if (str == NULL) str = _my_tls.locals.ttybuf; - if (myself->ctty < 0) + if (!CTTY_IS_VALID (myself->ctty)) strcpy (str, "no tty"); else { diff --git a/winsup/cygwin/tty.cc b/winsup/cygwin/tty.cc index 6ec8927cb1..bf7c6010fd 100644 --- a/winsup/cygwin/tty.cc +++ b/winsup/cygwin/tty.cc @@ -58,7 +58,7 @@ revoke (char *ttyname) extern "C" int ttyslot (void) { - if (myself->ctty <= 0 || iscons_dev (myself->ctty)) + if (!CTTY_IS_VALID (myself->ctty) || iscons_dev (myself->ctty)) return -1; return device::minor (myself->ctty); } From 93f70d7849b865f2081596bbeabdd6fca6101553 Mon Sep 17 00:00:00 2001 From: Takashi Yano <takashi.yano@nifty.ne.jp> Date: Sun, 5 Mar 2023 18:17:39 +0900 Subject: [PATCH 232/767] Cygwin: ctty: Remove old 'kludge' code. Remove old 'kludge' code which does not seem necessary anymore. The comment of the 'kludge' is as follows. * syscalls.cc (setsid): On second thought, in the spirit of keeping things kludgy, set ctty to -2 here as a special flag, and... (open): ...only eschew setting O_NOCTTY when that case is detected. Fixes: c38a2d837303 Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> --- winsup/cygwin/dtable.cc | 7 ------- winsup/cygwin/syscalls.cc | 11 ----------- 2 files changed, 18 deletions(-) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 301ec8ca9f..18e0f30978 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -764,13 +764,6 @@ dtable::dup3 (int oldfd, int newfd, int flags) return -1; } - /* This is a temporary kludge until all utilities can catch up with - a change in behavior that implements linux functionality: opening - a tty should not automatically cause it to become the controlling - tty for the process. */ - if (newfd > 2) - flags |= O_NOCTTY; - if ((newfh = dup_worker (fds[oldfd], flags)) == NULL) { res = -1; diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3908aee2ea..8ae0397fb1 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1450,17 +1450,6 @@ open (const char *unix_path, int flags, ...) int opt = PC_OPEN | PC_SYM_NOFOLLOW_PROCFD; opt |= (flags & (O_NOFOLLOW | O_EXCL)) ? PC_SYM_NOFOLLOW : PC_SYM_FOLLOW; - /* This is a temporary kludge until all utilities can catch up - with a change in behavior that implements linux functionality: - opening a tty should not automatically cause it to become the - controlling tty for the process. */ - if (!(flags & O_NOCTTY) && fd > 2 && myself->ctty != -2) - { - flags |= O_NOCTTY; - /* flag that, if opened, this fhandler could later be capable - of being a controlling terminal if /dev/tty is opened. */ - opt |= PC_CTTY; - } /* If we're opening a FIFO, we will call device_access_denied below. This leads to a call to fstat, which can use the From 59de8167157ed300f06fd93cccf5d5ba98a77a70 Mon Sep 17 00:00:00 2001 From: Sebastian Huber <sebastian.huber@embedded-brains.de> Date: Wed, 8 Mar 2023 14:07:07 +0100 Subject: [PATCH 233/767] libgloss/epiphany: Fix move instruction in crt0.S This patch relates to bug report: https://sourceware.org/bugzilla/show_bug.cgi?id=30212 --- libgloss/epiphany/crt0.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libgloss/epiphany/crt0.S b/libgloss/epiphany/crt0.S index b0d9ecbabe..fcbba1e65b 100644 --- a/libgloss/epiphany/crt0.S +++ b/libgloss/epiphany/crt0.S @@ -121,7 +121,7 @@ _external_start: #error "not implemented" #else /* !__STRUCT_ALIGN_64__ */ str r1, [r2, 0] ; __atexit = &__atexit0 - movr r0, 1 + mov r0, 1 str r0, [r1, 4] ; __atexit0._ind = 1 mov r0,%low(fini) movt r0,%high(fini) From dfd14093e32853d832b25ca316576b2309d90560 Mon Sep 17 00:00:00 2001 From: Mark Geisert <mark@maxrnd.com> Date: Tue, 14 Mar 2023 01:56:01 -0700 Subject: [PATCH 234/767] Cygwin: Fix type mismatch on sys/cpuset.h Addresses https://cygwin.com/pipermail/cygwin/2023-March/253220.html Take the opportunity to follow FreeBSD's and Linux's lead in recasting macro inline code as calls to static inline functions. This allows the macros to be type-safe. In addition, added a lower bound check to the functions that use a cpu number to avoid a potential buffer underrun on a bad argument. h/t to Corinna for the advice on recasting. Fixes: 362b98b49af5 ("Cygwin: Implement CPU_SET(3) macros") --- winsup/cygwin/include/sys/cpuset.h | 138 ++++++++++++++++++++--------- winsup/cygwin/release/3.4.7 | 5 ++ 2 files changed, 101 insertions(+), 42 deletions(-) create mode 100644 winsup/cygwin/release/3.4.7 diff --git a/winsup/cygwin/include/sys/cpuset.h b/winsup/cygwin/include/sys/cpuset.h index 5725651651..d83359fdf3 100644 --- a/winsup/cygwin/include/sys/cpuset.h +++ b/winsup/cygwin/include/sys/cpuset.h @@ -31,50 +31,104 @@ int __sched_getaffinity_sys (pid_t, size_t, cpu_set_t *); /* These macros alloc or free dynamically-sized cpu sets of size 'num' cpus. Allocations are padded such that full-word operations can be done easily. */ -#define CPU_ALLOC_SIZE(num) ((num+__NCPUBITS-1) / __NCPUBITS) * sizeof (__cpu_mask) -#define CPU_ALLOC(num) __builtin_malloc (CPU_ALLOC_SIZE(num)) -#define CPU_FREE(set) __builtin_free (set) +#define CPU_ALLOC_SIZE(num) __cpuset_alloc_size (num) +static inline size_t +__cpuset_alloc_size (int num) +{ + return (size_t) (((num + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)); +} + +#define CPU_ALLOC(num) __cpuset_alloc (num) +static inline cpu_set_t * +__cpuset_alloc (int num) +{ + return (cpu_set_t *) __builtin_malloc (CPU_ALLOC_SIZE(num)); +} + +#define CPU_FREE(set) __cpuset_free (set) +static inline void +__cpuset_free (cpu_set_t *set) +{ + __builtin_free (set); +} /* These _S macros operate on dynamically-sized cpu sets of size 'siz' bytes */ -#define CPU_ZERO_S(siz, set) __builtin_memset (set, 0, siz) - -#define CPU_SET_S(cpu,siz,set) \ - if (cpu < 8 * siz) \ - (set)->__bits[__CPUELT(cpu)] |= __CPUMASK(cpu); - -#define CPU_CLR_S(cpu,siz,set) \ - if (cpu < 8 * siz) \ - (set)->__bits[__CPUELT(cpu)] &= ~(__CPUMASK(cpu)); - -#define CPU_ISSET_S(cpu,siz,set) \ - ({int res = 0; \ - if (cpu < 8 * siz) \ - res = !!((set)->__bits[__CPUELT(cpu)] & __CPUMASK(cpu)); \ - res;}) - -#define CPU_COUNT_S(siz, set) \ - ({int tot = 0;\ - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) \ - tot += __builtin_popcountl ((set)->__bits[i]); \ - tot;}) - -#define CPU_AND_S(siz, dst, src1, src2) \ - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) \ - (dst)->__bits[i] = (src1)->__bits[i] & (src2)->__bits[i]; - -#define CPU_OR_S(siz, dst, src1, src2) \ - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) \ - (dst)->__bits[i] = (src1)->__bits[i] | (src2)->__bits[i]; - -#define CPU_XOR_S(siz, dst, src1, src2) \ - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) \ - (dst)->__bits[i] = (src1)->__bits[i] ^ (src2)->__bits[i]; - -#define CPU_EQUAL_S(siz, src1, src2) \ - ({int res = 1; \ - for (int i = 0; res && i < siz / sizeof (__cpu_mask); i++) \ - res &= (src1)->__bits[i] == (src2)->__bits[i]; \ - res;}) +#define CPU_ZERO_S(siz, set) __cpuset_zero_s (siz, set) +static inline void +__cpuset_zero_s (size_t siz, cpu_set_t *set) +{ + (void) __builtin_memset (set, 0, siz); +} + +#define CPU_SET_S(cpu, siz, set) __cpuset_set_s (cpu, siz, set) +static inline void +__cpuset_set_s (int cpu, size_t siz, cpu_set_t *set) +{ + if (cpu >= 0 && cpu < 8 * siz) + (set)->__bits[__CPUELT(cpu)] |= __CPUMASK(cpu); +} + +#define CPU_CLR_S(cpu, siz, set) __cpuset_clr_s (cpu, siz, set) +static inline void +__cpuset_clr_s (int cpu, size_t siz, cpu_set_t *set) +{ + if (cpu >= 0 && cpu < 8 * siz) + (set)->__bits[__CPUELT(cpu)] &= ~(__CPUMASK(cpu)); +} + +#define CPU_ISSET_S(cpu, siz, set) __cpuset_isset_s (cpu, siz, set) +static inline int +__cpuset_isset_s (int cpu, size_t siz, cpu_set_t *set) +{ + int res = 0; + if (cpu >= 0 && cpu < 8 * siz) + res = !!((set)->__bits[__CPUELT(cpu)] & __CPUMASK(cpu)); + return res; +} + +#define CPU_COUNT_S(siz, set) __cpuset_count_s (siz, set) +static inline int +__cpuset_count_s (size_t siz, cpu_set_t *set) +{ + int res = 0; + for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + res += __builtin_popcountl ((set)->__bits[i]); + return res; +} + +#define CPU_AND_S(siz, dst, src1, src2) __cpuset_and_s (siz, dst, src1, src2) +static inline void +__cpuset_and_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) +{ + for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + (dst)->__bits[i] = (src1)->__bits[i] & (src2)->__bits[i]; +} + +#define CPU_OR_S(siz, dst, src1, src2) __cpuset_or_s (siz, dst, src1, src2) +static inline void +__cpuset_or_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) +{ + for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + (dst)->__bits[i] = (src1)->__bits[i] | (src2)->__bits[i]; +} + +#define CPU_XOR_S(siz, dst, src1, src2) __cpuset_xor_s (siz, dst, src1, src2) +static inline void +__cpuset_xor_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) +{ + for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + (dst)->__bits[i] = (src1)->__bits[i] ^ (src2)->__bits[i]; +} + +#define CPU_EQUAL_S(siz, src1, src2) __cpuset_equal_s (siz, src1, src2) +static inline int +__cpuset_equal_s (size_t siz, cpu_set_t *src1, cpu_set_t *src2) +{ + int res = 1; + for (int i = 0; res && i < siz / sizeof (__cpu_mask); i++) + res &= (src1)->__bits[i] == (src2)->__bits[i]; + return res; +} /* These macros operate on fixed-size cpu sets of size __CPU_SETSIZE cpus */ #define CPU_ZERO(set) CPU_ZERO_S(sizeof (cpu_set_t), set) diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 new file mode 100644 index 0000000000..eba5de4732 --- /dev/null +++ b/winsup/cygwin/release/3.4.7 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +Fix CPU_SET(3) macro type mismatch by making the macros type-safe. +Addresses https://cygwin.com/pipermail/cygwin/2023-March/253220.html From c553a95243906a103a5250121833e5bc9e28f760 Mon Sep 17 00:00:00 2001 From: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu, 2 Mar 2023 21:33:32 +0000 Subject: [PATCH 235/767] Cygwin: doc: Update postinstall/preremove scripts setup >=2.925 indicates to postinstall and preremove scripts the Start Menu suffix to use via the CYGWIN_START_MENU_SUFFIX env var. It also indicates, via the CYGWIN_SETUP_OPTIONS env var, if the option to disable Start Menu shortcut creation is supplied. Update the Cygwin documentation postinstall and preremove scripts to take these env vars into consideration. --- winsup/doc/etc.postinstall.cygwin-doc.sh | 21 ++++++++++++++++----- winsup/doc/etc.preremove.cygwin-doc.sh | 8 ++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/winsup/doc/etc.postinstall.cygwin-doc.sh b/winsup/doc/etc.postinstall.cygwin-doc.sh index 97f88a16dc..b9115ef929 100755 --- a/winsup/doc/etc.postinstall.cygwin-doc.sh +++ b/winsup/doc/etc.postinstall.cygwin-doc.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # /etc/postinstall/cygwin-doc.sh - cygwin-doc postinstall script. # installs Cygwin Start Menu shortcuts for Cygwin User Guide and API PDF and # HTML if in doc dir, and links to Cygwin web site home page and FAQ @@ -36,9 +36,20 @@ do fi done +# setup was run with options not to create startmenu items +case ${CYGWIN_SETUP_OPTIONS} in + *no-startmenu*) + exit 0 + ;; +esac + # Cygwin Start Menu directory -case $(uname -s) in *-WOW*) wow64=" (32-bit)" ;; esac -smpc_dir="$($cygp $CYGWINFORALL -P -U --)/Cygwin${wow64}" +if [ ! -v CYGWIN_START_MENU_SUFFIX ] +then + case $(uname -s) in *-WOW*) CYGWIN_START_MENU_SUFFIX=" (32-bit)" ;; esac +fi + +smpc_dir="$($cygp $CYGWINFORALL -P -U --)/Cygwin${CYGWIN_START_MENU_SUFFIX}" # ensure Cygwin Start Menu directory exists /usr/bin/mkdir -p "$smpc_dir" @@ -53,7 +64,7 @@ fi # create User Guide and API PDF and HTML shortcuts while read target name desc do - [ -r "$target" ] && $mks $CYGWINFORALL -P -n "Cygwin${wow64}/$name" -d "$desc" -- $target + [ -r "$target" ] && $mks $CYGWINFORALL -P -n "Cygwin${CYGWIN_START_MENU_SUFFIX}/$name" -d "$desc" -- $target done <<EOF $doc/cygwin-ug-net.pdf User\ Guide\ \(PDF\) Cygwin\ User\ Guide\ PDF $html/cygwin-ug-net/index.html User\ Guide\ \(HTML\) Cygwin\ User\ Guide\ HTML @@ -64,7 +75,7 @@ EOF # create Home Page and FAQ URL link shortcuts while read target name desc do - $mks $CYGWINFORALL -P -n "Cygwin${wow64}/$name" -d "$desc" -a $target -- $launch + $mks $CYGWINFORALL -P -n "Cygwin${CYGWIN_START_MENU_SUFFIX}/$name" -d "$desc" -a $target -- $launch done <<EOF $site/index.html Home\ Page Cygwin\ Home\ Page\ Link $site/faq.html FAQ Cygwin\ Frequently\ Asked\ Questions\ Link diff --git a/winsup/doc/etc.preremove.cygwin-doc.sh b/winsup/doc/etc.preremove.cygwin-doc.sh index b098e6dacf..cac29ee215 100755 --- a/winsup/doc/etc.preremove.cygwin-doc.sh +++ b/winsup/doc/etc.preremove.cygwin-doc.sh @@ -26,8 +26,12 @@ do done # Cygwin Start Menu directory -case $(uname -s) in *-WOW*) wow64=" (32-bit)" ;; esac -smpc_dir="$($cygp $CYGWINFORALL -P -U --)/Cygwin${wow64}" +if [ ! -v CYGWIN_START_MENU_SUFFIX ] +then + case $(uname -s) in *-WOW*) CYGWIN_START_MENU_SUFFIX=" (32-bit)" ;; esac +fi + +smpc_dir="$($cygp $CYGWINFORALL -P -U --)/Cygwin${CYGWIN_START_MENU_SUFFIX}" # check Cygwin Start Menu directory still exists [ -d "$smpc_dir/" ] || exit 0 From 07b5d3726fb9548d474751bed1a3aa00dba263e8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Mar 2023 21:44:52 +0100 Subject: [PATCH 236/767] Cygwin: signals: drop accidental spaces from real-time signal names The signal names for the real-time signals contain spaces from the beginning of their availability. Fix that. Fixes: 61522196c715 ("* Merge in cygwin-64bit-branch.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/strsig.cc | 62 ++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/winsup/cygwin/strsig.cc b/winsup/cygwin/strsig.cc index 65f8cedffe..b92781c78c 100644 --- a/winsup/cygwin/strsig.cc +++ b/winsup/cygwin/strsig.cc @@ -56,37 +56,37 @@ struct sigdesc _s(SIGUSR1, "User defined signal 1"), /* 30 */ \ _s(SIGUSR2, "User defined signal 2"), /* 31 */ \ _s(SIGRTMIN, "Real-time signal 0"), /* 32 */ \ - _s(SIGRTMIN + 1, "Real-time signal 1"), /* 33 */ \ - _s(SIGRTMIN + 2, "Real-time signal 2"), /* 34 */ \ - _s(SIGRTMIN + 3, "Real-time signal 3"), /* 35 */ \ - _s(SIGRTMIN + 4, "Real-time signal 4"), /* 36 */ \ - _s(SIGRTMIN + 5, "Real-time signal 5"), /* 37 */ \ - _s(SIGRTMIN + 6, "Real-time signal 6"), /* 38 */ \ - _s(SIGRTMIN + 7, "Real-time signal 7"), /* 39 */ \ - _s(SIGRTMIN + 8, "Real-time signal 8"), /* 40 */ \ - _s(SIGRTMIN + 9, "Real-time signal 9"), /* 41 */ \ - _s(SIGRTMIN + 10, "Real-time signal 10"), /* 42 */ \ - _s(SIGRTMIN + 11, "Real-time signal 11"), /* 43 */ \ - _s(SIGRTMIN + 12, "Real-time signal 12"), /* 44 */ \ - _s(SIGRTMIN + 13, "Real-time signal 13"), /* 45 */ \ - _s(SIGRTMIN + 14, "Real-time signal 14"), /* 46 */ \ - _s(SIGRTMIN + 15, "Real-time signal 15"), /* 47 */ \ - _s(SIGRTMIN + 16, "Real-time signal 16"), /* 48 */ \ - _s(SIGRTMIN + 17, "Real-time signal 17"), /* 49 */ \ - _s(SIGRTMIN + 18, "Real-time signal 18"), /* 50 */ \ - _s(SIGRTMIN + 19, "Real-time signal 19"), /* 51 */ \ - _s(SIGRTMIN + 20, "Real-time signal 20"), /* 52 */ \ - _s(SIGRTMIN + 21, "Real-time signal 21"), /* 53 */ \ - _s(SIGRTMIN + 22, "Real-time signal 22"), /* 54 */ \ - _s(SIGRTMIN + 23, "Real-time signal 23"), /* 55 */ \ - _s(SIGRTMIN + 24, "Real-time signal 24"), /* 56 */ \ - _s(SIGRTMIN + 25, "Real-time signal 25"), /* 57 */ \ - _s(SIGRTMIN + 26, "Real-time signal 26"), /* 58 */ \ - _s(SIGRTMIN + 27, "Real-time signal 27"), /* 59 */ \ - _s(SIGRTMIN + 28, "Real-time signal 28"), /* 60 */ \ - _s(SIGRTMIN + 29, "Real-time signal 29"), /* 61 */ \ - _s(SIGRTMIN + 30, "Real-time signal 30"), /* 62 */ \ - _s(SIGRTMIN + 31, "Real-time signal 31"), /* 63 */ \ + _s(SIGRTMIN+1, "Real-time signal 1"), /* 33 */ \ + _s(SIGRTMIN+2, "Real-time signal 2"), /* 34 */ \ + _s(SIGRTMIN+3, "Real-time signal 3"), /* 35 */ \ + _s(SIGRTMIN+4, "Real-time signal 4"), /* 36 */ \ + _s(SIGRTMIN+5, "Real-time signal 5"), /* 37 */ \ + _s(SIGRTMIN+6, "Real-time signal 6"), /* 38 */ \ + _s(SIGRTMIN+7, "Real-time signal 7"), /* 39 */ \ + _s(SIGRTMIN+8, "Real-time signal 8"), /* 40 */ \ + _s(SIGRTMIN+9, "Real-time signal 9"), /* 41 */ \ + _s(SIGRTMIN+10, "Real-time signal 10"), /* 42 */ \ + _s(SIGRTMIN+11, "Real-time signal 11"), /* 43 */ \ + _s(SIGRTMIN+12, "Real-time signal 12"), /* 44 */ \ + _s(SIGRTMIN+13, "Real-time signal 13"), /* 45 */ \ + _s(SIGRTMIN+14, "Real-time signal 14"), /* 46 */ \ + _s(SIGRTMIN+15, "Real-time signal 15"), /* 47 */ \ + _s(SIGRTMIN+16, "Real-time signal 16"), /* 48 */ \ + _s(SIGRTMIN+17, "Real-time signal 17"), /* 49 */ \ + _s(SIGRTMIN+18, "Real-time signal 18"), /* 50 */ \ + _s(SIGRTMIN+19, "Real-time signal 19"), /* 51 */ \ + _s(SIGRTMIN+20, "Real-time signal 20"), /* 52 */ \ + _s(SIGRTMIN+21, "Real-time signal 21"), /* 53 */ \ + _s(SIGRTMIN+22, "Real-time signal 22"), /* 54 */ \ + _s(SIGRTMIN+23, "Real-time signal 23"), /* 55 */ \ + _s(SIGRTMIN+24, "Real-time signal 24"), /* 56 */ \ + _s(SIGRTMIN+25, "Real-time signal 25"), /* 57 */ \ + _s(SIGRTMIN+26, "Real-time signal 26"), /* 58 */ \ + _s(SIGRTMIN+27, "Real-time signal 27"), /* 59 */ \ + _s(SIGRTMIN+28, "Real-time signal 28"), /* 60 */ \ + _s(SIGRTMIN+29, "Real-time signal 29"), /* 61 */ \ + _s(SIGRTMIN+30, "Real-time signal 30"), /* 62 */ \ + _s(SIGRTMIN+31, "Real-time signal 31"), /* 63 */ \ _s(SIGRTMAX, "Real-time signal 32") /* 64 */ #define _s(n, s) #n From 3569e3577c9de2b3a5cffba40597d2755bf5aacd Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Mar 2023 21:50:32 +0100 Subject: [PATCH 237/767] Cygwin: kill(1): don't print spurious error message Make kill -V and kill -l exit immediately, thus stopping to print "not enough arguments" accidentally. Fixes: ef48a2cad3704 ("* kill.cc (prog_name) New global variable.") Fixes: c49fa762631f9 ("* Makefile.in (kill.exe): Add as a specific target.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/release/3.4.7 | 7 +++++-- winsup/utils/kill.cc | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index eba5de4732..a121d81b62 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -1,5 +1,8 @@ Bug Fixes --------- -Fix CPU_SET(3) macro type mismatch by making the macros type-safe. -Addresses https://cygwin.com/pipermail/cygwin/2023-March/253220.html +- Fix CPU_SET(3) macro type mismatch by making the macros type-safe. + Addresses https://cygwin.com/pipermail/cygwin/2023-March/253220.html + +- kill(1): don't print spurious error message. + Addresses: https://cygwin.com/pipermail/cygwin/2023-March/253291.html diff --git a/winsup/utils/kill.cc b/winsup/utils/kill.cc index 04c9774eb8..fc984c0b47 100644 --- a/winsup/utils/kill.cc +++ b/winsup/utils/kill.cc @@ -65,6 +65,7 @@ print_version () CYGWIN_VERSION_DLL_MAJOR % 1000, CYGWIN_VERSION_DLL_MINOR, strrchr (__DATE__, ' ') + 1); + exit (0); } static const char * @@ -126,6 +127,7 @@ listsig (const char *in_sig) else printf ("%d\n", sig); } + exit (0); } static void From 3dfb3217af2d1bc4be430675b6e591606aaa56fb Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Mar 2023 21:54:13 +0100 Subject: [PATCH 238/767] Cygwin: kill(1): align real-time signal naming to Linux kill(1) Allow RT<N>, RTMIN+<N> and RTMAX-<N> for RT signals. Translate RT signal numbers to an "RT<N>" string. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/kill.cc | 45 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/winsup/utils/kill.cc b/winsup/utils/kill.cc index fc984c0b47..a430b35372 100644 --- a/winsup/utils/kill.cc +++ b/winsup/utils/kill.cc @@ -71,13 +71,51 @@ print_version () static const char * strsigno (int signo) { - if (signo > 0 && signo < NSIG) + static char sigbuf[8]; + + if (signo > 0 && signo < SIGRTMIN) return sys_sigabbrev[signo]; + if (signo <= SIGRTMAX) + { + snprintf (sigbuf, sizeof sigbuf, "SIGRT%d", signo - SIGRTMIN); + return sigbuf; + } static char buf[sizeof ("Unknown signal") + 32]; sprintf (buf, "Unknown signal %d", signo); return buf; } +static int +strtortsig (const char *sig) +{ + bool neg = false; + char *endp = NULL; + int signo; + + sig += 5; + if (!strcmp (sig, "MIN")) + return SIGRTMIN; + if (!strcmp (sig, "MAX")) + return SIGRTMAX; + if (!strncmp (sig, "MIN+", 4)) + sig += 4; + else if (!strncmp (sig, "MAX-", 4)) + { + sig += 4; + neg = true; + } + signo = strtoul (sig, &endp, 10); + if (!endp || *endp) + return 0; + if (neg) + signo = SIGRTMAX - signo; + else + signo = SIGRTMIN + signo; + if (signo < SIGRTMIN || signo > SIGRTMAX) + return 0; + return signo; +} + static int getsig (const char *in_sig) { @@ -92,7 +130,10 @@ getsig (const char *in_sig) sprintf (buf, "SIG%-.20s", in_sig); sig = buf; } - intsig = strtosigno (sig) ?: atoi (in_sig); + if (!strncmp (sig, "SIGRT", 5)) + intsig = strtortsig (sig); + else + intsig = strtosigno (sig) ?: atoi (in_sig); char *p; if (!intsig && (strcmp (sig, "SIG0") != 0 && (strtol (in_sig, &p, 10) != 0 || *p))) intsig = -1; From 915c6eb0266bf1e1b2b1a1c0a1f075ef6c364537 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Mar 2023 21:59:04 +0100 Subject: [PATCH 239/767] Cygwin: kill(1): Align list options to latest Linux kill(1) - Don't print all RT signals, just the allowed patterns - Add -L/--table option to print a table of signals with signal numbers Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/utils/kill.cc | 105 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 91 insertions(+), 14 deletions(-) diff --git a/winsup/utils/kill.cc b/winsup/utils/kill.cc index a430b35372..fb45e4c9dc 100644 --- a/winsup/utils/kill.cc +++ b/winsup/utils/kill.cc @@ -26,24 +26,26 @@ static struct option longopts[] = {"list", optional_argument, NULL, 'l'}, {"force", no_argument, NULL, 'f'}, {"signal", required_argument, NULL, 's'}, + {"table", no_argument, NULL, 'L'}, {"winpid", no_argument, NULL, 'W'}, {"version", no_argument, NULL, 'V'}, {NULL, 0, NULL, 0} }; -static char opts[] = "hl::fs:WV"; +static char opts[] = "hl::fs:LWV"; static void __attribute__ ((__noreturn__)) usage (FILE *where = stderr) { fprintf (where , "" "Usage: %1$s [-fW] [-signal] [-s signal] pid1 [pid2 ...]\n" - " %1$s -l [signal]\n" + " %1$s -l [signal] | -L\n" "\n" "Send signals to processes\n" "\n" " -f, --force force, using win32 interface if necessary\n" " -l, --list print a list of signal names\n" + " -L, --table print a formatted table of signal names\n" " -s, --signal send signal (use %1$s --list for a list)\n" " -W, --winpid specified pids are windows PIDs, not Cygwin PIDs\n" " (use with extreme caution!)\n" @@ -153,21 +155,90 @@ test_for_unknown_sig (int sig, const char *sigstr) } static void -listsig (const char *in_sig) +checksig (const char *in_sig) { - int sig; - if (!in_sig) - for (sig = 1; sig < NSIG - 1; sig++) - printf ("%s%c", strsigno (sig) + 3, (sig < NSIG - 1) ? ' ' : '\n'); + int sig = getsig (in_sig); + test_for_unknown_sig (sig, in_sig); + if (sig && atoi (in_sig) == sig) + puts (strsigno (sig) + 3); else + printf ("%d\n", sig); + exit (0); +} + +static void +listsig () +{ + int chars = 0; + + for (int sig = 1; sig < SIGRTMIN; sig++) { - sig = getsig (in_sig); - test_for_unknown_sig (sig, in_sig); - if (sig && atoi (in_sig) == sig) - puts (strsigno (sig) + 3); - else - printf ("%d\n", sig); + chars += printf ("%s ", strsigno (sig) + 3); + if (chars > 72) + { + puts (""); + chars = 0; + } + switch (sig) + { + case SIGABRT: + chars += printf ("%s ", "IOT"); + break; + case SIGCHLD: + chars += printf ("%s ", "CLD"); + break; + case SIGIO: + chars += printf ("%s ", "POLL"); + break; + case SIGPWR: + chars += printf ("%s ", "LOST"); + break; + } + if (chars > 70) + { + puts (""); + chars = 0; + } + } + fputs ("RT<N> RTMIN+<N> RTMAX-<N>\n", stdout); + exit (0); +} + +static void +tablesig () +{ + int chars = 0; + + for (int sig = 1; sig < SIGRTMIN; sig++) + { + chars += printf ("%2d %-7s ", sig, strsigno (sig) + 3); + if (chars > 70) + { + puts (""); + chars = 0; + } + switch (sig) + { + case SIGABRT: + chars += printf ("%2d %-7s ", sig, "IOT"); + break; + case SIGCHLD: + chars += printf ("%2d %-7s ", sig, "CLD"); + break; + case SIGIO: + chars += printf ("%2d %-7s ", sig, "POLL"); + break; + case SIGPWR: + chars += printf ("%2d %-7s ", sig, "LOST"); + break; + } + if (chars > 70) + { + puts (""); + chars = 0; + } } + fputs ("32 RTMIN 64 RTMAX\n", stdout); exit (0); } @@ -278,7 +349,13 @@ main (int argc, char **argv) } if (argv[optind]) usage (); - listsig (optarg); + if (optarg) + checksig (optarg); + else + listsig (); + break; + case 'L': + tablesig (); break; case 'f': force = 1; From 2a4dd6a2399905e2b1b6ba7439ded919f4909a02 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 15 Mar 2023 22:05:44 +0100 Subject: [PATCH 240/767] Cygwin: kill(1): Add -L to documentation Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/doc/utils.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 1e15a4d568..522df85b4e 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -969,8 +969,10 @@ file gmon.out.21900.zstd.exe, gmon version 0x51879, sample rate 100 </cmdsynopsis> <cmdsynopsis> <command>kill</command> - <arg choice="plain">-l</arg> - <arg choice="repeat"><replaceable>signal</replaceable></arg> + <group choice="plain"> + <arg choice="plain">-l <replaceable>signal</replaceable></arg> + <arg choice="plain">-L</arg> + </group> </cmdsynopsis> <cmdsynopsis> <command>kill</command> @@ -987,6 +989,7 @@ file gmon.out.21900.zstd.exe, gmon version 0x51879, sample rate 100 <screen> -f, --force force, using win32 interface if necessary -l, --list print a list of signal names + -L, --table print a formatted table of signal names -s, --signal send signal (use kill --list for a list) -W, --winpid specified pids are windows PIDs, not Cygwin PIDs (use with extreme caution!) @@ -1030,6 +1033,9 @@ $ /bin/kill --version <para>The <command>kill -l</command> option prints the name of the given signal, or a list of all signal names if no signal is given.</para> + <para>The <command>kill -L</command> option is similar to <literal>-l</literal>, + but it will print signal names and their corresponding numbers.</para> + <para>To send a specific signal, use the <literal>-signN</literal> option, either with a signal number or a signal name (minus the "SIG" part), as shown in these examples:</para> From 24f34edc2a5dc09687c0efe7973b0db4a959dbb1 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 11:12:08 +0100 Subject: [PATCH 241/767] Cygwin: replace regex with latest verbatim FreeBSD version Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/include/regex.h | 20 +- winsup/cygwin/regex/COPYRIGHT | 4 + winsup/cygwin/regex/cname.h | 8 +- winsup/cygwin/regex/engine.c | 423 +++++++------ winsup/cygwin/regex/regcomp.c | 1058 +++++++++++++++++++++----------- winsup/cygwin/regex/regerror.c | 26 +- winsup/cygwin/regex/regex.3 | 91 ++- winsup/cygwin/regex/regex.7 | 22 +- winsup/cygwin/regex/regex2.h | 60 +- winsup/cygwin/regex/regexec.c | 23 +- winsup/cygwin/regex/regfree.c | 8 +- winsup/cygwin/regex/utils.h | 10 +- 12 files changed, 1093 insertions(+), 660 deletions(-) diff --git a/winsup/cygwin/include/regex.h b/winsup/cygwin/include/regex.h index 02c617e506..3bea3df4f3 100644 --- a/winsup/cygwin/include/regex.h +++ b/winsup/cygwin/include/regex.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992 Henry Spencer. * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -38,32 +40,20 @@ #define _REGEX_H_ #include <sys/cdefs.h> -#include <_ansi.h> #include <sys/_types.h> /* types */ -#ifdef __CYGWIN__ -typedef _off_t regoff_t; - -#define __need_size_t -#include <stddef.h> -#else /* !__CYGWIN__ */ typedef __off_t regoff_t; #ifndef _SIZE_T_DECLARED typedef __size_t size_t; #define _SIZE_T_DECLARED #endif -#endif /* !__CYGWIN__ */ typedef struct { int re_magic; size_t re_nsub; /* number of parenthesized subexpressions */ -#ifdef __CYGWIN__ const char *re_endp; /* end pointer for REG_PEND */ -#else - __const char *re_endp; /* end pointer for REG_PEND */ -#endif struct re_guts *re_g; /* none of your business :-) */ } regex_t; @@ -81,12 +71,10 @@ typedef struct { #define REG_NOSPEC 0020 #define REG_PEND 0040 #define REG_DUMP 0200 +#define REG_POSIX 0400 /* only POSIX-compliant regex (libregex) */ /* regerror() flags */ #define REG_ENOSYS (-1) -#ifdef __CYGWIN__ -#define REG_NOERROR 0 /* GNU extension */ -#endif #define REG_NOMATCH 1 #define REG_BADPAT 2 #define REG_ECOLLATE 3 diff --git a/winsup/cygwin/regex/COPYRIGHT b/winsup/cygwin/regex/COPYRIGHT index dc823b1245..574f6bcec6 100644 --- a/winsup/cygwin/regex/COPYRIGHT +++ b/winsup/cygwin/regex/COPYRIGHT @@ -32,6 +32,10 @@ to the following restrictions: * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. diff --git a/winsup/cygwin/regex/cname.h b/winsup/cygwin/regex/cname.h index c5c33f02c1..3419181aac 100644 --- a/winsup/cygwin/regex/cname.h +++ b/winsup/cygwin/regex/cname.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,7 +33,7 @@ * SUCH DAMAGE. * * @(#)cname.h 8.3 (Berkeley) 3/20/94 - * $FreeBSD: src/lib/libc/regex/cname.h,v 1.4 2007/01/09 00:28:04 imp Exp $ + * $FreeBSD$ */ /* character-name table */ @@ -108,7 +110,7 @@ static struct cname { {"four", '4'}, {"five", '5'}, {"six", '6'}, - {"seven", '7'}, + {"seven", '7'}, {"eight", '8'}, {"nine", '9'}, {"colon", ':'}, diff --git a/winsup/cygwin/regex/engine.c b/winsup/cygwin/regex/engine.c index 94e418505f..bb40018c07 100644 --- a/winsup/cygwin/regex/engine.c +++ b/winsup/cygwin/regex/engine.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -34,7 +36,9 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.23 2009/09/16 06:32:23 dds Exp $"); +__FBSDID("$FreeBSD$"); + +#include <stdbool.h> /* * The matching engine and friends. This file is #included by regexec.c @@ -44,9 +48,9 @@ __FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.23 2009/09/16 06:32:23 dds E */ #ifdef SNAMES +#define stepback sstepback #define matcher smatcher -#define fast sfast -#define slow sslow +#define walk swalk #define dissect sdissect #define backref sbackref #define step sstep @@ -55,9 +59,9 @@ __FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.23 2009/09/16 06:32:23 dds E #define match smat #endif #ifdef LNAMES +#define stepback lstepback #define matcher lmatcher -#define fast lfast -#define slow lslow +#define walk lwalk #define dissect ldissect #define backref lbackref #define step lstep @@ -66,9 +70,9 @@ __FBSDID("$FreeBSD: src/lib/libc/regex/engine.c,v 1.23 2009/09/16 06:32:23 dds E #define match lmat #endif #ifdef MNAMES +#define stepback mstepback #define matcher mmatcher -#define fast mfast -#define slow mslow +#define walk mwalk #define dissect mdissect #define backref mbackref #define step mstep @@ -104,9 +108,8 @@ extern "C" { static int matcher(struct re_guts *g, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); static const char *dissect(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst); static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev, int); -static const char *fast(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst); -static const char *slow(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst); -static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_t ch, states aft); +static const char *walk(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, bool fast); +static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_t ch, states aft, int sflags); #define MAX_RECURSION 100 #define BOL (OUT-1) #define EOL (BOL-1) @@ -115,10 +118,12 @@ static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_ #define BOW (BOL-4) #define EOW (BOL-5) #define BADCHAR (BOL-6) -/* When using wint_t, which is defined as unsigned int on BSD, - as well as on Cygwin or Linux, the NONCHAR test is broken without - the below cast. I'm wondering how this is supposed to work at all... */ -#define NONCHAR(c) ((int)(c) <= OUT) +#define NWBND (BOL-7) +#define NONCHAR(c) ((c) <= OUT) +/* sflags */ +#define SBOS 0x0001 +#define SEOS 0x0002 + #ifdef REDEBUG static void print(struct match *m, const char *caption, states st, int ch, FILE *d); #endif @@ -144,6 +149,39 @@ static const char *pchar(int ch); #define NOTE(s) /* nothing */ #endif +/* + * Given a multibyte string pointed to by start, step back nchar characters + * from current position pointed to by cur. + */ +static const char * +stepback(const char *start, const char *cur, int nchar) +{ + const char *ret; + int wc, mbc; + mbstate_t mbs; + size_t clen; + + if (MB_CUR_MAX == 1) + return ((cur - nchar) > start ? cur - nchar : NULL); + + ret = cur; + for (wc = nchar; wc > 0; wc--) { + for (mbc = 1; mbc <= MB_CUR_MAX; mbc++) { + if ((ret - mbc) < start) + return (NULL); + memset(&mbs, 0, sizeof(mbs)); + clen = mbrtowc(NULL, ret - mbc, mbc, &mbs); + if (clen != (size_t)-1 && clen != (size_t)-2) + break; + } + if (mbc > MB_CUR_MAX) + return (NULL); + ret -= mbc; + } + + return (ret); +} + /* - matcher - the actual matching engine == static int matcher(struct re_guts *g, const char *string, \ @@ -157,7 +195,7 @@ matcher(struct re_guts *g, int eflags) { const char *endp; - int i; + size_t i; struct match mv; struct match *m = &mv; const char *dp = NULL; @@ -247,17 +285,19 @@ matcher(struct re_guts *g, ZAPSTATE(&m->mbs); /* Adjust start according to moffset, to speed things up */ -#ifndef MNAMES - /* The code evaluating moffset doesn't seem to work right - in the multibyte case. */ - if (g->moffset > -1) - start = ((dp - g->moffset) < start) ? start : dp - g->moffset; -#endif + if (dp != NULL && g->moffset > -1) { + const char *nstart; + + nstart = stepback(start, dp, g->moffset); + if (nstart != NULL) + start = nstart; + } + SP("mloop", m->st, *start); /* this loop does only one repetition except for backrefs */ for (;;) { - endp = fast(m, start, stop, gf, gl); + endp = walk(m, start, stop, gf, gl, true); if (endp == NULL) { /* a miss */ if (m->pmatch != NULL) free((char *)m->pmatch); @@ -273,7 +313,7 @@ matcher(struct re_guts *g, assert(m->coldp != NULL); for (;;) { NOTE("finding start"); - endp = slow(m, m->coldp, stop, gf, gl); + endp = walk(m, m->coldp, stop, gf, gl, false); if (endp != NULL) break; assert(m->coldp < m->endp); @@ -318,7 +358,7 @@ matcher(struct re_guts *g, if (dp != NULL || endp <= m->coldp) break; /* defeat */ NOTE("backoff"); - endp = slow(m, m->coldp, endp-1, gf, gl); + endp = walk(m, m->coldp, endp-1, gf, gl, false); if (endp == NULL) break; /* defeat */ /* try it on a shorter possibility */ @@ -391,7 +431,7 @@ dissect(struct match *m, const char *ssp; /* start of string matched by subsubRE */ const char *sep; /* end of string matched by subsubRE */ const char *oldssp; /* previous ssp */ - const char *dp __attribute__ ((unused)); + const char *dp __unused; AT("diss", start, stop, startst, stopst); sp = start; @@ -404,7 +444,7 @@ dissect(struct match *m, es += OPND(m->g->strip[es]); break; case OCH_: - while (OP(m->g->strip[es]) != O_CH) + while (OP(m->g->strip[es]) != (sop)O_CH) es += OPND(m->g->strip[es]); break; } @@ -422,6 +462,10 @@ dissect(struct match *m, case OEOL: case OBOW: case OEOW: + case OBOS: + case OEOS: + case OWBND: + case ONWBND: break; case OANY: case OANYOF: @@ -436,10 +480,10 @@ dissect(struct match *m, stp = stop; for (;;) { /* how long could this one be? */ - rest = slow(m, sp, stp, ss, es); + rest = walk(m, sp, stp, ss, es, false); assert(rest != NULL); /* it did match */ /* could the rest match the rest? */ - tail = slow(m, rest, stop, es, stopst); + tail = walk(m, rest, stop, es, stopst, false); if (tail == stop) break; /* yes! */ /* no -- try a shorter match for this one */ @@ -449,7 +493,7 @@ dissect(struct match *m, ssub = ss + 1; esub = es - 1; /* did innards match? */ - if (slow(m, sp, rest, ssub, esub) != NULL) { + if (walk(m, sp, rest, ssub, esub, false) != NULL) { dp = dissect(m, sp, rest, ssub, esub); assert(dp == rest); } else /* no */ @@ -460,10 +504,10 @@ dissect(struct match *m, stp = stop; for (;;) { /* how long could this one be? */ - rest = slow(m, sp, stp, ss, es); + rest = walk(m, sp, stp, ss, es, false); assert(rest != NULL); /* it did match */ /* could the rest match the rest? */ - tail = slow(m, rest, stop, es, stopst); + tail = walk(m, rest, stop, es, stopst, false); if (tail == stop) break; /* yes! */ /* no -- try a shorter match for this one */ @@ -475,7 +519,7 @@ dissect(struct match *m, ssp = sp; oldssp = ssp; for (;;) { /* find last match of innards */ - sep = slow(m, ssp, rest, ssub, esub); + sep = walk(m, ssp, rest, ssub, esub, false); if (sep == NULL || sep == ssp) break; /* failed or matched null */ oldssp = ssp; /* on to next try */ @@ -487,7 +531,7 @@ dissect(struct match *m, ssp = oldssp; } assert(sep == rest); /* must exhaust substring */ - assert(slow(m, ssp, sep, ssub, esub) == rest); + assert(walk(m, ssp, sep, ssub, esub, false) == rest); dp = dissect(m, ssp, sep, ssub, esub); assert(dp == sep); sp = rest; @@ -496,10 +540,10 @@ dissect(struct match *m, stp = stop; for (;;) { /* how long could this one be? */ - rest = slow(m, sp, stp, ss, es); + rest = walk(m, sp, stp, ss, es, false); assert(rest != NULL); /* it did match */ /* could the rest match the rest? */ - tail = slow(m, rest, stop, es, stopst); + tail = walk(m, rest, stop, es, stopst, false); if (tail == stop) break; /* yes! */ /* no -- try a shorter match for this one */ @@ -510,7 +554,7 @@ dissect(struct match *m, esub = ss + OPND(m->g->strip[ss]) - 1; assert(OP(m->g->strip[esub]) == OOR1); for (;;) { /* find first matching branch */ - if (slow(m, sp, rest, ssub, esub) == rest) + if (walk(m, sp, rest, ssub, esub, false) == rest) break; /* it matched all of it */ /* that one missed, try next one */ assert(OP(m->g->strip[esub]) == OOR1); @@ -518,7 +562,7 @@ dissect(struct match *m, assert(OP(m->g->strip[esub]) == OOR2); ssub = esub + 1; esub += OPND(m->g->strip[esub]); - if (OP(m->g->strip[esub]) == OOR2) + if (OP(m->g->strip[esub]) == (sop)OOR2) esub--; else assert(OP(m->g->strip[esub]) == O_CH); @@ -554,6 +598,17 @@ dissect(struct match *m, return(sp); } +#define ISBOW(m, sp) \ + (sp < m->endp && ISWORD(*sp) && \ + ((sp == m->beginp && !(m->eflags®_NOTBOL)) || \ + (sp > m->offp && !ISWORD(*(sp-1))))) +#define ISEOW(m, sp) \ + (((sp == m->endp && !(m->eflags®_NOTEOL)) || \ + (sp < m->endp && *sp == '\n' && \ + (m->g->cflags®_NEWLINE)) || \ + (sp < m->endp && !ISWORD(*sp)) ) && \ + (sp > m->beginp && ISWORD(*(sp-1)))) \ + /* - backref - figure out what matched what, figuring in back references == static const char *backref(struct match *m, const char *start, \ @@ -611,10 +666,22 @@ backref(struct match *m, if (wc == BADCHAR || !CHIN(cs, wc)) return(NULL); break; + case OBOS: + if (sp == m->beginp && (m->eflags & REG_NOTBOL) == 0) + { /* yes */ } + else + return(NULL); + break; + case OEOS: + if (sp == m->endp && (m->eflags & REG_NOTEOL) == 0) + { /* yes */ } + else + return(NULL); + break; case OBOL: - if ( (sp == m->beginp && !(m->eflags®_NOTBOL)) || - (sp < m->endp && *(sp-1) == '\n' && - (m->g->cflags®_NEWLINE)) ) + if ((sp == m->beginp && !(m->eflags®_NOTBOL)) || + (sp > m->offp && sp < m->endp && + *(sp-1) == '\n' && (m->g->cflags®_NEWLINE))) { /* yes */ } else return(NULL); @@ -627,23 +694,29 @@ backref(struct match *m, else return(NULL); break; + case OWBND: + if (ISBOW(m, sp) || ISEOW(m, sp)) + { /* yes */ } + else + return(NULL); + break; + case ONWBND: + if (((sp == m->beginp) && !ISWORD(*sp)) || + (sp == m->endp && !ISWORD(*(sp - 1)))) + { /* yes, beginning/end of subject */ } + else if (ISWORD(*(sp - 1)) == ISWORD(*sp)) + { /* yes, beginning/end of subject */ } + else + return(NULL); + break; case OBOW: - if (( (sp == m->beginp && !(m->eflags®_NOTBOL)) || - (sp < m->endp && *(sp-1) == '\n' && - (m->g->cflags®_NEWLINE)) || - (sp > m->beginp && - !ISWORD(*(sp-1))) ) && - (sp < m->endp && ISWORD(*sp)) ) + if (ISBOW(m, sp)) { /* yes */ } else return(NULL); break; case OEOW: - if (( (sp == m->endp && !(m->eflags®_NOTEOL)) || - (sp < m->endp && *sp == '\n' && - (m->g->cflags®_NEWLINE)) || - (sp < m->endp && !ISWORD(*sp)) ) && - (sp > m->beginp && ISWORD(*(sp-1))) ) + if (ISEOW(m, sp)) { /* yes */ } else return(NULL); @@ -656,7 +729,7 @@ backref(struct match *m, do { assert(OP(s) == OOR2); ss += OPND(s); - } while (OP(s = m->g->strip[ss]) != O_CH); + } while (OP(s = m->g->strip[ss]) != (sop)O_CH); /* note that the ss++ gets us past the O_CH */ break; default: /* have to make a choice */ @@ -689,22 +762,19 @@ backref(struct match *m, ssp = m->offp + m->pmatch[i].rm_so; if (memcmp(sp, ssp, len) != 0) return(NULL); - while (m->g->strip[ss] != SOP(O_BACK, i)) + while (m->g->strip[ss] != (sop)SOP(O_BACK, i)) ss++; return(backref(m, sp+len, stop, ss+1, stopst, lev, rec)); - break; case OQUEST_: /* to null or not */ dp = backref(m, sp, stop, ss+1, stopst, lev, rec); if (dp != NULL) return(dp); /* not */ return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev, rec)); - break; case OPLUS_: assert(m->lastpos != NULL); assert(lev+1 <= m->g->nplus); m->lastpos[lev+1] = sp; return(backref(m, sp, stop, ss+1, stopst, lev+1, rec)); - break; case O_PLUS: if (sp == m->lastpos[lev]) /* last pass matched null */ return(backref(m, sp, stop, ss+1, stopst, lev-1, rec)); @@ -715,7 +785,6 @@ backref(struct match *m, return(backref(m, sp, stop, ss+1, stopst, lev-1, rec)); else return(dp); - break; case OCH_: /* find the right one, if any */ ssub = ss + 1; esub = ss + OPND(s) - 1; @@ -725,17 +794,18 @@ backref(struct match *m, if (dp != NULL) return(dp); /* that one missed, try next one */ - if (OP(m->g->strip[esub]) == O_CH) + if (OP(m->g->strip[esub]) == (sop)O_CH) return(NULL); /* there is none */ esub++; - assert(OP(m->g->strip[esub]) == OOR2); + assert(OP(m->g->strip[esub]) == (sop)OOR2); ssub = esub + 1; esub += OPND(m->g->strip[esub]); - if (OP(m->g->strip[esub]) == OOR2) + if (OP(m->g->strip[esub]) == (sop)OOR2) esub--; else assert(OP(m->g->strip[esub]) == O_CH); } + /* NOTREACHED */ break; case OLPAREN: /* must undo assignment if rest fails */ i = OPND(s); @@ -747,7 +817,6 @@ backref(struct match *m, return(dp); m->pmatch[i].rm_so = offsave; return(NULL); - break; case ORPAREN: /* must undo assignment if rest fails */ i = OPND(s); assert(0 < i && i <= m->g->nsub); @@ -758,7 +827,6 @@ backref(struct match *m, return(dp); m->pmatch[i].rm_eo = offsave; return(NULL); - break; default: /* uh oh */ assert(nope); break; @@ -771,141 +839,36 @@ backref(struct match *m, } /* - - fast - step through the string at top speed - == static const char *fast(struct match *m, const char *start, \ - == const char *stop, sopno startst, sopno stopst); + - walk - step through the string either quickly or slowly + == static const char *walk(struct match *m, const char *start, \ + == const char *stop, sopno startst, sopno stopst, bool fast); */ -static const char * /* where tentative match ended, or NULL */ -fast( struct match *m, - const char *start, - const char *stop, - sopno startst, - sopno stopst) +static const char * /* where it ended, or NULL */ +walk(struct match *m, const char *start, const char *stop, sopno startst, + sopno stopst, bool fast) { states st = m->st; states fresh = m->fresh; - states tmp = m->tmp; - const char *p = start; - wint_t c; - wint_t lastc; /* previous c */ - wint_t flagch; - int i; - const char *coldp; /* last p after which no match was underway */ - size_t clen; - - CLEAR(st); - SET1(st, startst); - SP("fast", st, *p); - st = step(m->g, startst, stopst, st, NOTHING, st); - ASSIGN(fresh, st); - SP("start", st, *p); - coldp = NULL; - if (start == m->beginp) - c = OUT; - else { - /* - * XXX Wrong if the previous character was multi-byte. - * Newline never is (in encodings supported by FreeBSD), - * so this only breaks the ISWORD tests below. - */ - c = (uch)*(start - 1); - } - for (;;) { - /* next character */ - lastc = c; - if (p == m->endp) { - clen = 0; - c = OUT; - } else - clen = XMBRTOWC(&c, p, m->endp - p, &m->mbs, BADCHAR); - if (EQ(st, fresh)) - coldp = p; - - /* is there an EOL and/or BOL between lastc and c? */ - flagch = '\0'; - i = 0; - if ( (lastc == '\n' && m->g->cflags®_NEWLINE) || - (lastc == OUT && !(m->eflags®_NOTBOL)) ) { - flagch = BOL; - i = m->g->nbol; - } - if ( (c == '\n' && m->g->cflags®_NEWLINE) || - (c == OUT && !(m->eflags®_NOTEOL)) ) { - flagch = (flagch == BOL) ? BOLEOL : EOL; - i += m->g->neol; - } - if (i != 0) { - for (; i > 0; i--) - st = step(m->g, startst, stopst, st, flagch, st); - SP("boleol", st, c); - } - - /* how about a word boundary? */ - if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) && - (c != OUT && ISWORD(c)) ) { - flagch = BOW; - } - if ( (lastc != OUT && ISWORD(lastc)) && - (flagch == EOL || (c != OUT && !ISWORD(c))) ) { - flagch = EOW; - } - if (flagch == BOW || flagch == EOW) { - st = step(m->g, startst, stopst, st, flagch, st); - SP("boweow", st, c); - } - - /* are we done? */ - if (ISSET(st, stopst) || p == stop || clen > stop - p) - break; /* NOTE BREAK OUT */ - - /* no, we must deal with this character */ - ASSIGN(tmp, st); - ASSIGN(st, fresh); - assert(c != OUT); - st = step(m->g, startst, stopst, tmp, c, st); - SP("aft", st, c); - assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st)); - p += clen; - } - - assert(coldp != NULL); - m->coldp = coldp; - if (ISSET(st, stopst)) - return(p+XMBRTOWC(NULL, p, stop - p, &m->mbs, 0)); - else - return(NULL); -} - -/* - - slow - step through the string more deliberately - == static const char *slow(struct match *m, const char *start, \ - == const char *stop, sopno startst, sopno stopst); - */ -static const char * /* where it ended */ -slow( struct match *m, - const char *start, - const char *stop, - sopno startst, - sopno stopst) -{ - states st = m->st; states empty = m->empty; states tmp = m->tmp; const char *p = start; wint_t c; wint_t lastc; /* previous c */ wint_t flagch; - int i; + int i, sflags; const char *matchp; /* last p at which a match ended */ size_t clen; + sflags = 0; AT("slow", start, stop, startst, stopst); CLEAR(st); SET1(st, startst); SP("sstart", st, *p); - st = step(m->g, startst, stopst, st, NOTHING, st); + st = step(m->g, startst, stopst, st, NOTHING, st, sflags); + if (fast) + ASSIGN(fresh, st); matchp = NULL; - if (start == m->beginp) + if (start == m->offp || (start == m->beginp && !(m->eflags®_NOTBOL))) c = OUT; else { /* @@ -918,12 +881,16 @@ slow( struct match *m, for (;;) { /* next character */ lastc = c; + sflags = 0; if (p == m->endp) { c = OUT; clen = 0; } else clen = XMBRTOWC(&c, p, m->endp - p, &m->mbs, BADCHAR); + if (fast && EQ(st, fresh)) + matchp = p; + /* is there an EOL and/or BOL between lastc and c? */ flagch = '\0'; i = 0; @@ -937,9 +904,20 @@ slow( struct match *m, flagch = (flagch == BOL) ? BOLEOL : EOL; i += m->g->neol; } + if (lastc == OUT && (m->eflags & REG_NOTBOL) == 0) { + sflags |= SBOS; + /* Step one more for BOS. */ + i++; + } + if (c == OUT && (m->eflags & REG_NOTEOL) == 0) { + sflags |= SEOS; + /* Step one more for EOS. */ + i++; + } if (i != 0) { for (; i > 0; i--) - st = step(m->g, startst, stopst, st, flagch, st); + st = step(m->g, startst, stopst, st, flagch, st, + sflags); SP("sboleol", st, c); } @@ -953,30 +931,56 @@ slow( struct match *m, flagch = EOW; } if (flagch == BOW || flagch == EOW) { - st = step(m->g, startst, stopst, st, flagch, st); + st = step(m->g, startst, stopst, st, flagch, st, sflags); SP("sboweow", st, c); } + if (lastc != OUT && c != OUT && + ISWORD(lastc) == ISWORD(c)) { + flagch = NWBND; + } else if ((lastc == OUT && !ISWORD(c)) || + (c == OUT && !ISWORD(lastc))) { + flagch = NWBND; + } + if (flagch == NWBND) { + st = step(m->g, startst, stopst, st, flagch, st, sflags); + SP("snwbnd", st, c); + } /* are we done? */ - if (ISSET(st, stopst)) - matchp = p; - if (EQ(st, empty) || p == stop || clen > stop - p) + if (ISSET(st, stopst)) { + if (fast) + break; + else + matchp = p; + } + if (EQ(st, empty) || p == stop || clen > (size_t)(stop - p)) break; /* NOTE BREAK OUT */ /* no, we must deal with this character */ ASSIGN(tmp, st); - ASSIGN(st, empty); + if (fast) + ASSIGN(st, fresh); + else + ASSIGN(st, empty); assert(c != OUT); - st = step(m->g, startst, stopst, tmp, c, st); + st = step(m->g, startst, stopst, tmp, c, st, sflags); SP("saft", st, c); - assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st)); + assert(EQ(step(m->g, startst, stopst, st, NOTHING, st, sflags), + st)); p += clen; } - return(matchp); + if (fast) { + assert(matchp != NULL); + m->coldp = matchp; + if (ISSET(st, stopst)) + return (p + XMBRTOWC(NULL, p, stop - p, &m->mbs, 0)); + else + return (NULL); + } else + return (matchp); } - /* - step - map set of states reachable before char to set reachable after == static states step(struct re_guts *g, sopno start, sopno stop, \ @@ -996,7 +1000,8 @@ step(struct re_guts *g, sopno stop, /* state after stop state within strip */ states bef, /* states reachable before */ wint_t ch, /* character or NONCHAR code */ - states aft) /* states already known reachable after */ + states aft, /* states already known reachable after */ + int sflags) /* state flags */ { cset *cs; sop s; @@ -1017,6 +1022,14 @@ step(struct re_guts *g, if (ch == OPND(s)) FWD(aft, bef, 1); break; + case OBOS: + if ((ch == BOL || ch == BOLEOL) && (sflags & SBOS) != 0) + FWD(aft, bef, 1); + break; + case OEOS: + if ((ch == EOL || ch == BOLEOL) && (sflags & SEOS) != 0) + FWD(aft, bef, 1); + break; case OBOL: if (ch == BOL || ch == BOLEOL) FWD(aft, bef, 1); @@ -1033,6 +1046,14 @@ step(struct re_guts *g, if (ch == EOW) FWD(aft, bef, 1); break; + case OWBND: + if (ch == BOW || ch == EOW) + FWD(aft, bef, 1); + break; + case ONWBND: + if (ch == NWBND) + FWD(aft, aft, 1); + break; case OANY: if (!NONCHAR(ch)) FWD(aft, bef, 1); @@ -1072,22 +1093,22 @@ step(struct re_guts *g, break; case OCH_: /* mark the first two branches */ FWD(aft, aft, 1); - assert(OP(g->strip[pc+OPND(s)]) == OOR2); + assert(OP(g->strip[pc+OPND(s)]) == (sop)OOR2); FWD(aft, aft, OPND(s)); break; case OOR1: /* done a branch, find the O_CH */ if (ISSTATEIN(aft, here)) { for (look = 1; - OP(s = g->strip[pc+look]) != O_CH; - look += OPND(s)) - assert(OP(s) == OOR2); + OP(s = g->strip[pc+look]) != (sop)O_CH; + look += OPND(s)) + assert(OP(s) == (sop)OOR2); FWD(aft, aft, look + 1); } break; case OOR2: /* propagate OCH_'s marking */ FWD(aft, aft, 1); - if (OP(g->strip[pc+OPND(s)]) != O_CH) { - assert(OP(g->strip[pc+OPND(s)]) == OOR2); + if (OP(g->strip[pc+OPND(s)]) != (sop)O_CH) { + assert(OP(g->strip[pc+OPND(s)]) == (sop)OOR2); FWD(aft, aft, OPND(s)); } break; @@ -1119,7 +1140,7 @@ print(struct match *m, FILE *d) { struct re_guts *g = m->g; - int i; + sopno i; int first = 1; if (!(m->eflags®_TRACE)) @@ -1130,7 +1151,7 @@ print(struct match *m, fprintf(d, " %s", pchar(ch)); for (i = 0; i < g->nstates; i++) if (ISSET(st, i)) { - fprintf(d, "%s%d", (first) ? "\t" : ", ", i); + fprintf(d, "%s%lu", (first) ? "\t" : ", ", i); first = 0; } fprintf(d, "\n"); @@ -1186,9 +1207,9 @@ pchar(int ch) #endif #endif +#undef stepback #undef matcher -#undef fast -#undef slow +#undef walk #undef dissect #undef backref #undef step diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 9e29257cb3..6b7ddf5d0b 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -1,8 +1,15 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. * + * Copyright (c) 2011 The FreeBSD Foundation + * + * Portions of this software were developed by David Chisnall + * under sponsorship from the FreeBSD Foundation. + * * This code is derived from software contributed to Berkeley by * Henry Spencer. * @@ -14,7 +21,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -37,12 +44,8 @@ static char sccsid[] = "@(#)regcomp.c 8.5 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/regex/regcomp.c,v 1.36 2007/06/11 03:05:54 delphij Exp $"); +__FBSDID("$FreeBSD$"); -#ifdef __CYGWIN__ -#include "winsup.h" -#include "../locale/setlocale.h" -#endif #include <sys/types.h> #include <stdio.h> #include <string.h> @@ -50,27 +53,46 @@ __FBSDID("$FreeBSD: src/lib/libc/regex/regcomp.c,v 1.36 2007/06/11 03:05:54 delp #include <limits.h> #include <stdlib.h> #include <regex.h> -#ifndef __CYGWIN__ -#include <runetype.h> -#endif +#include <stdbool.h> #include <wchar.h> #include <wctype.h> +#ifndef LIBREGEX #include "collate.h" +#endif #include "utils.h" #include "regex2.h" #include "cname.h" +/* + * Branching context, used to keep track of branch state for all of the branch- + * aware functions. In addition to keeping track of branch positions for the + * p_branch_* functions, we use this to simplify some clumsiness in BREs for + * detection of whether ^ is acting as an anchor or being used erroneously and + * also for whether we're in a sub-expression or not. + */ +struct branchc { + sopno start; + sopno back; + sopno fwd; + + int nbranch; + int nchain; + bool outer; + bool terminate; +}; + /* * parse structure, passed up and down to avoid global variables and * other clumsinesses */ struct parse { - char *next; /* next character in RE */ - char *end; /* end of string (-> NUL normally) */ + const char *next; /* next character in RE */ + const char *end; /* end of string (-> NUL normally) */ int error; /* has an error been seen? */ + int gnuext; sop *strip; /* malloced strip */ sopno ssize; /* malloced strip size (allocated) */ sopno slen; /* malloced strip length (used) */ @@ -79,34 +101,44 @@ struct parse { # define NPAREN 10 /* we need to remember () 1-9 for back refs */ sopno pbegin[NPAREN]; /* -> ( ([0] unused) */ sopno pend[NPAREN]; /* -> ) ([0] unused) */ + bool allowbranch; /* can this expression branch? */ + bool bre; /* convenience; is this a BRE? */ + int pflags; /* other parsing flags -- legacy escapes? */ + bool (*parse_expr)(struct parse *, struct branchc *); + void (*pre_parse)(struct parse *, struct branchc *); + void (*post_parse)(struct parse *, struct branchc *); }; +#define PFLAG_LEGACY_ESC 0x00000001 + /* ========= begin header generated by ./mkh ========= */ #ifdef __cplusplus extern "C" { #endif /* === regcomp.c === */ -#ifdef __CYGWIN__ /* Defined below `int stop'. Our gcc chokes on that. */ -static void p_ere(struct parse *p, int stop); -#else -static void p_ere(struct parse *p, wint_t stop); -#endif -static void p_ere_exp(struct parse *p); +static bool p_ere_exp(struct parse *p, struct branchc *bc); static void p_str(struct parse *p); -#ifdef __CYGWIN__ /* Defined below `int end1/end2'. Our gcc chokes on that. */ -static void p_bre(struct parse *p, int end1, int end2); -#else -static void p_bre(struct parse *p, wint_t end1, wint_t end2); -#endif -static int p_simp_re(struct parse *p, int starordinary); +static int p_branch_eat_delim(struct parse *p, struct branchc *bc); +static void p_branch_ins_offset(struct parse *p, struct branchc *bc); +static void p_branch_fix_tail(struct parse *p, struct branchc *bc); +static bool p_branch_empty(struct parse *p, struct branchc *bc); +static bool p_branch_do(struct parse *p, struct branchc *bc); +static void p_bre_pre_parse(struct parse *p, struct branchc *bc); +static void p_bre_post_parse(struct parse *p, struct branchc *bc); +static void p_re(struct parse *p, int end1, int end2); +static bool p_simp_re(struct parse *p, struct branchc *bc); static int p_count(struct parse *p); static void p_bracket(struct parse *p); +static int p_range_cmp(wchar_t c1, wchar_t c2); static void p_b_term(struct parse *p, cset *cs); +static int p_b_pseudoclass(struct parse *p, char c); static void p_b_cclass(struct parse *p, cset *cs); +static void p_b_cclass_named(struct parse *p, cset *cs, const char[]); static void p_b_eclass(struct parse *p, cset *cs); static wint_t p_b_symbol(struct parse *p); static wint_t p_b_coll_elem(struct parse *p, wint_t endc); +static bool may_escape(struct parse *p, const wint_t ch); static wint_t othercase(wint_t ch); static void bothcases(struct parse *p, wint_t ch); static void ordinary(struct parse *p, wint_t ch); @@ -123,7 +155,7 @@ static sopno dupl(struct parse *p, sopno start, sopno finish); static void doemit(struct parse *p, sop op, size_t opnd); static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos); static void dofwd(struct parse *p, sopno pos, sop value); -static void enlarge(struct parse *p, sopno size); +static int enlarge(struct parse *p, sopno size); static void stripsnug(struct parse *p, struct re_guts *g); static void findmust(struct parse *p, struct re_guts *g); static int altoffset(sop *scan, int offset); @@ -131,7 +163,6 @@ static void computejumps(struct parse *p, struct re_guts *g); static void computematchjumps(struct parse *p, struct re_guts *g); static sopno pluscount(struct parse *p, struct re_guts *g); static wint_t wgetnext(struct parse *p); -static size_t xwcrtomb (char *s, wint_t wc, mbstate_t *ps); #ifdef __cplusplus } @@ -146,12 +177,14 @@ static char nuls[10]; /* place to point scanner in event of error */ */ #define PEEK() (*p->next) #define PEEK2() (*(p->next+1)) -#define MORE() (p->next < p->end) -#define MORE2() (p->next+1 < p->end) +#define MORE() (p->end - p->next > 0) +#define MORE2() (p->end - p->next > 1) #define SEE(c) (MORE() && PEEK() == (c)) -#define SEETWO(a, b) (MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b)) +#define SEETWO(a, b) (MORE2() && PEEK() == (a) && PEEK2() == (b)) +#define SEESPEC(a) (p->bre ? SEETWO('\\', a) : SEE(a)) #define EAT(c) ((SEE(c)) ? (NEXT(), 1) : 0) #define EATTWO(a, b) ((SEETWO(a, b)) ? (NEXT2(), 1) : 0) +#define EATSPEC(a) (p->bre ? EATTWO('\\', a) : EAT(a)) #define NEXT() (p->next++) #define NEXT2() (p->next += 2) #define NEXTn(n) (p->next += (n)) @@ -171,37 +204,20 @@ static char nuls[10]; /* place to point scanner in event of error */ #define THERETHERE() (p->slen - 2) #define DROP(n) (p->slen -= (n)) -#ifndef NDEBUG -static int never = 0; /* for use in asserts; shuts lint up */ -#else -#define never 0 /* some <assert.h>s have bugs too */ -#endif - /* Macro used by computejump()/computematchjump() */ #define MIN(a,b) ((a)<(b)?(a):(b)) -/* - - regcomp - interface for parser and compilation - = extern int regcomp(regex_t *, const char *, int); - = #define REG_BASIC 0000 - = #define REG_EXTENDED 0001 - = #define REG_ICASE 0002 - = #define REG_NOSUB 0004 - = #define REG_NEWLINE 0010 - = #define REG_NOSPEC 0020 - = #define REG_PEND 0040 - = #define REG_DUMP 0200 - */ -int /* 0 success, otherwise REG_something */ -regcomp(regex_t * __restrict preg, +static int /* 0 success, otherwise REG_something */ +regcomp_internal(regex_t * __restrict preg, const char * __restrict pattern, - int cflags) + int cflags, int pflags) { struct parse pa; struct re_guts *g; struct parse *p = &pa; int i; size_t len; + size_t maxlen; #ifdef REDEBUG # define GOODFLAGS(f) (f) #else @@ -217,13 +233,29 @@ regcomp(regex_t * __restrict preg, return(REG_INVARG); len = preg->re_endp - pattern; } else - len = strlen((char *)pattern); + len = strlen(pattern); /* do the mallocs early so failure handling is easy */ g = (struct re_guts *)malloc(sizeof(struct re_guts)); if (g == NULL) return(REG_ESPACE); + /* + * Limit the pattern space to avoid a 32-bit overflow on buffer + * extension. Also avoid any signed overflow in case of conversion + * so make the real limit based on a 31-bit overflow. + * + * Likely not applicable on 64-bit systems but handle the case + * generically (who are we to stop people from using ~715MB+ + * patterns?). + */ + maxlen = ((size_t)-1 >> 1) / sizeof(sop) * 2 / 3; + if (len >= maxlen) { + free((char *)g); + return(REG_ESPACE); + } p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */ + assert(p->ssize >= len); + p->strip = (sop *)malloc(p->ssize * sizeof(sop)); p->slen = 0; if (p->strip == NULL) { @@ -233,14 +265,36 @@ regcomp(regex_t * __restrict preg, /* set things up */ p->g = g; - p->next = (char *)pattern; /* convenience; we do not modify it */ + p->next = pattern; /* convenience; we do not modify it */ p->end = p->next + len; p->error = 0; p->ncsalloc = 0; + p->pflags = pflags; for (i = 0; i < NPAREN; i++) { p->pbegin[i] = 0; p->pend[i] = 0; } +#ifdef LIBREGEX + if (cflags®_POSIX) { + p->gnuext = false; + p->allowbranch = (cflags & REG_EXTENDED) != 0; + } else + p->gnuext = p->allowbranch = true; +#else + p->gnuext = false; + p->allowbranch = (cflags & REG_EXTENDED) != 0; +#endif + if (cflags & REG_EXTENDED) { + p->bre = false; + p->parse_expr = p_ere_exp; + p->pre_parse = NULL; + p->post_parse = NULL; + } else { + p->bre = true; + p->parse_expr = p_simp_re; + p->pre_parse = p_bre_pre_parse; + p->post_parse = p_bre_post_parse; + } g->sets = NULL; g->ncsets = 0; g->cflags = cflags; @@ -258,12 +312,10 @@ regcomp(regex_t * __restrict preg, /* do it */ EMIT(OEND, 0); g->firststate = THERE(); - if (cflags®_EXTENDED) - p_ere(p, OUT); - else if (cflags®_NOSPEC) + if (cflags & REG_NOSPEC) p_str(p); else - p_bre(p, OUT, OUT); + p_re(p, OUT, OUT); EMIT(OEND, 0); g->laststate = THERE(); @@ -299,71 +351,69 @@ regcomp(regex_t * __restrict preg, } /* - - p_ere - ERE parser top level, concatenation and alternation - == static void p_ere(struct parse *p, int stop); + - regcomp - interface for parser and compilation + = extern int regcomp(regex_t *, const char *, int); + = #define REG_BASIC 0000 + = #define REG_EXTENDED 0001 + = #define REG_ICASE 0002 + = #define REG_NOSUB 0004 + = #define REG_NEWLINE 0010 + = #define REG_NOSPEC 0020 + = #define REG_PEND 0040 + = #define REG_DUMP 0200 */ -static void -p_ere(struct parse *p, - int stop) /* character this ERE should end at */ +int /* 0 success, otherwise REG_something */ +regcomp(regex_t * __restrict preg, + const char * __restrict pattern, + int cflags) { - char c; - sopno prevback = 0; - sopno prevfwd = 0; - sopno conc; - int first = 1; /* is this the first alternative? */ - - for (;;) { - /* do a bunch of concatenated expressions */ - conc = HERE(); - while (MORE() && (c = PEEK()) != '|' && c != stop) - p_ere_exp(p); -#ifndef __CYGWIN__ - /* undefined behaviour according to POSIX; allowed by glibc */ - (void)REQUIRE(HERE() != conc, REG_EMPTY); /* require nonempty */ -#endif - - if (!EAT('|')) - break; /* NOTE BREAK OUT */ - if (first) { - INSERT(OCH_, conc); /* offset is wrong */ - prevfwd = conc; - prevback = conc; - first = 0; - } - ASTERN(OOR1, prevback); - prevback = THERE(); - AHEAD(prevfwd); /* fix previous offset */ - prevfwd = HERE(); - EMIT(OOR2, 0); /* offset is very wrong */ - } + return (regcomp_internal(preg, pattern, cflags, 0)); +} - if (!first) { /* tail-end fixups */ - AHEAD(prevfwd); - ASTERN(O_CH, prevback); - } +#ifndef LIBREGEX +/* + * Legacy interface that requires more lax escaping behavior. + */ +int +freebsd12_regcomp(regex_t * __restrict preg, + const char * __restrict pattern, + int cflags, int pflags) +{ - assert(!MORE() || SEE(stop)); + return (regcomp_internal(preg, pattern, cflags, PFLAG_LEGACY_ESC)); } +__sym_compat(regcomp, freebsd12_regcomp, FBSD_1.0); +#endif /* !LIBREGEX */ + /* - - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op - == static void p_ere_exp(struct parse *p); + - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op, + - return whether we should terminate or not + == static bool p_ere_exp(struct parse *p); */ -static void -p_ere_exp(struct parse *p) +static bool +p_ere_exp(struct parse *p, struct branchc *bc) { char c; wint_t wc; sopno pos; int count; int count2; +#ifdef LIBREGEX + int i; + int handled; +#endif sopno subno; int wascaret = 0; + (void)bc; assert(MORE()); /* caller should have ensured this */ c = GETNEXT(); +#ifdef LIBREGEX + handled = 0; +#endif pos = HERE(); switch (c) { case '(': @@ -374,7 +424,7 @@ p_ere_exp(struct parse *p) p->pbegin[subno] = HERE(); EMIT(OLPAREN, subno); if (!SEE(')')) - p_ere(p, ')'); + p_re(p, ')', IGN); if (subno < NPAREN) { p->pend[subno] = HERE(); assert(p->pend[subno] != 0); @@ -411,6 +461,7 @@ p_ere_exp(struct parse *p) case '*': case '+': case '?': + case '{': SETERROR(REG_BADRPT); break; case '.': @@ -425,28 +476,77 @@ p_ere_exp(struct parse *p) case '\\': (void)REQUIRE(MORE(), REG_EESCAPE); wc = WGETNEXT(); -#ifdef __CYGWIN__ - /* \< and \> are the GNU equivalents to [[:<:]] and [[:>:]] */ - switch (wc) - { - case L'<': - EMIT(OBOW, 0); - break; - case L'>': - EMIT(OEOW, 0); - break; - default: - ordinary(p, wc); - break; - } -#else - ordinary(p, wc); +#ifdef LIBREGEX + if (p->gnuext) { + handled = 1; + switch (wc) { + case '`': + EMIT(OBOS, 0); + break; + case '\'': + EMIT(OEOS, 0); + break; + case 'B': + EMIT(ONWBND, 0); + break; + case 'b': + EMIT(OWBND, 0); + break; + case 'W': + case 'w': + case 'S': + case 's': + p_b_pseudoclass(p, wc); + break; + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + i = wc - '0'; + assert(i < NPAREN); + if (p->pend[i] != 0) { + assert(i <= p->g->nsub); + EMIT(OBACK_, i); + assert(p->pbegin[i] != 0); + assert(OP(p->strip[p->pbegin[i]]) == OLPAREN); + assert(OP(p->strip[p->pend[i]]) == ORPAREN); + (void) dupl(p, p->pbegin[i]+1, p->pend[i]); + EMIT(O_BACK, i); + } else + SETERROR(REG_ESUBREG); + p->g->backrefs = 1; + break; + default: + handled = 0; + } + /* Don't proceed to the POSIX bits if we've already handled it */ + if (handled) + break; + } #endif + switch (wc) { + case '<': + EMIT(OBOW, 0); + break; + case '>': + EMIT(OEOW, 0); + break; + default: + if (may_escape(p, wc)) + ordinary(p, wc); + else + SETERROR(REG_EESCAPE); + break; + } break; - case '{': /* okay as ordinary except if digit follows */ - (void)REQUIRE(!MORE() || !isdigit((uch)PEEK()), REG_BADRPT); - fallthrough; default: + if (p->error != 0) + return (false); p->next--; wc = WGETNEXT(); ordinary(p, wc); @@ -454,12 +554,14 @@ p_ere_exp(struct parse *p) } if (!MORE()) - return; + return (false); c = PEEK(); /* we call { a repetition if followed by a digit */ - if (!( c == '*' || c == '+' || c == '?' || - (c == '{' && MORE2() && isdigit((uch)PEEK2())) )) - return; /* no repetition, we're done */ + if (!( c == '*' || c == '+' || c == '?' || c == '{')) + return (false); /* no repetition, we're done */ + else if (c == '{') + (void)REQUIRE(MORE2() && \ + (isdigit((uch)PEEK2()) || PEEK2() == ','), REG_BADRPT); NEXT(); (void)REQUIRE(!wascaret, REG_BADRPT); @@ -505,12 +607,13 @@ p_ere_exp(struct parse *p) } if (!MORE()) - return; + return (false); c = PEEK(); if (!( c == '*' || c == '+' || c == '?' || (c == '{' && MORE2() && isdigit((uch)PEEK2())) ) ) - return; + return (false); SETERROR(REG_BADRPT); + return (false); } /* @@ -526,142 +629,321 @@ p_str(struct parse *p) } /* - - p_bre - BRE parser top level, anchoring and concatenation - == static void p_bre(struct parse *p, int end1, \ - == int end2); - * Giving end1 as OUT essentially eliminates the end1/end2 check. - * - * This implementation is a bit of a kludge, in that a trailing $ is first - * taken as an ordinary character and then revised to be an anchor. - * The amount of lookahead needed to avoid this kludge is excessive. + * Eat consecutive branch delimiters for the kind of expression that we are + * parsing, return the number of delimiters that we ate. + */ +static int +p_branch_eat_delim(struct parse *p, struct branchc *bc) +{ + int nskip; + + (void)bc; + nskip = 0; + while (EATSPEC('|')) + ++nskip; + return (nskip); +} + +/* + * Insert necessary branch book-keeping operations. This emits a + * bogus 'next' offset, since we still have more to parse + */ +static void +p_branch_ins_offset(struct parse *p, struct branchc *bc) +{ + + if (bc->nbranch == 0) { + INSERT(OCH_, bc->start); /* offset is wrong */ + bc->fwd = bc->start; + bc->back = bc->start; + } + + ASTERN(OOR1, bc->back); + bc->back = THERE(); + AHEAD(bc->fwd); /* fix previous offset */ + bc->fwd = HERE(); + EMIT(OOR2, 0); /* offset is very wrong */ + ++bc->nbranch; +} + +/* + * Fix the offset of the tail branch, if we actually had any branches. + * This is to correct the bogus placeholder offset that we use. + */ +static void +p_branch_fix_tail(struct parse *p, struct branchc *bc) +{ + + /* Fix bogus offset at the tail if we actually have branches */ + if (bc->nbranch > 0) { + AHEAD(bc->fwd); + ASTERN(O_CH, bc->back); + } +} + +/* + * Signal to the parser that an empty branch has been encountered; this will, + * in the future, be used to allow for more permissive behavior with empty + * branches. The return value should indicate whether parsing may continue + * or not. */ +static bool +p_branch_empty(struct parse *p, struct branchc *bc) +{ + + (void)bc; + SETERROR(REG_EMPTY); + return (false); +} + +/* + * Take care of any branching requirements. This includes inserting the + * appropriate branching instructions as well as eating all of the branch + * delimiters until we either run out of pattern or need to parse more pattern. + */ +static bool +p_branch_do(struct parse *p, struct branchc *bc) +{ + int ate = 0; + + ate = p_branch_eat_delim(p, bc); + if (ate == 0) + return (false); + else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc)) + /* + * Halt parsing only if we have an empty branch and p_branch_empty + * indicates that we must not continue. In the future, this will not + * necessarily be an error. + */ + return (false); + p_branch_ins_offset(p, bc); + + return (true); +} + static void -p_bre(struct parse *p, - int end1, /* first terminating character */ - int end2) /* second terminating character */ +p_bre_pre_parse(struct parse *p, struct branchc *bc) { - sopno start = HERE(); - int first = 1; /* first subexpression? */ - int wasdollar = 0; + (void) bc; + /* + * Does not move cleanly into expression parser because of + * ordinary interpration of * at the beginning position of + * an expression. + */ if (EAT('^')) { EMIT(OBOL, 0); p->g->iflags |= USEBOL; p->g->nbol++; } - while (MORE() && !SEETWO(end1, end2)) { - wasdollar = p_simp_re(p, first); - first = 0; - } - if (wasdollar) { /* oops, that was a trailing anchor */ +} + +static void +p_bre_post_parse(struct parse *p, struct branchc *bc) +{ + + /* Expression is terminating due to EOL token */ + if (bc->terminate) { DROP(1); EMIT(OEOL, 0); p->g->iflags |= USEEOL; p->g->neol++; } +} + +/* + - p_re - Top level parser, concatenation and BRE anchoring + == static void p_re(struct parse *p, int end1, int end2); + * Giving end1 as OUT essentially eliminates the end1/end2 check. + * + * This implementation is a bit of a kludge, in that a trailing $ is first + * taken as an ordinary character and then revised to be an anchor. + * The amount of lookahead needed to avoid this kludge is excessive. + */ +static void +p_re(struct parse *p, + int end1, /* first terminating character */ + int end2) /* second terminating character; ignored for EREs */ +{ + struct branchc bc; - (void)REQUIRE(HERE() != start, REG_EMPTY); /* require nonempty */ + bc.nbranch = 0; + if (end1 == OUT && end2 == OUT) + bc.outer = true; + else + bc.outer = false; +#define SEEEND() (!p->bre ? SEE(end1) : SEETWO(end1, end2)) + for (;;) { + bc.start = HERE(); + bc.nchain = 0; + bc.terminate = false; + if (p->pre_parse != NULL) + p->pre_parse(p, &bc); + while (MORE() && (!p->allowbranch || !SEESPEC('|')) && !SEEEND()) { + bc.terminate = p->parse_expr(p, &bc); + ++bc.nchain; + } + if (p->post_parse != NULL) + p->post_parse(p, &bc); + (void) REQUIRE(p->gnuext || HERE() != bc.start, REG_EMPTY); +#ifdef LIBREGEX + if (HERE() == bc.start && !p_branch_empty(p, &bc)) + break; +#endif + if (!p->allowbranch) + break; + /* + * p_branch_do's return value indicates whether we should + * continue parsing or not. This is both for correctness and + * a slight optimization, because it will check if we've + * encountered an empty branch or the end of the string + * immediately following a branch delimiter. + */ + if (!p_branch_do(p, &bc)) + break; + } +#undef SEE_END + if (p->allowbranch) + p_branch_fix_tail(p, &bc); + assert(!MORE() || SEE(end1)); } /* - p_simp_re - parse a simple RE, an atom possibly followed by a repetition - == static int p_simp_re(struct parse *p, int starordinary); + == static bool p_simp_re(struct parse *p, struct branchc *bc); */ -static int /* was the simple RE an unbackslashed $? */ -p_simp_re(struct parse *p, - int starordinary) /* is a leading * an ordinary character? */ +static bool /* was the simple RE an unbackslashed $? */ +p_simp_re(struct parse *p, struct branchc *bc) { int c; + int cc; /* convenient/control character */ int count; int count2; sopno pos; + bool handled; int i; wint_t wc; sopno subno; # define BACKSL (1<<CHAR_BIT) - pos = HERE(); /* repetion op, if any, covers from here */ + pos = HERE(); /* repetition op, if any, covers from here */ + handled = false; assert(MORE()); /* caller should have ensured this */ c = GETNEXT(); if (c == '\\') { (void)REQUIRE(MORE(), REG_EESCAPE); - c = BACKSL | GETNEXT(); - } - switch (c) { - case '.': - if (p->g->cflags®_NEWLINE) - nonnewline(p); - else - EMIT(OANY, 0); - break; - case '[': - p_bracket(p); - break; -#ifdef __CYGWIN__ - case BACKSL|'<': - /* \< is the GNU equivalents to [[:<:]] */ - EMIT(OBOW, 0); - break; - case BACKSL|'>': - /* \> is the GNU equivalents to [[:>:]] */ - EMIT(OEOW, 0); - break; + cc = GETNEXT(); + c = BACKSL | cc; +#ifdef LIBREGEX + if (p->gnuext) { + handled = true; + switch (c) { + case BACKSL|'`': + EMIT(OBOS, 0); + break; + case BACKSL|'\'': + EMIT(OEOS, 0); + break; + case BACKSL|'B': + EMIT(ONWBND, 0); + break; + case BACKSL|'b': + EMIT(OWBND, 0); + break; + case BACKSL|'W': + case BACKSL|'w': + case BACKSL|'S': + case BACKSL|'s': + p_b_pseudoclass(p, cc); + break; + default: + handled = false; + } + } #endif - case BACKSL|'{': - SETERROR(REG_BADRPT); - break; - case BACKSL|'(': - p->g->nsub++; - subno = p->g->nsub; - if (subno < NPAREN) - p->pbegin[subno] = HERE(); - EMIT(OLPAREN, subno); - /* the MORE here is an error heuristic */ - if (MORE() && !SEETWO('\\', ')')) - p_bre(p, '\\', ')'); - if (subno < NPAREN) { - p->pend[subno] = HERE(); - assert(p->pend[subno] != 0); + } + if (!handled) { + switch (c) { + case '.': + if (p->g->cflags®_NEWLINE) + nonnewline(p); + else + EMIT(OANY, 0); + break; + case '[': + p_bracket(p); + break; + case BACKSL|'<': + EMIT(OBOW, 0); + break; + case BACKSL|'>': + EMIT(OEOW, 0); + break; + case BACKSL|'{': + SETERROR(REG_BADRPT); + break; + case BACKSL|'(': + p->g->nsub++; + subno = p->g->nsub; + if (subno < NPAREN) + p->pbegin[subno] = HERE(); + EMIT(OLPAREN, subno); + /* the MORE here is an error heuristic */ + if (MORE() && !SEETWO('\\', ')')) + p_re(p, '\\', ')'); + if (subno < NPAREN) { + p->pend[subno] = HERE(); + assert(p->pend[subno] != 0); + } + EMIT(ORPAREN, subno); + (void)REQUIRE(EATTWO('\\', ')'), REG_EPAREN); + break; + case BACKSL|')': /* should not get here -- must be user */ + SETERROR(REG_EPAREN); + break; + case BACKSL|'1': + case BACKSL|'2': + case BACKSL|'3': + case BACKSL|'4': + case BACKSL|'5': + case BACKSL|'6': + case BACKSL|'7': + case BACKSL|'8': + case BACKSL|'9': + i = (c&~BACKSL) - '0'; + assert(i < NPAREN); + if (p->pend[i] != 0) { + assert(i <= p->g->nsub); + EMIT(OBACK_, i); + assert(p->pbegin[i] != 0); + assert(OP(p->strip[p->pbegin[i]]) == OLPAREN); + assert(OP(p->strip[p->pend[i]]) == ORPAREN); + (void) dupl(p, p->pbegin[i]+1, p->pend[i]); + EMIT(O_BACK, i); + } else + SETERROR(REG_ESUBREG); + p->g->backrefs = 1; + break; + case '*': + /* + * Ordinary if used as the first character beyond BOL anchor of + * a (sub-)expression, counts as a bad repetition operator if it + * appears otherwise. + */ + (void)REQUIRE(bc->nchain == 0, REG_BADRPT); + /* FALLTHROUGH */ + default: + if (p->error != 0) + return (false); /* Definitely not $... */ + p->next--; + wc = WGETNEXT(); + if ((c & BACKSL) == 0 || may_escape(p, wc)) + ordinary(p, wc); + else + SETERROR(REG_EESCAPE); + break; } - EMIT(ORPAREN, subno); - (void)REQUIRE(EATTWO('\\', ')'), REG_EPAREN); - break; - case BACKSL|')': /* should not get here -- must be user */ - case BACKSL|'}': - SETERROR(REG_EPAREN); - break; - case BACKSL|'1': - case BACKSL|'2': - case BACKSL|'3': - case BACKSL|'4': - case BACKSL|'5': - case BACKSL|'6': - case BACKSL|'7': - case BACKSL|'8': - case BACKSL|'9': - i = (c&~BACKSL) - '0'; - assert(i < NPAREN); - if (p->pend[i] != 0) { - assert(i <= p->g->nsub); - EMIT(OBACK_, i); - assert(p->pbegin[i] != 0); - assert(OP(p->strip[p->pbegin[i]]) == OLPAREN); - assert(OP(p->strip[p->pend[i]]) == ORPAREN); - (void) dupl(p, p->pbegin[i]+1, p->pend[i]); - EMIT(O_BACK, i); - } else - SETERROR(REG_ESUBREG); - p->g->backrefs = 1; - break; - case '*': - (void)REQUIRE(starordinary, REG_BADRPT); - fallthrough; - default: - p->next--; - wc = WGETNEXT(); - ordinary(p, wc); - break; } if (EAT('*')) { /* implemented as +? */ @@ -670,6 +952,14 @@ p_simp_re(struct parse *p, ASTERN(O_PLUS, pos); INSERT(OQUEST_, pos); ASTERN(O_QUEST, pos); +#ifdef LIBREGEX + } else if (p->gnuext && EATTWO('\\', '?')) { + INSERT(OQUEST_, pos); + ASTERN(O_QUEST, pos); + } else if (p->gnuext && EATTWO('\\', '+')) { + INSERT(OPLUS_, pos); + ASTERN(O_PLUS, pos); +#endif } else if (EATTWO('\\', '{')) { count = p_count(p); if (EAT(',')) { @@ -688,9 +978,9 @@ p_simp_re(struct parse *p, SETERROR(REG_BADBR); } } else if (c == '$') /* $ (but not \$) ends it */ - return(1); + return (true); - return(0); + return (false); } /* @@ -723,15 +1013,17 @@ p_bracket(struct parse *p) wint_t ch; /* Dept of Truly Sickening Special-Case Kludges */ - if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]", 6) == 0) { - EMIT(OBOW, 0); - NEXTn(6); - return; - } - if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]", 6) == 0) { - EMIT(OEOW, 0); - NEXTn(6); - return; + if (p->end - p->next > 5) { + if (strncmp(p->next, "[:<:]]", 6) == 0) { + EMIT(OBOW, 0); + NEXTn(6); + return; + } + if (strncmp(p->next, "[:>:]]", 6) == 0) { + EMIT(OEOW, 0); + NEXTn(6); + return; + } } if ((cs = allocset(p)) == NULL) @@ -757,14 +1049,30 @@ p_bracket(struct parse *p) if (cs->invert && p->g->cflags®_NEWLINE) cs->bmp['\n' >> 3] |= 1 << ('\n' & 7); - if ((ch = singleton(cs)) != OUT /* optimize singleton sets */ - && cs->invert == 0) { /* But not in invert case. */ + if ((ch = singleton(cs)) != OUT) { /* optimize singleton sets */ ordinary(p, ch); freeset(p, cs); } else EMIT(OANYOF, (int)(cs - p->g->sets)); } +static int +p_range_cmp(wchar_t c1, wchar_t c2) +{ +#ifndef LIBREGEX + return __wcollate_range_cmp(c1, c2); +#else + /* Copied from libc/collate __wcollate_range_cmp */ + wchar_t s1[2], s2[2]; + + s1[0] = c1; + s1[1] = L'\0'; + s2[0] = c2; + s2[1] = L'\0'; + return (wcscoll(s1, s2)); +#endif +} + /* - p_b_term - parse one term of a bracketed character list == static void p_b_term(struct parse *p, cset *cs); @@ -775,7 +1083,10 @@ p_b_term(struct parse *p, cset *cs) char c; wint_t start, finish; wint_t i; - +#ifndef LIBREGEX + struct xlocale_collate *table = + (struct xlocale_collate*)__get_locale()->components[XLC_COLLATE]; +#endif /* classify what we've got */ switch ((MORE()) ? PEEK() : '\0') { case '[': @@ -784,7 +1095,6 @@ p_b_term(struct parse *p, cset *cs) case '-': SETERROR(REG_ERANGE); return; /* NOTE RETURN */ - break; default: c = '\0'; break; @@ -818,27 +1128,23 @@ p_b_term(struct parse *p, cset *cs) finish = '-'; else finish = p_b_symbol(p); - } else if (SEE('-') && !MORE2()) { - SETERROR(REG_EBRACK); - return; } else finish = start; if (start == finish) CHadd(p, cs, start); else { -#ifdef __CYGWIN__ - if (!__get_current_collate_locale ()->win_locale[0]) { +#ifndef LIBREGEX + if (table->__collate_load_error || MB_CUR_MAX > 1) { #else - if (__collate_load_error) { + if (MB_CUR_MAX > 1) { #endif - (void)REQUIRE((uch)start <= (uch)finish, REG_ERANGE); + (void)REQUIRE(start <= finish, REG_ERANGE); CHaddrange(p, cs, start, finish); } else { - (void)REQUIRE(__wcollate_range_cmp(start, finish) <= 0, REG_ERANGE); + (void)REQUIRE(p_range_cmp(start, finish) <= 0, REG_ERANGE); for (i = 0; i <= UCHAR_MAX; i++) { - if ( __wcollate_range_cmp(start, i) <= 0 - && __wcollate_range_cmp(i, finish) <= 0 - ) + if (p_range_cmp(start, i) <= 0 && + p_range_cmp(i, finish) <= 0 ) CHadd(p, cs, i); } } @@ -847,6 +1153,41 @@ p_b_term(struct parse *p, cset *cs) } } +/* + - p_b_pseudoclass - parse a pseudo-class (\w, \W, \s, \S) + == static int p_b_pseudoclass(struct parse *p, char c) + */ +static int +p_b_pseudoclass(struct parse *p, char c) { + cset *cs; + + if ((cs = allocset(p)) == NULL) + return(0); + + if (p->g->cflags®_ICASE) + cs->icase = 1; + + switch (c) { + case 'W': + cs->invert = 1; + /* PASSTHROUGH */ + case 'w': + p_b_cclass_named(p, cs, "alnum"); + break; + case 'S': + cs->invert = 1; + /* PASSTHROUGH */ + case 's': + p_b_cclass_named(p, cs, "space"); + break; + default: + return(0); + } + + EMIT(OANYOF, (int)(cs - p->g->sets)); + return(1); +} + /* - p_b_cclass - parse a character-class name and deal with it == static void p_b_cclass(struct parse *p, cset *cs); @@ -854,9 +1195,8 @@ p_b_term(struct parse *p, cset *cs) static void p_b_cclass(struct parse *p, cset *cs) { - char *sp = p->next; + const char *sp = p->next; size_t len; - wctype_t wct; char clname[16]; while (MORE() && isalpha((uch)PEEK())) @@ -868,6 +1208,17 @@ p_b_cclass(struct parse *p, cset *cs) } memcpy(clname, sp, len); clname[len] = '\0'; + + p_b_cclass_named(p, cs, clname); +} +/* + - p_b_cclass_named - deal with a named character class + == static void p_b_cclass_named(struct parse *p, cset *cs, const char []); + */ +static void +p_b_cclass_named(struct parse *p, cset *cs, const char clname[]) { + wctype_t wct; + if ((wct = wctype(clname)) == 0) { SETERROR(REG_ECTYPE); return; @@ -892,7 +1243,7 @@ p_b_eclass(struct parse *p, cset *cs) /* - p_b_symbol - parse a character or [..]ed multicharacter collating symbol - == static char p_b_symbol(struct parse *p); + == static wint_t p_b_symbol(struct parse *p); */ static wint_t /* value of symbol */ p_b_symbol(struct parse *p) @@ -911,18 +1262,17 @@ p_b_symbol(struct parse *p) /* - p_b_coll_elem - parse a collating-element name and look it up - == static char p_b_coll_elem(struct parse *p, int endc); + == static wint_t p_b_coll_elem(struct parse *p, wint_t endc); */ static wint_t /* value of collating element */ p_b_coll_elem(struct parse *p, wint_t endc) /* name ended by endc,']' */ { - char *sp = p->next; + const char *sp = p->next; struct cname *cp; - int len; mbstate_t mbs; - wint_t wc; - size_t clen; + wchar_t wc; + size_t clen, len; while (MORE() && !SEETWO(endc, ']')) NEXT(); @@ -932,10 +1282,10 @@ p_b_coll_elem(struct parse *p, } len = p->next - sp; for (cp = cnames; cp->name != NULL; cp++) - if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0') + if (strncmp(cp->name, sp, len) == 0 && strlen(cp->name) == len) return(cp->code); /* known name */ memset(&mbs, 0, sizeof(mbs)); - if ((clen = mbrtowi(&wc, sp, len, &mbs)) == len) + if ((clen = mbrtowc(&wc, sp, len, &mbs)) == len) return (wc); /* single character */ else if (clen == (size_t)-1 || clen == (size_t)-2) SETERROR(REG_ILLSEQ); @@ -944,9 +1294,58 @@ p_b_coll_elem(struct parse *p, return(0); } +/* + - may_escape - determine whether 'ch' is escape-able in the current context + == static int may_escape(struct parse *p, const wint_t ch) + */ +static bool +may_escape(struct parse *p, const wint_t ch) +{ + + if ((p->pflags & PFLAG_LEGACY_ESC) != 0) + return (true); + if (isalpha(ch) || ch == '\'' || ch == '`') + return (false); + return (true); +#ifdef NOTYET + /* + * Build a whitelist of characters that may be escaped to produce an + * ordinary in the current context. This assumes that these have not + * been otherwise interpreted as a special character. Escaping an + * ordinary character yields undefined results according to + * IEEE 1003.1-2008. Some extensions (notably, some GNU extensions) take + * advantage of this and use escaped ordinary characters to provide + * special meaning, e.g. \b, \B, \w, \W, \s, \S. + */ + switch(ch) { + case '|': + case '+': + case '?': + /* The above characters may not be escaped in BREs */ + if (!(p->g->cflags®_EXTENDED)) + return (false); + /* Fallthrough */ + case '(': + case ')': + case '{': + case '}': + case '.': + case '[': + case ']': + case '\\': + case '*': + case '^': + case '$': + return (true); + default: + return (false); + } +#endif +} + /* - othercase - return the case counterpart of an alphabetic - == static char othercase(int ch); + == static wint_t othercase(wint_t ch); */ static wint_t /* if no counterpart, return ch */ othercase(wint_t ch) @@ -962,15 +1361,15 @@ othercase(wint_t ch) /* - bothcases - emit a dualcase version of a two-case character - == static void bothcases(struct parse *p, int ch); + == static void bothcases(struct parse *p, wint_t ch); * * Boy, is this implementation ever a kludge... */ static void bothcases(struct parse *p, wint_t ch) { - char *oldnext = p->next; - char *oldend = p->end; + const char *oldnext = p->next; + const char *oldend = p->end; char bracket[3 + MB_LEN_MAX]; size_t n; mbstate_t mbs; @@ -978,7 +1377,7 @@ bothcases(struct parse *p, wint_t ch) assert(othercase(ch) != ch); /* p_bracket() would recurse */ p->next = bracket; memset(&mbs, 0, sizeof(mbs)); - n = xwcrtomb(bracket, ch, &mbs); + n = wcrtomb(bracket, ch, &mbs); assert(n != (size_t)-1); bracket[n] = ']'; bracket[n + 1] = '\0'; @@ -991,7 +1390,7 @@ bothcases(struct parse *p, wint_t ch) /* - ordinary - emit an ordinary character - == static void ordinary(struct parse *p, int ch); + == static void ordinary(struct parse *p, wint_t ch); */ static void ordinary(struct parse *p, wint_t ch) @@ -1023,8 +1422,8 @@ ordinary(struct parse *p, wint_t ch) static void nonnewline(struct parse *p) { - char *oldnext = p->next; - char *oldend = p->end; + const char *oldnext = p->next; + const char *oldend = p->end; char bracket[4]; p->next = bracket; @@ -1119,23 +1518,11 @@ static wint_t wgetnext(struct parse *p) { mbstate_t mbs; - wint_t wc; + wchar_t wc; size_t n; -#ifdef __CYGWIN__ - /* Kludge for more glibc compatibility. On Cygwin as well as on - Linux, mbrtowc returns -1 if the current local's codeset is ASCII - and the character is >= 0x80. Nevertheless, glibc's regcomp allows - any char value, even stuff like [\xc0-\xff], if the locale's codeset - is ASCII, so in regcomp it ignores the fact that chars >= 0x80 are - invalid ASCII chars. To be more Linux-compatible, we align the - behaviour to glibc here. Allow any character value if the current - local's codeset is ASCII. */ - if (*__current_locale_charset () == 'A') /* SCII */ - return (wint_t) (unsigned char) *p->next++; -#endif memset(&mbs, 0, sizeof(mbs)); - n = mbrtowi(&wc, p->next, p->end - p->next, &mbs); + n = mbrtowc(&wc, p->next, p->end - p->next, &mbs); if (n == (size_t)-1 || n == (size_t)-2) { SETERROR(REG_ILLSEQ); return (0); @@ -1146,27 +1533,6 @@ wgetnext(struct parse *p) return (wc); } -static size_t -xwcrtomb (char *s, wint_t wc, mbstate_t *ps) -{ - if (sizeof (wchar_t) == 2 && wc >= 0x10000) - { - /* UTF-16 wcrtomb can't handle these values directly. The rest of the - code isn't surrogate pair aware, so we handle this here. Convert - value to UTF-16 surrogate and call wcsrtombs to convert the "string" - to the correct multibyte representation, if any. */ - wchar_t ws[2]; - const wchar_t *wsp = ws; - - wc -= 0x10000; - ws[0] = 0xd800 | (wc >> 10); - ws[1] = 0xdc00 | (wc & 0x3ff); - return wcsnrtombs (s, &wsp, 2, MB_CUR_MAX, ps); - } - return wcrtomb (s, wc, ps); -} - - /* - seterr - set an error condition == static int seterr(struct parse *p, int e); @@ -1190,7 +1556,7 @@ allocset(struct parse *p) { cset *cs, *ncs; - ncs = realloc(p->g->sets, (p->g->ncsets + 1) * sizeof(*ncs)); + ncs = reallocarray(p->g->sets, p->g->ncsets + 1, sizeof(*ncs)); if (ncs == NULL) { SETERROR(REG_ESPACE); return (NULL); @@ -1226,16 +1592,16 @@ freeset(struct parse *p, cset *cs) static wint_t singleton(cset *cs) { - wint_t i, s = OUT, n; + wint_t i, s, n; for (i = n = 0; i < NC; i++) if (CHIN(cs, i)) { n++; s = i; } - if (n == 1 && cs->nwides == 0) + if (n == 1) return (s); - if (n == 0 && cs->nwides == 1 && cs->nranges == 0 && cs->ntypes == 0 && + if (cs->nwides == 1 && cs->nranges == 0 && cs->ntypes == 0 && cs->icase == 0) return (cs->wides[0]); /* Don't bother handling the other cases. */ @@ -1253,7 +1619,7 @@ CHadd(struct parse *p, cset *cs, wint_t ch) if (ch < NC) cs->bmp[ch >> 3] |= 1 << (ch & 7); else { - newwides = realloc(cs->wides, (cs->nwides + 1) * + newwides = reallocarray(cs->wides, cs->nwides + 1, sizeof(*cs->wides)); if (newwides == NULL) { SETERROR(REG_ESPACE); @@ -1282,7 +1648,7 @@ CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max) CHadd(p, cs, min); if (min >= max) return; - newranges = realloc(cs->ranges, (cs->nranges + 1) * + newranges = reallocarray(cs->ranges, cs->nranges + 1, sizeof(*cs->ranges)); if (newranges == NULL) { SETERROR(REG_ESPACE); @@ -1306,7 +1672,7 @@ CHaddtype(struct parse *p, cset *cs, wctype_t wct) for (i = 0; i < NC; i++) if (iswctype(i, wct)) CHadd(p, cs, i); - newtypes = realloc(cs->types, (cs->ntypes + 1) * + newtypes = reallocarray(cs->types, cs->ntypes + 1, sizeof(*cs->types)); if (newtypes == NULL) { SETERROR(REG_ESPACE); @@ -1331,8 +1697,8 @@ dupl(struct parse *p, assert(finish >= start); if (len == 0) return(ret); - enlarge(p, p->ssize + len); /* this many unexpected additions */ - assert(p->ssize >= p->slen + len); + if (!enlarge(p, p->ssize + len)) /* this many unexpected additions */ + return(ret); (void) memcpy((char *)(p->strip + p->slen), (char *)(p->strip + start), (size_t)len*sizeof(sop)); p->slen += len; @@ -1359,8 +1725,8 @@ doemit(struct parse *p, sop op, size_t opnd) /* deal with undersized strip */ if (p->slen >= p->ssize) - enlarge(p, (p->ssize+1) / 2 * 3); /* +50% */ - assert(p->slen < p->ssize); + if (!enlarge(p, (p->ssize+1) / 2 * 3)) /* +50% */ + return; /* finally, it's all reduced to the easy case */ p->strip[p->slen++] = SOP(op, opnd); @@ -1419,23 +1785,24 @@ dofwd(struct parse *p, sopno pos, sop value) /* - enlarge - enlarge the strip - == static void enlarge(struct parse *p, sopno size); + == static int enlarge(struct parse *p, sopno size); */ -static void +static int enlarge(struct parse *p, sopno size) { sop *sp; if (p->ssize >= size) - return; + return 1; - sp = (sop *)realloc(p->strip, size*sizeof(sop)); + sp = reallocarray(p->strip, size, sizeof(sop)); if (sp == NULL) { SETERROR(REG_ESPACE); - return; + return 0; } p->strip = sp; p->ssize = size; + return 1; } /* @@ -1446,7 +1813,7 @@ static void stripsnug(struct parse *p, struct re_guts *g) { g->nstates = p->slen; - g->strip = (sop *)realloc((char *)p->strip, p->slen * sizeof(sop)); + g->strip = reallocarray((char *)p->strip, p->slen, sizeof(sop)); if (g->strip == NULL) { SETERROR(REG_ESPACE); g->strip = p->strip; @@ -1487,11 +1854,7 @@ findmust(struct parse *p, struct re_guts *g) * UTF-8 (see RFC 3629). */ if (MB_CUR_MAX > 1 && -#ifdef __CYGWIN__ - strcmp(__current_locale_charset (), "UTF-8") != 0) -#else strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0) -#endif return; /* find the longest OCHAR sequence in strip */ @@ -1507,7 +1870,7 @@ findmust(struct parse *p, struct re_guts *g) memset(&mbs, 0, sizeof(mbs)); newstart = scan - 1; } - clen = xwcrtomb(buf, OPND(s), &mbs); + clen = wcrtomb(buf, OPND(s), &mbs); if (clen == (size_t)-1) goto toohard; newlen += clen; @@ -1524,21 +1887,25 @@ findmust(struct parse *p, struct re_guts *g) scan += OPND(s); s = *scan; /* assert() interferes w debug printouts */ - if (OP(s) != O_QUEST && OP(s) != O_CH && - OP(s) != OOR2) { + if (OP(s) != (sop)O_QUEST && + OP(s) != (sop)O_CH && OP(s) != (sop)OOR2) { g->iflags |= BAD; return; } - } while (OP(s) != O_QUEST && OP(s) != O_CH); - fallthrough; + } while (OP(s) != (sop)O_QUEST && OP(s) != (sop)O_CH); + /* FALLTHROUGH */ case OBOW: /* things that break a sequence */ case OEOW: case OBOL: case OEOL: + case OBOS: + case OEOS: + case OWBND: + case ONWBND: case O_QUEST: case O_CH: case OEND: - if (newlen > g->mlen) { /* ends one */ + if (newlen > (sopno)g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) { @@ -1553,7 +1920,7 @@ findmust(struct parse *p, struct re_guts *g) newlen = 0; break; case OANY: - if (newlen > g->mlen) { /* ends one */ + if (newlen > (sopno)g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) { @@ -1571,7 +1938,7 @@ findmust(struct parse *p, struct re_guts *g) break; case OANYOF: /* may or may not invalidate offset */ /* First, everything as OANY */ - if (newlen > g->mlen) { /* ends one */ + if (newlen > (sopno)g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) { @@ -1594,7 +1961,7 @@ findmust(struct parse *p, struct re_guts *g) * save the last known good offset, in case the * must sequence doesn't occur later. */ - if (newlen > g->mlen) { /* ends one */ + if (newlen > (sopno)g->mlen) { /* ends one */ start = newstart; g->mlen = newlen; if (offset > -1) @@ -1626,7 +1993,7 @@ findmust(struct parse *p, struct re_guts *g) while (cp < g->must + g->mlen) { while (OP(s = *scan++) != OCHAR) continue; - clen = xwcrtomb(cp, OPND(s), &mbs); + clen = wcrtomb(cp, OPND(s), &mbs); assert(clen != (size_t)-1); cp += clen; } @@ -1655,7 +2022,7 @@ altoffset(sop *scan, int offset) largest = 0; try = 0; s = *scan++; - while (OP(s) != O_QUEST && OP(s) != O_CH) { + while (OP(s) != (sop)O_QUEST && OP(s) != (sop)O_CH) { switch (OP(s)) { case OOR1: if (try > largest) @@ -1671,10 +2038,10 @@ altoffset(sop *scan, int offset) do { scan += OPND(s); s = *scan; - if (OP(s) != O_QUEST && OP(s) != O_CH && - OP(s) != OOR2) + if (OP(s) != (sop)O_QUEST && + OP(s) != (sop)O_CH && OP(s) != (sop)OOR2) return -1; - } while (OP(s) != O_QUEST && OP(s) != O_CH); + } while (OP(s) != (sop)O_QUEST && OP(s) != (sop)O_CH); /* We must skip to the next position, or we'll * leave altoffset() too early. */ @@ -1686,6 +2053,8 @@ altoffset(sop *scan, int offset) try++; case OBOW: case OEOW: + case OWBND: + case ONWBND: case OLPAREN: case ORPAREN: case OOR2: @@ -1726,7 +2095,7 @@ computejumps(struct parse *p, struct re_guts *g) if (p->error != 0) return; - g->charjump = (int*) malloc((NC + 1) * sizeof(int)); + g->charjump = (int *)malloc((NC_MAX + 1) * sizeof(int)); if (g->charjump == NULL) /* Not a fatal error */ return; /* Adjust for signed chars, if necessary */ @@ -1775,16 +2144,15 @@ computematchjumps(struct parse *p, struct re_guts *g) if (p->error != 0) return; - pmatches = (int*) malloc(g->mlen * sizeof(unsigned int)); + pmatches = (int*) malloc(g->mlen * sizeof(int)); if (pmatches == NULL) { g->matchjump = NULL; return; } - g->matchjump = (int*) malloc(g->mlen * sizeof(unsigned int)); - if (g->matchjump == NULL) /* Not a fatal error */ - { - free (pmatches); + g->matchjump = (int*) malloc(g->mlen * sizeof(int)); + if (g->matchjump == NULL) { /* Not a fatal error */ + free(pmatches); return; } @@ -1827,7 +2195,7 @@ computematchjumps(struct parse *p, struct re_guts *g) suffix++; } if (suffix < g->mlen) - ssuffix = pmatches[ssuffix]; + ssuffix = pmatches[ssuffix]; } free(pmatches); diff --git a/winsup/cygwin/regex/regerror.c b/winsup/cygwin/regex/regerror.c index 1bba3e4a6f..0e555784f0 100644 --- a/winsup/cygwin/regex/regerror.c +++ b/winsup/cygwin/regex/regerror.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -37,7 +39,7 @@ static char sccsid[] = "@(#)regerror.c 8.4 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/regex/regerror.c,v 1.11 2007/06/11 03:05:54 delphij Exp $"); +__FBSDID("$FreeBSD$"); #include <sys/types.h> #include <stdio.h> @@ -54,7 +56,7 @@ extern "C" { #endif /* === regerror.c === */ -static char *regatoi(const regex_t *preg, char *localbuf); +static const char *regatoi(const regex_t *preg, char *localbuf); #ifdef __cplusplus } @@ -83,13 +85,8 @@ static char *regatoi(const regex_t *preg, char *localbuf); */ static struct rerr { int code; -#ifdef __CYGWIN__ /* Avoid whining compiler */ const char *name; const char *explain; -#else - char *name; - char *explain; -#endif } rerrs[] = { {REG_NOMATCH, "REG_NOMATCH", "regexec() failed to match"}, {REG_BADPAT, "REG_BADPAT", "invalid regular expression"}, @@ -125,11 +122,7 @@ regerror(int errcode, struct rerr *r; size_t len; int target = errcode &~ REG_ITOA; -#ifdef __CYGWIN__ /* Avoid whining compiler */ const char *s; -#else - char *s; -#endif char convbuf[50]; if (errcode == REG_ATOI) @@ -167,7 +160,7 @@ regerror(int errcode, - regatoi - internal routine to implement REG_ATOI == static char *regatoi(const regex_t *preg, char *localbuf); */ -static char * +static const char * regatoi(const regex_t *preg, char *localbuf) { struct rerr *r; @@ -176,14 +169,7 @@ regatoi(const regex_t *preg, char *localbuf) if (strcmp(r->name, preg->re_endp) == 0) break; if (r->code == 0) -#ifdef __CYGWIN__ /* Avoid whining compiler */ - { - static char null[] = "0"; - return null; - } -#else return("0"); -#endif sprintf(localbuf, "%d", r->code); return(localbuf); diff --git a/winsup/cygwin/regex/regex.3 b/winsup/cygwin/regex/regex.3 index f848d66c3a..d22dec1e87 100644 --- a/winsup/cygwin/regex/regex.3 +++ b/winsup/cygwin/regex/regex.3 @@ -13,7 +13,7 @@ .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. -.\" 4. Neither the name of the University nor the names of its contributors +.\" 3. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)regex.3 8.4 (Berkeley) 3/20/94 -.\" $FreeBSD: src/lib/libc/regex/regex.3,v 1.21 2007/01/09 00:28:04 imp Exp $ +.\" $FreeBSD$ .\" -.Dd August 17, 2005 +.Dd April 15, 2017 .Dt REGEX 3 .Os .Sh NAME @@ -183,6 +183,17 @@ compatible with but not specified by .St -p1003.2 , and should be used with caution in software intended to be portable to other systems. +.It Dv REG_POSIX +Compile only +.St -p1003.2 +compliant expressions. +This flag has no effect unless linking against +.Nm libregex . +This is an extension, +compatible with but not specified by +.St -p1003.2 , +and should be used with +caution in software intended to be portable to other systems. .El .Pp When successful, @@ -235,11 +246,16 @@ The argument is the bitwise OR of zero or more of the following flags: .Bl -tag -width REG_STARTEND .It Dv REG_NOTBOL -The first character of -the string -is not the beginning of a line, so the -.Ql ^\& -anchor should not match before it. +The first character of the string is treated as the continuation +of a line. +This means that the anchors +.Ql ^\& , +.Ql [[:<:]] , +and +.Ql \e< +do not match before it; but see +.Dv REG_STARTEND +below. This does not affect the behavior of newlines under .Dv REG_NEWLINE . .It Dv REG_NOTEOL @@ -247,19 +263,16 @@ The NUL terminating the string does not end a line, so the .Ql $\& -anchor should not match before it. +anchor does not match before it. This does not affect the behavior of newlines under .Dv REG_NEWLINE . .It Dv REG_STARTEND The string is considered to start at -.Fa string -+ -.Fa pmatch Ns [0]. Ns Va rm_so -and to have a terminating NUL located at -.Fa string -+ -.Fa pmatch Ns [0]. Ns Va rm_eo -(there need not actually be a NUL at that location), +.Fa string No + +.Fa pmatch Ns [0]. Ns Fa rm_so +and to end before the byte located at +.Fa string No + +.Fa pmatch Ns [0]. Ns Fa rm_eo , regardless of the value of .Fa nmatch . See below for the definition of @@ -271,13 +284,37 @@ compatible with but not specified by .St -p1003.2 , and should be used with caution in software intended to be portable to other systems. -Note that a non-zero -.Va rm_so -does not imply -.Dv REG_NOTBOL ; -.Dv REG_STARTEND -affects only the location of the string, -not how it is matched. +.Pp +Without +.Dv REG_NOTBOL , +the position +.Fa rm_so +is considered the beginning of a line, such that +.Ql ^ +matches before it, and the beginning of a word if there is a word +character at this position, such that +.Ql [[:<:]] +and +.Ql \e< +match before it. +.Pp +With +.Dv REG_NOTBOL , +the character at position +.Fa rm_so +is treated as the continuation of a line, and if +.Fa rm_so +is greater than 0, the preceding character is taken into consideration. +If the preceding character is a newline and the regular expression was compiled +with +.Dv REG_NEWLINE , +.Ql ^ +matches before the string; if the preceding character is not a word character +but the string starts with a word character, +.Ql [[:<:]] +and +.Ql \e< +match before the string. .El .Pp See @@ -420,10 +457,12 @@ it should have been the result from the most recent using that .Ft regex_t . The -.Fn ( regerror +.Po +.Fn regerror may be able to supply a more detailed message using information from the -.Ft regex_t . ) +.Ft regex_t . +.Pc The .Fn regerror function diff --git a/winsup/cygwin/regex/regex.7 b/winsup/cygwin/regex/regex.7 index 79fecc1975..8380fd89e2 100644 --- a/winsup/cygwin/regex/regex.7 +++ b/winsup/cygwin/regex/regex.7 @@ -13,6 +13,10 @@ .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. @@ -30,9 +34,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)re_format.7 8.3 (Berkeley) 3/20/94 -.\" $FreeBSD: src/lib/libc/regex/re_format.7,v 1.12 2008/09/05 17:41:20 keramida Exp $ +.\" $FreeBSD$ .\" -.Dd March 20, 1994 +.Dd June 30, 2014 .Dt RE_FORMAT 7 .Os .Sh NAME @@ -271,7 +275,6 @@ and stands for the list of all characters belonging to that class. Standard character class names are: -.Pp .Bl -column "alnum" "digit" "xdigit" -offset indent .It Em "alnum digit punct" .It Em "alpha graph space" @@ -311,6 +314,13 @@ compatible with but not specified by .St -p1003.2 , and should be used with caution in software intended to be portable to other systems. +The additional word delimiters +.Ql \e< +and +.Ql \e> +are provided to ease compatibility with traditional +SVR4 +systems but are not portable and should be avoided. .Pp In the event that an RE could match more than one substring of a given string, @@ -382,10 +392,12 @@ and .Ql ?\& are ordinary characters, and their functionality can be expressed using bounds -.No ( Ql {1,} +.Po +.Ql {1,} or .Ql {0,1} -respectively). +respectively +.Pc . Also note that .Ql x+ in modern REs is equivalent to diff --git a/winsup/cygwin/regex/regex2.h b/winsup/cygwin/regex/regex2.h index b9a35a45fd..38bbed90fd 100644 --- a/winsup/cygwin/regex/regex2.h +++ b/winsup/cygwin/regex/regex2.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,21 +33,21 @@ * SUCH DAMAGE. * * @(#)regex2.h 8.4 (Berkeley) 3/20/94 - * $FreeBSD: src/lib/libc/regex/regex2.h,v 1.11 2007/01/09 00:28:04 imp Exp $ + * $FreeBSD$ */ /* * First, the stuff that ends up in the outside-world include file = typedef off_t regoff_t; = typedef struct { - = int re_magic; - = size_t re_nsub; // number of parenthesized subexpressions - = const char *re_endp; // end pointer for REG_PEND - = struct re_guts *re_g; // none of your business :-) + = int re_magic; + = size_t re_nsub; // number of parenthesized subexpressions + = const char *re_endp; // end pointer for REG_PEND + = struct re_guts *re_g; // none of your business :-) = } regex_t; = typedef struct { - = regoff_t rm_so; // start of match - = regoff_t rm_eo; // end of match + = regoff_t rm_so; // start of match + = regoff_t rm_eo; // end of match = } regmatch_t; */ /* @@ -73,7 +75,7 @@ * immediately *preceding* "execution" of that operator. */ typedef unsigned long sop; /* strip operator */ -typedef long sopno; +typedef unsigned long sopno; #define OPRMASK 0xf8000000L #define OPDMASK 0x07ffffffL #define OPSHIFT ((unsigned)27) @@ -102,6 +104,10 @@ typedef long sopno; #define O_CH (18L<<OPSHIFT) /* end choice back to OOR1 */ #define OBOW (19L<<OPSHIFT) /* begin word - */ #define OEOW (20L<<OPSHIFT) /* end word - */ +#define OBOS (21L<<OPSHIFT) /* begin subj. - */ +#define OEOS (22L<<OPSHIFT) /* end subj. - */ +#define OWBND (23L<<OPSHIFT) /* word bound - */ +#define ONWBND (24L<<OPSHIFT) /* not bound - */ /* * Structures for [] character-set representation. @@ -111,13 +117,13 @@ typedef struct { wint_t max; } crange; typedef struct { - unsigned char bmp[NC / 8]; + unsigned char bmp[NC_MAX / 8]; wctype_t *types; - int ntypes; + unsigned int ntypes; wint_t *wides; - int nwides; + unsigned int nwides; crange *ranges; - int nranges; + unsigned int nranges; int invert; int icase; } cset; @@ -125,15 +131,20 @@ typedef struct { static int CHIN1(cset *cs, wint_t ch) { - int i; + unsigned int i; assert(ch >= 0); if (ch < NC) return (((cs->bmp[ch >> 3] & (1 << (ch & 7))) != 0) ^ cs->invert); - for (i = 0; i < cs->nwides; i++) - if (ch == cs->wides[i]) + for (i = 0; i < cs->nwides; i++) { + if (cs->icase) { + if (ch == towlower(cs->wides[i]) || + ch == towupper(cs->wides[i])) + return (!cs->invert); + } else if (ch == cs->wides[i]) return (!cs->invert); + } for (i = 0; i < cs->nranges; i++) if (cs->ranges[i].min <= ch && ch <= cs->ranges[i].max) return (!cs->invert); @@ -151,14 +162,10 @@ CHIN(cset *cs, wint_t ch) if (ch < NC) return (((cs->bmp[ch >> 3] & (1 << (ch & 7))) != 0) ^ cs->invert); - else if (cs->icase) { - if (cs->invert) - return (CHIN1(cs, ch) && CHIN1(cs, towlower(ch)) && - CHIN1(cs, towupper(ch))); - else - return (CHIN1(cs, ch) || CHIN1(cs, towlower(ch)) || - CHIN1(cs, towupper(ch))); - } else + else if (cs->icase) + return (CHIN1(cs, ch) || CHIN1(cs, towlower(ch)) || + CHIN1(cs, towupper(ch))); + else return (CHIN1(cs, ch)); } @@ -169,7 +176,7 @@ struct re_guts { int magic; # define MAGIC2 ((('R'^0200)<<8)|'E') sop *strip; /* malloced area for strip */ - int ncsets; /* number of csets in use */ + unsigned int ncsets; /* number of csets in use */ cset *sets; /* -> cset [ncsets] */ int cflags; /* copy of regcomp() cflags argument */ sopno nstates; /* = number of sops */ @@ -193,4 +200,5 @@ struct re_guts { /* misc utilities */ #define OUT (CHAR_MIN - 1) /* a non-character value */ -#define ISWORD(c) (iswalnum((wint_t)(c)) || (c) == '_') +#define IGN (CHAR_MIN - 2) +#define ISWORD(c) (iswalnum((uch)(c)) || (c) == '_') diff --git a/winsup/cygwin/regex/regexec.c b/winsup/cygwin/regex/regexec.c index 94e95e65ab..d7aa46f45b 100644 --- a/winsup/cygwin/regex/regexec.c +++ b/winsup/cygwin/regex/regexec.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -37,7 +39,7 @@ static char sccsid[] = "@(#)regexec.c 8.3 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/regex/regexec.c,v 1.8 2007/06/11 03:05:54 delphij Exp $"); +__FBSDID("$FreeBSD$"); /* * the outer shell of regexec() @@ -46,9 +48,6 @@ __FBSDID("$FreeBSD: src/lib/libc/regex/regexec.c,v 1.8 2007/06/11 03:05:54 delph * macros that code uses. This lets the same code operate on two different * representations for state sets and characters. */ -#ifdef __CYGWIN__ -#include "winsup.h" -#endif #include <sys/types.h> #include <stdio.h> #include <stdlib.h> @@ -68,9 +67,9 @@ static __inline size_t xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy) { size_t nr; - wint_t wc; + wchar_t wc; - nr = mbrtowi(&wc, s, n, mbs); + nr = mbrtowc(&wc, s, n, mbs); if (wi != NULL) *wi = wc; if (nr == 0) @@ -98,8 +97,8 @@ xmbrtowc_dummy(wint_t *wi, } /* macros for manipulating states, small version */ -#define states long -#define states1 states /* for later use in regexec() decision */ +#define states1 long /* for later use in regexec() decision */ +#define states states1 #define CLEAR(v) ((v) = 0) #define SET0(v, n) ((v) &= ~((unsigned long)1 << (n))) #define SET1(v, n) ((v) |= (unsigned long)1 << (n)) @@ -228,9 +227,9 @@ regexec(const regex_t * __restrict preg, eflags = GOODFLAGS(eflags); if (MB_CUR_MAX > 1) - return(mmatcher(g, (char *)string, nmatch, pmatch, eflags)); + return(mmatcher(g, string, nmatch, pmatch, eflags)); else if (g->nstates <= CHAR_BIT*sizeof(states1) && !(eflags®_LARGE)) - return(smatcher(g, (char *)string, nmatch, pmatch, eflags)); + return(smatcher(g, string, nmatch, pmatch, eflags)); else - return(lmatcher(g, (char *)string, nmatch, pmatch, eflags)); + return(lmatcher(g, string, nmatch, pmatch, eflags)); } diff --git a/winsup/cygwin/regex/regfree.c b/winsup/cygwin/regex/regfree.c index aa795fa783..859c2a4b37 100644 --- a/winsup/cygwin/regex/regfree.c +++ b/winsup/cygwin/regex/regfree.c @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -37,7 +39,7 @@ static char sccsid[] = "@(#)regfree.c 8.3 (Berkeley) 3/20/94"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/regex/regfree.c,v 1.8 2007/06/11 03:05:54 delphij Exp $"); +__FBSDID("$FreeBSD$"); #include <sys/types.h> #include <stdio.h> @@ -58,7 +60,7 @@ void regfree(regex_t *preg) { struct re_guts *g; - int i; + unsigned int i; if (preg->re_magic != MAGIC1) /* oops */ return; /* nice to complain, but hard */ diff --git a/winsup/cygwin/regex/utils.h b/winsup/cygwin/regex/utils.h index 2a2ed9694d..72f2286a02 100644 --- a/winsup/cygwin/regex/utils.h +++ b/winsup/cygwin/regex/utils.h @@ -1,4 +1,6 @@ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1992, 1993, 1994 Henry Spencer. * Copyright (c) 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,13 +33,15 @@ * SUCH DAMAGE. * * @(#)utils.h 8.3 (Berkeley) 3/20/94 - * $FreeBSD: src/lib/libc/regex/utils.h,v 1.3 2007/01/09 00:28:04 imp Exp $ + * $FreeBSD$ */ /* utility definitions */ #define DUPMAX _POSIX2_RE_DUP_MAX /* xxx is this right? */ #define INFINITY (DUPMAX + 1) -#define NC (CHAR_MAX - CHAR_MIN + 1) + +#define NC_MAX (CHAR_MAX - CHAR_MIN + 1) +#define NC ((MB_CUR_MAX) == 1 ? (NC_MAX) : (128)) typedef unsigned char uch; /* switch off assertions (if not already off) if no REDEBUG */ From 988c304ec253958759658d0bf5d03a36e6971b94 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 11:20:11 +0100 Subject: [PATCH 242/767] Cygwin: regex: fix build errors Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/regcomp.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 6b7ddf5d0b..7e9f5a50f2 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include "collate.h" #endif +#include "winsup.h" #include "utils.h" #include "regex2.h" @@ -932,7 +933,7 @@ p_simp_re(struct parse *p, struct branchc *bc) * appears otherwise. */ (void)REQUIRE(bc->nchain == 0, REG_BADRPT); - /* FALLTHROUGH */ + fallthrough; default: if (p->error != 0) return (false); /* Definitely not $... */ @@ -1170,13 +1171,13 @@ p_b_pseudoclass(struct parse *p, char c) { switch (c) { case 'W': cs->invert = 1; - /* PASSTHROUGH */ + fallthrough; case 'w': p_b_cclass_named(p, cs, "alnum"); break; case 'S': cs->invert = 1; - /* PASSTHROUGH */ + fallthrough; case 's': p_b_cclass_named(p, cs, "space"); break; @@ -1854,7 +1855,7 @@ findmust(struct parse *p, struct re_guts *g) * UTF-8 (see RFC 3629). */ if (MB_CUR_MAX > 1 && - strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0) + strcmp(__current_locale_charset (), "UTF-8") != 0) return; /* find the longest OCHAR sequence in strip */ @@ -1893,7 +1894,7 @@ findmust(struct parse *p, struct re_guts *g) return; } } while (OP(s) != (sop)O_QUEST && OP(s) != (sop)O_CH); - /* FALLTHROUGH */ + fallthrough; case OBOW: /* things that break a sequence */ case OEOW: case OBOL: From 585e7f9891d68cf14a5fdce70e1f1c613c98bb94 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 11:52:21 +0100 Subject: [PATCH 243/767] Cygwin: regex: convert wchar_t to wint_t throughout ...and use __wcollate_range_cmp. This will have to be tweaked further when supporting collation symbols... Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/engine.c | 2 +- winsup/cygwin/regex/regcomp.c | 30 ++++++++++++++++++------------ winsup/cygwin/regex/regexec.c | 4 ++-- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/winsup/cygwin/regex/engine.c b/winsup/cygwin/regex/engine.c index bb40018c07..77e7007bb1 100644 --- a/winsup/cygwin/regex/engine.c +++ b/winsup/cygwin/regex/engine.c @@ -170,7 +170,7 @@ stepback(const char *start, const char *cur, int nchar) if ((ret - mbc) < start) return (NULL); memset(&mbs, 0, sizeof(mbs)); - clen = mbrtowc(NULL, ret - mbc, mbc, &mbs); + clen = mbrtowi(NULL, ret - mbc, mbc, &mbs); if (clen != (size_t)-1 && clen != (size_t)-2) break; } diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 7e9f5a50f2..3c73593104 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -57,7 +57,13 @@ __FBSDID("$FreeBSD$"); #include <wchar.h> #include <wctype.h> -#ifndef LIBREGEX +/* We want the extensions implemented with LIBREGEX... */ +#ifdef __CYGWIN__ +#define LIBREGEX +#endif + +/* ...but we also want to use the collation functions from nlsfuncs.cc. */ +#if 1//ndef LIBREGEX #include "collate.h" #endif @@ -131,7 +137,7 @@ static void p_re(struct parse *p, int end1, int end2); static bool p_simp_re(struct parse *p, struct branchc *bc); static int p_count(struct parse *p); static void p_bracket(struct parse *p); -static int p_range_cmp(wchar_t c1, wchar_t c2); +static int p_range_cmp(wint_t c1, wint_t c2); static void p_b_term(struct parse *p, cset *cs); static int p_b_pseudoclass(struct parse *p, char c); static void p_b_cclass(struct parse *p, cset *cs); @@ -1058,13 +1064,13 @@ p_bracket(struct parse *p) } static int -p_range_cmp(wchar_t c1, wchar_t c2) +p_range_cmp(wint_t c1, wint_t c2) { -#ifndef LIBREGEX +#if 1//ndef LIBREGEX return __wcollate_range_cmp(c1, c2); #else /* Copied from libc/collate __wcollate_range_cmp */ - wchar_t s1[2], s2[2]; + wint_t s1[2], s2[2]; s1[0] = c1; s1[1] = L'\0'; @@ -1272,7 +1278,7 @@ p_b_coll_elem(struct parse *p, const char *sp = p->next; struct cname *cp; mbstate_t mbs; - wchar_t wc; + wint_t wc; size_t clen, len; while (MORE() && !SEETWO(endc, ']')) @@ -1286,7 +1292,7 @@ p_b_coll_elem(struct parse *p, if (strncmp(cp->name, sp, len) == 0 && strlen(cp->name) == len) return(cp->code); /* known name */ memset(&mbs, 0, sizeof(mbs)); - if ((clen = mbrtowc(&wc, sp, len, &mbs)) == len) + if ((clen = mbrtowi(&wc, sp, len, &mbs)) == len) return (wc); /* single character */ else if (clen == (size_t)-1 || clen == (size_t)-2) SETERROR(REG_ILLSEQ); @@ -1378,7 +1384,7 @@ bothcases(struct parse *p, wint_t ch) assert(othercase(ch) != ch); /* p_bracket() would recurse */ p->next = bracket; memset(&mbs, 0, sizeof(mbs)); - n = wcrtomb(bracket, ch, &mbs); + n = wirtomb(bracket, ch, &mbs); assert(n != (size_t)-1); bracket[n] = ']'; bracket[n + 1] = '\0'; @@ -1519,11 +1525,11 @@ static wint_t wgetnext(struct parse *p) { mbstate_t mbs; - wchar_t wc; + wint_t wc; size_t n; memset(&mbs, 0, sizeof(mbs)); - n = mbrtowc(&wc, p->next, p->end - p->next, &mbs); + n = mbrtowi(&wc, p->next, p->end - p->next, &mbs); if (n == (size_t)-1 || n == (size_t)-2) { SETERROR(REG_ILLSEQ); return (0); @@ -1871,7 +1877,7 @@ findmust(struct parse *p, struct re_guts *g) memset(&mbs, 0, sizeof(mbs)); newstart = scan - 1; } - clen = wcrtomb(buf, OPND(s), &mbs); + clen = wirtomb(buf, OPND(s), &mbs); if (clen == (size_t)-1) goto toohard; newlen += clen; @@ -1994,7 +2000,7 @@ findmust(struct parse *p, struct re_guts *g) while (cp < g->must + g->mlen) { while (OP(s = *scan++) != OCHAR) continue; - clen = wcrtomb(cp, OPND(s), &mbs); + clen = wirtomb(cp, OPND(s), &mbs); assert(clen != (size_t)-1); cp += clen; } diff --git a/winsup/cygwin/regex/regexec.c b/winsup/cygwin/regex/regexec.c index d7aa46f45b..52d365a481 100644 --- a/winsup/cygwin/regex/regexec.c +++ b/winsup/cygwin/regex/regexec.c @@ -67,9 +67,9 @@ static __inline size_t xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy) { size_t nr; - wchar_t wc; + wint_t wc; - nr = mbrtowc(&wc, s, n, mbs); + nr = mbrtowi(&wc, s, n, mbs); if (wi != NULL) *wi = wc; if (nr == 0) From 0bdc764b421b56ac2961ce54f538d4a71f38b724 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 12:44:32 +0100 Subject: [PATCH 244/767] Cygwin: regex: wgetnext: Re-add kludge to be more glibc compatible Add comment to explain. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/regcomp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 3c73593104..59da896a90 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -1528,6 +1528,18 @@ wgetnext(struct parse *p) wint_t wc; size_t n; +#ifdef __CYGWIN__ + /* Kludge for more glibc compatibility. On Cygwin as well as on + Linux, mbrtowc returns -1 if the current local's codeset is ASCII + and the character is >= 0x80. Nevertheless, glibc's regcomp allows + any char value, even stuff like [\xc0-\xff], if the locale's codeset + is ASCII, so in regcomp it ignores the fact that chars >= 0x80 are + invalid ASCII chars. To be more Linux-compatible, we align the + behaviour to glibc here. Allow any character value if the current + local's codeset is ASCII. */ + if (*__current_locale_charset () == 'A') /* SCII */ + return (wint_t) (unsigned char) *p->next++; +#endif memset(&mbs, 0, sizeof(mbs)); n = mbrtowi(&wc, p->next, p->end - p->next, &mbs); if (n == (size_t)-1 || n == (size_t)-2) { From 2285cf0d1ccd783cedc46463fe5c7cc55c6e29a4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 13:47:07 +0100 Subject: [PATCH 245/767] Cygwin: regex: NONCHAR: re-add cast to int wint_t is unsigned int and the test checks for a negative value. Thus, it's optimized out by gcc. Add the cast from commit 44caccfca2433 to avoid this. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/engine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/regex/engine.c b/winsup/cygwin/regex/engine.c index 77e7007bb1..5e12ab7f37 100644 --- a/winsup/cygwin/regex/engine.c +++ b/winsup/cygwin/regex/engine.c @@ -119,7 +119,7 @@ static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_ #define EOW (BOL-5) #define BADCHAR (BOL-6) #define NWBND (BOL-7) -#define NONCHAR(c) ((c) <= OUT) +#define NONCHAR(c) ((int)(c) <= OUT) /* sflags */ #define SBOS 0x0001 #define SEOS 0x0002 From 5da71b6059956a8f20a6be02e82867aa28aa3880 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 18:25:09 +0100 Subject: [PATCH 246/767] Cygwin: add support for GB18030 codeset Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- newlib/libc/locale/locale.c | 15 +++++++++++---- newlib/libc/stdlib/local.h | 2 ++ winsup/cygwin/fhandler/proc.cc | 1 + winsup/cygwin/nlsfuncs.cc | 4 ++-- winsup/cygwin/release/3.5.0 | 2 ++ winsup/cygwin/strfuncs.cc | 16 +++++++++++++++- winsup/doc/new-features.xml | 4 ++++ 7 files changed, 37 insertions(+), 7 deletions(-) diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index e58ba3dbef..3772106e3c 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -65,8 +65,8 @@ build with multibyte support and support for all ISO and Windows Codepage. Otherwise all singlebyte charsets are simply mapped to ASCII. Right now, only newlib for Cygwin is built with full charset support by default. Under Cygwin, this implementation additionally supports the charsets -<<"GBK">>, <<"GB2312">>, <<"eucCN">>, <<"eucKR">>, and <<"Big5">>. Cygwin -does not support <<"JIS">>. +<<"GB18030">>, <<"GBK">>, <<"GB2312">>, <<"eucCN">>, <<"eucKR">>, and +<<"Big5">>. Cygwin does not support <<"JIS">>. Cygwin additionally supports locales from the file /usr/share/locale/locale.alias. @@ -657,7 +657,7 @@ __loadlocale (struct __locale_t *loc, int category, char *new_locale) } #ifdef __CYGWIN__ /* Newlib does neither provide EUC-KR nor EUC-CN, and Cygwin's - implementation requires Windows support. */ + implementation requires Windows support. */ else if (!strcasecmp (c, "KR")) { strcpy (charset, "EUCKR"); @@ -817,12 +817,19 @@ __loadlocale (struct __locale_t *loc, int category, char *new_locale) requires Windows support. */ if (!strcasecmp (charset, "GBK") || !strcasecmp (charset, "GB2312")) - { + { strcpy (charset, charset[2] == '2' ? "GB2312" : "GBK"); mbc_max = 2; l_wctomb = __gbk_wctomb; l_mbtowc = __gbk_mbtowc; } + else if (!strcasecmp (charset, "GB18030")) + { + strcpy (charset, "GB18030"); + mbc_max = 4; + l_wctomb = __gb18030_wctomb; + l_mbtowc = __gb18030_mbtowc; + } else #endif /* __CYGWIN__ */ /* GEORGIAN-PS and the alias without dash */ diff --git a/newlib/libc/stdlib/local.h b/newlib/libc/stdlib/local.h index a96ed2cc4d..26fd4f05dc 100644 --- a/newlib/libc/stdlib/local.h +++ b/newlib/libc/stdlib/local.h @@ -24,6 +24,7 @@ wctomb_p __iso_wctomb (int val); wctomb_p __cp_wctomb (int val); #ifdef __CYGWIN__ wctomb_f __gbk_wctomb; +wctomb_f __gb18030_wctomb; wctomb_f __kr_wctomb; wctomb_f __big5_wctomb; #endif @@ -45,6 +46,7 @@ mbtowc_p __iso_mbtowc (int val); mbtowc_p __cp_mbtowc (int val); #ifdef __CYGWIN__ mbtowc_f __gbk_mbtowc; +mbtowc_f __gb18030_mbtowc; mbtowc_f __kr_mbtowc; mbtowc_f __big5_mbtowc; #endif diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index bb32d64986..d5e3c60fcf 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2323,6 +2323,7 @@ format_proc_codesets (void *, char *&destbuf) "EUC-CN\n" "EUC-JP\n" "EUC-KR\n" + "GB18030\n" "GB2312\n" "GBK\n" "GEORGIAN-PS\n" diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 95e291a283..808bf6a873 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1578,8 +1578,8 @@ __eval_codepage_from_internal_charset () break; } break; - case 'G': /* GBK/GB2312 */ - codepage = 936; + case 'G': /* GBK/GB2312/GB18030 */ + codepage = (charset[2] == '1') ? 54936 : 936; break; case 'I': /* ISO-8859-x */ codepage = strtoul (charset + 9, NULL, 10) + 28590; diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index d6b24e5f99..4123b8d325 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -21,3 +21,5 @@ What's new: supported codesets and locales for all interested parties. Locale(1) opens these files and uses the info for printing locale info like any other process could do. + +- Add support for GB18030 codeset. diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 9324e15531..57abf25649 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -245,7 +245,8 @@ mbsnrtowci(wint_t *dst, const char **src, size_t nms, size_t len, mbstate_t *ps) eucJP, the both most used Japanese charset encodings, this shouldn't be such a big problem. */ -/* GBK, eucKR, and Big5 conversions are not available so far in newlib. */ +/* GBK, GB18030, eucKR, and Big5 conversions are not available so far + in newlib. */ static int __db_wctomb (struct _reent *r, char *s, wchar_t wchar, UINT cp) @@ -325,6 +326,12 @@ __gbk_wctomb (struct _reent *r, char *s, wchar_t wchar, mbstate_t *state) return __db_wctomb (r,s, wchar, 936); } +extern "C" int +__gb18030_wctomb (struct _reent *r, char *s, wchar_t wchar, mbstate_t *state) +{ + return __db_wctomb (r,s, wchar, 54936); +} + extern "C" int __kr_wctomb (struct _reent *r, char *s, wchar_t wchar, mbstate_t *state) { @@ -482,6 +489,13 @@ __gbk_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, return __db_mbtowc (r, pwc, s, n, 936, state); } +extern "C" int +__gb18030_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, + mbstate_t *state) +{ + return __db_mbtowc (r, pwc, s, n, 54936, state); +} + extern "C" int __kr_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 0858b01e5c..a958f16002 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -41,6 +41,10 @@ files and uses the info for printing locale info like any other process could do. </para></listitem> +<listitem><para> +Add support for GB18030 codeset. +</para></listitem> + </itemizedlist> </sect2> From fcccdc4021ffbe86c5ea6bb3b5c64b95c98f4ed4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Mar 2023 12:22:07 +0100 Subject: [PATCH 247/767] Cygwin: fs_info: update filesystem flags and check Windows 7 flags Update the list of filesystem flags to the flags supported since Windows 7. Make sure to use the new flags only with Windows filesystems, not with 3rd party filesystems. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/local_includes/winlean.h | 23 ++++++++++ winsup/cygwin/mount.cc | 60 ++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/local_includes/winlean.h b/winsup/cygwin/local_includes/winlean.h index 9b30b6557c..113b2c6b0d 100644 --- a/winsup/cygwin/local_includes/winlean.h +++ b/winsup/cygwin/local_includes/winlean.h @@ -74,6 +74,29 @@ details. */ #undef CRITICAL #endif +/* Filesystem flags not yet supported by Mingw-w64 headers. */ +#ifndef FILE_RETURNS_CLEANUP_RESULT_INFO +#define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200 +#endif +#ifndef FILE_SUPPORTS_POSIX_UNLINK_RENAME +#define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400 +#endif +#ifndef FILE_SUPPORTS_INTEGRITY_STREAMS +#define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000 +#endif +#ifndef FILE_SUPPORTS_BLOCK_REFCOUNTING +#define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000 +#endif +#ifndef FILE_SUPPORTS_SPARSE_VDL +#define FILE_SUPPORTS_SPARSE_VDL 0x10000000 +#endif +#ifndef FILE_DAX_VOLUME +#define FILE_DAX_VOLUME 0x20000000 +#endif +#ifndef FILE_SUPPORTS_GHOSTING +#define FILE_SUPPORTS_GHOSTING 0x40000000 +#endif + /* So-called "Microsoft Account" SIDs (S-1-11-...) have a netbios domain name "MicrosoftAccounts". The new "Application Container SIDs" (S-1-15-...) have a netbios domain name "APPLICATION PACKAGE AUTHORITY" diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index b44d60e1e3..627d120059 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -319,12 +319,49 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) to Windows 11. The important point here is to test only flags indicating capabilities and to ignore flags indicating a specific state of this volume. At present these flags to ignore are FILE_VOLUME_IS_COMPRESSED, - FILE_READ_ONLY_VOLUME, and FILE_SEQUENTIAL_WRITE_ONCE. The additional - filesystem flags supported since Windows 7 are also ignored for now. - They add information only for filesystems also supporting these flags, - right now only NTFS. */ -#define GETVOLINFO_VALID_MASK (0x002701ffUL) + FILE_READ_ONLY_VOLUME, FILE_SEQUENTIAL_WRITE_ONCE and FILE_DAX_VOLUME. */ +#define GETVOLINFO_VALID_MASK (FILE_CASE_SENSITIVE_SEARCH \ + | FILE_CASE_PRESERVED_NAMES \ + | FILE_UNICODE_ON_DISK \ + | FILE_PERSISTENT_ACLS \ + | FILE_FILE_COMPRESSION \ + | FILE_VOLUME_QUOTAS \ + | FILE_SUPPORTS_SPARSE_FILES \ + | FILE_SUPPORTS_REPARSE_POINTS \ + | FILE_SUPPORTS_REMOTE_STORAGE \ + | FILE_RETURNS_CLEANUP_RESULT_INFO \ + | FILE_SUPPORTS_POSIX_UNLINK_RENAME \ + | FILE_SUPPORTS_OBJECT_IDS \ + | FILE_SUPPORTS_ENCRYPTION \ + | FILE_NAMED_STREAMS \ + | FILE_SUPPORTS_TRANSACTIONS \ + | FILE_SUPPORTS_HARD_LINKS \ + | FILE_SUPPORTS_EXTENDED_ATTRIBUTES \ + | FILE_SUPPORTS_OPEN_BY_FILE_ID \ + | FILE_SUPPORTS_USN_JOURNAL \ + | FILE_SUPPORTS_INTEGRITY_STREAMS \ + | FILE_SUPPORTS_BLOCK_REFCOUNTING \ + | FILE_SUPPORTS_SPARSE_VDL \ + | FILE_SUPPORTS_GHOSTING) +/* This is the pre-Win7 mask used to recognize 3rd-party drivers. We'll never + learn in time when those drivers start to support the new (har har) Win7 FS + flags. */ +#define GETVOLINFO_NON_WIN_MASK (FILE_CASE_SENSITIVE_SEARCH \ + | FILE_CASE_PRESERVED_NAMES \ + | FILE_UNICODE_ON_DISK \ + | FILE_PERSISTENT_ACLS \ + | FILE_FILE_COMPRESSION \ + | FILE_VOLUME_QUOTAS \ + | FILE_SUPPORTS_SPARSE_FILES \ + | FILE_SUPPORTS_REPARSE_POINTS \ + | FILE_SUPPORTS_REMOTE_STORAGE \ + | FILE_SUPPORTS_OBJECT_IDS \ + | FILE_SUPPORTS_ENCRYPTION \ + | FILE_NAMED_STREAMS \ + | FILE_SUPPORTS_TRANSACTIONS) + #define TEST_GVI(f,m) (((f) & GETVOLINFO_VALID_MASK) == (m)) +#define TEST_GVI_NON_WIN(f,m) (((f) & GETVOLINFO_NON_WIN_MASK) == (m)) /* FIXME: This flag twist is getting awkward. There should really be some other method. Maybe we need mount flags to allow the user to fix file @@ -335,7 +372,7 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) #define SAMBA_IGNORE (FILE_VOLUME_QUOTAS \ | FILE_SUPPORTS_OBJECT_IDS \ | FILE_UNICODE_ON_DISK) -#define FS_IS_SAMBA TEST_GVI(flags () & ~SAMBA_IGNORE, \ +#define FS_IS_SAMBA TEST_GVI_NON_WIN(flags () & ~SAMBA_IGNORE, \ FILE_CASE_SENSITIVE_SEARCH \ | FILE_CASE_PRESERVED_NAMES \ | FILE_PERSISTENT_ACLS) @@ -343,12 +380,12 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) #define NETAPP_IGNORE (FILE_SUPPORTS_SPARSE_FILES \ | FILE_SUPPORTS_REPARSE_POINTS \ | FILE_PERSISTENT_ACLS) -#define FS_IS_NETAPP_DATAONTAP TEST_GVI(flags () & ~NETAPP_IGNORE, \ +#define FS_IS_NETAPP_DATAONTAP TEST_GVI_NON_WIN(flags () & ~NETAPP_IGNORE, \ FILE_CASE_SENSITIVE_SEARCH \ | FILE_CASE_PRESERVED_NAMES \ | FILE_UNICODE_ON_DISK \ | FILE_NAMED_STREAMS) -/* These are the minimal flags supported by NTFS since Windows 2000. Every +/* These are the minimal flags supported by NTFS since Windows 7. Every filesystem not supporting these flags is not a native NTFS. We subsume them under the filesystem type "cifs". */ #define MINIMAL_WIN_NTFS_FLAGS (FILE_CASE_SENSITIVE_SEARCH \ @@ -361,7 +398,12 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) | FILE_SUPPORTS_REPARSE_POINTS \ | FILE_SUPPORTS_OBJECT_IDS \ | FILE_SUPPORTS_ENCRYPTION \ - | FILE_NAMED_STREAMS) + | FILE_NAMED_STREAMS \ + | FILE_SUPPORTS_TRANSACTIONS \ + | FILE_SUPPORTS_HARD_LINKS \ + | FILE_SUPPORTS_EXTENDED_ATTRIBUTES \ + | FILE_SUPPORTS_OPEN_BY_FILE_ID \ + | FILE_SUPPORTS_USN_JOURNAL) #define FS_IS_WINDOWS_NTFS TEST_GVI(flags () & MINIMAL_WIN_NTFS_FLAGS, \ MINIMAL_WIN_NTFS_FLAGS) /* These are the exact flags of a real Windows FAT/FAT32 filesystem. From 271292b1fbdc7da7c1ed678836eebe596170e635 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 20 Mar 2023 12:23:36 +0100 Subject: [PATCH 248/767] Cygwin: unlink: drop unlink_nt/unlink_nt_shareable wrappers Useless indirection. Rename _unlink_nt back to unlink_nt and call the function directly with `sharable' flag as needed. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/disk_file.cc | 4 ++-- winsup/cygwin/forkable.cc | 4 ++-- winsup/cygwin/syscalls.cc | 24 ++++++------------------ 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 8528f7f8d4..19c976aaae 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -1836,7 +1836,7 @@ fhandler_disk_file::mkdir (mode_t mode) int fhandler_disk_file::rmdir () { - extern NTSTATUS unlink_nt (path_conv &pc); + extern NTSTATUS unlink_nt (path_conv &pc, bool sharable); if (!pc.isdir ()) { @@ -1849,7 +1849,7 @@ fhandler_disk_file::rmdir () return -1; } - NTSTATUS status = unlink_nt (pc); + NTSTATUS status = unlink_nt (pc, false); if (!NT_SUCCESS (status)) { diff --git a/winsup/cygwin/forkable.cc b/winsup/cygwin/forkable.cc index fbc30ae302..c69c8bea9e 100644 --- a/winsup/cygwin/forkable.cc +++ b/winsup/cygwin/forkable.cc @@ -29,7 +29,7 @@ details. */ /* Allow concurrent processes to use the same dll or exe * via their hardlink while we delete our hardlink. */ -extern NTSTATUS unlink_nt_shareable (path_conv &pc); +extern NTSTATUS unlink_nt (path_conv &pc, bool sharable); #define MUTEXSEP L"@" #define PATHSEP L"\\" @@ -132,7 +132,7 @@ rmdirs (WCHAR ntmaxpathbuf[NT_MAX_PATH]) RtlInitUnicodeString (&fn, ntmaxpathbuf); path_conv pc (&fn); - unlink_nt_shareable (pc); /* move to bin */ + unlink_nt (pc, true); /* move to bin */ } if (!pfdi->NextEntryOffset) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 8ae0397fb1..af4f870851 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -665,8 +665,8 @@ _unlink_nt_post_dir_check (NTSTATUS status, POBJECT_ATTRIBUTES attr, const path_ return status; } -static NTSTATUS -_unlink_nt (path_conv &pc, bool shareable) +NTSTATUS +unlink_nt (path_conv &pc, bool shareable) { NTSTATUS status; HANDLE fh, fh_ro = NULL; @@ -1062,18 +1062,6 @@ _unlink_nt (path_conv &pc, bool shareable) return status; } -NTSTATUS -unlink_nt (path_conv &pc) -{ - return _unlink_nt (pc, false); -} - -NTSTATUS -unlink_nt_shareable (path_conv &pc) -{ - return _unlink_nt (pc, true); -} - extern "C" int unlink (const char *ourname) { @@ -1113,7 +1101,7 @@ unlink (const char *ourname) goto done; } - status = unlink_nt (win32_name); + status = unlink_nt (win32_name, false); if (NT_SUCCESS (status)) res = 0; else @@ -2504,7 +2492,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) unlink_nt returns with STATUS_DIRECTORY_NOT_EMPTY. */ if (dstpc->isdir ()) { - status = unlink_nt (*dstpc); + status = unlink_nt (*dstpc, false); if (!NT_SUCCESS (status)) { __seterrno_from_nt_status (status); @@ -2645,7 +2633,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) ? FILE_OPEN_REPARSE_POINT : 0)); if (NT_SUCCESS (status)) { - status = unlink_nt (*dstpc); + status = unlink_nt (*dstpc, false); if (NT_SUCCESS (status)) break; } @@ -2665,7 +2653,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) if (NT_SUCCESS (status)) { if (removepc) - unlink_nt (*removepc); + unlink_nt (*removepc, false); res = 0; } else From e914374383a72810bb5d20ad8428843d70df50e1 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 21:52:48 +0100 Subject: [PATCH 249/767] Cygwin: regex: fix freeing g->charjump in low memory condition computejumps() moves g->charjump to a position relativ to the value of CHAR_MIN. As such, g->charjump doesn't necessarily point to the address actually allocated. While regfree() takes that into account, the low memory handling in regcomp_internal() doesn't. Fix that by free'ing the actually allocated address, as in regfree(). Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/regcomp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 59da896a90..418e24a90a 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -336,7 +336,7 @@ regcomp_internal(regex_t * __restrict preg, computejumps(p, g); computematchjumps(p, g); if(g->matchjump == NULL && g->charjump != NULL) { - free(g->charjump); + free(&g->charjump[CHAR_MIN]); g->charjump = NULL; } } From 59241913330c15d25ea569f1309af1c746dc07fa Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Thu, 16 Mar 2023 21:09:53 +0100 Subject: [PATCH 250/767] Cygwin: regex: fix faulty check for valid range expression Except for the "C" or "POSIX" locale, checking for start <= finish is always wrong. Range start must be <= range finish in terms of the locale's collating order. So make sure to call always wcscoll(), even in the "C"/"POSIX" locale, which makes wcscoll equivalent to wcscmp anyway. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/regex/regcomp.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/winsup/cygwin/regex/regcomp.c b/winsup/cygwin/regex/regcomp.c index 418e24a90a..7899ae7fce 100644 --- a/winsup/cygwin/regex/regcomp.c +++ b/winsup/cygwin/regex/regcomp.c @@ -1145,7 +1145,7 @@ p_b_term(struct parse *p, cset *cs) #else if (MB_CUR_MAX > 1) { #endif - (void)REQUIRE(start <= finish, REG_ERANGE); + (void)REQUIRE(p_range_cmp(start, finish) <= 0, REG_ERANGE); CHaddrange(p, cs, start, finish); } else { (void)REQUIRE(p_range_cmp(start, finish) <= 0, REG_ERANGE); @@ -1665,8 +1665,6 @@ CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max) for (; min < NC && min <= max; min++) CHadd(p, cs, min); - if (min >= max) - return; newranges = reallocarray(cs->ranges, cs->nranges + 1, sizeof(*cs->ranges)); if (newranges == NULL) { From 0a962aa2c293aa69afbb3a52790ff14009921fe0 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 21 Mar 2023 18:01:00 +0100 Subject: [PATCH 251/767] Cygwin: fs_info::update: fix NTFS filesystem flags These flags are used to check a remote filesystem. Not all flags supported by a local NTFS are available when checking a remote NTFS. Fix the flag set accordingly, otherwise the remote NTFS will ba handled as CIFS. Fixes: fcccdc4021ff ("Cygwin: fs_info: update filesystem flags and check Windows 7 flags") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/mount.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 627d120059..36ab042a72 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -385,9 +385,10 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) | FILE_CASE_PRESERVED_NAMES \ | FILE_UNICODE_ON_DISK \ | FILE_NAMED_STREAMS) -/* These are the minimal flags supported by NTFS since Windows 7. Every - filesystem not supporting these flags is not a native NTFS. We subsume - them under the filesystem type "cifs". */ +/* These are the minimal flags supported by NTFS since Windows 7, when + checking a remote NTFS filesystem. Every filesystem not supporting these + flags is not a native NTFS. + We subsume them under the filesystem type "cifs". */ #define MINIMAL_WIN_NTFS_FLAGS (FILE_CASE_SENSITIVE_SEARCH \ | FILE_CASE_PRESERVED_NAMES \ | FILE_UNICODE_ON_DISK \ @@ -399,11 +400,8 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) | FILE_SUPPORTS_OBJECT_IDS \ | FILE_SUPPORTS_ENCRYPTION \ | FILE_NAMED_STREAMS \ - | FILE_SUPPORTS_TRANSACTIONS \ | FILE_SUPPORTS_HARD_LINKS \ - | FILE_SUPPORTS_EXTENDED_ATTRIBUTES \ - | FILE_SUPPORTS_OPEN_BY_FILE_ID \ - | FILE_SUPPORTS_USN_JOURNAL) + | FILE_SUPPORTS_EXTENDED_ATTRIBUTES) #define FS_IS_WINDOWS_NTFS TEST_GVI(flags () & MINIMAL_WIN_NTFS_FLAGS, \ MINIMAL_WIN_NTFS_FLAGS) /* These are the exact flags of a real Windows FAT/FAT32 filesystem. From fe2545e9faaf4bf9586f61a7b83d5cb5af501194 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Tue, 21 Mar 2023 18:29:59 +0100 Subject: [PATCH 252/767] Cygwin: don't use unlink/rename POSIX semantics on certain NTFS If a host NTFS is mapped into a Hyper-V isolated container, the OPEN_BY_FILE_ID filesystem flag is missing, just as if that NTFS is a remote drive. However, NtQueryVolumeInformationFile claims the drive is a local drive. We can use this fact to learn that the process is running under Hyper-V, and that the Hyper-V isolated process can't use rename/unlink with POSIX semantics. Strange enough, the POSIX_UNLINK_RENAME filesystem flag is still set... Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/syscalls.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index af4f870851..3e2d42f3aa 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -691,10 +691,12 @@ unlink_nt (path_conv &pc, bool shareable) pc.get_object_attr (attr, sec_none_nih); /* First check if we can use POSIX unlink semantics: W10 1709+, local NTFS. - With POSIX unlink semantics the entire job gets MUCH easier and faster. - Just try to do it and if it fails, it fails. */ + For the OPEN_BY_FILE_ID flag, see MINIMAL_WIN_NTFS_FLAGS comment in + fs_info::update. With POSIX unlink semantics the entire job gets MUCH + easier and faster. Just try to do it and if it fails, it fails. */ if (wincap.has_posix_unlink_semantics () - && !pc.isremote () && pc.fs_is_ntfs ()) + && !pc.isremote () && pc.fs_is_ntfs () + && pc.has_attribute (FILE_SUPPORTS_OPEN_BY_FILE_ID)) { FILE_DISPOSITION_INFORMATION_EX fdie; @@ -2407,10 +2409,12 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) __leave; } - /* POSIX semantics only on local NTFS drives. */ + /* POSIX semantics only on local NTFS drives. For the OPEN_BY_FILE_ID + flag, see MINIMAL_WIN_NTFS_FLAGS comment in fs_info::update. */ use_posix_semantics = wincap.has_posix_rename_semantics () && !oldpc.isremote () - && oldpc.fs_is_ntfs (); + && oldpc.fs_is_ntfs () + && oldpc.has_attribute (FILE_SUPPORTS_OPEN_BY_FILE_ID); /* Opening the file must be part of the transaction. It's not sufficient to call only NtSetInformationFile under the transaction. Therefore we From 527dd1b407e7d74037a19aed6e25aa36578da2f7 Mon Sep 17 00:00:00 2001 From: Yoshinao Muramatsu <ysno@ac.auone-net.jp> Date: Mon, 20 Mar 2023 20:51:00 +0900 Subject: [PATCH 253/767] Cygwin: fix unlink in container Deleting files returns STATUS_INVALID_PARAMETE on a bind mounted file system in hyper-v container with FILE_DISPOSITION_POSIX_SEMANTICS. Therefore fall back to default method. This code is suggested by Johannes Schindelin on github and I change it more simple. Signed-off-by: Yoshinao Muramatsu <ysno@ac.auone-net.jp> --- winsup/cygwin/syscalls.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3e2d42f3aa..4e278808a0 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -733,7 +733,10 @@ unlink_nt (path_conv &pc, bool shareable) /* Trying to delete in-use executables and DLLs using FILE_DISPOSITION_POSIX_SEMANTICS returns STATUS_CANNOT_DELETE. Fall back to the default method. */ - if (status != STATUS_CANNOT_DELETE) + /* Additionaly that returns STATUS_INVALID_PARAMETER + on a bind mounted fs in hyper-v container. Falling back too. */ + if (status != STATUS_CANNOT_DELETE + && status != STATUS_INVALID_PARAMETER) goto out; } From 7666e248dd08ba96c12748fc4781388f57671ae5 Mon Sep 17 00:00:00 2001 From: Yoshinao Muramatsu <ysno@ac.auone-net.jp> Date: Mon, 20 Mar 2023 20:51:01 +0900 Subject: [PATCH 254/767] Cygwin: fix rename in container Renaming files returns STATUS_INVALID_PARAMETE on a bind mounted file system in hyper-v container with FILE_RENAME_POSIX_SEMANTICS. Disable the use_posix_semantics flag and retry. Signed-off-by: Yoshinao Muramatsu <ysno@ac.auone-net.jp> --- winsup/cygwin/syscalls.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 4e278808a0..4843502c68 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -2419,6 +2419,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) && oldpc.fs_is_ntfs () && oldpc.has_attribute (FILE_SUPPORTS_OPEN_BY_FILE_ID); +ignore_posix_semantics_retry: /* Opening the file must be part of the transaction. It's not sufficient to call only NtSetInformationFile under the transaction. Therefore we have to start the transaction here, if necessary. Don't start @@ -2663,6 +2664,15 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) unlink_nt (*removepc, false); res = 0; } + else if (use_posix_semantics && status == STATUS_INVALID_PARAMETER) + { + /* NtSetInformationFile returns STATUS_INVALID_PARAMETER + on a bind mounted file system in hyper-v container + with FILE_RENAME_POSIX_SEMANTICS. + Disable the use_posix semntics flag and retry. */ + use_posix_semantics = 0; + goto ignore_posix_semantics_retry; + } else __seterrno_from_nt_status (status); } From 87ab6c7b26bf3c925183d7e439985db070b03b39 Mon Sep 17 00:00:00 2001 From: Yoshinao Muramatsu <ysno@ac.auone-net.jp> Date: Mon, 20 Mar 2023 20:51:02 +0900 Subject: [PATCH 255/767] Cygwin: log disabling posix semantics Add log when workaround occurs Signed-off-by: Yoshinao Muramatsu <ysno@ac.auone-net.jp> --- winsup/cygwin/syscalls.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 4843502c68..d5b44c3785 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -737,7 +737,11 @@ unlink_nt (path_conv &pc, bool shareable) on a bind mounted fs in hyper-v container. Falling back too. */ if (status != STATUS_CANNOT_DELETE && status != STATUS_INVALID_PARAMETER) - goto out; + { + debug_printf ("NtSetInformationFile returns %y " + "with posix semantics. Disable it and retry.", status); + goto out; + } } /* If the R/O attribute is set, we have to open the file with @@ -2670,6 +2674,8 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) on a bind mounted file system in hyper-v container with FILE_RENAME_POSIX_SEMANTICS. Disable the use_posix semntics flag and retry. */ + debug_printf ("NtSetInformationFile failed with posix semantics. " + "Disable it and retry."); use_posix_semantics = 0; goto ignore_posix_semantics_retry; } From 606373e7d2e7009209ca536ab1c9c3393af61275 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Mar 2023 10:51:31 +0100 Subject: [PATCH 256/767] newlocale: set errno to ENOENT if __loadlocale fails __loadlocale never sets errno, but newlocale is supposed to return ENOENT if the locale isn't valid. Fixes: aefd8b5b518b ("Implement newlocale, freelocale, duplocale, uselocale") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- newlib/libc/locale/newlocale.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/newlib/libc/locale/newlocale.c b/newlib/libc/locale/newlocale.c index 08f29dbcc0..278f78ed24 100644 --- a/newlib/libc/locale/newlocale.c +++ b/newlib/libc/locale/newlocale.c @@ -171,7 +171,10 @@ _newlocale_r (struct _reent *p, int category_mask, const char *locale, continue; /* Otherwise load locale data. */ else if (!__loadlocale (&tmp_locale, i, new_categories[i])) - goto error; + { + p->_errno = ENOENT; + goto error; + } } } /* Allocate new locale_t. */ From 9296f134fb5aa808893d5bbf68b84d6b1edc193b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Mar 2023 11:47:23 +0100 Subject: [PATCH 257/767] Cygwin: /proc/locales: fix sd_IN locale Due to the way locales are evaluated in Windows, we can't ask for the script of the "sd-IN" locale, because Windows only knows the "sd-Deva-IN" locale. So asking for the script of the "sd" locale returns "Arab;", because "sd" is converted to "sd-Arab-PK". Special case "sd-IN" to workaround that issue. Fixes: c42b98bdc665 ("Cygwin: introduce /proc/codesets and /proc/locales") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index d5e3c60fcf..3dc0421a53 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2193,6 +2193,11 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) else return TRUE; } + /* "sd-IN" is no valid Windows locale, only "sd-Deva-IN" is. However, + asking for LOCALE_SSCRIPTS below returns "Arab;" because the first "sd" + locale Windows finds is "sd-Arab-PK", so we have to override this here. */ + else if (!wcscmp (iso639, L"sd") && !wcscmp (iso3166, L"IN")) + strcpy (posix_loc, "sd_IN"); /* In all other cases, we check if the script from the Windows locale is the default locale in that language. If not, we add it as modifier if possible, or skip it */ @@ -2242,8 +2247,10 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) changing the codeset and other stuff. */ if (!wcscmp (iso639, L"be") && !wcscmp (iso3166, L"BY")) stpcpy (modifier, "@latin"); - if (!wcscmp (iso639, L"tt") && !wcscmp (iso3166, L"RU")) + else if (!wcscmp (iso639, L"tt") && !wcscmp (iso3166, L"RU")) stpcpy (modifier, "@iqtelif"); + else if (!wcscmp (iso639, L"sd") && !wcscmp (iso3166, L"IN")) + stpcpy (modifier, "@devanagari"); /* If the base locale is ISO-8859-1 and the locale defines currency as EUR, add a @euro locale. For historical reasons there's also a greek @euro locale, albeit it doesn't change the codeset. */ From 676796498defc0f26eb1c282c716785d20788b6f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Mar 2023 11:50:42 +0100 Subject: [PATCH 258/767] Cygwin: /proc/locales: fix "sr" locales The sr_XY locales are supposed to default to cyrillic, but the code always attached a @cyrillic, same reason as in the previous commit. Special case "sr" further to workaround that issue. Fixes: c42b98bdc665 ("Cygwin: introduce /proc/codesets and /proc/locales") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 3dc0421a53..b74c58a11d 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2178,8 +2178,12 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) } /* Serbian: Windows default is Latin, Linux default is Cyrillic. We want the Linux default and attach @latin otherwise */ - else if (!wcscmp (iso639, L"sr") && !wcscmp (iso15924, L"Latn;")) - stpcpy (modifier, "@latin"); + else if (!wcscmp (iso639, L"sr")) + { + snprintf (posix_loc, sizeof posix_loc, "sr_%.27ls", iso3166); + if (!wcscmp (iso15924, L"Latn;")) + stpcpy (modifier, "@latin"); + } /* Tamazight: no modifier, iso639 is "ber" on Linux. "zgh-Tfng-MA" is equivalent to "ber_MA". */ else if (!wcscmp (iso639, L"zgh")) From c53d0910e611bf4cf61f8f8cb44c6ce70d3e9a05 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Mar 2023 12:42:34 +0100 Subject: [PATCH 259/767] Cygwin: locales: set errno to ENOENT if locale is invalid This allows newlocale to return with a valid errno if the locale is invalid. Fixes: e95a7a795522 ("Cygwin: convert Windows locale handling from LCID to ISO5646 strings") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 808bf6a873..a81dff3966 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -74,7 +74,10 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) if (!wcscmp (locale, L"ber")) wcscpy (locale, L"tzm"); if (ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 0) - return -1; + { + set_errno (ENOENT); + return -1; + } wcpcpy (win_locale, wlocale); return 1; } @@ -114,7 +117,10 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) } if (!wlocale[0] && ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 1) - return -1; + { + set_errno (ENOENT); + return -1; + } /* Check for modifiers changing the script */ const wchar_t *iso15924_script[] = { L"Latn-", L"Cyrl-", L"Deva-", L"Adlm-" }; From 15898b95881b1fa504e671e0bcfd653b242effa8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Mar 2023 12:43:30 +0100 Subject: [PATCH 260/767] Cygwin: locales: drop supporting iso639 strings as valid locales This was incorrect behaviour. The only valid way to support those is by adding them to /usr/share/locale/locale.alias. Fixes: e95a7a795522 ("Cygwin: convert Windows locale handling from LCID to ISO5646 strings") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index a81dff3966..34f25034af 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -69,17 +69,8 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) c = wcschr (locale, '_'); if (!c) { - /* try if the locale can be resolved from the language tag - fix up Linux-only locale first */ - if (!wcscmp (locale, L"ber")) - wcscpy (locale, L"tzm"); - if (ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 0) - { - set_errno (ENOENT); - return -1; - } - wcpcpy (win_locale, wlocale); - return 1; + set_errno (ENOENT); + return -1; } /* Convert to RFC 5646 syntax. */ From b5b67a65f87c518b97dbc74e3d20f4654dfa3f10 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Fri, 24 Mar 2023 12:43:47 +0100 Subject: [PATCH 261/767] Cygwin: locales: implement own method to check locale validity The Windows function ResolveLocaleName is next to useless to convert a partial locale identifier into a full, supported locale identifier. It converts anything which vaguely resembles a locale into some other locale it supports. Bad examples are: "en-XY" gets converted to "en-US", and worse, "ff-BF" gets converted to "ff-Latn-SN", even though "ff-Adlm-BF" exists! To check if a locale is supported, we have to enumerate all valid Windows locales, and return the match, even if the locale in Windows requires a script. Implement resolve_locale_name() as replacement function for ResolveLocaleName. Fixes: e95a7a795522 ("Cygwin: convert Windows locale handling from LCID to ISO5646 strings") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 62 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 34f25034af..6e2681c861 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -39,6 +39,64 @@ details. */ #define has_modifier(x) ((x)[0] && !strcmp (modifier, (x))) +/* ResolveLocaleName does not what we want. It converts anything which + vaguely resembles a locale into some other locale it supports. Bad + examples are: "en-XY" gets converted to "en-US", and worse, "ff-BF" gets + converted to "ff-Latn-SN", even though "ff-Adlm-BF" exists! Useless. + To check if a locale is supported, we have to enumerate all valid + Windows locales, and return the match, even if the locale in Windows + requires a script. */ +struct res_loc_t { + const wchar_t *search_iso639; + const wchar_t *search_iso3166; + wchar_t *resolved_locale; + int res_len; +}; + +static BOOL +resolve_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) +{ + res_loc_t *loc = (res_loc_t *) param; + wchar_t *iso639, *iso639_end; + wchar_t *iso3166; + + iso639 = win_locale; + iso639_end = wcschr (iso639, L'-'); + if (!iso639_end) + return TRUE; + if (wcsncmp (loc->search_iso639, iso639, iso639_end - iso639) != 0) + return TRUE; + iso3166 = ++iso639_end; + /* Territory is all upper case */ + while (!iswupper (iso3166[0]) || !iswupper (iso3166[1])) + { + iso3166 = wcschr (iso3166, L'-'); + if (!iso3166) + return TRUE; + ++iso3166; + } + if (wcsncmp (loc->search_iso3166, iso3166, wcslen (loc->search_iso3166))) + return TRUE; + wcsncat (loc->resolved_locale, win_locale, loc->res_len - 1); + return FALSE; +} + +static int +resolve_locale_name (const wchar_t *search, wchar_t *result, int rlen) +{ + res_loc_t loc; + + loc.search_iso639 = search; + loc.search_iso3166 = wcschr (search, L'-') + 1; + loc.resolved_locale = result; + loc.res_len = rlen; + result[0] = L'\0'; + EnumSystemLocalesEx (resolve_locale_proc, + LOCALE_WINDOWS | LOCALE_SUPPLEMENTAL, + (LPARAM) &loc, NULL); + return wcslen (result); +} + /* Fetch Windows RFC 5646 locale from POSIX locale specifier. Return values: @@ -106,8 +164,10 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) break; } } + /* If resolve_locale_name returns with error, or if it returns a + locale other than the input locale, we don't support this locale. */ if (!wlocale[0] - && ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 1) + && !resolve_locale_name (locale, wlocale, ENCODING_LEN + 1)) { set_errno (ENOENT); return -1; From 7002f7f7c7d15f81444f00b0f606c750a9edfc53 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Mar 2023 22:28:25 +0100 Subject: [PATCH 262/767] Revert "Cygwin: locales: drop supporting iso639 strings as valid locales" This reverts commit 15898b95881b1fa504e671e0bcfd653b242effa8. The idea behind this patch was wrong. Systems are supposed to support iso639-only strings as settings for the locale environment variables, and they are not necessarily available in the /usr/share/locale/locale.alias file. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 6e2681c861..6722dd9dd5 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -127,8 +127,17 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) c = wcschr (locale, '_'); if (!c) { - set_errno (ENOENT); - return -1; + /* try if the locale can be resolved from the language tag + fix up Linux-only locale first */ + if (!wcscmp (locale, L"ber")) + wcscpy (locale, L"tzm"); + if (ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 0) + { + set_errno (ENOENT); + return -1; + } + wcpcpy (win_locale, wlocale); + return 1; } /* Convert to RFC 5646 syntax. */ From a97fbb58e209586f92381e90aaec8fb211287938 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sat, 25 Mar 2023 22:48:00 +0100 Subject: [PATCH 263/767] Cygwin: locales: fix return value check of ResolveLocaleName ResolveLocaleName does not simply return an error value if it can't resolve a locale. Rather, it returns an empty string and the length of this string: 1. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 6722dd9dd5..ee44de03e5 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -131,7 +131,7 @@ __get_rfc5646_from_locale (const char *name, wchar_t *win_locale) fix up Linux-only locale first */ if (!wcscmp (locale, L"ber")) wcscpy (locale, L"tzm"); - if (ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 0) + if (ResolveLocaleName (locale, wlocale, ENCODING_LEN + 1) <= 1) { set_errno (ENOENT); return -1; From 4e578fad7927b074837475ccbff698a20742f78d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Mar 2023 12:50:57 +0200 Subject: [PATCH 264/767] Cygwin: /proc/locales: use modifier when checking default codeset Drop usage of newlocale/nl_langinfo_l/freelocale. Call __set_charset_from_locale instead, and make sure to call it with modifier, if any, otherwise suffer wrong results. Fixes: c42b98bdc665f ("Cygwin: introduce /proc/codesets and /proc/locales") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index b74c58a11d..e0e05f1c17 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2121,8 +2121,8 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) wchar_t currency[9] = { 0 }; char modifier[32] = { 0 }; char posix_loc[32]; - char *codeset; - locale_t loc; + char posix_loc_and_modifier[32]; + char codeset[32]; wchar_t *cp; /* Skip language-only locales, e. g. "en" */ @@ -2236,8 +2236,8 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) wcstombs (modifier + 1, iso15924_postfix, 31); } - loc = newlocale (LC_CTYPE_MASK, posix_loc, (locale_t) 0); - codeset = nl_langinfo_l (CODESET, loc); + stpcpy (stpcpy (posix_loc_and_modifier, posix_loc), modifier); + __set_charset_from_locale (posix_loc_and_modifier, codeset); *bufptr_p = add_locale (*bufptr_p, posix_loc, codeset, false, modifier, win_locale); *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, @@ -2270,12 +2270,13 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) else return TRUE; + stpcpy (stpcpy (posix_loc_and_modifier, posix_loc), modifier); + __set_charset_from_locale (posix_loc_and_modifier, codeset); *bufptr_p = add_locale (*bufptr_p, posix_loc, codeset, false, modifier, win_locale); *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, win_locale); - freelocale (loc); return TRUE; } From 68aea16d3f4081cc2af420afe223573526cfcf83 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Mar 2023 12:52:32 +0200 Subject: [PATCH 265/767] Cygwin: /proc/locales: use ENCODING_LEN to define array sizes Fixes: c42b98bdc665f ("Cygwin: introduce /proc/codesets and /proc/locales") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index e0e05f1c17..961e894736 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2114,15 +2114,15 @@ static BOOL format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) { char **bufptr_p = (char **) param; - wchar_t iso15924_postfix[32] = { 0 }; - wchar_t iso15924[32] = { 0 }; - wchar_t iso3166[32] = { 0 }; - wchar_t iso639[32] = { 0 }; + wchar_t iso15924_postfix[ENCODING_LEN + 1] = { 0 }; + wchar_t iso15924[ENCODING_LEN + 1] = { 0 }; + wchar_t iso3166[ENCODING_LEN + 1] = { 0 }; + wchar_t iso639[ENCODING_LEN + 1] = { 0 }; wchar_t currency[9] = { 0 }; - char modifier[32] = { 0 }; - char posix_loc[32]; - char posix_loc_and_modifier[32]; - char codeset[32]; + char modifier[ENCODING_LEN + 1] = { 0 }; + char posix_loc[ENCODING_LEN + 1]; + char posix_loc_and_modifier[ENCODING_LEN + 1]; + char codeset[ENCODING_LEN + 1]; wchar_t *cp; /* Skip language-only locales, e. g. "en" */ @@ -2207,15 +2207,15 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) add it as modifier if possible, or skip it */ else if (iso15924[0]) { - wchar_t scriptless_win_locale[32]; - wchar_t default_iso15924[32]; + wchar_t scriptless_win_locale[ENCODING_LEN + 1]; + wchar_t default_iso15924[ENCODING_LEN + 1]; wcpcpy (wcpcpy (wcpcpy (scriptless_win_locale, iso639), L"-"), iso3166); if ((GetLocaleInfoEx (scriptless_win_locale, LOCALE_SSCRIPTS, - default_iso15924, 32) + default_iso15924, ENCODING_LEN + 1) || GetLocaleInfoEx (iso639, LOCALE_SSCRIPTS, - default_iso15924, 32)) + default_iso15924, ENCODING_LEN + 1)) && !wcsstr (default_iso15924, iso15924)) { if (!wcscmp (iso15924, L"Latn;")) From c3e7f7609e46383ee7952f6ab3345abfb535d7a4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Mar 2023 13:01:52 +0200 Subject: [PATCH 266/767] Cygwin: locales: fix behaviour for @cjk* and @euro locales @cjknarrow and @cjkwide modifiers are newlib only, so they need some tweaking in __set_charset_from_locale. Fixes: 2483e54be852e ("Cygwin: locale: Set default charset from Linux locale -> codeset mapping") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index ee44de03e5..6821a43c3f 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1528,7 +1528,7 @@ __set_charset_from_locale (const char *loc, char *charset) { wchar_t win_locale[ENCODING_LEN + 1]; char locale[ENCODING_LEN + 1]; - const char *modifier; + char *modifier; char *c; UINT cp; @@ -1537,6 +1537,12 @@ __set_charset_from_locale (const char *loc, char *charset) modifier = strchr (loc, '@'); if ((c = strchr (locale, '.'))) stpcpy (c, modifier ?: ""); + /* Cut out @cjknarrow/@cjkwide modifier, both are newlib specials and + don't affect the codeset. */ + modifier = strchr (locale, '@'); + if (modifier && (!strcmp (modifier + 1, "cjknarrow") + || !strcmp (modifier + 1, "cjkwide"))) + *modifier = '\0'; default_codeset_t srch_dc = { locale, NULL }; default_codeset_t *dc = (default_codeset_t *) From 2d5492453a4aef0b761800cd89fd41b11af6c2d3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Mar 2023 13:06:38 +0200 Subject: [PATCH 267/767] Cygwin: locales: fix behaviour for @euro locales Latest Windows supports more EU locales than GLibc, so some of the @euro locales are not covered by checking the GLibc locale defaults. Those locales have no long history, they are all UTF-8. So just check for @euro in the UTF-8 case and set them to ISO-8859-15. Fixes: 2483e54be852e ("Cygwin: locale: Set default charset from Linux locale -> codeset mapping") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/nlsfuncs.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 6821a43c3f..b097a6e5fa 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1610,9 +1610,17 @@ __set_charset_from_locale (const char *loc, char *charset) cs = "ISO-8859-13"; break; case 1258: - default: cs = "UTF-8"; break; + default: + /* Some (pretty new) EU locales don't exist in GLibc and haven't been + catched above. Check for @euro modifier again and make these locales + always use ISO-8859-15. */ + if (modifier && !strcmp (modifier + 1, "euro")) + cs = "ISO-8859-15"; + else + cs = "UTF-8"; + break; } stpcpy (charset, cs); } From 80cea279426fbb03f4954bb8be88fb1a2b5e320b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Sun, 26 Mar 2023 14:12:13 +0200 Subject: [PATCH 268/767] Cygwin: /proc/locales: filter out useless explicit utf8 locales Fixes: c42b98bdc665f ("Cygwin: introduce /proc/codesets and /proc/locales") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/fhandler/proc.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 961e894736..0e60c519ef 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2240,8 +2240,9 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) __set_charset_from_locale (posix_loc_and_modifier, codeset); *bufptr_p = add_locale (*bufptr_p, posix_loc, codeset, false, modifier, win_locale); - *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, - win_locale); + if (strcmp (codeset, "UTF-8") != 0) + *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, + win_locale); /* Only one cross each */ if (modifier[0]) @@ -2274,8 +2275,9 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) __set_charset_from_locale (posix_loc_and_modifier, codeset); *bufptr_p = add_locale (*bufptr_p, posix_loc, codeset, false, modifier, win_locale); - *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, - win_locale); + if (strcmp (codeset, "UTF-8") != 0 && strcmp (modifier, "@euro") != 0) + *bufptr_p = add_locale (*bufptr_p, posix_loc, "UTF-8", true, modifier, + win_locale); return TRUE; } From fc6e89c937c1bcdf2b0efc6806e29960c448b756 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 27 Mar 2023 20:39:26 +0200 Subject: [PATCH 269/767] Cygwin: chattr: clarify requirements for casesensitive directories - Windows 10 requires WSL - Windows 11 only allows enabling casesensitivity if dir is empty Fixes: 0d4b39d37b966 ("Cygwin: Add lsattr and chattr tools") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/doc/utils.xml | 5 +++-- winsup/utils/chattr.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 522df85b4e..a90db5e665 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -89,8 +89,9 @@ content indexing service 'e', 'Encrypted': file is encrypted 'C', 'Casesensitive': directory is handled case sensitive - (Windows 10 1803 or later, local NTFS only, - WSL must be installed) + - local NTFS only + - Windows 10 1803 or later: requires installed WSL + - Windows 11: enabling requires empty dir </screen> </refsect1> </refentry> diff --git a/winsup/utils/chattr.c b/winsup/utils/chattr.c index e3ab1fba80..2438d79b48 100644 --- a/winsup/utils/chattr.c +++ b/winsup/utils/chattr.c @@ -265,8 +265,9 @@ usage (FILE *stream) " content indexing service\n" " 'e', 'Encrypted': file is encrypted\n" " 'C', 'Casesensitive': directory is handled case sensitive\n" - " (Windows 10 1803 or later, local NTFS only,\n" - " WSL must be installed)\n"); + " - local NTFS only\n" + " - Windows 10 1803 or later: requires installed WSL\n" + " - Windows 11: enabling requires empty dir\n"); exit (stream == stdout ? 0 : 1); } From 27376c60a9b870e7ba456551165897a7408b5886 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin <johannes.schindelin@gmx.de> Date: Tue, 28 Mar 2023 10:17:14 +0200 Subject: [PATCH 270/767] Allow deriving the current user's home directory via the HOME variable This patch hails from Git for Windows (where the Cygwin runtime is used in the form of a slightly modified MSYS2 runtime), where it is a well-established technique to let the `$HOME` variable define where the current user's home directory is, falling back to `$HOMEDRIVE$HOMEPATH` and `$USERPROFILE`. The idea is that we want to share user-specific settings between programs, whether they be Cygwin, MSYS2 or not. Unfortunately, we cannot blindly activate the "db_home: windows" setting because in some setups, the user's home directory is set to a hidden directory via an UNC path (\\share\some\hidden\folder$) -- something many programs cannot handle correctly, e.g. `cmd.exe` and other native Windows applications that users want to employ as Git helpers. The established technique is to allow setting the user's home directory via the environment variables mentioned above: `$HOMEDRIVE$HOMEPATH` or `$USERPROFILE`. This has the additional advantage that it is much faster than querying the Windows user database. Of course this scheme needs to be opt-in. For that reason, it needs to be activated explicitly via `db_home: env` in `/etc/nsswitch.conf`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- winsup/cygwin/local_includes/cygheap.h | 3 +- winsup/cygwin/uinfo.cc | 51 ++++++++++++++++++++++++++ winsup/doc/ntsec.xml | 22 +++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/local_includes/cygheap.h b/winsup/cygwin/local_includes/cygheap.h index d885ca1230..b6acdf7f18 100644 --- a/winsup/cygwin/local_includes/cygheap.h +++ b/winsup/cygwin/local_includes/cygheap.h @@ -358,7 +358,8 @@ class cygheap_pwdgrp NSS_SCHEME_UNIX, NSS_SCHEME_DESC, NSS_SCHEME_PATH, - NSS_SCHEME_FREEATTR + NSS_SCHEME_FREEATTR, + NSS_SCHEME_ENV }; struct nss_scheme_t { nss_scheme_method method; diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 30df6db6d8..baa670478d 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -733,6 +733,8 @@ cygheap_pwdgrp::nss_init_line (const char *line) scheme[idx].method = NSS_SCHEME_UNIX; else if (NSS_CMP ("desc")) scheme[idx].method = NSS_SCHEME_DESC; + else if (NSS_CMP ("env")) + scheme[idx].method = NSS_SCHEME_ENV; else if (NSS_NCMP ("/")) { const char *e = c + strcspn (c, " \t"); @@ -921,6 +923,42 @@ fetch_from_path (cyg_ldap *pldap, PUSER_INFO_3 ui, cygpsid &sid, PCWSTR str, return ret; } +static char * +fetch_home_env (void) +{ + /* If `HOME` is set, prefer it */ + const char *home = getenv ("HOME"); + if (home) + return strdup (home); + + /* If `HOME` is unset, fall back to `HOMEDRIVE``HOMEPATH` + (without a directory separator, as `HOMEPATH` starts with one). */ + const char *home_drive = getenv ("HOMEDRIVE"); + if (home_drive) + { + const char *home_path = getenv ("HOMEPATH"); + if (home_path) + { + tmp_pathbuf tp; + char *p = tp.c_get (), *q; + + // concatenate HOMEDRIVE and HOMEPATH + q = stpncpy (p, home_drive, NT_MAX_PATH); + strlcpy (q, home_path, NT_MAX_PATH - (q - p)); + return (char *) cygwin_create_path (CCP_WIN_A_TO_POSIX, p); + } + } + + /* If neither `HOME` nor `HOMEDRIVE``HOMEPATH` are set, fall back + to `USERPROFILE`; In corporate setups, this might point to a + disconnected network share, hence this is the last fall back. */ + home = getenv ("USERPROFILE"); + if (home) + return (char *) cygwin_create_path (CCP_WIN_A_TO_POSIX, home); + + return NULL; +} + char * cygheap_pwdgrp::get_home (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, PCWSTR dnsdomain, PCWSTR name, bool full_qualified) @@ -980,6 +1018,10 @@ cygheap_pwdgrp::get_home (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, } } break; + case NSS_SCHEME_ENV: + if (RtlEqualSid (sid, cygheap->user.sid ())) + home = fetch_home_env (); + break; } } return home; @@ -1012,6 +1054,10 @@ cygheap_pwdgrp::get_home (PUSER_INFO_3 ui, cygpsid &sid, PCWSTR dom, home = fetch_from_path (NULL, ui, sid, home_scheme[idx].attrib, dom, NULL, name, full_qualified); break; + case NSS_SCHEME_ENV: + if (RtlEqualSid (sid, cygheap->user.sid ())) + home = fetch_home_env (); + break; } } return home; @@ -1031,6 +1077,7 @@ cygheap_pwdgrp::get_shell (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, case NSS_SCHEME_FALLBACK: return NULL; case NSS_SCHEME_WINDOWS: + case NSS_SCHEME_ENV: break; case NSS_SCHEME_CYGWIN: if (pldap->fetch_ad_account (sid, false, dnsdomain)) @@ -1095,6 +1142,7 @@ cygheap_pwdgrp::get_shell (PUSER_INFO_3 ui, cygpsid &sid, PCWSTR dom, case NSS_SCHEME_CYGWIN: case NSS_SCHEME_UNIX: case NSS_SCHEME_FREEATTR: + case NSS_SCHEME_ENV: break; case NSS_SCHEME_DESC: if (ui) @@ -1176,6 +1224,8 @@ cygheap_pwdgrp::get_gecos (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, sys_wcstombs_alloc (&gecos, HEAP_NOTHEAP, val); } break; + case NSS_SCHEME_ENV: + break; } } if (gecos) @@ -1202,6 +1252,7 @@ cygheap_pwdgrp::get_gecos (PUSER_INFO_3 ui, cygpsid &sid, PCWSTR dom, case NSS_SCHEME_CYGWIN: case NSS_SCHEME_UNIX: case NSS_SCHEME_FREEATTR: + case NSS_SCHEME_ENV: break; case NSS_SCHEME_DESC: if (ui) diff --git a/winsup/doc/ntsec.xml b/winsup/doc/ntsec.xml index c6871ecf05..1678ff6575 100644 --- a/winsup/doc/ntsec.xml +++ b/winsup/doc/ntsec.xml @@ -1203,6 +1203,17 @@ schemata are the following: See <xref linkend="ntsec-mapping-nsswitch-desc"></xref> for a more detailed description.</listitem> </varlistentry> + <varlistentry> + <term><literal>env</literal></term> + <listitem>Derives the home directory of the current user from the + environment variable <literal>HOME</literal> (falling back to + <literal>HOMEDRIVE\HOMEPATH</literal> and + <literal>USERPROFILE</literal>, in that order). This is faster + than the <term><literal>windows</literal></term> schema at the + expense of determining only the current user's home directory + correctly. This schema is skipped for any other account. + </listitem> + </varlistentry> </variablelist> <para> @@ -1335,6 +1346,17 @@ of each schema when used with <literal>db_home:</literal> See <xref linkend="ntsec-mapping-nsswitch-desc"></xref> for a detailed description.</listitem> </varlistentry> + <varlistentry> + <term><literal>env</literal></term> + <listitem>Derives the home directory of the current user from the + environment variable <literal>HOME</literal> (falling back to + <literal>HOMEDRIVE\HOMEPATH</literal> and + <literal>USERPROFILE</literal>, in that order). This is faster + than the <term><literal>windows</literal></term> schema at the + expense of determining only the current user's home directory + correctly. This schema is skipped for any other account. + </listitem> + </varlistentry> <varlistentry> <term><literal>@ad_attribute</literal></term> <listitem>AD only: The user's home directory is set to the path given From 2898a359b80c18fb0c3d4122b8f40daed49ba11e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 29 Mar 2023 10:18:23 +0200 Subject: [PATCH 271/767] Cygwin: dirname: fix handling of leading slashes Per https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/xbd_chap04.html: "A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash." So more than 2 leading slashes are supposed to be folded into one, which our dirname neglected. Fix that. Fixes: 24e8fc6872a3b ("* cygwin.din (basename): Export.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/cygwin/path.cc | 2 +- winsup/cygwin/release/3.4.7 | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index eaf695b818..582238d150 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -5120,7 +5120,7 @@ dirname (char *path) return strcpy (buf, "."); if (isalpha (path[0]) && path[1] == ':') bs += 2; - else if (strspn (path, "/\\") > 1) + else if (strspn (path, "/\\") == 2) ++bs; c = strrchr (bs, '/'); if ((d = strrchr (c ?: bs, '\\')) > c) diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index a121d81b62..2c305ec5f3 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -6,3 +6,6 @@ Bug Fixes - kill(1): don't print spurious error message. Addresses: https://cygwin.com/pipermail/cygwin/2023-March/253291.html + +- Align behaviour of dirname in terms of leading slashes to POSIX: + https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html From 93b05a87c22ba410e1bac20dddcbcb26956befbc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Wed, 29 Mar 2023 10:34:30 +0200 Subject: [PATCH 272/767] Cygwin: doc: fix description of new "env" schema for /etc/nsswitch.conf Fixes: 27376c60a9b8 ("Allow deriving the current user's home directory via the HOME variable") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/doc/ntsec.xml | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/winsup/doc/ntsec.xml b/winsup/doc/ntsec.xml index 1678ff6575..687789076c 100644 --- a/winsup/doc/ntsec.xml +++ b/winsup/doc/ntsec.xml @@ -1167,7 +1167,7 @@ and on non-AD machines. </para> <para> -Four schemata are predefined, two schemata are variable. The predefined +Five schemata are predefined, two schemata are variable. The predefined schemata are the following: </para> @@ -1205,14 +1205,10 @@ schemata are the following: </varlistentry> <varlistentry> <term><literal>env</literal></term> - <listitem>Derives the home directory of the current user from the - environment variable <literal>HOME</literal> (falling back to - <literal>HOMEDRIVE\HOMEPATH</literal> and - <literal>USERPROFILE</literal>, in that order). This is faster - than the <term><literal>windows</literal></term> schema at the - expense of determining only the current user's home directory - correctly. This schema is skipped for any other account. - </listitem> + <listitem>Utilizes the user's environment. This schema is only supported + for setting the home directory yet. + See <xref linkend="ntsec-mapping-nsswitch-home"></xref> for + the description.</listitem> </varlistentry> </variablelist> @@ -1352,7 +1348,7 @@ of each schema when used with <literal>db_home:</literal> environment variable <literal>HOME</literal> (falling back to <literal>HOMEDRIVE\HOMEPATH</literal> and <literal>USERPROFILE</literal>, in that order). This is faster - than the <term><literal>windows</literal></term> schema at the + than the <literal>windows</literal> schema at the expense of determining only the current user's home directory correctly. This schema is skipped for any other account. </listitem> From 544aa97f860ed97f609cccefee7bdef87bca3f68 Mon Sep 17 00:00:00 2001 From: Tobias Burnus <tobias@codesourcery.com> Date: Thu, 30 Mar 2023 11:09:33 +0200 Subject: [PATCH 273/767] Bump newlib version in the manual to 4.3.0 While commit 9e09d6ed8 (tag: newlib-4.3.0) bumped the newlib version to 4.3.0, this commit updates the version/date in the libc/libm manuals to match. --- newlib/libc/libc.texi | 4 ++-- newlib/libm/libm.texi | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi index 72328e148b..acb6afb5b5 100644 --- a/newlib/libc/libc.texi +++ b/newlib/libc/libc.texi @@ -69,8 +69,8 @@ into another language, under the above conditions for modified versions. @title The Red Hat newlib C Library @subtitle Full Configuration @sp 1 -@subtitle @code{libc} 2.5.0 -@subtitle December 2016 +@subtitle @code{libc} 4.3.0 +@subtitle January 2023 @author {Steve Chamberlain} @author {Roland Pesch} @author {Red Hat Support} diff --git a/newlib/libm/libm.texi b/newlib/libm/libm.texi index 779615d326..d3ca9ae3c4 100644 --- a/newlib/libm/libm.texi +++ b/newlib/libm/libm.texi @@ -46,8 +46,8 @@ into another language, under the above conditions for modified versions. @titlepage @title The Red Hat newlib C Math Library @sp 1 -@subtitle @code{libm} 2.5.0 -@subtitle December 2016 +@subtitle @code{libm} 4.3.0 +@subtitle January 2023 @author {Steve Chamberlain} @author {Roland Pesch} @author {Red Hat Support} From cc8404039f50c36100fbad85a3af22d579d3576a Mon Sep 17 00:00:00 2001 From: Johannes Schindelin <johannes.schindelin@gmx.de> Date: Mon, 3 Apr 2023 16:45:03 +0200 Subject: [PATCH 274/767] Respect `db_home` setting even for SYSTEM/Microsoft accounts We should not blindly set the home directory of the SYSTEM account (or of Microsoft accounts) to `/home/<name>`, especially `/etc/nsswitch.conf` defines `db_home: env`, in which case we want to respect the `HOME` variable. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- winsup/cygwin/uinfo.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index baa670478d..d493d29b3b 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -2234,7 +2234,11 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) it to a well-known group here. */ if (acc_type == SidTypeUser && (sid_sub_auth_count (sid) <= 3 || sid_id_auth (sid) == 11)) - acc_type = SidTypeWellKnownGroup; + { + acc_type = SidTypeWellKnownGroup; + home = cygheap->pg.get_home ((PUSER_INFO_3) NULL, sid, dom, name, + fully_qualified_name); + } switch ((int) acc_type) { case SidTypeUser: From be2749cd4eb6e7ea1b70eaf7cd78f683db21c8ec Mon Sep 17 00:00:00 2001 From: Corinna Vinschen <corinna@vinschen.de> Date: Mon, 3 Apr 2023 22:41:07 +0200 Subject: [PATCH 275/767] Cygwin: chattr: fix description of requirements for casesensitive directories Preconditions of WSL or empty directories dependent on Windows versions was totally screwed up. Drop the description from --help, describe the preconditions for case-sensitive dirs in the man page instead. Fixes: fc6e89c937c1 ("Cygwin: chattr: clarify requirements for casesensitive directories") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> --- winsup/doc/utils.xml | 22 +++++++++++++++++++--- winsup/utils/chattr.c | 5 +---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index a90db5e665..0390db20fd 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -89,11 +89,27 @@ content indexing service 'e', 'Encrypted': file is encrypted 'C', 'Casesensitive': directory is handled case sensitive - - local NTFS only - - Windows 10 1803 or later: requires installed WSL - - Windows 11: enabling requires empty dir </screen> </refsect1> + + <refsect1 id="chattr-Cprec"> + <title>Case-sensitive directories + Case-sensitive directories are supported starting with + Windows 10 1803. They are only supported on local NTFS filesystems. + + The system-wide availability of case-sensitive directories + depends on the setting of the registry value of type DWORD called + HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsEnableDirCaseSensitivity. The value 0 disables case-sensitive directories. + The value 1 enables case-sensitive directories. The value 3 + enables case-sensitive directories, too, with the additional + requirement that a directory can only be set to case-sensitive + if it's empty. No other value is supported. + Removing case-sensitivity on a directory requires that the + directory does not contain files only differing by case. + Trying to access a case-sensitive directory on a remote NTFS leads + to all kinds of weird errors and is therefore + not recommended. + diff --git a/winsup/utils/chattr.c b/winsup/utils/chattr.c index 2438d79b48..4b074133cf 100644 --- a/winsup/utils/chattr.c +++ b/winsup/utils/chattr.c @@ -264,10 +264,7 @@ usage (FILE *stream) " 'n', 'Notindexed': file or directory is not to be indexed by the\n" " content indexing service\n" " 'e', 'Encrypted': file is encrypted\n" - " 'C', 'Casesensitive': directory is handled case sensitive\n" - " - local NTFS only\n" - " - Windows 10 1803 or later: requires installed WSL\n" - " - Windows 11: enabling requires empty dir\n"); + " 'C', 'Casesensitive': directory is handled case sensitive\n"); exit (stream == stdout ? 0 : 1); } From 5a961061de7d70bd3568270185c3189e20958e68 Mon Sep 17 00:00:00 2001 From: Andoni Arregi Date: Wed, 12 Apr 2023 17:34:42 +0200 Subject: [PATCH 276/767] Fix missing sign for overflow/underflow where x is negative and y is large odd integer --- newlib/libm/math/e_pow.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c index 258cca8dd0..f02f76dc06 100644 --- a/newlib/libm/math/e_pow.c +++ b/newlib/libm/math/e_pow.c @@ -107,7 +107,7 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ #endif { double z,ax,z_h,z_l,p_h,p_l; - double y1,t1,t2,r,s,t,u,v,w; + double y1,t1,t2,r,s,sign,t,u,v,w; __int32_t i,j,k,yisint,n; __int32_t hx,hy,ix,iy; __uint32_t lx,ly; @@ -184,23 +184,26 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ return z; } } - + /* (x<0)**(non-int) is NaN */ - /* REDHAT LOCAL: This used to be - if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x); - but ANSI C says a right shift of a signed negative quantity is - implementation defined. */ - if(((((__uint32_t)hx>>31)-1)|yisint)==0) return (x-x)/(x-x); + + n = ((uint32_t)hx >> 31U) - 1U; + if ((n | yisint) == 0) return (x-x)/(x-x); + + sign = one; /* (sign of result -ve**odd) = -1 else = 1 */ + if ((n | (yisint - 1)) == 0) { + sign = -one; /* (-ve)**(odd int) */ + } /* |y| is huge */ if(iy>0x41e00000) { /* if |y| > 2**31 */ - if(iy>0x43f00000){ /* if |y| > 2**64, must o/uflow */ + if(iy>0x43f00000){ /* if |y| > 2**64, must o/uflow and y is an even integer */ if(ix<=0x3fefffff) return (hy<0)? __math_oflow(0):__math_uflow(0); if(ix>=0x3ff00000) return (hy>0)? __math_oflow(0):__math_uflow(0); } /* over/underflow if x is not close to one */ - if(ix<0x3fefffff) return (hy<0)? __math_oflow(0):__math_uflow(0); - if(ix>0x3ff00000) return (hy>0)? __math_oflow(0):__math_uflow(0); + if(ix<0x3fefffff) return (hy<0)? __math_oflow(sign<0):__math_uflow(sign<0); + if(ix>0x3ff00000) return (hy>0)? __math_oflow(sign<0):__math_uflow(sign<0); /* now |1-x| is tiny <= 2**-20, suffice to compute log(x) by x-x^2/2+x^3/3-x^4/4 */ t = ax-1; /* t has 20 trailing zeros */ @@ -260,10 +263,6 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ t2 = z_l-(((t1-t)-dp_h[k])-z_h); } - s = one; /* s (sign of result -ve**odd) = -1 else = 1 */ - if(((((__uint32_t)hx>>31)-1)|(yisint-1))==0) - s = -one;/* (-ve)**(odd int) */ - /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ y1 = y; SET_LOW_WORD(y1,0); @@ -273,15 +272,15 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ EXTRACT_WORDS(j,i,z); if (j>=0x40900000) { /* z >= 1024 */ if(((j-0x40900000)|i)!=0) /* if z > 1024 */ - return __math_oflow(s<0); /* overflow */ + return __math_oflow(sign<0); /* overflow */ else { - if(p_l+ovt>z-p_h) return __math_oflow(s<0); /* overflow */ + if(p_l+ovt>z-p_h) return __math_oflow(sign<0); /* overflow */ } } else if((j&0x7fffffff)>=0x4090cc00 ) { /* z <= -1075 */ if(((j-0xc090cc00)|i)!=0) /* z < -1075 */ - return __math_uflow(s<0); /* underflow */ + return __math_uflow(sign<0); /* underflow */ else { - if(p_l<=z-p_h) return __math_uflow(s<0); /* underflow */ + if(p_l<=z-p_h) return __math_uflow(sign<0); /* underflow */ } } /* @@ -313,7 +312,7 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ j += (n<<20); if((j>>20)<=0) z = scalbn(z,(int)n); /* subnormal output */ else SET_HIGH_WORD(z,j); - return s*z; + return sign*z; } #endif /* defined(_DOUBLE_IS_32BITS) */ From e5a36e6af7c52b70fbc8c11a888220d8579e0275 Mon Sep 17 00:00:00 2001 From: Andoni Arregi Date: Wed, 12 Apr 2023 17:34:43 +0200 Subject: [PATCH 277/767] Fix x close to 1, y between 2^31 and 2^64 E.g. known errors: x = 0x1.000002c5e2e99p+0, y = 0x1.c9eee35374af6p+31 had an error of 639 ULP and is now correctly rounded. x = 0x1.fffffd2e3e669p-1, y = 0x1.344c9823eb66cp+32 had an error of 428 ULP and is now correctly rounded. --- newlib/libm/math/e_pow.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c index f02f76dc06..f24a98f6e0 100644 --- a/newlib/libm/math/e_pow.c +++ b/newlib/libm/math/e_pow.c @@ -196,8 +196,8 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ } /* |y| is huge */ - if(iy>0x41e00000) { /* if |y| > 2**31 */ - if(iy>0x43f00000){ /* if |y| > 2**64, must o/uflow and y is an even integer */ + if(iy>0x42000000) { /* if |y| > ~2**33 (does not regard mantissa) */ + if(iy>0x43f00000){ /* if |y| > ~2**64, must o/uflow and y is an even integer */ if(ix<=0x3fefffff) return (hy<0)? __math_oflow(0):__math_uflow(0); if(ix>=0x3ff00000) return (hy>0)? __math_oflow(0):__math_uflow(0); } From 9e89e667299a1f17572930b45661ce98afca76c8 Mon Sep 17 00:00:00 2001 From: Andoni Arregi Date: Wed, 12 Apr 2023 17:34:44 +0200 Subject: [PATCH 278/767] Compare j as unsigned j is int32_t and thus j<<31 is undefined if j==1. Taken from FreeBSD commit bdd8abc6d6a93ce3ab8ad5db716222ee3110c4a3 --- newlib/libm/math/e_pow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c index f24a98f6e0..0e2251f105 100644 --- a/newlib/libm/math/e_pow.c +++ b/newlib/libm/math/e_pow.c @@ -141,7 +141,7 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ k = (iy>>20)-0x3ff; /* exponent */ if(k>20) { j = ly>>(52-k); - if((j<<(52-k))==ly) yisint = 2-(j&1); + if(((uint32_t)j<<(52-k))==ly) yisint = 2-(j&1); } else if(ly==0) { j = iy>>(20-k); if((j<<(20-k))==iy) yisint = 2-(j&1); From ef75abddc76a914aabbb976dd116e39ab196bd28 Mon Sep 17 00:00:00 2001 From: Andoni Arregi Date: Wed, 12 Apr 2023 17:34:45 +0200 Subject: [PATCH 279/767] Replace always true if with else --- newlib/libm/math/e_pow.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c index 0e2251f105..b217260070 100644 --- a/newlib/libm/math/e_pow.c +++ b/newlib/libm/math/e_pow.c @@ -198,8 +198,11 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ /* |y| is huge */ if(iy>0x42000000) { /* if |y| > ~2**33 (does not regard mantissa) */ if(iy>0x43f00000){ /* if |y| > ~2**64, must o/uflow and y is an even integer */ - if(ix<=0x3fefffff) return (hy<0)? __math_oflow(0):__math_uflow(0); - if(ix>=0x3ff00000) return (hy>0)? __math_oflow(0):__math_uflow(0); + if(ix<=0x3fefffff) { /* |x| < 1 */ + return (hy<0)? __math_oflow(0):__math_uflow(0); + } else { /* |x| >= 1 */ + return (hy>0)? __math_oflow(0):__math_uflow(0); + } } /* over/underflow if x is not close to one */ if(ix<0x3fefffff) return (hy<0)? __math_oflow(sign<0):__math_uflow(sign<0); From e5fcc5837c9594ccb7d0d6f40af69f266f606c5b Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 14 Apr 2023 10:52:08 +0900 Subject: [PATCH 280/767] Cygwin: pty: Fix reading CONIN$ when stdin is not a pty. Previously, the pty master sends inputs to the pipe for cygwin app even when pseudo console is activated if stdin is not the pty. This causes the problem that key input is not sent to non cygwin app even if the app opens CONIN$. This patch sets switch_to_nat_pipe to true regardless whether stdin is the pty or not to allow that case. https://cygwin.com/pipermail/cygwin/2023-April/253424.html Reported-by: Wladislav Artsimovich Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 6 ++++++ winsup/cygwin/release/3.4.7 | 3 +++ 2 files changed, 9 insertions(+) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 664d7dbc63..03c859172b 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -3222,6 +3222,11 @@ fhandler_pty_slave::setup_pseudoconsole () return false; } + /* Set switch_to_nat_pipe regardless whether stdin is the pty or not + so that the non-cygwin app can work when it opens CONIN$. */ + bool switch_to_nat_pipe_orig = get_ttyp ()->switch_to_nat_pipe; + get_ttyp ()->switch_to_nat_pipe = true; + HANDLE hpConIn, hpConOut; if (get_ttyp ()->pcon_activated) { /* The pseudo console is already activated. */ @@ -3499,6 +3504,7 @@ fhandler_pty_slave::setup_pseudoconsole () CloseHandle (tmp); } fallback: + get_ttyp ()->switch_to_nat_pipe = switch_to_nat_pipe_orig; return false; } diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 2c305ec5f3..941519ebc8 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -9,3 +9,6 @@ Bug Fixes - Align behaviour of dirname in terms of leading slashes to POSIX: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html + +- Fix reading CONIN$ in non cygwin apps when stdin is not a pty. + Addresses https://cygwin.com/pipermail/cygwin/2023-April/253424.html From a14a0e542d3aa8e53d189c906205c92ad044f750 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Mon, 17 Apr 2023 21:41:55 -0300 Subject: [PATCH 281/767] Cygwin: cygheap: fix fork error after heap has grown 2f9b8ff0 introduced a problem where forks would sometimes fail with: child_copy: cygheap read copy failed, 0x0..0x80044C750, done 0, windows pid 14032, Win32 error 299 When cygheap_max was > CYGHEAP_STORAGE_INITIAL, commit_size would be set to allocsize(cygheap_max), which is an address, not a size. VirtualAlloc would be called to commit commit_size bytes, which would fail, and then child_copy would be called with zero as the base address. Fixes: 2f9b8ff00cce ("Cygwin: decouple cygheap from Cygwin DLL") Signed-off-by: David McFarland --- winsup/cygwin/mm/cygheap.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index 6a20c159ab..a20ee5972a 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -87,7 +87,8 @@ cygheap_fixup_in_child (bool execed) SIZE_T commit_size = CYGHEAP_STORAGE_INITIAL - CYGHEAP_STORAGE_LOW; if (child_proc_info->cygheap_max > (void *) CYGHEAP_STORAGE_INITIAL) - commit_size = allocsize (child_proc_info->cygheap_max); + commit_size = allocsize ((char *) child_proc_info->cygheap_max + - CYGHEAP_STORAGE_LOW); cygheap = (init_cygheap *) VirtualAlloc ((LPVOID) CYGHEAP_STORAGE_LOW, CYGHEAP_STORAGE_HIGH - CYGHEAP_STORAGE_LOW, From 836d04d98ce96b86f127d82314f61fa855a83bb4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 18 Apr 2023 10:12:03 +0200 Subject: [PATCH 282/767] Cygwin: add release text for previous commit Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.7 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 941519ebc8..1186e57f59 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -12,3 +12,6 @@ Bug Fixes - Fix reading CONIN$ in non cygwin apps when stdin is not a pty. Addresses https://cygwin.com/pipermail/cygwin/2023-April/253424.html + +- Fix bug in cygheap allocation size computation after fork. Addresses: + https://cygwin.com/pipermail/cygwin-developers/2023-April/012620.html From 2fbb06d3cbc035e30e83c358267fbbf7f17c5999 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 18 Apr 2023 13:43:06 +0200 Subject: [PATCH 283/767] Cygwin: fix return value of ilogbl(NaN) Fixes: 792e51b72149 ("Add missing long double functions to Cygwin") Reported-by: Bruno Haible Signed-off-by: Corinna Vinschen --- winsup/cygwin/math/ilogbl.S | 4 ++++ winsup/cygwin/release/3.4.7 | 3 +++ 2 files changed, 7 insertions(+) diff --git a/winsup/cygwin/math/ilogbl.S b/winsup/cygwin/math/ilogbl.S index a4fe503adc..c75a7d0fde 100644 --- a/winsup/cygwin/math/ilogbl.S +++ b/winsup/cygwin/math/ilogbl.S @@ -23,6 +23,8 @@ __MINGW_USYMBOL(ilogbl): andb %ah, %dh cmpb $0x05, %dh je 1f /* Is +-Inf, jump. */ + cmpb $0x01, %dh + je 1f /* Is +-Inf, jump. */ cmpb $0x40, %dh je 2f /* Is +-Inf, jump. */ @@ -53,6 +55,8 @@ __MINGW_USYMBOL(ilogbl): andb %ah, %dh cmpb $0x05, %dh je 1f /* Is +-Inf, jump. */ + cmpb $0x01, %dh + je 1f /* Is +-Inf, jump. */ cmpb $0x40, %dh je 2f /* Is +-Inf, jump. */ diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 1186e57f59..8ecfbc30a2 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -15,3 +15,6 @@ Bug Fixes - Fix bug in cygheap allocation size computation after fork. Addresses: https://cygwin.com/pipermail/cygwin-developers/2023-April/012620.html + +- Fix return value of ilogbl(NaN). + Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253511.html From fa84aa4dd2fb43eaf7fcdfb040aef854f2f19d01 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 18 Apr 2023 13:52:50 +0200 Subject: [PATCH 284/767] Cygwin: fix errno values set by readlinkat readlinkat(fd, "", ...) is supposed to return ENOENT per POSIX, but Cygwin returns EBADF. At the same time, we have to maintain the special feature of glibc that readlinkat(fd, "", ...) operates on fd, if fd is pointing at a symlink opened with O_PATH|O_NOFOLLOW. And, while fixing that, readlinkat(fd, path, ...) *still* has to set errno to EBADF, if fd is an invalid descriptor *and* path is a relative path. This required to change the evaluation order in the helper function gen_full_path_at. Last but not least, in case of the aforementioned glibc-like special handling for symlink descriptors, we have to make sure that errors from gen_full_path_at are not spilled into that special handling. Fixes: 6cc05784e16a ("Cygwin: readlinkat: allow pathname to be empty") Reported-by: Bruno Haible Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.7 | 3 +++ winsup/cygwin/syscalls.cc | 42 +++++++++++++++++++------------------ 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 8ecfbc30a2..7bc7d4a1cc 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -18,3 +18,6 @@ Bug Fixes - Fix return value of ilogbl(NaN). Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253511.html + +- Fix error handling in readlinkat. + Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253510.html diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index d5b44c3785..b109720568 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -4415,19 +4415,6 @@ gen_full_path_at (char *path_ret, int dirfd, const char *pathname, set_errno (EFAULT); return -1; } - if (pathname) - { - if (!*pathname) - { - set_errno (ENOENT); - return -1; - } - if (strlen (pathname) >= PATH_MAX) - { - set_errno (ENAMETOOLONG); - return -1; - } - } if (pathname && isabspath_strict (pathname)) stpcpy (path_ret, pathname); else @@ -4459,6 +4446,16 @@ gen_full_path_at (char *path_ret, int dirfd, const char *pathname, } if (pathname) { + if (!*pathname) + { + set_errno (ENOENT); + return -1; + } + if (strlen (pathname) >= PATH_MAX) + { + set_errno (ENAMETOOLONG); + return -1; + } if (p[-1] != '/') *p++ = '/'; stpcpy (p, pathname); @@ -4803,21 +4800,26 @@ readlinkat (int dirfd, const char *__restrict pathname, char *__restrict buf, __try { char *path = tp.c_get (); + int save_errno = errno; int res = gen_full_path_at (path, dirfd, pathname); if (res) { - if (errno != ENOENT) + if (errno != ENOENT && errno != ENOTDIR) __leave; /* pathname is an empty string. This is OK if dirfd refers to a symlink that was opened with O_PATH | O_NOFOLLOW. - In this case, readlinkat operates on the symlink. */ + In this case, readlinkat operates on the symlink. + Don't propagate errors from gen_full_path_at after this point. */ + errno = save_errno; cygheap_fdget cfd (dirfd); - if (cfd < 0) - __leave; - if (!(cfd->issymlink () + if (cfd < 0 + || (!(cfd->issymlink () && cfd->get_flags () & O_PATH - && cfd->get_flags () & O_NOFOLLOW)) - __leave; + && cfd->get_flags () & O_NOFOLLOW))) + { + set_errno (ENOENT); + __leave; + } strcpy (path, cfd->get_name ()); } return readlink (path, buf, bufsize); From d30a5917a9c40aec18c2243dfc2848c616dca77a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 18 Apr 2023 18:18:27 +0200 Subject: [PATCH 285/767] Cygwin: align renameat2 to Linux behaviour In contrast to rename default behaviour, Linux' renameat2 returns -1 with errno set to EEXIST, if oldfile and newfile refer to the same file, and the RENAME_NOREPLACE flag is set. Follow suit, given this is a Linux-only function anyway. Fixes: f665b1cef30f ("cygwin: Implement renameat2") Reported-by: Bruno Haible Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.7 | 4 ++++ winsup/cygwin/syscalls.cc | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 7bc7d4a1cc..0e6922163a 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -21,3 +21,7 @@ Bug Fixes - Fix error handling in readlinkat. Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253510.html + +- Fix return code and errno set by renameat2, if oldfile and newfile + refer to the same file, and the RENAME_NOREPLACE flag is set. + Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253514.html diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index b109720568..73343ecc1f 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -2108,6 +2108,14 @@ nt_path_has_executable_suffix (PUNICODE_STRING upath) return false; } +inline int +set_same_file_return (bool noreplace) +{ + if (!noreplace) + return 0; + set_errno (EEXIST); + return -1; +} /* If newpath names an existing file and the RENAME_NOREPLACE flag is specified, fail with EEXIST. Exception: Don't fail if the purpose of the rename is just to change the case of oldpath on a @@ -2286,7 +2294,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) newpc.get_nt_native_path (), FALSE)) { - res = 0; + res = set_same_file_return (noreplace); __leave; } newpc.file_attributes (INVALID_FILE_ATTRIBUTES); @@ -2301,7 +2309,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) if (newpc.get_nt_native_path ()->Length == oldpc.get_nt_native_path ()->Length) { - res = 0; + res = set_same_file_return (noreplace); __leave; } if (*(PWCHAR) ((PBYTE) newpc.get_nt_native_path ()->Buffer @@ -2321,7 +2329,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) newpc.get_nt_native_path (), oldpc.objcaseinsensitive ())) { - res = 0; + res = set_same_file_return (noreplace); __leave; } } @@ -2350,7 +2358,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) newpc.get_nt_native_path (), oldpc.objcaseinsensitive ())) { - res = 0; + res = set_same_file_return (noreplace); __leave; } } @@ -2571,7 +2579,7 @@ rename2 (const char *oldpath, const char *newpath, unsigned int at2flags) { debug_printf ("%s and %s are the same file", oldpath, newpath); NtClose (nfh); - res = 0; + res = set_same_file_return (noreplace); __leave; } NtClose (nfh); From 7e03fc35f528c7776dac0b4dc0b6814ca012986b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 18 Apr 2023 23:47:28 +0200 Subject: [PATCH 286/767] Add posix_spawn_file_actions_add{f}chdir_np MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These are defined as _np functions and available in glibc, musl, macOS, FreeBSD, Solaris ≥ 11.3 They are likely to be standardized without the _np suffix as a result of Austin Group issue 1208. if so, both names will be kept as aliases. Introduce HAVE_CHDIR and HAVE_FCHDIR to allow building on systems not providing these calls. Signed-off-by: Corinna Vinschen --- newlib/configure.host | 2 +- newlib/libc/include/spawn.h | 7 +++ newlib/libc/posix/posix_spawn.c | 89 ++++++++++++++++++++++++++++++++- 3 files changed, 95 insertions(+), 3 deletions(-) diff --git a/newlib/configure.host b/newlib/configure.host index 0a1ba282a3..5f427526d0 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -587,7 +587,7 @@ case "${host}" in default_newlib_io_long_double="yes" default_newlib_io_pos_args="yes" CC="${CC} -I${cygwin_srcdir}/include" - newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DGETREENT_PROVIDED -DSIGNAL_PROVIDED -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED" + newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DGETREENT_PROVIDED -DSIGNAL_PROVIDED -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED -DHAVE_CHDIR -DHAVE_FCHDIR" syscall_dir=syscalls ;; # RTEMS supplies its own versions of some routines: diff --git a/newlib/libc/include/spawn.h b/newlib/libc/include/spawn.h index d172177b12..d6ae992dbd 100644 --- a/newlib/libc/include/spawn.h +++ b/newlib/libc/include/spawn.h @@ -70,6 +70,13 @@ int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t * __restrict, int, const char * __restrict, int, mode_t); int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *, int, int); int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *, int); +#if __MISC_VISIBLE || __GNU_VISIBLE +int posix_spawn_file_actions_addchdir_np (posix_spawn_file_actions_t *__restrict +, + const char *__restrict); +int posix_spawn_file_actions_addfchdir_np (posix_spawn_file_actions_t *__restrict, + int); +#endif /* * Spawn attributes diff --git a/newlib/libc/posix/posix_spawn.c b/newlib/libc/posix/posix_spawn.c index 85bfa6477e..3506b0f8bf 100644 --- a/newlib/libc/posix/posix_spawn.c +++ b/newlib/libc/posix/posix_spawn.c @@ -123,7 +123,13 @@ struct __posix_spawn_file_actions { typedef struct __posix_spawn_file_actions_entry { STAILQ_ENTRY(__posix_spawn_file_actions_entry) fae_list; - enum { FAE_OPEN, FAE_DUP2, FAE_CLOSE } fae_action; + enum { + FAE_OPEN, + FAE_DUP2, + FAE_CLOSE, + FAE_CHDIR, + FAE_FCHDIR + } fae_action; int fae_fildes; union { @@ -139,6 +145,10 @@ typedef struct __posix_spawn_file_actions_entry { int newfildes; #define fae_newfildes fae_data.dup2.newfildes } dup2; + char *dir; +#define fae_dir fae_data.dir + int dirfd; +#define fae_dirfd fae_data.dirfd } fae_data; } posix_spawn_file_actions_entry_t; @@ -235,7 +245,21 @@ process_file_actions_entry(posix_spawn_file_actions_entry_t *fae) /* Perform a close(), do not fail if already closed */ (void)_close(fae->fae_fildes); break; +#ifdef HAVE_CHDIR + case FAE_CHDIR: + /* Perform a chdir. */ + if (chdir (fae->fae_dir) == -1) + return (errno); + break; +#endif +#ifdef HAVE_FCHDIR + case FAE_FCHDIR: + /* Perform a chdir. */ + if (fchdir (fae->fae_dirfd) == -1) + return (errno); + break; } +#endif return (0); } @@ -407,8 +431,18 @@ posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *fa) STAILQ_REMOVE_HEAD(&(*fa)->fa_list, fae_list); /* Deallocate file action entry */ - if (fae->fae_action == FAE_OPEN) + switch (fae->fae_action) { + case FAE_OPEN: free(fae->fae_path); + break; +#ifdef HAVE_CHDIR + case FAE_CHDIR: + free(fae->fae_dir); + break; +#endif + default: + break; + } free(fae); } @@ -496,6 +530,57 @@ posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *fa, return (0); } +#ifdef HAVE_CHDIR +int +posix_spawn_file_actions_addchdir_np ( + posix_spawn_file_actions_t * __restrict fa, + const char * __restrict path) +{ + posix_spawn_file_actions_entry_t *fae; + int error; + + /* Allocate object */ + fae = malloc(sizeof(posix_spawn_file_actions_entry_t)); + if (fae == NULL) + return (errno); + + /* Set values and store in queue */ + fae->fae_action = FAE_CHDIR; + fae->fae_dir = strdup(path); + if (fae->fae_dir == NULL) { + error = errno; + free(fae); + return (error); + } + + STAILQ_INSERT_TAIL(&(*fa)->fa_list, fae, fae_list); + return (0); +} +#endif + +#ifdef HAVE_FCHDIR +int +posix_spawn_file_actions_addfchdir_np ( + posix_spawn_file_actions_t * __restrict fa, + int fd) +{ + posix_spawn_file_actions_entry_t *fae; + int error; + + /* Allocate object */ + fae = malloc(sizeof(posix_spawn_file_actions_entry_t)); + if (fae == NULL) + return (errno); + + /* Set values and store in queue */ + fae->fae_action = FAE_FCHDIR; + fae->fae_dirfd = fd; + + STAILQ_INSERT_TAIL(&(*fa)->fa_list, fae, fae_list); + return (0); +} +#endif + /* * Spawn attributes */ From c743751aafa842eda0ca9cbeffe5b44acc94dd02 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 19 Apr 2023 00:34:36 +0200 Subject: [PATCH 287/767] Cygwin: Export posix_spawn_file_actions_add{f}chdir_np Signed-off-by: Corinna Vinschen --- winsup/cygwin/cygwin.din | 2 ++ winsup/cygwin/release/3.5.0 | 3 +++ winsup/doc/new-features.xml | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index c6768e4fce..b654661e9e 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -1040,8 +1040,10 @@ posix_madvise SIGFE posix_memalign SIGFE posix_openpt SIGFE posix_spawn SIGFE +posix_spawn_file_actions_addchdir_np SIGFE posix_spawn_file_actions_addclose SIGFE posix_spawn_file_actions_adddup2 SIGFE +posix_spawn_file_actions_addfchdir_np SIGFE posix_spawn_file_actions_addopen SIGFE posix_spawn_file_actions_destroy SIGFE posix_spawn_file_actions_init SIGFE diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 4123b8d325..f7c267616e 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -23,3 +23,6 @@ What's new: other process could do. - Add support for GB18030 codeset. + +- New API calls: posix_spawn_file_actions_addchdir_np, + posix_spawn_file_actions_addfchdir_np. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index a958f16002..f2e7a07731 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -45,6 +45,11 @@ could do. Add support for GB18030 codeset. + +- New API calls: posix_spawn_file_actions_addchdir_np, + posix_spawn_file_actions_addfchdir_np. + + From 53f7fb20a064fec180291a497d11eb66fe6172e6 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 18 Apr 2023 17:05:34 -0300 Subject: [PATCH 288/767] Cygwin: mbrtowi: fix segfault when pwi is NULL mbrtowi was missing null-checks on pwi, but NULL is passed from regex/engine.c:173. In a git repo with sendemail.smtpserver set, this results in a segfault when using git-send-email, which calls: git config --get-regexp '^sende?mail[.]' Fixes: 60c25da90d01 ("Cygwin: mbrtowi: define replacement for mbrtowc, returning UTF-32 value") Signed-off-by: David McFarland --- winsup/cygwin/strfuncs.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 57abf25649..76b7216cc3 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -159,7 +159,8 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) len = mbrtowc (&w1, s, n, ps); if (len == (size_t) -1 || len == (size_t) -2) return len; - *pwi = w1; + if (pwi) + *pwi = w1; /* Convert surrogate pair to wint_t value */ if (len > 0 && w1 >= 0xd800 && w1 <= 0xdbff) { @@ -169,7 +170,8 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) if (len2 > 0 && w2 >= 0xdc00 && w2 <= 0xdfff) { len += len2; - *pwi = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000; + if (pwi) + *pwi = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000; } else { From 3124d8b436a8130130ffe9c6a397556ff0125e66 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 19 Apr 2023 20:48:14 +0200 Subject: [PATCH 289/767] posix_spawn_file_actions_addfchdir_np: return EBADF on negative fd FreeBSD and Musl implement posix_spawn_file_actions_addfchdir_np so that it checks the incoming descriptor for being negative, and, if so, return with EBADF. The POSIX proposal defining posix_spawn_file_actions_addfchdir follows this behaviour, see https://www.austingroupbugs.net/view.php?id=1208 Fixes: 7e03fc35f528 ("Add posix_spawn_file_actions_add{f}chdir_np") Signed-off-by: Corinna Vinschen --- newlib/libc/posix/posix_spawn.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/newlib/libc/posix/posix_spawn.c b/newlib/libc/posix/posix_spawn.c index 3506b0f8bf..6fd6159d05 100644 --- a/newlib/libc/posix/posix_spawn.c +++ b/newlib/libc/posix/posix_spawn.c @@ -565,7 +565,12 @@ posix_spawn_file_actions_addfchdir_np ( int fd) { posix_spawn_file_actions_entry_t *fae; - int error; + + /* POSIX proposal documents it as implemented in FreeBSD and Musl. + Return EBADF if fd is negative. + https://www.austingroupbugs.net/view.php?id=1208 */ + if (fd < 0) + return EBADF; /* Allocate object */ fae = malloc(sizeof(posix_spawn_file_actions_entry_t)); From da40bd6eaf400e102fca68cbe170465a4af6d49c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 19 Apr 2023 21:04:49 +0200 Subject: [PATCH 290/767] Cygwin: posix_spawnp: don't fallback to sh Per the discussion starting with https://cygwin.com/pipermail/cygwin/2023-April/253495.html stop falling back to sh if the file given to posix_spawnp is no executable. This is not necessarily the last word on it, given https://www.austingroupbugs.net/view.php?id=1674, but for now, opt for following the proposal in the Austin Group bug entry, as well as PASSing the GNULIB test-posix_spawnp-script test. Fixes: c7c1a1ca1b33 ("Add support for new posix_spawn function.") Fixes: 3fbfcd11fb09 ("Cygwin: posix_spawn: add Cygwin-specific code fixing process synchronisation") Reported-by: Bruno Haible Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 7 +++++++ winsup/cygwin/spawn.cc | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index f7c267616e..c8485b18c5 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -26,3 +26,10 @@ What's new: - New API calls: posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. + +What changed: +------------- + +- posix_spawnp no longer falls back to starting the shell for unrecognized + files as execvp. For the reasoning, see + https://www.austingroupbugs.net/view.php?id=1674 diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 4d0ca127b9..84dd74e28f 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -1392,8 +1392,7 @@ __posix_spawn_execvpe (const char *path, char * const *argv, char *const *envp, ch_spawn.set_sem (sem); ch_spawn.worker (use_env_path ? (find_exec (path, buf, "PATH", FE_NNF) ?: "") : path, - argv, envp, - _P_OVERLAY | (use_env_path ? _P_PATH_TYPE_EXEC : 0)); + argv, envp, _P_OVERLAY); __posix_spawn_sem_release (sem, errno); return -1; } From fd26d4b4b6bc84af57caeef81f913707b5d9c0d2 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 24 Apr 2023 10:20:59 +0200 Subject: [PATCH 291/767] RTEMS: Add __m68k_read_tp() to crt0.c This is required to build libgomp. --- newlib/libc/sys/rtems/crt0.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/newlib/libc/sys/rtems/crt0.c b/newlib/libc/sys/rtems/crt0.c index 3b131d9c49..67f9d73024 100644 --- a/newlib/libc/sys/rtems/crt0.c +++ b/newlib/libc/sys/rtems/crt0.c @@ -230,3 +230,7 @@ int __EH_FRAME_BEGIN__; */ const char* __stack ; #endif + +#if defined(__m68k__) +RTEMS_STUB(void, __m68k_read_tp(void), { }) +#endif From 48ae24fd8159109077b71d41e528e08b325ded1f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 24 Apr 2023 22:40:00 +0200 Subject: [PATCH 292/767] Cygwin: locales: ignore @cjkwide and @cjksingle just like @cjknarrow When the @cjkwide and @cjksingle modifiers have been added, the patches missed to add checks for the new modifiers in the Cygwin locale code. Along the same lines, commit c3e7f7609e46 forgot to add a test for @cjksingle. Merge check for cjk* modifiers into a macro set andf use that throughout. Fix comments. Fixes: f92f048528e6f ("Locale modifier @cjkwide to adjust ambiguous-width in non-CJK locales") Fixes: c8204b106988f ("Locale modifier "@cjksingle" to enforce single-width CJK width.") Fixes: c3e7f7609e46 ("Cygwin: locales: fix behaviour for @cjk* and @euro locales") Signed-off-by: Corinna Vinschen --- winsup/cygwin/nlsfuncs.cc | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index b097a6e5fa..7d17b1069e 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -39,6 +39,18 @@ details. */ #define has_modifier(x) ((x)[0] && !strcmp (modifier, (x))) +/* Check for @cjk* modifier. Try to be as fast as possible */ +#define __is_cjk_modifier(_in, _cmp, _L) ({ \ + _in[1] == 'c' \ + && _in[2] == 'j' \ + && _in[3] == 'k'\ + && (_cmp (_in + 4, _L##"narrow") == 0 \ + || _cmp (_in + 4, _L##"wide") == 0 \ + || _cmp (_in + 4, _L##"single") == 0); \ +}) +#define is_cjk_modifier(_in) __is_cjk_modifier(_in, strcmp, ) +#define w_is_cjk_modifier(_in) __is_cjk_modifier(_in, wcscmp, L) + /* ResolveLocaleName does not what we want. It converts anything which vaguely resembles a locale into some other locale it supports. Bad examples are: "en-XY" gets converted to "en-US", and worse, "ff-BF" gets @@ -532,9 +544,8 @@ __set_lc_time_from_win (const char *name, { *c = '\0'; char *c2 = strchr (c + 1, '@'); - /* Ignore @cjknarrow modifier since it's a very personal thing between - Cygwin and newlib... */ - if (c2 && strcmp (c2, "@cjknarrow")) + /* Ignore @cjk* modifiers, they are newlib specials. */ + if (c2 && !is_cjk_modifier (c2)) memmove (c, c2, strlen (c2) + 1); } /* Now search in the alphabetically order lc_era array for the @@ -1075,9 +1086,8 @@ __set_lc_messages_from_win (const char *name, { *c = '\0'; c2 = strchr (c + 1, '@'); - /* Ignore @cjknarrow modifier since it's a very personal thing between - Cygwin and newlib... */ - if (c2 && strcmp (c2, "@cjknarrow")) + /* Ignore @cjk* modifiers, they are newlib specials. */ + if (c2 && !is_cjk_modifier (c2)) memmove (c, c2, strlen (c2) + 1); } /* Now search in the alphabetically order lc_msg array for the @@ -1537,11 +1547,9 @@ __set_charset_from_locale (const char *loc, char *charset) modifier = strchr (loc, '@'); if ((c = strchr (locale, '.'))) stpcpy (c, modifier ?: ""); - /* Cut out @cjknarrow/@cjkwide modifier, both are newlib specials and - don't affect the codeset. */ + /* Ignore @cjk* modifiers, they are newlib specials. */ modifier = strchr (locale, '@'); - if (modifier && (!strcmp (modifier + 1, "cjknarrow") - || !strcmp (modifier + 1, "cjkwide"))) + if (modifier && is_cjk_modifier (modifier)) *modifier = '\0'; default_codeset_t srch_dc = { locale, NULL }; @@ -1702,9 +1710,9 @@ __set_locale_from_locale_alias (const char *locale, char *new_locale) if (mbstowcs (wlocale, locale, ENCODING_LEN + 1) == (size_t) -1) sys_mbstowcs (wlocale, ENCODING_LEN + 1, locale); wlocale[ENCODING_LEN] = L'\0'; - /* Ignore @cjknarrow modifier since it's a very personal thing between - Cygwin and newlib... */ - if ((wc = wcschr (wlocale, L'@')) && !wcscmp (wc + 1, L"cjknarrow")) + /* Ignore @cjk* modifiers, they are newlib specials. */ + wc = wcschr (wlocale, L'@'); + if (wc && w_is_cjk_modifier (wc)) *wc = L'\0'; while (fgets (alias_buf, LOCALE_ALIAS_LINE_LEN + 1, fp)) { From c3798a2f7ddaedd91d5ea76a8adc5a4ee652cffd Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 24 Apr 2023 22:40:54 +0200 Subject: [PATCH 293/767] Cygwin: locales: drop unused has_modifier macro Signed-off-by: Corinna Vinschen --- winsup/cygwin/nlsfuncs.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index 7d17b1069e..b32fecc8ec 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -37,8 +37,6 @@ details. */ #define charfromwchar(category,in) \ __charfromwchar (_##category##_locale->in,_LC(category),f_wctomb) -#define has_modifier(x) ((x)[0] && !strcmp (modifier, (x))) - /* Check for @cjk* modifier. Try to be as fast as possible */ #define __is_cjk_modifier(_in, _cmp, _L) ({ \ _in[1] == 'c' \ From e301a74a6f111df4553b50b813a589589d1708b1 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 26 Apr 2023 08:23:04 +0200 Subject: [PATCH 294/767] Fix _REENT_EMERGENCY() if TLS is enabled If the thread-local storage (TLS) support was enabled, the _REENT_EMERGENCY() object had the wrong size. It must be a buffer of length _REENT_EMERGENCY_SIZE and not just a single character. --- newlib/libc/include/sys/reent.h | 2 +- newlib/libc/stdio/tmpnam.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index 6d8b005b2b..c71f75dbc2 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -812,7 +812,7 @@ extern _Thread_local int _tls_cvtlen; #define _REENT_CVTLEN(_ptr) (_tls_cvtlen) extern _Thread_local void (*_tls_cleanup)(struct _reent *); #define _REENT_CLEANUP(_ptr) (_tls_cleanup) -extern _Thread_local char _tls_emergency; +extern _Thread_local char _tls_emergency[_REENT_EMERGENCY_SIZE]; #define _REENT_EMERGENCY(_ptr) (_tls_emergency) extern _Thread_local int _tls_errno; #define _REENT_ERRNO(_ptr) (_tls_errno) diff --git a/newlib/libc/stdio/tmpnam.c b/newlib/libc/stdio/tmpnam.c index 51dfd1cea6..dc04cf3f6c 100644 --- a/newlib/libc/stdio/tmpnam.c +++ b/newlib/libc/stdio/tmpnam.c @@ -84,7 +84,7 @@ The global pointer <> is also required. #ifdef _REENT_THREAD_LOCAL _Thread_local int _tls_inc; -_Thread_local char _tls_emergency; +_Thread_local char _tls_emergency[_REENT_EMERGENCY_SIZE]; #endif /* Try to open the file specified, if it can't be opened then try From d160bcd4aade7527712d2bc94f8c7f0e4b7f8f0f Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 11 Mar 2023 21:52:52 +0000 Subject: [PATCH 295/767] Cygwin: doc: Upate a link from gitweb to cgit Also, reword 'considerable patch' to be more idomatic. --- winsup/doc/faq-api.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/doc/faq-api.xml b/winsup/doc/faq-api.xml index 6b5824cf27..c9b35f6b04 100644 --- a/winsup/doc/faq-api.xml +++ b/winsup/doc/faq-api.xml @@ -41,8 +41,8 @@ deprecated by regular, automated test releases. See the next FAQ entry Yes. Starting December 2022, regular, automated test releases -are created whenever a considerable patch is pushed to the Cygwin git -repo at . +are created whenever a significant patch is pushed to the Cygwin git +repo at . You can download the cygwin package test releases just like any other test release for any Cgywin package using the Cygwin Setup program. For more info, see From 3bee68248fc8e164a8bb6bba3f105b10fdec8a71 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sun, 30 Apr 2023 00:03:21 +0530 Subject: [PATCH 296/767] Cygwin: Fix compiling with w32api-headers v11.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This solves redefinition of FILE_CS_FLAG_CASE_SENSITIVE_DIR in winnt.h and fixes the following compiler errors ntdll.h:523:3: error: expected identifier before numeric constant 523 | FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x01 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ntdll.h:522:1: note: to match this ‘{’ 522 | { | ^ --- winsup/cygwin/local_includes/ntdll.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index 8c4d008832..a1a9f7f8d1 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -518,10 +518,12 @@ enum FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x40 }; +#if (__MINGW64_VERSION_MAJOR < 11) enum { FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x01 }; +#endif enum { From 742b8db95d93e4edba52bbf84afe64c9324ce89b Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 5 May 2023 13:17:41 -0500 Subject: [PATCH 297/767] Move signgm.c from libc/reent to libm/math --- newlib/libc/reent/Makefile.inc | 1 - newlib/libm/math/Makefile.inc | 1 + newlib/{libc/reent => libm/math}/signgam.c | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename newlib/{libc/reent => libm/math}/signgam.c (100%) diff --git a/newlib/libc/reent/Makefile.inc b/newlib/libc/reent/Makefile.inc index b4b7f75960..38ddf57663 100644 --- a/newlib/libc/reent/Makefile.inc +++ b/newlib/libc/reent/Makefile.inc @@ -14,7 +14,6 @@ libc_a_SOURCES += \ %D%/readr.c \ %D%/renamer.c \ %D%/signalr.c \ - %D%/signgam.c \ %D%/sbrkr.c \ %D%/statr.c \ %D%/timesr.c \ diff --git a/newlib/libm/math/Makefile.inc b/newlib/libm/math/Makefile.inc index 1b61d6dd30..d2a45bf13a 100644 --- a/newlib/libm/math/Makefile.inc +++ b/newlib/libm/math/Makefile.inc @@ -15,6 +15,7 @@ %D%/w_scalb.c %D%/w_sinh.c %D%/w_sqrt.c \ %D%/w_sincos.c \ %D%/w_drem.c \ + %D%/signgam.c \ %D%/s_asinh.c %D%/s_atan.c %D%/s_ceil.c \ %D%/s_cos.c %D%/s_erf.c %D%/s_fabs.c %D%/s_floor.c \ %D%/s_frexp.c %D%/s_ldexp.c \ diff --git a/newlib/libc/reent/signgam.c b/newlib/libm/math/signgam.c similarity index 100% rename from newlib/libc/reent/signgam.c rename to newlib/libm/math/signgam.c From 8144619bad0c25b1a27edbd0085664ac338822af Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 5 May 2023 13:17:42 -0500 Subject: [PATCH 298/767] Regenerated source for moving signgam.c --- newlib/Makefile.in | 117 +++++++++++++++++++++++---------------------- 1 file changed, 59 insertions(+), 58 deletions(-) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index b1685772d6..644bf8bce2 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -2519,7 +2519,6 @@ am_libc_a_OBJECTS = $(am__objects_1) \ libc/reent/libc_a-readr.$(OBJEXT) \ libc/reent/libc_a-renamer.$(OBJEXT) \ libc/reent/libc_a-signalr.$(OBJEXT) \ - libc/reent/libc_a-signgam.$(OBJEXT) \ libc/reent/libc_a-sbrkr.$(OBJEXT) \ libc/reent/libc_a-statr.$(OBJEXT) \ libc/reent/libc_a-timesr.$(OBJEXT) \ @@ -2728,6 +2727,7 @@ libm_a_LIBADD = @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-w_sqrt.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-w_sincos.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-w_drem.$(OBJEXT) \ +@NEWLIB_HW_FP_FALSE@ libm/math/libm_a-signgam.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-s_asinh.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-s_atan.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-s_ceil.$(OBJEXT) \ @@ -3998,46 +3998,46 @@ libc_a_SOURCES = $(am__append_5) libc/stdlib/__adjust.c \ libc/reent/gettimeofdayr.c libc/reent/isattyr.c \ libc/reent/linkr.c libc/reent/lseekr.c libc/reent/mkdirr.c \ libc/reent/openr.c libc/reent/readr.c libc/reent/renamer.c \ - libc/reent/signalr.c libc/reent/signgam.c libc/reent/sbrkr.c \ - libc/reent/statr.c libc/reent/timesr.c libc/reent/unlinkr.c \ - libc/reent/writer.c $(am__append_21) $(am__append_22) \ - $(am__append_23) libc/errno/errno.c libc/misc/__dprintf.c \ - libc/misc/unctrl.c libc/misc/ffs.c libc/misc/init.c \ - libc/misc/fini.c $(am__append_24) $(am__append_25) \ - $(am__append_26) $(am__append_27) $(am__append_28) \ - $(am__append_29) $(am__append_30) $(am__append_31) \ - $(am__append_32) $(am__append_33) $(am__append_34) \ - $(am__append_35) $(am__append_36) $(am__append_38) \ - $(am__append_41) $(am__append_42) $(am__append_43) \ - $(am__append_44) $(am__append_45) $(am__append_46) \ - $(am__append_47) $(am__append_48) $(am__append_49) \ - $(am__append_50) $(am__append_51) $(am__append_52) \ - $(am__append_53) $(am__append_54) $(am__append_55) \ - $(am__append_56) $(am__append_57) $(am__append_58) \ - $(am__append_59) $(am__append_60) $(am__append_61) \ - $(am__append_62) $(am__append_63) $(am__append_64) \ - $(am__append_65) $(am__append_66) $(am__append_67) \ - $(am__append_68) $(am__append_69) $(am__append_70) \ - $(am__append_71) $(am__append_73) $(am__append_74) \ - $(am__append_75) $(am__append_76) $(am__append_77) \ - $(am__append_78) $(am__append_79) $(am__append_80) \ - $(am__append_81) $(am__append_82) $(am__append_83) \ - $(am__append_84) $(am__append_85) $(am__append_86) \ - $(am__append_87) $(am__append_88) $(am__append_89) \ - $(am__append_90) $(am__append_91) $(am__append_92) \ - $(am__append_93) $(am__append_94) $(am__append_95) \ - $(am__append_96) $(am__append_97) $(am__append_98) \ - $(am__append_99) $(am__append_100) $(am__append_101) \ - $(am__append_102) $(am__append_103) $(am__append_104) \ - $(am__append_105) $(am__append_106) $(am__append_107) \ - $(am__append_108) $(am__append_109) $(am__append_110) \ - $(am__append_111) $(am__append_112) $(am__append_113) \ - $(am__append_114) $(am__append_115) $(am__append_116) \ - $(am__append_117) $(am__append_118) $(am__append_119) \ - $(am__append_120) $(am__append_121) $(am__append_122) \ - $(am__append_123) $(am__append_124) $(am__append_125) \ - $(am__append_126) $(am__append_127) $(am__append_128) \ - $(am__append_129) $(am__append_130) + libc/reent/signalr.c libc/reent/sbrkr.c libc/reent/statr.c \ + libc/reent/timesr.c libc/reent/unlinkr.c libc/reent/writer.c \ + $(am__append_21) $(am__append_22) $(am__append_23) \ + libc/errno/errno.c libc/misc/__dprintf.c libc/misc/unctrl.c \ + libc/misc/ffs.c libc/misc/init.c libc/misc/fini.c \ + $(am__append_24) $(am__append_25) $(am__append_26) \ + $(am__append_27) $(am__append_28) $(am__append_29) \ + $(am__append_30) $(am__append_31) $(am__append_32) \ + $(am__append_33) $(am__append_34) $(am__append_35) \ + $(am__append_36) $(am__append_38) $(am__append_41) \ + $(am__append_42) $(am__append_43) $(am__append_44) \ + $(am__append_45) $(am__append_46) $(am__append_47) \ + $(am__append_48) $(am__append_49) $(am__append_50) \ + $(am__append_51) $(am__append_52) $(am__append_53) \ + $(am__append_54) $(am__append_55) $(am__append_56) \ + $(am__append_57) $(am__append_58) $(am__append_59) \ + $(am__append_60) $(am__append_61) $(am__append_62) \ + $(am__append_63) $(am__append_64) $(am__append_65) \ + $(am__append_66) $(am__append_67) $(am__append_68) \ + $(am__append_69) $(am__append_70) $(am__append_71) \ + $(am__append_73) $(am__append_74) $(am__append_75) \ + $(am__append_76) $(am__append_77) $(am__append_78) \ + $(am__append_79) $(am__append_80) $(am__append_81) \ + $(am__append_82) $(am__append_83) $(am__append_84) \ + $(am__append_85) $(am__append_86) $(am__append_87) \ + $(am__append_88) $(am__append_89) $(am__append_90) \ + $(am__append_91) $(am__append_92) $(am__append_93) \ + $(am__append_94) $(am__append_95) $(am__append_96) \ + $(am__append_97) $(am__append_98) $(am__append_99) \ + $(am__append_100) $(am__append_101) $(am__append_102) \ + $(am__append_103) $(am__append_104) $(am__append_105) \ + $(am__append_106) $(am__append_107) $(am__append_108) \ + $(am__append_109) $(am__append_110) $(am__append_111) \ + $(am__append_112) $(am__append_113) $(am__append_114) \ + $(am__append_115) $(am__append_116) $(am__append_117) \ + $(am__append_118) $(am__append_119) $(am__append_120) \ + $(am__append_121) $(am__append_122) $(am__append_123) \ + $(am__append_124) $(am__append_125) $(am__append_126) \ + $(am__append_127) $(am__append_128) $(am__append_129) \ + $(am__append_130) libc_a_CFLAGS = $(AM_CFLAGS) $(libc_a_CFLAGS_$(subst /,_,$(@D))) $(libc_a_CFLAGS_$(subst /,_,$(@D)_$( Date: Sun, 7 May 2023 21:12:10 -0600 Subject: [PATCH 299/767] fhandler/proc.cc(format_proc_cpuinfo): Add Linux 6.3 cpuinfo cpuid 0x00000007:0 ecx:7 shstk Shadow Stack support & Windows [20]20H1/[20]2004+ => user_shstk User mode program Shadow Stack support AMD SVM 0x8000000a:0 edx:25 vnmi virtual Non-Maskable Interrrupts Sync AMD 0x80000008:0 ebx flags across two output locations --- winsup/cygwin/fhandler/proc.cc | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 0e60c519ef..3c79762e0f 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -1384,8 +1384,8 @@ format_proc_cpuinfo (void *, char *&destbuf) ftcprint (features2, 0, "perfmon_v2"); /* Performance Monitoring Version 2 */ } - /* cpuid 0x80000008 ebx */ - if (maxe >= 0x80000008) + /* AMD cpuid 0x80000008 ebx */ + if (is_amd && maxe >= 0x80000008) { /* cpuid (&unused, &features1, &unused, &unused, 0x80000008, 0); */ /* from above ^ */ @@ -1395,16 +1395,19 @@ format_proc_cpuinfo (void *, char *&destbuf) /* ftcprint (features1, 4, "rdpru"); *//* user level rd proc reg */ /* ftcprint (features1, 6, "mba"); *//* memory BW alloc */ /* ftcprint (features1, 9, "wbnoinvd"); *//* wbnoinvd instruction */ - ftcprint (features1, 14, "ibrs"); /* ind br restricted spec */ ftcprint (features1, 12, "ibpb"); /* ind br pred barrier */ + ftcprint (features1, 14, "ibrs"); /* ind br restricted spec */ ftcprint (features1, 15, "stibp"); /* 1 thread ind br pred */ - ftcprint (features1, 16, "ibrs_enhanced"); /* IBRS_ALL enhanced IBRS always on */ + ftcprint (features1, 16, "ibrs_enhanced"); /* ibrs_enhanced IBRS always on */ /* ftcprint (features1, 17, "stibp_always_on"); */ /* stibp always on */ -/* ftcprint (features1, 18, "ibrs_pref");*//* IBRS_PREF IBRS preferred */ +/* ftcprint (features1, 18, "ibrs_pref");*//* ibrs_pref IBRS preferred */ /* ftcprint (features1, 23, "amd_ppin"); *//* protected proc id no */ /* ftcprint (features1, 24, "ssbd"); *//* spec store byp dis */ /* ftcprint (features1, 25, "virt_ssbd");*//* vir spec store byp dis */ /* ftcprint (features1, 26, "ssb_no"); *//* ssb fixed in hardware */ +/* ftcprint (features1, 27, "cppc"); *//* collab proc perf ctl */ +/* ftcprint (features1, 28, "amd_psfd"); *//* predictive store fwd dis */ +/* ftcprint (features1, 31, "brs"); *//* branch sampling */ } /* cpuid 0x00000021 ebx|edx|ecx == "IntelTDX " */ @@ -1483,6 +1486,14 @@ format_proc_cpuinfo (void *, char *&destbuf) /* ftcprint (features1, 6, "split_lock_detect");*//* MSR_TEST_CTRL split lock */ + /* cpuid 0x00000007 ecx & Windows [20]20H1/[20]2004+ */ + if (maxf >= 0x00000007 && wincap.osname () >= "10.0" + && wincap.build_number () >= 19041) + { + cpuid (&unused, &unused, &features1, &unused, 0x00000007, 0); + ftcprint (features1, 7, "user_shstk"); /* "user shadow stack" */ + } + /* cpuid 0x00000007:1 eax */ if (maxf >= 0x00000007) { @@ -1491,6 +1502,7 @@ format_proc_cpuinfo (void *, char *&destbuf) ftcprint (features1, 4, "avx_vnni"); /* vex enc NN vec */ ftcprint (features1, 5, "avx512_bf16"); /* vec bfloat16 short */ /* ftcprint (features1, 7, "cmpccxadd"); */ /* CMPccXADD instructions */ +/* ftcprint (features1, 18, "lkgs"); */ /* load kernel (userspace) GS */ /* ftcprint (features1, 21, "amx_fp16"); */ /* AMX fp16 Support */ /* ftcprint (features1, 23, "avx_ifma"); */ /* Support for VPMADD52[H,L]UQ */ ftcprint (features1, 26, "lam"); /* Linear Address Masking */ @@ -1510,14 +1522,15 @@ format_proc_cpuinfo (void *, char *&destbuf) /* ftcprint (features1, 12, "ibpb" ); */ /* ind br pred barrier */ /* ftcprint (features1, 14, "ibrs" ); */ /* ind br restricted spec */ /* ftcprint (features1, 15, "stibp"); */ /* 1 thread ind br pred */ -/* ftcprint (features1, 16, "ibrs_enhanced");*//* IBRS_ALL enhanced IBRS always on */ +/* ftcprint (features1, 16, "ibrs_enhanced"); */ /* ibrs_enhanced IBRS always on */ /* ftcprint (features1, 17, "stibp_always_on"); */ /* stibp always on */ -/* ftcprint (features1, 18, "ibrs_pref");*//* IBRS_PREF IBRS preferred */ +/* ftcprint (features1, 18, "ibrs_pref"); */ /* ibrs_pref IBRS preferred */ ftcprint (features1, 23, "amd_ppin"); /* protected proc id no */ /* ftcprint (features1, 24, "ssbd"); */ /* spec store byp dis */ ftcprint (features1, 25, "virt_ssbd"); /* vir spec store byp dis */ /* ftcprint (features1, 26, "ssb_no"); */ /* ssb fixed in hardware */ ftcprint (features1, 27, "cppc"); /* collab proc perf ctl */ +/* ftcprint (features1, 28, "amd_psfd"); */ /* predictive store fwd dis */ ftcprint (features1, 31, "brs"); /* branch sampling */ } @@ -1558,6 +1571,7 @@ format_proc_cpuinfo (void *, char *&destbuf) ftcprint (features1, 15, "v_vmsave_vmload"); /* virt vmsave vmload */ ftcprint (features1, 16, "vgif"); /* virt glb int flag */ ftcprint (features1, 20, "v_spec_ctrl"); /* virt spec ctrl support */ + ftcprint (features1, 25, "vnmi"); /* virt NMI */ /* ftcprint (features1, 28, "svme_addr_chk"); *//* secure vmexit addr check */ } @@ -1572,6 +1586,7 @@ format_proc_cpuinfo (void *, char *&destbuf) ftcprint (features1, 4, "ospke"); /* OS prot keys en */ ftcprint (features1, 5, "waitpkg"); /* umon/umwait/tpause */ ftcprint (features1, 6, "avx512_vbmi2"); /* vec bit manip 2 */ +/* ftcprint (features1, 7, "shstk"); */ /* Shadow stack */ ftcprint (features1, 8, "gfni"); /* Galois field instr */ ftcprint (features1, 9, "vaes"); /* vector AES */ ftcprint (features1, 10, "vpclmulqdq"); /* nc mul dbl quad */ From c630a6a837fd581d741fb94602aed6a4a5ed9bf4 Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 5 May 2023 13:39:16 -0500 Subject: [PATCH 300/767] newlib: Add FreeBSD files for non LDBL_EQ_DBL support FreeBSD files to add long double support for i386, aarch64 and x86_64. --- newlib/libc/include/sys/endian.h | 207 ++++ newlib/libc/machine/aarch64/machine/_fpmath.h | 58 ++ newlib/libc/machine/i386/machine/_fpmath.h | 56 ++ newlib/libc/machine/x86_64/machine/_fpmath.h | 57 ++ newlib/libm/ld/e_acoshl.c | 89 ++ newlib/libm/ld/e_acosl.c | 87 ++ newlib/libm/ld/e_asinl.c | 77 ++ newlib/libm/ld/e_atan2l.c | 120 +++ newlib/libm/ld/e_atanhl.c | 74 ++ newlib/libm/ld/e_coshl.c | 132 +++ newlib/libm/ld/e_fmodl.c | 149 +++ newlib/libm/ld/e_lgammal.c | 25 + newlib/libm/ld/e_remainderl.c | 40 + newlib/libm/ld/e_sinhl.c | 134 +++ newlib/libm/ld/fpmath.h | 82 ++ newlib/libm/ld/math_private.h | 924 ++++++++++++++++++ newlib/libm/ld/s_asinhl.c | 91 ++ newlib/libm/ld/s_atanl.c | 85 ++ newlib/libm/ld/s_cbrtl.c | 143 +++ newlib/libm/ld/s_ceill.c | 101 ++ newlib/libm/ld/s_copysignl.c | 44 + newlib/libm/ld/s_cosl.c | 102 ++ newlib/libm/ld/s_fabsl.c | 45 + newlib/libm/ld/s_fdim.c | 48 + newlib/libm/ld/s_floorl.c | 101 ++ newlib/libm/ld/s_fmal.c | 274 ++++++ newlib/libm/ld/s_fmaxl.c | 57 ++ newlib/libm/ld/s_fminl.c | 57 ++ newlib/libm/ld/s_frexpl.c | 64 ++ newlib/libm/ld/s_ilogbl.c | 53 + newlib/libm/ld/s_llrintl.c | 9 + newlib/libm/ld/s_llroundl.c | 11 + newlib/libm/ld/s_logbl.c | 54 + newlib/libm/ld/s_lrint.c | 60 ++ newlib/libm/ld/s_lrintl.c | 9 + newlib/libm/ld/s_lround.c | 70 ++ newlib/libm/ld/s_lroundl.c | 11 + newlib/libm/ld/s_modfl.c | 103 ++ newlib/libm/ld/s_nearbyint.c | 61 ++ newlib/libm/ld/s_nextafterl.c | 80 ++ newlib/libm/ld/s_nexttoward.c | 72 ++ newlib/libm/ld/s_nexttowardf.c | 59 ++ newlib/libm/ld/s_remquol.c | 173 ++++ newlib/libm/ld/s_rintl.c | 92 ++ newlib/libm/ld/s_roundl.c | 64 ++ newlib/libm/ld/s_scalbln.c | 56 ++ newlib/libm/ld/s_scalbnl.c | 48 + newlib/libm/ld/s_sinl.c | 95 ++ newlib/libm/ld/s_tanhl.c | 174 ++++ newlib/libm/ld/s_tanl.c | 97 ++ newlib/libm/ld/s_truncl.c | 68 ++ newlib/libm/ld128/b_tgammal.c | 57 ++ newlib/libm/ld128/e_lgammal_r.c | 330 +++++++ newlib/libm/ld128/e_powl.c | 443 +++++++++ newlib/libm/ld128/e_rem_pio2l.h | 135 +++ newlib/libm/ld128/invtrig.c | 102 ++ newlib/libm/ld128/invtrig.h | 115 +++ newlib/libm/ld128/k_cosl.c | 59 ++ newlib/libm/ld128/k_expl.h | 324 ++++++ newlib/libm/ld128/k_sinl.c | 59 ++ newlib/libm/ld128/s_erfl.c | 329 +++++++ newlib/libm/ld128/s_exp2l.c | 429 ++++++++ newlib/libm/ld128/s_expl.c | 326 ++++++ newlib/libm/ld128/s_logl.c | 740 ++++++++++++++ newlib/libm/ld80/b_expl.c | 113 +++ newlib/libm/ld80/b_logl.c | 375 +++++++ newlib/libm/ld80/b_tgammal.c | 419 ++++++++ newlib/libm/ld80/e_lgammal_r.c | 358 +++++++ newlib/libm/ld80/e_powl.c | 662 +++++++++++++ newlib/libm/ld80/e_rem_pio2l.h | 143 +++ newlib/libm/ld80/invtrig.c | 84 ++ newlib/libm/ld80/invtrig.h | 116 +++ newlib/libm/ld80/k_cosl.c | 78 ++ newlib/libm/ld80/k_cospil.h | 42 + newlib/libm/ld80/k_expl.h | 301 ++++++ newlib/libm/ld80/k_sinl.c | 62 ++ newlib/libm/ld80/k_sinpil.h | 42 + newlib/libm/ld80/s_cospil.c | 129 +++ newlib/libm/ld80/s_erfl.c | 337 +++++++ newlib/libm/ld80/s_exp2l.c | 290 ++++++ newlib/libm/ld80/s_expl.c | 279 ++++++ newlib/libm/ld80/s_logl.c | 722 ++++++++++++++ newlib/libm/ld80/s_sinpil.c | 140 +++ 83 files changed, 13182 insertions(+) create mode 100644 newlib/libc/include/sys/endian.h create mode 100644 newlib/libc/machine/aarch64/machine/_fpmath.h create mode 100644 newlib/libc/machine/i386/machine/_fpmath.h create mode 100644 newlib/libc/machine/x86_64/machine/_fpmath.h create mode 100644 newlib/libm/ld/e_acoshl.c create mode 100644 newlib/libm/ld/e_acosl.c create mode 100644 newlib/libm/ld/e_asinl.c create mode 100644 newlib/libm/ld/e_atan2l.c create mode 100644 newlib/libm/ld/e_atanhl.c create mode 100644 newlib/libm/ld/e_coshl.c create mode 100644 newlib/libm/ld/e_fmodl.c create mode 100644 newlib/libm/ld/e_lgammal.c create mode 100644 newlib/libm/ld/e_remainderl.c create mode 100644 newlib/libm/ld/e_sinhl.c create mode 100644 newlib/libm/ld/fpmath.h create mode 100644 newlib/libm/ld/math_private.h create mode 100644 newlib/libm/ld/s_asinhl.c create mode 100644 newlib/libm/ld/s_atanl.c create mode 100644 newlib/libm/ld/s_cbrtl.c create mode 100644 newlib/libm/ld/s_ceill.c create mode 100644 newlib/libm/ld/s_copysignl.c create mode 100644 newlib/libm/ld/s_cosl.c create mode 100644 newlib/libm/ld/s_fabsl.c create mode 100644 newlib/libm/ld/s_fdim.c create mode 100644 newlib/libm/ld/s_floorl.c create mode 100644 newlib/libm/ld/s_fmal.c create mode 100644 newlib/libm/ld/s_fmaxl.c create mode 100644 newlib/libm/ld/s_fminl.c create mode 100644 newlib/libm/ld/s_frexpl.c create mode 100644 newlib/libm/ld/s_ilogbl.c create mode 100644 newlib/libm/ld/s_llrintl.c create mode 100644 newlib/libm/ld/s_llroundl.c create mode 100644 newlib/libm/ld/s_logbl.c create mode 100644 newlib/libm/ld/s_lrint.c create mode 100644 newlib/libm/ld/s_lrintl.c create mode 100644 newlib/libm/ld/s_lround.c create mode 100644 newlib/libm/ld/s_lroundl.c create mode 100644 newlib/libm/ld/s_modfl.c create mode 100644 newlib/libm/ld/s_nearbyint.c create mode 100644 newlib/libm/ld/s_nextafterl.c create mode 100644 newlib/libm/ld/s_nexttoward.c create mode 100644 newlib/libm/ld/s_nexttowardf.c create mode 100644 newlib/libm/ld/s_remquol.c create mode 100644 newlib/libm/ld/s_rintl.c create mode 100644 newlib/libm/ld/s_roundl.c create mode 100644 newlib/libm/ld/s_scalbln.c create mode 100644 newlib/libm/ld/s_scalbnl.c create mode 100644 newlib/libm/ld/s_sinl.c create mode 100644 newlib/libm/ld/s_tanhl.c create mode 100644 newlib/libm/ld/s_tanl.c create mode 100644 newlib/libm/ld/s_truncl.c create mode 100644 newlib/libm/ld128/b_tgammal.c create mode 100644 newlib/libm/ld128/e_lgammal_r.c create mode 100644 newlib/libm/ld128/e_powl.c create mode 100644 newlib/libm/ld128/e_rem_pio2l.h create mode 100644 newlib/libm/ld128/invtrig.c create mode 100644 newlib/libm/ld128/invtrig.h create mode 100644 newlib/libm/ld128/k_cosl.c create mode 100644 newlib/libm/ld128/k_expl.h create mode 100644 newlib/libm/ld128/k_sinl.c create mode 100644 newlib/libm/ld128/s_erfl.c create mode 100644 newlib/libm/ld128/s_exp2l.c create mode 100644 newlib/libm/ld128/s_expl.c create mode 100644 newlib/libm/ld128/s_logl.c create mode 100644 newlib/libm/ld80/b_expl.c create mode 100644 newlib/libm/ld80/b_logl.c create mode 100644 newlib/libm/ld80/b_tgammal.c create mode 100644 newlib/libm/ld80/e_lgammal_r.c create mode 100644 newlib/libm/ld80/e_powl.c create mode 100644 newlib/libm/ld80/e_rem_pio2l.h create mode 100644 newlib/libm/ld80/invtrig.c create mode 100644 newlib/libm/ld80/invtrig.h create mode 100644 newlib/libm/ld80/k_cosl.c create mode 100644 newlib/libm/ld80/k_cospil.h create mode 100644 newlib/libm/ld80/k_expl.h create mode 100644 newlib/libm/ld80/k_sinl.c create mode 100644 newlib/libm/ld80/k_sinpil.h create mode 100644 newlib/libm/ld80/s_cospil.c create mode 100644 newlib/libm/ld80/s_erfl.c create mode 100644 newlib/libm/ld80/s_exp2l.c create mode 100644 newlib/libm/ld80/s_expl.c create mode 100644 newlib/libm/ld80/s_logl.c create mode 100644 newlib/libm/ld80/s_sinpil.c diff --git a/newlib/libc/include/sys/endian.h b/newlib/libc/include/sys/endian.h new file mode 100644 index 0000000000..3685322b69 --- /dev/null +++ b/newlib/libc/include/sys/endian.h @@ -0,0 +1,207 @@ +/*- + * Copyright (c) 2002 Thomas Moestl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: head/sys/sys/endian.h 208331 2010-05-20 06:16:13Z phk $ + */ + +#ifndef _SYS_ENDIAN_H_ +#define _SYS_ENDIAN_H_ + +#include +#include +#include + +#ifndef _UINT8_T_DECLARED +typedef __uint8_t uint8_t; +#define _UINT8_T_DECLARED +#endif + +#ifndef _UINT16_T_DECLARED +typedef __uint16_t uint16_t; +#define _UINT16_T_DECLARED +#endif + +#ifndef _UINT32_T_DECLARED +typedef __uint32_t uint32_t; +#define _UINT32_T_DECLARED +#endif + +#ifndef _UINT64_T_DECLARED +typedef __uint64_t uint64_t; +#define _UINT64_T_DECLARED +#endif + +/* + * General byte order swapping functions. + */ +#define bswap16(x) __bswap16(x) +#define bswap32(x) __bswap32(x) +#define bswap64(x) __bswap64(x) + +/* + * Host to big endian, host to little endian, big endian to host, and little + * endian to host byte order functions as detailed in byteorder(9). + */ +#if _BYTE_ORDER == _LITTLE_ENDIAN +#define htobe16(x) bswap16((x)) +#define htobe32(x) bswap32((x)) +#define htobe64(x) bswap64((x)) +#define htole16(x) ((uint16_t)(x)) +#define htole32(x) ((uint32_t)(x)) +#define htole64(x) ((uint64_t)(x)) + +#define be16toh(x) bswap16((x)) +#define be32toh(x) bswap32((x)) +#define be64toh(x) bswap64((x)) +#define le16toh(x) ((uint16_t)(x)) +#define le32toh(x) ((uint32_t)(x)) +#define le64toh(x) ((uint64_t)(x)) +#else /* _BYTE_ORDER != _LITTLE_ENDIAN */ +#define htobe16(x) ((uint16_t)(x)) +#define htobe32(x) ((uint32_t)(x)) +#define htobe64(x) ((uint64_t)(x)) +#define htole16(x) bswap16((x)) +#define htole32(x) bswap32((x)) +#define htole64(x) bswap64((x)) + +#define be16toh(x) ((uint16_t)(x)) +#define be32toh(x) ((uint32_t)(x)) +#define be64toh(x) ((uint64_t)(x)) +#define le16toh(x) bswap16((x)) +#define le32toh(x) bswap32((x)) +#define le64toh(x) bswap64((x)) +#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */ + +/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */ + +static __inline uint16_t +be16dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((unsigned)p[0] << 8) | p[1]); +} + +static __inline uint32_t +be32dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((uint32_t)p[0] << 24) | ((uint32_t)p[1] << 16) | + ((uint32_t)p[2] << 8) | p[3]); +} + +static __inline uint64_t +be64dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4)); +} + +static __inline uint16_t +le16dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((unsigned)p[1] << 8) | p[0]); +} + +static __inline uint32_t +le32dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((uint32_t)p[3] << 24) | ((uint32_t)p[2] << 16) | + ((uint32_t)p[1] << 8) | p[0]); +} + +static __inline uint64_t +le64dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p)); +} + +static __inline void +be16enc(void *pp, uint16_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = (u >> 8) & 0xff; + p[1] = u & 0xff; +} + +static __inline void +be32enc(void *pp, uint32_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = (u >> 24) & 0xff; + p[1] = (u >> 16) & 0xff; + p[2] = (u >> 8) & 0xff; + p[3] = u & 0xff; +} + +static __inline void +be64enc(void *pp, uint64_t u) +{ + uint8_t *p = (uint8_t *)pp; + + be32enc(p, (uint32_t)(u >> 32)); + be32enc(p + 4, (uint32_t)(u & 0xffffffffU)); +} + +static __inline void +le16enc(void *pp, uint16_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = u & 0xff; + p[1] = (u >> 8) & 0xff; +} + +static __inline void +le32enc(void *pp, uint32_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = u & 0xff; + p[1] = (u >> 8) & 0xff; + p[2] = (u >> 16) & 0xff; + p[3] = (u >> 24) & 0xff; +} + +static __inline void +le64enc(void *pp, uint64_t u) +{ + uint8_t *p = (uint8_t *)pp; + + le32enc(p, (uint32_t)(u & 0xffffffffU)); + le32enc(p + 4, (uint32_t)(u >> 32)); +} + +#endif /* _SYS_ENDIAN_H_ */ diff --git a/newlib/libc/machine/aarch64/machine/_fpmath.h b/newlib/libc/machine/aarch64/machine/_fpmath.h new file mode 100644 index 0000000000..71d0a71523 --- /dev/null +++ b/newlib/libc/machine/aarch64/machine/_fpmath.h @@ -0,0 +1,58 @@ +/*- + * Copyright (c) 2002, 2003 David Schultz + * Copyright (2) 2014 The FreeBSD Foundation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +union IEEEl2bits { + long double e; + struct { + unsigned long manl :64; + unsigned long manh :48; + unsigned int exp :15; + unsigned int sign :1; + } bits; + /* TODO andrew: Check the packing here */ + struct { + unsigned long manl :64; + unsigned long manh :48; + unsigned int expsign :16; + } xbits; +}; + +#define LDBL_NBIT 0 +#define LDBL_IMPLICIT_NBIT +#define mask_nbit_l(u) ((void)0) + +#define LDBL_MANH_SIZE 48 +#define LDBL_MANL_SIZE 64 + +#define LDBL_TO_ARRAY32(u, a) do { \ + (a)[0] = (uint32_t)(u).bits.manl; \ + (a)[1] = (uint32_t)((u).bits.manl >> 32); \ + (a)[2] = (uint32_t)(u).bits.manh; \ + (a)[3] = (uint32_t)((u).bits.manh >> 32); \ +} while(0) diff --git a/newlib/libc/machine/i386/machine/_fpmath.h b/newlib/libc/machine/i386/machine/_fpmath.h new file mode 100644 index 0000000000..874439c34b --- /dev/null +++ b/newlib/libc/machine/i386/machine/_fpmath.h @@ -0,0 +1,56 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2002, 2003 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +union IEEEl2bits { + long double e; + struct { + unsigned int manl :32; + unsigned int manh :32; + unsigned int exp :15; + unsigned int sign :1; + unsigned int junk :16; + } bits; + struct { + unsigned long long man :64; + unsigned int expsign :16; + unsigned int junk :16; + } xbits; +}; + +#define LDBL_NBIT 0x80000000 +#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT) + +#define LDBL_MANH_SIZE 32 +#define LDBL_MANL_SIZE 32 + +#define LDBL_TO_ARRAY32(u, a) do { \ + (a)[0] = (uint32_t)(u).bits.manl; \ + (a)[1] = (uint32_t)(u).bits.manh; \ +} while (0) diff --git a/newlib/libc/machine/x86_64/machine/_fpmath.h b/newlib/libc/machine/x86_64/machine/_fpmath.h new file mode 100644 index 0000000000..8be7b7dbaf --- /dev/null +++ b/newlib/libc/machine/x86_64/machine/_fpmath.h @@ -0,0 +1,57 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2002, 2003 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +union IEEEl2bits { + long double e; + struct { + unsigned int manl :32; + unsigned int manh :32; + unsigned int exp :15; + unsigned int sign :1; + unsigned int junkl :16; + unsigned int junkh :32; + } bits; + struct { + unsigned long man :64; + unsigned int expsign :16; + unsigned long junk :48; + } xbits; +}; + +#define LDBL_NBIT 0x80000000 +#define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT) + +#define LDBL_MANH_SIZE 32 +#define LDBL_MANL_SIZE 32 + +#define LDBL_TO_ARRAY32(u, a) do { \ + (a)[0] = (uint32_t)(u).bits.manl; \ + (a)[1] = (uint32_t)(u).bits.manh; \ +} while (0) diff --git a/newlib/libm/ld/e_acoshl.c b/newlib/libm/ld/e_acoshl.c new file mode 100644 index 0000000000..59faeb0fb8 --- /dev/null +++ b/newlib/libm/ld/e_acoshl.c @@ -0,0 +1,89 @@ +/* from: FreeBSD: head/lib/msun/src/e_acosh.c 176451 2008-02-22 02:30:36Z das */ + +/* @(#)e_acosh.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See e_acosh.c for complete comments. + * + * Converted to long double by David Schultz and + * Bruce D. Evans. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +/* EXP_LARGE is the threshold above which we use acosh(x) ~= log(2x). */ +#if LDBL_MANT_DIG == 64 +#define EXP_LARGE 34 +#elif LDBL_MANT_DIG == 113 +#define EXP_LARGE 58 +#else +#error "Unsupported long double format" +#endif + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual expsign encoding. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const double +one = 1.0; + +#if LDBL_MANT_DIG == 64 +static const union IEEEl2bits +u_ln2 = LD80C(0xb17217f7d1cf79ac, -1, 6.93147180559945309417e-1L); +#define ln2 u_ln2.e +#elif LDBL_MANT_DIG == 113 +static const long double +ln2 = 6.93147180559945309417232121458176568e-1L; /* 0x162e42fefa39ef35793c7673007e6.0p-113 */ +#else +#error "Unsupported long double format" +#endif + +long double +acoshl(long double x) +{ + long double t; + int16_t hx; + + ENTERI(); + GET_LDBL_EXPSIGN(hx, x); + if (hx < 0x3fff) { /* x < 1, or misnormal */ + RETURNI((x-x)/(x-x)); + } else if (hx >= BIAS + EXP_LARGE) { /* x >= LARGE */ + if (hx >= 0x7fff) { /* x is inf, NaN or misnormal */ + RETURNI(x+x); + } else + RETURNI(logl(x)+ln2); /* acosh(huge)=log(2x), or misnormal */ + } else if (hx == 0x3fff && x == 1) { + RETURNI(0.0); /* acosh(1) = 0 */ + } else if (hx >= 0x4000) { /* LARGE > x >= 2, or misnormal */ + t=x*x; + RETURNI(logl(2.0*x-one/(x+sqrtl(t-one)))); + } else { /* 1 +__FBSDID("$FreeBSD$"); + +/* + * See comments in e_acos.c. + * Converted to long double by David Schultz . + */ + +#include + +#include "invtrig.h" +#include "math.h" +#include "math_private.h" + +static const long double +one= 1.00000000000000000000e+00; + +#ifdef __i386__ +/* XXX Work around the fact that gcc truncates long double constants on i386 */ +static volatile double +pi1 = 3.14159265358979311600e+00, /* 0x1.921fb54442d18p+1 */ +pi2 = 1.22514845490862001043e-16; /* 0x1.1a80000000000p-53 */ +#define pi ((long double)pi1 + pi2) +#else +static const long double +pi = 3.14159265358979323846264338327950280e+00L; +#endif + +long double +acosl(long double x) +{ + union IEEEl2bits u; + long double z,p,q,r,w,s,c,df; + int16_t expsign, expt; + u.e = x; + expsign = u.xbits.expsign; + expt = expsign & 0x7fff; + if(expt >= BIAS) { /* |x| >= 1 */ + if(expt==BIAS && ((u.bits.manh&~LDBL_NBIT)|u.bits.manl)==0) { + if (expsign>0) return 0.0; /* acos(1) = 0 */ + else return pi+2.0*pio2_lo; /* acos(-1)= pi */ + } + return (x-x)/(x-x); /* acos(|x|>1) is NaN */ + } + if(expt 0.5 */ + z = (one-x)*0.5; + s = sqrtl(z); + u.e = s; + u.bits.manl = 0; + df = u.e; + c = (z-df*df)/(s+df); + p = P(z); + q = Q(z); + r = p/q; + w = r*s+c; + return 2.0*(df+w); + } +} diff --git a/newlib/libm/ld/e_asinl.c b/newlib/libm/ld/e_asinl.c new file mode 100644 index 0000000000..066a591f40 --- /dev/null +++ b/newlib/libm/ld/e_asinl.c @@ -0,0 +1,77 @@ + +/* @(#)e_asin.c 1.3 95/01/18 */ +/* FreeBSD: head/lib/msun/src/e_asin.c 176451 2008-02-22 02:30:36Z das */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See comments in e_asin.c. + * Converted to long double by David Schultz . + */ + +#include + +#include "invtrig.h" +#include "math.h" +#include "math_private.h" + +static const long double +one = 1.00000000000000000000e+00, +huge = 1.000e+300; + +long double +asinl(long double x) +{ + union IEEEl2bits u; + long double t=0.0,w,p,q,c,r,s; + int16_t expsign, expt; + u.e = x; + expsign = u.xbits.expsign; + expt = expsign & 0x7fff; + if(expt >= BIAS) { /* |x|>= 1 */ + if(expt==BIAS && ((u.bits.manh&~LDBL_NBIT)|u.bits.manl)==0) + /* asin(1)=+-pi/2 with inexact */ + return x*pio2_hi+x*pio2_lo; + return (x-x)/(x-x); /* asin(|x|>1) is NaN */ + } else if (exptone) return x;/* return x with inexact if x!=0*/ + } + t = x*x; + p = P(t); + q = Q(t); + w = p/q; + return x+x*w; + } + /* 1> |x|>= 0.5 */ + w = one-fabsl(x); + t = w*0.5; + p = P(t); + q = Q(t); + s = sqrtl(t); + if(u.bits.manh>=THRESH) { /* if |x| is close to 1 */ + w = p/q; + t = pio2_hi-(2.0*(s+s*w)-pio2_lo); + } else { + u.e = s; + u.bits.manl = 0; + w = u.e; + c = (t-w*w)/(s+w); + r = p/q; + p = 2.0*s*r-(pio2_lo-2.0*c); + q = pio4_hi-2.0*w; + t = pio4_hi-(p-q); + } + if(expsign>0) return t; else return -t; +} diff --git a/newlib/libm/ld/e_atan2l.c b/newlib/libm/ld/e_atan2l.c new file mode 100644 index 0000000000..619bfb5958 --- /dev/null +++ b/newlib/libm/ld/e_atan2l.c @@ -0,0 +1,120 @@ + +/* @(#)e_atan2.c 1.3 95/01/18 */ +/* FreeBSD: head/lib/msun/src/e_atan2.c 176451 2008-02-22 02:30:36Z das */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See comments in e_atan2.c. + * Converted to long double by David Schultz . + */ + +#include + +#include "invtrig.h" +#include "math.h" +#include "math_private.h" + +static volatile long double +tiny = 1.0e-300; +static const long double +zero = 0.0; + +#ifdef __i386__ +/* XXX Work around the fact that gcc truncates long double constants on i386 */ +static volatile double +pi1 = 3.14159265358979311600e+00, /* 0x1.921fb54442d18p+1 */ +pi2 = 1.22514845490862001043e-16; /* 0x1.1a80000000000p-53 */ +#define pi ((long double)pi1 + pi2) +#else +static const long double +pi = 3.14159265358979323846264338327950280e+00L; +#endif + +long double +atan2l(long double y, long double x) +{ + union IEEEl2bits ux, uy; + long double z; + int32_t k,m; + int16_t exptx, expsignx, expty, expsigny; + + uy.e = y; + expsigny = uy.xbits.expsign; + expty = expsigny & 0x7fff; + ux.e = x; + expsignx = ux.xbits.expsign; + exptx = expsignx & 0x7fff; + + if ((exptx==BIAS+LDBL_MAX_EXP && + ((ux.bits.manh&~LDBL_NBIT)|ux.bits.manl)!=0) || /* x is NaN */ + (expty==BIAS+LDBL_MAX_EXP && + ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)!=0)) /* y is NaN */ + return nan_mix(x, y); + if (expsignx==BIAS && ((ux.bits.manh&~LDBL_NBIT)|ux.bits.manl)==0) + return atanl(y); /* x=1.0 */ + m = ((expsigny>>15)&1)|((expsignx>>14)&2); /* 2*sign(x)+sign(y) */ + + /* when y = 0 */ + if(expty==0 && ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)==0) { + switch(m) { + case 0: + case 1: return y; /* atan(+-0,+anything)=+-0 */ + case 2: return pi+tiny;/* atan(+0,-anything) = pi */ + case 3: return -pi-tiny;/* atan(-0,-anything) =-pi */ + } + } + /* when x = 0 */ + if(exptx==0 && ((ux.bits.manh&~LDBL_NBIT)|ux.bits.manl)==0) + return (expsigny<0)? -pio2_hi-tiny: pio2_hi+tiny; + + /* when x is INF */ + if(exptx==BIAS+LDBL_MAX_EXP) { + if(expty==BIAS+LDBL_MAX_EXP) { + switch(m) { + case 0: return pio2_hi*0.5+tiny;/* atan(+INF,+INF) */ + case 1: return -pio2_hi*0.5-tiny;/* atan(-INF,+INF) */ + case 2: return 1.5*pio2_hi+tiny;/*atan(+INF,-INF)*/ + case 3: return -1.5*pio2_hi-tiny;/*atan(-INF,-INF)*/ + } + } else { + switch(m) { + case 0: return zero ; /* atan(+...,+INF) */ + case 1: return -zero ; /* atan(-...,+INF) */ + case 2: return pi+tiny ; /* atan(+...,-INF) */ + case 3: return -pi-tiny ; /* atan(-...,-INF) */ + } + } + } + /* when y is INF */ + if(expty==BIAS+LDBL_MAX_EXP) + return (expsigny<0)? -pio2_hi-tiny: pio2_hi+tiny; + + /* compute y/x */ + k = expty-exptx; + if(k > LDBL_MANT_DIG+2) { /* |y/x| huge */ + z=pio2_hi+pio2_lo; + m&=1; + } + else if(expsignx<0&&k<-LDBL_MANT_DIG-2) z=0.0; /* |y/x| tiny, x<0 */ + else z=atanl(fabsl(y/x)); /* safe to do y/x */ + switch (m) { + case 0: return z ; /* atan(+,+) */ + case 1: return -z ; /* atan(-,+) */ + case 2: return pi-(z-pi_lo);/* atan(+,-) */ + default: /* case 3 */ + return (z-pi_lo)-pi;/* atan(-,-) */ + } +} diff --git a/newlib/libm/ld/e_atanhl.c b/newlib/libm/ld/e_atanhl.c new file mode 100644 index 0000000000..a888426d00 --- /dev/null +++ b/newlib/libm/ld/e_atanhl.c @@ -0,0 +1,74 @@ +/* from: FreeBSD: head/lib/msun/src/e_atanh.c 176451 2008-02-22 02:30:36Z das */ + +/* @(#)e_atanh.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See e_atanh.c for complete comments. + * + * Converted to long double by David Schultz and + * Bruce D. Evans. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +/* EXP_TINY is the threshold below which we use atanh(x) ~= x. */ +#if LDBL_MANT_DIG == 64 +#define EXP_TINY -34 +#elif LDBL_MANT_DIG == 113 +#define EXP_TINY -58 +#else +#error "Unsupported long double format" +#endif + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual expsign encoding. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const double one = 1.0, huge = 1e300; +static const double zero = 0.0; + +long double +atanhl(long double x) +{ + long double t; + uint16_t hx, ix; + + ENTERI(); + GET_LDBL_EXPSIGN(hx, x); + ix = hx & 0x7fff; + if (ix >= 0x3fff) /* |x| >= 1, or NaN or misnormal */ + RETURNI(fabsl(x) == 1 ? x / zero : (x - x) / (x - x)); + if (ix < BIAS + EXP_TINY && (huge + x) > zero) + RETURNI(x); /* x is tiny */ + SET_LDBL_EXPSIGN(x, ix); + if (ix < 0x3ffe) { /* |x| < 0.5, or misnormal */ + t = x+x; + t = 0.5*log1pl(t+t*x/(one-x)); + } else + t = 0.5*log1pl((x+x)/(one-x)); + RETURNI((hx & 0x8000) == 0 ? t : -t); +} diff --git a/newlib/libm/ld/e_coshl.c b/newlib/libm/ld/e_coshl.c new file mode 100644 index 0000000000..4e3b28311e --- /dev/null +++ b/newlib/libm/ld/e_coshl.c @@ -0,0 +1,132 @@ +/* from: FreeBSD: head/lib/msun/src/e_coshl.c XXX */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See e_cosh.c for complete comments. + * + * Converted to long double by Bruce D. Evans. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" +#include "k_expl.h" + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual expsign encoding. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const volatile long double huge = 0x1p10000L, tiny = 0x1p-10000L; +#if LDBL_MANT_DIG == 64 +/* + * Domain [-1, 1], range ~[-1.8211e-21, 1.8211e-21]: + * |cosh(x) - c(x)| < 2**-68.8 + */ +static const union IEEEl2bits +C4u = LD80C(0xaaaaaaaaaaaaac78, -5, 4.16666666666666682297e-2L); +#define C4 C4u.e +static const double +C2 = 0.5, +C6 = 1.3888888888888616e-3, /* 0x16c16c16c16b99.0p-62 */ +C8 = 2.4801587301767953e-5, /* 0x1a01a01a027061.0p-68 */ +C10 = 2.7557319163300398e-7, /* 0x127e4fb6c9b55f.0p-74 */ +C12 = 2.0876768371393075e-9, /* 0x11eed99406a3f4.0p-81 */ +C14 = 1.1469537039374480e-11, /* 0x1938c67cd18c48.0p-89 */ +C16 = 4.8473490896852041e-14; /* 0x1b49c429701e45.0p-97 */ +#elif LDBL_MANT_DIG == 113 +/* + * Domain [-1, 1], range ~[-2.3194e-37, 2.3194e-37]: + * |cosh(x) - c(x)| < 2**-121.69 + */ +static const long double +C4 = 4.16666666666666666666666666666666225e-2L, /* 0x1555555555555555555555555554e.0p-117L */ +C6 = 1.38888888888888888888888888889434831e-3L, /* 0x16c16c16c16c16c16c16c16c1dd7a.0p-122L */ +C8 = 2.48015873015873015873015871870962089e-5L, /* 0x1a01a01a01a01a01a01a017af2756.0p-128L */ +C10 = 2.75573192239858906525574318600800201e-7L, /* 0x127e4fb7789f5c72ef01c8a040640.0p-134L */ +C12 = 2.08767569878680989791444691755468269e-9L, /* 0x11eed8eff8d897b543d0679607399.0p-141L */ +C14= 1.14707455977297247387801189650495351e-11L, /* 0x193974a8c07c9d24ae169a7fa9b54.0p-149L */ +C16 = 4.77947733238737883626416876486279985e-14L; /* 0x1ae7f3e733b814d4e1b90f5727fe4.0p-157L */ +static const double +C2 = 0.5, +C18 = 1.5619206968597871e-16, /* 0x16827863b9900b.0p-105 */ +C20 = 4.1103176218528049e-19, /* 0x1e542ba3d3c269.0p-114 */ +C22 = 8.8967926401641701e-22, /* 0x10ce399542a014.0p-122 */ +C24 = 1.6116681626523904e-24, /* 0x1f2c981d1f0cb7.0p-132 */ +C26 = 2.5022374732804632e-27; /* 0x18c7ecf8b2c4a0.0p-141 */ +#else +#error "Unsupported long double format" +#endif /* LDBL_MANT_DIG == 64 */ + +/* log(2**16385 - 0.5) rounded up: */ +static const float +o_threshold = 1.13572168e4; /* 0xb174de.0p-10 */ + +long double +coshl(long double x) +{ + long double hi,lo,x2,x4; +#if LDBL_MANT_DIG == 113 + double dx2; +#endif + uint16_t ix; + + GET_LDBL_EXPSIGN(ix,x); + ix &= 0x7fff; + + /* x is INF or NaN */ + if(ix>=0x7fff) return x*x; + + ENTERI(); + + /* |x| < 1, return 1 or c(x) */ + if(ix<0x3fff) { + if (ix o_threshold, cosh(x) overflow */ + RETURNI(huge*huge); +} diff --git a/newlib/libm/ld/e_fmodl.c b/newlib/libm/ld/e_fmodl.c new file mode 100644 index 0000000000..c7689b9ad8 --- /dev/null +++ b/newlib/libm/ld/e_fmodl.c @@ -0,0 +1,149 @@ +/* @(#)e_fmod.c 1.3 95/01/18 */ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#define BIAS (LDBL_MAX_EXP - 1) + +#if LDBL_MANL_SIZE > 32 +typedef uint64_t manl_t; +#else +typedef uint32_t manl_t; +#endif + +#if LDBL_MANH_SIZE > 32 +typedef uint64_t manh_t; +#else +typedef uint32_t manh_t; +#endif + +/* + * These macros add and remove an explicit integer bit in front of the + * fractional mantissa, if the architecture doesn't have such a bit by + * default already. + */ +#ifdef LDBL_IMPLICIT_NBIT +#define SET_NBIT(hx) ((hx) | (1ULL << LDBL_MANH_SIZE)) +#define HFRAC_BITS LDBL_MANH_SIZE +#else +#define SET_NBIT(hx) (hx) +#define HFRAC_BITS (LDBL_MANH_SIZE - 1) +#endif + +#define MANL_SHIFT (LDBL_MANL_SIZE - 1) + +static const long double one = 1.0, Zero[] = {0.0, -0.0,}; + +/* + * fmodl(x,y) + * Return x mod y in exact arithmetic + * Method: shift and subtract + * + * Assumptions: + * - The low part of the mantissa fits in a manl_t exactly. + * - The high part of the mantissa fits in an int64_t with enough room + * for an explicit integer bit in front of the fractional bits. + */ +long double +fmodl(long double x, long double y) +{ + union IEEEl2bits ux, uy; + int64_t hx,hz; /* We need a carry bit even if LDBL_MANH_SIZE is 32. */ + manh_t hy; + manl_t lx,ly,lz; + int ix,iy,n,sx; + + ux.e = x; + uy.e = y; + sx = ux.bits.sign; + + /* purge off exception values */ + if((uy.bits.exp|uy.bits.manh|uy.bits.manl)==0 || /* y=0 */ + (ux.bits.exp == BIAS + LDBL_MAX_EXP) || /* or x not finite */ + (uy.bits.exp == BIAS + LDBL_MAX_EXP && + ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)!=0)) /* or y is NaN */ + return nan_mix_op(x, y, *)/nan_mix_op(x, y, *); + if(ux.bits.exp<=uy.bits.exp) { + if((ux.bits.exp>MANL_SHIFT); lx = lx+lx;} + else { + if ((hz|lz)==0) /* return sign(x)*0 */ + return Zero[sx]; + hx = hz+hz+(lz>>MANL_SHIFT); lx = lz+lz; + } + } + hz=hx-hy;lz=lx-ly; if(lx=0) {hx=hz;lx=lz;} + + /* convert back to floating value and restore the sign */ + if((hx|lx)==0) /* return sign(x)*0 */ + return Zero[sx]; + while(hx<(1ULL<>MANL_SHIFT); lx = lx+lx; + iy -= 1; + } + ux.bits.manh = hx; /* The mantissa is truncated here if needed. */ + ux.bits.manl = lx; + if (iy < LDBL_MIN_EXP) { + ux.bits.exp = iy + (BIAS + 512); + ux.e *= 0x1p-512; + } else { + ux.bits.exp = iy + BIAS; + } + x = ux.e * one; /* create necessary signal */ + return x; /* exact output */ +} diff --git a/newlib/libm/ld/e_lgammal.c b/newlib/libm/ld/e_lgammal.c new file mode 100644 index 0000000000..ebc2fc78cb --- /dev/null +++ b/newlib/libm/ld/e_lgammal.c @@ -0,0 +1,25 @@ +/* @(#)e_lgamma.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "math.h" +#include "math_private.h" + +extern int signgam; + +long double +lgammal(long double x) +{ + return lgammal_r(x,&signgam); +} diff --git a/newlib/libm/ld/e_remainderl.c b/newlib/libm/ld/e_remainderl.c new file mode 100644 index 0000000000..4a6786309f --- /dev/null +++ b/newlib/libm/ld/e_remainderl.c @@ -0,0 +1,40 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +long double +remainderl(long double x, long double y) +{ + int quo; + + return (remquol(x, y, &quo)); +} diff --git a/newlib/libm/ld/e_sinhl.c b/newlib/libm/ld/e_sinhl.c new file mode 100644 index 0000000000..38d3df1959 --- /dev/null +++ b/newlib/libm/ld/e_sinhl.c @@ -0,0 +1,134 @@ +/* from: FreeBSD: head/lib/msun/src/e_sinhl.c XXX */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See e_sinh.c for complete comments. + * + * Converted to long double by Bruce D. Evans. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" +#include "k_expl.h" + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual expsign encoding. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const long double shuge = 0x1p16383L; +#if LDBL_MANT_DIG == 64 +/* + * Domain [-1, 1], range ~[-6.6749e-22, 6.6749e-22]: + * |sinh(x)/x - s(x)| < 2**-70.3 + */ +static const union IEEEl2bits +S3u = LD80C(0xaaaaaaaaaaaaaaaa, -3, 1.66666666666666666658e-1L); +#define S3 S3u.e +static const double +S5 = 8.3333333333333332e-3, /* 0x11111111111111.0p-59 */ +S7 = 1.9841269841270074e-4, /* 0x1a01a01a01a070.0p-65 */ +S9 = 2.7557319223873889e-6, /* 0x171de3a5565fe6.0p-71 */ +S11 = 2.5052108406704084e-8, /* 0x1ae6456857530f.0p-78 */ +S13 = 1.6059042748655297e-10, /* 0x161245fa910697.0p-85 */ +S15 = 7.6470006914396920e-13, /* 0x1ae7ce4eff2792.0p-93 */ +S17 = 2.8346142308424267e-15; /* 0x19882ce789ffc6.0p-101 */ +#elif LDBL_MANT_DIG == 113 +/* + * Domain [-1, 1], range ~[-2.9673e-36, 2.9673e-36]: + * |sinh(x)/x - s(x)| < 2**-118.0 + */ +static const long double +S3 = 1.66666666666666666666666666666666033e-1L, /* 0x1555555555555555555555555553b.0p-115L */ +S5 = 8.33333333333333333333333333337643193e-3L, /* 0x111111111111111111111111180f5.0p-119L */ +S7 = 1.98412698412698412698412697391263199e-4L, /* 0x1a01a01a01a01a01a01a0176aad11.0p-125L */ +S9 = 2.75573192239858906525574406205464218e-6L, /* 0x171de3a556c7338faac243aaa9592.0p-131L */ +S11 = 2.50521083854417187749675637460977997e-8L, /* 0x1ae64567f544e38fe59b3380d7413.0p-138L */ +S13 = 1.60590438368216146368737762431552702e-10L, /* 0x16124613a86d098059c7620850fc2.0p-145L */ +S15 = 7.64716373181980539786802470969096440e-13L, /* 0x1ae7f3e733b814193af09ce723043.0p-153L */ +S17 = 2.81145725434775409870584280722701574e-15L; /* 0x1952c77030c36898c3fd0b6dfc562.0p-161L */ +static const double +S19= 8.2206352435411005e-18, /* 0x12f49b4662b86d.0p-109 */ +S21= 1.9572943931418891e-20, /* 0x171b8f2fab9628.0p-118 */ +S23 = 3.8679983530666939e-23, /* 0x17617002b73afc.0p-127 */ +S25 = 6.5067867911512749e-26; /* 0x1423352626048a.0p-136 */ +#else +#error "Unsupported long double format" +#endif /* LDBL_MANT_DIG == 64 */ + +/* log(2**16385 - 0.5) rounded up: */ +static const float +o_threshold = 1.13572168e4; /* 0xb174de.0p-10 */ + +long double +sinhl(long double x) +{ + long double hi,lo,x2,x4; +#if LDBL_MANT_DIG == 113 + double dx2; +#endif + double s; + int16_t ix,jx; + + GET_LDBL_EXPSIGN(jx,x); + ix = jx&0x7fff; + + /* x is INF or NaN */ + if(ix>=0x7fff) return x+x; + + ENTERI(); + + s = 1; + if (jx<0) s = -1; + + /* |x| < 64, return x, s(x), or accurate s*(exp(|x|)/2-1/exp(|x|)/2) */ + if (ix<0x4005) { /* |x|<64 */ + if (ix1) RETURNI(x); /* sinh(tiny) = tiny with inexact */ + if (ix<0x3fff) { /* |x|<1 */ + x2 = x*x; +#if LDBL_MANT_DIG == 64 + x4 = x2*x2; + RETURNI(((S17*x2 + S15)*x4 + (S13*x2 + S11))*(x2*x*x4*x4) + + ((S9*x2 + S7)*x2 + S5)*(x2*x*x2) + S3*(x2*x) + x); +#elif LDBL_MANT_DIG == 113 + dx2 = x2; + RETURNI(((((((((((S25*dx2 + S23)*dx2 + + S21)*x2 + S19)*x2 + + S17)*x2 + S15)*x2 + S13)*x2 + S11)*x2 + S9)*x2 + S7)*x2 + + S5)* (x2*x*x2) + + S3*(x2*x) + x); +#endif + } + k_hexpl(fabsl(x), &hi, &lo); + RETURNI(s*(lo - 0.25/(hi + lo) + hi)); + } + + /* |x| in [64, o_threshold], return correctly-overflowing s*exp(|x|)/2 */ + if (fabsl(x) <= o_threshold) + RETURNI(s*hexpl(fabsl(x))); + + /* |x| > o_threshold, sinh(x) overflow */ + return x*shuge; +} diff --git a/newlib/libm/ld/fpmath.h b/newlib/libm/ld/fpmath.h new file mode 100644 index 0000000000..ce935eb403 --- /dev/null +++ b/newlib/libm/ld/fpmath.h @@ -0,0 +1,82 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2003 Mike Barcroft + * Copyright (c) 2002 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _FPMATH_H_ +#define _FPMATH_H_ + +#include +#include "_fpmath.h" + +#ifndef _IEEE_WORD_ORDER +#define _IEEE_WORD_ORDER _BYTE_ORDER +#endif + +union IEEEf2bits { + float f; + struct { +#if _BYTE_ORDER == _LITTLE_ENDIAN + unsigned int man :23; + unsigned int exp :8; + unsigned int sign :1; +#else /* _BIG_ENDIAN */ + unsigned int sign :1; + unsigned int exp :8; + unsigned int man :23; +#endif + } bits; +}; + +#define DBL_MANH_SIZE 20 +#define DBL_MANL_SIZE 32 + +union IEEEd2bits { + double d; + struct { +#if _BYTE_ORDER == _LITTLE_ENDIAN +#if _IEEE_WORD_ORDER == _LITTLE_ENDIAN + unsigned int manl :32; +#endif + unsigned int manh :20; + unsigned int exp :11; + unsigned int sign :1; +#if _IEEE_WORD_ORDER == _BIG_ENDIAN + unsigned int manl :32; +#endif +#else /* _BIG_ENDIAN */ + unsigned int sign :1; + unsigned int exp :11; + unsigned int manh :20; + unsigned int manl :32; +#endif + } bits; +}; + +#endif /* !_FPMATH_H */ diff --git a/newlib/libm/ld/math_private.h b/newlib/libm/ld/math_private.h new file mode 100644 index 0000000000..c6d06fb145 --- /dev/null +++ b/newlib/libm/ld/math_private.h @@ -0,0 +1,924 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * from: @(#)fdlibm.h 5.1 93/09/24 + * $FreeBSD$ + */ + +#ifndef _MATH_PRIVATE_H_ +#define _MATH_PRIVATE_H_ + +#include +#include + +/* + * The original fdlibm code used statements like: + * n0 = ((*(int*)&one)>>29)^1; * index of high word * + * ix0 = *(n0+(int*)&x); * high word of x * + * ix1 = *((1-n0)+(int*)&x); * low word of x * + * to dig two 32 bit words out of the 64 bit IEEE floating point + * value. That is non-ANSI, and, moreover, the gcc instruction + * scheduler gets it wrong. We instead use the following macros. + * Unlike the original code, we determine the endianness at compile + * time, not at run time; I don't see much benefit to selecting + * endianness at run time. + */ + +/* + * A union which permits us to convert between a double and two 32 bit + * ints. + */ + +#ifdef __arm__ +#if defined(__VFP_FP__) || defined(__ARM_EABI__) +#define IEEE_WORD_ORDER BYTE_ORDER +#else +#define IEEE_WORD_ORDER BIG_ENDIAN +#endif +#else /* __arm__ */ +#define IEEE_WORD_ORDER BYTE_ORDER +#endif + +/* A union which permits us to convert between a long double and + four 32 bit ints. */ + +#if IEEE_WORD_ORDER == BIG_ENDIAN + +typedef union +{ + long double value; + struct { + u_int32_t mswhi; + u_int32_t mswlo; + u_int32_t lswhi; + u_int32_t lswlo; + } parts32; + struct { + u_int64_t msw; + u_int64_t lsw; + } parts64; +} ieee_quad_shape_type; + +#endif + +#if IEEE_WORD_ORDER == LITTLE_ENDIAN + +typedef union +{ + long double value; + struct { + u_int32_t lswlo; + u_int32_t lswhi; + u_int32_t mswlo; + u_int32_t mswhi; + } parts32; + struct { + u_int64_t lsw; + u_int64_t msw; + } parts64; +} ieee_quad_shape_type; + +#endif + +#if IEEE_WORD_ORDER == BIG_ENDIAN + +typedef union +{ + double value; + struct + { + u_int32_t msw; + u_int32_t lsw; + } parts; + struct + { + u_int64_t w; + } xparts; +} ieee_double_shape_type; + +#endif + +#if IEEE_WORD_ORDER == LITTLE_ENDIAN + +typedef union +{ + double value; + struct + { + u_int32_t lsw; + u_int32_t msw; + } parts; + struct + { + u_int64_t w; + } xparts; +} ieee_double_shape_type; + +#endif + +/* Get two 32 bit ints from a double. */ + +#define EXTRACT_WORDS(ix0,ix1,d) \ +do { \ + ieee_double_shape_type ew_u; \ + ew_u.value = (d); \ + (ix0) = ew_u.parts.msw; \ + (ix1) = ew_u.parts.lsw; \ +} while (0) + +/* Get a 64-bit int from a double. */ +#define EXTRACT_WORD64(ix,d) \ +do { \ + ieee_double_shape_type ew_u; \ + ew_u.value = (d); \ + (ix) = ew_u.xparts.w; \ +} while (0) + +/* Get the more significant 32 bit int from a double. */ + +#define GET_HIGH_WORD(i,d) \ +do { \ + ieee_double_shape_type gh_u; \ + gh_u.value = (d); \ + (i) = gh_u.parts.msw; \ +} while (0) + +/* Get the less significant 32 bit int from a double. */ + +#define GET_LOW_WORD(i,d) \ +do { \ + ieee_double_shape_type gl_u; \ + gl_u.value = (d); \ + (i) = gl_u.parts.lsw; \ +} while (0) + +/* Set a double from two 32 bit ints. */ + +#define INSERT_WORDS(d,ix0,ix1) \ +do { \ + ieee_double_shape_type iw_u; \ + iw_u.parts.msw = (ix0); \ + iw_u.parts.lsw = (ix1); \ + (d) = iw_u.value; \ +} while (0) + +/* Set a double from a 64-bit int. */ +#define INSERT_WORD64(d,ix) \ +do { \ + ieee_double_shape_type iw_u; \ + iw_u.xparts.w = (ix); \ + (d) = iw_u.value; \ +} while (0) + +/* Set the more significant 32 bits of a double from an int. */ + +#define SET_HIGH_WORD(d,v) \ +do { \ + ieee_double_shape_type sh_u; \ + sh_u.value = (d); \ + sh_u.parts.msw = (v); \ + (d) = sh_u.value; \ +} while (0) + +/* Set the less significant 32 bits of a double from an int. */ + +#define SET_LOW_WORD(d,v) \ +do { \ + ieee_double_shape_type sl_u; \ + sl_u.value = (d); \ + sl_u.parts.lsw = (v); \ + (d) = sl_u.value; \ +} while (0) + +/* + * A union which permits us to convert between a float and a 32 bit + * int. + */ + +typedef union +{ + float value; + /* FIXME: Assumes 32 bit int. */ + unsigned int word; +} ieee_float_shape_type; + +/* Get a 32 bit int from a float. */ + +#define GET_FLOAT_WORD(i,d) \ +do { \ + ieee_float_shape_type gf_u; \ + gf_u.value = (d); \ + (i) = gf_u.word; \ +} while (0) + +/* Set a float from a 32 bit int. */ + +#define SET_FLOAT_WORD(d,i) \ +do { \ + ieee_float_shape_type sf_u; \ + sf_u.word = (i); \ + (d) = sf_u.value; \ +} while (0) + +/* + * Get expsign and mantissa as 16 bit and 64 bit ints from an 80 bit long + * double. + */ + +#define EXTRACT_LDBL80_WORDS(ix0,ix1,d) \ +do { \ + union IEEEl2bits ew_u; \ + ew_u.e = (d); \ + (ix0) = ew_u.xbits.expsign; \ + (ix1) = ew_u.xbits.man; \ +} while (0) + +/* + * Get expsign and mantissa as one 16 bit and two 64 bit ints from a 128 bit + * long double. + */ + +#define EXTRACT_LDBL128_WORDS(ix0,ix1,ix2,d) \ +do { \ + union IEEEl2bits ew_u; \ + ew_u.e = (d); \ + (ix0) = ew_u.xbits.expsign; \ + (ix1) = ew_u.xbits.manh; \ + (ix2) = ew_u.xbits.manl; \ +} while (0) + +/* Get expsign as a 16 bit int from a long double. */ + +#define GET_LDBL_EXPSIGN(i,d) \ +do { \ + union IEEEl2bits ge_u; \ + ge_u.e = (d); \ + (i) = ge_u.xbits.expsign; \ +} while (0) + +/* + * Set an 80 bit long double from a 16 bit int expsign and a 64 bit int + * mantissa. + */ + +#define INSERT_LDBL80_WORDS(d,ix0,ix1) \ +do { \ + union IEEEl2bits iw_u; \ + iw_u.xbits.expsign = (ix0); \ + iw_u.xbits.man = (ix1); \ + (d) = iw_u.e; \ +} while (0) + +/* + * Set a 128 bit long double from a 16 bit int expsign and two 64 bit ints + * comprising the mantissa. + */ + +#define INSERT_LDBL128_WORDS(d,ix0,ix1,ix2) \ +do { \ + union IEEEl2bits iw_u; \ + iw_u.xbits.expsign = (ix0); \ + iw_u.xbits.manh = (ix1); \ + iw_u.xbits.manl = (ix2); \ + (d) = iw_u.e; \ +} while (0) + +/* Set expsign of a long double from a 16 bit int. */ + +#define SET_LDBL_EXPSIGN(d,v) \ +do { \ + union IEEEl2bits se_u; \ + se_u.e = (d); \ + se_u.xbits.expsign = (v); \ + (d) = se_u.e; \ +} while (0) + +#ifdef __i386__ +/* Long double constants are broken on i386. */ +#define LD80C(m, ex, v) { \ + .xbits.man = __CONCAT(m, ULL), \ + .xbits.expsign = (0x3fff + (ex)) | ((v) < 0 ? 0x8000 : 0), \ +} +#else +/* The above works on non-i386 too, but we use this to check v. */ +#define LD80C(m, ex, v) { .e = (v), } +#endif + +#ifdef FLT_EVAL_METHOD +/* + * Attempt to get strict C99 semantics for assignment with non-C99 compilers. + */ +#if FLT_EVAL_METHOD == 0 || __GNUC__ == 0 +#define STRICT_ASSIGN(type, lval, rval) ((lval) = (rval)) +#else +#define STRICT_ASSIGN(type, lval, rval) do { \ + volatile type __lval; \ + \ + if (sizeof(type) >= sizeof(long double)) \ + (lval) = (rval); \ + else { \ + __lval = (rval); \ + (lval) = __lval; \ + } \ +} while (0) +#endif +#endif /* FLT_EVAL_METHOD */ + +/* Support switching the mode to FP_PE if necessary. */ +#if defined(__i386__) && !defined(NO_FPSETPREC) +#define ENTERI() ENTERIT(long double) +#define ENTERIT(returntype) \ + returntype __retval; \ + fp_prec_t __oprec; \ + \ + if ((__oprec = fpgetprec()) != FP_PE) \ + fpsetprec(FP_PE) +#define RETURNI(x) do { \ + __retval = (x); \ + if (__oprec != FP_PE) \ + fpsetprec(__oprec); \ + RETURNF(__retval); \ +} while (0) +#define ENTERV() \ + fp_prec_t __oprec; \ + \ + if ((__oprec = fpgetprec()) != FP_PE) \ + fpsetprec(FP_PE) +#define RETURNV() do { \ + if (__oprec != FP_PE) \ + fpsetprec(__oprec); \ + return; \ +} while (0) +#else +#define ENTERI() +#define ENTERIT(x) +#define RETURNI(x) RETURNF(x) +#define ENTERV() +#define RETURNV() return +#endif + +/* Default return statement if hack*_t() is not used. */ +#define RETURNF(v) return (v) + +/* + * 2sum gives the same result as 2sumF without requiring |a| >= |b| or + * a == 0, but is slower. + */ +#define _2sum(a, b) do { \ + __typeof(a) __s, __w; \ + \ + __w = (a) + (b); \ + __s = __w - (a); \ + (b) = ((a) - (__w - __s)) + ((b) - __s); \ + (a) = __w; \ +} while (0) + +/* + * 2sumF algorithm. + * + * "Normalize" the terms in the infinite-precision expression a + b for + * the sum of 2 floating point values so that b is as small as possible + * relative to 'a'. (The resulting 'a' is the value of the expression in + * the same precision as 'a' and the resulting b is the rounding error.) + * |a| must be >= |b| or 0, b's type must be no larger than 'a's type, and + * exponent overflow or underflow must not occur. This uses a Theorem of + * Dekker (1971). See Knuth (1981) 4.2.2 Theorem C. The name "TwoSum" + * is apparently due to Skewchuk (1997). + * + * For this to always work, assignment of a + b to 'a' must not retain any + * extra precision in a + b. This is required by C standards but broken + * in many compilers. The brokenness cannot be worked around using + * STRICT_ASSIGN() like we do elsewhere, since the efficiency of this + * algorithm would be destroyed by non-null strict assignments. (The + * compilers are correct to be broken -- the efficiency of all floating + * point code calculations would be destroyed similarly if they forced the + * conversions.) + * + * Fortunately, a case that works well can usually be arranged by building + * any extra precision into the type of 'a' -- 'a' should have type float_t, + * double_t or long double. b's type should be no larger than 'a's type. + * Callers should use these types with scopes as large as possible, to + * reduce their own extra-precision and efficiciency problems. In + * particular, they shouldn't convert back and forth just to call here. + */ +#ifdef DEBUG +#define _2sumF(a, b) do { \ + __typeof(a) __w; \ + volatile __typeof(a) __ia, __ib, __r, __vw; \ + \ + __ia = (a); \ + __ib = (b); \ + assert(__ia == 0 || fabsl(__ia) >= fabsl(__ib)); \ + \ + __w = (a) + (b); \ + (b) = ((a) - __w) + (b); \ + (a) = __w; \ + \ + /* The next 2 assertions are weak if (a) is already long double. */ \ + assert((long double)__ia + __ib == (long double)(a) + (b)); \ + __vw = __ia + __ib; \ + __r = __ia - __vw; \ + __r += __ib; \ + assert(__vw == (a) && __r == (b)); \ +} while (0) +#else /* !DEBUG */ +#define _2sumF(a, b) do { \ + __typeof(a) __w; \ + \ + __w = (a) + (b); \ + (b) = ((a) - __w) + (b); \ + (a) = __w; \ +} while (0) +#endif /* DEBUG */ + +/* + * Set x += c, where x is represented in extra precision as a + b. + * x must be sufficiently normalized and sufficiently larger than c, + * and the result is then sufficiently normalized. + * + * The details of ordering are that |a| must be >= |c| (so that (a, c) + * can be normalized without extra work to swap 'a' with c). The details of + * the normalization are that b must be small relative to the normalized 'a'. + * Normalization of (a, c) makes the normalized c tiny relative to the + * normalized a, so b remains small relative to 'a' in the result. However, + * b need not ever be tiny relative to 'a'. For example, b might be about + * 2**20 times smaller than 'a' to give about 20 extra bits of precision. + * That is usually enough, and adding c (which by normalization is about + * 2**53 times smaller than a) cannot change b significantly. However, + * cancellation of 'a' with c in normalization of (a, c) may reduce 'a' + * significantly relative to b. The caller must ensure that significant + * cancellation doesn't occur, either by having c of the same sign as 'a', + * or by having |c| a few percent smaller than |a|. Pre-normalization of + * (a, b) may help. + * + * This is a variant of an algorithm of Kahan (see Knuth (1981) 4.2.2 + * exercise 19). We gain considerable efficiency by requiring the terms to + * be sufficiently normalized and sufficiently increasing. + */ +#define _3sumF(a, b, c) do { \ + __typeof(a) __tmp; \ + \ + __tmp = (c); \ + _2sumF(__tmp, (a)); \ + (b) += (a); \ + (a) = __tmp; \ +} while (0) + +/* + * Common routine to process the arguments to nan(), nanf(), and nanl(). + */ +void _scan_nan(uint32_t *__words, int __num_words, const char *__s); + +/* + * Mix 0, 1 or 2 NaNs. First add 0 to each arg. This normally just turns + * signaling NaNs into quiet NaNs by setting a quiet bit. We do this + * because we want to never return a signaling NaN, and also because we + * don't want the quiet bit to affect the result. Then mix the converted + * args using the specified operation. + * + * When one arg is NaN, the result is typically that arg quieted. When both + * args are NaNs, the result is typically the quietening of the arg whose + * mantissa is largest after quietening. When neither arg is NaN, the + * result may be NaN because it is indeterminate, or finite for subsequent + * construction of a NaN as the indeterminate 0.0L/0.0L. + * + * Technical complications: the result in bits after rounding to the final + * precision might depend on the runtime precision and/or on compiler + * optimizations, especially when different register sets are used for + * different precisions. Try to make the result not depend on at least the + * runtime precision by always doing the main mixing step in long double + * precision. Try to reduce dependencies on optimizations by adding the + * the 0's in different precisions (unless everything is in long double + * precision). + */ +#define nan_mix(x, y) (nan_mix_op((x), (y), +)) +#define nan_mix_op(x, y, op) (((x) + 0.0L) op ((y) + 0)) + +#ifdef _COMPLEX_H + +/* + * C99 specifies that complex numbers have the same representation as + * an array of two elements, where the first element is the real part + * and the second element is the imaginary part. + */ +typedef union { + float complex f; + float a[2]; +} float_complex; +typedef union { + double complex f; + double a[2]; +} double_complex; +typedef union { + long double complex f; + long double a[2]; +} long_double_complex; +#define REALPART(z) ((z).a[0]) +#define IMAGPART(z) ((z).a[1]) + +/* + * Inline functions that can be used to construct complex values. + * + * The C99 standard intends x+I*y to be used for this, but x+I*y is + * currently unusable in general since gcc introduces many overflow, + * underflow, sign and efficiency bugs by rewriting I*y as + * (0.0+I)*(y+0.0*I) and laboriously computing the full complex product. + * In particular, I*Inf is corrupted to NaN+I*Inf, and I*-0 is corrupted + * to -0.0+I*0.0. + * + * The C11 standard introduced the macros CMPLX(), CMPLXF() and CMPLXL() + * to construct complex values. Compilers that conform to the C99 + * standard require the following functions to avoid the above issues. + */ + +#ifndef CMPLXF +static __inline float complex +CMPLXF(float x, float y) +{ + float_complex z; + + REALPART(z) = x; + IMAGPART(z) = y; + return (z.f); +} +#endif + +#ifndef CMPLX +static __inline double complex +CMPLX(double x, double y) +{ + double_complex z; + + REALPART(z) = x; + IMAGPART(z) = y; + return (z.f); +} +#endif + +#ifndef CMPLXL +static __inline long double complex +CMPLXL(long double x, long double y) +{ + long_double_complex z; + + REALPART(z) = x; + IMAGPART(z) = y; + return (z.f); +} +#endif + +#endif /* _COMPLEX_H */ + +/* + * The rnint() family rounds to the nearest integer for a restricted range + * range of args (up to about 2**MANT_DIG). We assume that the current + * rounding mode is FE_TONEAREST so that this can be done efficiently. + * Extra precision causes more problems in practice, and we only centralize + * this here to reduce those problems, and have not solved the efficiency + * problems. The exp2() family uses a more delicate version of this that + * requires extracting bits from the intermediate value, so it is not + * centralized here and should copy any solution of the efficiency problems. + */ + +static inline double +rnint(__double_t x) +{ + /* + * This casts to double to kill any extra precision. This depends + * on the cast being applied to a double_t to avoid compiler bugs + * (this is a cleaner version of STRICT_ASSIGN()). This is + * inefficient if there actually is extra precision, but is hard + * to improve on. We use double_t in the API to minimise conversions + * for just calling here. Note that we cannot easily change the + * magic number to the one that works directly with double_t, since + * the rounding precision is variable at runtime on x86 so the + * magic number would need to be variable. Assuming that the + * rounding precision is always the default is too fragile. This + * and many other complications will move when the default is + * changed to FP_PE. + */ + return ((double)(x + 0x1.8p52) - 0x1.8p52); +} + +static inline float +rnintf(__float_t x) +{ + /* + * As for rnint(), except we could just call that to handle the + * extra precision case, usually without losing efficiency. + */ + return ((float)(x + 0x1.8p23F) - 0x1.8p23F); +} + +#ifdef LDBL_MANT_DIG +/* + * The complications for extra precision are smaller for rnintl() since it + * can safely assume that the rounding precision has been increased from + * its default to FP_PE on x86. We don't exploit that here to get small + * optimizations from limiting the rangle to double. We just need it for + * the magic number to work with long doubles. ld128 callers should use + * rnint() instead of this if possible. ld80 callers should prefer + * rnintl() since for amd64 this avoids swapping the register set, while + * for i386 it makes no difference (assuming FP_PE), and for other arches + * it makes little difference. + */ +static inline long double +rnintl(long double x) +{ + return (x + __CONCAT(0x1.8p, LDBL_MANT_DIG) / 2 - + __CONCAT(0x1.8p, LDBL_MANT_DIG) / 2); +} +#endif /* LDBL_MANT_DIG */ + +/* + * irint() and i64rint() give the same result as casting to their integer + * return type provided their arg is a floating point integer. They can + * sometimes be more efficient because no rounding is required. + */ +#if defined(amd64) || defined(__i386__) +#define irint(x) \ + (sizeof(x) == sizeof(float) && \ + sizeof(__float_t) == sizeof(long double) ? irintf(x) : \ + sizeof(x) == sizeof(double) && \ + sizeof(__double_t) == sizeof(long double) ? irintd(x) : \ + sizeof(x) == sizeof(long double) ? irintl(x) : (int)(x)) +#else +#define irint(x) ((int)(x)) +#endif + +#define i64rint(x) ((int64_t)(x)) /* only needed for ld128 so not opt. */ + +#if defined(__i386__) +static __inline int +irintf(float x) +{ + int n; + + __asm("fistl %0" : "=m" (n) : "t" (x)); + return (n); +} + +static __inline int +irintd(double x) +{ + int n; + + __asm("fistl %0" : "=m" (n) : "t" (x)); + return (n); +} +#endif + +#if defined(__amd64__) || defined(__i386__) +static __inline int +irintl(long double x) +{ + int n; + + __asm("fistl %0" : "=m" (n) : "t" (x)); + return (n); +} +#endif + +#ifdef DEBUG +#if defined(__amd64__) || defined(__i386__) +#define breakpoint() asm("int $3") +#else +#include + +#define breakpoint() raise(SIGTRAP) +#endif +#endif + +/* Write a pari script to test things externally. */ +#ifdef DOPRINT +#include + +#ifndef DOPRINT_SWIZZLE +#define DOPRINT_SWIZZLE 0 +#endif + +#ifdef DOPRINT_LD80 + +#define DOPRINT_START(xp) do { \ + uint64_t __lx; \ + uint16_t __hx; \ + \ + /* Hack to give more-problematic args. */ \ + EXTRACT_LDBL80_WORDS(__hx, __lx, *xp); \ + __lx ^= DOPRINT_SWIZZLE; \ + INSERT_LDBL80_WORDS(*xp, __hx, __lx); \ + printf("x = %.21Lg; ", (long double)*xp); \ +} while (0) +#define DOPRINT_END1(v) \ + printf("y = %.21Lg; z = 0; show(x, y, z);\n", (long double)(v)) +#define DOPRINT_END2(hi, lo) \ + printf("y = %.21Lg; z = %.21Lg; show(x, y, z);\n", \ + (long double)(hi), (long double)(lo)) + +#elif defined(DOPRINT_D64) + +#define DOPRINT_START(xp) do { \ + uint32_t __hx, __lx; \ + \ + EXTRACT_WORDS(__hx, __lx, *xp); \ + __lx ^= DOPRINT_SWIZZLE; \ + INSERT_WORDS(*xp, __hx, __lx); \ + printf("x = %.21Lg; ", (long double)*xp); \ +} while (0) +#define DOPRINT_END1(v) \ + printf("y = %.21Lg; z = 0; show(x, y, z);\n", (long double)(v)) +#define DOPRINT_END2(hi, lo) \ + printf("y = %.21Lg; z = %.21Lg; show(x, y, z);\n", \ + (long double)(hi), (long double)(lo)) + +#elif defined(DOPRINT_F32) + +#define DOPRINT_START(xp) do { \ + uint32_t __hx; \ + \ + GET_FLOAT_WORD(__hx, *xp); \ + __hx ^= DOPRINT_SWIZZLE; \ + SET_FLOAT_WORD(*xp, __hx); \ + printf("x = %.21Lg; ", (long double)*xp); \ +} while (0) +#define DOPRINT_END1(v) \ + printf("y = %.21Lg; z = 0; show(x, y, z);\n", (long double)(v)) +#define DOPRINT_END2(hi, lo) \ + printf("y = %.21Lg; z = %.21Lg; show(x, y, z);\n", \ + (long double)(hi), (long double)(lo)) + +#else /* !DOPRINT_LD80 && !DOPRINT_D64 (LD128 only) */ + +#ifndef DOPRINT_SWIZZLE_HIGH +#define DOPRINT_SWIZZLE_HIGH 0 +#endif + +#define DOPRINT_START(xp) do { \ + uint64_t __lx, __llx; \ + uint16_t __hx; \ + \ + EXTRACT_LDBL128_WORDS(__hx, __lx, __llx, *xp); \ + __llx ^= DOPRINT_SWIZZLE; \ + __lx ^= DOPRINT_SWIZZLE_HIGH; \ + INSERT_LDBL128_WORDS(*xp, __hx, __lx, __llx); \ + printf("x = %.36Lg; ", (long double)*xp); \ +} while (0) +#define DOPRINT_END1(v) \ + printf("y = %.36Lg; z = 0; show(x, y, z);\n", (long double)(v)) +#define DOPRINT_END2(hi, lo) \ + printf("y = %.36Lg; z = %.36Lg; show(x, y, z);\n", \ + (long double)(hi), (long double)(lo)) + +#endif /* DOPRINT_LD80 */ + +#else /* !DOPRINT */ +#define DOPRINT_START(xp) +#define DOPRINT_END1(v) +#define DOPRINT_END2(hi, lo) +#endif /* DOPRINT */ + +#define RETURNP(x) do { \ + DOPRINT_END1(x); \ + RETURNF(x); \ +} while (0) +#define RETURNPI(x) do { \ + DOPRINT_END1(x); \ + RETURNI(x); \ +} while (0) +#define RETURN2P(x, y) do { \ + DOPRINT_END2((x), (y)); \ + RETURNF((x) + (y)); \ +} while (0) +#define RETURN2PI(x, y) do { \ + DOPRINT_END2((x), (y)); \ + RETURNI((x) + (y)); \ +} while (0) +#ifdef STRUCT_RETURN +#define RETURNSP(rp) do { \ + if (!(rp)->lo_set) \ + RETURNP((rp)->hi); \ + RETURN2P((rp)->hi, (rp)->lo); \ +} while (0) +#define RETURNSPI(rp) do { \ + if (!(rp)->lo_set) \ + RETURNPI((rp)->hi); \ + RETURN2PI((rp)->hi, (rp)->lo); \ +} while (0) +#endif +#define SUM2P(x, y) ({ \ + const __typeof (x) __x = (x); \ + const __typeof (y) __y = (y); \ + \ + DOPRINT_END2(__x, __y); \ + __x + __y; \ +}) + +/* + * ieee style elementary functions + * + * We rename functions here to improve other sources' diffability + * against fdlibm. + */ +#define __ieee754_sqrt sqrt +#define __ieee754_acos acos +#define __ieee754_acosh acosh +#define __ieee754_log log +#define __ieee754_log2 log2 +#define __ieee754_atanh atanh +#define __ieee754_asin asin +#define __ieee754_atan2 atan2 +#define __ieee754_exp exp +#define __ieee754_cosh cosh +#define __ieee754_fmod fmod +#define __ieee754_pow pow +#define __ieee754_lgamma lgamma +#define __ieee754_gamma gamma +#define __ieee754_lgamma_r lgamma_r +#define __ieee754_gamma_r gamma_r +#define __ieee754_log10 log10 +#define __ieee754_sinh sinh +#define __ieee754_hypot hypot +#define __ieee754_j0 j0 +#define __ieee754_j1 j1 +#define __ieee754_y0 y0 +#define __ieee754_y1 y1 +#define __ieee754_jn jn +#define __ieee754_yn yn +#define __ieee754_remainder remainder +#define __ieee754_scalb scalb +#define __ieee754_sqrtf sqrtf +#define __ieee754_acosf acosf +#define __ieee754_acoshf acoshf +#define __ieee754_logf logf +#define __ieee754_atanhf atanhf +#define __ieee754_asinf asinf +#define __ieee754_atan2f atan2f +#define __ieee754_expf expf +#define __ieee754_coshf coshf +#define __ieee754_fmodf fmodf +#define __ieee754_powf powf +#define __ieee754_lgammaf lgammaf +#define __ieee754_gammaf gammaf +#define __ieee754_lgammaf_r lgammaf_r +#define __ieee754_gammaf_r gammaf_r +#define __ieee754_log10f log10f +#define __ieee754_log2f log2f +#define __ieee754_sinhf sinhf +#define __ieee754_hypotf hypotf +#define __ieee754_j0f j0f +#define __ieee754_j1f j1f +#define __ieee754_y0f y0f +#define __ieee754_y1f y1f +#define __ieee754_jnf jnf +#define __ieee754_ynf ynf +#define __ieee754_remainderf remainderf +#define __ieee754_scalbf scalbf + +/* fdlibm kernel function */ +int __kernel_rem_pio2(double*,double*,int,int,int); + +/* double precision kernel functions */ +#ifndef INLINE_REM_PIO2 +int __ieee754_rem_pio2(double,double*); +#endif +double __kernel_sin(double,double,int); +double __kernel_cos(double,double); +double __kernel_tan(double,double,int); +double __ldexp_exp(double,int); +#ifdef _COMPLEX_H +double complex __ldexp_cexp(double complex,int); +#endif + +/* float precision kernel functions */ +#ifndef INLINE_REM_PIO2F +int __ieee754_rem_pio2f(float,double*); +#endif +#ifndef INLINE_KERNEL_SINDF +float __kernel_sindf(double); +#endif +#ifndef INLINE_KERNEL_COSDF +float __kernel_cosdf(double); +#endif +#ifndef INLINE_KERNEL_TANDF +float __kernel_tandf(double,int); +#endif +float __ldexp_expf(float,int); +#ifdef _COMPLEX_H +float complex __ldexp_cexpf(float complex,int); +#endif + +/* long double precision kernel functions */ +long double __kernel_sinl(long double, long double, int); +long double __kernel_cosl(long double, long double); +long double __kernel_tanl(long double, long double, int); + +#endif /* !_MATH_PRIVATE_H_ */ diff --git a/newlib/libm/ld/s_asinhl.c b/newlib/libm/ld/s_asinhl.c new file mode 100644 index 0000000000..ba28f599c3 --- /dev/null +++ b/newlib/libm/ld/s_asinhl.c @@ -0,0 +1,91 @@ +/* from: FreeBSD: head/lib/msun/src/e_acosh.c 176451 2008-02-22 02:30:36Z das */ + +/* @(#)s_asinh.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See s_asinh.c for complete comments. + * + * Converted to long double by David Schultz and + * Bruce D. Evans. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +/* EXP_LARGE is the threshold above which we use asinh(x) ~= log(2x). */ +/* EXP_TINY is the threshold below which we use asinh(x) ~= x. */ +#if LDBL_MANT_DIG == 64 +#define EXP_LARGE 34 +#define EXP_TINY -34 +#elif LDBL_MANT_DIG == 113 +#define EXP_LARGE 58 +#define EXP_TINY -58 +#else +#error "Unsupported long double format" +#endif + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual expsign encoding. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const double +one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +huge= 1.00000000000000000000e+300; + +#if LDBL_MANT_DIG == 64 +static const union IEEEl2bits +u_ln2 = LD80C(0xb17217f7d1cf79ac, -1, 6.93147180559945309417e-1L); +#define ln2 u_ln2.e +#elif LDBL_MANT_DIG == 113 +static const long double +ln2 = 6.93147180559945309417232121458176568e-1L; /* 0x162e42fefa39ef35793c7673007e6.0p-113 */ +#else +#error "Unsupported long double format" +#endif + +long double +asinhl(long double x) +{ + long double t, w; + uint16_t hx, ix; + + ENTERI(); + GET_LDBL_EXPSIGN(hx, x); + ix = hx & 0x7fff; + if (ix >= 0x7fff) RETURNI(x+x); /* x is inf, NaN or misnormal */ + if (ix < BIAS + EXP_TINY) { /* |x| < TINY, or misnormal */ + if (huge + x > one) RETURNI(x); /* return x inexact except 0 */ + } + if (ix >= BIAS + EXP_LARGE) { /* |x| >= LARGE, or misnormal */ + w = logl(fabsl(x))+ln2; + } else if (ix >= 0x4000) { /* LARGE > |x| >= 2.0, or misnormal */ + t = fabsl(x); + w = logl(2.0*t+one/(sqrtl(x*x+one)+t)); + } else { /* 2.0 > |x| >= TINY, or misnormal */ + t = x*x; + w =log1pl(fabsl(x)+t/(one+sqrtl(one+t))); + } + RETURNI((hx & 0x8000) == 0 ? w : -w); +} diff --git a/newlib/libm/ld/s_atanl.c b/newlib/libm/ld/s_atanl.c new file mode 100644 index 0000000000..ff29c3ce8a --- /dev/null +++ b/newlib/libm/ld/s_atanl.c @@ -0,0 +1,85 @@ +/* @(#)s_atan.c 5.1 93/09/24 */ +/* FreeBSD: head/lib/msun/src/s_atan.c 176451 2008-02-22 02:30:36Z das */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See comments in s_atan.c. + * Converted to long double by David Schultz . + */ + +#include + +#include "invtrig.h" +#include "math.h" +#include "math_private.h" + +static const long double +one = 1.0, +huge = 1.0e300; + +long double +atanl(long double x) +{ + union IEEEl2bits u; + long double w,s1,s2,z; + int id; + int16_t expsign, expt; + int32_t expman; + + u.e = x; + expsign = u.xbits.expsign; + expt = expsign & 0x7fff; + if(expt >= ATAN_CONST) { /* if |x| is large, atan(x)~=pi/2 */ + if(expt == BIAS + LDBL_MAX_EXP && + ((u.bits.manh&~LDBL_NBIT)|u.bits.manl)!=0) + return x+x; /* NaN */ + if(expsign>0) return atanhi[3]+atanlo[3]; + else return -atanhi[3]-atanlo[3]; + } + /* Extract the exponent and the first few bits of the mantissa. */ + /* XXX There should be a more convenient way to do this. */ + expman = (expt << 8) | ((u.bits.manh >> (MANH_SIZE - 9)) & 0xff); + if (expman < ((BIAS - 2) << 8) + 0xc0) { /* |x| < 0.4375 */ + if (expt < ATAN_LINEAR) { /* if |x| is small, atanl(x)~=x */ + if(huge+x>one) return x; /* raise inexact */ + } + id = -1; + } else { + x = fabsl(x); + if (expman < (BIAS << 8) + 0x30) { /* |x| < 1.1875 */ + if (expman < ((BIAS - 1) << 8) + 0x60) { /* 7/16 <=|x|<11/16 */ + id = 0; x = (2.0*x-one)/(2.0+x); + } else { /* 11/16<=|x|< 19/16 */ + id = 1; x = (x-one)/(x+one); + } + } else { + if (expman < ((BIAS + 1) << 8) + 0x38) { /* |x| < 2.4375 */ + id = 2; x = (x-1.5)/(one+1.5*x); + } else { /* 2.4375 <= |x| < 2^ATAN_CONST */ + id = 3; x = -1.0/x; + } + }} + /* end of argument reduction */ + z = x*x; + w = z*z; + /* break sum aT[i]z**(i+1) into odd and even poly */ + s1 = z*T_even(w); + s2 = w*T_odd(w); + if (id<0) return x - x*(s1+s2); + else { + z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x); + return (expsign<0)? -z:z; + } +} diff --git a/newlib/libm/ld/s_cbrtl.c b/newlib/libm/ld/s_cbrtl.c new file mode 100644 index 0000000000..5c4a98a874 --- /dev/null +++ b/newlib/libm/ld/s_cbrtl.c @@ -0,0 +1,143 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2009-2011, Bruce D. Evans, Steven G. Kargl, David Schultz. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * The argument reduction and testing for exceptional cases was + * written by Steven G. Kargl with input from Bruce D. Evans + * and David A. Schultz. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#define BIAS (LDBL_MAX_EXP - 1) + +static const unsigned + B1 = 709958130; /* B1 = (127-127.0/3-0.03306235651)*2**23 */ + +long double +cbrtl(long double x) +{ + union IEEEl2bits u, v; + long double r, s, t, w; + double dr, dt, dx; + float ft, fx; + uint32_t hx; + uint16_t expsign; + int k; + + u.e = x; + expsign = u.xbits.expsign; + k = expsign & 0x7fff; + + /* + * If x = +-Inf, then cbrt(x) = +-Inf. + * If x = NaN, then cbrt(x) = NaN. + */ + if (k == BIAS + LDBL_MAX_EXP) + return (x + x); + + ENTERI(); + if (k == 0) { + /* If x = +-0, then cbrt(x) = +-0. */ + if ((u.bits.manh | u.bits.manl) == 0) + RETURNI(x); + /* Adjust subnormal numbers. */ + u.e *= 0x1.0p514; + k = u.bits.exp; + k -= BIAS + 514; + } else + k -= BIAS; + u.xbits.expsign = BIAS; + v.e = 1; + + x = u.e; + switch (k % 3) { + case 1: + case -2: + x = 2*x; + k--; + break; + case 2: + case -1: + x = 4*x; + k -= 2; + break; + } + v.xbits.expsign = (expsign & 0x8000) | (BIAS + k / 3); + + /* + * The following is the guts of s_cbrtf, with the handling of + * special values removed and extra care for accuracy not taken, + * but with most of the extra accuracy not discarded. + */ + + /* ~5-bit estimate: */ + fx = x; + GET_FLOAT_WORD(hx, fx); + SET_FLOAT_WORD(ft, ((hx & 0x7fffffff) / 3 + B1)); + + /* ~16-bit estimate: */ + dx = x; + dt = ft; + dr = dt * dt * dt; + dt = dt * (dx + dx + dr) / (dx + dr + dr); + + /* ~47-bit estimate: */ + dr = dt * dt * dt; + dt = dt * (dx + dx + dr) / (dx + dr + dr); + +#if LDBL_MANT_DIG == 64 + /* + * dt is cbrtl(x) to ~47 bits (after x has been reduced to 1 <= x < 8). + * Round it away from zero to 32 bits (32 so that t*t is exact, and + * away from zero for technical reasons). + */ + volatile double vd2 = 0x1.0p32; + volatile double vd1 = 0x1.0p-31; + #define vd ((long double)vd2 + vd1) + + t = dt + vd - 0x1.0p32; +#elif LDBL_MANT_DIG == 113 + /* + * Round dt away from zero to 47 bits. Since we don't trust the 47, + * add 2 47-bit ulps instead of 1 to round up. Rounding is slow and + * might be avoidable in this case, since on most machines dt will + * have been evaluated in 53-bit precision and the technical reasons + * for rounding up might not apply to either case in cbrtl() since + * dt is much more accurate than needed. + */ + t = dt + 0x2.0p-46 + 0x1.0p60L - 0x1.0p60; +#else +#error "Unsupported long double format" +#endif + + /* + * Final step Newton iteration to 64 or 113 bits with + * error < 0.667 ulps + */ + s=t*t; /* t*t is exact */ + r=x/s; /* error <= 0.5 ulps; |r| < |t| */ + w=t+t; /* t+t is exact */ + r=(r-t)/(w+r); /* r-t is exact; w+r ~= 3*t */ + t=t+t*r; /* error <= (0.5 + 0.5/3) * ulp */ + + t *= v.e; + RETURNI(t); +} diff --git a/newlib/libm/ld/s_ceill.c b/newlib/libm/ld/s_ceill.c new file mode 100644 index 0000000000..2d1045fe60 --- /dev/null +++ b/newlib/libm/ld/s_ceill.c @@ -0,0 +1,101 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * From: @(#)s_ceil.c 5.1 93/09/24 + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ceill(x) + * Return x rounded toward -inf to integral value + * Method: + * Bit twiddling. + * Exception: + * Inexact flag raised if x not equal to ceill(x). + */ + +#include +#include +#include + +#include "fpmath.h" + +#ifdef LDBL_IMPLICIT_NBIT +#define MANH_SIZE (LDBL_MANH_SIZE + 1) +#define INC_MANH(u, c) do { \ + uint64_t o = u.bits.manh; \ + u.bits.manh += (c); \ + if (u.bits.manh < o) \ + u.bits.exp++; \ +} while (0) +#else +#define MANH_SIZE LDBL_MANH_SIZE +#define INC_MANH(u, c) do { \ + uint64_t o = u.bits.manh; \ + u.bits.manh += (c); \ + if (u.bits.manh < o) { \ + u.bits.exp++; \ + u.bits.manh |= 1llu << (LDBL_MANH_SIZE - 1); \ + } \ +} while (0) +#endif + +static const long double huge = 1.0e300; + +long double +ceill(long double x) +{ + union IEEEl2bits u = { .e = x }; + int e = u.bits.exp - LDBL_MAX_EXP + 1; + + if (e < MANH_SIZE - 1) { + if (e < 0) { /* raise inexact if x != 0 */ + if (huge + x > 0.0) + if (u.bits.exp > 0 || + (u.bits.manh | u.bits.manl) != 0) + u.e = u.bits.sign ? -0.0 : 1.0; + } else { + uint64_t m = ((1llu << MANH_SIZE) - 1) >> (e + 1); + if (((u.bits.manh & m) | u.bits.manl) == 0) + return (x); /* x is integral */ + if (!u.bits.sign) { +#ifdef LDBL_IMPLICIT_NBIT + if (e == 0) + u.bits.exp++; + else +#endif + INC_MANH(u, 1llu << (MANH_SIZE - e - 1)); + } + if (huge + x > 0.0) { /* raise inexact flag */ + u.bits.manh &= ~m; + u.bits.manl = 0; + } + } + } else if (e < LDBL_MANT_DIG - 1) { + uint64_t m = (uint64_t)-1 >> (64 - LDBL_MANT_DIG + e + 1); + if ((u.bits.manl & m) == 0) + return (x); /* x is integral */ + if (!u.bits.sign) { + if (e == MANH_SIZE - 1) + INC_MANH(u, 1); + else { + uint64_t o = u.bits.manl; + u.bits.manl += 1llu << (LDBL_MANT_DIG - e - 1); + if (u.bits.manl < o) /* got a carry */ + INC_MANH(u, 1); + } + } + if (huge + x > 0.0) /* raise inexact flag */ + u.bits.manl &= ~m; + } + return (u.e); +} diff --git a/newlib/libm/ld/s_copysignl.c b/newlib/libm/ld/s_copysignl.c new file mode 100644 index 0000000000..bd67447055 --- /dev/null +++ b/newlib/libm/ld/s_copysignl.c @@ -0,0 +1,44 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004 Stefan Farfeleder + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include + +#include "fpmath.h" + +long double +copysignl(long double x, long double y) +{ + union IEEEl2bits ux, uy; + + ux.e = x; + uy.e = y; + ux.bits.sign = uy.bits.sign; + return (ux.e); +} diff --git a/newlib/libm/ld/s_cosl.c b/newlib/libm/ld/s_cosl.c new file mode 100644 index 0000000000..061de295a7 --- /dev/null +++ b/newlib/libm/ld/s_cosl.c @@ -0,0 +1,102 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2007 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * Limited testing on pseudorandom numbers drawn within [-2e8:4e8] shows + * an accuracy of <= 0.7412 ULP. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" +#if LDBL_MANT_DIG == 64 +#include "../ld80/e_rem_pio2l.h" +static const union IEEEl2bits +pio4u = LD80C(0xc90fdaa22168c235, -00001, 7.85398163397448309628e-01L); +#define pio4 (pio4u.e) +#elif LDBL_MANT_DIG == 113 +#include "../ld128/e_rem_pio2l.h" +long double pio4 = 7.85398163397448309615660845819875721e-1L; +#else +#error "Unsupported long double format" +#endif + +long double +cosl(long double x) +{ + union IEEEl2bits z; + int e0; + long double y[2]; + long double hi, lo; + + z.e = x; + z.bits.sign = 0; + + /* If x = +-0 or x is a subnormal number, then cos(x) = 1 */ + if (z.bits.exp == 0) + return (1.0); + + /* If x = NaN or Inf, then cos(x) = NaN. */ + if (z.bits.exp == 32767) + return ((x - x) / (x - x)); + + ENTERI(); + + /* Optimize the case where x is already within range. */ + if (z.e < pio4) + RETURNI(__kernel_cosl(z.e, 0)); + + e0 = __ieee754_rem_pio2l(x, y); + hi = y[0]; + lo = y[1]; + + switch (e0 & 3) { + case 0: + hi = __kernel_cosl(hi, lo); + break; + case 1: + hi = - __kernel_sinl(hi, lo, 1); + break; + case 2: + hi = - __kernel_cosl(hi, lo); + break; + case 3: + hi = __kernel_sinl(hi, lo, 1); + break; + } + + RETURNI(hi); +} diff --git a/newlib/libm/ld/s_fabsl.c b/newlib/libm/ld/s_fabsl.c new file mode 100644 index 0000000000..5076d8a9b4 --- /dev/null +++ b/newlib/libm/ld/s_fabsl.c @@ -0,0 +1,45 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 2003 Dag-Erling Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include + +#include "fpmath.h" + +long double +fabsl(long double x) +{ + union IEEEl2bits u; + + u.e = x; + u.bits.sign = 0; + return (u.e); +} diff --git a/newlib/libm/ld/s_fdim.c b/newlib/libm/ld/s_fdim.c new file mode 100644 index 0000000000..c40c3e9d32 --- /dev/null +++ b/newlib/libm/ld/s_fdim.c @@ -0,0 +1,48 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#define DECL(type, fn) \ +type \ +fn(type x, type y) \ +{ \ + \ + if (isnan(x)) \ + return (x); \ + if (isnan(y)) \ + return (y); \ + return (x > y ? x - y : 0.0); \ +} + +DECL(double, fdim) +DECL(float, fdimf) +DECL(long double, fdiml) diff --git a/newlib/libm/ld/s_floorl.c b/newlib/libm/ld/s_floorl.c new file mode 100644 index 0000000000..6cec3e781c --- /dev/null +++ b/newlib/libm/ld/s_floorl.c @@ -0,0 +1,101 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * From: @(#)s_floor.c 5.1 93/09/24 + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * floorl(x) + * Return x rounded toward -inf to integral value + * Method: + * Bit twiddling. + * Exception: + * Inexact flag raised if x not equal to floorl(x). + */ + +#include +#include +#include + +#include "fpmath.h" + +#ifdef LDBL_IMPLICIT_NBIT +#define MANH_SIZE (LDBL_MANH_SIZE + 1) +#define INC_MANH(u, c) do { \ + uint64_t o = u.bits.manh; \ + u.bits.manh += (c); \ + if (u.bits.manh < o) \ + u.bits.exp++; \ +} while (0) +#else +#define MANH_SIZE LDBL_MANH_SIZE +#define INC_MANH(u, c) do { \ + uint64_t o = u.bits.manh; \ + u.bits.manh += (c); \ + if (u.bits.manh < o) { \ + u.bits.exp++; \ + u.bits.manh |= 1llu << (LDBL_MANH_SIZE - 1); \ + } \ +} while (0) +#endif + +static const long double huge = 1.0e300; + +long double +floorl(long double x) +{ + union IEEEl2bits u = { .e = x }; + int e = u.bits.exp - LDBL_MAX_EXP + 1; + + if (e < MANH_SIZE - 1) { + if (e < 0) { /* raise inexact if x != 0 */ + if (huge + x > 0.0) + if (u.bits.exp > 0 || + (u.bits.manh | u.bits.manl) != 0) + u.e = u.bits.sign ? -1.0 : 0.0; + } else { + uint64_t m = ((1llu << MANH_SIZE) - 1) >> (e + 1); + if (((u.bits.manh & m) | u.bits.manl) == 0) + return (x); /* x is integral */ + if (u.bits.sign) { +#ifdef LDBL_IMPLICIT_NBIT + if (e == 0) + u.bits.exp++; + else +#endif + INC_MANH(u, 1llu << (MANH_SIZE - e - 1)); + } + if (huge + x > 0.0) { /* raise inexact flag */ + u.bits.manh &= ~m; + u.bits.manl = 0; + } + } + } else if (e < LDBL_MANT_DIG - 1) { + uint64_t m = (uint64_t)-1 >> (64 - LDBL_MANT_DIG + e + 1); + if ((u.bits.manl & m) == 0) + return (x); /* x is integral */ + if (u.bits.sign) { + if (e == MANH_SIZE - 1) + INC_MANH(u, 1); + else { + uint64_t o = u.bits.manl; + u.bits.manl += 1llu << (LDBL_MANT_DIG - e - 1); + if (u.bits.manl < o) /* got a carry */ + INC_MANH(u, 1); + } + } + if (huge + x > 0.0) /* raise inexact flag */ + u.bits.manl &= ~m; + } + return (u.e); +} diff --git a/newlib/libm/ld/s_fmal.c b/newlib/libm/ld/s_fmal.c new file mode 100644 index 0000000000..a379346c17 --- /dev/null +++ b/newlib/libm/ld/s_fmal.c @@ -0,0 +1,274 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2005-2011 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include "fpmath.h" + +/* + * A struct dd represents a floating-point number with twice the precision + * of a long double. We maintain the invariant that "hi" stores the high-order + * bits of the result. + */ +struct dd { + long double hi; + long double lo; +}; + +/* + * Compute a+b exactly, returning the exact result in a struct dd. We assume + * that both a and b are finite, but make no assumptions about their relative + * magnitudes. + */ +static inline struct dd +dd_add(long double a, long double b) +{ + struct dd ret; + long double s; + + ret.hi = a + b; + s = ret.hi - a; + ret.lo = (a - (ret.hi - s)) + (b - s); + return (ret); +} + +/* + * Compute a+b, with a small tweak: The least significant bit of the + * result is adjusted into a sticky bit summarizing all the bits that + * were lost to rounding. This adjustment negates the effects of double + * rounding when the result is added to another number with a higher + * exponent. For an explanation of round and sticky bits, see any reference + * on FPU design, e.g., + * + * J. Coonen. An Implementation Guide to a Proposed Standard for + * Floating-Point Arithmetic. Computer, vol. 13, no. 1, Jan 1980. + */ +static inline long double +add_adjusted(long double a, long double b) +{ + struct dd sum; + union IEEEl2bits u; + + sum = dd_add(a, b); + if (sum.lo != 0) { + u.e = sum.hi; + if ((u.bits.manl & 1) == 0) + sum.hi = nextafterl(sum.hi, INFINITY * sum.lo); + } + return (sum.hi); +} + +/* + * Compute ldexp(a+b, scale) with a single rounding error. It is assumed + * that the result will be subnormal, and care is taken to ensure that + * double rounding does not occur. + */ +static inline long double +add_and_denormalize(long double a, long double b, int scale) +{ + struct dd sum; + int bits_lost; + union IEEEl2bits u; + + sum = dd_add(a, b); + + /* + * If we are losing at least two bits of accuracy to denormalization, + * then the first lost bit becomes a round bit, and we adjust the + * lowest bit of sum.hi to make it a sticky bit summarizing all the + * bits in sum.lo. With the sticky bit adjusted, the hardware will + * break any ties in the correct direction. + * + * If we are losing only one bit to denormalization, however, we must + * break the ties manually. + */ + if (sum.lo != 0) { + u.e = sum.hi; + bits_lost = -u.bits.exp - scale + 1; + if ((bits_lost != 1) ^ (int)(u.bits.manl & 1)) + sum.hi = nextafterl(sum.hi, INFINITY * sum.lo); + } + return (ldexp(sum.hi, scale)); +} + +/* + * Compute a*b exactly, returning the exact result in a struct dd. We assume + * that both a and b are normalized, so no underflow or overflow will occur. + * The current rounding mode must be round-to-nearest. + */ +static inline struct dd +dd_mul(long double a, long double b) +{ +#if LDBL_MANT_DIG == 64 + static const long double split = 0x1p32L + 1.0; +#elif LDBL_MANT_DIG == 113 + static const long double split = 0x1p57L + 1.0; +#endif + struct dd ret; + long double ha, hb, la, lb, p, q; + + p = a * split; + ha = a - p; + ha += p; + la = a - ha; + + p = b * split; + hb = b - p; + hb += p; + lb = b - hb; + + p = ha * hb; + q = ha * lb + la * hb; + + ret.hi = p + q; + ret.lo = p - ret.hi + q + la * lb; + return (ret); +} + +/* + * Fused multiply-add: Compute x * y + z with a single rounding error. + * + * We use scaling to avoid overflow/underflow, along with the + * canonical precision-doubling technique adapted from: + * + * Dekker, T. A Floating-Point Technique for Extending the + * Available Precision. Numer. Math. 18, 224-242 (1971). + */ +long double +fmal(long double x, long double y, long double z) +{ + long double xs, ys, zs, adj; + struct dd xy, r; + int oround; + int ex, ey, ez; + int spread; + + /* + * Handle special cases. The order of operations and the particular + * return values here are crucial in handling special cases involving + * infinities, NaNs, overflows, and signed zeroes correctly. + */ + if (x == 0.0 || y == 0.0) + return (x * y + z); + if (z == 0.0) + return (x * y); + if (!isfinite(x) || !isfinite(y)) + return (x * y + z); + if (!isfinite(z)) + return (z); + + xs = frexpl(x, &ex); + ys = frexpl(y, &ey); + zs = frexpl(z, &ez); + oround = fegetround(); + spread = ex + ey - ez; + + /* + * If x * y and z are many orders of magnitude apart, the scaling + * will overflow, so we handle these cases specially. Rounding + * modes other than FE_TONEAREST are painful. + */ + if (spread < -LDBL_MANT_DIG) { + feraiseexcept(FE_INEXACT); + if (!isnormal(z)) + feraiseexcept(FE_UNDERFLOW); + switch (oround) { + case FE_TONEAREST: + return (z); + case FE_TOWARDZERO: + if (x > 0.0 ^ y < 0.0 ^ z < 0.0) + return (z); + else + return (nextafterl(z, 0)); + case FE_DOWNWARD: + if (x > 0.0 ^ y < 0.0) + return (z); + else + return (nextafterl(z, -INFINITY)); + default: /* FE_UPWARD */ + if (x > 0.0 ^ y < 0.0) + return (nextafterl(z, INFINITY)); + else + return (z); + } + } + if (spread <= LDBL_MANT_DIG * 2) + zs = ldexpl(zs, -spread); + else + zs = copysignl(LDBL_MIN, zs); + + fesetround(FE_TONEAREST); + /* work around clang bug 8100 */ + volatile long double vxs = xs; + + /* + * Basic approach for round-to-nearest: + * + * (xy.hi, xy.lo) = x * y (exact) + * (r.hi, r.lo) = xy.hi + z (exact) + * adj = xy.lo + r.lo (inexact; low bit is sticky) + * result = r.hi + adj (correctly rounded) + */ + xy = dd_mul(vxs, ys); + r = dd_add(xy.hi, zs); + + spread = ex + ey; + + if (r.hi == 0.0) { + /* + * When the addends cancel to 0, ensure that the result has + * the correct sign. + */ + fesetround(oround); + volatile long double vzs = zs; /* XXX gcc CSE bug workaround */ + return (xy.hi + vzs + ldexpl(xy.lo, spread)); + } + + if (oround != FE_TONEAREST) { + /* + * There is no need to worry about double rounding in directed + * rounding modes. + */ + fesetround(oround); + /* work around clang bug 8100 */ + volatile long double vrlo = r.lo; + adj = vrlo + xy.lo; + return (ldexpl(r.hi + adj, spread)); + } + + adj = add_adjusted(r.lo, xy.lo); + if (spread + ilogbl(r.hi) > -16383) + return (ldexpl(r.hi + adj, spread)); + else + return (add_and_denormalize(r.hi, adj, spread)); +} diff --git a/newlib/libm/ld/s_fmaxl.c b/newlib/libm/ld/s_fmaxl.c new file mode 100644 index 0000000000..c0d7c88325 --- /dev/null +++ b/newlib/libm/ld/s_fmaxl.c @@ -0,0 +1,57 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include "fpmath.h" + +long double +fmaxl(long double x, long double y) +{ + union IEEEl2bits u[2]; + + u[0].e = x; + mask_nbit_l(u[0]); + u[1].e = y; + mask_nbit_l(u[1]); + + /* Check for NaNs to avoid raising spurious exceptions. */ + if (u[0].bits.exp == 32767 && (u[0].bits.manh | u[0].bits.manl) != 0) + return (y); + if (u[1].bits.exp == 32767 && (u[1].bits.manh | u[1].bits.manl) != 0) + return (x); + + /* Handle comparisons of signed zeroes. */ + if (u[0].bits.sign != u[1].bits.sign) + return (u[0].bits.sign ? y : x); + + return (x > y ? x : y); +} diff --git a/newlib/libm/ld/s_fminl.c b/newlib/libm/ld/s_fminl.c new file mode 100644 index 0000000000..97604b38b4 --- /dev/null +++ b/newlib/libm/ld/s_fminl.c @@ -0,0 +1,57 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include "fpmath.h" + +long double +fminl(long double x, long double y) +{ + union IEEEl2bits u[2]; + + u[0].e = x; + mask_nbit_l(u[0]); + u[1].e = y; + mask_nbit_l(u[1]); + + /* Check for NaNs to avoid raising spurious exceptions. */ + if (u[0].bits.exp == 32767 && (u[0].bits.manh | u[0].bits.manl) != 0) + return (y); + if (u[1].bits.exp == 32767 && (u[1].bits.manh | u[1].bits.manl) != 0) + return (x); + + /* Handle comparisons of signed zeroes. */ + if (u[0].bits.sign != u[1].bits.sign) + return (u[1].bits.sign ? y : x); + + return (x < y ? x : y); +} diff --git a/newlib/libm/ld/s_frexpl.c b/newlib/libm/ld/s_frexpl.c new file mode 100644 index 0000000000..66e284fdd0 --- /dev/null +++ b/newlib/libm/ld/s_frexpl.c @@ -0,0 +1,64 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004-2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include + +#include "fpmath.h" + +#if LDBL_MAX_EXP != 0x4000 +#error "Unsupported long double format" +#endif + +long double +frexpl(long double x, int *ex) +{ + union IEEEl2bits u; + + u.e = x; + switch (u.bits.exp) { + case 0: /* 0 or subnormal */ + if ((u.bits.manl | u.bits.manh) == 0) { + *ex = 0; + } else { + u.e *= 0x1.0p514; + *ex = u.bits.exp - 0x4200; + u.bits.exp = 0x3ffe; + } + break; + case 0x7fff: /* infinity or NaN; value of *ex is unspecified */ + break; + default: /* normal */ + *ex = u.bits.exp - 0x3ffe; + u.bits.exp = 0x3ffe; + break; + } + return (u.e); +} diff --git a/newlib/libm/ld/s_ilogbl.c b/newlib/libm/ld/s_ilogbl.c new file mode 100644 index 0000000000..3211f44090 --- /dev/null +++ b/newlib/libm/ld/s_ilogbl.c @@ -0,0 +1,53 @@ +/* + * From: @(#)s_ilogb.c 5.1 93/09/24 + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include "fpmath.h" + +int +ilogbl(long double x) +{ + union IEEEl2bits u; + unsigned long m; + int b; + + u.e = x; + if (u.bits.exp == 0) { + if ((u.bits.manl | u.bits.manh) == 0) + return (FP_ILOGB0); + /* denormalized */ + if (u.bits.manh == 0) { + m = 1lu << (LDBL_MANL_SIZE - 1); + for (b = LDBL_MANH_SIZE; !(u.bits.manl & m); m >>= 1) + b++; + } else { + m = 1lu << (LDBL_MANH_SIZE - 1); + for (b = 0; !(u.bits.manh & m); m >>= 1) + b++; + } +#ifdef LDBL_IMPLICIT_NBIT + b++; +#endif + return (LDBL_MIN_EXP - b - 1); + } else if (u.bits.exp < (LDBL_MAX_EXP << 1) - 1) + return (u.bits.exp - LDBL_MAX_EXP + 1); + else if (u.bits.manl != 0 || u.bits.manh != 0) + return (FP_ILOGBNAN); + else + return (INT_MAX); +} diff --git a/newlib/libm/ld/s_llrintl.c b/newlib/libm/ld/s_llrintl.c new file mode 100644 index 0000000000..6ef83759c3 --- /dev/null +++ b/newlib/libm/ld/s_llrintl.c @@ -0,0 +1,9 @@ +#include +__FBSDID("$FreeBSD$"); + +#define type long double +#define roundit rintl +#define dtype long long +#define fn llrintl + +#include "s_lrint.c" diff --git a/newlib/libm/ld/s_llroundl.c b/newlib/libm/ld/s_llroundl.c new file mode 100644 index 0000000000..02c44eb4bd --- /dev/null +++ b/newlib/libm/ld/s_llroundl.c @@ -0,0 +1,11 @@ +#include +__FBSDID("$FreeBSD$"); + +#define type long double +#define roundit roundl +#define dtype long long +#define DTYPE_MIN LLONG_MIN +#define DTYPE_MAX LLONG_MAX +#define fn llroundl + +#include "s_lround.c" diff --git a/newlib/libm/ld/s_logbl.c b/newlib/libm/ld/s_logbl.c new file mode 100644 index 0000000000..ee1a91fd83 --- /dev/null +++ b/newlib/libm/ld/s_logbl.c @@ -0,0 +1,54 @@ +/* + * From: @(#)s_ilogb.c 5.1 93/09/24 + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include "fpmath.h" + +long double +logbl(long double x) +{ + union IEEEl2bits u; + unsigned long m; + int b; + + u.e = x; + if (u.bits.exp == 0) { + if ((u.bits.manl | u.bits.manh) == 0) { /* x == 0 */ + u.bits.sign = 1; + return (1.0L / u.e); + } + /* denormalized */ + if (u.bits.manh == 0) { + m = 1lu << (LDBL_MANL_SIZE - 1); + for (b = LDBL_MANH_SIZE; !(u.bits.manl & m); m >>= 1) + b++; + } else { + m = 1lu << (LDBL_MANH_SIZE - 1); + for (b = 0; !(u.bits.manh & m); m >>= 1) + b++; + } +#ifdef LDBL_IMPLICIT_NBIT + b++; +#endif + return ((long double)(LDBL_MIN_EXP - b - 1)); + } + if (u.bits.exp < (LDBL_MAX_EXP << 1) - 1) /* normal */ + return ((long double)(u.bits.exp - LDBL_MAX_EXP + 1)); + else /* +/- inf or nan */ + return (x * x); +} diff --git a/newlib/libm/ld/s_lrint.c b/newlib/libm/ld/s_lrint.c new file mode 100644 index 0000000000..ad9b978fa8 --- /dev/null +++ b/newlib/libm/ld/s_lrint.c @@ -0,0 +1,60 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include + +#ifndef type +__FBSDID("$FreeBSD$"); +#define type double +#define roundit rint +#define dtype long +#define fn lrint +#endif + +/* + * C99 says we should not raise a spurious inexact exception when an + * invalid exception is raised. Unfortunately, the set of inputs + * that overflows depends on the rounding mode when 'dtype' has more + * significant bits than 'type'. Hence, we bend over backwards for the + * sake of correctness; an MD implementation could be more efficient. + */ +dtype +fn(type x) +{ + fenv_t env; + dtype d; + + feholdexcept(&env); + d = (dtype)roundit(x); + if (fetestexcept(FE_INVALID)) + feclearexcept(FE_INEXACT); + feupdateenv(&env); + return (d); +} diff --git a/newlib/libm/ld/s_lrintl.c b/newlib/libm/ld/s_lrintl.c new file mode 100644 index 0000000000..497b442f32 --- /dev/null +++ b/newlib/libm/ld/s_lrintl.c @@ -0,0 +1,9 @@ +#include +__FBSDID("$FreeBSD$"); + +#define type long double +#define roundit rintl +#define dtype long +#define fn lrintl + +#include "s_lrint.c" diff --git a/newlib/libm/ld/s_lround.c b/newlib/libm/ld/s_lround.c new file mode 100644 index 0000000000..1dd8e697f7 --- /dev/null +++ b/newlib/libm/ld/s_lround.c @@ -0,0 +1,70 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2005 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#ifndef type +__FBSDID("$FreeBSD$"); +#define type double +#define roundit round +#define dtype long +#define DTYPE_MIN LONG_MIN +#define DTYPE_MAX LONG_MAX +#define fn lround +#endif + +/* + * If type has more precision than dtype, the endpoints dtype_(min|max) are + * of the form xxx.5; they are "out of range" because lround() rounds away + * from 0. On the other hand, if type has less precision than dtype, then + * all values that are out of range are integral, so we might as well assume + * that everything is in range. At compile time, INRANGE(x) should reduce to + * two floating-point comparisons in the former case, or TRUE otherwise. + */ +static const type type_min = (type)DTYPE_MIN; +static const type type_max = (type)DTYPE_MAX; +static const type dtype_min = (type)DTYPE_MIN - 0.5; +static const type dtype_max = (type)DTYPE_MAX + 0.5; +#define INRANGE(x) (dtype_max - type_max != 0.5 || \ + ((x) > dtype_min && (x) < dtype_max)) + +dtype +fn(type x) +{ + + if (INRANGE(x)) { + x = roundit(x); + return ((dtype)x); + } else { + feraiseexcept(FE_INVALID); + return (DTYPE_MAX); + } +} diff --git a/newlib/libm/ld/s_lroundl.c b/newlib/libm/ld/s_lroundl.c new file mode 100644 index 0000000000..e410827e26 --- /dev/null +++ b/newlib/libm/ld/s_lroundl.c @@ -0,0 +1,11 @@ +#include +__FBSDID("$FreeBSD$"); + +#define type long double +#define roundit roundl +#define dtype long +#define DTYPE_MIN LONG_MIN +#define DTYPE_MAX LONG_MAX +#define fn lroundl + +#include "s_lround.c" diff --git a/newlib/libm/ld/s_modfl.c b/newlib/libm/ld/s_modfl.c new file mode 100644 index 0000000000..2d83bbe339 --- /dev/null +++ b/newlib/libm/ld/s_modfl.c @@ -0,0 +1,103 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2007 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Derived from s_modf.c, which has the following Copyright: + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * $FreeBSD$ + */ + +#include +#include +#include + +#include "fpmath.h" + +#if LDBL_MANL_SIZE > 32 +#define MASK ((uint64_t)-1) +#else +#define MASK ((uint32_t)-1) +#endif +/* Return the last n bits of a word, representing the fractional part. */ +#define GETFRAC(bits, n) ((bits) & ~(MASK << (n))) +/* The number of fraction bits in manh, not counting the integer bit */ +#define HIBITS (LDBL_MANT_DIG - LDBL_MANL_SIZE) + +static const long double zero[] = { 0.0L, -0.0L }; + +long double +modfl(long double x, long double *iptr) +{ + union IEEEl2bits ux; + int e; + + ux.e = x; + e = ux.bits.exp - LDBL_MAX_EXP + 1; + if (e < HIBITS) { /* Integer part is in manh. */ + if (e < 0) { /* |x|<1 */ + *iptr = zero[ux.bits.sign]; + return (x); + } else { + if ((GETFRAC(ux.bits.manh, HIBITS - 1 - e) | + ux.bits.manl) == 0) { /* X is an integer. */ + *iptr = x; + return (zero[ux.bits.sign]); + } else { + /* Clear all but the top e+1 bits. */ + ux.bits.manh >>= HIBITS - 1 - e; + ux.bits.manh <<= HIBITS - 1 - e; + ux.bits.manl = 0; + *iptr = ux.e; + return (x - ux.e); + } + } + } else if (e >= LDBL_MANT_DIG - 1) { /* x has no fraction part. */ + *iptr = x; + if (x != x) /* Handle NaNs. */ + return (x); + return (zero[ux.bits.sign]); + } else { /* Fraction part is in manl. */ + if (GETFRAC(ux.bits.manl, LDBL_MANT_DIG - 1 - e) == 0) { + /* x is integral. */ + *iptr = x; + return (zero[ux.bits.sign]); + } else { + /* Clear all but the top e+1 bits. */ + ux.bits.manl >>= LDBL_MANT_DIG - 1 - e; + ux.bits.manl <<= LDBL_MANT_DIG - 1 - e; + *iptr = ux.e; + return (x - ux.e); + } + } +} diff --git a/newlib/libm/ld/s_nearbyint.c b/newlib/libm/ld/s_nearbyint.c new file mode 100644 index 0000000000..796dbaf984 --- /dev/null +++ b/newlib/libm/ld/s_nearbyint.c @@ -0,0 +1,61 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +/* + * We save and restore the floating-point environment to avoid raising + * an inexact exception. We can get away with using fesetenv() + * instead of feclearexcept()/feupdateenv() to restore the environment + * because the only exception defined for rint() is overflow, and + * rounding can't overflow as long as emax >= p. + * + * The volatile keyword is needed below because clang incorrectly assumes + * that rint won't raise any floating-point exceptions. Declaring ret volatile + * is sufficient to trick the compiler into doing the right thing. + */ +#define DECL(type, fn, rint) \ +type \ +fn(type x) \ +{ \ + volatile type ret; \ + fenv_t env; \ + \ + fegetenv(&env); \ + ret = rint(x); \ + fesetenv(&env); \ + return (ret); \ +} + +DECL(double, nearbyint, rint) +DECL(float, nearbyintf, rintf) +DECL(long double, nearbyintl, rintl) diff --git a/newlib/libm/ld/s_nextafterl.c b/newlib/libm/ld/s_nextafterl.c new file mode 100644 index 0000000000..9c61a436a6 --- /dev/null +++ b/newlib/libm/ld/s_nextafterl.c @@ -0,0 +1,80 @@ +/* @(#)s_nextafter.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* IEEE functions + * nextafter(x,y) + * return the next machine floating-point number of x in the + * direction toward y. + * Special cases: + */ + +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#if LDBL_MAX_EXP != 0x4000 +#error "Unsupported long double format" +#endif + +long double +nextafterl(long double x, long double y) +{ + volatile long double t; + union IEEEl2bits ux, uy; + + ux.e = x; + uy.e = y; + + if ((ux.bits.exp == 0x7fff && + ((ux.bits.manh&~LDBL_NBIT)|ux.bits.manl) != 0) || + (uy.bits.exp == 0x7fff && + ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl) != 0)) + return x+y; /* x or y is nan */ + if(x==y) return y; /* x=y, return y */ + if(x==0.0) { + ux.bits.manh = 0; /* return +-minsubnormal */ + ux.bits.manl = 1; + ux.bits.sign = uy.bits.sign; + t = ux.e*ux.e; + if(t==ux.e) return t; else return ux.e; /* raise underflow flag */ + } + if(x>0.0 ^ x +__FBSDID("$FreeBSD$"); + +/* + * We assume that a long double has a 15-bit exponent. On systems + * where long double is the same as double, nexttoward() is an alias + * for nextafter(), so we don't use this routine. + */ + +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#if LDBL_MAX_EXP != 0x4000 +#error "Unsupported long double format" +#endif + +double +nexttoward(double x, long double y) +{ + union IEEEl2bits uy; + volatile double t; + int32_t hx,ix; + u_int32_t lx; + + EXTRACT_WORDS(hx,lx,x); + ix = hx&0x7fffffff; /* |x| */ + uy.e = y; + + if(((ix>=0x7ff00000)&&((ix-0x7ff00000)|lx)!=0) || + (uy.bits.exp == 0x7fff && + ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl) != 0)) + return x+y; /* x or y is nan */ + if(x==y) return (double)y; /* x=y, return y */ + if(x==0.0) { + INSERT_WORDS(x,uy.bits.sign<<31,1); /* return +-minsubnormal */ + t = x*x; + if(t==x) return t; else return x; /* raise underflow flag */ + } + if(hx>0.0 ^ x < y) { /* x -= ulp */ + if(lx==0) hx -= 1; + lx -= 1; + } else { /* x += ulp */ + lx += 1; + if(lx==0) hx += 1; + } + ix = hx&0x7ff00000; + if(ix>=0x7ff00000) return x+x; /* overflow */ + if(ix<0x00100000) { /* underflow */ + t = x*x; + if(t!=x) { /* raise underflow flag */ + INSERT_WORDS(x,hx,lx); + return x; + } + } + INSERT_WORDS(x,hx,lx); + return x; +} diff --git a/newlib/libm/ld/s_nexttowardf.c b/newlib/libm/ld/s_nexttowardf.c new file mode 100644 index 0000000000..9ddfff961b --- /dev/null +++ b/newlib/libm/ld/s_nexttowardf.c @@ -0,0 +1,59 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#define LDBL_INFNAN_EXP (LDBL_MAX_EXP * 2 - 1) + +float +nexttowardf(float x, long double y) +{ + union IEEEl2bits uy; + volatile float t; + int32_t hx,ix; + + GET_FLOAT_WORD(hx,x); + ix = hx&0x7fffffff; /* |x| */ + uy.e = y; + + if((ix>0x7f800000) || + (uy.bits.exp == LDBL_INFNAN_EXP && + ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl) != 0)) + return x+y; /* x or y is nan */ + if(x==y) return (float)y; /* x=y, return y */ + if(ix==0) { /* x == 0 */ + SET_FLOAT_WORD(x,(uy.bits.sign<<31)|1);/* return +-minsubnormal */ + t = x*x; + if(t==x) return t; else return x; /* raise underflow flag */ + } + if(hx>=0 ^ x < y) /* x -= ulp */ + hx -= 1; + else /* x += ulp */ + hx += 1; + ix = hx&0x7f800000; + if(ix>=0x7f800000) return x+x; /* overflow */ + if(ix<0x00800000) { /* underflow */ + t = x*x; + if(t!=x) { /* raise underflow flag */ + SET_FLOAT_WORD(x,hx); + return x; + } + } + SET_FLOAT_WORD(x,hx); + return x; +} diff --git a/newlib/libm/ld/s_remquol.c b/newlib/libm/ld/s_remquol.c new file mode 100644 index 0000000000..56c05456b4 --- /dev/null +++ b/newlib/libm/ld/s_remquol.c @@ -0,0 +1,173 @@ +/* @(#)e_fmod.c 1.3 95/01/18 */ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#define BIAS (LDBL_MAX_EXP - 1) + +#if LDBL_MANL_SIZE > 32 +typedef uint64_t manl_t; +#else +typedef uint32_t manl_t; +#endif + +#if LDBL_MANH_SIZE > 32 +typedef uint64_t manh_t; +#else +typedef uint32_t manh_t; +#endif + +/* + * These macros add and remove an explicit integer bit in front of the + * fractional mantissa, if the architecture doesn't have such a bit by + * default already. + */ +#ifdef LDBL_IMPLICIT_NBIT +#define SET_NBIT(hx) ((hx) | (1ULL << LDBL_MANH_SIZE)) +#define HFRAC_BITS LDBL_MANH_SIZE +#else +#define SET_NBIT(hx) (hx) +#define HFRAC_BITS (LDBL_MANH_SIZE - 1) +#endif + +#define MANL_SHIFT (LDBL_MANL_SIZE - 1) + +static const long double Zero[] = {0.0L, -0.0L}; + +/* + * Return the IEEE remainder and set *quo to the last n bits of the + * quotient, rounded to the nearest integer. We choose n=31 because + * we wind up computing all the integer bits of the quotient anyway as + * a side-effect of computing the remainder by the shift and subtract + * method. In practice, this is far more bits than are needed to use + * remquo in reduction algorithms. + * + * Assumptions: + * - The low part of the mantissa fits in a manl_t exactly. + * - The high part of the mantissa fits in an int64_t with enough room + * for an explicit integer bit in front of the fractional bits. + */ +long double +remquol(long double x, long double y, int *quo) +{ + union IEEEl2bits ux, uy; + int64_t hx,hz; /* We need a carry bit even if LDBL_MANH_SIZE is 32. */ + manh_t hy; + manl_t lx,ly,lz; + int ix,iy,n,q,sx,sxy; + + ux.e = x; + uy.e = y; + sx = ux.bits.sign; + sxy = sx ^ uy.bits.sign; + ux.bits.sign = 0; /* |x| */ + uy.bits.sign = 0; /* |y| */ + + /* purge off exception values */ + if((uy.bits.exp|uy.bits.manh|uy.bits.manl)==0 || /* y=0 */ + (ux.bits.exp == BIAS + LDBL_MAX_EXP) || /* or x not finite */ + (uy.bits.exp == BIAS + LDBL_MAX_EXP && + ((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)!=0)) /* or y is NaN */ + return nan_mix_op(x, y, *)/nan_mix_op(x, y, *); + if(ux.bits.exp<=uy.bits.exp) { + if((ux.bits.exp>MANL_SHIFT); lx = lx+lx;} + else {hx = hz+hz+(lz>>MANL_SHIFT); lx = lz+lz; q++;} + q <<= 1; + } + hz=hx-hy;lz=lx-ly; if(lx=0) {hx=hz;lx=lz;q++;} + + /* convert back to floating value and restore the sign */ + if((hx|lx)==0) { /* return sign(x)*0 */ + q &= 0x7fffffff; + *quo = (sxy ? -q : q); + return Zero[sx]; + } + while(hx<(1ULL<>MANL_SHIFT); lx = lx+lx; + iy -= 1; + } + ux.bits.manh = hx; /* The integer bit is truncated here if needed. */ + ux.bits.manl = lx; + if (iy < LDBL_MIN_EXP) { + ux.bits.exp = iy + (BIAS + 512); + ux.e *= 0x1p-512; + } else { + ux.bits.exp = iy + BIAS; + } +fixup: + x = ux.e; /* |x| */ + y = fabsl(y); + if (y < LDBL_MIN * 2) { + if (x+x>y || (x+x==y && (q & 1))) { + q++; + x-=y; + } + } else if (x>0.5*y || (x==0.5*y && (q & 1))) { + q++; + x-=y; + } + ux.e = x; + ux.bits.sign ^= sx; + x = ux.e; + q &= 0x7fffffff; + *quo = (sxy ? -q : q); + return x; +} diff --git a/newlib/libm/ld/s_rintl.c b/newlib/libm/ld/s_rintl.c new file mode 100644 index 0000000000..1e9824d83b --- /dev/null +++ b/newlib/libm/ld/s_rintl.c @@ -0,0 +1,92 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "fpmath.h" + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual bias, min exp and expsign packing. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const float +shift[2] = { +#if LDBL_MANT_DIG == 64 + 0x1.0p63, -0x1.0p63 +#elif LDBL_MANT_DIG == 113 + 0x1.0p112, -0x1.0p112 +#else +#error "Unsupported long double format" +#endif +}; +static const float zero[2] = { 0.0, -0.0 }; + +long double +rintl(long double x) +{ + union IEEEl2bits u; + uint32_t expsign; + int ex, sign; + + u.e = x; + expsign = u.xbits.expsign; + ex = expsign & 0x7fff; + + if (ex >= BIAS + LDBL_MANT_DIG - 1) { + if (ex == BIAS + LDBL_MAX_EXP) + return (x + x); /* Inf, NaN, or unsupported format */ + return (x); /* finite and already an integer */ + } + sign = expsign >> 15; + + /* + * The following code assumes that intermediate results are + * evaluated in long double precision. If they are evaluated in + * greater precision, double rounding may occur, and if they are + * evaluated in less precision (as on i386), results will be + * wildly incorrect. + */ + x += shift[sign]; + x -= shift[sign]; + + /* + * If the result is +-0, then it must have the same sign as x, but + * the above calculation doesn't always give this. Fix up the sign. + */ + if (ex < BIAS && x == 0.0L) + return (zero[sign]); + + return (x); +} diff --git a/newlib/libm/ld/s_roundl.c b/newlib/libm/ld/s_roundl.c new file mode 100644 index 0000000000..8d1c02a7f8 --- /dev/null +++ b/newlib/libm/ld/s_roundl.c @@ -0,0 +1,64 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2003, Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +long double +roundl(long double x) +{ + long double t; + uint16_t hx; + + GET_LDBL_EXPSIGN(hx, x); + if ((hx & 0x7fff) == 0x7fff) + return (x + x); + + ENTERI(); + + if (!(hx & 0x8000)) { + t = floorl(x); + if (t - x <= -0.5L) + t += 1; + RETURNI(t); + } else { + t = floorl(-x); + if (t + x <= -0.5L) + t += 1; + RETURNI(-t); + } +} diff --git a/newlib/libm/ld/s_scalbln.c b/newlib/libm/ld/s_scalbln.c new file mode 100644 index 0000000000..c27420c929 --- /dev/null +++ b/newlib/libm/ld/s_scalbln.c @@ -0,0 +1,56 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2004 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#define NMAX 65536 +#define NMIN -65536 + +double +scalbln(double x, long n) +{ + + return (scalbn(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n)); +} + +float +scalblnf(float x, long n) +{ + + return (scalbnf(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n)); +} + +long double +scalblnl(long double x, long n) +{ + + return (scalbnl(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n)); +} diff --git a/newlib/libm/ld/s_scalbnl.c b/newlib/libm/ld/s_scalbnl.c new file mode 100644 index 0000000000..8fb4750e70 --- /dev/null +++ b/newlib/libm/ld/s_scalbnl.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2005-2020 Rich Felker, et al. + * + * SPDX-License-Identifier: MIT + * + * Please see https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT + * for all contributors to musl. + */ +#include +#include +#include "math_private.h" +#include "fpmath.h" +/* + * scalbnl (long double x, int n) + * scalbnl(x,n) returns x* 2**n computed by exponent + * manipulation rather than by actually performing an + * exponentiation or a multiplication. + */ +#if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 +long double scalbnl(long double x, int n) +{ + union IEEEl2bits u; + + if (n > 16383) { + x *= 0x1p16383L; + n -= 16383; + if (n > 16383) { + x *= 0x1p16383L; + n -= 16383; + if (n > 16383) + n = 16383; + } + } else if (n < -16382) { + x *= 0x1p-16382L * 0x1p113L; + n += 16382 - 113; + if (n < -16382) { + x *= 0x1p-16382L * 0x1p113L; + n += 16382 - 113; + if (n < -16382) + n = -16382; + } + } + u.e = 1.0; + u.xbits.expsign = 0x3fff + n; + return x * u.e; +} +__strong_reference(scalbnl, ldexpl); +#endif diff --git a/newlib/libm/ld/s_sinl.c b/newlib/libm/ld/s_sinl.c new file mode 100644 index 0000000000..038191b0e9 --- /dev/null +++ b/newlib/libm/ld/s_sinl.c @@ -0,0 +1,95 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2007 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#ifdef __i386__ +#include +#endif + +#include "math.h" +#include "math_private.h" +#if LDBL_MANT_DIG == 64 +#include "../ld80/e_rem_pio2l.h" +#elif LDBL_MANT_DIG == 113 +#include "../ld128/e_rem_pio2l.h" +#else +#error "Unsupported long double format" +#endif + +long double +sinl(long double x) +{ + union IEEEl2bits z; + int e0, s; + long double y[2]; + long double hi, lo; + + z.e = x; + s = z.bits.sign; + z.bits.sign = 0; + + /* If x = +-0 or x is a subnormal number, then sin(x) = x */ + if (z.bits.exp == 0) + return (x); + + /* If x = NaN or Inf, then sin(x) = NaN. */ + if (z.bits.exp == 32767) + return ((x - x) / (x - x)); + + ENTERI(); + + /* Optimize the case where x is already within range. */ + if (z.e < M_PI_4) { + hi = __kernel_sinl(z.e, 0, 0); + RETURNI(s ? -hi : hi); + } + + e0 = __ieee754_rem_pio2l(x, y); + hi = y[0]; + lo = y[1]; + + switch (e0 & 3) { + case 0: + hi = __kernel_sinl(hi, lo, 1); + break; + case 1: + hi = __kernel_cosl(hi, lo); + break; + case 2: + hi = - __kernel_sinl(hi, lo, 1); + break; + case 3: + hi = - __kernel_cosl(hi, lo); + break; + } + + RETURNI(hi); +} diff --git a/newlib/libm/ld/s_tanhl.c b/newlib/libm/ld/s_tanhl.c new file mode 100644 index 0000000000..b7531866dd --- /dev/null +++ b/newlib/libm/ld/s_tanhl.c @@ -0,0 +1,174 @@ +/* from: FreeBSD: head/lib/msun/src/s_tanhl.c XXX */ + +/* @(#)s_tanh.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See s_tanh.c for complete comments. + * + * Converted to long double by Bruce D. Evans. + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "math.h" +#include "math_private.h" +#include "fpmath.h" +#include "k_expl.h" + +#if LDBL_MAX_EXP != 0x4000 +/* We also require the usual expsign encoding. */ +#error "Unsupported long double format" +#endif + +#define BIAS (LDBL_MAX_EXP - 1) + +static const volatile double tiny = 1.0e-300; +static const double one = 1.0; +#if LDBL_MANT_DIG == 64 +/* + * Domain [-0.25, 0.25], range ~[-1.6304e-22, 1.6304e-22]: + * |tanh(x)/x - t(x)| < 2**-72.3 + */ +static const union IEEEl2bits +T3u = LD80C(0xaaaaaaaaaaaaaa9f, -2, -3.33333333333333333017e-1L); +#define T3 T3u.e +static const double +T5 = 1.3333333333333314e-1, /* 0x1111111111110a.0p-55 */ +T7 = -5.3968253968210485e-2, /* -0x1ba1ba1ba1a1a1.0p-57 */ +T9 = 2.1869488531393817e-2, /* 0x1664f488172022.0p-58 */ +T11 = -8.8632352345964591e-3, /* -0x1226e34bc138d5.0p-59 */ +T13 = 3.5921169709993771e-3, /* 0x1d6d371d3e400f.0p-61 */ +T15 = -1.4555786415756001e-3, /* -0x17d923aa63814d.0p-62 */ +T17 = 5.8645267876296793e-4, /* 0x13378589b85aa7.0p-63 */ +T19 = -2.1121033571392224e-4; /* -0x1baf0af80c4090.0p-65 */ +#elif LDBL_MANT_DIG == 113 +/* + * Domain [-0.25, 0.25], range ~[-2.4211e-37, 2.4211e-37]: + * |tanh(x)/x - t(x)| < 2**121.6 + */ +static const long double +T3 = -3.33333333333333333333333333333332980e-1L, /* -0x1555555555555555555555555554e.0p-114L */ +T5 = 1.33333333333333333333333333332707260e-1L, /* 0x1111111111111111111111110ab7b.0p-115L */ +T7 = -5.39682539682539682539682535723482314e-2L, /* -0x1ba1ba1ba1ba1ba1ba1ba17b5fc98.0p-117L */ +T9 = 2.18694885361552028218693591149061717e-2L, /* 0x1664f4882c10f9f32d6b1a12a25e5.0p-118L */ +T11 = -8.86323552990219656883762347736381851e-3L, /* -0x1226e355e6c23c8f5a5a0f386cb4d.0p-119L */ +T13 = 3.59212803657248101358314398220822722e-3L, /* 0x1d6d3d0e157ddfb403ad3637442c6.0p-121L */ +T15 = -1.45583438705131796512568010348874662e-3L; /* -0x17da36452b75e150c44cc34253b34.0p-122L */ +static const double +T17 = 5.9002744094556621e-4, /* 0x1355824803668e.0p-63 */ +T19 = -2.3912911424260516e-4, /* -0x1f57d7734c8dde.0p-65 */ +T21 = 9.6915379535512898e-5, /* 0x1967e18ad6a6ca.0p-66 */ +T23 = -3.9278322983156353e-5, /* -0x1497d8e6b75729.0p-67 */ +T25 = 1.5918887220143869e-5, /* 0x10b1319998cafa.0p-68 */ +T27 = -6.4514295231630956e-6, /* -0x1b0f2b71b218eb.0p-70 */ +T29 = 2.6120754043964365e-6, /* 0x15e963a3cf3a39.0p-71 */ +T31 = -1.0407567231003314e-6, /* -0x1176041e656869.0p-72 */ +T33 = 3.4744117554063574e-7; /* 0x1750fe732cab9c.0p-74 */ +#endif /* LDBL_MANT_DIG == 64 */ + +static inline long double +divl(long double a, long double b, long double c, long double d, + long double e, long double f) +{ + long double inv, r; + float fr, fw; + + _2sumF(a, c); + b = b + c; + _2sumF(d, f); + e = e + f; + + inv = 1 / (d + e); + + r = (a + b) * inv; + fr = r; + r = fr; + + fw = d + e; + e = d - fw + e; + d = fw; + + r = r + (a - d * r + b - e * r) * inv; + + return r; +} + +long double +tanhl(long double x) +{ + long double hi,lo,s,x2,x4,z; +#if LDBL_MANT_DIG == 113 + double dx2; +#endif + int16_t jx,ix; + + GET_LDBL_EXPSIGN(jx,x); + ix = jx&0x7fff; + + /* x is INF or NaN */ + if(ix>=0x7fff) { + if (jx>=0) return one/x+one; /* tanh(+-inf)=+-1 */ + else return one/x-one; /* tanh(NaN) = NaN */ + } + + ENTERI(); + + /* |x| < 40 */ + if (ix < 0x4004 || fabsl(x) < 40) { /* |x|<40 */ + if (__predict_false(ix= 40, return +-1 */ + } else { + z = one - tiny; /* raise inexact flag */ + } + s = 1; + if (jx<0) s = -1; + RETURNI(s*z); +} diff --git a/newlib/libm/ld/s_tanl.c b/newlib/libm/ld/s_tanl.c new file mode 100644 index 0000000000..0c5228ec8f --- /dev/null +++ b/newlib/libm/ld/s_tanl.c @@ -0,0 +1,97 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2007 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * Limited testing on pseudorandom numbers drawn within [0:4e8] shows + * an accuracy of <= 1.5 ULP where 247024 values of x out of 40 million + * possibles resulted in tan(x) that exceeded 0.5 ULP (ie., 0.6%). + */ + +#include +#ifdef __i386__ +#include +#endif + +#include "math.h" +#include "math_private.h" +#if LDBL_MANT_DIG == 64 +#include "../ld80/e_rem_pio2l.h" +#elif LDBL_MANT_DIG == 113 +#include "../ld128/e_rem_pio2l.h" +#else +#error "Unsupported long double format" +#endif + +long double +tanl(long double x) +{ + union IEEEl2bits z; + int e0, s; + long double y[2]; + long double hi, lo; + + z.e = x; + s = z.bits.sign; + z.bits.sign = 0; + + /* If x = +-0 or x is subnormal, then tan(x) = x. */ + if (z.bits.exp == 0) + return (x); + + /* If x = NaN or Inf, then tan(x) = NaN. */ + if (z.bits.exp == 32767) + return ((x - x) / (x - x)); + + ENTERI(); + + /* Optimize the case where x is already within range. */ + if (z.e < M_PI_4) { + hi = __kernel_tanl(z.e, 0, 0); + RETURNI(s ? -hi : hi); + } + + e0 = __ieee754_rem_pio2l(x, y); + hi = y[0]; + lo = y[1]; + + switch (e0 & 3) { + case 0: + case 2: + hi = __kernel_tanl(hi, lo, 0); + break; + case 1: + case 3: + hi = __kernel_tanl(hi, lo, 1); + break; + } + + RETURNI(hi); +} diff --git a/newlib/libm/ld/s_truncl.c b/newlib/libm/ld/s_truncl.c new file mode 100644 index 0000000000..9e2b511325 --- /dev/null +++ b/newlib/libm/ld/s_truncl.c @@ -0,0 +1,68 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * From: @(#)s_floor.c 5.1 93/09/24 + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * truncl(x) + * Return x rounded toward 0 to integral value + * Method: + * Bit twiddling. + * Exception: + * Inexact flag raised if x not equal to truncl(x). + */ + +#include +#include +#include + +#include "fpmath.h" + +#ifdef LDBL_IMPLICIT_NBIT +#define MANH_SIZE (LDBL_MANH_SIZE + 1) +#else +#define MANH_SIZE LDBL_MANH_SIZE +#endif + +static const long double huge = 1.0e300; +static const float zero[] = { 0.0, -0.0 }; + +long double +truncl(long double x) +{ + union IEEEl2bits u = { .e = x }; + int e = u.bits.exp - LDBL_MAX_EXP + 1; + + if (e < MANH_SIZE - 1) { + if (e < 0) { /* raise inexact if x != 0 */ + if (huge + x > 0.0) + u.e = zero[u.bits.sign]; + } else { + uint64_t m = ((1llu << MANH_SIZE) - 1) >> (e + 1); + if (((u.bits.manh & m) | u.bits.manl) == 0) + return (x); /* x is integral */ + if (huge + x > 0.0) { /* raise inexact flag */ + u.bits.manh &= ~m; + u.bits.manl = 0; + } + } + } else if (e < LDBL_MANT_DIG - 1) { + uint64_t m = (uint64_t)-1 >> (64 - LDBL_MANT_DIG + e + 1); + if ((u.bits.manl & m) == 0) + return (x); /* x is integral */ + if (huge + x > 0.0) /* raise inexact flag */ + u.bits.manl &= ~m; + } + return (u.e); +} diff --git a/newlib/libm/ld128/b_tgammal.c b/newlib/libm/ld128/b_tgammal.c new file mode 100644 index 0000000000..1c995ab6d6 --- /dev/null +++ b/newlib/libm/ld128/b_tgammal.c @@ -0,0 +1,57 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2013 David Chisnall + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include + +/* + * If long double is not the same size as double, then these will lose + * precision and we should emit a warning whenever something links against + * them. + */ +#if (LDBL_MANT_DIG > 53) +#define WARN_IMPRECISE(x) \ + __warn_references(x, # x " has lower than advertised precision"); +#else +#define WARN_IMPRECISE(x) +#endif +/* + * Declare the functions as weak variants so that other libraries providing + * real versions can override them. + */ +#define DECLARE_WEAK(x)\ + __weak_reference(imprecise_## x, x);\ + WARN_IMPRECISE(x) + +#define DECLARE_IMPRECISE(f) \ + long double imprecise_ ## f ## l(long double v) { return f(v); }\ + DECLARE_WEAK(f ## l) + +DECLARE_IMPRECISE(tgamma); diff --git a/newlib/libm/ld128/e_lgammal_r.c b/newlib/libm/ld128/e_lgammal_r.c new file mode 100644 index 0000000000..f236a5da08 --- /dev/null +++ b/newlib/libm/ld128/e_lgammal_r.c @@ -0,0 +1,330 @@ +/* @(#)e_lgamma_r.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See e_lgamma_r.c for complete comments. + * + * Converted to long double by Steven G. Kargl. + */ + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +static const volatile double vzero = 0; + +static const double +zero= 0, +half= 0.5, +one = 1; + +static const long double +pi = 3.14159265358979323846264338327950288e+00L; +/* + * Domain y in [0x1p-119, 0.28], range ~[-1.4065e-36, 1.4065e-36]: + * |(lgamma(2 - y) + y / 2) / y - a(y)| < 2**-119.1 + */ +static const long double +a0 = 7.72156649015328606065120900824024296e-02L, +a1 = 3.22467033424113218236207583323018498e-01L, +a2 = 6.73523010531980951332460538330282217e-02L, +a3 = 2.05808084277845478790009252803463129e-02L, +a4 = 7.38555102867398526627292839296001626e-03L, +a5 = 2.89051033074152328576829509522483468e-03L, +a6 = 1.19275391170326097618357349881842913e-03L, +a7 = 5.09669524743042462515256340206203019e-04L, +a8 = 2.23154758453578096143609255559576017e-04L, +a9 = 9.94575127818397632126978731542755129e-05L, +a10 = 4.49262367375420471287545895027098145e-05L, +a11 = 2.05072127845117995426519671481628849e-05L, +a12 = 9.43948816959096748454087141447939513e-06L, +a13 = 4.37486780697359330303852050718287419e-06L, +a14 = 2.03920783892362558276037363847651809e-06L, +a15 = 9.55191070057967287877923073200324649e-07L, +a16 = 4.48993286185740853170657139487620560e-07L, +a17 = 2.13107543597620911675316728179563522e-07L, +a18 = 9.70745379855304499867546549551023473e-08L, +a19 = 5.61889970390290257926487734695402075e-08L, +a20 = 6.42739653024130071866684358960960951e-09L, +a21 = 3.34491062143649291746195612991870119e-08L, +a22 = -1.57068547394315223934653011440641472e-08L, +a23 = 1.30812825422415841213733487745200632e-08L; +/* + * Domain x in [tc-0.24, tc+0.28], range ~[-6.3201e-37, 6.3201e-37]: + * |(lgamma(x) - tf) - t(x - tc)| < 2**-120.3. + */ +static const long double +tc = 1.46163214496836234126265954232572133e+00L, +tf = -1.21486290535849608095514557177691584e-01L, +tt = 1.57061739945077675484237837992951704e-36L, +t0 = -1.99238329499314692728655623767019240e-36L, +t1 = -6.08453430711711404116887457663281416e-35L, +t2 = 4.83836122723810585213722380854828904e-01L, +t3 = -1.47587722994530702030955093950668275e-01L, +t4 = 6.46249402389127526561003464202671923e-02L, +t5 = -3.27885410884813055008502586863748063e-02L, +t6 = 1.79706751152103942928638276067164935e-02L, +t7 = -1.03142230366363872751602029672767978e-02L, +t8 = 6.10053602051788840313573150785080958e-03L, +t9 = -3.68456960831637325470641021892968954e-03L, +t10 = 2.25976482322181046611440855340968560e-03L, +t11 = -1.40225144590445082933490395950664961e-03L, +t12 = 8.78232634717681264035014878172485575e-04L, +t13 = -5.54194952796682301220684760591403899e-04L, +t14 = 3.51912956837848209220421213975000298e-04L, +t15 = -2.24653443695947456542669289367055542e-04L, +t16 = 1.44070395420840737695611929680511823e-04L, +t17 = -9.27609865550394140067059487518862512e-05L, +t18 = 5.99347334438437081412945428365433073e-05L, +t19 = -3.88458388854572825603964274134801009e-05L, +t20 = 2.52476631610328129217896436186551043e-05L, +t21 = -1.64508584981658692556994212457518536e-05L, +t22 = 1.07434583475987007495523340296173839e-05L, +t23 = -7.03070407519397260929482550448878399e-06L, +t24 = 4.60968590693753579648385629003100469e-06L, +t25 = -3.02765473778832036018438676945512661e-06L, +t26 = 1.99238771545503819972741288511303401e-06L, +t27 = -1.31281299822614084861868817951788579e-06L, +t28 = 8.60844432267399655055574642052370223e-07L, +t29 = -5.64535486432397413273248363550536374e-07L, +t30 = 3.99357783676275660934903139592727737e-07L, +t31 = -2.95849029193433121795495215869311610e-07L, +t32 = 1.37790144435073124976696250804940384e-07L; +/* + * Domain y in [-0.1, 0.232], range ~[-1.4046e-37, 1.4181e-37]: + * |(lgamma(1 + y) + 0.5 * y) / y - u(y) / v(y)| < 2**-122.8 + */ +static const long double +u0 = -7.72156649015328606065120900824024311e-02L, +u1 = 4.24082772271938167430983113242482656e-01L, +u2 = 2.96194003481457101058321977413332171e+00L, +u3 = 6.49503267711258043997790983071543710e+00L, +u4 = 7.40090051288150177152835698948644483e+00L, +u5 = 4.94698036296756044610805900340723464e+00L, +u6 = 2.00194224610796294762469550684947768e+00L, +u7 = 4.82073087750608895996915051568834949e-01L, +u8 = 6.46694052280506568192333848437585427e-02L, +u9 = 4.17685526755100259316625348933108810e-03L, +u10 = 9.06361003550314327144119307810053410e-05L, +v1 = 5.15937098592887275994320496999951947e+00L, +v2 = 1.14068418766251486777604403304717558e+01L, +v3 = 1.41164839437524744055723871839748489e+01L, +v4 = 1.07170702656179582805791063277960532e+01L, +v5 = 5.14448694179047879915042998453632434e+00L, +v6 = 1.55210088094585540637493826431170289e+00L, +v7 = 2.82975732849424562719893657416365673e-01L, +v8 = 2.86424622754753198010525786005443539e-02L, +v9 = 1.35364253570403771005922441442688978e-03L, +v10 = 1.91514173702398375346658943749580666e-05L, +v11 = -3.25364686890242327944584691466034268e-08L; +/* + * Domain x in (2, 3], range ~[-1.3341e-36, 1.3536e-36]: + * |(lgamma(y+2) - 0.5 * y) / y - s(y)/r(y)| < 2**-120.1 + * with y = x - 2. + */ +static const long double +s0 = -7.72156649015328606065120900824024297e-02L, +s1 = 1.23221687850916448903914170805852253e-01L, +s2 = 5.43673188699937239808255378293820020e-01L, +s3 = 6.31998137119005233383666791176301800e-01L, +s4 = 3.75885340179479850993811501596213763e-01L, +s5 = 1.31572908743275052623410195011261575e-01L, +s6 = 2.82528453299138685507186287149699749e-02L, +s7 = 3.70262021550340817867688714880797019e-03L, +s8 = 2.83374000312371199625774129290973648e-04L, +s9 = 1.15091830239148290758883505582343691e-05L, +s10 = 2.04203474281493971326506384646692446e-07L, +s11 = 9.79544198078992058548607407635645763e-10L, +r1 = 2.58037466655605285937112832039537492e+00L, +r2 = 2.86289413392776399262513849911531180e+00L, +r3 = 1.78691044735267497452847829579514367e+00L, +r4 = 6.89400381446725342846854215600008055e-01L, +r5 = 1.70135865462567955867134197595365343e-01L, +r6 = 2.68794816183964420375498986152766763e-02L, +r7 = 2.64617234244861832870088893332006679e-03L, +r8 = 1.52881761239180800640068128681725702e-04L, +r9 = 4.63264813762296029824851351257638558e-06L, +r10 = 5.89461519146957343083848967333671142e-08L, +r11 = 1.79027678176582527798327441636552968e-10L; +/* + * Domain z in [8, 0x1p70], range ~[-9.8214e-35, 9.8214e-35]: + * |lgamma(x) - (x - 0.5) * (log(x) - 1) - w(1/x)| < 2**-113.0 + */ +static const long double +w0 = 4.18938533204672741780329736405617738e-01L, +w1 = 8.33333333333333333333333333332852026e-02L, +w2 = -2.77777777777777777777777727810123528e-03L, +w3 = 7.93650793650793650791708939493907380e-04L, +w4 = -5.95238095238095234390450004444370959e-04L, +w5 = 8.41750841750837633887817658848845695e-04L, +w6 = -1.91752691752396849943172337347259743e-03L, +w7 = 6.41025640880333069429106541459015557e-03L, +w8 = -2.95506530801732133437990433080327074e-02L, +w9 = 1.79644237328444101596766586979576927e-01L, +w10 = -1.39240539108367641920172649259736394e+00L, +w11 = 1.33987701479007233325288857758641761e+01L, +w12 = -1.56363596431084279780966590116006255e+02L, +w13 = 2.14830978044410267201172332952040777e+03L, +w14 = -3.28636067474227378352761516589092334e+04L, +w15 = 5.06201257747865138432663574251462485e+05L, +w16 = -6.79720123352023636706247599728048344e+06L, +w17 = 6.57556601705472106989497289465949255e+07L, +w18 = -3.26229058141181783534257632389415580e+08L; + +static long double +sin_pil(long double x) +{ + volatile long double vz; + long double y,z; + uint64_t lx, n; + uint16_t hx; + + y = -x; + + vz = y+0x1.p112; + z = vz-0x1.p112; + if (z == y) + return zero; + + vz = y+0x1.p110; + EXTRACT_LDBL128_WORDS(hx,lx,n,vz); + z = vz-0x1.p110; + if (z > y) { + z -= 0.25; + n--; + } + n &= 7; + y = y - z + n * 0.25; + + switch (n) { + case 0: y = __kernel_sinl(pi*y,zero,0); break; + case 1: + case 2: y = __kernel_cosl(pi*(0.5-y),zero); break; + case 3: + case 4: y = __kernel_sinl(pi*(one-y),zero,0); break; + case 5: + case 6: y = -__kernel_cosl(pi*(y-1.5),zero); break; + default: y = __kernel_sinl(pi*(y-2.0),zero,0); break; + } + return -y; +} + +long double +lgammal_r(long double x, int *signgamp) +{ + long double nadj,p,p1,p2,p3,q,r,t,w,y,z; + uint64_t llx,lx; + int i; + uint16_t hx,ix; + + EXTRACT_LDBL128_WORDS(hx,lx,llx,x); + + /* purge +-Inf and NaNs */ + *signgamp = 1; + ix = hx&0x7fff; + if(ix==0x7fff) return x*x; + + /* purge +-0 and tiny arguments */ + *signgamp = 1-2*(hx>>15); + if(ix<0x3fff-116) { /* |x|<2**-(p+3), return -log(|x|) */ + if((ix|lx|llx)==0) + return one/vzero; + return -logl(fabsl(x)); + } + + /* purge negative integers and start evaluation for other x < 0 */ + if(hx&0x8000) { + *signgamp = 1; + if(ix>=0x3fff+112) /* |x|>=2**(p-1), must be -integer */ + return one/vzero; + t = sin_pil(x); + if(t==zero) return one/vzero; + nadj = logl(pi/fabsl(t*x)); + if(t=7.3159980773925781e-01) {y = 1-x; i= 0;} + else if(x>=2.3163998126983643e-01) {y= x-(tc-1); i=1;} + else {y = x; i=2;} + } else { + r = 0; + if(x>=1.7316312789916992e+00) {y=2-x;i=0;} + else if(x>=1.2316322326660156e+00) {y=x-tc;i=1;} + else {y=x-1;i=2;} + } + switch(i) { + case 0: + z = y*y; + p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*(a10+z*(a12+z*(a14+z*(a16+ + z*(a18+z*(a20+z*a22)))))))))); + p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*(a11+z*(a13+z*(a15+ + z*(a17+z*(a19+z*(a21+z*a23))))))))))); + p = y*p1+p2; + r += p-y/2; break; + case 1: + p = t0+y*t1+tt+y*y*(t2+y*(t3+y*(t4+y*(t5+y*(t6+y*(t7+y*(t8+ + y*(t9+y*(t10+y*(t11+y*(t12+y*(t13+y*(t14+y*(t15+y*(t16+ + y*(t17+y*(t18+y*(t19+y*(t20+y*(t21+y*(t22+y*(t23+ + y*(t24+y*(t25+y*(t26+y*(t27+y*(t28+y*(t29+y*(t30+ + y*(t31+y*t32)))))))))))))))))))))))))))))); + r += tf + p; break; + case 2: + p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*(u5+y*(u6+y*(u7+ + y*(u8+y*(u9+y*u10)))))))))); + p2 = one+y*(v1+y*(v2+y*(v3+y*(v4+y*(v5+y*(v6+y*(v7+ + y*(v8+y*(v9+y*(v10+y*v11)))))))))); + r += p1/p2-y/2; + } + } + /* x < 8.0 */ + else if(ix<0x4002) { + i = x; + y = x-i; + p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*(s6+y*(s7+y*(s8+ + y*(s9+y*(s10+y*s11))))))))))); + q = one+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*(r6+y*(r7+y*(r8+ + y*(r9+y*(r10+y*r11)))))))))); + r = y/2+p/q; + z = 1; /* lgamma(1+s) = log(s) + lgamma(s) */ + switch(i) { + case 7: z *= (y+6); /* FALLTHRU */ + case 6: z *= (y+5); /* FALLTHRU */ + case 5: z *= (y+4); /* FALLTHRU */ + case 4: z *= (y+3); /* FALLTHRU */ + case 3: z *= (y+2); /* FALLTHRU */ + r += logl(z); break; + } + /* 8.0 <= x < 2**(p+3) */ + } else if (ix<0x3fff+116) { + t = logl(x); + z = one/x; + y = z*z; + w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*(w6+y*(w7+y*(w8+ + y*(w9+y*(w10+y*(w11+y*(w12+y*(w13+y*(w14+y*(w15+y*(w16+ + y*(w17+y*w18))))))))))))))))); + r = (x-half)*(t-one)+w; + /* 2**(p+3) <= x <= inf */ + } else + r = x*(logl(x)-1); + if(hx&0x8000) r = nadj - r; + return r; +} diff --git a/newlib/libm/ld128/e_powl.c b/newlib/libm/ld128/e_powl.c new file mode 100644 index 0000000000..12b92a1a98 --- /dev/null +++ b/newlib/libm/ld128/e_powl.c @@ -0,0 +1,443 @@ +/*- + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* powl(x,y) return x**y + * + * n + * Method: Let x = 2 * (1+f) + * 1. Compute and return log2(x) in two pieces: + * log2(x) = w1 + w2, + * where w1 has 113-53 = 60 bit trailing zeros. + * 2. Perform y*log2(x) = n+y' by simulating multi-precision + * arithmetic, where |y'|<=0.5. + * 3. Return x**y = 2**n*exp(y'*log2) + * + * Special cases: + * 1. (anything) ** 0 is 1 + * 2. (anything) ** 1 is itself + * 3. (anything) ** NAN is NAN + * 4. NAN ** (anything except 0) is NAN + * 5. +-(|x| > 1) ** +INF is +INF + * 6. +-(|x| > 1) ** -INF is +0 + * 7. +-(|x| < 1) ** +INF is +0 + * 8. +-(|x| < 1) ** -INF is +INF + * 9. +-1 ** +-INF is NAN + * 10. +0 ** (+anything except 0, NAN) is +0 + * 11. -0 ** (+anything except 0, NAN, odd integer) is +0 + * 12. +0 ** (-anything except 0, NAN) is +INF + * 13. -0 ** (-anything except 0, NAN, odd integer) is +INF + * 14. -0 ** (odd integer) = -( +0 ** (odd integer) ) + * 15. +INF ** (+anything except 0,NAN) is +INF + * 16. +INF ** (-anything except 0,NAN) is +0 + * 17. -INF ** (anything) = -0 ** (-anything) + * 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer) + * 19. (-anything except 0 and inf) ** (non-integer) is NAN + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "math_private.h" + +static const long double bp[] = { + 1.0L, + 1.5L, +}; + +/* log_2(1.5) */ +static const long double dp_h[] = { + 0.0, + 5.8496250072115607565592654282227158546448E-1L +}; + +/* Low part of log_2(1.5) */ +static const long double dp_l[] = { + 0.0, + 1.0579781240112554492329533686862998106046E-16L +}; + +static const long double zero = 0.0L, + one = 1.0L, + two = 2.0L, + two113 = 1.0384593717069655257060992658440192E34L, + huge = 1.0e3000L, + tiny = 1.0e-3000L; + +/* 3/2 log x = 3 z + z^3 + z^3 (z^2 R(z^2)) + z = (x-1)/(x+1) + 1 <= x <= 1.25 + Peak relative error 2.3e-37 */ +static const long double LN[] = +{ + -3.0779177200290054398792536829702930623200E1L, + 6.5135778082209159921251824580292116201640E1L, + -4.6312921812152436921591152809994014413540E1L, + 1.2510208195629420304615674658258363295208E1L, + -9.9266909031921425609179910128531667336670E-1L +}; +static const long double LD[] = +{ + -5.129862866715009066465422805058933131960E1L, + 1.452015077564081884387441590064272782044E2L, + -1.524043275549860505277434040464085593165E2L, + 7.236063513651544224319663428634139768808E1L, + -1.494198912340228235853027849917095580053E1L + /* 1.0E0 */ +}; + +/* exp(x) = 1 + x - x / (1 - 2 / (x - x^2 R(x^2))) + 0 <= x <= 0.5 + Peak relative error 5.7e-38 */ +static const long double PN[] = +{ + 5.081801691915377692446852383385968225675E8L, + 9.360895299872484512023336636427675327355E6L, + 4.213701282274196030811629773097579432957E4L, + 5.201006511142748908655720086041570288182E1L, + 9.088368420359444263703202925095675982530E-3L, +}; +static const long double PD[] = +{ + 3.049081015149226615468111430031590411682E9L, + 1.069833887183886839966085436512368982758E8L, + 8.259257717868875207333991924545445705394E5L, + 1.872583833284143212651746812884298360922E3L, + /* 1.0E0 */ +}; + +static const long double + /* ln 2 */ + lg2 = 6.9314718055994530941723212145817656807550E-1L, + lg2_h = 6.9314718055994528622676398299518041312695E-1L, + lg2_l = 2.3190468138462996154948554638754786504121E-17L, + ovt = 8.0085662595372944372e-0017L, + /* 2/(3*log(2)) */ + cp = 9.6179669392597560490661645400126142495110E-1L, + cp_h = 9.6179669392597555432899980587535537779331E-1L, + cp_l = 5.0577616648125906047157785230014751039424E-17L; + +long double +powl(long double x, long double y) +{ + long double z, ax, z_h, z_l, p_h, p_l; + long double yy1, t1, t2, r, s, t, u, v, w; + long double s2, s_h, s_l, t_h, t_l; + int32_t i, j, k, yisint, n; + u_int32_t ix, iy; + int32_t hx, hy; + ieee_quad_shape_type o, p, q; + + p.value = x; + hx = p.parts32.mswhi; + ix = hx & 0x7fffffff; + + q.value = y; + hy = q.parts32.mswhi; + iy = hy & 0x7fffffff; + + + /* y==zero: x**0 = 1 */ + if ((iy | q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) == 0) + return one; + + /* 1.0**y = 1; -1.0**+-Inf = 1 */ + if (x == one) + return one; + if (x == -1.0L && iy == 0x7fff0000 + && (q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) == 0) + return one; + + /* +-NaN return x+y */ + if ((ix > 0x7fff0000) + || ((ix == 0x7fff0000) + && ((p.parts32.mswlo | p.parts32.lswhi | p.parts32.lswlo) != 0)) + || (iy > 0x7fff0000) + || ((iy == 0x7fff0000) + && ((q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) != 0))) + return nan_mix(x, y); + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + yisint = 0; + if (hx < 0) + { + if (iy >= 0x40700000) /* 2^113 */ + yisint = 2; /* even integer y */ + else if (iy >= 0x3fff0000) /* 1.0 */ + { + if (floorl (y) == y) + { + z = 0.5 * y; + if (floorl (z) == z) + yisint = 2; + else + yisint = 1; + } + } + } + + /* special value of y */ + if ((q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) == 0) + { + if (iy == 0x7fff0000) /* y is +-inf */ + { + if (((ix - 0x3fff0000) | p.parts32.mswlo | p.parts32.lswhi | + p.parts32.lswlo) == 0) + return y - y; /* +-1**inf is NaN */ + else if (ix >= 0x3fff0000) /* (|x|>1)**+-inf = inf,0 */ + return (hy >= 0) ? y : zero; + else /* (|x|<1)**-,+inf = inf,0 */ + return (hy < 0) ? -y : zero; + } + if (iy == 0x3fff0000) + { /* y is +-1 */ + if (hy < 0) + return one / x; + else + return x; + } + if (hy == 0x40000000) + return x * x; /* y is 2 */ + if (hy == 0x3ffe0000) + { /* y is 0.5 */ + if (hx >= 0) /* x >= +0 */ + return sqrtl (x); + } + } + + ax = fabsl (x); + /* special value of x */ + if ((p.parts32.mswlo | p.parts32.lswhi | p.parts32.lswlo) == 0) + { + if (ix == 0x7fff0000 || ix == 0 || ix == 0x3fff0000) + { + z = ax; /*x is +-0,+-inf,+-1 */ + if (hy < 0) + z = one / z; /* z = (1/|x|) */ + if (hx < 0) + { + if (((ix - 0x3fff0000) | yisint) == 0) + { + z = (z - z) / (z - z); /* (-1)**non-int is NaN */ + } + else if (yisint == 1) + z = -z; /* (x<0)**odd = -(|x|**odd) */ + } + return z; + } + } + + /* (x<0)**(non-int) is NaN */ + if (((((u_int32_t) hx >> 31) - 1) | yisint) == 0) + return (x - x) / (x - x); + + /* |y| is huge. + 2^-16495 = 1/2 of smallest representable value. + If (1 - 1/131072)^y underflows, y > 1.4986e9 */ + if (iy > 0x401d654b) + { + /* if (1 - 2^-113)^y underflows, y > 1.1873e38 */ + if (iy > 0x407d654b) + { + if (ix <= 0x3ffeffff) + return (hy < 0) ? huge * huge : tiny * tiny; + if (ix >= 0x3fff0000) + return (hy > 0) ? huge * huge : tiny * tiny; + } + /* over/underflow if x is not close to one */ + if (ix < 0x3ffeffff) + return (hy < 0) ? huge * huge : tiny * tiny; + if (ix > 0x3fff0000) + return (hy > 0) ? huge * huge : tiny * tiny; + } + + n = 0; + /* take care subnormal number */ + if (ix < 0x00010000) + { + ax *= two113; + n -= 113; + o.value = ax; + ix = o.parts32.mswhi; + } + n += ((ix) >> 16) - 0x3fff; + j = ix & 0x0000ffff; + /* determine interval */ + ix = j | 0x3fff0000; /* normalize ix */ + if (j <= 0x3988) + k = 0; /* |x|> 31) - 1) | (yisint - 1)) == 0) + s = -one; /* (-ve)**(odd int) */ + + /* split up y into yy1+y2 and compute (yy1+y2)*(t1+t2) */ + yy1 = y; + o.value = yy1; + o.parts32.lswlo = 0; + o.parts32.lswhi &= 0xf8000000; + yy1 = o.value; + p_l = (y - yy1) * t1 + y * t2; + p_h = yy1 * t1; + z = p_l + p_h; + o.value = z; + j = o.parts32.mswhi; + if (j >= 0x400d0000) /* z >= 16384 */ + { + /* if z > 16384 */ + if (((j - 0x400d0000) | o.parts32.mswlo | o.parts32.lswhi | + o.parts32.lswlo) != 0) + return s * huge * huge; /* overflow */ + else + { + if (p_l + ovt > z - p_h) + return s * huge * huge; /* overflow */ + } + } + else if ((j & 0x7fffffff) >= 0x400d01b9) /* z <= -16495 */ + { + /* z < -16495 */ + if (((j - 0xc00d01bc) | o.parts32.mswlo | o.parts32.lswhi | + o.parts32.lswlo) + != 0) + return s * tiny * tiny; /* underflow */ + else + { + if (p_l <= z - p_h) + return s * tiny * tiny; /* underflow */ + } + } + /* compute 2**(p_h+p_l) */ + i = j & 0x7fffffff; + k = (i >> 16) - 0x3fff; + n = 0; + if (i > 0x3ffe0000) + { /* if |z| > 0.5, set n = [z+0.5] */ + n = floorl (z + 0.5L); + t = n; + p_h -= t; + } + t = p_l + p_h; + o.value = t; + o.parts32.lswlo = 0; + o.parts32.lswhi &= 0xf8000000; + t = o.value; + u = t * lg2_h; + v = (p_l - (t - p_h)) * lg2 + t * lg2_l; + z = u + v; + w = v - (z - u); + /* exp(z) */ + t = z * z; + u = PN[0] + t * (PN[1] + t * (PN[2] + t * (PN[3] + t * PN[4]))); + v = PD[0] + t * (PD[1] + t * (PD[2] + t * (PD[3] + t))); + t1 = z - t * u / v; + r = (z * t1) / (t1 - two) - (w + z * w); + z = one - (r - z); + o.value = z; + j = o.parts32.mswhi; + j += (n << 16); + if ((j >> 16) <= 0) + z = scalbnl (z, n); /* subnormal output */ + else + { + o.parts32.mswhi = j; + z = o.value; + } + return s * z; +} diff --git a/newlib/libm/ld128/e_rem_pio2l.h b/newlib/libm/ld128/e_rem_pio2l.h new file mode 100644 index 0000000000..10f4edb0f4 --- /dev/null +++ b/newlib/libm/ld128/e_rem_pio2l.h @@ -0,0 +1,135 @@ +/* From: @(#)e_rem_pio2.c 1.4 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * Optimized by Bruce D. Evans. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* ld128 version of __ieee754_rem_pio2l(x,y) + * + * return the remainder of x rem pi/2 in y[0]+y[1] + * use __kernel_rem_pio2() + */ + +#include + +#include "math.h" +#include "math_private.h" +#include "../ld/fpmath.h" + +#define BIAS (LDBL_MAX_EXP - 1) + +/* + * XXX need to verify that nonzero integer multiples of pi/2 within the + * range get no closer to a long double than 2**-140, or that + * ilogb(x) + ilogb(min_delta) < 45 - -140. + */ +/* + * invpio2: 113 bits of 2/pi + * pio2_1: first 68 bits of pi/2 + * pio2_1t: pi/2 - pio2_1 + * pio2_2: second 68 bits of pi/2 + * pio2_2t: pi/2 - (pio2_1+pio2_2) + * pio2_3: third 68 bits of pi/2 + * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) + */ + +static const double +zero = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ +two24 = 1.67772160000000000000e+07; /* 0x41700000, 0x00000000 */ + +static const long double +invpio2 = 6.3661977236758134307553505349005747e-01L, /* 0x145f306dc9c882a53f84eafa3ea6a.0p-113 */ +pio2_1 = 1.5707963267948966192292994253909555e+00L, /* 0x1921fb54442d18469800000000000.0p-112 */ +pio2_1t = 2.0222662487959507323996846200947577e-21L, /* 0x13198a2e03707344a4093822299f3.0p-181 */ +pio2_2 = 2.0222662487959507323994779168837751e-21L, /* 0x13198a2e03707344a400000000000.0p-181 */ +pio2_2t = 2.0670321098263988236496903051604844e-43L, /* 0x127044533e63a0105df531d89cd91.0p-254 */ +pio2_3 = 2.0670321098263988236499468110329591e-43L, /* 0x127044533e63a0105e00000000000.0p-254 */ +pio2_3t = -2.5650587247459238361625433492959285e-65L; /* -0x159c4ec64ddaeb5f78671cbfb2210.0p-327 */ + +static inline __always_inline int +__ieee754_rem_pio2l(long double x, long double *y) +{ + union IEEEl2bits u,u1; + long double z,w,t,r,fn; + double tx[5],ty[3]; + int64_t n; + int e0,ex,i,j,nx; + int16_t expsign; + + u.e = x; + expsign = u.xbits.expsign; + ex = expsign & 0x7fff; + if (ex < BIAS + 45 || ex == BIAS + 45 && + u.bits.manh < 0x921fb54442d1LL) { + /* |x| ~< 2^45*(pi/2), medium size */ + /* TODO: use only double precision for fn, as in expl(). */ + fn = rnintl(x * invpio2); + n = i64rint(fn); + r = x-fn*pio2_1; + w = fn*pio2_1t; /* 1st round good to 180 bit */ + { + union IEEEl2bits u2; + int ex1; + j = ex; + y[0] = r-w; + u2.e = y[0]; + ex1 = u2.xbits.expsign & 0x7fff; + i = j-ex1; + if(i>51) { /* 2nd iteration needed, good to 248 */ + t = r; + w = fn*pio2_2; + r = t-w; + w = fn*pio2_2t-((t-r)-w); + y[0] = r-w; + u2.e = y[0]; + ex1 = u2.xbits.expsign & 0x7fff; + i = j-ex1; + if(i>119) { /* 3rd iteration need, 316 bits acc */ + t = r; /* will cover all possible cases */ + w = fn*pio2_3; + r = t-w; + w = fn*pio2_3t-((t-r)-w); + y[0] = r-w; + } + } + } + y[1] = (r-y[0])-w; + return n; + } + /* + * all other (large) arguments + */ + if(ex==0x7fff) { /* x is inf or NaN */ + y[0]=y[1]=x-x; return 0; + } + /* set z = scalbn(|x|,ilogb(x)-23) */ + u1.e = x; + e0 = ex - BIAS - 23; /* e0 = ilogb(|x|)-23; */ + u1.xbits.expsign = ex - e0; + z = u1.e; + for(i=0;i<4;i++) { + tx[i] = (double)((int32_t)(z)); + z = (z-tx[i])*two24; + } + tx[4] = z; + nx = 5; + while(tx[nx-1]==zero) nx--; /* skip zero term */ + n = __kernel_rem_pio2(tx,ty,e0,nx,3); + t = (long double)ty[2] + ty[1]; + r = t + ty[0]; + w = ty[0] - (r - t); + if(expsign<0) {y[0] = -r; y[1] = -w; return -n;} + y[0] = r; y[1] = w; return n; +} diff --git a/newlib/libm/ld128/invtrig.c b/newlib/libm/ld128/invtrig.c new file mode 100644 index 0000000000..e06403c6a5 --- /dev/null +++ b/newlib/libm/ld128/invtrig.c @@ -0,0 +1,102 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "invtrig.h" + +/* + * asinl() and acosl() + */ +const long double +pS0 = 1.66666666666666666666666666666700314e-01L, +pS1 = -7.32816946414566252574527475428622708e-01L, +pS2 = 1.34215708714992334609030036562143589e+00L, +pS3 = -1.32483151677116409805070261790752040e+00L, +pS4 = 7.61206183613632558824485341162121989e-01L, +pS5 = -2.56165783329023486777386833928147375e-01L, +pS6 = 4.80718586374448793411019434585413855e-02L, +pS7 = -4.42523267167024279410230886239774718e-03L, +pS8 = 1.44551535183911458253205638280410064e-04L, +pS9 = -2.10558957916600254061591040482706179e-07L, +qS1 = -4.84690167848739751544716485245697428e+00L, +qS2 = 9.96619113536172610135016921140206980e+00L, +qS3 = -1.13177895428973036660836798461641458e+01L, +qS4 = 7.74004374389488266169304117714658761e+00L, +qS5 = -3.25871986053534084709023539900339905e+00L, +qS6 = 8.27830318881232209752469022352928864e-01L, +qS7 = -1.18768052702942805423330715206348004e-01L, +qS8 = 8.32600764660522313269101537926539470e-03L, +qS9 = -1.99407384882605586705979504567947007e-04L; + +/* + * atanl() + */ +const long double atanhi[] = { + 4.63647609000806116214256231461214397e-01L, + 7.85398163397448309615660845819875699e-01L, + 9.82793723247329067985710611014666038e-01L, + 1.57079632679489661923132169163975140e+00L, +}; + +const long double atanlo[] = { + 4.89509642257333492668618435220297706e-36L, + 2.16795253253094525619926100651083806e-35L, + -2.31288434538183565909319952098066272e-35L, + 4.33590506506189051239852201302167613e-35L, +}; + +const long double aT[] = { + 3.33333333333333333333333333333333125e-01L, + -1.99999999999999999999999999999180430e-01L, + 1.42857142857142857142857142125269827e-01L, + -1.11111111111111111111110834490810169e-01L, + 9.09090909090909090908522355708623681e-02L, + -7.69230769230769230696553844935357021e-02L, + 6.66666666666666660390096773046256096e-02L, + -5.88235294117646671706582985209643694e-02L, + 5.26315789473666478515847092020327506e-02L, + -4.76190476189855517021024424991436144e-02L, + 4.34782608678695085948531993458097026e-02L, + -3.99999999632663469330634215991142368e-02L, + 3.70370363987423702891250829918659723e-02L, + -3.44827496515048090726669907612335954e-02L, + 3.22579620681420149871973710852268528e-02L, + -3.03020767654269261041647570626778067e-02L, + 2.85641979882534783223403715930946138e-02L, + -2.69824879726738568189929461383741323e-02L, + 2.54194698498808542954187110873675769e-02L, + -2.35083879708189059926183138130183215e-02L, + 2.04832358998165364349957325067131428e-02L, + -1.54489555488544397858507248612362957e-02L, + 8.64492360989278761493037861575248038e-03L, + -2.58521121597609872727919154569765469e-03L, +}; + +const long double pi_lo = 8.67181013012378102479704402604335225e-35L; diff --git a/newlib/libm/ld128/invtrig.h b/newlib/libm/ld128/invtrig.h new file mode 100644 index 0000000000..423b568470 --- /dev/null +++ b/newlib/libm/ld128/invtrig.h @@ -0,0 +1,115 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include + +#include "fpmath.h" + +#define BIAS (LDBL_MAX_EXP - 1) +#define MANH_SIZE (LDBL_MANH_SIZE + 1) + +/* Approximation thresholds. */ +#define ASIN_LINEAR (BIAS - 56) /* 2**-56 */ +#define ACOS_CONST (BIAS - 113) /* 2**-113 */ +#define ATAN_CONST (BIAS + 113) /* 2**113 */ +#define ATAN_LINEAR (BIAS - 56) /* 2**-56 */ + +/* 0.95 */ +#define THRESH ((0xe666666666666666ULL>>(64-(MANH_SIZE-1)))|LDBL_NBIT) + +/* Constants shared by the long double inverse trig functions. */ +#define pS0 _ItL_pS0 +#define pS1 _ItL_pS1 +#define pS2 _ItL_pS2 +#define pS3 _ItL_pS3 +#define pS4 _ItL_pS4 +#define pS5 _ItL_pS5 +#define pS6 _ItL_pS6 +#define pS7 _ItL_pS7 +#define pS8 _ItL_pS8 +#define pS9 _ItL_pS9 +#define qS1 _ItL_qS1 +#define qS2 _ItL_qS2 +#define qS3 _ItL_qS3 +#define qS4 _ItL_qS4 +#define qS5 _ItL_qS5 +#define qS6 _ItL_qS6 +#define qS7 _ItL_qS7 +#define qS8 _ItL_qS8 +#define qS9 _ItL_qS9 +#define atanhi _ItL_atanhi +#define atanlo _ItL_atanlo +#define aT _ItL_aT +#define pi_lo _ItL_pi_lo + +#define pio2_hi atanhi[3] +#define pio2_lo atanlo[3] +#define pio4_hi atanhi[1] + +/* Constants shared by the long double inverse trig functions. */ +extern const long double pS0, pS1, pS2, pS3, pS4, pS5, pS6, pS7, pS8, pS9; +extern const long double qS1, qS2, qS3, qS4, qS5, qS6, qS7, qS8, qS9; +extern const long double atanhi[], atanlo[], aT[]; +extern const long double pi_lo; + +static inline long double +P(long double x) +{ + + return (x * (pS0 + x * (pS1 + x * (pS2 + x * (pS3 + x * \ + (pS4 + x * (pS5 + x * (pS6 + x * (pS7 + x * (pS8 + x * \ + pS9)))))))))); +} + +static inline long double +Q(long double x) +{ + + return (1.0 + x * (qS1 + x * (qS2 + x * (qS3 + x * (qS4 + x * \ + (qS5 + x * (qS6 + x * (qS7 + x * (qS8 + x * qS9))))))))); +} + +static inline long double +T_even(long double x) +{ + + return (aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] + x * \ + (aT[8] + x * (aT[10] + x * (aT[12] + x * (aT[14] + x * \ + (aT[16] + x * (aT[18] + x * (aT[20] + x * aT[22]))))))))))); +} + +static inline long double +T_odd(long double x) +{ + + return (aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] + x * \ + (aT[9] + x * (aT[11] + x * (aT[13] + x * (aT[15] + x * \ + (aT[17] + x * (aT[19] + x * (aT[21] + x * aT[23]))))))))))); +} diff --git a/newlib/libm/ld128/k_cosl.c b/newlib/libm/ld128/k_cosl.c new file mode 100644 index 0000000000..6807873073 --- /dev/null +++ b/newlib/libm/ld128/k_cosl.c @@ -0,0 +1,59 @@ +/* From: @(#)k_cos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ld128 version of k_cos.c. See ../src/k_cos.c for most comments. + */ + +#include "math_private.h" + +/* + * Domain [-0.7854, 0.7854], range ~[-1.17e-39, 1.19e-39]: + * |cos(x) - c(x))| < 2**-129.3 + * + * 113-bit precision requires more care than 64-bit precision, since + * simple methods give a minimax polynomial with coefficient for x^2 + * that is 1 ulp below 0.5, but we want it to be precisely 0.5. See + * ../ld80/k_cosl.c for more details. + */ +static const double +one = 1.0; +static const long double +C1 = 4.16666666666666666666666666666666667e-02L, +C2 = -1.38888888888888888888888888888888834e-03L, +C3 = 2.48015873015873015873015873015446795e-05L, +C4 = -2.75573192239858906525573190949988493e-07L, +C5 = 2.08767569878680989792098886701451072e-09L, +C6 = -1.14707455977297247136657111139971865e-11L, +C7 = 4.77947733238738518870113294139830239e-14L, +C8 = -1.56192069685858079920640872925306403e-16L, +C9 = 4.11031762320473354032038893429515732e-19L, +C10= -8.89679121027589608738005163931958096e-22L, +C11= 1.61171797801314301767074036661901531e-24L, +C12= -2.46748624357670948912574279501044295e-27L; + +long double +__kernel_cosl(long double x, long double y) +{ + long double hz,z,r,w; + + z = x*x; + r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*(C7+ + z*(C8+z*(C9+z*(C10+z*(C11+z*C12))))))))))); + hz = 0.5*z; + w = one-hz; + return w + (((one-w)-hz) + (z*r-x*y)); +} diff --git a/newlib/libm/ld128/k_expl.h b/newlib/libm/ld128/k_expl.h new file mode 100644 index 0000000000..159338fe3f --- /dev/null +++ b/newlib/libm/ld128/k_expl.h @@ -0,0 +1,324 @@ +/* from: FreeBSD: head/lib/msun/ld128/s_expl.c 251345 2013-06-03 20:09:22Z kargl */ + +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2009-2013 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Optimized by Bruce D. Evans. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ld128 version of k_expl.h. See ../ld80/s_expl.c for most comments. + * + * See ../src/e_exp.c and ../src/k_exp.h for precision-independent comments + * about the secondary kernels. + */ + +#define INTERVALS 128 +#define LOG2_INTERVALS 7 +#define BIAS (LDBL_MAX_EXP - 1) + +static const double +/* + * ln2/INTERVALS = L1+L2 (hi+lo decomposition for multiplication). L1 must + * have at least 22 (= log2(|LDBL_MIN_EXP-extras|) + log2(INTERVALS)) lowest + * bits zero so that multiplication of it by n is exact. + */ +INV_L = 1.8466496523378731e+2, /* 0x171547652b82fe.0p-45 */ +L2 = -1.0253670638894731e-29; /* -0x1.9ff0342542fc3p-97 */ +static const long double +/* 0x1.62e42fefa39ef35793c768000000p-8 */ +L1 = 5.41521234812457272982212595914567508e-3L; + +/* + * XXX values in hex in comments have been lost (or were never present) + * from here. + */ +static const long double +/* + * Domain [-0.002708, 0.002708], range ~[-2.4021e-38, 2.4234e-38]: + * |exp(x) - p(x)| < 2**-124.9 + * (0.002708 is ln2/(2*INTERVALS) rounded up a little). + * + * XXX the coeffs aren't very carefully rounded, and I get 3.6 more bits. + */ +A2 = 0.5, +A3 = 1.66666666666666666666666666651085500e-1L, +A4 = 4.16666666666666666666666666425885320e-2L, +A5 = 8.33333333333333333334522877160175842e-3L, +A6 = 1.38888888888888888889971139751596836e-3L; + +static const double +A7 = 1.9841269841269470e-4, /* 0x1.a01a01a019f91p-13 */ +A8 = 2.4801587301585286e-5, /* 0x1.71de3ec75a967p-19 */ +A9 = 2.7557324277411235e-6, /* 0x1.71de3ec75a967p-19 */ +A10 = 2.7557333722375069e-7; /* 0x1.27e505ab56259p-22 */ + +static const struct { + /* + * hi must be rounded to at most 106 bits so that multiplication + * by r1 in expm1l() is exact, but it is rounded to 88 bits due to + * historical accidents. + * + * XXX it is wasteful to use long double for both hi and lo. ld128 + * exp2l() uses only float for lo (in a very differently organized + * table; ld80 exp2l() is different again. It uses 2 doubles in a + * table organized like this one. 1 double and 1 float would + * suffice). There are different packing/locality/alignment/caching + * problems with these methods. + * + * XXX C's bad %a format makes the bits unreadable. They happen + * to all line up for the hi values 1 before the point and 88 + * in 22 nybbles, but for the low values the nybbles are shifted + * randomly. + */ + long double hi; + long double lo; +} tbl[INTERVALS] = { + 0x1p0L, 0x0p0L, + 0x1.0163da9fb33356d84a66aep0L, 0x3.36dcdfa4003ec04c360be2404078p-92L, + 0x1.02c9a3e778060ee6f7cacap0L, 0x4.f7a29bde93d70a2cabc5cb89ba10p-92L, + 0x1.04315e86e7f84bd738f9a2p0L, 0xd.a47e6ed040bb4bfc05af6455e9b8p-96L, + 0x1.059b0d31585743ae7c548ep0L, 0xb.68ca417fe53e3495f7df4baf84a0p-92L, + 0x1.0706b29ddf6ddc6dc403a8p0L, 0x1.d87b27ed07cb8b092ac75e311753p-88L, + 0x1.0874518759bc808c35f25cp0L, 0x1.9427fa2b041b2d6829d8993a0d01p-88L, + 0x1.09e3ecac6f3834521e060cp0L, 0x5.84d6b74ba2e023da730e7fccb758p-92L, + 0x1.0b5586cf9890f6298b92b6p0L, 0x1.1842a98364291408b3ceb0a2a2bbp-88L, + 0x1.0cc922b7247f7407b705b8p0L, 0x9.3dc5e8aac564e6fe2ef1d431fd98p-92L, + 0x1.0e3ec32d3d1a2020742e4ep0L, 0x1.8af6a552ac4b358b1129e9f966a4p-88L, + 0x1.0fb66affed31af232091dcp0L, 0x1.8a1426514e0b627bda694a400a27p-88L, + 0x1.11301d0125b50a4ebbf1aep0L, 0xd.9318ceac5cc47ab166ee57427178p-92L, + 0x1.12abdc06c31cbfb92bad32p0L, 0x4.d68e2f7270bdf7cedf94eb1cb818p-92L, + 0x1.1429aaea92ddfb34101942p0L, 0x1.b2586d01844b389bea7aedd221d4p-88L, + 0x1.15a98c8a58e512480d573cp0L, 0x1.d5613bf92a2b618ee31b376c2689p-88L, + 0x1.172b83c7d517adcdf7c8c4p0L, 0x1.0eb14a792035509ff7d758693f24p-88L, + 0x1.18af9388c8de9bbbf70b9ap0L, 0x3.c2505c97c0102e5f1211941d2840p-92L, + 0x1.1a35beb6fcb753cb698f68p0L, 0x1.2d1c835a6c30724d5cfae31b84e5p-88L, + 0x1.1bbe084045cd39ab1e72b4p0L, 0x4.27e35f9acb57e473915519a1b448p-92L, + 0x1.1d4873168b9aa7805b8028p0L, 0x9.90f07a98b42206e46166cf051d70p-92L, + 0x1.1ed5022fcd91cb8819ff60p0L, 0x1.121d1e504d36c47474c9b7de6067p-88L, + 0x1.2063b88628cd63b8eeb028p0L, 0x1.50929d0fc487d21c2b84004264dep-88L, + 0x1.21f49917ddc962552fd292p0L, 0x9.4bdb4b61ea62477caa1dce823ba0p-92L, + 0x1.2387a6e75623866c1fadb0p0L, 0x1.c15cb593b0328566902df69e4de2p-88L, + 0x1.251ce4fb2a63f3582ab7dep0L, 0x9.e94811a9c8afdcf796934bc652d0p-92L, + 0x1.26b4565e27cdd257a67328p0L, 0x1.d3b249dce4e9186ddd5ff44e6b08p-92L, + 0x1.284dfe1f5638096cf15cf0p0L, 0x3.ca0967fdaa2e52d7c8106f2e262cp-92L, + 0x1.29e9df51fdee12c25d15f4p0L, 0x1.a24aa3bca890ac08d203fed80a07p-88L, + 0x1.2b87fd0dad98ffddea4652p0L, 0x1.8fcab88442fdc3cb6de4519165edp-88L, + 0x1.2d285a6e4030b40091d536p0L, 0xd.075384589c1cd1b3e4018a6b1348p-92L, + 0x1.2ecafa93e2f5611ca0f45cp0L, 0x1.523833af611bdcda253c554cf278p-88L, + 0x1.306fe0a31b7152de8d5a46p0L, 0x3.05c85edecbc27343629f502f1af2p-92L, + 0x1.32170fc4cd8313539cf1c2p0L, 0x1.008f86dde3220ae17a005b6412bep-88L, + 0x1.33c08b26416ff4c9c8610cp0L, 0x1.96696bf95d1593039539d94d662bp-88L, + 0x1.356c55f929ff0c94623476p0L, 0x3.73af38d6d8d6f9506c9bbc93cbc0p-92L, + 0x1.371a7373aa9caa7145502ep0L, 0x1.4547987e3e12516bf9c699be432fp-88L, + 0x1.38cae6d05d86585a9cb0d8p0L, 0x1.bed0c853bd30a02790931eb2e8f0p-88L, + 0x1.3a7db34e59ff6ea1bc9298p0L, 0x1.e0a1d336163fe2f852ceeb134067p-88L, + 0x1.3c32dc313a8e484001f228p0L, 0xb.58f3775e06ab66353001fae9fca0p-92L, + 0x1.3dea64c12342235b41223ep0L, 0x1.3d773fba2cb82b8244267c54443fp-92L, + 0x1.3fa4504ac801ba0bf701aap0L, 0x4.1832fb8c1c8dbdff2c49909e6c60p-92L, + 0x1.4160a21f72e29f84325b8ep0L, 0x1.3db61fb352f0540e6ba05634413ep-88L, + 0x1.431f5d950a896dc7044394p0L, 0x1.0ccec81e24b0caff7581ef4127f7p-92L, + 0x1.44e086061892d03136f408p0L, 0x1.df019fbd4f3b48709b78591d5cb5p-88L, + 0x1.46a41ed1d005772512f458p0L, 0x1.229d97df404ff21f39c1b594d3a8p-88L, + 0x1.486a2b5c13cd013c1a3b68p0L, 0x1.062f03c3dd75ce8757f780e6ec99p-88L, + 0x1.4a32af0d7d3de672d8bcf4p0L, 0x6.f9586461db1d878b1d148bd3ccb8p-92L, + 0x1.4bfdad5362a271d4397afep0L, 0xc.42e20e0363ba2e159c579f82e4b0p-92L, + 0x1.4dcb299fddd0d63b36ef1ap0L, 0x9.e0cc484b25a5566d0bd5f58ad238p-92L, + 0x1.4f9b2769d2ca6ad33d8b68p0L, 0x1.aa073ee55e028497a329a7333dbap-88L, + 0x1.516daa2cf6641c112f52c8p0L, 0x4.d822190e718226177d7608d20038p-92L, + 0x1.5342b569d4f81df0a83c48p0L, 0x1.d86a63f4e672a3e429805b049465p-88L, + 0x1.551a4ca5d920ec52ec6202p0L, 0x4.34ca672645dc6c124d6619a87574p-92L, + 0x1.56f4736b527da66ecb0046p0L, 0x1.64eb3c00f2f5ab3d801d7cc7272dp-88L, + 0x1.58d12d497c7fd252bc2b72p0L, 0x1.43bcf2ec936a970d9cc266f0072fp-88L, + 0x1.5ab07dd48542958c930150p0L, 0x1.91eb345d88d7c81280e069fbdb63p-88L, + 0x1.5c9268a5946b701c4b1b80p0L, 0x1.6986a203d84e6a4a92f179e71889p-88L, + 0x1.5e76f15ad21486e9be4c20p0L, 0x3.99766a06548a05829e853bdb2b52p-92L, + 0x1.605e1b976dc08b076f592ap0L, 0x4.86e3b34ead1b4769df867b9c89ccp-92L, + 0x1.6247eb03a5584b1f0fa06ep0L, 0x1.d2da42bb1ceaf9f732275b8aef30p-88L, + 0x1.6434634ccc31fc76f8714cp0L, 0x4.ed9a4e41000307103a18cf7a6e08p-92L, + 0x1.66238825522249127d9e28p0L, 0x1.b8f314a337f4dc0a3adf1787ff74p-88L, + 0x1.68155d44ca973081c57226p0L, 0x1.b9f32706bfe4e627d809a85dcc66p-88L, + 0x1.6a09e667f3bcc908b2fb12p0L, 0x1.66ea957d3e3adec17512775099dap-88L, + 0x1.6c012750bdabeed76a9980p0L, 0xf.4f33fdeb8b0ecd831106f57b3d00p-96L, + 0x1.6dfb23c651a2ef220e2cbep0L, 0x1.bbaa834b3f11577ceefbe6c1c411p-92L, + 0x1.6ff7df9519483cf87e1b4ep0L, 0x1.3e213bff9b702d5aa477c12523cep-88L, + 0x1.71f75e8ec5f73dd2370f2ep0L, 0xf.0acd6cb434b562d9e8a20adda648p-92L, + 0x1.73f9a48a58173bd5c9a4e6p0L, 0x8.ab1182ae217f3a7681759553e840p-92L, + 0x1.75feb564267c8bf6e9aa32p0L, 0x1.a48b27071805e61a17b954a2dad8p-88L, + 0x1.780694fde5d3f619ae0280p0L, 0x8.58b2bb2bdcf86cd08e35fb04c0f0p-92L, + 0x1.7a11473eb0186d7d51023ep0L, 0x1.6cda1f5ef42b66977960531e821bp-88L, + 0x1.7c1ed0130c1327c4933444p0L, 0x1.937562b2dc933d44fc828efd4c9cp-88L, + 0x1.7e2f336cf4e62105d02ba0p0L, 0x1.5797e170a1427f8fcdf5f3906108p-88L, + 0x1.80427543e1a11b60de6764p0L, 0x9.a354ea706b8e4d8b718a672bf7c8p-92L, + 0x1.82589994cce128acf88afap0L, 0xb.34a010f6ad65cbbac0f532d39be0p-92L, + 0x1.8471a4623c7acce52f6b96p0L, 0x1.c64095370f51f48817914dd78665p-88L, + 0x1.868d99b4492ec80e41d90ap0L, 0xc.251707484d73f136fb5779656b70p-92L, + 0x1.88ac7d98a669966530bcdep0L, 0x1.2d4e9d61283ef385de170ab20f96p-88L, + 0x1.8ace5422aa0db5ba7c55a0p0L, 0x1.92c9bb3e6ed61f2733304a346d8fp-88L, + 0x1.8cf3216b5448bef2aa1cd0p0L, 0x1.61c55d84a9848f8c453b3ca8c946p-88L, + 0x1.8f1ae991577362b982745cp0L, 0x7.2ed804efc9b4ae1458ae946099d4p-92L, + 0x1.9145b0b91ffc588a61b468p0L, 0x1.f6b70e01c2a90229a4c4309ea719p-88L, + 0x1.93737b0cdc5e4f4501c3f2p0L, 0x5.40a22d2fc4af581b63e8326efe9cp-92L, + 0x1.95a44cbc8520ee9b483694p0L, 0x1.a0fc6f7c7d61b2b3a22a0eab2cadp-88L, + 0x1.97d829fde4e4f8b9e920f8p0L, 0x1.1e8bd7edb9d7144b6f6818084cc7p-88L, + 0x1.9a0f170ca07b9ba3109b8cp0L, 0x4.6737beb19e1eada6825d3c557428p-92L, + 0x1.9c49182a3f0901c7c46b06p0L, 0x1.1f2be58ddade50c217186c90b457p-88L, + 0x1.9e86319e323231824ca78ep0L, 0x6.4c6e010f92c082bbadfaf605cfd4p-92L, + 0x1.a0c667b5de564b29ada8b8p0L, 0xc.ab349aa0422a8da7d4512edac548p-92L, + 0x1.a309bec4a2d3358c171f76p0L, 0x1.0daad547fa22c26d168ea762d854p-88L, + 0x1.a5503b23e255c8b424491cp0L, 0xa.f87bc8050a405381703ef7caff50p-92L, + 0x1.a799e1330b3586f2dfb2b0p0L, 0x1.58f1a98796ce8908ae852236ca94p-88L, + 0x1.a9e6b5579fdbf43eb243bcp0L, 0x1.ff4c4c58b571cf465caf07b4b9f5p-88L, + 0x1.ac36bbfd3f379c0db966a2p0L, 0x1.1265fc73e480712d20f8597a8e7bp-88L, + 0x1.ae89f995ad3ad5e8734d16p0L, 0x1.73205a7fbc3ae675ea440b162d6cp-88L, + 0x1.b0e07298db66590842acdep0L, 0x1.c6f6ca0e5dcae2aafffa7a0554cbp-88L, + 0x1.b33a2b84f15faf6bfd0e7ap0L, 0x1.d947c2575781dbb49b1237c87b6ep-88L, + 0x1.b59728de559398e3881110p0L, 0x1.64873c7171fefc410416be0a6525p-88L, + 0x1.b7f76f2fb5e46eaa7b081ap0L, 0xb.53c5354c8903c356e4b625aacc28p-92L, + 0x1.ba5b030a10649840cb3c6ap0L, 0xf.5b47f297203757e1cc6eadc8bad0p-92L, + 0x1.bcc1e904bc1d2247ba0f44p0L, 0x1.b3d08cd0b20287092bd59be4ad98p-88L, + 0x1.bf2c25bd71e088408d7024p0L, 0x1.18e3449fa073b356766dfb568ff4p-88L, + 0x1.c199bdd85529c2220cb12ap0L, 0x9.1ba6679444964a36661240043970p-96L, + 0x1.c40ab5fffd07a6d14df820p0L, 0xf.1828a5366fd387a7bdd54cdf7300p-92L, + 0x1.c67f12e57d14b4a2137fd2p0L, 0xf.2b301dd9e6b151a6d1f9d5d5f520p-96L, + 0x1.c8f6d9406e7b511acbc488p0L, 0x5.c442ddb55820171f319d9e5076a8p-96L, + 0x1.cb720dcef90691503cbd1ep0L, 0x9.49db761d9559ac0cb6dd3ed599e0p-92L, + 0x1.cdf0b555dc3f9c44f8958ep0L, 0x1.ac51be515f8c58bdfb6f5740a3a4p-88L, + 0x1.d072d4a07897b8d0f22f20p0L, 0x1.a158e18fbbfc625f09f4cca40874p-88L, + 0x1.d2f87080d89f18ade12398p0L, 0x9.ea2025b4c56553f5cdee4c924728p-92L, + 0x1.d5818dcfba48725da05aeap0L, 0x1.66e0dca9f589f559c0876ff23830p-88L, + 0x1.d80e316c98397bb84f9d04p0L, 0x8.805f84bec614de269900ddf98d28p-92L, + 0x1.da9e603db3285708c01a5ap0L, 0x1.6d4c97f6246f0ec614ec95c99392p-88L, + 0x1.dd321f301b4604b695de3cp0L, 0x6.30a393215299e30d4fb73503c348p-96L, + 0x1.dfc97337b9b5eb968cac38p0L, 0x1.ed291b7225a944efd5bb5524b927p-88L, + 0x1.e264614f5a128a12761fa0p0L, 0x1.7ada6467e77f73bf65e04c95e29dp-88L, + 0x1.e502ee78b3ff6273d13014p0L, 0x1.3991e8f49659e1693be17ae1d2f9p-88L, + 0x1.e7a51fbc74c834b548b282p0L, 0x1.23786758a84f4956354634a416cep-88L, + 0x1.ea4afa2a490d9858f73a18p0L, 0xf.5db301f86dea20610ceee13eb7b8p-92L, + 0x1.ecf482d8e67f08db0312fap0L, 0x1.949cef462010bb4bc4ce72a900dfp-88L, + 0x1.efa1bee615a27771fd21a8p0L, 0x1.2dac1f6dd5d229ff68e46f27e3dfp-88L, + 0x1.f252b376bba974e8696fc2p0L, 0x1.6390d4c6ad5476b5162f40e1d9a9p-88L, + 0x1.f50765b6e4540674f84b76p0L, 0x2.862baff99000dfc4352ba29b8908p-92L, + 0x1.f7bfdad9cbe138913b4bfep0L, 0x7.2bd95c5ce7280fa4d2344a3f5618p-92L, + 0x1.fa7c1819e90d82e90a7e74p0L, 0xb.263c1dc060c36f7650b4c0f233a8p-92L, + 0x1.fd3c22b8f71f10975ba4b2p0L, 0x1.2bcf3a5e12d269d8ad7c1a4a8875p-88L +}; + +/* + * Kernel for expl(x). x must be finite and not tiny or huge. + * "tiny" is anything that would make us underflow (|A6*x^6| < ~LDBL_MIN). + * "huge" is anything that would make fn*L1 inexact (|x| > ~2**17*ln2). + */ +static inline void +__k_expl(long double x, long double *hip, long double *lop, int *kp) +{ + long double q, r, r1, t; + double dr, fn, r2; + int n, n2; + + /* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */ + fn = rnint((double)x * INV_L); + n = irint(fn); + n2 = (unsigned)n % INTERVALS; + /* Depend on the sign bit being propagated: */ + *kp = n >> LOG2_INTERVALS; + r1 = x - fn * L1; + r2 = fn * -L2; + r = r1 + r2; + + /* Evaluate expl(endpoint[n2] + r1 + r2) = tbl[n2] * expl(r1 + r2). */ + dr = r; + q = r2 + r * r * (A2 + r * (A3 + r * (A4 + r * (A5 + r * (A6 + + dr * (A7 + dr * (A8 + dr * (A9 + dr * A10)))))))); + t = tbl[n2].lo + tbl[n2].hi; + *hip = tbl[n2].hi; + *lop = tbl[n2].lo + t * (q + r1); +} + +/* + * XXX: the rest of the functions are identical for ld80 and ld128. + * However, we should use scalbnl() for ld128, since long double + * multiplication was very slow on sparc64 and no new evaluation has + * been made for aarch64 and/or riscv. + */ + +static inline void +k_hexpl(long double x, long double *hip, long double *lop) +{ + float twopkm1; + int k; + + __k_expl(x, hip, lop, &k); + SET_FLOAT_WORD(twopkm1, 0x3f800000 + ((k - 1) << 23)); + *hip *= twopkm1; + *lop *= twopkm1; +} + +static inline long double +hexpl(long double x) +{ + long double hi, lo, twopkm2; + int k; + + twopkm2 = 1; + __k_expl(x, &hi, &lo, &k); + SET_LDBL_EXPSIGN(twopkm2, BIAS + k - 2); + return (lo + hi) * 2 * twopkm2; +} + +#ifdef _COMPLEX_H +/* + * See ../src/k_exp.c for details. + */ +static inline long double complex +__ldexp_cexpl(long double complex z, int expt) +{ + long double c, exp_x, hi, lo, s; + long double x, y, scale1, scale2; + int half_expt, k; + + x = creall(z); + y = cimagl(z); + __k_expl(x, &hi, &lo, &k); + + exp_x = (lo + hi) * 0x1p16382L; + expt += k - 16382; + + scale1 = 1; + half_expt = expt / 2; + SET_LDBL_EXPSIGN(scale1, BIAS + half_expt); + scale2 = 1; + SET_LDBL_EXPSIGN(scale2, BIAS + expt - half_expt); + + sincosl(y, &s, &c); + return (CMPLXL(c * exp_x * scale1 * scale2, + s * exp_x * scale1 * scale2)); +} +#endif /* _COMPLEX_H */ diff --git a/newlib/libm/ld128/k_sinl.c b/newlib/libm/ld128/k_sinl.c new file mode 100644 index 0000000000..bd415c053c --- /dev/null +++ b/newlib/libm/ld128/k_sinl.c @@ -0,0 +1,59 @@ +/* From: @(#)k_sin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ld128 version of k_sin.c. See ../src/k_sin.c for most comments. + */ + +#include "math_private.h" + +static const double +half = 0.5; + +/* + * Domain [-0.7854, 0.7854], range ~[-1.53e-37, 1.659e-37] + * |sin(x)/x - s(x)| < 2**-122.1 + * + * See ../ld80/k_cosl.c for more details about the polynomial. + */ +static const long double +S1 = -0.16666666666666666666666666666666666606732416116558L, +S2 = 0.0083333333333333333333333333333331135404851288270047L, +S3 = -0.00019841269841269841269841269839935785325638310428717L, +S4 = 0.27557319223985890652557316053039946268333231205686e-5L, +S5 = -0.25052108385441718775048214826384312253862930064745e-7L, +S6 = 0.16059043836821614596571832194524392581082444805729e-9L, +S7 = -0.76471637318198151807063387954939213287488216303768e-12L, +S8 = 0.28114572543451292625024967174638477283187397621303e-14L; + +static const double +S9 = -0.82206352458348947812512122163446202498005154296863e-17, +S10 = 0.19572940011906109418080609928334380560135358385256e-19, +S11 = -0.38680813379701966970673724299207480965452616911420e-22, +S12 = 0.64038150078671872796678569586315881020659912139412e-25; + +long double +__kernel_sinl(long double x, long double y, int iy) +{ + long double z,r,v; + + z = x*x; + v = z*x; + r = S2+z*(S3+z*(S4+z*(S5+z*(S6+z*(S7+z*(S8+ + z*(S9+z*(S10+z*(S11+z*S12))))))))); + if(iy==0) return x+v*(S1+z*r); + else return x-((z*(half*y-v*r)-y)-v*S1); +} diff --git a/newlib/libm/ld128/s_erfl.c b/newlib/libm/ld128/s_erfl.c new file mode 100644 index 0000000000..755294b5d9 --- /dev/null +++ b/newlib/libm/ld128/s_erfl.c @@ -0,0 +1,329 @@ +/* @(#)s_erf.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See s_erf.c for complete comments. + * + * Converted to long double by Steven G. Kargl. + */ +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +/* XXX Prevent compilers from erroneously constant folding these: */ +static const volatile long double tiny = 0x1p-10000L; + +static const double +half= 0.5, +one = 1, +two = 2; +/* + * In the domain [0, 2**-40], only the first term in the power series + * expansion of erf(x) is used. The magnitude of the first neglected + * terms is less than 2**-120. + */ +static const long double +efx = 1.28379167095512573896158903121545167e-01L, /* 0xecbff6a7, 0x481dd788, 0xb64d21a8, 0xeb06fc3f */ +efx8 = 1.02703333676410059116927122497236133e+00L, /* 0xecbff6a7, 0x481dd788, 0xb64d21a8, 0xeb06ff3f */ +/* + * Domain [0, 0.84375], range ~[-1.919e-38, 1.919e-38]: + * |(erf(x) - x)/x - pp(x)/qq(x)| < 2**-125.29 + */ +pp0 = 1.28379167095512573896158903121545167e-01L, /* 0x3ffc06eb, 0xa8214db6, 0x88d71d48, 0xa7f6bfec */ +pp1 = -3.14931554396568573802046931159683404e-01L, /* 0xbffd427d, 0x6ada7263, 0x547eb096, 0x95f37463 */ +pp2 = -5.27514920282183487103576956956725309e-02L, /* 0xbffab023, 0xe5a271e3, 0xb0e79b01, 0x2f7ac962 */ +pp3 = -1.13202828509005281355609495523452713e-02L, /* 0xbff872f1, 0x6a5023a1, 0xe08b3884, 0x326af20f */ +pp4 = -9.18626155872522453865998391206048506e-04L, /* 0xbff4e19f, 0xea5fb024, 0x43247a37, 0xe430b06c */ +pp5 = -7.87518862406176274922506447157284230e-05L, /* 0xbff14a4f, 0x31a85fe0, 0x7fff2204, 0x09c49b37 */ +pp6 = -3.42357944472240436548115331090560881e-06L, /* 0xbfeccb81, 0x4b43c336, 0xcd2eb6c2, 0x903f2d87 */ +pp7 = -1.37317432573890412634717890726745428e-07L, /* 0xbfe826e3, 0x0e915eb6, 0x42aee414, 0xf7e36805 */ +pp8 = -2.71115170113861755855049008732113726e-09L, /* 0xbfe2749e, 0x2b94fd00, 0xecb4d166, 0x0efb91f8 */ +pp9 = -3.37925756196555959454018189718117864e-11L, /* 0xbfdc293e, 0x1d9060cb, 0xd043204a, 0x314cd7f0 */ +qq1 = 4.76672625471551170489978555182449450e-01L, /* 0x3ffde81c, 0xde6531f0, 0x76803bee, 0x526e29e9 */ +qq2 = 1.06713144672281502058807525850732240e-01L, /* 0x3ffbb518, 0xd7a6bb74, 0xcd9bdd33, 0x7601eee5 */ +qq3 = 1.47747613127513761102189201923147490e-02L, /* 0x3ff8e423, 0xae527e18, 0xf12cb447, 0x723b4749 */ +qq4 = 1.39939377672028671891148770908874816e-03L, /* 0x3ff56ed7, 0xba055d84, 0xc21b45c4, 0x388d1812 */ +qq5 = 9.44302939359455241271983309378738276e-05L, /* 0x3ff18c11, 0xc18c99a4, 0x86d0fe09, 0x46387b4c */ +qq6 = 4.56199342312522842161301671745365650e-06L, /* 0x3fed3226, 0x73421d05, 0x08875300, 0x32fa1432 */ +qq7 = 1.53019260483764773845294600092361197e-07L, /* 0x3fe8489b, 0x3a63f627, 0x2b9ad2ce, 0x26516e57 */ +qq8 = 3.25542691121324805094777901250005508e-09L, /* 0x3fe2bf6c, 0x26d93a29, 0x9142be7c, 0x9f1dd043 */ +qq9 = 3.37405581964478060434410167262684979e-11L; /* 0x3fdc28c8, 0xfb8fa1be, 0x10e57eec, 0xaa19e49f */ + +static const long double +erx = 8.42700792949714894142232424201210961e-01L, /* 0x3ffeaf76, 0x7a741088, 0xb0000000, 0x00000000 */ +/* + * Domain [0.84375, 1.25], range ~[-2.521e-36, 2.523e-36]: + * |(erf(x) - erx) - pa(x)/qa(x)| < 2**-120.15 + */ +pa0 = -2.48010117891186017024438233323795897e-17L, /* 0xbfc7c97f, 0x77812279, 0x6c877f22, 0xef4bfb2e */ +pa1 = 4.15107497420594680894327969504526489e-01L, /* 0x3ffda911, 0xf096fbc2, 0x55662005, 0x2337fa64 */ +pa2 = -3.94180628087084846724448515851892609e-02L, /* 0xbffa42e9, 0xab54528c, 0xad529da1, 0x6efc2af3 */ +pa3 = 4.48897599625192107295954790681677462e-02L, /* 0x3ffa6fbc, 0xa65edba1, 0x0e4cbcea, 0x73ef9a31 */ +pa4 = 8.02069252143016600110972019232995528e-02L, /* 0x3ffb4887, 0x0e8b548e, 0x3230b417, 0x11b553b3 */ +pa5 = -1.02729816533435279443621120242391295e-02L, /* 0xbff850a0, 0x041de3ee, 0xd5bca6c9, 0x4ef5f9f2 */ +pa6 = 5.70777694530755634864821094419982095e-03L, /* 0x3ff77610, 0x9b501e10, 0x4c978382, 0x742df68f */ +pa7 = 1.22635150233075521018231779267077071e-03L, /* 0x3ff5417b, 0x0e623682, 0x60327da0, 0x96b9219e */ +pa8 = 5.36100234820204569428412542856666503e-04L, /* 0x3ff41912, 0x27ceb4c1, 0x1d3298ec, 0x84ced627 */ +pa9 = -1.97753571846365167177187858667583165e-04L, /* 0xbff29eb8, 0x23f5bcf3, 0x15c83c46, 0xe4fda98b */ +pa10 = 6.19333039900846970674794789568415105e-05L, /* 0x3ff103c4, 0x60f88e46, 0xc0c9fb02, 0x13cc7fc1 */ +pa11 = -5.40531400436645861492290270311751349e-06L, /* 0xbfed6abe, 0x9665f8a8, 0xdd0ad3ba, 0xe5dc0ee3 */ +qa1 = 9.05041313265490487793231810291907851e-01L, /* 0x3ffecf61, 0x93340222, 0xe9930620, 0xc4e61168 */ +qa2 = 6.79848064708886864767240880834868092e-01L, /* 0x3ffe5c15, 0x0ba858dc, 0xf7900ae9, 0xfea1e09a */ +qa3 = 4.04720609926471677581066689316516445e-01L, /* 0x3ffd9e6f, 0x145e9b00, 0x6d8c1749, 0xd2928623 */ +qa4 = 1.69183273898369996364661075664302225e-01L, /* 0x3ffc5a7c, 0xc2a363c1, 0xd6c19097, 0xef9b4063 */ +qa5 = 7.44476185988067992342479750486764248e-02L, /* 0x3ffb30ef, 0xfc7259ef, 0x1bcbb089, 0x686dd62d */ +qa6 = 2.02981172725892407200420389604788573e-02L, /* 0x3ff94c90, 0x7976cb0e, 0x21e1d36b, 0x0f09ca2b */ +qa7 = 6.94281866271607668268269403102277234e-03L, /* 0x3ff7c701, 0x2b193250, 0xc5d46ecc, 0x374843d8 */ +qa8 = 1.12952275469171559611651594706820034e-03L, /* 0x3ff52818, 0xfd2a7c06, 0xd13e38fd, 0xda4b34f5 */ +qa9 = 3.13736683241992737197226578597710179e-04L, /* 0x3ff348fa, 0x0cb48d18, 0x051f849b, 0x135ccf74 */ +qa10 = 1.17037675204033225470121134087771410e-05L, /* 0x3fee88b6, 0x98f47704, 0xa5d8f8f2, 0xc6422e11 */ +qa11 = 4.61312518293853991439362806880973592e-06L, /* 0x3fed3594, 0xe31db94f, 0x3592b693, 0xed4386b4 */ +qa12 = -1.02158572037456893687737553657431771e-06L; /* 0xbfeb123a, 0xd60d9b1e, 0x1f6fdeb9, 0x7dc8410a */ +/* + * Domain [1.25,2.85715], range ~[-2.922e-37,2.922e-37]: + * |log(x*erfc(x)) + x**2 + 0.5625 - ra(x)/sa(x)| < 2**-121.36 + */ +static const long double +ra0 = -9.86494292470069009555706994426014461e-03L, /* 0xbff84341, 0x239e8709, 0xe941b06a, 0xcb4b6ec5 */ +ra1 = -1.13580436992565640457579040117568870e+00L, /* 0xbfff22c4, 0x133f7c0d, 0x72d5e231, 0x2eb1ee3f */ +ra2 = -4.89744330295291950661185707066921755e+01L, /* 0xc00487cb, 0xa38b4fc2, 0xc136695b, 0xc1df8047 */ +ra3 = -1.10766149300215937173768072715352140e+03L, /* 0xc00914ea, 0x55e6beb3, 0xabc50e07, 0xb6e5664d */ +ra4 = -1.49991031232170934967642795601952100e+04L, /* 0xc00cd4b8, 0xd33243e6, 0xffbf6545, 0x3c57ef6e */ +ra5 = -1.29805749738318462882524181556996692e+05L, /* 0xc00ffb0d, 0xbfeed9b6, 0x5b2a3ff4, 0xe245bd3c */ +ra6 = -7.42828497044940065828871976644647850e+05L, /* 0xc0126ab5, 0x8fe7caca, 0x473352d9, 0xcd4e0c90 */ +ra7 = -2.85637299581890734287995171242421106e+06L, /* 0xc0145cad, 0xa7f76fe7, 0x3e358051, 0x1799f927 */ +ra8 = -7.40674797129824999383748865571026084e+06L, /* 0xc015c412, 0x6fe29c02, 0x298ad158, 0x7d24e45c */ +ra9 = -1.28653420911930973914078724204151759e+07L, /* 0xc016889e, 0x7c2eb0dc, 0x95d5863b, 0x0aa34dc3 */ +ra10 = -1.47198163599330179552932489109452638e+07L, /* 0xc016c136, 0x90b84923, 0xf9bcb497, 0x19bbd0f5 */ +ra11 = -1.07812992258382800318665248311522624e+07L, /* 0xc0164904, 0xe673a113, 0x35d7f079, 0xe13701f3 */ +ra12 = -4.83545565681708642630419905537756076e+06L, /* 0xc0152721, 0xfea094a8, 0x869eb39d, 0x413d6f13 */ +ra13 = -1.23956521201673964822976917356685286e+06L, /* 0xc0132ea0, 0xd3646baa, 0x2fe62b0d, 0xbae5ce85 */ +ra14 = -1.62289333553652417591275333240371812e+05L, /* 0xc0103cf8, 0xaab1e2d6, 0x4c25e014, 0x248d76ab */ +ra15 = -8.82890392601176969729168894389833110e+03L, /* 0xc00c13e7, 0x3b3d8f94, 0x6fbda6f6, 0xe7049a82 */ +ra16 = -1.22591866337261720023681535568334619e+02L, /* 0xc005ea5e, 0x12358891, 0xcfa712c5, 0x77f050d4 */ +sa1 = 6.44508918884710829371852723353794047e+01L, /* 0x400501cd, 0xb69a6c0f, 0x5716de14, 0x47161af6 */ +sa2 = 1.76118475473171481523704824327358534e+03L, /* 0x4009b84b, 0xd305829f, 0xc4c771b0, 0xbf1f7f9b */ +sa3 = 2.69448346969488374857087646131950188e+04L, /* 0x400da503, 0x56bacc05, 0x4fdba68d, 0x2cca27e6 */ +sa4 = 2.56826633369941456778326497384543763e+05L, /* 0x4010f59d, 0x51124428, 0x69c41de6, 0xbd0d5753 */ +sa5 = 1.60647413092257206847700054645905859e+06L, /* 0x40138834, 0xa2184244, 0x557a1bed, 0x68c9d556 */ +sa6 = 6.76963075165099718574753447122393797e+06L, /* 0x40159d2f, 0x7b01b0cc, 0x8bac9e95, 0x5d35d56e */ +sa7 = 1.94295690905361884290986932493647741e+07L, /* 0x40172878, 0xc1172d61, 0x3068501e, 0x2f3c71da */ +sa8 = 3.79774781017759149060839255547073541e+07L, /* 0x401821be, 0xc30d06fe, 0x410563d7, 0x032111fd */ +sa9 = 5.00659831846029484248302236457727397e+07L, /* 0x40187df9, 0x1f97a111, 0xc51d6ac2, 0x4b389793 */ +sa10 = 4.36486287620506484276130525941972541e+07L, /* 0x40184d03, 0x3a618ae0, 0x2a723357, 0xfa45c60a */ +sa11 = 2.43779678791333894255510508253951934e+07L, /* 0x401773fa, 0x6fe10ee2, 0xc467850d, 0xc6b7ff30 */ +sa12 = 8.30732360384443202039372372212966542e+06L, /* 0x4015fb09, 0xee6a5631, 0xdd98de7e, 0x8b00461a */ +sa13 = 1.60160846942050515734192397495105693e+06L, /* 0x40138704, 0x8782bf13, 0x5b8fb315, 0xa898abe5 */ +sa14 = 1.54255505242533291014555153757001825e+05L, /* 0x40102d47, 0xc0abc98e, 0x843c9490, 0xb4352440 */ +sa15 = 5.87949220002375547561467275493888824e+03L, /* 0x400b6f77, 0xe00d21d1, 0xec4d41e8, 0x2f8e1673 */ +sa16 = 4.97272976346793193860385983372237710e+01L; /* 0x40048dd1, 0x816c1b3f, 0x24f540a6, 0x4cfe03cc */ +/* + * Domain [2.85715,9], range ~[-7.886e-37,7.918e-37]: + * |log(x*erfc(x)) + x**2 + 0.5625 - rb(x)/sb(x)| < 2**-120 + */ +static const long double +rb0 = -9.86494292470008707171371994479162369e-3L, /* 0xbff84341, 0x239e86f4, 0x2f57e561, 0xf4469360 */ +rb1 = -1.57047326624110727986326503729442830L, /* 0xbfff920a, 0x8935bf73, 0x8803b894, 0x4656482d */ +rb2 = -1.03228196364885474342132255440317065e2L, /* 0xc0059ce9, 0xac4ed0ff, 0x2cff0ff7, 0x5e70d1ab */ +rb3 = -3.74000570653418227179358710865224376e3L, /* 0xc00ad380, 0x2ebf7835, 0xf6b07ed2, 0x861242f7 */ +rb4 = -8.35435477739098044190860390632813956e4L, /* 0xc00f4657, 0x8c3ae934, 0x3647d7b3, 0x80e76fb7 */ +rb5 = -1.21398672055223642118716640216747152e6L, /* 0xc0132862, 0x2b8761c8, 0x27d18c0f, 0x137c9463 */ +rb6 = -1.17669175877248796101665344873273970e7L, /* 0xc0166719, 0x0b2cea46, 0x81f14174, 0x11602ea5 */ +rb7 = -7.66108006086998253606773064264599615e7L, /* 0xc019243f, 0x3c26f4f0, 0x1cc05241, 0x3b953728 */ +rb8 = -3.32547117558141845968704725353130804e8L, /* 0xc01b3d24, 0x42d8ee26, 0x24ef6f3b, 0x604a8c65 */ +rb9 = -9.41561252426350696802167711221739746e8L, /* 0xc01cc0f8, 0xad23692a, 0x8ddb2310, 0xe9937145 */ +rb10 = -1.67157110805390944549427329626281063e9L, /* 0xc01d8e88, 0x9a903734, 0x09a55fa3, 0xd205c903 */ +rb11 = -1.74339631004410841337645931421427373e9L, /* 0xc01d9fa8, 0x77582d2a, 0xc183b8ab, 0x7e00cb05 */ +rb12 = -9.57655233596934915727573141357471703e8L, /* 0xc01cc8a5, 0x460cc685, 0xd0271fa0, 0x6a70e3da */ +rb13 = -2.26320062731339353035254704082495066e8L, /* 0xc01aafab, 0xd7d76721, 0xc9720e11, 0x6a8bd489 */ +rb14 = -1.42777302996263256686002973851837039e7L, /* 0xc016b3b8, 0xc499689f, 0x2b88d965, 0xc32414f9 */ +sb1 = 1.08512869705594540211033733976348506e2L, /* 0x4005b20d, 0x2db7528d, 0x00d20dcb, 0x858f6191 */ +sb2 = 5.02757713761390460534494530537572834e3L, /* 0x400b3a39, 0x3bf4a690, 0x3025d28d, 0xfd40a891 */ +sb3 = 1.31019107205412870059331647078328430e5L, /* 0x400fffcb, 0x1b71d05e, 0x3b28361d, 0x2a3c3690 */ +sb4 = 2.13021555152296846166736757455018030e6L, /* 0x40140409, 0x3c6984df, 0xc4491d7c, 0xb04aa08d */ +sb5 = 2.26649105281820861953868568619768286e7L, /* 0x401759d6, 0xce8736f0, 0xf28ad037, 0x2a901e0c */ +sb6 = 1.61071939490875921812318684143076081e8L, /* 0x401a3338, 0x686fb541, 0x6bd27d06, 0x4f95c9ac */ +sb7 = 7.66895673844301852676056750497991966e8L, /* 0x401c6daf, 0x31cec121, 0x54699126, 0x4bd9bf9e */ +sb8 = 2.41884450436101936436023058196042526e9L, /* 0x401e2059, 0x46b0b8d7, 0x87b64cbf, 0x78bc296d */ +sb9 = 4.92403055884071695093305291535107666e9L, /* 0x401f257e, 0xbe5ed739, 0x39e17346, 0xcadd2e55 */ +sb10 = 6.18627786365587486459633615573786416e9L, /* 0x401f70bb, 0x1be7a7e7, 0x6a45b5ae, 0x607c70f0 */ +sb11 = 4.45898013426501378097430226324743199e9L, /* 0x401f09c6, 0xa32643d7, 0xf1724620, 0x9ea46c32 */ +sb12 = 1.63006115763329848117160344854224975e9L, /* 0x401d84a3, 0x0996887f, 0x65a4f43b, 0x978c1d74 */ +sb13 = 2.39216717012421697446304015847567721e8L, /* 0x401ac845, 0x09a065c2, 0x30095da7, 0x9d72d6ae */ +sb14 = 7.84837329009278694937250358810225609e6L; /* 0x4015df06, 0xd5290e15, 0x63031fac, 0x4d9c894c */ +/* + * Domain [9,108], range ~[-5.324e-38,5.340e-38]: + * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-124 + */ +static const long double +rc0 = -9.86494292470008707171367567652935673e-3L, /* 0xbff84341, 0x239e86f4, 0x2f57e55b, 0x1aa10fd3 */ +rc1 = -1.26229447747315096406518846411562266L, /* 0xbfff4325, 0xbb1aab28, 0xda395cd9, 0xfb861c15 */ +rc2 = -6.13742634438922591780742637728666162e1L, /* 0xc004eafe, 0x7dd51cd8, 0x3c7c5928, 0x751e50cf */ +rc3 = -1.50455835478908280402912854338421517e3L, /* 0xc0097823, 0xbc15b9ab, 0x3d60745c, 0x523e80a5 */ +rc4 = -2.04415631865861549920184039902945685e4L, /* 0xc00d3f66, 0x40b3fc04, 0x5388f2ec, 0xb009e1f0 */ +rc5 = -1.57625662981714582753490610560037638e5L, /* 0xc01033dc, 0xd4dc95b6, 0xfd4da93b, 0xf355b4a9 */ +rc6 = -6.73473451616752528402917538033283794e5L, /* 0xc01248d8, 0x2e73a4f9, 0xcded49c5, 0xfa3bfeb7 */ +rc7 = -1.47433165421387483167186683764364857e6L, /* 0xc01367f1, 0xba77a8f7, 0xcfdd0dbb, 0x25d554b3 */ +rc8 = -1.38811981807868828563794929997744139e6L, /* 0xc01352e5, 0x7d16d9ad, 0xbbdcbf38, 0x38fbc5ea */ +rc9 = -3.59659700530831825640766479698155060e5L, /* 0xc0115f3a, 0xecd57f45, 0x21f8ad6c, 0x910a5958 */ +sc1 = 7.72730753022908298637508998072635696e1L, /* 0x40053517, 0xa10d52bc, 0xdabb55b6, 0xbd0328cd */ +sc2 = 2.36825757341694050500333261769082182e3L, /* 0x400a2808, 0x3e0a9b42, 0x82977842, 0x9c5de29e */ +sc3 = 3.72210540173034735352888847134073099e4L, /* 0x400e22ca, 0x1ba827ef, 0xac8390d7, 0x1fc39a41 */ +sc4 = 3.24136032646418336712461033591393412e5L, /* 0x40113c8a, 0x0216e100, 0xc59d1e44, 0xf0e68d9d */ +sc5 = 1.57836135851134393802505823370009175e6L, /* 0x40138157, 0x95bc7664, 0x17575961, 0xdbe58eeb */ +sc6 = 4.12881981392063738026679089714182355e6L, /* 0x4014f801, 0x9e82e8d2, 0xb8b3a70e, 0xfd84185d */ +sc7 = 5.24438427289213488410596395361544142e6L, /* 0x40154017, 0x81177109, 0x2aa6c3b0, 0x1f106625 */ +sc8 = 2.59909544563616121735963429710382149e6L, /* 0x40143d45, 0xbb90a9b1, 0x12bf9390, 0xa827a700 */ +sc9 = 2.80930665169282501639651995082335693e5L; /* 0x40111258, 0xaa92222e, 0xa97e3216, 0xa237fa6c */ + +long double +erfl(long double x) +{ + long double ax,R,S,P,Q,s,y,z,r; + uint64_t lx, llx; + int32_t i; + uint16_t hx; + + EXTRACT_LDBL128_WORDS(hx, lx, llx, x); + + if((hx & 0x7fff) == 0x7fff) { /* erfl(nan)=nan */ + i = (hx>>15)<<1; + return (1-i)+one/x; /* erfl(+-inf)=+-1 */ + } + + ax = fabsl(x); + if(ax < 0.84375) { + if(ax < 0x1p-40L) { + if(ax < 0x1p-16373L) + return (8*x+efx8*x)/8; /* avoid spurious underflow */ + return x + efx*x; + } + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*(pp4+z*(pp5+z*(pp6+z*(pp7+ + z*(pp8+z*pp9)))))))); + s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*(qq5+z*(qq6+z*(qq7+ + z*(qq8+z*qq9)))))))); + y = r/s; + return x + x*y; + } + if(ax < 1.25) { + s = ax-one; + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*(pa6+s*(pa7+ + s*(pa8+s*(pa9+s*(pa10+s*pa11)))))))))); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*(qa6+s*(qa7+ + s*(qa8+s*(qa9+s*(qa10+s*(qa11+s*qa12))))))))))); + if(x>=0) return (erx + P/Q); else return (-erx - P/Q); + } + if (ax >= 9) { /* inf>|x|>= 9 */ + if(x>=0) return (one-tiny); else return (tiny-one); + } + s = one/(ax*ax); + if(ax < 2.85715) { /* |x| < 2.85715 */ + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*(ra7+ + s*(ra8+s*(ra9+s*(ra10+s*(ra11+s*(ra12+s*(ra13+s*(ra14+ + s*(ra15+s*ra16))))))))))))))); + S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+ + s*(sa8+s*(sa9+s*(sa10+s*(sa11+s*(sa12+s*(sa13+s*(sa14+ + s*(sa15+s*sa16))))))))))))))); + } else { /* |x| >= 2.85715 */ + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*(rb6+s*(rb7+ + s*(rb8+s*(rb9+s*(rb10+s*(rb11+s*(rb12+s*(rb13+ + s*rb14))))))))))))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*(sb7+ + s*(sb8+s*(sb9+s*(sb10+s*(sb11+s*(sb12+s*(sb13+ + s*sb14))))))))))))); + } + z = (float)ax; + r = expl(-z*z-0.5625)*expl((z-ax)*(z+ax)+R/S); + if(x>=0) return (one-r/ax); else return (r/ax-one); +} + +long double +erfcl(long double x) +{ + long double ax,R,S,P,Q,s,y,z,r; + uint64_t lx, llx; + uint16_t hx; + + EXTRACT_LDBL128_WORDS(hx, lx, llx, x); + + if((hx & 0x7fff) == 0x7fff) { /* erfcl(nan)=nan */ + /* erfcl(+-inf)=0,2 */ + return ((hx>>15)<<1)+one/x; + } + + ax = fabsl(x); + if(ax < 0.84375L) { + if(ax < 0x1p-34L) + return one-x; + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*(pp4+z*(pp5+z*(pp6+z*(pp7+ + z*(pp8+z*pp9)))))))); + s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*(qq5+z*(qq6+z*(qq7+ + z*(qq8+z*qq9)))))))); + y = r/s; + if(ax < 0.25L) { /* x<1/4 */ + return one-(x+x*y); + } else { + r = x*y; + r += (x-half); + return half - r; + } + } + if(ax < 1.25L) { + s = ax-one; + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*(pa6+s*(pa7+ + s*(pa8+s*(pa9+s*(pa10+s*pa11)))))))))); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*(qa6+s*(qa7+ + s*(qa8+s*(qa9+s*(qa10+s*(qa11+s*qa12))))))))))); + if(x>=0) { + z = one-erx; return z - P/Q; + } else { + z = erx+P/Q; return one+z; + } + } + + if(ax < 108) { /* |x| < 108 */ + s = one/(ax*ax); + if(ax < 2.85715) { /* |x| < 2.85715 */ + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*(ra7+ + s*(ra8+s*(ra9+s*(ra10+s*(ra11+s*(ra12+s*(ra13+s*(ra14+ + s*(ra15+s*ra16))))))))))))))); + S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+ + s*(sa8+s*(sa9+s*(sa10+s*(sa11+s*(sa12+s*(sa13+s*(sa14+ + s*(sa15+s*sa16))))))))))))))); + } else if(ax < 9) { + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*(rb6+s*(rb7+ + s*(rb8+s*(rb9+s*(rb10+s*(rb11+s*(rb12+s*(rb13+ + s*rb14))))))))))))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*(sb7+ + s*(sb8+s*(sb9+s*(sb10+s*(sb11+s*(sb12+s*(sb13+ + s*sb14))))))))))))); + } else { + if(x < -9) return two-tiny; /* x < -9 */ + R=rc0+s*(rc1+s*(rc2+s*(rc3+s*(rc4+s*(rc5+s*(rc6+s*(rc7+ + s*(rc8+s*rc9)))))))); + S=one+s*(sc1+s*(sc2+s*(sc3+s*(sc4+s*(sc5+s*(sc6+s*(sc7+ + s*(sc8+s*sc9)))))))); + } + z = (float)ax; + r = expl(-z*z-0.5625)*expl((z-ax)*(z+ax)+R/S); + if(x>0) return r/ax; else return two-r/ax; + } else { + if(x>0) return tiny*tiny; else return two-tiny; + } +} diff --git a/newlib/libm/ld128/s_exp2l.c b/newlib/libm/ld128/s_exp2l.c new file mode 100644 index 0000000000..2ab088f43d --- /dev/null +++ b/newlib/libm/ld128/s_exp2l.c @@ -0,0 +1,429 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2005-2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "fpmath.h" +#include "math.h" + +#define TBLBITS 7 +#define TBLSIZE (1 << TBLBITS) + +#define BIAS (LDBL_MAX_EXP - 1) +#define EXPMASK (BIAS + LDBL_MAX_EXP) + +static volatile long double + huge = 0x1p10000L, + twom10000 = 0x1p-10000L; + +static const long double + P1 = 0x1.62e42fefa39ef35793c7673007e6p-1L, + P2 = 0x1.ebfbdff82c58ea86f16b06ec9736p-3L, + P3 = 0x1.c6b08d704a0bf8b33a762bad3459p-5L, + P4 = 0x1.3b2ab6fba4e7729ccbbe0b4f3fc2p-7L, + P5 = 0x1.5d87fe78a67311071dee13fd11d9p-10L, + P6 = 0x1.430912f86c7876f4b663b23c5fe5p-13L; + +static const double + P7 = 0x1.ffcbfc588b041p-17, + P8 = 0x1.62c0223a5c7c7p-20, + P9 = 0x1.b52541ff59713p-24, + P10 = 0x1.e4cf56a391e22p-28, + redux = 0x1.8p112 / TBLSIZE; + +static const long double tbl[TBLSIZE] = { + 0x1.6a09e667f3bcc908b2fb1366dfeap-1L, + 0x1.6c012750bdabeed76a99800f4edep-1L, + 0x1.6dfb23c651a2ef220e2cbe1bc0d4p-1L, + 0x1.6ff7df9519483cf87e1b4f3e1e98p-1L, + 0x1.71f75e8ec5f73dd2370f2ef0b148p-1L, + 0x1.73f9a48a58173bd5c9a4e68ab074p-1L, + 0x1.75feb564267c8bf6e9aa33a489a8p-1L, + 0x1.780694fde5d3f619ae02808592a4p-1L, + 0x1.7a11473eb0186d7d51023f6ccb1ap-1L, + 0x1.7c1ed0130c1327c49334459378dep-1L, + 0x1.7e2f336cf4e62105d02ba1579756p-1L, + 0x1.80427543e1a11b60de67649a3842p-1L, + 0x1.82589994cce128acf88afab34928p-1L, + 0x1.8471a4623c7acce52f6b97c6444cp-1L, + 0x1.868d99b4492ec80e41d90ac2556ap-1L, + 0x1.88ac7d98a669966530bcdf2d4cc0p-1L, + 0x1.8ace5422aa0db5ba7c55a192c648p-1L, + 0x1.8cf3216b5448bef2aa1cd161c57ap-1L, + 0x1.8f1ae991577362b982745c72eddap-1L, + 0x1.9145b0b91ffc588a61b469f6b6a0p-1L, + 0x1.93737b0cdc5e4f4501c3f2540ae8p-1L, + 0x1.95a44cbc8520ee9b483695a0e7fep-1L, + 0x1.97d829fde4e4f8b9e920f91e8eb6p-1L, + 0x1.9a0f170ca07b9ba3109b8c467844p-1L, + 0x1.9c49182a3f0901c7c46b071f28dep-1L, + 0x1.9e86319e323231824ca78e64c462p-1L, + 0x1.a0c667b5de564b29ada8b8cabbacp-1L, + 0x1.a309bec4a2d3358c171f770db1f4p-1L, + 0x1.a5503b23e255c8b424491caf88ccp-1L, + 0x1.a799e1330b3586f2dfb2b158f31ep-1L, + 0x1.a9e6b5579fdbf43eb243bdff53a2p-1L, + 0x1.ac36bbfd3f379c0db966a3126988p-1L, + 0x1.ae89f995ad3ad5e8734d17731c80p-1L, + 0x1.b0e07298db66590842acdfc6fb4ep-1L, + 0x1.b33a2b84f15faf6bfd0e7bd941b0p-1L, + 0x1.b59728de559398e3881111648738p-1L, + 0x1.b7f76f2fb5e46eaa7b081ab53ff6p-1L, + 0x1.ba5b030a10649840cb3c6af5b74cp-1L, + 0x1.bcc1e904bc1d2247ba0f45b3d06cp-1L, + 0x1.bf2c25bd71e088408d7025190cd0p-1L, + 0x1.c199bdd85529c2220cb12a0916bap-1L, + 0x1.c40ab5fffd07a6d14df820f17deap-1L, + 0x1.c67f12e57d14b4a2137fd20f2a26p-1L, + 0x1.c8f6d9406e7b511acbc48805c3f6p-1L, + 0x1.cb720dcef90691503cbd1e949d0ap-1L, + 0x1.cdf0b555dc3f9c44f8958fac4f12p-1L, + 0x1.d072d4a07897b8d0f22f21a13792p-1L, + 0x1.d2f87080d89f18ade123989ea50ep-1L, + 0x1.d5818dcfba48725da05aeb66dff8p-1L, + 0x1.d80e316c98397bb84f9d048807a0p-1L, + 0x1.da9e603db3285708c01a5b6d480cp-1L, + 0x1.dd321f301b4604b695de3c0630c0p-1L, + 0x1.dfc97337b9b5eb968cac39ed284cp-1L, + 0x1.e264614f5a128a12761fa17adc74p-1L, + 0x1.e502ee78b3ff6273d130153992d0p-1L, + 0x1.e7a51fbc74c834b548b2832378a4p-1L, + 0x1.ea4afa2a490d9858f73a18f5dab4p-1L, + 0x1.ecf482d8e67f08db0312fb949d50p-1L, + 0x1.efa1bee615a27771fd21a92dabb6p-1L, + 0x1.f252b376bba974e8696fc3638f24p-1L, + 0x1.f50765b6e4540674f84b762861a6p-1L, + 0x1.f7bfdad9cbe138913b4bfe72bd78p-1L, + 0x1.fa7c1819e90d82e90a7e74b26360p-1L, + 0x1.fd3c22b8f71f10975ba4b32bd006p-1L, + 0x1.0000000000000000000000000000p+0L, + 0x1.0163da9fb33356d84a66ae336e98p+0L, + 0x1.02c9a3e778060ee6f7caca4f7a18p+0L, + 0x1.04315e86e7f84bd738f9a20da442p+0L, + 0x1.059b0d31585743ae7c548eb68c6ap+0L, + 0x1.0706b29ddf6ddc6dc403a9d87b1ep+0L, + 0x1.0874518759bc808c35f25d942856p+0L, + 0x1.09e3ecac6f3834521e060c584d5cp+0L, + 0x1.0b5586cf9890f6298b92b7184200p+0L, + 0x1.0cc922b7247f7407b705b893dbdep+0L, + 0x1.0e3ec32d3d1a2020742e4f8af794p+0L, + 0x1.0fb66affed31af232091dd8a169ep+0L, + 0x1.11301d0125b50a4ebbf1aed9321cp+0L, + 0x1.12abdc06c31cbfb92bad324d6f84p+0L, + 0x1.1429aaea92ddfb34101943b2588ep+0L, + 0x1.15a98c8a58e512480d573dd562aep+0L, + 0x1.172b83c7d517adcdf7c8c50eb162p+0L, + 0x1.18af9388c8de9bbbf70b9a3c269cp+0L, + 0x1.1a35beb6fcb753cb698f692d2038p+0L, + 0x1.1bbe084045cd39ab1e72b442810ep+0L, + 0x1.1d4873168b9aa7805b8028990be8p+0L, + 0x1.1ed5022fcd91cb8819ff61121fbep+0L, + 0x1.2063b88628cd63b8eeb0295093f6p+0L, + 0x1.21f49917ddc962552fd29294bc20p+0L, + 0x1.2387a6e75623866c1fadb1c159c0p+0L, + 0x1.251ce4fb2a63f3582ab7de9e9562p+0L, + 0x1.26b4565e27cdd257a673281d3068p+0L, + 0x1.284dfe1f5638096cf15cf03c9fa0p+0L, + 0x1.29e9df51fdee12c25d15f5a25022p+0L, + 0x1.2b87fd0dad98ffddea46538fca24p+0L, + 0x1.2d285a6e4030b40091d536d0733ep+0L, + 0x1.2ecafa93e2f5611ca0f45d5239a4p+0L, + 0x1.306fe0a31b7152de8d5a463063bep+0L, + 0x1.32170fc4cd8313539cf1c3009330p+0L, + 0x1.33c08b26416ff4c9c8610d96680ep+0L, + 0x1.356c55f929ff0c94623476373be4p+0L, + 0x1.371a7373aa9caa7145502f45452ap+0L, + 0x1.38cae6d05d86585a9cb0d9bed530p+0L, + 0x1.3a7db34e59ff6ea1bc9299e0a1fep+0L, + 0x1.3c32dc313a8e484001f228b58cf0p+0L, + 0x1.3dea64c12342235b41223e13d7eep+0L, + 0x1.3fa4504ac801ba0bf701aa417b9cp+0L, + 0x1.4160a21f72e29f84325b8f3dbacap+0L, + 0x1.431f5d950a896dc704439410b628p+0L, + 0x1.44e086061892d03136f409df0724p+0L, + 0x1.46a41ed1d005772512f459229f0ap+0L, + 0x1.486a2b5c13cd013c1a3b69062f26p+0L, + 0x1.4a32af0d7d3de672d8bcf46f99b4p+0L, + 0x1.4bfdad5362a271d4397afec42e36p+0L, + 0x1.4dcb299fddd0d63b36ef1a9e19dep+0L, + 0x1.4f9b2769d2ca6ad33d8b69aa0b8cp+0L, + 0x1.516daa2cf6641c112f52c84d6066p+0L, + 0x1.5342b569d4f81df0a83c49d86bf4p+0L, + 0x1.551a4ca5d920ec52ec620243540cp+0L, + 0x1.56f4736b527da66ecb004764e61ep+0L, + 0x1.58d12d497c7fd252bc2b7343d554p+0L, + 0x1.5ab07dd48542958c93015191e9a8p+0L, + 0x1.5c9268a5946b701c4b1b81697ed4p+0L, + 0x1.5e76f15ad21486e9be4c20399d12p+0L, + 0x1.605e1b976dc08b076f592a487066p+0L, + 0x1.6247eb03a5584b1f0fa06fd2d9eap+0L, + 0x1.6434634ccc31fc76f8714c4ee122p+0L, + 0x1.66238825522249127d9e29b92ea2p+0L, + 0x1.68155d44ca973081c57227b9f69ep+0L, +}; + +static const float eps[TBLSIZE] = { + -0x1.5c50p-101, + -0x1.5d00p-106, + 0x1.8e90p-102, + -0x1.5340p-103, + 0x1.1bd0p-102, + -0x1.4600p-105, + -0x1.7a40p-104, + 0x1.d590p-102, + -0x1.d590p-101, + 0x1.b100p-103, + -0x1.0d80p-105, + 0x1.6b00p-103, + -0x1.9f00p-105, + 0x1.c400p-103, + 0x1.e120p-103, + -0x1.c100p-104, + -0x1.9d20p-103, + 0x1.a800p-108, + 0x1.4c00p-106, + -0x1.9500p-106, + 0x1.6900p-105, + -0x1.29d0p-100, + 0x1.4c60p-103, + 0x1.13a0p-102, + -0x1.5b60p-103, + -0x1.1c40p-103, + 0x1.db80p-102, + 0x1.91a0p-102, + 0x1.dc00p-105, + 0x1.44c0p-104, + 0x1.9710p-102, + 0x1.8760p-103, + -0x1.a720p-103, + 0x1.ed20p-103, + -0x1.49c0p-102, + -0x1.e000p-111, + 0x1.86a0p-103, + 0x1.2b40p-103, + -0x1.b400p-108, + 0x1.1280p-99, + -0x1.02d8p-102, + -0x1.e3d0p-103, + -0x1.b080p-105, + -0x1.f100p-107, + -0x1.16c0p-105, + -0x1.1190p-103, + -0x1.a7d2p-100, + 0x1.3450p-103, + -0x1.67c0p-105, + 0x1.4b80p-104, + -0x1.c4e0p-103, + 0x1.6000p-108, + -0x1.3f60p-105, + 0x1.93f0p-104, + 0x1.5fe0p-105, + 0x1.6f80p-107, + -0x1.7600p-106, + 0x1.21e0p-106, + -0x1.3a40p-106, + -0x1.40c0p-104, + -0x1.9860p-105, + -0x1.5d40p-108, + -0x1.1d70p-106, + 0x1.2760p-105, + 0x0.0000p+0, + 0x1.21e2p-104, + -0x1.9520p-108, + -0x1.5720p-106, + -0x1.4810p-106, + -0x1.be00p-109, + 0x1.0080p-105, + -0x1.5780p-108, + -0x1.d460p-105, + -0x1.6140p-105, + 0x1.4630p-104, + 0x1.ad50p-103, + 0x1.82e0p-105, + 0x1.1d3cp-101, + 0x1.6100p-107, + 0x1.ec30p-104, + 0x1.f200p-108, + 0x1.0b40p-103, + 0x1.3660p-102, + 0x1.d9d0p-103, + -0x1.02d0p-102, + 0x1.b070p-103, + 0x1.b9c0p-104, + -0x1.01c0p-103, + -0x1.dfe0p-103, + 0x1.1b60p-104, + -0x1.ae94p-101, + -0x1.3340p-104, + 0x1.b3d8p-102, + -0x1.6e40p-105, + -0x1.3670p-103, + 0x1.c140p-104, + 0x1.1840p-101, + 0x1.1ab0p-102, + -0x1.a400p-104, + 0x1.1f00p-104, + -0x1.7180p-103, + 0x1.4ce0p-102, + 0x1.9200p-107, + -0x1.54c0p-103, + 0x1.1b80p-105, + -0x1.1828p-101, + 0x1.5720p-102, + -0x1.a060p-100, + 0x1.9160p-102, + 0x1.a280p-104, + 0x1.3400p-107, + 0x1.2b20p-102, + 0x1.7800p-108, + 0x1.cfd0p-101, + 0x1.2ef0p-102, + -0x1.2760p-99, + 0x1.b380p-104, + 0x1.0048p-101, + -0x1.60b0p-102, + 0x1.a1ccp-100, + -0x1.a640p-104, + -0x1.08a0p-101, + 0x1.7e60p-102, + 0x1.22c0p-103, + -0x1.7200p-106, + 0x1.f0f0p-102, + 0x1.eb4ep-99, + 0x1.c6e0p-103, +}; + +/* + * exp2l(x): compute the base 2 exponential of x + * + * Accuracy: Peak error < 0.502 ulp. + * + * Method: (accurate tables) + * + * Reduce x: + * x = 2**k + y, for integer k and |y| <= 1/2. + * Thus we have exp2(x) = 2**k * exp2(y). + * + * Reduce y: + * y = i/TBLSIZE + z - eps[i] for integer i near y * TBLSIZE. + * Thus we have exp2(y) = exp2(i/TBLSIZE) * exp2(z - eps[i]), + * with |z - eps[i]| <= 2**-8 + 2**-98 for the table used. + * + * We compute exp2(i/TBLSIZE) via table lookup and exp2(z - eps[i]) via + * a degree-10 minimax polynomial with maximum error under 2**-120. + * The values in exp2t[] and eps[] are chosen such that + * exp2t[i] = exp2(i/TBLSIZE + eps[i]), and eps[i] is a small offset such + * that exp2t[i] is accurate to 2**-122. + * + * Note that the range of i is +-TBLSIZE/2, so we actually index the tables + * by i0 = i + TBLSIZE/2. + * + * This method is due to Gal, with many details due to Gal and Bachelis: + * + * Gal, S. and Bachelis, B. An Accurate Elementary Mathematical Library + * for the IEEE Floating Point Standard. TOMS 17(1), 26-46 (1991). + */ +long double +exp2l(long double x) +{ + union IEEEl2bits u, v; + long double r, t, twopk, twopkp10000, z; + uint32_t hx, ix, i0; + int k; + + u.e = x; + + /* Filter out exceptional cases. */ + hx = u.xbits.expsign; + ix = hx & EXPMASK; + if (ix >= BIAS + 14) { /* |x| >= 16384 */ + if (ix == BIAS + LDBL_MAX_EXP) { + if (u.xbits.manh != 0 + || u.xbits.manl != 0 + || (hx & 0x8000) == 0) + return (x + x); /* x is NaN or +Inf */ + else + return (0.0); /* x is -Inf */ + } + if (x >= 16384) + return (huge * huge); /* overflow */ + if (x <= -16495) + return (twom10000 * twom10000); /* underflow */ + } else if (ix <= BIAS - 115) { /* |x| < 0x1p-115 */ + return (1.0 + x); + } + + /* + * Reduce x, computing z, i0, and k. The low bits of x + redux + * contain the 16-bit integer part of the exponent (k) followed by + * TBLBITS fractional bits (i0). We use bit tricks to extract these + * as integers, then set z to the remainder. + * + * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8. + * Then the low-order word of x + redux is 0x000abc12, + * We split this into k = 0xabc and i0 = 0x12 (adjusted to + * index into the table), then we compute z = 0x0.003456p0. + * + * XXX If the exponent is negative, the computation of k depends on + * '>>' doing sign extension. + */ + u.e = x + redux; + i0 = (u.bits.manl & 0xffffffff) + TBLSIZE / 2; + k = (int)i0 >> TBLBITS; + i0 = i0 & (TBLSIZE - 1); + u.e -= redux; + z = x - u.e; + v.xbits.manh = 0; + v.xbits.manl = 0; + if (k >= LDBL_MIN_EXP) { + v.xbits.expsign = LDBL_MAX_EXP - 1 + k; + twopk = v.e; + } else { + v.xbits.expsign = LDBL_MAX_EXP - 1 + k + 10000; + twopkp10000 = v.e; + } + + /* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */ + t = tbl[i0]; /* exp2t[i0] */ + z -= eps[i0]; /* eps[i0] */ + r = t + t * z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * (P6 + + z * (P7 + z * (P8 + z * (P9 + z * P10))))))))); + + /* Scale by 2**k. */ + if(k >= LDBL_MIN_EXP) { + if (k == LDBL_MAX_EXP) + return (r * 2.0 * 0x1p16383L); + return (r * twopk); + } else { + return (r * twopkp10000 * twom10000); + } +} diff --git a/newlib/libm/ld128/s_expl.c b/newlib/libm/ld128/s_expl.c new file mode 100644 index 0000000000..5b786af494 --- /dev/null +++ b/newlib/libm/ld128/s_expl.c @@ -0,0 +1,326 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2009-2013 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Optimized by Bruce D. Evans. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ld128 version of s_expl.c. See ../ld80/s_expl.c for most comments. + */ + +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" +#include "k_expl.h" + +/* XXX Prevent compilers from erroneously constant folding these: */ +static const volatile long double +huge = 0x1p10000L, +tiny = 0x1p-10000L; + +static const long double +twom10000 = 0x1p-10000L; + +static const long double +/* log(2**16384 - 0.5) rounded towards zero: */ +/* log(2**16384 - 0.5 + 1) rounded towards zero for expm1l() is the same: */ +o_threshold = 11356.523406294143949491931077970763428L, +/* log(2**(-16381-64-1)) rounded towards zero: */ +u_threshold = -11433.462743336297878837243843452621503L; + +long double +expl(long double x) +{ + union IEEEl2bits u; + long double hi, lo, t, twopk; + int k; + uint16_t hx, ix; + + DOPRINT_START(&x); + + /* Filter out exceptional cases. */ + u.e = x; + hx = u.xbits.expsign; + ix = hx & 0x7fff; + if (ix >= BIAS + 13) { /* |x| >= 8192 or x is NaN */ + if (ix == BIAS + LDBL_MAX_EXP) { + if (hx & 0x8000) /* x is -Inf or -NaN */ + RETURNP(-1 / x); + RETURNP(x + x); /* x is +Inf or +NaN */ + } + if (x > o_threshold) + RETURNP(huge * huge); + if (x < u_threshold) + RETURNP(tiny * tiny); + } else if (ix < BIAS - 114) { /* |x| < 0x1p-114 */ + RETURN2P(1, x); /* 1 with inexact iff x != 0 */ + } + + ENTERI(); + + twopk = 1; + __k_expl(x, &hi, &lo, &k); + t = SUM2P(hi, lo); + + /* Scale by 2**k. */ + /* + * XXX sparc64 multiplication was so slow that scalbnl() is faster, + * but performance on aarch64 and riscv hasn't yet been quantified. + */ + if (k >= LDBL_MIN_EXP) { + if (k == LDBL_MAX_EXP) + RETURNI(t * 2 * 0x1p16383L); + SET_LDBL_EXPSIGN(twopk, BIAS + k); + RETURNI(t * twopk); + } else { + SET_LDBL_EXPSIGN(twopk, BIAS + k + 10000); + RETURNI(t * twopk * twom10000); + } +} + +/* + * Our T1 and T2 are chosen to be approximately the points where method + * A and method B have the same accuracy. Tang's T1 and T2 are the + * points where method A's accuracy changes by a full bit. For Tang, + * this drop in accuracy makes method A immediately less accurate than + * method B, but our larger INTERVALS makes method A 2 bits more + * accurate so it remains the most accurate method significantly + * closer to the origin despite losing the full bit in our extended + * range for it. + * + * Split the interval [T1, T2] into two intervals [T1, T3] and [T3, T2]. + * Setting T3 to 0 would require the |x| < 0x1p-113 condition to appear + * in both subintervals, so set T3 = 2**-5, which places the condition + * into the [T1, T3] interval. + * + * XXX we now do this more to (partially) balance the number of terms + * in the C and D polys than to avoid checking the condition in both + * intervals. + * + * XXX these micro-optimizations are excessive. + */ +static const double +T1 = -0.1659, /* ~-30.625/128 * log(2) */ +T2 = 0.1659, /* ~30.625/128 * log(2) */ +T3 = 0.03125; + +/* + * Domain [-0.1659, 0.03125], range ~[2.9134e-44, 1.8404e-37]: + * |(exp(x)-1-x-x**2/2)/x - p(x)| < 2**-122.03 + * + * XXX none of the long double C or D coeffs except C10 is correctly printed. + * If you re-print their values in %.35Le format, the result is always + * different. For example, the last 2 digits in C3 should be 59, not 67. + * 67 is apparently from rounding an extra-precision value to 36 decimal + * places. + */ +static const long double +C3 = 1.66666666666666666666666666666666667e-1L, +C4 = 4.16666666666666666666666666666666645e-2L, +C5 = 8.33333333333333333333333333333371638e-3L, +C6 = 1.38888888888888888888888888891188658e-3L, +C7 = 1.98412698412698412698412697235950394e-4L, +C8 = 2.48015873015873015873015112487849040e-5L, +C9 = 2.75573192239858906525606685484412005e-6L, +C10 = 2.75573192239858906612966093057020362e-7L, +C11 = 2.50521083854417203619031960151253944e-8L, +C12 = 2.08767569878679576457272282566520649e-9L, +C13 = 1.60590438367252471783548748824255707e-10L; + +/* + * XXX this has 1 more coeff than needed. + * XXX can start the double coeffs but not the double mults at C10. + * With my coeffs (C10-C17 double; s = best_s): + * Domain [-0.1659, 0.03125], range ~[-1.1976e-37, 1.1976e-37]: + * |(exp(x)-1-x-x**2/2)/x - p(x)| ~< 2**-122.65 + */ +static const double +C14 = 1.1470745580491932e-11, /* 0x1.93974a81dae30p-37 */ +C15 = 7.6471620181090468e-13, /* 0x1.ae7f3820adab1p-41 */ +C16 = 4.7793721460260450e-14, /* 0x1.ae7cd18a18eacp-45 */ +C17 = 2.8074757356658877e-15, /* 0x1.949992a1937d9p-49 */ +C18 = 1.4760610323699476e-16; /* 0x1.545b43aabfbcdp-53 */ + +/* + * Domain [0.03125, 0.1659], range ~[-2.7676e-37, -1.0367e-38]: + * |(exp(x)-1-x-x**2/2)/x - p(x)| < 2**-121.44 + */ +static const long double +D3 = 1.66666666666666666666666666666682245e-1L, +D4 = 4.16666666666666666666666666634228324e-2L, +D5 = 8.33333333333333333333333364022244481e-3L, +D6 = 1.38888888888888888888887138722762072e-3L, +D7 = 1.98412698412698412699085805424661471e-4L, +D8 = 2.48015873015873015687993712101479612e-5L, +D9 = 2.75573192239858944101036288338208042e-6L, +D10 = 2.75573192239853161148064676533754048e-7L, +D11 = 2.50521083855084570046480450935267433e-8L, +D12 = 2.08767569819738524488686318024854942e-9L, +D13 = 1.60590442297008495301927448122499313e-10L; + +/* + * XXX this has 1 more coeff than needed. + * XXX can start the double coeffs but not the double mults at D11. + * With my coeffs (D11-D16 double): + * Domain [0.03125, 0.1659], range ~[-1.1980e-37, 1.1980e-37]: + * |(exp(x)-1-x-x**2/2)/x - p(x)| ~< 2**-122.65 + */ +static const double +D14 = 1.1470726176204336e-11, /* 0x1.93971dc395d9ep-37 */ +D15 = 7.6478532249581686e-13, /* 0x1.ae892e3D16fcep-41 */ +D16 = 4.7628892832607741e-14, /* 0x1.ad00Dfe41feccp-45 */ +D17 = 3.0524857220358650e-15; /* 0x1.D7e8d886Df921p-49 */ + +long double +expm1l(long double x) +{ + union IEEEl2bits u, v; + long double hx2_hi, hx2_lo, q, r, r1, t, twomk, twopk, x_hi; + long double x_lo, x2; + double dr, dx, fn, r2; + int k, n, n2; + uint16_t hx, ix; + + DOPRINT_START(&x); + + /* Filter out exceptional cases. */ + u.e = x; + hx = u.xbits.expsign; + ix = hx & 0x7fff; + if (ix >= BIAS + 7) { /* |x| >= 128 or x is NaN */ + if (ix == BIAS + LDBL_MAX_EXP) { + if (hx & 0x8000) /* x is -Inf or -NaN */ + RETURNP(-1 / x - 1); + RETURNP(x + x); /* x is +Inf or +NaN */ + } + if (x > o_threshold) + RETURNP(huge * huge); + /* + * expm1l() never underflows, but it must avoid + * unrepresentable large negative exponents. We used a + * much smaller threshold for large |x| above than in + * expl() so as to handle not so large negative exponents + * in the same way as large ones here. + */ + if (hx & 0x8000) /* x <= -128 */ + RETURN2P(tiny, -1); /* good for x < -114ln2 - eps */ + } + + ENTERI(); + + if (T1 < x && x < T2) { + x2 = x * x; + dx = x; + + if (x < T3) { + if (ix < BIAS - 113) { /* |x| < 0x1p-113 */ + /* x (rounded) with inexact if x != 0: */ + RETURNPI(x == 0 ? x : + (0x1p200 * x + fabsl(x)) * 0x1p-200); + } + q = x * x2 * C3 + x2 * x2 * (C4 + x * (C5 + x * (C6 + + x * (C7 + x * (C8 + x * (C9 + x * (C10 + + x * (C11 + x * (C12 + x * (C13 + + dx * (C14 + dx * (C15 + dx * (C16 + + dx * (C17 + dx * C18)))))))))))))); + } else { + q = x * x2 * D3 + x2 * x2 * (D4 + x * (D5 + x * (D6 + + x * (D7 + x * (D8 + x * (D9 + x * (D10 + + x * (D11 + x * (D12 + x * (D13 + + dx * (D14 + dx * (D15 + dx * (D16 + + dx * D17))))))))))))); + } + + x_hi = (float)x; + x_lo = x - x_hi; + hx2_hi = x_hi * x_hi / 2; + hx2_lo = x_lo * (x + x_hi) / 2; + if (ix >= BIAS - 7) + RETURN2PI(hx2_hi + x_hi, hx2_lo + x_lo + q); + else + RETURN2PI(x, hx2_lo + q + hx2_hi); + } + + /* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */ + fn = rnint((double)x * INV_L); + n = irint(fn); + n2 = (unsigned)n % INTERVALS; + k = n >> LOG2_INTERVALS; + r1 = x - fn * L1; + r2 = fn * -L2; + r = r1 + r2; + + /* Prepare scale factor. */ + v.e = 1; + v.xbits.expsign = BIAS + k; + twopk = v.e; + + /* + * Evaluate lower terms of + * expl(endpoint[n2] + r1 + r2) = tbl[n2] * expl(r1 + r2). + */ + dr = r; + q = r2 + r * r * (A2 + r * (A3 + r * (A4 + r * (A5 + r * (A6 + + dr * (A7 + dr * (A8 + dr * (A9 + dr * A10)))))))); + + t = tbl[n2].lo + tbl[n2].hi; + + if (k == 0) { + t = SUM2P(tbl[n2].hi - 1, tbl[n2].lo * (r1 + 1) + t * q + + tbl[n2].hi * r1); + RETURNI(t); + } + if (k == -1) { + t = SUM2P(tbl[n2].hi - 2, tbl[n2].lo * (r1 + 1) + t * q + + tbl[n2].hi * r1); + RETURNI(t / 2); + } + if (k < -7) { + t = SUM2P(tbl[n2].hi, tbl[n2].lo + t * (q + r1)); + RETURNI(t * twopk - 1); + } + if (k > 2 * LDBL_MANT_DIG - 1) { + t = SUM2P(tbl[n2].hi, tbl[n2].lo + t * (q + r1)); + if (k == LDBL_MAX_EXP) + RETURNI(t * 2 * 0x1p16383L - 1); + RETURNI(t * twopk - 1); + } + + v.xbits.expsign = BIAS - k; + twomk = v.e; + + if (k > LDBL_MANT_DIG - 1) + t = SUM2P(tbl[n2].hi, tbl[n2].lo - twomk + t * (q + r1)); + else + t = SUM2P(tbl[n2].hi - twomk, tbl[n2].lo + t * (q + r1)); + RETURNI(t * twopk); +} diff --git a/newlib/libm/ld128/s_logl.c b/newlib/libm/ld128/s_logl.c new file mode 100644 index 0000000000..4774a271e7 --- /dev/null +++ b/newlib/libm/ld128/s_logl.c @@ -0,0 +1,740 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2007-2013 Bruce D. Evans + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/** + * Implementation of the natural logarithm of x for 128-bit format. + * + * First decompose x into its base 2 representation: + * + * log(x) = log(X * 2**k), where X is in [1, 2) + * = log(X) + k * log(2). + * + * Let X = X_i + e, where X_i is the center of one of the intervals + * [-1.0/256, 1.0/256), [1.0/256, 3.0/256), .... [2.0-1.0/256, 2.0+1.0/256) + * and X is in this interval. Then + * + * log(X) = log(X_i + e) + * = log(X_i * (1 + e / X_i)) + * = log(X_i) + log(1 + e / X_i). + * + * The values log(X_i) are tabulated below. Let d = e / X_i and use + * + * log(1 + d) = p(d) + * + * where p(d) = d - 0.5*d*d + ... is a special minimax polynomial of + * suitably high degree. + * + * To get sufficiently small roundoff errors, k * log(2), log(X_i), and + * sometimes (if |k| is not large) the first term in p(d) must be evaluated + * and added up in extra precision. Extra precision is not needed for the + * rest of p(d). In the worst case when k = 0 and log(X_i) is 0, the final + * error is controlled mainly by the error in the second term in p(d). The + * error in this term itself is at most 0.5 ulps from the d*d operation in + * it. The error in this term relative to the first term is thus at most + * 0.5 * |-0.5| * |d| < 1.0/1024 ulps. We aim for an accumulated error of + * at most twice this at the point of the final rounding step. Thus the + * final error should be at most 0.5 + 1.0/512 = 0.5020 ulps. Exhaustive + * testing of a float variant of this function showed a maximum final error + * of 0.5008 ulps. Non-exhaustive testing of a double variant of this + * function showed a maximum final error of 0.5078 ulps (near 1+1.0/256). + * + * We made the maximum of |d| (and thus the total relative error and the + * degree of p(d)) small by using a large number of intervals. Using + * centers of intervals instead of endpoints reduces this maximum by a + * factor of 2 for a given number of intervals. p(d) is special only + * in beginning with the Taylor coefficients 0 + 1*d, which tends to happen + * naturally. The most accurate minimax polynomial of a given degree might + * be different, but then we wouldn't want it since we would have to do + * extra work to avoid roundoff error (especially for P0*d instead of d). + */ + +#ifdef DEBUG +#include +#include +#endif + +#include "fpmath.h" +#include "math.h" +#ifndef NO_STRUCT_RETURN +#define STRUCT_RETURN +#endif +#include "math_private.h" + +#if !defined(NO_UTAB) && !defined(NO_UTABL) +#define USE_UTAB +#endif + +/* + * Domain [-0.005280, 0.004838], range ~[-1.1577e-37, 1.1582e-37]: + * |log(1 + d)/d - p(d)| < 2**-122.7 + */ +static const long double +P2 = -0.5L, +P3 = 3.33333333333333333333333333333233795e-1L, /* 0x15555555555555555555555554d42.0p-114L */ +P4 = -2.49999999999999999999999999941139296e-1L, /* -0x1ffffffffffffffffffffffdab14e.0p-115L */ +P5 = 2.00000000000000000000000085468039943e-1L, /* 0x19999999999999999999a6d3567f4.0p-115L */ +P6 = -1.66666666666666666666696142372698408e-1L, /* -0x15555555555555555567267a58e13.0p-115L */ +P7 = 1.42857142857142857119522943477166120e-1L, /* 0x1249249249249248ed79a0ae434de.0p-115L */ +P8 = -1.24999999999999994863289015033581301e-1L; /* -0x1fffffffffffffa13e91765e46140.0p-116L */ +/* Double precision gives ~ 53 + log2(P9 * max(|d|)**8) ~= 120 bits. */ +static const double +P9 = 1.1111111111111401e-1, /* 0x1c71c71c71c7ed.0p-56 */ +P10 = -1.0000000000040135e-1, /* -0x199999999a0a92.0p-56 */ +P11 = 9.0909090728136258e-2, /* 0x1745d173962111.0p-56 */ +P12 = -8.3333318851855284e-2, /* -0x1555551722c7a3.0p-56 */ +P13 = 7.6928634666404178e-2, /* 0x13b1985204a4ae.0p-56 */ +P14 = -7.1626810078462499e-2; /* -0x12562276cdc5d0.0p-56 */ + +static volatile const double zero = 0; + +#define INTERVALS 128 +#define LOG2_INTERVALS 7 +#define TSIZE (INTERVALS + 1) +#define G(i) (T[(i)].G) +#define F_hi(i) (T[(i)].F_hi) +#define F_lo(i) (T[(i)].F_lo) +#define ln2_hi F_hi(TSIZE - 1) +#define ln2_lo F_lo(TSIZE - 1) +#define E(i) (U[(i)].E) +#define H(i) (U[(i)].H) + +static const struct { + float G; /* 1/(1 + i/128) rounded to 8/9 bits */ + float F_hi; /* log(1 / G_i) rounded (see below) */ + /* The compiler will insert 8 bytes of padding here. */ + long double F_lo; /* next 113 bits for log(1 / G_i) */ +} T[TSIZE] = { + /* + * ln2_hi and each F_hi(i) are rounded to a number of bits that + * makes F_hi(i) + dk*ln2_hi exact for all i and all dk. + * + * The last entry (for X just below 2) is used to define ln2_hi + * and ln2_lo, to ensure that F_hi(i) and F_lo(i) cancel exactly + * with dk*ln2_hi and dk*ln2_lo, respectively, when dk = -1. + * This is needed for accuracy when x is just below 1. (To avoid + * special cases, such x are "reduced" strangely to X just below + * 2 and dk = -1, and then the exact cancellation is needed + * because any the error from any non-exactness would be too + * large). + * + * The relevant range of dk is [-16445, 16383]. The maximum number + * of bits in F_hi(i) that works is very dependent on i but has + * a minimum of 93. We only need about 12 bits in F_hi(i) for + * it to provide enough extra precision. + * + * We round F_hi(i) to 24 bits so that it can have type float, + * mainly to minimize the size of the table. Using all 24 bits + * in a float for it automatically satisfies the above constraints. + */ + 0x800000.0p-23, 0, 0, + 0xfe0000.0p-24, 0x8080ac.0p-30, -0x14ee431dae6674afa0c4bfe16e8fd.0p-144L, + 0xfc0000.0p-24, 0x8102b3.0p-29, -0x1db29ee2d83717be918e1119642ab.0p-144L, + 0xfa0000.0p-24, 0xc24929.0p-29, 0x1191957d173697cf302cc9476f561.0p-143L, + 0xf80000.0p-24, 0x820aec.0p-28, 0x13ce8888e02e78eba9b1113bc1c18.0p-142L, + 0xf60000.0p-24, 0xa33577.0p-28, -0x17a4382ce6eb7bfa509bec8da5f22.0p-142L, + 0xf48000.0p-24, 0xbc42cb.0p-28, -0x172a21161a107674986dcdca6709c.0p-143L, + 0xf30000.0p-24, 0xd57797.0p-28, -0x1e09de07cb958897a3ea46e84abb3.0p-142L, + 0xf10000.0p-24, 0xf7518e.0p-28, 0x1ae1eec1b036c484993c549c4bf40.0p-151L, + 0xef0000.0p-24, 0x8cb9df.0p-27, -0x1d7355325d560d9e9ab3d6ebab580.0p-141L, + 0xed8000.0p-24, 0x999ec0.0p-27, -0x1f9f02d256d5037108f4ec21e48cd.0p-142L, + 0xec0000.0p-24, 0xa6988b.0p-27, -0x16fc0a9d12c17a70f7a684c596b12.0p-143L, + 0xea0000.0p-24, 0xb80698.0p-27, 0x15d581c1e8da99ded322fb08b8462.0p-141L, + 0xe80000.0p-24, 0xc99af3.0p-27, -0x1535b3ba8f150ae09996d7bb4653e.0p-143L, + 0xe70000.0p-24, 0xd273b2.0p-27, 0x163786f5251aefe0ded34c8318f52.0p-145L, + 0xe50000.0p-24, 0xe442c0.0p-27, 0x1bc4b2368e32d56699c1799a244d4.0p-144L, + 0xe38000.0p-24, 0xf1b83f.0p-27, 0x1c6090f684e6766abceccab1d7174.0p-141L, + 0xe20000.0p-24, 0xff448a.0p-27, -0x1890aa69ac9f4215f93936b709efb.0p-142L, + 0xe08000.0p-24, 0x8673f6.0p-26, 0x1b9985194b6affd511b534b72a28e.0p-140L, + 0xdf0000.0p-24, 0x8d515c.0p-26, -0x1dc08d61c6ef1d9b2ef7e68680598.0p-143L, + 0xdd8000.0p-24, 0x943a9e.0p-26, -0x1f72a2dac729b3f46662238a9425a.0p-142L, + 0xdc0000.0p-24, 0x9b2fe6.0p-26, -0x1fd4dfd3a0afb9691aed4d5e3df94.0p-140L, + 0xda8000.0p-24, 0xa2315d.0p-26, -0x11b26121629c46c186384993e1c93.0p-142L, + 0xd90000.0p-24, 0xa93f2f.0p-26, 0x1286d633e8e5697dc6a402a56fce1.0p-141L, + 0xd78000.0p-24, 0xb05988.0p-26, 0x16128eba9367707ebfa540e45350c.0p-144L, + 0xd60000.0p-24, 0xb78094.0p-26, 0x16ead577390d31ef0f4c9d43f79b2.0p-140L, + 0xd50000.0p-24, 0xbc4c6c.0p-26, 0x151131ccf7c7b75e7d900b521c48d.0p-141L, + 0xd38000.0p-24, 0xc3890a.0p-26, -0x115e2cd714bd06508aeb00d2ae3e9.0p-140L, + 0xd20000.0p-24, 0xcad2d7.0p-26, -0x1847f406ebd3af80485c2f409633c.0p-142L, + 0xd10000.0p-24, 0xcfb620.0p-26, 0x1c2259904d686581799fbce0b5f19.0p-141L, + 0xcf8000.0p-24, 0xd71653.0p-26, 0x1ece57a8d5ae54f550444ecf8b995.0p-140L, + 0xce0000.0p-24, 0xde843a.0p-26, -0x1f109d4bc4595412b5d2517aaac13.0p-141L, + 0xcd0000.0p-24, 0xe37fde.0p-26, 0x1bc03dc271a74d3a85b5b43c0e727.0p-141L, + 0xcb8000.0p-24, 0xeb050c.0p-26, -0x1bf2badc0df841a71b79dd5645b46.0p-145L, + 0xca0000.0p-24, 0xf29878.0p-26, -0x18efededd89fbe0bcfbe6d6db9f66.0p-147L, + 0xc90000.0p-24, 0xf7ad6f.0p-26, 0x1373ff977baa6911c7bafcb4d84fb.0p-141L, + 0xc80000.0p-24, 0xfcc8e3.0p-26, 0x196766f2fb328337cc050c6d83b22.0p-140L, + 0xc68000.0p-24, 0x823f30.0p-25, 0x19bd076f7c434e5fcf1a212e2a91e.0p-139L, + 0xc58000.0p-24, 0x84d52c.0p-25, -0x1a327257af0f465e5ecab5f2a6f81.0p-139L, + 0xc40000.0p-24, 0x88bc74.0p-25, 0x113f23def19c5a0fe396f40f1dda9.0p-141L, + 0xc30000.0p-24, 0x8b5ae6.0p-25, 0x1759f6e6b37de945a049a962e66c6.0p-139L, + 0xc20000.0p-24, 0x8dfccb.0p-25, 0x1ad35ca6ed5147bdb6ddcaf59c425.0p-141L, + 0xc10000.0p-24, 0x90a22b.0p-25, 0x1a1d71a87deba46bae9827221dc98.0p-139L, + 0xbf8000.0p-24, 0x94a0d8.0p-25, -0x139e5210c2b730e28aba001a9b5e0.0p-140L, + 0xbe8000.0p-24, 0x974f16.0p-25, -0x18f6ebcff3ed72e23e13431adc4a5.0p-141L, + 0xbd8000.0p-24, 0x9a00f1.0p-25, -0x1aa268be39aab7148e8d80caa10b7.0p-139L, + 0xbc8000.0p-24, 0x9cb672.0p-25, -0x14c8815839c5663663d15faed7771.0p-139L, + 0xbb0000.0p-24, 0xa0cda1.0p-25, 0x1eaf46390dbb2438273918db7df5c.0p-141L, + 0xba0000.0p-24, 0xa38c6e.0p-25, 0x138e20d831f698298adddd7f32686.0p-141L, + 0xb90000.0p-24, 0xa64f05.0p-25, -0x1e8d3c41123615b147a5d47bc208f.0p-142L, + 0xb80000.0p-24, 0xa91570.0p-25, 0x1ce28f5f3840b263acb4351104631.0p-140L, + 0xb70000.0p-24, 0xabdfbb.0p-25, -0x186e5c0a42423457e22d8c650b355.0p-139L, + 0xb60000.0p-24, 0xaeadef.0p-25, -0x14d41a0b2a08a465dc513b13f567d.0p-143L, + 0xb50000.0p-24, 0xb18018.0p-25, 0x16755892770633947ffe651e7352f.0p-139L, + 0xb40000.0p-24, 0xb45642.0p-25, -0x16395ebe59b15228bfe8798d10ff0.0p-142L, + 0xb30000.0p-24, 0xb73077.0p-25, 0x1abc65c8595f088b61a335f5b688c.0p-140L, + 0xb20000.0p-24, 0xba0ec4.0p-25, -0x1273089d3dad88e7d353e9967d548.0p-139L, + 0xb10000.0p-24, 0xbcf133.0p-25, 0x10f9f67b1f4bbf45de06ecebfaf6d.0p-139L, + 0xb00000.0p-24, 0xbfd7d2.0p-25, -0x109fab904864092b34edda19a831e.0p-140L, + 0xaf0000.0p-24, 0xc2c2ac.0p-25, -0x1124680aa43333221d8a9b475a6ba.0p-139L, + 0xae8000.0p-24, 0xc439b3.0p-25, -0x1f360cc4710fbfe24b633f4e8d84d.0p-140L, + 0xad8000.0p-24, 0xc72afd.0p-25, -0x132d91f21d89c89c45003fc5d7807.0p-140L, + 0xac8000.0p-24, 0xca20a2.0p-25, -0x16bf9b4d1f8da8002f2449e174504.0p-139L, + 0xab8000.0p-24, 0xcd1aae.0p-25, 0x19deb5ce6a6a8717d5626e16acc7d.0p-141L, + 0xaa8000.0p-24, 0xd0192f.0p-25, 0x1a29fb48f7d3ca87dabf351aa41f4.0p-139L, + 0xaa0000.0p-24, 0xd19a20.0p-25, 0x1127d3c6457f9d79f51dcc73014c9.0p-141L, + 0xa90000.0p-24, 0xd49f6a.0p-25, -0x1ba930e486a0ac42d1bf9199188e7.0p-141L, + 0xa80000.0p-24, 0xd7a94b.0p-25, -0x1b6e645f31549dd1160bcc45c7e2c.0p-139L, + 0xa70000.0p-24, 0xdab7d0.0p-25, 0x1118a425494b610665377f15625b6.0p-140L, + 0xa68000.0p-24, 0xdc40d5.0p-25, 0x1966f24d29d3a2d1b2176010478be.0p-140L, + 0xa58000.0p-24, 0xdf566d.0p-25, -0x1d8e52eb2248f0c95dd83626d7333.0p-142L, + 0xa48000.0p-24, 0xe270ce.0p-25, -0x1ee370f96e6b67ccb006a5b9890ea.0p-140L, + 0xa40000.0p-24, 0xe3ffce.0p-25, 0x1d155324911f56db28da4d629d00a.0p-140L, + 0xa30000.0p-24, 0xe72179.0p-25, -0x1fe6e2f2f867d8f4d60c713346641.0p-140L, + 0xa20000.0p-24, 0xea4812.0p-25, 0x1b7be9add7f4d3b3d406b6cbf3ce5.0p-140L, + 0xa18000.0p-24, 0xebdd3d.0p-25, 0x1b3cfb3f7511dd73692609040ccc2.0p-139L, + 0xa08000.0p-24, 0xef0b5b.0p-25, -0x1220de1f7301901b8ad85c25afd09.0p-139L, + 0xa00000.0p-24, 0xf0a451.0p-25, -0x176364c9ac81cc8a4dfb804de6867.0p-140L, + 0x9f0000.0p-24, 0xf3da16.0p-25, 0x1eed6b9aafac8d42f78d3e65d3727.0p-141L, + 0x9e8000.0p-24, 0xf576e9.0p-25, 0x1d593218675af269647b783d88999.0p-139L, + 0x9d8000.0p-24, 0xf8b47c.0p-25, -0x13e8eb7da053e063714615f7cc91d.0p-144L, + 0x9d0000.0p-24, 0xfa553f.0p-25, 0x1c063259bcade02951686d5373aec.0p-139L, + 0x9c0000.0p-24, 0xfd9ac5.0p-25, 0x1ef491085fa3c1649349630531502.0p-139L, + 0x9b8000.0p-24, 0xff3f8c.0p-25, 0x1d607a7c2b8c5320619fb9433d841.0p-139L, + 0x9a8000.0p-24, 0x814697.0p-24, -0x12ad3817004f3f0bdff99f932b273.0p-138L, + 0x9a0000.0p-24, 0x821b06.0p-24, -0x189fc53117f9e54e78103a2bc1767.0p-141L, + 0x990000.0p-24, 0x83c5f8.0p-24, 0x14cf15a048907b7d7f47ddb45c5a3.0p-139L, + 0x988000.0p-24, 0x849c7d.0p-24, 0x1cbb1d35fb82873b04a9af1dd692c.0p-138L, + 0x978000.0p-24, 0x864ba6.0p-24, 0x1128639b814f9b9770d8cb6573540.0p-138L, + 0x970000.0p-24, 0x87244c.0p-24, 0x184733853300f002e836dfd47bd41.0p-139L, + 0x968000.0p-24, 0x87fdaa.0p-24, 0x109d23aef77dd5cd7cc94306fb3ff.0p-140L, + 0x958000.0p-24, 0x89b293.0p-24, -0x1a81ef367a59de2b41eeebd550702.0p-138L, + 0x950000.0p-24, 0x8a8e20.0p-24, -0x121ad3dbb2f45275c917a30df4ac9.0p-138L, + 0x948000.0p-24, 0x8b6a6a.0p-24, -0x1cfb981628af71a89df4e6df2e93b.0p-139L, + 0x938000.0p-24, 0x8d253a.0p-24, -0x1d21730ea76cfdec367828734cae5.0p-139L, + 0x930000.0p-24, 0x8e03c2.0p-24, 0x135cc00e566f76b87333891e0dec4.0p-138L, + 0x928000.0p-24, 0x8ee30d.0p-24, -0x10fcb5df257a263e3bf446c6e3f69.0p-140L, + 0x918000.0p-24, 0x90a3ee.0p-24, -0x16e171b15433d723a4c7380a448d8.0p-139L, + 0x910000.0p-24, 0x918587.0p-24, -0x1d050da07f3236f330972da2a7a87.0p-139L, + 0x908000.0p-24, 0x9267e7.0p-24, 0x1be03669a5268d21148c6002becd3.0p-139L, + 0x8f8000.0p-24, 0x942f04.0p-24, 0x10b28e0e26c336af90e00533323ba.0p-139L, + 0x8f0000.0p-24, 0x9513c3.0p-24, 0x1a1d820da57cf2f105a89060046aa.0p-138L, + 0x8e8000.0p-24, 0x95f950.0p-24, -0x19ef8f13ae3cf162409d8ea99d4c0.0p-139L, + 0x8e0000.0p-24, 0x96dfab.0p-24, -0x109e417a6e507b9dc10dac743ad7a.0p-138L, + 0x8d0000.0p-24, 0x98aed2.0p-24, 0x10d01a2c5b0e97c4990b23d9ac1f5.0p-139L, + 0x8c8000.0p-24, 0x9997a2.0p-24, -0x1d6a50d4b61ea74540bdd2aa99a42.0p-138L, + 0x8c0000.0p-24, 0x9a8145.0p-24, 0x1b3b190b83f9527e6aba8f2d783c1.0p-138L, + 0x8b8000.0p-24, 0x9b6bbf.0p-24, 0x13a69fad7e7abe7ba81c664c107e0.0p-138L, + 0x8b0000.0p-24, 0x9c5711.0p-24, -0x11cd12316f576aad348ae79867223.0p-138L, + 0x8a8000.0p-24, 0x9d433b.0p-24, 0x1c95c444b807a246726b304ccae56.0p-139L, + 0x898000.0p-24, 0x9f1e22.0p-24, -0x1b9c224ea698c2f9b47466d6123fe.0p-139L, + 0x890000.0p-24, 0xa00ce1.0p-24, 0x125ca93186cf0f38b4619a2483399.0p-141L, + 0x888000.0p-24, 0xa0fc80.0p-24, -0x1ee38a7bc228b3597043be78eaf49.0p-139L, + 0x880000.0p-24, 0xa1ed00.0p-24, -0x1a0db876613d204147dc69a07a649.0p-138L, + 0x878000.0p-24, 0xa2de62.0p-24, 0x193224e8516c008d3602a7b41c6e8.0p-139L, + 0x870000.0p-24, 0xa3d0a9.0p-24, 0x1fa28b4d2541aca7d5844606b2421.0p-139L, + 0x868000.0p-24, 0xa4c3d6.0p-24, 0x1c1b5760fb4571acbcfb03f16daf4.0p-138L, + 0x858000.0p-24, 0xa6acea.0p-24, 0x1fed5d0f65949c0a345ad743ae1ae.0p-140L, + 0x850000.0p-24, 0xa7a2d4.0p-24, 0x1ad270c9d749362382a7688479e24.0p-140L, + 0x848000.0p-24, 0xa899ab.0p-24, 0x199ff15ce532661ea9643a3a2d378.0p-139L, + 0x840000.0p-24, 0xa99171.0p-24, 0x1a19e15ccc45d257530a682b80490.0p-139L, + 0x838000.0p-24, 0xaa8a28.0p-24, -0x121a14ec532b35ba3e1f868fd0b5e.0p-140L, + 0x830000.0p-24, 0xab83d1.0p-24, 0x1aee319980bff3303dd481779df69.0p-139L, + 0x828000.0p-24, 0xac7e6f.0p-24, -0x18ffd9e3900345a85d2d86161742e.0p-140L, + 0x820000.0p-24, 0xad7a03.0p-24, -0x1e4db102ce29f79b026b64b42caa1.0p-140L, + 0x818000.0p-24, 0xae768f.0p-24, 0x17c35c55a04a82ab19f77652d977a.0p-141L, + 0x810000.0p-24, 0xaf7415.0p-24, 0x1448324047019b48d7b98c1cf7234.0p-138L, + 0x808000.0p-24, 0xb07298.0p-24, -0x1750ee3915a197e9c7359dd94152f.0p-138L, + 0x800000.0p-24, 0xb17218.0p-24, -0x105c610ca86c3898cff81a12a17e2.0p-141L, +}; + +#ifdef USE_UTAB +static const struct { + float H; /* 1 + i/INTERVALS (exact) */ + float E; /* H(i) * G(i) - 1 (exact) */ +} U[TSIZE] = { + 0x800000.0p-23, 0, + 0x810000.0p-23, -0x800000.0p-37, + 0x820000.0p-23, -0x800000.0p-35, + 0x830000.0p-23, -0x900000.0p-34, + 0x840000.0p-23, -0x800000.0p-33, + 0x850000.0p-23, -0xc80000.0p-33, + 0x860000.0p-23, -0xa00000.0p-36, + 0x870000.0p-23, 0x940000.0p-33, + 0x880000.0p-23, 0x800000.0p-35, + 0x890000.0p-23, -0xc80000.0p-34, + 0x8a0000.0p-23, 0xe00000.0p-36, + 0x8b0000.0p-23, 0x900000.0p-33, + 0x8c0000.0p-23, -0x800000.0p-35, + 0x8d0000.0p-23, -0xe00000.0p-33, + 0x8e0000.0p-23, 0x880000.0p-33, + 0x8f0000.0p-23, -0xa80000.0p-34, + 0x900000.0p-23, -0x800000.0p-35, + 0x910000.0p-23, 0x800000.0p-37, + 0x920000.0p-23, 0x900000.0p-35, + 0x930000.0p-23, 0xd00000.0p-35, + 0x940000.0p-23, 0xe00000.0p-35, + 0x950000.0p-23, 0xc00000.0p-35, + 0x960000.0p-23, 0xe00000.0p-36, + 0x970000.0p-23, -0x800000.0p-38, + 0x980000.0p-23, -0xc00000.0p-35, + 0x990000.0p-23, -0xd00000.0p-34, + 0x9a0000.0p-23, 0x880000.0p-33, + 0x9b0000.0p-23, 0xe80000.0p-35, + 0x9c0000.0p-23, -0x800000.0p-35, + 0x9d0000.0p-23, 0xb40000.0p-33, + 0x9e0000.0p-23, 0x880000.0p-34, + 0x9f0000.0p-23, -0xe00000.0p-35, + 0xa00000.0p-23, 0x800000.0p-33, + 0xa10000.0p-23, -0x900000.0p-36, + 0xa20000.0p-23, -0xb00000.0p-33, + 0xa30000.0p-23, -0xa00000.0p-36, + 0xa40000.0p-23, 0x800000.0p-33, + 0xa50000.0p-23, -0xf80000.0p-35, + 0xa60000.0p-23, 0x880000.0p-34, + 0xa70000.0p-23, -0x900000.0p-33, + 0xa80000.0p-23, -0x800000.0p-35, + 0xa90000.0p-23, 0x900000.0p-34, + 0xaa0000.0p-23, 0xa80000.0p-33, + 0xab0000.0p-23, -0xac0000.0p-34, + 0xac0000.0p-23, -0x800000.0p-37, + 0xad0000.0p-23, 0xf80000.0p-35, + 0xae0000.0p-23, 0xf80000.0p-34, + 0xaf0000.0p-23, -0xac0000.0p-33, + 0xb00000.0p-23, -0x800000.0p-33, + 0xb10000.0p-23, -0xb80000.0p-34, + 0xb20000.0p-23, -0x800000.0p-34, + 0xb30000.0p-23, -0xb00000.0p-35, + 0xb40000.0p-23, -0x800000.0p-35, + 0xb50000.0p-23, -0xe00000.0p-36, + 0xb60000.0p-23, -0x800000.0p-35, + 0xb70000.0p-23, -0xb00000.0p-35, + 0xb80000.0p-23, -0x800000.0p-34, + 0xb90000.0p-23, -0xb80000.0p-34, + 0xba0000.0p-23, -0x800000.0p-33, + 0xbb0000.0p-23, -0xac0000.0p-33, + 0xbc0000.0p-23, 0x980000.0p-33, + 0xbd0000.0p-23, 0xbc0000.0p-34, + 0xbe0000.0p-23, 0xe00000.0p-36, + 0xbf0000.0p-23, -0xb80000.0p-35, + 0xc00000.0p-23, -0x800000.0p-33, + 0xc10000.0p-23, 0xa80000.0p-33, + 0xc20000.0p-23, 0x900000.0p-34, + 0xc30000.0p-23, -0x800000.0p-35, + 0xc40000.0p-23, -0x900000.0p-33, + 0xc50000.0p-23, 0x820000.0p-33, + 0xc60000.0p-23, 0x800000.0p-38, + 0xc70000.0p-23, -0x820000.0p-33, + 0xc80000.0p-23, 0x800000.0p-33, + 0xc90000.0p-23, -0xa00000.0p-36, + 0xca0000.0p-23, -0xb00000.0p-33, + 0xcb0000.0p-23, 0x840000.0p-34, + 0xcc0000.0p-23, -0xd00000.0p-34, + 0xcd0000.0p-23, 0x800000.0p-33, + 0xce0000.0p-23, -0xe00000.0p-35, + 0xcf0000.0p-23, 0xa60000.0p-33, + 0xd00000.0p-23, -0x800000.0p-35, + 0xd10000.0p-23, 0xb40000.0p-33, + 0xd20000.0p-23, -0x800000.0p-35, + 0xd30000.0p-23, 0xaa0000.0p-33, + 0xd40000.0p-23, -0xe00000.0p-35, + 0xd50000.0p-23, 0x880000.0p-33, + 0xd60000.0p-23, -0xd00000.0p-34, + 0xd70000.0p-23, 0x9c0000.0p-34, + 0xd80000.0p-23, -0xb00000.0p-33, + 0xd90000.0p-23, -0x800000.0p-38, + 0xda0000.0p-23, 0xa40000.0p-33, + 0xdb0000.0p-23, -0xdc0000.0p-34, + 0xdc0000.0p-23, 0xc00000.0p-35, + 0xdd0000.0p-23, 0xca0000.0p-33, + 0xde0000.0p-23, -0xb80000.0p-34, + 0xdf0000.0p-23, 0xd00000.0p-35, + 0xe00000.0p-23, 0xc00000.0p-33, + 0xe10000.0p-23, -0xf40000.0p-34, + 0xe20000.0p-23, 0x800000.0p-37, + 0xe30000.0p-23, 0x860000.0p-33, + 0xe40000.0p-23, -0xc80000.0p-33, + 0xe50000.0p-23, -0xa80000.0p-34, + 0xe60000.0p-23, 0xe00000.0p-36, + 0xe70000.0p-23, 0x880000.0p-33, + 0xe80000.0p-23, -0xe00000.0p-33, + 0xe90000.0p-23, -0xfc0000.0p-34, + 0xea0000.0p-23, -0x800000.0p-35, + 0xeb0000.0p-23, 0xe80000.0p-35, + 0xec0000.0p-23, 0x900000.0p-33, + 0xed0000.0p-23, 0xe20000.0p-33, + 0xee0000.0p-23, -0xac0000.0p-33, + 0xef0000.0p-23, -0xc80000.0p-34, + 0xf00000.0p-23, -0x800000.0p-35, + 0xf10000.0p-23, 0x800000.0p-35, + 0xf20000.0p-23, 0xb80000.0p-34, + 0xf30000.0p-23, 0x940000.0p-33, + 0xf40000.0p-23, 0xc80000.0p-33, + 0xf50000.0p-23, -0xf20000.0p-33, + 0xf60000.0p-23, -0xc80000.0p-33, + 0xf70000.0p-23, -0xa20000.0p-33, + 0xf80000.0p-23, -0x800000.0p-33, + 0xf90000.0p-23, -0xc40000.0p-34, + 0xfa0000.0p-23, -0x900000.0p-34, + 0xfb0000.0p-23, -0xc80000.0p-35, + 0xfc0000.0p-23, -0x800000.0p-35, + 0xfd0000.0p-23, -0x900000.0p-36, + 0xfe0000.0p-23, -0x800000.0p-37, + 0xff0000.0p-23, -0x800000.0p-39, + 0x800000.0p-22, 0, +}; +#endif /* USE_UTAB */ + +#ifdef STRUCT_RETURN +#define RETURN1(rp, v) do { \ + (rp)->hi = (v); \ + (rp)->lo_set = 0; \ + return; \ +} while (0) + +#define RETURN2(rp, h, l) do { \ + (rp)->hi = (h); \ + (rp)->lo = (l); \ + (rp)->lo_set = 1; \ + return; \ +} while (0) + +struct ld { + long double hi; + long double lo; + int lo_set; +}; +#else +#define RETURN1(rp, v) RETURNF(v) +#define RETURN2(rp, h, l) RETURNI((h) + (l)) +#endif + +#ifdef STRUCT_RETURN +static inline __always_inline void +k_logl(long double x, struct ld *rp) +#else +long double +logl(long double x) +#endif +{ + long double d, val_hi, val_lo; + double dd, dk; + uint64_t lx, llx; + int i, k; + uint16_t hx; + + EXTRACT_LDBL128_WORDS(hx, lx, llx, x); + k = -16383; +#if 0 /* Hard to do efficiently. Don't do it until we support all modes. */ + if (x == 1) + RETURN1(rp, 0); /* log(1) = +0 in all rounding modes */ +#endif + if (hx == 0 || hx >= 0x8000) { /* zero, negative or subnormal? */ + if (((hx & 0x7fff) | lx | llx) == 0) + RETURN1(rp, -1 / zero); /* log(+-0) = -Inf */ + if (hx != 0) + /* log(neg or NaN) = qNaN: */ + RETURN1(rp, (x - x) / zero); + x *= 0x1.0p113; /* subnormal; scale up x */ + EXTRACT_LDBL128_WORDS(hx, lx, llx, x); + k = -16383 - 113; + } else if (hx >= 0x7fff) + RETURN1(rp, x + x); /* log(Inf or NaN) = Inf or qNaN */ +#ifndef STRUCT_RETURN + ENTERI(); +#endif + k += hx; + dk = k; + + /* Scale x to be in [1, 2). */ + SET_LDBL_EXPSIGN(x, 0x3fff); + + /* 0 <= i <= INTERVALS: */ +#define L2I (49 - LOG2_INTERVALS) + i = (lx + (1LL << (L2I - 2))) >> (L2I - 1); + + /* + * -0.005280 < d < 0.004838. In particular, the infinite- + * precision |d| is <= 2**-7. Rounding of G(i) to 8 bits + * ensures that d is representable without extra precision for + * this bound on |d| (since when this calculation is expressed + * as x*G(i)-1, the multiplication needs as many extra bits as + * G(i) has and the subtraction cancels 8 bits). But for + * most i (107 cases out of 129), the infinite-precision |d| + * is <= 2**-8. G(i) is rounded to 9 bits for such i to give + * better accuracy (this works by improving the bound on |d|, + * which in turn allows rounding to 9 bits in more cases). + * This is only important when the original x is near 1 -- it + * lets us avoid using a special method to give the desired + * accuracy for such x. + */ + if (0) + d = x * G(i) - 1; + else { +#ifdef USE_UTAB + d = (x - H(i)) * G(i) + E(i); +#else + long double x_hi; + double x_lo; + + /* + * Split x into x_hi + x_lo to calculate x*G(i)-1 exactly. + * G(i) has at most 9 bits, so the splitting point is not + * critical. + */ + INSERT_LDBL128_WORDS(x_hi, 0x3fff, lx, + llx & 0xffffffffff000000ULL); + x_lo = x - x_hi; + d = x_hi * G(i) - 1 + x_lo * G(i); +#endif + } + + /* + * Our algorithm depends on exact cancellation of F_lo(i) and + * F_hi(i) with dk*ln_2_lo and dk*ln2_hi when k is -1 and i is + * at the end of the table. This and other technical complications + * make it difficult to avoid the double scaling in (dk*ln2) * + * log(base) for base != e without losing more accuracy and/or + * efficiency than is gained. + */ + /* + * Use double precision operations wherever possible, since + * long double operations are emulated and were very slow on + * the old sparc64 and unknown on the newer aarch64 and riscv + * machines. Also, don't try to improve parallelism by + * increasing the number of operations, since any parallelism + * on such machines is needed for the emulation. Horner's + * method is good for this, and is also good for accuracy. + * Horner's method doesn't handle the `lo' term well, either + * for efficiency or accuracy. However, for accuracy we + * evaluate d * d * P2 separately to take advantage of by P2 + * being exact, and this gives a good place to sum the 'lo' + * term too. + */ + dd = (double)d; + val_lo = d * d * d * (P3 + + d * (P4 + d * (P5 + d * (P6 + d * (P7 + d * (P8 + + dd * (P9 + dd * (P10 + dd * (P11 + dd * (P12 + dd * (P13 + + dd * P14))))))))))) + (F_lo(i) + dk * ln2_lo) + d * d * P2; + val_hi = d; +#ifdef DEBUG + if (fetestexcept(FE_UNDERFLOW)) + breakpoint(); +#endif + + _3sumF(val_hi, val_lo, F_hi(i) + dk * ln2_hi); + RETURN2(rp, val_hi, val_lo); +} + +long double +log1pl(long double x) +{ + long double d, d_hi, f_lo, val_hi, val_lo; + long double f_hi, twopminusk; + double d_lo, dd, dk; + uint64_t lx, llx; + int i, k; + int16_t ax, hx; + + DOPRINT_START(&x); + EXTRACT_LDBL128_WORDS(hx, lx, llx, x); + if (hx < 0x3fff) { /* x < 1, or x neg NaN */ + ax = hx & 0x7fff; + if (ax >= 0x3fff) { /* x <= -1, or x neg NaN */ + if (ax == 0x3fff && (lx | llx) == 0) + RETURNP(-1 / zero); /* log1p(-1) = -Inf */ + /* log1p(x < 1, or x NaN) = qNaN: */ + RETURNP((x - x) / (x - x)); + } + if (ax <= 0x3f8d) { /* |x| < 2**-113 */ + if ((int)x == 0) + RETURNP(x); /* x with inexact if x != 0 */ + } + f_hi = 1; + f_lo = x; + } else if (hx >= 0x7fff) { /* x +Inf or non-neg NaN */ + RETURNP(x + x); /* log1p(Inf or NaN) = Inf or qNaN */ + } else if (hx < 0x40e1) { /* 1 <= x < 2**226 */ + f_hi = x; + f_lo = 1; + } else { /* 2**226 <= x < +Inf */ + f_hi = x; + f_lo = 0; /* avoid underflow of the P3 term */ + } + ENTERI(); + x = f_hi + f_lo; + f_lo = (f_hi - x) + f_lo; + + EXTRACT_LDBL128_WORDS(hx, lx, llx, x); + k = -16383; + + k += hx; + dk = k; + + SET_LDBL_EXPSIGN(x, 0x3fff); + twopminusk = 1; + SET_LDBL_EXPSIGN(twopminusk, 0x7ffe - (hx & 0x7fff)); + f_lo *= twopminusk; + + i = (lx + (1LL << (L2I - 2))) >> (L2I - 1); + + /* + * x*G(i)-1 (with a reduced x) can be represented exactly, as + * above, but now we need to evaluate the polynomial on d = + * (x+f_lo)*G(i)-1 and extra precision is needed for that. + * Since x+x_lo is a hi+lo decomposition and subtracting 1 + * doesn't lose too many bits, an inexact calculation for + * f_lo*G(i) is good enough. + */ + if (0) + d_hi = x * G(i) - 1; + else { +#ifdef USE_UTAB + d_hi = (x - H(i)) * G(i) + E(i); +#else + long double x_hi; + double x_lo; + + INSERT_LDBL128_WORDS(x_hi, 0x3fff, lx, + llx & 0xffffffffff000000ULL); + x_lo = x - x_hi; + d_hi = x_hi * G(i) - 1 + x_lo * G(i); +#endif + } + d_lo = f_lo * G(i); + + /* + * This is _2sumF(d_hi, d_lo) inlined. The condition + * (d_hi == 0 || |d_hi| >= |d_lo|) for using _2sumF() is not + * always satisifed, so it is not clear that this works, but + * it works in practice. It works even if it gives a wrong + * normalized d_lo, since |d_lo| > |d_hi| implies that i is + * nonzero and d is tiny, so the F(i) term dominates d_lo. + * In float precision: + * (By exhaustive testing, the worst case is d_hi = 0x1.bp-25. + * And if d is only a little tinier than that, we would have + * another underflow problem for the P3 term; this is also ruled + * out by exhaustive testing.) + */ + d = d_hi + d_lo; + d_lo = d_hi - d + d_lo; + d_hi = d; + + dd = (double)d; + val_lo = d * d * d * (P3 + + d * (P4 + d * (P5 + d * (P6 + d * (P7 + d * (P8 + + dd * (P9 + dd * (P10 + dd * (P11 + dd * (P12 + dd * (P13 + + dd * P14))))))))))) + (F_lo(i) + dk * ln2_lo + d_lo) + d * d * P2; + val_hi = d_hi; +#ifdef DEBUG + if (fetestexcept(FE_UNDERFLOW)) + breakpoint(); +#endif + + _3sumF(val_hi, val_lo, F_hi(i) + dk * ln2_hi); + RETURN2PI(val_hi, val_lo); +} + +#ifdef STRUCT_RETURN + +long double +logl(long double x) +{ + struct ld r; + + ENTERI(); + DOPRINT_START(&x); + k_logl(x, &r); + RETURNSPI(&r); +} + +/* + * 29+113 bit decompositions. The bits are distributed so that the products + * of the hi terms are exact in double precision. The types are chosen so + * that the products of the hi terms are done in at least double precision, + * without any explicit conversions. More natural choices would require a + * slow long double precision multiplication. + */ +static const double +invln10_hi = 4.3429448176175356e-1, /* 0x1bcb7b15000000.0p-54 */ +invln2_hi = 1.4426950402557850e0; /* 0x17154765000000.0p-52 */ +static const long double +invln10_lo = 1.41498268538580090791605082294397000e-10L, /* 0x137287195355baaafad33dc323ee3.0p-145L */ +invln2_lo = 6.33178418956604368501892137426645911e-10L, /* 0x15c17f0bbbe87fed0691d3e88eb57.0p-143L */ +invln10_lo_plus_hi = invln10_lo + invln10_hi, +invln2_lo_plus_hi = invln2_lo + invln2_hi; + +long double +log10l(long double x) +{ + struct ld r; + long double hi, lo; + + ENTERI(); + DOPRINT_START(&x); + k_logl(x, &r); + if (!r.lo_set) + RETURNPI(r.hi); + _2sumF(r.hi, r.lo); + hi = (float)r.hi; + lo = r.lo + (r.hi - hi); + RETURN2PI(invln10_hi * hi, + invln10_lo_plus_hi * lo + invln10_lo * hi); +} + +long double +log2l(long double x) +{ + struct ld r; + long double hi, lo; + + ENTERI(); + DOPRINT_START(&x); + k_logl(x, &r); + if (!r.lo_set) + RETURNPI(r.hi); + _2sumF(r.hi, r.lo); + hi = (float)r.hi; + lo = r.lo + (r.hi - hi); + RETURN2PI(invln2_hi * hi, + invln2_lo_plus_hi * lo + invln2_lo * hi); +} + +#endif /* STRUCT_RETURN */ diff --git a/newlib/libm/ld80/b_expl.c b/newlib/libm/ld80/b_expl.c new file mode 100644 index 0000000000..c18a554510 --- /dev/null +++ b/newlib/libm/ld80/b_expl.c @@ -0,0 +1,113 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1985, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * See bsdsrc/b_exp.c for implementation details. + * + * bsdrc/b_exp.c converted to long double by Steven G. Kargl. + */ + +#include "fpmath.h" +#include "math_private.h" + +static const union IEEEl2bits + p0u = LD80C(0xaaaaaaaaaaaaaaab, -3, 1.66666666666666666671e-01L), + p1u = LD80C(0xb60b60b60b60b59a, -9, -2.77777777777777775377e-03L), + p2u = LD80C(0x8ab355e008a3cfce, -14, 6.61375661375629297465e-05L), + p3u = LD80C(0xddebbc994b0c1376, -20, -1.65343915327882529784e-06L), + p4u = LD80C(0xb354784cb4ef4c41, -25, 4.17535101591534118469e-08L), + p5u = LD80C(0x913e8a718382ce75, -30, -1.05679137034774806475e-09L), + p6u = LD80C(0xe8f0042aa134502e, -36, 2.64819349895429516863e-11L); +#define p1 (p0u.e) +#define p2 (p1u.e) +#define p3 (p2u.e) +#define p4 (p3u.e) +#define p5 (p4u.e) +#define p6 (p5u.e) +#define p7 (p6u.e) + +/* + * lnhuge = (LDBL_MAX_EXP + 9) * log(2.) + * lntiny = (LDBL_MIN_EXP - 64 - 10) * log(2.) + * invln2 = 1 / log(2.) + */ +static const union IEEEl2bits +ln2hiu = LD80C(0xb17217f700000000, -1, 6.93147180369123816490e-01L), +ln2lou = LD80C(0xd1cf79abc9e3b398, -33, 1.90821492927058781614e-10L), +lnhugeu = LD80C(0xb18b0c0330a8fad9, 13, 1.13627617309191834574e+04L), +lntinyu = LD80C(0xb236f28a68bc3bd7, 13, -1.14057368561139000667e+04L), +invln2u = LD80C(0xb8aa3b295c17f0bc, 0, 1.44269504088896340739e+00L); +#define ln2hi (ln2hiu.e) +#define ln2lo (ln2lou.e) +#define lnhuge (lnhugeu.e) +#define lntiny (lntinyu.e) +#define invln2 (invln2u.e) + +/* returns exp(r = x + c) for |c| < |x| with no overlap. */ + +static long double +__exp__D(long double x, long double c) +{ + long double hi, lo, z; + int k; + + if (x != x) /* x is NaN. */ + return(x); + + if (x <= lnhuge) { + if (x >= lntiny) { + /* argument reduction: x --> x - k*ln2 */ + z = invln2 * x; + k = z + copysignl(0.5L, x); + + /* + * Express (x + c) - k * ln2 as hi - lo. + * Let x = hi - lo rounded. + */ + hi = x - k * ln2hi; /* Exact. */ + lo = k * ln2lo - c; + x = hi - lo; + + /* Return 2^k*[1+x+x*c/(2+c)] */ + z = x * x; + c = x - z * (p1 + z * (p2 + z * (p3 + z * (p4 + + z * (p5 + z * (p6 + z * p7)))))); + c = (x * c) / (2 - c); + + return (ldexpl(1 + (hi - (lo - c)), k)); + } else { + /* exp(-INF) is 0. exp(-big) underflows to 0. */ + return (isfinite(x) ? ldexpl(1., -5000) : 0); + } + } else + /* exp(INF) is INF, exp(+big#) overflows to INF */ + return (isfinite(x) ? ldexpl(1., 5000) : x); +} diff --git a/newlib/libm/ld80/b_logl.c b/newlib/libm/ld80/b_logl.c new file mode 100644 index 0000000000..b11eacbe17 --- /dev/null +++ b/newlib/libm/ld80/b_logl.c @@ -0,0 +1,375 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * See bsdsrc/b_log.c for implementation details. + * + * bsdrc/b_log.c converted to long double by Steven G. Kargl. + */ + +#define N 128 + +/* + * Coefficients in the polynomial approximation of log(1+f/F). + * Domain of x is [0,1./256] with 2**(-84.48) precision. + */ +static const union IEEEl2bits + a1u = LD80C(0xaaaaaaaaaaaaaaab, -4, 8.33333333333333333356e-02L), + a2u = LD80C(0xcccccccccccccd29, -7, 1.25000000000000000781e-02L), + a3u = LD80C(0x9249249241ed3764, -9, 2.23214285711721994134e-03L), + a4u = LD80C(0xe38e959e1e7e01cf, -12, 4.34030476540000360640e-04L); +#define A1 (a1u.e) +#define A2 (a2u.e) +#define A3 (a3u.e) +#define A4 (a4u.e) + +/* + * Table of log(Fj) = logF_head[j] + logF_tail[j], for Fj = 1+j/128. + * Used for generation of extend precision logarithms. + * The constant 35184372088832 is 2^45, so the divide is exact. + * It ensures correct reading of logF_head, even for inaccurate + * decimal-to-binary conversion routines. (Everybody gets the + * right answer for integers less than 2^53.) + * Values for log(F) were generated using error < 10^-57 absolute + * with the bc -l package. + */ + +static double logF_head[N+1] = { + 0., + .007782140442060381246, + .015504186535963526694, + .023167059281547608406, + .030771658666765233647, + .038318864302141264488, + .045809536031242714670, + .053244514518837604555, + .060624621816486978786, + .067950661908525944454, + .075223421237524235039, + .082443669210988446138, + .089612158689760690322, + .096729626458454731618, + .103796793681567578460, + .110814366340264314203, + .117783035656430001836, + .124703478501032805070, + .131576357788617315236, + .138402322859292326029, + .145182009844575077295, + .151916042025732167530, + .158605030176659056451, + .165249572895390883786, + .171850256926518341060, + .178407657472689606947, + .184922338493834104156, + .191394852999565046047, + .197825743329758552135, + .204215541428766300668, + .210564769107350002741, + .216873938300523150246, + .223143551314024080056, + .229374101064877322642, + .235566071312860003672, + .241719936886966024758, + .247836163904594286577, + .253915209980732470285, + .259957524436686071567, + .265963548496984003577, + .271933715484010463114, + .277868451003087102435, + .283768173130738432519, + .289633292582948342896, + .295464212893421063199, + .301261330578199704177, + .307025035294827830512, + .312755710004239517729, + .318453731118097493890, + .324119468654316733591, + .329753286372579168528, + .335355541920762334484, + .340926586970454081892, + .346466767346100823488, + .351976423156884266063, + .357455888922231679316, + .362905493689140712376, + .368325561158599157352, + .373716409793814818840, + .379078352934811846353, + .384411698910298582632, + .389716751140440464951, + .394993808240542421117, + .400243164127459749579, + .405465108107819105498, + .410659924985338875558, + .415827895143593195825, + .420969294644237379543, + .426084395310681429691, + .431173464818130014464, + .436236766774527495726, + .441274560805140936281, + .446287102628048160113, + .451274644139630254358, + .456237433481874177232, + .461175715122408291790, + .466089729924533457960, + .470979715219073113985, + .475845904869856894947, + .480688529345570714212, + .485507815781602403149, + .490303988045525329653, + .495077266798034543171, + .499827869556611403822, + .504556010751912253908, + .509261901790523552335, + .513945751101346104405, + .518607764208354637958, + .523248143765158602036, + .527867089620485785417, + .532464798869114019908, + .537041465897345915436, + .541597282432121573947, + .546132437597407260909, + .550647117952394182793, + .555141507540611200965, + .559615787935399566777, + .564070138285387656651, + .568504735352689749561, + .572919753562018740922, + .577315365035246941260, + .581691739635061821900, + .586049045003164792433, + .590387446602107957005, + .594707107746216934174, + .599008189645246602594, + .603290851438941899687, + .607555250224322662688, + .611801541106615331955, + .616029877215623855590, + .620240409751204424537, + .624433288012369303032, + .628608659422752680256, + .632766669570628437213, + .636907462236194987781, + .641031179420679109171, + .645137961373620782978, + .649227946625615004450, + .653301272011958644725, + .657358072709030238911, + .661398482245203922502, + .665422632544505177065, + .669430653942981734871, + .673422675212350441142, + .677398823590920073911, + .681359224807238206267, + .685304003098281100392, + .689233281238557538017, + .693147180560117703862 +}; + +static double logF_tail[N+1] = { + 0., + -.00000000000000543229938420049, + .00000000000000172745674997061, + -.00000000000001323017818229233, + -.00000000000001154527628289872, + -.00000000000000466529469958300, + .00000000000005148849572685810, + -.00000000000002532168943117445, + -.00000000000005213620639136504, + -.00000000000001819506003016881, + .00000000000006329065958724544, + .00000000000008614512936087814, + -.00000000000007355770219435028, + .00000000000009638067658552277, + .00000000000007598636597194141, + .00000000000002579999128306990, + -.00000000000004654729747598444, + -.00000000000007556920687451336, + .00000000000010195735223708472, + -.00000000000017319034406422306, + -.00000000000007718001336828098, + .00000000000010980754099855238, + -.00000000000002047235780046195, + -.00000000000008372091099235912, + .00000000000014088127937111135, + .00000000000012869017157588257, + .00000000000017788850778198106, + .00000000000006440856150696891, + .00000000000016132822667240822, + -.00000000000007540916511956188, + -.00000000000000036507188831790, + .00000000000009120937249914984, + .00000000000018567570959796010, + -.00000000000003149265065191483, + -.00000000000009309459495196889, + .00000000000017914338601329117, + -.00000000000001302979717330866, + .00000000000023097385217586939, + .00000000000023999540484211737, + .00000000000015393776174455408, + -.00000000000036870428315837678, + .00000000000036920375082080089, + -.00000000000009383417223663699, + .00000000000009433398189512690, + .00000000000041481318704258568, + -.00000000000003792316480209314, + .00000000000008403156304792424, + -.00000000000034262934348285429, + .00000000000043712191957429145, + -.00000000000010475750058776541, + -.00000000000011118671389559323, + .00000000000037549577257259853, + .00000000000013912841212197565, + .00000000000010775743037572640, + .00000000000029391859187648000, + -.00000000000042790509060060774, + .00000000000022774076114039555, + .00000000000010849569622967912, + -.00000000000023073801945705758, + .00000000000015761203773969435, + .00000000000003345710269544082, + -.00000000000041525158063436123, + .00000000000032655698896907146, + -.00000000000044704265010452446, + .00000000000034527647952039772, + -.00000000000007048962392109746, + .00000000000011776978751369214, + -.00000000000010774341461609578, + .00000000000021863343293215910, + .00000000000024132639491333131, + .00000000000039057462209830700, + -.00000000000026570679203560751, + .00000000000037135141919592021, + -.00000000000017166921336082431, + -.00000000000028658285157914353, + -.00000000000023812542263446809, + .00000000000006576659768580062, + -.00000000000028210143846181267, + .00000000000010701931762114254, + .00000000000018119346366441110, + .00000000000009840465278232627, + -.00000000000033149150282752542, + -.00000000000018302857356041668, + -.00000000000016207400156744949, + .00000000000048303314949553201, + -.00000000000071560553172382115, + .00000000000088821239518571855, + -.00000000000030900580513238244, + -.00000000000061076551972851496, + .00000000000035659969663347830, + .00000000000035782396591276383, + -.00000000000046226087001544578, + .00000000000062279762917225156, + .00000000000072838947272065741, + .00000000000026809646615211673, + -.00000000000010960825046059278, + .00000000000002311949383800537, + -.00000000000058469058005299247, + -.00000000000002103748251144494, + -.00000000000023323182945587408, + -.00000000000042333694288141916, + -.00000000000043933937969737844, + .00000000000041341647073835565, + .00000000000006841763641591466, + .00000000000047585534004430641, + .00000000000083679678674757695, + -.00000000000085763734646658640, + .00000000000021913281229340092, + -.00000000000062242842536431148, + -.00000000000010983594325438430, + .00000000000065310431377633651, + -.00000000000047580199021710769, + -.00000000000037854251265457040, + .00000000000040939233218678664, + .00000000000087424383914858291, + .00000000000025218188456842882, + -.00000000000003608131360422557, + -.00000000000050518555924280902, + .00000000000078699403323355317, + -.00000000000067020876961949060, + .00000000000016108575753932458, + .00000000000058527188436251509, + -.00000000000035246757297904791, + -.00000000000018372084495629058, + .00000000000088606689813494916, + .00000000000066486268071468700, + .00000000000063831615170646519, + .00000000000025144230728376072, + -.00000000000017239444525614834 +}; +/* + * Extra precision variant, returning struct {double a, b;}; + * log(x) = a + b to 63 bits, with 'a' rounded to 24 bits. + */ +static struct Double +__log__D(long double x) +{ + int m, j; + long double F, f, g, q, u, v, u1, u2; + struct Double r; + + /* + * Argument reduction: 1 <= g < 2; x/2^m = g; + * y = F*(1 + f/F) for |f| <= 2^-8 + */ + g = frexpl(x, &m); + g *= 2; + m--; + if (m == DBL_MIN_EXP - 1) { + j = ilogbl(g); + m += j; + g = ldexpl(g, -j); + } + j = N * (g - 1) + 0.5L; + F = (1.L / N) * j + 1; + f = g - F; + + g = 1 / (2 * F + f); + u = 2 * f * g; + v = u * u; + q = u * v * (A1 + v * (A2 + v * (A3 + v * A4))); + if (m | j) { + u1 = u + 513; + u1 -= 513; + } else { + u1 = (float)u; + } + u2 = (2 * (f - F * u1) - u1 * f) * g; + + u1 += m * (long double)logF_head[N] + logF_head[j]; + + u2 += logF_tail[j]; + u2 += q; + u2 += logF_tail[N] * m; + r.a = (float)(u1 + u2); /* Only difference is here. */ + r.b = (u1 - r.a) + u2; + return (r); +} diff --git a/newlib/libm/ld80/b_tgammal.c b/newlib/libm/ld80/b_tgammal.c new file mode 100644 index 0000000000..2b955d6585 --- /dev/null +++ b/newlib/libm/ld80/b_tgammal.c @@ -0,0 +1,419 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * The original code, FreeBSD's old svn r93211, contain the following + * attribution: + * + * This code by P. McIlroy, Oct 1992; + * + * The financial support of UUNET Communications Services is greatfully + * acknowledged. + * + * bsdrc/b_tgamma.c converted to long double by Steven G. Kargl. + */ + +/* + * See bsdsrc/t_tgamma.c for implementation details. + */ + +#include + +#if LDBL_MAX_EXP != 0x4000 +#error "Unsupported long double format" +#endif + +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +/* Used in b_log.c and below. */ +struct Double { + long double a; + long double b; +}; + +#include "b_logl.c" +#include "b_expl.c" + +static const double zero = 0.; +static const volatile double tiny = 1e-300; +/* + * x >= 6 + * + * Use the asymptotic approximation (Stirling's formula) adjusted for + * equal-ripples: + * + * log(G(x)) ~= (x-0.5)*(log(x)-1) + 0.5(log(2*pi)-1) + 1/x*P(1/(x*x)) + * + * Keep extra precision in multiplying (x-.5)(log(x)-1), to avoid + * premature round-off. + * + * Accurate to max(ulp(1/128) absolute, 2^-66 relative) error. + */ + +/* + * The following is a decomposition of 0.5 * (log(2*pi) - 1) into the + * first 12 bits in ln2pi_hi and the trailing 64 bits in ln2pi_lo. The + * variables are clearly misnamed. + */ +static const union IEEEl2bits +ln2pi_hiu = LD80C(0xd680000000000000, -2, 4.18945312500000000000e-01L), +ln2pi_lou = LD80C(0xe379b414b596d687, -18, -6.77929532725821967032e-06L); +#define ln2pi_hi (ln2pi_hiu.e) +#define ln2pi_lo (ln2pi_lou.e) + +static const union IEEEl2bits + Pa0u = LD80C(0xaaaaaaaaaaaaaaaa, -4, 8.33333333333333333288e-02L), + Pa1u = LD80C(0xb60b60b60b5fcd59, -9, -2.77777777777776516326e-03L), + Pa2u = LD80C(0xd00d00cffbb47014, -11, 7.93650793635429639018e-04L), + Pa3u = LD80C(0x9c09c07c0805343e, -11, -5.95238087960599252215e-04L), + Pa4u = LD80C(0xdca8d31f8e6e5e8f, -11, 8.41749082509607342883e-04L), + Pa5u = LD80C(0xfb4d4289632f1638, -10, -1.91728055205541624556e-03L), + Pa6u = LD80C(0xd15a4ba04078d3f8, -8, 6.38893788027752396194e-03L), + Pa7u = LD80C(0xe877283110bcad95, -6, -2.83771309846297590312e-02L), + Pa8u = LD80C(0x8da97eed13717af8, -3, 1.38341887683837576925e-01L), + Pa9u = LD80C(0xf093b1c1584e30ce, -2, -4.69876818515470146031e-01L); +#define Pa0 (Pa0u.e) +#define Pa1 (Pa1u.e) +#define Pa2 (Pa2u.e) +#define Pa3 (Pa3u.e) +#define Pa4 (Pa4u.e) +#define Pa5 (Pa5u.e) +#define Pa6 (Pa6u.e) +#define Pa7 (Pa7u.e) +#define Pa8 (Pa8u.e) +#define Pa9 (Pa9u.e) + +static struct Double +large_gam(long double x) +{ + long double p, z, thi, tlo, xhi, xlo; + long double logx; + struct Double u; + + z = 1 / (x * x); + p = Pa0 + z * (Pa1 + z * (Pa2 + z * (Pa3 + z * (Pa4 + z * (Pa5 + + z * (Pa6 + z * (Pa7 + z * (Pa8 + z * Pa9)))))))); + p = p / x; + + u = __log__D(x); + u.a -= 1; + + /* Split (x - 0.5) in high and low parts. */ + x -= 0.5L; + xhi = (float)x; + xlo = x - xhi; + + /* Compute t = (x-.5)*(log(x)-1) in extra precision. */ + thi = xhi * u.a; + tlo = xlo * u.a + x * u.b; + + /* Compute thi + tlo + ln2pi_hi + ln2pi_lo + p. */ + tlo += ln2pi_lo; + tlo += p; + u.a = ln2pi_hi + tlo; + u.a += thi; + u.b = thi - u.a; + u.b += ln2pi_hi; + u.b += tlo; + return (u); +} +/* + * Rational approximation, A0 + x * x * P(x) / Q(x), on the interval + * [1.066.., 2.066..] accurate to 4.25e-19. + * + * Returns r.a + r.b = a0 + (z + c)^2 * p / q, with r.a truncated. + */ +static const union IEEEl2bits + a0_hiu = LD80C(0xe2b6e4153a57746c, -1, 8.85603194410888700265e-01L), + a0_lou = LD80C(0x851566d40f32c76d, -66, 1.40907742727049706207e-20L); +#define a0_hi (a0_hiu.e) +#define a0_lo (a0_lou.e) + +static const union IEEEl2bits +P0u = LD80C(0xdb629fb9bbdc1c1d, -2, 4.28486815855585429733e-01L), +P1u = LD80C(0xe6f4f9f5641aa6be, -3, 2.25543885805587730552e-01L), +P2u = LD80C(0xead1bd99fdaf7cc1, -6, 2.86644652514293482381e-02L), +P3u = LD80C(0x9ccc8b25838ab1e0, -8, 4.78512567772456362048e-03L), +P4u = LD80C(0x8f0c4383ef9ce72a, -9, 2.18273781132301146458e-03L), +P5u = LD80C(0xe732ab2c0a2778da, -13, 2.20487522485636008928e-04L), +P6u = LD80C(0xce70b27ca822b297, -16, 2.46095923774929264284e-05L), +P7u = LD80C(0xa309e2e16fb63663, -19, 2.42946473022376182921e-06L), +P8u = LD80C(0xaf9c110efb2c633d, -23, 1.63549217667765869987e-07L), +Q1u = LD80C(0xd4d7422719f48f15, -1, 8.31409582658993993626e-01L), +Q2u = LD80C(0xe13138ea404f1268, -5, -5.49785826915643198508e-02L), +Q3u = LD80C(0xd1c6cc91989352c0, -4, -1.02429960435139887683e-01L), +Q4u = LD80C(0xa7e9435a84445579, -7, 1.02484853505908820524e-02L), +Q5u = LD80C(0x83c7c34db89b7bda, -8, 4.02161632832052872697e-03L), +Q6u = LD80C(0xbed06bf6e1c14e5b, -11, -7.27898206351223022157e-04L), +Q7u = LD80C(0xef05bf841d4504c0, -18, 7.12342421869453515194e-06L), +Q8u = LD80C(0xf348d08a1ff53cb1, -19, 3.62522053809474067060e-06L); +#define P0 (P0u.e) +#define P1 (P1u.e) +#define P2 (P2u.e) +#define P3 (P3u.e) +#define P4 (P4u.e) +#define P5 (P5u.e) +#define P6 (P6u.e) +#define P7 (P7u.e) +#define P8 (P8u.e) +#define Q1 (Q1u.e) +#define Q2 (Q2u.e) +#define Q3 (Q3u.e) +#define Q4 (Q4u.e) +#define Q5 (Q5u.e) +#define Q6 (Q6u.e) +#define Q7 (Q7u.e) +#define Q8 (Q8u.e) + +static struct Double +ratfun_gam(long double z, long double c) +{ + long double p, q, thi, tlo; + struct Double r; + + q = 1 + z * (Q1 + z * (Q2 + z * (Q3 + z * (Q4 + z * (Q5 + + z * (Q6 + z * (Q7 + z * Q8))))))); + p = P0 + z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + + z * (P6 + z * (P7 + z * P8))))))); + p = p / q; + + /* Split z into high and low parts. */ + thi = (float)z; + tlo = (z - thi) + c; + tlo *= (thi + z); + + /* Split (z+c)^2 into high and low parts. */ + thi *= thi; + q = thi; + thi = (float)thi; + tlo += (q - thi); + + /* Split p/q into high and low parts. */ + r.a = (float)p; + r.b = p - r.a; + + tlo = tlo * p + thi * r.b + a0_lo; + thi *= r.a; /* t = (z+c)^2*(P/Q) */ + r.a = (float)(thi + a0_hi); + r.b = ((a0_hi - r.a) + thi) + tlo; + return (r); /* r = a0 + t */ +} +/* + * x < 6 + * + * Use argument reduction G(x+1) = xG(x) to reach the range [1.066124, + * 2.066124]. Use a rational approximation centered at the minimum + * (x0+1) to ensure monotonicity. + * + * Good to < 1 ulp. (provably .90 ulp; .87 ulp on 1,000,000 runs.) + * It also has correct monotonicity. + */ +static const union IEEEl2bits + xm1u = LD80C(0xec5b0c6ad7c7edc3, -2, 4.61632144968362341254e-01L); +#define x0 (xm1u.e) + +static const double + left = -0.3955078125; /* left boundary for rat. approx */ + +static long double +small_gam(long double x) +{ + long double t, y, ym1; + struct Double yy, r; + + y = x - 1; + + if (y <= 1 + (left + x0)) { + yy = ratfun_gam(y - x0, 0); + return (yy.a + yy.b); + } + + r.a = (float)y; + yy.a = r.a - 1; + y = y - 1 ; + r.b = yy.b = y - yy.a; + + /* Argument reduction: G(x+1) = x*G(x) */ + for (ym1 = y - 1; ym1 > left + x0; y = ym1--, yy.a--) { + t = r.a * yy.a; + r.b = r.a * yy.b + y * r.b; + r.a = (float)t; + r.b += (t - r.a); + } + + /* Return r*tgamma(y). */ + yy = ratfun_gam(y - x0, 0); + y = r.b * (yy.a + yy.b) + r.a * yy.b; + y += yy.a * r.a; + return (y); +} +/* + * Good on (0, 1+x0+left]. Accurate to 1 ulp. + */ +static long double +smaller_gam(long double x) +{ + long double d, rhi, rlo, t, xhi, xlo; + struct Double r; + + if (x < x0 + left) { + t = (float)x; + d = (t + x) * (x - t); + t *= t; + xhi = (float)(t + x); + xlo = x - xhi; + xlo += t; + xlo += d; + t = 1 - x0; + t += x; + d = 1 - x0; + d -= t; + d += x; + x = xhi + xlo; + } else { + xhi = (float)x; + xlo = x - xhi; + t = x - x0; + d = - x0 - t; + d += x; + } + + r = ratfun_gam(t, d); + d = (float)(r.a / x); + r.a -= d * xhi; + r.a -= d * xlo; + r.a += r.b; + + return (d + r.a / x); +} +/* + * x < 0 + * + * Use reflection formula, G(x) = pi/(sin(pi*x)*x*G(x)). + * At negative integers, return NaN and raise invalid. + */ +static const union IEEEl2bits +piu = LD80C(0xc90fdaa22168c235, 1, 3.14159265358979323851e+00L); +#define pi (piu.e) + +static long double +neg_gam(long double x) +{ + int sgn = 1; + struct Double lg, lsine; + long double y, z; + + y = ceill(x); + if (y == x) /* Negative integer. */ + return ((x - x) / zero); + + z = y - x; + if (z > 0.5) + z = 1 - z; + + y = y / 2; + if (y == ceill(y)) + sgn = -1; + + if (z < 0.25) + z = sinpil(z); + else + z = cospil(0.5 - z); + + /* Special case: G(1-x) = Inf; G(x) may be nonzero. */ + if (x < -1753) { + + if (x < -1760) + return (sgn * tiny * tiny); + y = expl(lgammal(x) / 2); + y *= y; + return (sgn < 0 ? -y : y); + } + + + y = 1 - x; + if (1 - y == x) + y = tgammal(y); + else /* 1-x is inexact */ + y = - x * tgammal(-x); + + if (sgn < 0) y = -y; + return (pi / (y * z)); +} +/* + * xmax comes from lgamma(xmax) - emax * log(2) = 0. + * static const float xmax = 35.040095f + * static const double xmax = 171.624376956302725; + * ld80: LD80C(0xdb718c066b352e20, 10, 1.75554834290446291689e+03L), + * ld128: 1.75554834290446291700388921607020320e+03L, + * + * iota is a sloppy threshold to isolate x = 0. + */ +static const double xmax = 1755.54834290446291689; +static const double iota = 0x1p-116; + +long double +tgammal(long double x) +{ + struct Double u; + + ENTERI(); + + if (x >= 6) { + if (x > xmax) + RETURNI(x / zero); + u = large_gam(x); + RETURNI(__exp__D(u.a, u.b)); + } + + if (x >= 1 + left + x0) + RETURNI(small_gam(x)); + + if (x > iota) + RETURNI(smaller_gam(x)); + + if (x > -iota) { + if (x != 0) + u.a = 1 - tiny; /* raise inexact */ + RETURNI(1 / x); + } + + if (!isfinite(x)) + RETURNI(x - x); /* x is NaN or -Inf */ + + RETURNI(neg_gam(x)); +} diff --git a/newlib/libm/ld80/e_lgammal_r.c b/newlib/libm/ld80/e_lgammal_r.c new file mode 100644 index 0000000000..7d3697bb99 --- /dev/null +++ b/newlib/libm/ld80/e_lgammal_r.c @@ -0,0 +1,358 @@ +/* @(#)e_lgamma_r.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See e_lgamma_r.c for complete comments. + * + * Converted to long double by Steven G. Kargl. + */ + +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +static const volatile double vzero = 0; + +static const double +zero= 0, +half= 0.5, +one = 1; + +static const union IEEEl2bits +piu = LD80C(0xc90fdaa22168c235, 1, 3.14159265358979323851e+00L); +#define pi (piu.e) +/* + * Domain y in [0x1p-70, 0.27], range ~[-4.5264e-22, 4.5264e-22]: + * |(lgamma(2 - y) + y / 2) / y - a(y)| < 2**-70.9 + */ +static const union IEEEl2bits +a0u = LD80C(0x9e233f1bed863d26, -4, 7.72156649015328606028e-02L), +a1u = LD80C(0xa51a6625307d3249, -2, 3.22467033424113218889e-01L), +a2u = LD80C(0x89f000d2abafda8c, -4, 6.73523010531979398946e-02L), +a3u = LD80C(0xa8991563eca75f26, -6, 2.05808084277991211934e-02L), +a4u = LD80C(0xf2027e10634ce6b6, -8, 7.38555102796070454026e-03L), +a5u = LD80C(0xbd6eb76dd22187f4, -9, 2.89051035162703932972e-03L), +a6u = LD80C(0x9c562ab05e0458ed, -10, 1.19275351624639999297e-03L), +a7u = LD80C(0x859baed93ee48e46, -11, 5.09674593842117925320e-04L), +a8u = LD80C(0xe9f28a4432949af2, -13, 2.23109648015769155122e-04L), +a9u = LD80C(0xd12ad0d9b93c6bb0, -14, 9.97387167479808509830e-05L), +a10u= LD80C(0xb7522643c78a219b, -15, 4.37071076331030136818e-05L), +a11u= LD80C(0xca024dcdece2cb79, -16, 2.40813493372040143061e-05L), +a12u= LD80C(0xbb90fb6968ebdbf9, -19, 2.79495621083634031729e-06L), +a13u= LD80C(0xba1c9ffeeae07b37, -17, 1.10931287015513924136e-05L); +#define a0 (a0u.e) +#define a1 (a1u.e) +#define a2 (a2u.e) +#define a3 (a3u.e) +#define a4 (a4u.e) +#define a5 (a5u.e) +#define a6 (a6u.e) +#define a7 (a7u.e) +#define a8 (a8u.e) +#define a9 (a9u.e) +#define a10 (a10u.e) +#define a11 (a11u.e) +#define a12 (a12u.e) +#define a13 (a13u.e) +/* + * Domain x in [tc-0.24, tc+0.28], range ~[-6.1205e-22, 6.1205e-22]: + * |(lgamma(x) - tf) - t(x - tc)| < 2**-70.5 + */ +static const union IEEEl2bits +tcu = LD80C(0xbb16c31ab5f1fb71, 0, 1.46163214496836234128e+00L), +tfu = LD80C(0xf8cdcde61c520e0f, -4, -1.21486290535849608093e-01L), +ttu = LD80C(0xd46ee54b27d4de99, -69, -2.81152980996018785880e-21L), +t0u = LD80C(0x80b9406556a62a6b, -68, 3.40728634996055147231e-21L), +t1u = LD80C(0xc7e9c6f6df3f8c39, -67, -1.05833162742737073665e-20L), +t2u = LD80C(0xf7b95e4771c55d51, -2, 4.83836122723810583532e-01L), +t3u = LD80C(0x97213c6e35e119ff, -3, -1.47587722994530691476e-01L), +t4u = LD80C(0x845a14a6a81dc94b, -4, 6.46249402389135358063e-02L), +t5u = LD80C(0x864d46fa89997796, -5, -3.27885410884846056084e-02L), +t6u = LD80C(0x93373cbd00297438, -6, 1.79706751150707171293e-02L), +t7u = LD80C(0xa8fcfca7eddc8d1d, -7, -1.03142230361450732547e-02L), +t8u = LD80C(0xc7e7015ff4bc45af, -8, 6.10053603296546099193e-03L), +t9u = LD80C(0xf178d2247adc5093, -9, -3.68456964904901200152e-03L), +t10u = LD80C(0x94188d58f12e5e9f, -9, 2.25976420273774583089e-03L), +t11u = LD80C(0xb7cbaef14e1406f1, -10, -1.40224943666225639823e-03L), +t12u = LD80C(0xe63a671e6704ea4d, -11, 8.78250640744776944887e-04L), +t13u = LD80C(0x914b6c9cae61783e, -11, -5.54255012657716808811e-04L), +t14u = LD80C(0xb858f5bdb79276fe, -12, 3.51614951536825927370e-04L), +t15u = LD80C(0xea73e744c34b9591, -13, -2.23591563824520112236e-04L), +t16u = LD80C(0x99aeabb0d67ba835, -13, 1.46562869351659194136e-04L), +t17u = LD80C(0xd7c6938325db2024, -14, -1.02889866046435680588e-04L), +t18u = LD80C(0xe24cb1e3b0474775, -15, 5.39540265505221957652e-05L); +#define tc (tcu.e) +#define tf (tfu.e) +#define tt (ttu.e) +#define t0 (t0u.e) +#define t1 (t1u.e) +#define t2 (t2u.e) +#define t3 (t3u.e) +#define t4 (t4u.e) +#define t5 (t5u.e) +#define t6 (t6u.e) +#define t7 (t7u.e) +#define t8 (t8u.e) +#define t9 (t9u.e) +#define t10 (t10u.e) +#define t11 (t11u.e) +#define t12 (t12u.e) +#define t13 (t13u.e) +#define t14 (t14u.e) +#define t15 (t15u.e) +#define t16 (t16u.e) +#define t17 (t17u.e) +#define t18 (t18u.e) +/* + * Domain y in [-0.1, 0.232], range ~[-8.1938e-22, 8.3815e-22]: + * |(lgamma(1 + y) + 0.5 * y) / y - u(y) / v(y)| < 2**-71.2 + */ +static const union IEEEl2bits +u0u = LD80C(0x9e233f1bed863d27, -4, -7.72156649015328606095e-02L), +u1u = LD80C(0x98280ee45e4ddd3d, -1, 5.94361239198682739769e-01L), +u2u = LD80C(0xe330c8ead4130733, 0, 1.77492629495841234275e+00L), +u3u = LD80C(0xd4a213f1a002ec52, 0, 1.66119622514818078064e+00L), +u4u = LD80C(0xa5a9ca6f5bc62163, -1, 6.47122051417476492989e-01L), +u5u = LD80C(0xc980e49cd5b019e6, -4, 9.83903751718671509455e-02L), +u6u = LD80C(0xff636a8bdce7025b, -9, 3.89691687802305743450e-03L), +v1u = LD80C(0xbd109c533a19fbf5, 1, 2.95413883330948556544e+00L), +v2u = LD80C(0xd295cbf96f31f099, 1, 3.29039286955665403176e+00L), +v3u = LD80C(0xdab8bcfee40496cb, 0, 1.70876276441416471410e+00L), +v4u = LD80C(0xd2f2dc3638567e9f, -2, 4.12009126299534668571e-01L), +v5u = LD80C(0xa07d9b0851070f41, -5, 3.91822868305682491442e-02L), +v6u = LD80C(0xe3cd8318f7adb2c4, -11, 8.68998648222144351114e-04L); +#define u0 (u0u.e) +#define u1 (u1u.e) +#define u2 (u2u.e) +#define u3 (u3u.e) +#define u4 (u4u.e) +#define u5 (u5u.e) +#define u6 (u6u.e) +#define v1 (v1u.e) +#define v2 (v2u.e) +#define v3 (v3u.e) +#define v4 (v4u.e) +#define v5 (v5u.e) +#define v6 (v6u.e) +/* + * Domain x in (2, 3], range ~[-3.3648e-22, 3.4416e-22]: + * |(lgamma(y+2) - 0.5 * y) / y - s(y)/r(y)| < 2**-72.3 + * with y = x - 2. + */ +static const union IEEEl2bits +s0u = LD80C(0x9e233f1bed863d27, -4, -7.72156649015328606095e-02L), +s1u = LD80C(0xd3ff0dcc7fa91f94, -3, 2.07027640921219389860e-01L), +s2u = LD80C(0xb2bb62782478ef31, -2, 3.49085881391362090549e-01L), +s3u = LD80C(0xb49f7438c4611a74, -3, 1.76389518704213357954e-01L), +s4u = LD80C(0x9a957008fa27ecf9, -5, 3.77401710862930008071e-02L), +s5u = LD80C(0xda9b389a6ca7a7ac, -9, 3.33566791452943399399e-03L), +s6u = LD80C(0xbc7a2263faf59c14, -14, 8.98728786745638844395e-05L), +r1u = LD80C(0xbf5cff5b11477d4d, 0, 1.49502555796294337722e+00L), +r2u = LD80C(0xd9aec89de08e3da6, -1, 8.50323236984473285866e-01L), +r3u = LD80C(0xeab7ae5057c443f9, -3, 2.29216312078225806131e-01L), +r4u = LD80C(0xf29707d9bd2b1e37, -6, 2.96130326586640089145e-02L), +r5u = LD80C(0xd376c2f09736c5a3, -10, 1.61334161411590662495e-03L), +r6u = LD80C(0xc985983d0cd34e3d, -16, 2.40232770710953450636e-05L), +r7u = LD80C(0xe5c7a4f7fc2ef13d, -25, -5.34997929289167573510e-08L); +#define s0 (s0u.e) +#define s1 (s1u.e) +#define s2 (s2u.e) +#define s3 (s3u.e) +#define s4 (s4u.e) +#define s5 (s5u.e) +#define s6 (s6u.e) +#define r1 (r1u.e) +#define r2 (r2u.e) +#define r3 (r3u.e) +#define r4 (r4u.e) +#define r5 (r5u.e) +#define r6 (r6u.e) +#define r7 (r7u.e) +/* + * Domain z in [8, 0x1p70], range ~[-3.0235e-22, 3.0563e-22]: + * |lgamma(x) - (x - 0.5) * (log(x) - 1) - w(1/x)| < 2**-71.7 + */ +static const union IEEEl2bits +w0u = LD80C(0xd67f1c864beb4a69, -2, 4.18938533204672741776e-01L), +w1u = LD80C(0xaaaaaaaaaaaaaaa1, -4, 8.33333333333333332678e-02L), +w2u = LD80C(0xb60b60b60b5491c9, -9, -2.77777777777760927870e-03L), +w3u = LD80C(0xd00d00cf58aede4c, -11, 7.93650793490637233668e-04L), +w4u = LD80C(0x9c09bf626783d4a5, -11, -5.95238023926039051268e-04L), +w5u = LD80C(0xdca7cadc5baa517b, -11, 8.41733700408000822962e-04L), +w6u = LD80C(0xfb060e361e1ffd07, -10, -1.91515849570245136604e-03L), +w7u = LD80C(0xcbd5101bb58d1f2b, -8, 6.22046743903262649294e-03L), +w8u = LD80C(0xad27a668d32c821b, -6, -2.11370706734662081843e-02L); +#define w0 (w0u.e) +#define w1 (w1u.e) +#define w2 (w2u.e) +#define w3 (w3u.e) +#define w4 (w4u.e) +#define w5 (w5u.e) +#define w6 (w6u.e) +#define w7 (w7u.e) +#define w8 (w8u.e) + +static long double +sin_pil(long double x) +{ + volatile long double vz; + long double y,z; + uint64_t n; + uint16_t hx; + + y = -x; + + vz = y+0x1p63; + z = vz-0x1p63; + if (z == y) + return zero; + + vz = y+0x1p61; + EXTRACT_LDBL80_WORDS(hx,n,vz); + z = vz-0x1p61; + if (z > y) { + z -= 0.25; /* adjust to round down */ + n--; + } + n &= 7; /* octant of y mod 2 */ + y = y - z + n * 0.25; /* y mod 2 */ + + switch (n) { + case 0: y = __kernel_sinl(pi*y,zero,0); break; + case 1: + case 2: y = __kernel_cosl(pi*(0.5-y),zero); break; + case 3: + case 4: y = __kernel_sinl(pi*(one-y),zero,0); break; + case 5: + case 6: y = -__kernel_cosl(pi*(y-1.5),zero); break; + default: y = __kernel_sinl(pi*(y-2.0),zero,0); break; + } + return -y; +} + +long double +lgammal_r(long double x, int *signgamp) +{ + long double nadj,p,p1,p2,q,r,t,w,y,z; + uint64_t lx; + int i; + uint16_t hx,ix; + + EXTRACT_LDBL80_WORDS(hx,lx,x); + + /* purge +-Inf and NaNs */ + *signgamp = 1; + ix = hx&0x7fff; + if(ix==0x7fff) return x*x; + + ENTERI(); + + /* purge +-0 and tiny arguments */ + *signgamp = 1-2*(hx>>15); + if(ix<0x3fff-67) { /* |x|<2**-(p+3), return -log(|x|) */ + if((ix|lx)==0) + RETURNI(one/vzero); + RETURNI(-logl(fabsl(x))); + } + + /* purge negative integers and start evaluation for other x < 0 */ + if(hx&0x8000) { + *signgamp = 1; + if(ix>=0x3fff+63) /* |x|>=2**(p-1), must be -integer */ + RETURNI(one/vzero); + t = sin_pil(x); + if(t==zero) RETURNI(one/vzero); /* -integer */ + nadj = logl(pi/fabsl(t*x)); + if(t=7.3159980773925781e-01) {y = 1-x; i= 0;} + else if(x>=2.3163998126983643e-01) {y= x-(tc-1); i=1;} + else {y = x; i=2;} + } else { + r = 0; + if(x>=1.7316312789916992e+00) {y=2-x;i=0;} + else if(x>=1.2316322326660156e+00) {y=x-tc;i=1;} + else {y=x-1;i=2;} + } + switch(i) { + case 0: + z = y*y; + p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*(a10+z*a12))))); + p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*(a11+z*a13)))))); + p = y*p1+p2; + r += p-y/2; break; + case 1: + p = t0+y*t1+tt+y*y*(t2+y*(t3+y*(t4+y*(t5+y*(t6+y*(t7+y*(t8+ + y*(t9+y*(t10+y*(t11+y*(t12+y*(t13+y*(t14+y*(t15+y*(t16+ + y*(t17+y*t18)))))))))))))))); + r += tf + p; break; + case 2: + p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*(u5+y*u6)))))); + p2 = 1+y*(v1+y*(v2+y*(v3+y*(v4+y*(v5+y*v6))))); + r += p1/p2-y/2; + } + } + /* x < 8.0 */ + else if(ix<0x4002) { + i = x; + y = x-i; + p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6)))))); + q = 1+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*(r6+y*r7)))))); + r = y/2+p/q; + z = 1; /* lgamma(1+s) = log(s) + lgamma(s) */ + switch(i) { + case 7: z *= (y+6); /* FALLTHRU */ + case 6: z *= (y+5); /* FALLTHRU */ + case 5: z *= (y+4); /* FALLTHRU */ + case 4: z *= (y+3); /* FALLTHRU */ + case 3: z *= (y+2); /* FALLTHRU */ + r += logl(z); break; + } + /* 8.0 <= x < 2**(p+3) */ + } else if (ix<0x3fff+67) { + t = logl(x); + z = one/x; + y = z*z; + w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*(w6+y*(w7+y*w8))))))); + r = (x-half)*(t-one)+w; + /* 2**(p+3) <= x <= inf */ + } else + r = x*(logl(x)-1); + if(hx&0x8000) r = nadj - r; + RETURNI(r); +} diff --git a/newlib/libm/ld80/e_powl.c b/newlib/libm/ld80/e_powl.c new file mode 100644 index 0000000000..ea25354c2a --- /dev/null +++ b/newlib/libm/ld80/e_powl.c @@ -0,0 +1,662 @@ +/*- + * Copyright (c) 2008 Stephen L. Moshier + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include "math_private.h" + +/* + * Polynomial evaluator: + * P[0] x^n + P[1] x^(n-1) + ... + P[n] + */ +static inline long double +__polevll(long double x, long double *PP, int n) +{ + long double y; + long double *P; + + P = PP; + y = *P++; + do { + y = y * x + *P++; + } while (--n); + + return (y); +} + +/* + * Polynomial evaluator: + * x^n + P[0] x^(n-1) + P[1] x^(n-2) + ... + P[n] + */ +static inline long double +__p1evll(long double x, long double *PP, int n) +{ + long double y; + long double *P; + + P = PP; + n -= 1; + y = x + *P++; + do { + y = y * x + *P++; + } while (--n); + + return (y); +} + +/* powl.c + * + * Power function, long double precision + * + * + * + * SYNOPSIS: + * + * long double x, y, z, powl(); + * + * z = powl( x, y ); + * + * + * + * DESCRIPTION: + * + * Computes x raised to the yth power. Analytically, + * + * x**y = exp( y log(x) ). + * + * Following Cody and Waite, this program uses a lookup table + * of 2**-i/32 and pseudo extended precision arithmetic to + * obtain several extra bits of accuracy in both the logarithm + * and the exponential. + * + * + * + * ACCURACY: + * + * The relative error of pow(x,y) can be estimated + * by y dl ln(2), where dl is the absolute error of + * the internally computed base 2 logarithm. At the ends + * of the approximation interval the logarithm equal 1/32 + * and its relative error is about 1 lsb = 1.1e-19. Hence + * the predicted relative error in the result is 2.3e-21 y . + * + * Relative error: + * arithmetic domain # trials peak rms + * + * IEEE +-1000 40000 2.8e-18 3.7e-19 + * .001 < x < 1000, with log(x) uniformly distributed. + * -1000 < y < 1000, y uniformly distributed. + * + * IEEE 0,8700 60000 6.5e-18 1.0e-18 + * 0.99 < x < 1.01, 0 < y < 8700, uniformly distributed. + * + * + * ERROR MESSAGES: + * + * message condition value returned + * pow overflow x**y > MAXNUM INFINITY + * pow underflow x**y < 1/MAXNUM 0.0 + * pow domain x<0 and y noninteger 0.0 + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "math_private.h" + +/* Table size */ +#define NXT 32 +/* log2(Table size) */ +#define LNXT 5 + +/* log(1+x) = x - .5x^2 + x^3 * P(z)/Q(z) + * on the domain 2^(-1/32) - 1 <= x <= 2^(1/32) - 1 + */ +static long double P[] = { + 8.3319510773868690346226E-4L, + 4.9000050881978028599627E-1L, + 1.7500123722550302671919E0L, + 1.4000100839971580279335E0L, +}; +static long double Q[] = { +/* 1.0000000000000000000000E0L,*/ + 5.2500282295834889175431E0L, + 8.4000598057587009834666E0L, + 4.2000302519914740834728E0L, +}; +/* A[i] = 2^(-i/32), rounded to IEEE long double precision. + * If i is even, A[i] + B[i/2] gives additional accuracy. + */ +static long double A[33] = { + 1.0000000000000000000000E0L, + 9.7857206208770013448287E-1L, + 9.5760328069857364691013E-1L, + 9.3708381705514995065011E-1L, + 9.1700404320467123175367E-1L, + 8.9735453750155359320742E-1L, + 8.7812608018664974155474E-1L, + 8.5930964906123895780165E-1L, + 8.4089641525371454301892E-1L, + 8.2287773907698242225554E-1L, + 8.0524516597462715409607E-1L, + 7.8799042255394324325455E-1L, + 7.7110541270397041179298E-1L, + 7.5458221379671136985669E-1L, + 7.3841307296974965571198E-1L, + 7.2259040348852331001267E-1L, + 7.0710678118654752438189E-1L, + 6.9195494098191597746178E-1L, + 6.7712777346844636413344E-1L, + 6.6261832157987064729696E-1L, + 6.4841977732550483296079E-1L, + 6.3452547859586661129850E-1L, + 6.2092890603674202431705E-1L, + 6.0762367999023443907803E-1L, + 5.9460355750136053334378E-1L, + 5.8186242938878875689693E-1L, + 5.6939431737834582684856E-1L, + 5.5719337129794626814472E-1L, + 5.4525386633262882960438E-1L, + 5.3357020033841180906486E-1L, + 5.2213689121370692017331E-1L, + 5.1094857432705833910408E-1L, + 5.0000000000000000000000E-1L, +}; +static long double B[17] = { + 0.0000000000000000000000E0L, + 2.6176170809902549338711E-20L, +-1.0126791927256478897086E-20L, + 1.3438228172316276937655E-21L, + 1.2207982955417546912101E-20L, +-6.3084814358060867200133E-21L, + 1.3164426894366316434230E-20L, +-1.8527916071632873716786E-20L, + 1.8950325588932570796551E-20L, + 1.5564775779538780478155E-20L, + 6.0859793637556860974380E-21L, +-2.0208749253662532228949E-20L, + 1.4966292219224761844552E-20L, + 3.3540909728056476875639E-21L, +-8.6987564101742849540743E-22L, +-1.2327176863327626135542E-20L, + 0.0000000000000000000000E0L, +}; + +/* 2^x = 1 + x P(x), + * on the interval -1/32 <= x <= 0 + */ +static long double R[] = { + 1.5089970579127659901157E-5L, + 1.5402715328927013076125E-4L, + 1.3333556028915671091390E-3L, + 9.6181291046036762031786E-3L, + 5.5504108664798463044015E-2L, + 2.4022650695910062854352E-1L, + 6.9314718055994530931447E-1L, +}; + +#define douba(k) A[k] +#define doubb(k) B[k] +#define MEXP (NXT*16384.0L) +/* The following if denormal numbers are supported, else -MEXP: */ +#define MNEXP (-NXT*(16384.0L+64.0L)) +/* log2(e) - 1 */ +#define LOG2EA 0.44269504088896340735992L + +#define F W +#define Fa Wa +#define Fb Wb +#define G W +#define Ga Wa +#define Gb u +#define H W +#define Ha Wb +#define Hb Wb + +static const long double MAXLOGL = 1.1356523406294143949492E4L; +static const long double MINLOGL = -1.13994985314888605586758E4L; +static const long double LOGE2L = 6.9314718055994530941723E-1L; +static volatile long double z; +static long double w, W, Wa, Wb, ya, yb, u; +static const long double huge = 0x1p10000L; +#if 0 /* XXX Prevent gcc from erroneously constant folding this. */ +static const long double twom10000 = 0x1p-10000L; +#else +static volatile long double twom10000 = 0x1p-10000L; +#endif + +static long double reducl( long double ); +static long double powil ( long double, int ); + +long double +powl(long double x, long double y) +{ +/* double F, Fa, Fb, G, Ga, Gb, H, Ha, Hb */ +int i, nflg, iyflg, yoddint; +long e; + +if( y == 0.0L ) + return( 1.0L ); + +if( x == 1.0L ) + return( 1.0L ); + +if( isnan(x) ) + return ( nan_mix(x, y) ); +if( isnan(y) ) + return ( nan_mix(x, y) ); + +if( y == 1.0L ) + return( x ); + +if( !isfinite(y) && x == -1.0L ) + return( 1.0L ); + +if( y >= LDBL_MAX ) + { + if( x > 1.0L ) + return( INFINITY ); + if( x > 0.0L && x < 1.0L ) + return( 0.0L ); + if( x < -1.0L ) + return( INFINITY ); + if( x > -1.0L && x < 0.0L ) + return( 0.0L ); + } +if( y <= -LDBL_MAX ) + { + if( x > 1.0L ) + return( 0.0L ); + if( x > 0.0L && x < 1.0L ) + return( INFINITY ); + if( x < -1.0L ) + return( 0.0L ); + if( x > -1.0L && x < 0.0L ) + return( INFINITY ); + } +if( x >= LDBL_MAX ) + { + if( y > 0.0L ) + return( INFINITY ); + return( 0.0L ); + } + +w = floorl(y); +/* Set iyflg to 1 if y is an integer. */ +iyflg = 0; +if( w == y ) + iyflg = 1; + +/* Test for odd integer y. */ +yoddint = 0; +if( iyflg ) + { + ya = fabsl(y); + ya = floorl(0.5L * ya); + yb = 0.5L * fabsl(w); + if( ya != yb ) + yoddint = 1; + } + +if( x <= -LDBL_MAX ) + { + if( y > 0.0L ) + { + if( yoddint ) + return( -INFINITY ); + return( INFINITY ); + } + if( y < 0.0L ) + { + if( yoddint ) + return( -0.0L ); + return( 0.0 ); + } + } + + +nflg = 0; /* flag = 1 if x<0 raised to integer power */ +if( x <= 0.0L ) + { + if( x == 0.0L ) + { + if( y < 0.0 ) + { + if( signbit(x) && yoddint ) + return( -INFINITY ); + return( INFINITY ); + } + if( y > 0.0 ) + { + if( signbit(x) && yoddint ) + return( -0.0L ); + return( 0.0 ); + } + if( y == 0.0L ) + return( 1.0L ); /* 0**0 */ + else + return( 0.0L ); /* 0**y */ + } + else + { + if( iyflg == 0 ) + return (x - x) / (x - x); /* (x<0)**(non-int) is NaN */ + nflg = 1; + } + } + +/* Integer power of an integer. */ + +if( iyflg ) + { + i = w; + w = floorl(x); + if( (w == x) && (fabsl(y) < 32768.0) ) + { + w = powil( x, (int) y ); + return( w ); + } + } + + +if( nflg ) + x = fabsl(x); + +/* separate significand from exponent */ +x = frexpl( x, &i ); +e = i; + +/* find significand in antilog table A[] */ +i = 1; +if( x <= douba(17) ) + i = 17; +if( x <= douba(i+8) ) + i += 8; +if( x <= douba(i+4) ) + i += 4; +if( x <= douba(i+2) ) + i += 2; +if( x >= douba(1) ) + i = -1; +i += 1; + + +/* Find (x - A[i])/A[i] + * in order to compute log(x/A[i]): + * + * log(x) = log( a x/a ) = log(a) + log(x/a) + * + * log(x/a) = log(1+v), v = x/a - 1 = (x-a)/a + */ +x -= douba(i); +x -= doubb(i/2); +x /= douba(i); + + +/* rational approximation for log(1+v): + * + * log(1+v) = v - v**2/2 + v**3 P(v) / Q(v) + */ +z = x*x; +w = x * ( z * __polevll( x, P, 3 ) / __p1evll( x, Q, 3 ) ); +w = w - ldexpl( z, -1 ); /* w - 0.5 * z */ + +/* Convert to base 2 logarithm: + * multiply by log2(e) = 1 + LOG2EA + */ +z = LOG2EA * w; +z += w; +z += LOG2EA * x; +z += x; + +/* Compute exponent term of the base 2 logarithm. */ +w = -i; +w = ldexpl( w, -LNXT ); /* divide by NXT */ +w += e; +/* Now base 2 log of x is w + z. */ + +/* Multiply base 2 log by y, in extended precision. */ + +/* separate y into large part ya + * and small part yb less than 1/NXT + */ +ya = reducl(y); +yb = y - ya; + +/* (w+z)(ya+yb) + * = w*ya + w*yb + z*y + */ +F = z * y + w * yb; +Fa = reducl(F); +Fb = F - Fa; + +G = Fa + w * ya; +Ga = reducl(G); +Gb = G - Ga; + +H = Fb + Gb; +Ha = reducl(H); +w = ldexpl( Ga+Ha, LNXT ); + +/* Test the power of 2 for overflow */ +if( w > MEXP ) + return (huge * huge); /* overflow */ + +if( w < MNEXP ) + return (twom10000 * twom10000); /* underflow */ + +e = w; +Hb = H - Ha; + +if( Hb > 0.0L ) + { + e += 1; + Hb -= (1.0L/NXT); /*0.0625L;*/ + } + +/* Now the product y * log2(x) = Hb + e/NXT. + * + * Compute base 2 exponential of Hb, + * where -0.0625 <= Hb <= 0. + */ +z = Hb * __polevll( Hb, R, 6 ); /* z = 2**Hb - 1 */ + +/* Express e/NXT as an integer plus a negative number of (1/NXT)ths. + * Find lookup table entry for the fractional power of 2. + */ +if( e < 0 ) + i = 0; +else + i = 1; +i = e/NXT + i; +e = NXT*i - e; +w = douba( e ); +z = w * z; /* 2**-e * ( 1 + (2**Hb-1) ) */ +z = z + w; +z = ldexpl( z, i ); /* multiply by integer power of 2 */ + +if( nflg ) + { +/* For negative x, + * find out if the integer exponent + * is odd or even. + */ + w = ldexpl( y, -1 ); + w = floorl(w); + w = ldexpl( w, 1 ); + if( w != y ) + z = -z; /* odd exponent */ + } + +return( z ); +} + + +/* Find a multiple of 1/NXT that is within 1/NXT of x. */ +static inline long double +reducl(long double x) +{ +long double t; + +t = ldexpl( x, LNXT ); +t = floorl( t ); +t = ldexpl( t, -LNXT ); +return(t); +} + +/* powil.c + * + * Real raised to integer power, long double precision + * + * + * + * SYNOPSIS: + * + * long double x, y, powil(); + * int n; + * + * y = powil( x, n ); + * + * + * + * DESCRIPTION: + * + * Returns argument x raised to the nth power. + * The routine efficiently decomposes n as a sum of powers of + * two. The desired power is a product of two-to-the-kth + * powers of x. Thus to compute the 32767 power of x requires + * 28 multiplications instead of 32767 multiplications. + * + * + * + * ACCURACY: + * + * + * Relative error: + * arithmetic x domain n domain # trials peak rms + * IEEE .001,1000 -1022,1023 50000 4.3e-17 7.8e-18 + * IEEE 1,2 -1022,1023 20000 3.9e-17 7.6e-18 + * IEEE .99,1.01 0,8700 10000 3.6e-16 7.2e-17 + * + * Returns MAXNUM on overflow, zero on underflow. + * + */ + +static long double +powil(long double x, int nn) +{ +long double ww, y; +long double s; +int n, e, sign, asign, lx; + +if( x == 0.0L ) + { + if( nn == 0 ) + return( 1.0L ); + else if( nn < 0 ) + return( LDBL_MAX ); + else + return( 0.0L ); + } + +if( nn == 0 ) + return( 1.0L ); + + +if( x < 0.0L ) + { + asign = -1; + x = -x; + } +else + asign = 0; + + +if( nn < 0 ) + { + sign = -1; + n = -nn; + } +else + { + sign = 1; + n = nn; + } + +/* Overflow detection */ + +/* Calculate approximate logarithm of answer */ +s = x; +s = frexpl( s, &lx ); +e = (lx - 1)*n; +if( (e == 0) || (e > 64) || (e < -64) ) + { + s = (s - 7.0710678118654752e-1L) / (s + 7.0710678118654752e-1L); + s = (2.9142135623730950L * s - 0.5L + lx) * nn * LOGE2L; + } +else + { + s = LOGE2L * e; + } + +if( s > MAXLOGL ) + return (huge * huge); /* overflow */ + +if( s < MINLOGL ) + return (twom10000 * twom10000); /* underflow */ +/* Handle tiny denormal answer, but with less accuracy + * since roundoff error in 1.0/x will be amplified. + * The precise demarcation should be the gradual underflow threshold. + */ +if( s < (-MAXLOGL+2.0L) ) + { + x = 1.0L/x; + sign = -sign; + } + +/* First bit of the power */ +if( n & 1 ) + y = x; + +else + { + y = 1.0L; + asign = 0; + } + +ww = x; +n >>= 1; +while( n ) + { + ww = ww * ww; /* arg to the 2-to-the-kth power */ + if( n & 1 ) /* if that bit is set, then include in product */ + y *= ww; + n >>= 1; + } + +if( asign ) + y = -y; /* odd power of negative number */ +if( sign < 0 ) + y = 1.0L/y; +return(y); +} diff --git a/newlib/libm/ld80/e_rem_pio2l.h b/newlib/libm/ld80/e_rem_pio2l.h new file mode 100644 index 0000000000..4d849de41e --- /dev/null +++ b/newlib/libm/ld80/e_rem_pio2l.h @@ -0,0 +1,143 @@ +/* From: @(#)e_rem_pio2.c 1.4 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + * Optimized by Bruce D. Evans. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* ld80 version of __ieee754_rem_pio2l(x,y) + * + * return the remainder of x rem pi/2 in y[0]+y[1] + * use __kernel_rem_pio2() + */ + +#include + +#include "math.h" +#include "math_private.h" +#include "../ld/fpmath.h" + +#define BIAS (LDBL_MAX_EXP - 1) + +/* + * invpio2: 64 bits of 2/pi + * pio2_1: first 39 bits of pi/2 + * pio2_1t: pi/2 - pio2_1 + * pio2_2: second 39 bits of pi/2 + * pio2_2t: pi/2 - (pio2_1+pio2_2) + * pio2_3: third 39 bits of pi/2 + * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) + */ + +static const double +zero = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ +two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ +pio2_1 = 1.57079632679597125389e+00, /* 0x3FF921FB, 0x54444000 */ +pio2_2 = -1.07463465549783099519e-12, /* -0x12e7b967674000.0p-92 */ +pio2_3 = 6.36831716351370313614e-25; /* 0x18a2e037074000.0p-133 */ + +#if defined(__amd64__) || defined(__i386__) +/* Long double constants are slow on these arches, and broken on i386. */ +static const volatile double +invpio2hi = 6.3661977236758138e-01, /* 0x145f306dc9c883.0p-53 */ +invpio2lo = -3.9356538861223811e-17, /* -0x16b00000000000.0p-107 */ +pio2_1thi = -1.0746346554971943e-12, /* -0x12e7b9676733af.0p-92 */ +pio2_1tlo = 8.8451028997905949e-29, /* 0x1c080000000000.0p-146 */ +pio2_2thi = 6.3683171635109499e-25, /* 0x18a2e03707344a.0p-133 */ +pio2_2tlo = 2.3183081793789774e-41, /* 0x10280000000000.0p-187 */ +pio2_3thi = -2.7529965190440717e-37, /* -0x176b7ed8fbbacc.0p-174 */ +pio2_3tlo = -4.2006647512740502e-54; /* -0x19c00000000000.0p-230 */ +#define invpio2 ((long double)invpio2hi + invpio2lo) +#define pio2_1t ((long double)pio2_1thi + pio2_1tlo) +#define pio2_2t ((long double)pio2_2thi + pio2_2tlo) +#define pio2_3t ((long double)pio2_3thi + pio2_3tlo) +#else +static const long double +invpio2 = 6.36619772367581343076e-01L, /* 0xa2f9836e4e44152a.0p-64 */ +pio2_1t = -1.07463465549719416346e-12L, /* -0x973dcb3b399d747f.0p-103 */ +pio2_2t = 6.36831716351095013979e-25L, /* 0xc51701b839a25205.0p-144 */ +pio2_3t = -2.75299651904407171810e-37L; /* -0xbb5bf6c7ddd660ce.0p-185 */ +#endif + +static inline __always_inline int +__ieee754_rem_pio2l(long double x, long double *y) +{ + union IEEEl2bits u,u1; + long double z,w,t,r,fn; + double tx[3],ty[2]; + int e0,ex,i,j,nx,n; + int16_t expsign; + + u.e = x; + expsign = u.xbits.expsign; + ex = expsign & 0x7fff; + if (ex < BIAS + 25 || (ex == BIAS + 25 && u.bits.manh < 0xc90fdaa2)) { + /* |x| ~< 2^25*(pi/2), medium size */ + fn = rnintl(x*invpio2); + n = irint(fn); + r = x-fn*pio2_1; + w = fn*pio2_1t; /* 1st round good to 102 bit */ + { + union IEEEl2bits u2; + int ex1; + j = ex; + y[0] = r-w; + u2.e = y[0]; + ex1 = u2.xbits.expsign & 0x7fff; + i = j-ex1; + if(i>22) { /* 2nd iteration needed, good to 141 */ + t = r; + w = fn*pio2_2; + r = t-w; + w = fn*pio2_2t-((t-r)-w); + y[0] = r-w; + u2.e = y[0]; + ex1 = u2.xbits.expsign & 0x7fff; + i = j-ex1; + if(i>61) { /* 3rd iteration need, 180 bits acc */ + t = r; /* will cover all possible cases */ + w = fn*pio2_3; + r = t-w; + w = fn*pio2_3t-((t-r)-w); + y[0] = r-w; + } + } + } + y[1] = (r-y[0])-w; + return n; + } + /* + * all other (large) arguments + */ + if(ex==0x7fff) { /* x is inf or NaN */ + y[0]=y[1]=x-x; return 0; + } + /* set z = scalbn(|x|,ilogb(x)-23) */ + u1.e = x; + e0 = ex - BIAS - 23; /* e0 = ilogb(|x|)-23; */ + u1.xbits.expsign = ex - e0; + z = u1.e; + for(i=0;i<2;i++) { + tx[i] = (double)((int32_t)(z)); + z = (z-tx[i])*two24; + } + tx[2] = z; + nx = 3; + while(tx[nx-1]==zero) nx--; /* skip zero term */ + n = __kernel_rem_pio2(tx,ty,e0,nx,2); + r = (long double)ty[0] + ty[1]; + w = ty[1] - (r - ty[0]); + if(expsign<0) {y[0] = -r; y[1] = -w; return -n;} + y[0] = r; y[1] = w; return n; +} diff --git a/newlib/libm/ld80/invtrig.c b/newlib/libm/ld80/invtrig.c new file mode 100644 index 0000000000..5c8047857d --- /dev/null +++ b/newlib/libm/ld80/invtrig.c @@ -0,0 +1,84 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "invtrig.h" + +/* + * asinl() and acosl() + */ +const long double +pS0 = 1.66666666666666666631e-01L, +pS1 = -4.16313987993683104320e-01L, +pS2 = 3.69068046323246813704e-01L, +pS3 = -1.36213932016738603108e-01L, +pS4 = 1.78324189708471965733e-02L, +pS5 = -2.19216428382605211588e-04L, +pS6 = -7.10526623669075243183e-06L, +qS1 = -2.94788392796209867269e+00L, +qS2 = 3.27309890266528636716e+00L, +qS3 = -1.68285799854822427013e+00L, +qS4 = 3.90699412641738801874e-01L, +qS5 = -3.14365703596053263322e-02L; + +/* + * atanl() + */ +const long double atanhi[] = { + 4.63647609000806116202e-01L, + 7.85398163397448309628e-01L, + 9.82793723247329067960e-01L, + 1.57079632679489661926e+00L, +}; + +const long double atanlo[] = { + 1.18469937025062860669e-20L, + -1.25413940316708300586e-20L, + 2.55232234165405176172e-20L, + -2.50827880633416601173e-20L, +}; + +const long double aT[] = { + 3.33333333333333333017e-01L, + -1.99999999999999632011e-01L, + 1.42857142857046531280e-01L, + -1.11111111100562372733e-01L, + 9.09090902935647302252e-02L, + -7.69230552476207730353e-02L, + 6.66661718042406260546e-02L, + -5.88158892835030888692e-02L, + 5.25499891539726639379e-02L, + -4.70119845393155721494e-02L, + 4.03539201366454414072e-02L, + -2.91303858419364158725e-02L, + 1.24822046299269234080e-02L, +}; + +const long double pi_lo = -5.01655761266833202345e-20L; diff --git a/newlib/libm/ld80/invtrig.h b/newlib/libm/ld80/invtrig.h new file mode 100644 index 0000000000..be06a044bd --- /dev/null +++ b/newlib/libm/ld80/invtrig.h @@ -0,0 +1,116 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include + +#include "fpmath.h" + +#define BIAS (LDBL_MAX_EXP - 1) +#define MANH_SIZE LDBL_MANH_SIZE + +/* Approximation thresholds. */ +#define ASIN_LINEAR (BIAS - 32) /* 2**-32 */ +#define ACOS_CONST (BIAS - 65) /* 2**-65 */ +#define ATAN_CONST (BIAS + 65) /* 2**65 */ +#define ATAN_LINEAR (BIAS - 32) /* 2**-32 */ + +/* 0.95 */ +#define THRESH ((0xe666666666666666ULL>>(64-(MANH_SIZE-1)))|LDBL_NBIT) + +/* Constants shared by the long double inverse trig functions. */ +#define pS0 _ItL_pS0 +#define pS1 _ItL_pS1 +#define pS2 _ItL_pS2 +#define pS3 _ItL_pS3 +#define pS4 _ItL_pS4 +#define pS5 _ItL_pS5 +#define pS6 _ItL_pS6 +#define qS1 _ItL_qS1 +#define qS2 _ItL_qS2 +#define qS3 _ItL_qS3 +#define qS4 _ItL_qS4 +#define qS5 _ItL_qS5 +#define atanhi _ItL_atanhi +#define atanlo _ItL_atanlo +#define aT _ItL_aT +#define pi_lo _ItL_pi_lo + +#define pio2_hi atanhi[3] +#define pio2_lo atanlo[3] +#define pio4_hi atanhi[1] + +#ifdef STRUCT_DECLS +typedef struct longdouble { + uint64_t mant; + uint16_t expsign; +} LONGDOUBLE; +#else +typedef long double LONGDOUBLE; +#endif + +extern const LONGDOUBLE pS0, pS1, pS2, pS3, pS4, pS5, pS6; +extern const LONGDOUBLE qS1, qS2, qS3, qS4, qS5; +extern const LONGDOUBLE atanhi[], atanlo[], aT[]; +extern const LONGDOUBLE pi_lo; + +#ifndef STRUCT_DECLS + +static inline long double +P(long double x) +{ + + return (x * (pS0 + x * (pS1 + x * (pS2 + x * (pS3 + x * \ + (pS4 + x * (pS5 + x * pS6))))))); +} + +static inline long double +Q(long double x) +{ + + return (1.0 + x * (qS1 + x * (qS2 + x * (qS3 + x * (qS4 + x * qS5))))); +} + +static inline long double +T_even(long double x) +{ + + return (aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] + x * \ + (aT[8] + x * (aT[10] + x * aT[12])))))); +} + +static inline long double +T_odd(long double x) +{ + + return (aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] + x * \ + (aT[9] + x * aT[11]))))); +} + +#endif diff --git a/newlib/libm/ld80/k_cosl.c b/newlib/libm/ld80/k_cosl.c new file mode 100644 index 0000000000..354bf1d0e7 --- /dev/null +++ b/newlib/libm/ld80/k_cosl.c @@ -0,0 +1,78 @@ +/* From: @(#)k_cos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ld80 version of k_cos.c. See ../src/k_cos.c for most comments. + */ + +#include "math_private.h" + +/* + * Domain [-0.7854, 0.7854], range ~[-2.43e-23, 2.425e-23]: + * |cos(x) - c(x)| < 2**-75.1 + * + * The coefficients of c(x) were generated by a pari-gp script using + * a Remez algorithm that searches for the best higher coefficients + * after rounding leading coefficients to a specified precision. + * + * Simpler methods like Chebyshev or basic Remez barely suffice for + * cos() in 64-bit precision, because we want the coefficient of x^2 + * to be precisely -0.5 so that multiplying by it is exact, and plain + * rounding of the coefficients of a good polynomial approximation only + * gives this up to about 64-bit precision. Plain rounding also gives + * a mediocre approximation for the coefficient of x^4, but a rounding + * error of 0.5 ulps for this coefficient would only contribute ~0.01 + * ulps to the final error, so this is unimportant. Rounding errors in + * higher coefficients are even less important. + * + * In fact, coefficients above the x^4 one only need to have 53-bit + * precision, and this is more efficient. We get this optimization + * almost for free from the complications needed to search for the best + * higher coefficients. + */ +static const double +one = 1.0; + +#if defined(__amd64__) || defined(__i386__) +/* Long double constants are slow on these arches, and broken on i386. */ +static const volatile double +C1hi = 0.041666666666666664, /* 0x15555555555555.0p-57 */ +C1lo = 2.2598839032744733e-18; /* 0x14d80000000000.0p-111 */ +#define C1 ((long double)C1hi + C1lo) +#else +static const long double +C1 = 0.0416666666666666666136L; /* 0xaaaaaaaaaaaaaa9b.0p-68 */ +#endif + +static const double +C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */ +C3 = 0.000024801587301571716, /* 0x1a01a01a018e22.0p-68 */ +C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */ +C5 = 0.0000000020876754400407278, /* 0x11eed8caaeccf1.0p-81 */ +C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */ +C7 = 4.7383039476436467e-14; /* 0x1aac9d9af5c43e.0p-97 */ + +long double +__kernel_cosl(long double x, long double y) +{ + long double hz,z,r,w; + + z = x*x; + r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*C7)))))); + hz = 0.5*z; + w = one-hz; + return w + (((one-w)-hz) + (z*r-x*y)); +} diff --git a/newlib/libm/ld80/k_cospil.h b/newlib/libm/ld80/k_cospil.h new file mode 100644 index 0000000000..6e13ef02ae --- /dev/null +++ b/newlib/libm/ld80/k_cospil.h @@ -0,0 +1,42 @@ +/*- + * Copyright (c) 2017 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * See ../src/k_cospi.c for implementation details. + */ + +static inline long double +__kernel_cospil(long double x) +{ + long double hi, lo; + + hi = (float)x; + lo = x - hi; + lo = lo * (pi_lo + pi_hi) + hi * pi_lo; + hi *= pi_hi; + _2sumF(hi, lo); + return (__kernel_cosl(hi, lo)); +} diff --git a/newlib/libm/ld80/k_expl.h b/newlib/libm/ld80/k_expl.h new file mode 100644 index 0000000000..a744d2d381 --- /dev/null +++ b/newlib/libm/ld80/k_expl.h @@ -0,0 +1,301 @@ +/* from: FreeBSD: head/lib/msun/ld80/s_expl.c 251343 2013-06-03 19:51:32Z kargl */ + +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2009-2013 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Optimized by Bruce D. Evans. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See s_expl.c for more comments about __k_expl(). + * + * See ../src/e_exp.c and ../src/k_exp.h for precision-independent comments + * about the secondary kernels. + */ + +#define INTERVALS 128 +#define LOG2_INTERVALS 7 +#define BIAS (LDBL_MAX_EXP - 1) + +static const double +/* + * ln2/INTERVALS = L1+L2 (hi+lo decomposition for multiplication). L1 must + * have at least 22 (= log2(|LDBL_MIN_EXP-extras|) + log2(INTERVALS)) lowest + * bits zero so that multiplication of it by n is exact. + */ +INV_L = 1.8466496523378731e+2, /* 0x171547652b82fe.0p-45 */ +L1 = 5.4152123484527692e-3, /* 0x162e42ff000000.0p-60 */ +L2 = -3.2819649005320973e-13, /* -0x1718432a1b0e26.0p-94 */ +/* + * Domain [-0.002708, 0.002708], range ~[-5.7136e-24, 5.7110e-24]: + * |exp(x) - p(x)| < 2**-77.2 + * (0.002708 is ln2/(2*INTERVALS) rounded up a little). + */ +A2 = 0.5, +A3 = 1.6666666666666119e-1, /* 0x15555555555490.0p-55 */ +A4 = 4.1666666666665887e-2, /* 0x155555555554e5.0p-57 */ +A5 = 8.3333354987869413e-3, /* 0x1111115b789919.0p-59 */ +A6 = 1.3888891738560272e-3; /* 0x16c16c651633ae.0p-62 */ + +/* + * 2^(i/INTERVALS) for i in [0,INTERVALS] is represented by two values where + * the first 53 bits of the significand are stored in hi and the next 53 + * bits are in lo. Tang's paper states that the trailing 6 bits of hi must + * be zero for his algorithm in both single and double precision, because + * the table is re-used in the implementation of expm1() where a floating + * point addition involving hi must be exact. Here hi is double, so + * converting it to long double gives 11 trailing zero bits. + */ +static const struct { + double hi; + double lo; +} tbl[INTERVALS] = { + { 0x1p+0, 0x0p+0 }, + /* + * XXX hi is rounded down, and the formatting is not quite normal. + * But I rather like both. The 0x1.*p format is good for 4N+1 + * mantissa bits. Rounding down makes the lo terms positive, + * so that the columnar formatting can be simpler. + */ + { 0x1.0163da9fb3335p+0, 0x1.b61299ab8cdb7p-54 }, + { 0x1.02c9a3e778060p+0, 0x1.dcdef95949ef4p-53 }, + { 0x1.04315e86e7f84p+0, 0x1.7ae71f3441b49p-53 }, + { 0x1.059b0d3158574p+0, 0x1.d73e2a475b465p-55 }, + { 0x1.0706b29ddf6ddp+0, 0x1.8db880753b0f6p-53 }, + { 0x1.0874518759bc8p+0, 0x1.186be4bb284ffp-57 }, + { 0x1.09e3ecac6f383p+0, 0x1.1487818316136p-54 }, + { 0x1.0b5586cf9890fp+0, 0x1.8a62e4adc610bp-54 }, + { 0x1.0cc922b7247f7p+0, 0x1.01edc16e24f71p-54 }, + { 0x1.0e3ec32d3d1a2p+0, 0x1.03a1727c57b53p-59 }, + { 0x1.0fb66affed31ap+0, 0x1.e464123bb1428p-53 }, + { 0x1.11301d0125b50p+0, 0x1.49d77e35db263p-53 }, + { 0x1.12abdc06c31cbp+0, 0x1.f72575a649ad2p-53 }, + { 0x1.1429aaea92ddfp+0, 0x1.66820328764b1p-53 }, + { 0x1.15a98c8a58e51p+0, 0x1.2406ab9eeab0ap-55 }, + { 0x1.172b83c7d517ap+0, 0x1.b9bef918a1d63p-53 }, + { 0x1.18af9388c8de9p+0, 0x1.777ee1734784ap-53 }, + { 0x1.1a35beb6fcb75p+0, 0x1.e5b4c7b4968e4p-55 }, + { 0x1.1bbe084045cd3p+0, 0x1.3563ce56884fcp-53 }, + { 0x1.1d4873168b9aap+0, 0x1.e016e00a2643cp-54 }, + { 0x1.1ed5022fcd91cp+0, 0x1.71033fec2243ap-53 }, + { 0x1.2063b88628cd6p+0, 0x1.dc775814a8495p-55 }, + { 0x1.21f49917ddc96p+0, 0x1.2a97e9494a5eep-55 }, + { 0x1.2387a6e756238p+0, 0x1.9b07eb6c70573p-54 }, + { 0x1.251ce4fb2a63fp+0, 0x1.ac155bef4f4a4p-55 }, + { 0x1.26b4565e27cddp+0, 0x1.2bd339940e9d9p-55 }, + { 0x1.284dfe1f56380p+0, 0x1.2d9e2b9e07941p-53 }, + { 0x1.29e9df51fdee1p+0, 0x1.612e8afad1255p-55 }, + { 0x1.2b87fd0dad98fp+0, 0x1.fbbd48ca71f95p-53 }, + { 0x1.2d285a6e4030bp+0, 0x1.0024754db41d5p-54 }, + { 0x1.2ecafa93e2f56p+0, 0x1.1ca0f45d52383p-56 }, + { 0x1.306fe0a31b715p+0, 0x1.6f46ad23182e4p-55 }, + { 0x1.32170fc4cd831p+0, 0x1.a9ce78e18047cp-55 }, + { 0x1.33c08b26416ffp+0, 0x1.32721843659a6p-54 }, + { 0x1.356c55f929ff0p+0, 0x1.928c468ec6e76p-53 }, + { 0x1.371a7373aa9cap+0, 0x1.4e28aa05e8a8fp-53 }, + { 0x1.38cae6d05d865p+0, 0x1.0b53961b37da2p-53 }, + { 0x1.3a7db34e59ff6p+0, 0x1.d43792533c144p-53 }, + { 0x1.3c32dc313a8e4p+0, 0x1.08003e4516b1ep-53 }, + { 0x1.3dea64c123422p+0, 0x1.ada0911f09ebcp-55 }, + { 0x1.3fa4504ac801bp+0, 0x1.417ee03548306p-53 }, + { 0x1.4160a21f72e29p+0, 0x1.f0864b71e7b6cp-53 }, + { 0x1.431f5d950a896p+0, 0x1.b8e088728219ap-53 }, + { 0x1.44e086061892dp+0, 0x1.89b7a04ef80d0p-59 }, + { 0x1.46a41ed1d0057p+0, 0x1.c944bd1648a76p-54 }, + { 0x1.486a2b5c13cd0p+0, 0x1.3c1a3b69062f0p-56 }, + { 0x1.4a32af0d7d3dep+0, 0x1.9cb62f3d1be56p-54 }, + { 0x1.4bfdad5362a27p+0, 0x1.d4397afec42e2p-56 }, + { 0x1.4dcb299fddd0dp+0, 0x1.8ecdbbc6a7833p-54 }, + { 0x1.4f9b2769d2ca6p+0, 0x1.5a67b16d3540ep-53 }, + { 0x1.516daa2cf6641p+0, 0x1.8225ea5909b04p-53 }, + { 0x1.5342b569d4f81p+0, 0x1.be1507893b0d5p-53 }, + { 0x1.551a4ca5d920ep+0, 0x1.8a5d8c4048699p-53 }, + { 0x1.56f4736b527dap+0, 0x1.9bb2c011d93adp-54 }, + { 0x1.58d12d497c7fdp+0, 0x1.295e15b9a1de8p-55 }, + { 0x1.5ab07dd485429p+0, 0x1.6324c054647adp-54 }, + { 0x1.5c9268a5946b7p+0, 0x1.c4b1b816986a2p-60 }, + { 0x1.5e76f15ad2148p+0, 0x1.ba6f93080e65ep-54 }, + { 0x1.605e1b976dc08p+0, 0x1.60edeb25490dcp-53 }, + { 0x1.6247eb03a5584p+0, 0x1.63e1f40dfa5b5p-53 }, + { 0x1.6434634ccc31fp+0, 0x1.8edf0e2989db3p-53 }, + { 0x1.6623882552224p+0, 0x1.224fb3c5371e6p-53 }, + { 0x1.68155d44ca973p+0, 0x1.038ae44f73e65p-57 }, + { 0x1.6a09e667f3bccp+0, 0x1.21165f626cdd5p-53 }, + { 0x1.6c012750bdabep+0, 0x1.daed533001e9ep-53 }, + { 0x1.6dfb23c651a2ep+0, 0x1.e441c597c3775p-53 }, + { 0x1.6ff7df9519483p+0, 0x1.9f0fc369e7c42p-53 }, + { 0x1.71f75e8ec5f73p+0, 0x1.ba46e1e5de15ap-53 }, + { 0x1.73f9a48a58173p+0, 0x1.7ab9349cd1562p-53 }, + { 0x1.75feb564267c8p+0, 0x1.7edd354674916p-53 }, + { 0x1.780694fde5d3fp+0, 0x1.866b80a02162dp-54 }, + { 0x1.7a11473eb0186p+0, 0x1.afaa2047ed9b4p-53 }, + { 0x1.7c1ed0130c132p+0, 0x1.f124cd1164dd6p-54 }, + { 0x1.7e2f336cf4e62p+0, 0x1.05d02ba15797ep-56 }, + { 0x1.80427543e1a11p+0, 0x1.6c1bccec9346bp-53 }, + { 0x1.82589994cce12p+0, 0x1.159f115f56694p-53 }, + { 0x1.8471a4623c7acp+0, 0x1.9ca5ed72f8c81p-53 }, + { 0x1.868d99b4492ecp+0, 0x1.01c83b21584a3p-53 }, + { 0x1.88ac7d98a6699p+0, 0x1.994c2f37cb53ap-54 }, + { 0x1.8ace5422aa0dbp+0, 0x1.6e9f156864b27p-54 }, + { 0x1.8cf3216b5448bp+0, 0x1.de55439a2c38bp-53 }, + { 0x1.8f1ae99157736p+0, 0x1.5cc13a2e3976cp-55 }, + { 0x1.9145b0b91ffc5p+0, 0x1.114c368d3ed6ep-53 }, + { 0x1.93737b0cdc5e4p+0, 0x1.e8a0387e4a814p-53 }, + { 0x1.95a44cbc8520ep+0, 0x1.d36906d2b41f9p-53 }, + { 0x1.97d829fde4e4fp+0, 0x1.173d241f23d18p-53 }, + { 0x1.9a0f170ca07b9p+0, 0x1.7462137188ce7p-53 }, + { 0x1.9c49182a3f090p+0, 0x1.c7c46b071f2bep-56 }, + { 0x1.9e86319e32323p+0, 0x1.824ca78e64c6ep-56 }, + { 0x1.a0c667b5de564p+0, 0x1.6535b51719567p-53 }, + { 0x1.a309bec4a2d33p+0, 0x1.6305c7ddc36abp-54 }, + { 0x1.a5503b23e255cp+0, 0x1.1684892395f0fp-53 }, + { 0x1.a799e1330b358p+0, 0x1.bcb7ecac563c7p-54 }, + { 0x1.a9e6b5579fdbfp+0, 0x1.0fac90ef7fd31p-54 }, + { 0x1.ac36bbfd3f379p+0, 0x1.81b72cd4624ccp-53 }, + { 0x1.ae89f995ad3adp+0, 0x1.7a1cd345dcc81p-54 }, + { 0x1.b0e07298db665p+0, 0x1.2108559bf8deep-53 }, + { 0x1.b33a2b84f15fap+0, 0x1.ed7fa1cf7b290p-53 }, + { 0x1.b59728de55939p+0, 0x1.1c7102222c90ep-53 }, + { 0x1.b7f76f2fb5e46p+0, 0x1.d54f610356a79p-53 }, + { 0x1.ba5b030a10649p+0, 0x1.0819678d5eb69p-53 }, + { 0x1.bcc1e904bc1d2p+0, 0x1.23dd07a2d9e84p-55 }, + { 0x1.bf2c25bd71e08p+0, 0x1.0811ae04a31c7p-53 }, + { 0x1.c199bdd85529cp+0, 0x1.11065895048ddp-55 }, + { 0x1.c40ab5fffd07ap+0, 0x1.b4537e083c60ap-54 }, + { 0x1.c67f12e57d14bp+0, 0x1.2884dff483cadp-54 }, + { 0x1.c8f6d9406e7b5p+0, 0x1.1acbc48805c44p-56 }, + { 0x1.cb720dcef9069p+0, 0x1.503cbd1e949dbp-56 }, + { 0x1.cdf0b555dc3f9p+0, 0x1.889f12b1f58a3p-53 }, + { 0x1.d072d4a07897bp+0, 0x1.1a1e45e4342b2p-53 }, + { 0x1.d2f87080d89f1p+0, 0x1.15bc247313d44p-53 }, + { 0x1.d5818dcfba487p+0, 0x1.2ed02d75b3707p-55 }, + { 0x1.d80e316c98397p+0, 0x1.7709f3a09100cp-53 }, + { 0x1.da9e603db3285p+0, 0x1.c2300696db532p-54 }, + { 0x1.dd321f301b460p+0, 0x1.2da5778f018c3p-54 }, + { 0x1.dfc97337b9b5ep+0, 0x1.72d195873da52p-53 }, + { 0x1.e264614f5a128p+0, 0x1.424ec3f42f5b5p-53 }, + { 0x1.e502ee78b3ff6p+0, 0x1.39e8980a9cc8fp-55 }, + { 0x1.e7a51fbc74c83p+0, 0x1.2d522ca0c8de2p-54 }, + { 0x1.ea4afa2a490d9p+0, 0x1.0b1ee7431ebb6p-53 }, + { 0x1.ecf482d8e67f0p+0, 0x1.1b60625f7293ap-53 }, + { 0x1.efa1bee615a27p+0, 0x1.dc7f486a4b6b0p-54 }, + { 0x1.f252b376bba97p+0, 0x1.3a1a5bf0d8e43p-54 }, + { 0x1.f50765b6e4540p+0, 0x1.9d3e12dd8a18bp-54 }, + { 0x1.f7bfdad9cbe13p+0, 0x1.1227697fce57bp-53 }, + { 0x1.fa7c1819e90d8p+0, 0x1.74853f3a5931ep-55 }, + { 0x1.fd3c22b8f71f1p+0, 0x1.2eb74966579e7p-57 } +}; + +/* + * Kernel for expl(x). x must be finite and not tiny or huge. + * "tiny" is anything that would make us underflow (|A6*x^6| < ~LDBL_MIN). + * "huge" is anything that would make fn*L1 inexact (|x| > ~2**17*ln2). + */ +static inline void +__k_expl(long double x, long double *hip, long double *lop, int *kp) +{ + long double fn, q, r, r1, r2, t, z; + int n, n2; + + /* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */ + fn = rnintl(x * INV_L); + r = x - fn * L1 - fn * L2; /* r = r1 + r2 done independently. */ + n = irint(fn); + n2 = (unsigned)n % INTERVALS; + /* Depend on the sign bit being propagated: */ + *kp = n >> LOG2_INTERVALS; + r1 = x - fn * L1; + r2 = fn * -L2; + + /* Evaluate expl(endpoint[n2] + r1 + r2) = tbl[n2] * expl(r1 + r2). */ + z = r * r; +#if 0 + q = r2 + z * (A2 + r * A3) + z * z * (A4 + r * A5) + z * z * z * A6; +#else + q = r2 + z * A2 + z * r * (A3 + r * A4 + z * (A5 + r * A6)); +#endif + t = (long double)tbl[n2].lo + tbl[n2].hi; + *hip = tbl[n2].hi; + *lop = tbl[n2].lo + t * (q + r1); +} + +static inline void +k_hexpl(long double x, long double *hip, long double *lop) +{ + float twopkm1; + int k; + + __k_expl(x, hip, lop, &k); + SET_FLOAT_WORD(twopkm1, 0x3f800000 + ((k - 1) << 23)); + *hip *= twopkm1; + *lop *= twopkm1; +} + +static inline long double +hexpl(long double x) +{ + long double hi, lo, twopkm2; + int k; + + twopkm2 = 1; + __k_expl(x, &hi, &lo, &k); + SET_LDBL_EXPSIGN(twopkm2, BIAS + k - 2); + return (lo + hi) * 2 * twopkm2; +} + +#ifdef _COMPLEX_H +/* + * See ../src/k_exp.c for details. + */ +static inline long double complex +__ldexp_cexpl(long double complex z, int expt) +{ + long double c, exp_x, hi, lo, s; + long double x, y, scale1, scale2; + int half_expt, k; + + x = creall(z); + y = cimagl(z); + __k_expl(x, &hi, &lo, &k); + + exp_x = (lo + hi) * 0x1p16382L; + expt += k - 16382; + + scale1 = 1; + half_expt = expt / 2; + SET_LDBL_EXPSIGN(scale1, BIAS + half_expt); + scale2 = 1; + SET_LDBL_EXPSIGN(scale2, BIAS + expt - half_expt); + + sincosl(y, &s, &c); + return (CMPLXL(c * exp_x * scale1 * scale2, + s * exp_x * scale1 * scale2)); +} +#endif /* _COMPLEX_H */ diff --git a/newlib/libm/ld80/k_sinl.c b/newlib/libm/ld80/k_sinl.c new file mode 100644 index 0000000000..1715490570 --- /dev/null +++ b/newlib/libm/ld80/k_sinl.c @@ -0,0 +1,62 @@ +/* From: @(#)k_sin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * ld80 version of k_sin.c. See ../src/k_sin.c for most comments. + */ + +#include "math_private.h" + +static const double +half = 0.5; + +/* + * Domain [-0.7854, 0.7854], range ~[-1.89e-22, 1.915e-22] + * |sin(x)/x - s(x)| < 2**-72.1 + * + * See ../ld80/k_cosl.c for more details about the polynomial. + */ +#if defined(__amd64__) || defined(__i386__) +/* Long double constants are slow on these arches, and broken on i386. */ +static const volatile double +S1hi = -0.16666666666666666, /* -0x15555555555555.0p-55 */ +S1lo = -9.2563760475949941e-18; /* -0x15580000000000.0p-109 */ +#define S1 ((long double)S1hi + S1lo) +#else +static const long double +S1 = -0.166666666666666666671L; /* -0xaaaaaaaaaaaaaaab.0p-66 */ +#endif + +static const double +S2 = 0.0083333333333333332, /* 0x11111111111111.0p-59 */ +S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */ +S4 = 0.0000027557319223597490, /* 0x171de3a55560f7.0p-71 */ +S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */ +S6 = 1.6059006598854211e-10, /* 0x161242b90243b5.0p-85 */ +S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */ +S8 = 2.6174587166648325e-15; /* 0x179372ea0b3f64.0p-101 */ + +long double +__kernel_sinl(long double x, long double y, int iy) +{ + long double z,r,v; + + z = x*x; + v = z*x; + r = S2+z*(S3+z*(S4+z*(S5+z*(S6+z*(S7+z*S8))))); + if(iy==0) return x+v*(S1+z*r); + else return x-((z*(half*y-v*r)-y)-v*S1); +} diff --git a/newlib/libm/ld80/k_sinpil.h b/newlib/libm/ld80/k_sinpil.h new file mode 100644 index 0000000000..00241b932e --- /dev/null +++ b/newlib/libm/ld80/k_sinpil.h @@ -0,0 +1,42 @@ +/*- + * Copyright (c) 2017 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * See ../src/k_sinpi.c for implementation details. + */ + +static inline long double +__kernel_sinpil(long double x) +{ + long double hi, lo; + + hi = (float)x; + lo = x - hi; + lo = lo * (pi_lo + pi_hi) + hi * pi_lo; + hi *= pi_hi; + _2sumF(hi, lo); + return (__kernel_sinl(hi, lo, 1)); +} diff --git a/newlib/libm/ld80/s_cospil.c b/newlib/libm/ld80/s_cospil.c new file mode 100644 index 0000000000..199479e9ea --- /dev/null +++ b/newlib/libm/ld80/s_cospil.c @@ -0,0 +1,129 @@ +/*- + * Copyright (c) 2017 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * See ../src/s_cospi.c for implementation details. + */ + +#ifdef __i386__ +#include +#endif +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +static const double +pi_hi = 3.1415926814079285e+00, /* 0x400921fb 0x58000000 */ +pi_lo =-2.7818135228334233e-08; /* 0xbe5dde97 0x3dcb3b3a */ + +#include "k_cospil.h" +#include "k_sinpil.h" + +volatile static const double vzero = 0; + +long double +cospil(long double x) +{ + long double ax, c; + uint64_t lx, m; + uint32_t j0; + uint16_t hx, ix; + + EXTRACT_LDBL80_WORDS(hx, lx, x); + ix = hx & 0x7fff; + INSERT_LDBL80_WORDS(ax, ix, lx); + + ENTERI(); + + if (ix < 0x3fff) { /* |x| < 1 */ + if (ix < 0x3ffd) { /* |x| < 0.25 */ + if (ix < 0x3fdd) { /* |x| < 0x1p-34 */ + if ((int)x == 0) + RETURNI(1); + } + RETURNI(__kernel_cospil(ax)); + } + + if (ix < 0x3ffe) /* |x| < 0.5 */ + c = __kernel_sinpil(0.5 - ax); + else if (lx < 0xc000000000000000ull) { /* |x| < 0.75 */ + if (ax == 0.5) + RETURNI(0); + c = -__kernel_sinpil(ax - 0.5); + } else + c = -__kernel_cospil(1 - ax); + RETURNI(c); + } + + if (ix < 0x403e) { /* 1 <= |x| < 0x1p63 */ + /* Determine integer part of ax. */ + j0 = ix - 0x3fff + 1; + if (j0 < 32) { + lx = (lx >> 32) << 32; + lx &= ~(((lx << 32)-1) >> j0); + } else { + m = (uint64_t)-1 >> (j0 + 1); + if (lx & m) lx &= ~m; + } + INSERT_LDBL80_WORDS(x, ix, lx); + + ax -= x; + EXTRACT_LDBL80_WORDS(ix, lx, ax); + + if (ix < 0x3ffe) { /* |x| < 0.5 */ + if (ix < 0x3ffd) /* |x| < 0.25 */ + c = ix == 0 ? 1 : __kernel_cospil(ax); + else + c = __kernel_sinpil(0.5 - ax); + + } else { + if (lx < 0xc000000000000000ull) { /* |x| < 0.75 */ + if (ax == 0.5) + RETURNI(0); + c = -__kernel_sinpil(ax - 0.5); + } else + c = -__kernel_cospil(1 - ax); + } + + if (j0 > 40) + x -= 0x1p40; + if (j0 > 30) + x -= 0x1p30; + j0 = (uint32_t)x; + + RETURNI(j0 & 1 ? -c : c); + } + + if (ix >= 0x7fff) + RETURNI(vzero / vzero); + + /* + * |x| >= 0x1p63 is always an even integer, so return 1. + */ + RETURNI(1); +} diff --git a/newlib/libm/ld80/s_erfl.c b/newlib/libm/ld80/s_erfl.c new file mode 100644 index 0000000000..1d54838f5e --- /dev/null +++ b/newlib/libm/ld80/s_erfl.c @@ -0,0 +1,337 @@ +/* @(#)s_erf.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * See s_erf.c for complete comments. + * + * Converted to long double by Steven G. Kargl. + */ +#include +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +/* XXX Prevent compilers from erroneously constant folding: */ +static const volatile long double tiny = 0x1p-10000L; + +static const double +half= 0.5, +one = 1, +two = 2; +/* + * In the domain [0, 2**-34], only the first term in the power series + * expansion of erf(x) is used. The magnitude of the first neglected + * terms is less than 2**-102. + */ +static const union IEEEl2bits +efxu = LD80C(0x8375d410a6db446c, -3, 1.28379167095512573902e-1L), +efx8u = LD80C(0x8375d410a6db446c, 0, 1.02703333676410059122e+0L), +/* + * Domain [0, 0.84375], range ~[-1.423e-22, 1.423e-22]: + * |(erf(x) - x)/x - pp(x)/qq(x)| < 2**-72.573 + */ +pp0u = LD80C(0x8375d410a6db446c, -3, 1.28379167095512573902e-1L), +pp1u = LD80C(0xa46c7d09ec3d0cec, -2, -3.21140201054840180596e-1L), +pp2u = LD80C(0x9b31e66325576f86, -5, -3.78893851760347812082e-2L), +pp3u = LD80C(0x804ac72c9a0b97dd, -7, -7.83032847030604679616e-3L), +pp4u = LD80C(0x9f42bcbc3d5a601d, -12, -3.03765663857082048459e-4L), +pp5u = LD80C(0x9ec4ad6193470693, -16, -1.89266527398167917502e-5L), +qq1u = LD80C(0xdb4b8eb713188d6b, -2, 4.28310832832310510579e-1L), +qq2u = LD80C(0xa5750835b2459bd1, -4, 8.07896272074540216658e-2L), +qq3u = LD80C(0x8b85d6bd6a90b51c, -7, 8.51579638189385354266e-3L), +qq4u = LD80C(0x87332f82cff4ff96, -11, 5.15746855583604912827e-4L), +qq5u = LD80C(0x83466cb6bf9dca00, -16, 1.56492109706256700009e-5L), +qq6u = LD80C(0xf5bf98c2f996bf63, -24, 1.14435527803073879724e-7L); +#define efx (efxu.e) +#define efx8 (efx8u.e) +#define pp0 (pp0u.e) +#define pp1 (pp1u.e) +#define pp2 (pp2u.e) +#define pp3 (pp3u.e) +#define pp4 (pp4u.e) +#define pp5 (pp5u.e) +#define qq1 (qq1u.e) +#define qq2 (qq2u.e) +#define qq3 (qq3u.e) +#define qq4 (qq4u.e) +#define qq5 (qq5u.e) +#define qq6 (qq6u.e) +static const union IEEEl2bits +erxu = LD80C(0xd7bb3d0000000000, -1, 8.42700779438018798828e-1L), +/* + * Domain [0.84375, 1.25], range ~[-8.132e-22, 8.113e-22]: + * |(erf(x) - erx) - pa(x)/qa(x)| < 2**-71.762 + */ +pa0u = LD80C(0xe8211158da02c692, -27, 1.35116960705131296711e-8L), +pa1u = LD80C(0xd488f89f36988618, -2, 4.15107507167065612570e-1L), +pa2u = LD80C(0xece74f8c63fa3942, -4, -1.15675565215949226989e-1L), +pa3u = LD80C(0xc8d31e020727c006, -4, 9.80589241379624665791e-2L), +pa4u = LD80C(0x985d5d5fafb0551f, -5, 3.71984145558422368847e-2L), +pa5u = LD80C(0xa5b6c4854d2f5452, -8, -5.05718799340957673661e-3L), +pa6u = LD80C(0x85c8d58fe3993a47, -8, 4.08277919612202243721e-3L), +pa7u = LD80C(0xddbfbc23677b35cf, -13, 2.11476292145347530794e-4L), +qa1u = LD80C(0xb8a977896f5eff3f, -1, 7.21335860303380361298e-1L), +qa2u = LD80C(0x9fcd662c3d4eac86, -1, 6.24227891731886593333e-1L), +qa3u = LD80C(0x9d0b618eac67ba07, -2, 3.06727455774491855801e-1L), +qa4u = LD80C(0x881a4293f6d6c92d, -3, 1.32912674218195890535e-1L), +qa5u = LD80C(0xbab144f07dea45bf, -5, 4.55792134233613027584e-2L), +qa6u = LD80C(0xa6c34ba438bdc900, -7, 1.01783980070527682680e-2L), +qa7u = LD80C(0x8fa866dc20717a91, -9, 2.19204436518951438183e-3L); +#define erx (erxu.e) +#define pa0 (pa0u.e) +#define pa1 (pa1u.e) +#define pa2 (pa2u.e) +#define pa3 (pa3u.e) +#define pa4 (pa4u.e) +#define pa5 (pa5u.e) +#define pa6 (pa6u.e) +#define pa7 (pa7u.e) +#define qa1 (qa1u.e) +#define qa2 (qa2u.e) +#define qa3 (qa3u.e) +#define qa4 (qa4u.e) +#define qa5 (qa5u.e) +#define qa6 (qa6u.e) +#define qa7 (qa7u.e) +static const union IEEEl2bits +/* + * Domain [1.25,2.85715], range ~[-2.334e-22,2.334e-22]: + * |log(x*erfc(x)) + x**2 + 0.5625 - ra(x)/sa(x)| < 2**-71.860 + */ +ra0u = LD80C(0xa1a091e0fb4f335a, -7, -9.86494298915814308249e-3L), +ra1u = LD80C(0xc2b0d045ae37df6b, -1, -7.60510460864878271275e-1L), +ra2u = LD80C(0xf2cec3ee7da636c5, 3, -1.51754798236892278250e+1L), +ra3u = LD80C(0x813cc205395adc7d, 7, -1.29237335516455333420e+2L), +ra4u = LD80C(0x8737c8b7b4062c2f, 9, -5.40871625829510494776e+2L), +ra5u = LD80C(0x8ffe5383c08d4943, 10, -1.15194769466026108551e+3L), +ra6u = LD80C(0x983573e64d5015a9, 10, -1.21767039790249025544e+3L), +ra7u = LD80C(0x92a794e763a6d4db, 9, -5.86618463370624636688e+2L), +ra8u = LD80C(0xd5ad1fae77c3d9a3, 6, -1.06838132335777049840e+2L), +ra9u = LD80C(0x934c1a247807bb9c, 2, -4.60303980944467334806e+0L), +sa1u = LD80C(0xd342f90012bb1189, 4, 2.64077014928547064865e+1L), +sa2u = LD80C(0x839be13d9d5da883, 8, 2.63217811300123973067e+2L), +sa3u = LD80C(0x9f8cba6d1ae1b24b, 10, 1.27639775710344617587e+3L), +sa4u = LD80C(0xcaa83f403713e33e, 11, 3.24251544209971162003e+3L), +sa5u = LD80C(0x8796aff2f3c47968, 12, 4.33883591261332837874e+3L), +sa6u = LD80C(0xb6ef97f9c753157b, 11, 2.92697460344182158454e+3L), +sa7u = LD80C(0xe02aee5f83773d1c, 9, 8.96670799139389559818e+2L), +sa8u = LD80C(0xc82b83855b88e07e, 6, 1.00084987800048510018e+2L), +sa9u = LD80C(0x92f030aefadf28ad, 1, 2.29591004455459083843e+0L); +#define ra0 (ra0u.e) +#define ra1 (ra1u.e) +#define ra2 (ra2u.e) +#define ra3 (ra3u.e) +#define ra4 (ra4u.e) +#define ra5 (ra5u.e) +#define ra6 (ra6u.e) +#define ra7 (ra7u.e) +#define ra8 (ra8u.e) +#define ra9 (ra9u.e) +#define sa1 (sa1u.e) +#define sa2 (sa2u.e) +#define sa3 (sa3u.e) +#define sa4 (sa4u.e) +#define sa5 (sa5u.e) +#define sa6 (sa6u.e) +#define sa7 (sa7u.e) +#define sa8 (sa8u.e) +#define sa9 (sa9u.e) +/* + * Domain [2.85715,7], range ~[-8.323e-22,8.390e-22]: + * |log(x*erfc(x)) + x**2 + 0.5625 - rb(x)/sb(x)| < 2**-70.326 + */ +static const union IEEEl2bits +rb0u = LD80C(0xa1a091cf43abcd26, -7, -9.86494292470284646962e-3L), +rb1u = LD80C(0xd19d2df1cbb8da0a, -1, -8.18804618389296662837e-1L), +rb2u = LD80C(0x9a4dd1383e5daf5b, 4, -1.92879967111618594779e+1L), +rb3u = LD80C(0xbff0ae9fc0751de6, 7, -1.91940164551245394969e+2L), +rb4u = LD80C(0xdde08465310b472b, 9, -8.87508080766577324539e+2L), +rb5u = LD80C(0xe796e1d38c8c70a9, 10, -1.85271506669474503781e+3L), +rb6u = LD80C(0xbaf655a76e0ab3b5, 10, -1.49569795581333675349e+3L), +rb7u = LD80C(0x95d21e3e75503c21, 8, -2.99641547972948019157e+2L), +sb1u = LD80C(0x814487ed823c8cbd, 5, 3.23169247732868256569e+1L), +sb2u = LD80C(0xbe4bfbb1301304be, 8, 3.80593618534539961773e+2L), +sb3u = LD80C(0x809c4ade46b927c7, 11, 2.05776827838541292848e+3L), +sb4u = LD80C(0xa55284359f3395a8, 12, 5.29031455540062116327e+3L), +sb5u = LD80C(0xbcfa72da9b820874, 12, 6.04730608102312640462e+3L), +sb6u = LD80C(0x9d09a35988934631, 11, 2.51260238030767176221e+3L), +sb7u = LD80C(0xd675bbe542c159fa, 7, 2.14459898308561015684e+2L); +#define rb0 (rb0u.e) +#define rb1 (rb1u.e) +#define rb2 (rb2u.e) +#define rb3 (rb3u.e) +#define rb4 (rb4u.e) +#define rb5 (rb5u.e) +#define rb6 (rb6u.e) +#define rb7 (rb7u.e) +#define sb1 (sb1u.e) +#define sb2 (sb2u.e) +#define sb3 (sb3u.e) +#define sb4 (sb4u.e) +#define sb5 (sb5u.e) +#define sb6 (sb6u.e) +#define sb7 (sb7u.e) +/* + * Domain [7,108], range ~[-4.422e-22,4.422e-22]: + * |log(x*erfc(x)) + x**2 + 0.5625 - rc(x)/sc(x)| < 2**-70.938 + */ +static const union IEEEl2bits +/* err = -4.422092275318925082e-22 -70.937689 */ +rc0u = LD80C(0xa1a091cf437a17ad, -7, -9.86494292470008707260e-3L), +rc1u = LD80C(0xbe79c5a978122b00, -1, -7.44045595049165939261e-1L), +rc2u = LD80C(0xdb26f9bbe31a2794, 3, -1.36970155085888424425e+1L), +rc3u = LD80C(0xb5f69a38f5747ac8, 6, -9.09816453742625888546e+1L), +rc4u = LD80C(0xd79676d970d0a21a, 7, -2.15587750997584074147e+2L), +rc5u = LD80C(0xfe528153c45ec97c, 6, -1.27161142938347796666e+2L), +sc1u = LD80C(0xc5e8cd46d5604a96, 4, 2.47386727842204312937e+1L), +sc2u = LD80C(0xc5f0f5a5484520eb, 7, 1.97941248254913378865e+2L), +sc3u = LD80C(0x964e3c7b34db9170, 9, 6.01222441484087787522e+2L), +sc4u = LD80C(0x99be1b89faa0596a, 9, 6.14970430845978077827e+2L), +sc5u = LD80C(0xf80dfcbf37ffc5ea, 6, 1.24027318931184605891e+2L); +#define rc0 (rc0u.e) +#define rc1 (rc1u.e) +#define rc2 (rc2u.e) +#define rc3 (rc3u.e) +#define rc4 (rc4u.e) +#define rc5 (rc5u.e) +#define sc1 (sc1u.e) +#define sc2 (sc2u.e) +#define sc3 (sc3u.e) +#define sc4 (sc4u.e) +#define sc5 (sc5u.e) + +long double +erfl(long double x) +{ + long double ax,R,S,P,Q,s,y,z,r; + uint64_t lx; + int32_t i; + uint16_t hx; + + EXTRACT_LDBL80_WORDS(hx, lx, x); + + if((hx & 0x7fff) == 0x7fff) { /* erfl(nan)=nan */ + i = (hx>>15)<<1; + return (1-i)+one/x; /* erfl(+-inf)=+-1 */ + } + + ENTERI(); + + ax = fabsl(x); + if(ax < 0.84375) { + if(ax < 0x1p-34L) { + if(ax < 0x1p-16373L) + RETURNI((8*x+efx8*x)/8); /* avoid spurious underflow */ + RETURNI(x + efx*x); + } + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*(pp4+z*pp5)))); + s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*(qq5+z*qq6))))); + y = r/s; + RETURNI(x + x*y); + } + if(ax < 1.25) { + s = ax-one; + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*(pa6+s*pa7)))))); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*(qa6+s*qa7)))))); + if(x>=0) RETURNI(erx + P/Q); else RETURNI(-erx - P/Q); + } + if(ax >= 7) { /* inf>|x|>= 7 */ + if(x>=0) RETURNI(one-tiny); else RETURNI(tiny-one); + } + s = one/(ax*ax); + if(ax < 2.85715) { /* |x| < 2.85715 */ + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*(ra7+ + s*(ra8+s*ra9)))))))); + S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+ + s*(sa8+s*sa9)))))))); + } else { /* |x| >= 2.85715 */ + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*(rb6+s*rb7)))))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*sb7)))))); + } + z=(float)ax; + r=expl(-z*z-0.5625)*expl((z-ax)*(z+ax)+R/S); + if(x>=0) RETURNI(one-r/ax); else RETURNI(r/ax-one); +} + +long double +erfcl(long double x) +{ + long double ax,R,S,P,Q,s,y,z,r; + uint64_t lx; + uint16_t hx; + + EXTRACT_LDBL80_WORDS(hx, lx, x); + + if((hx & 0x7fff) == 0x7fff) { /* erfcl(nan)=nan */ + /* erfcl(+-inf)=0,2 */ + return ((hx>>15)<<1)+one/x; + } + + ENTERI(); + + ax = fabsl(x); + if(ax < 0.84375L) { + if(ax < 0x1p-34L) + RETURNI(one-x); + z = x*x; + r = pp0+z*(pp1+z*(pp2+z*(pp3+z*(pp4+z*pp5)))); + s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*(qq5+z*qq6))))); + y = r/s; + if(ax < 0.25L) { /* x<1/4 */ + RETURNI(one-(x+x*y)); + } else { + r = x*y; + r += (x-half); + RETURNI(half - r); + } + } + if(ax < 1.25L) { + s = ax-one; + P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*(pa6+s*pa7)))))); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*(qa6+s*qa7)))))); + if(x>=0) { + z = one-erx; RETURNI(z - P/Q); + } else { + z = (erx+P/Q); RETURNI(one+z); + } + } + + if(ax < 108) { /* |x| < 108 */ + s = one/(ax*ax); + if(ax < 2.85715) { /* |x| < 2.85715 */ + R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(ra5+s*(ra6+s*(ra7+ + s*(ra8+s*ra9)))))))); + S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(sa5+s*(sa6+s*(sa7+ + s*(sa8+s*sa9)))))))); + } else if(ax < 7) { /* | |x| < 7 */ + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(rb5+s*(rb6+s*rb7)))))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(sb5+s*(sb6+s*sb7)))))); + } else { + if(x < -7) RETURNI(two-tiny);/* x < -7 */ + R=rc0+s*(rc1+s*(rc2+s*(rc3+s*(rc4+s*rc5)))); + S=one+s*(sc1+s*(sc2+s*(sc3+s*(sc4+s*sc5)))); + } + z = (float)ax; + r = expl(-z*z-0.5625)*expl((z-ax)*(z+ax)+R/S); + if(x>0) RETURNI(r/ax); else RETURNI(two-r/ax); + } else { + if(x>0) RETURNI(tiny*tiny); else RETURNI(two-tiny); + } +} diff --git a/newlib/libm/ld80/s_exp2l.c b/newlib/libm/ld80/s_exp2l.c new file mode 100644 index 0000000000..421d6e2e04 --- /dev/null +++ b/newlib/libm/ld80/s_exp2l.c @@ -0,0 +1,290 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2005-2008 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +#define TBLBITS 7 +#define TBLSIZE (1 << TBLBITS) + +#define BIAS (LDBL_MAX_EXP - 1) + +static volatile long double + huge = 0x1p10000L, + twom10000 = 0x1p-10000L; + +static const union IEEEl2bits +P1 = LD80C(0xb17217f7d1cf79ac, -1, 6.93147180559945309429e-1L); + +static const double +redux = 0x1.8p63 / TBLSIZE, +/* + * Domain [-0.00390625, 0.00390625], range ~[-1.7079e-23, 1.7079e-23] + * |exp(x) - p(x)| < 2**-75.6 + */ +P2 = 2.4022650695910072e-1, /* 0x1ebfbdff82c58f.0p-55 */ +P3 = 5.5504108664816879e-2, /* 0x1c6b08d7049e1a.0p-57 */ +P4 = 9.6181291055695180e-3, /* 0x13b2ab6fa8321a.0p-59 */ +P5 = 1.3333563089183052e-3, /* 0x15d8806f67f251.0p-62 */ +P6 = 1.5413361552277414e-4; /* 0x1433ddacff3441.0p-65 */ + +static const double tbl[TBLSIZE * 2] = { + 0x1.6a09e667f3bcdp-1, -0x1.bdd3413b2648p-55, + 0x1.6c012750bdabfp-1, -0x1.2895667ff0cp-57, + 0x1.6dfb23c651a2fp-1, -0x1.bbe3a683c88p-58, + 0x1.6ff7df9519484p-1, -0x1.83c0f25860fp-56, + 0x1.71f75e8ec5f74p-1, -0x1.16e4786887bp-56, + 0x1.73f9a48a58174p-1, -0x1.0a8d96c65d5p-55, + 0x1.75feb564267c9p-1, -0x1.0245957316ep-55, + 0x1.780694fde5d3fp-1, 0x1.866b80a0216p-55, + 0x1.7a11473eb0187p-1, -0x1.41577ee0499p-56, + 0x1.7c1ed0130c132p-1, 0x1.f124cd1164ep-55, + 0x1.7e2f336cf4e62p-1, 0x1.05d02ba157ap-57, + 0x1.80427543e1a12p-1, -0x1.27c86626d97p-55, + 0x1.82589994cce13p-1, -0x1.d4c1dd41533p-55, + 0x1.8471a4623c7adp-1, -0x1.8d684a341cep-56, + 0x1.868d99b4492edp-1, -0x1.fc6f89bd4f68p-55, + 0x1.88ac7d98a6699p-1, 0x1.994c2f37cb5p-55, + 0x1.8ace5422aa0dbp-1, 0x1.6e9f156864bp-55, + 0x1.8cf3216b5448cp-1, -0x1.0d55e32e9e4p-57, + 0x1.8f1ae99157736p-1, 0x1.5cc13a2e397p-56, + 0x1.9145b0b91ffc6p-1, -0x1.dd6792e5825p-55, + 0x1.93737b0cdc5e5p-1, -0x1.75fc781b58p-58, + 0x1.95a44cbc8520fp-1, -0x1.64b7c96a5fp-57, + 0x1.97d829fde4e5p-1, -0x1.d185b7c1b86p-55, + 0x1.9a0f170ca07bap-1, -0x1.173bd91cee6p-55, + 0x1.9c49182a3f09p-1, 0x1.c7c46b071f2p-57, + 0x1.9e86319e32323p-1, 0x1.824ca78e64cp-57, + 0x1.a0c667b5de565p-1, -0x1.359495d1cd5p-55, + 0x1.a309bec4a2d33p-1, 0x1.6305c7ddc368p-55, + 0x1.a5503b23e255dp-1, -0x1.d2f6edb8d42p-55, + 0x1.a799e1330b358p-1, 0x1.bcb7ecac564p-55, + 0x1.a9e6b5579fdbfp-1, 0x1.0fac90ef7fdp-55, + 0x1.ac36bbfd3f37ap-1, -0x1.f9234cae76dp-56, + 0x1.ae89f995ad3adp-1, 0x1.7a1cd345dcc8p-55, + 0x1.b0e07298db666p-1, -0x1.bdef54c80e4p-55, + 0x1.b33a2b84f15fbp-1, -0x1.2805e3084d8p-58, + 0x1.b59728de5593ap-1, -0x1.c71dfbbba6ep-55, + 0x1.b7f76f2fb5e47p-1, -0x1.5584f7e54acp-57, + 0x1.ba5b030a1064ap-1, -0x1.efcd30e5429p-55, + 0x1.bcc1e904bc1d2p-1, 0x1.23dd07a2d9fp-56, + 0x1.bf2c25bd71e09p-1, -0x1.efdca3f6b9c8p-55, + 0x1.c199bdd85529cp-1, 0x1.11065895049p-56, + 0x1.c40ab5fffd07ap-1, 0x1.b4537e083c6p-55, + 0x1.c67f12e57d14bp-1, 0x1.2884dff483c8p-55, + 0x1.c8f6d9406e7b5p-1, 0x1.1acbc48805cp-57, + 0x1.cb720dcef9069p-1, 0x1.503cbd1e94ap-57, + 0x1.cdf0b555dc3fap-1, -0x1.dd83b53829dp-56, + 0x1.d072d4a07897cp-1, -0x1.cbc3743797a8p-55, + 0x1.d2f87080d89f2p-1, -0x1.d487b719d858p-55, + 0x1.d5818dcfba487p-1, 0x1.2ed02d75b37p-56, + 0x1.d80e316c98398p-1, -0x1.11ec18bedep-55, + 0x1.da9e603db3285p-1, 0x1.c2300696db5p-55, + 0x1.dd321f301b46p-1, 0x1.2da5778f019p-55, + 0x1.dfc97337b9b5fp-1, -0x1.1a5cd4f184b8p-55, + 0x1.e264614f5a129p-1, -0x1.7b627817a148p-55, + 0x1.e502ee78b3ff6p-1, 0x1.39e8980a9cdp-56, + 0x1.e7a51fbc74c83p-1, 0x1.2d522ca0c8ep-55, + 0x1.ea4afa2a490dap-1, -0x1.e9c23179c288p-55, + 0x1.ecf482d8e67f1p-1, -0x1.c93f3b411ad8p-55, + 0x1.efa1bee615a27p-1, 0x1.dc7f486a4b68p-55, + 0x1.f252b376bba97p-1, 0x1.3a1a5bf0d8e8p-55, + 0x1.f50765b6e454p-1, 0x1.9d3e12dd8a18p-55, + 0x1.f7bfdad9cbe14p-1, -0x1.dbb12d00635p-55, + 0x1.fa7c1819e90d8p-1, 0x1.74853f3a593p-56, + 0x1.fd3c22b8f71f1p-1, 0x1.2eb74966578p-58, + 0x1p+0, 0x0p+0, + 0x1.0163da9fb3335p+0, 0x1.b61299ab8cd8p-54, + 0x1.02c9a3e778061p+0, -0x1.19083535b08p-56, + 0x1.04315e86e7f85p+0, -0x1.0a31c1977c98p-54, + 0x1.059b0d3158574p+0, 0x1.d73e2a475b4p-55, + 0x1.0706b29ddf6dep+0, -0x1.c91dfe2b13cp-55, + 0x1.0874518759bc8p+0, 0x1.186be4bb284p-57, + 0x1.09e3ecac6f383p+0, 0x1.14878183161p-54, + 0x1.0b5586cf9890fp+0, 0x1.8a62e4adc61p-54, + 0x1.0cc922b7247f7p+0, 0x1.01edc16e24f8p-54, + 0x1.0e3ec32d3d1a2p+0, 0x1.03a1727c58p-59, + 0x1.0fb66affed31bp+0, -0x1.b9bedc44ebcp-57, + 0x1.11301d0125b51p+0, -0x1.6c51039449bp-54, + 0x1.12abdc06c31ccp+0, -0x1.1b514b36ca8p-58, + 0x1.1429aaea92dep+0, -0x1.32fbf9af1368p-54, + 0x1.15a98c8a58e51p+0, 0x1.2406ab9eeabp-55, + 0x1.172b83c7d517bp+0, -0x1.19041b9d78ap-55, + 0x1.18af9388c8deap+0, -0x1.11023d1970f8p-54, + 0x1.1a35beb6fcb75p+0, 0x1.e5b4c7b4969p-55, + 0x1.1bbe084045cd4p+0, -0x1.95386352ef6p-54, + 0x1.1d4873168b9aap+0, 0x1.e016e00a264p-54, + 0x1.1ed5022fcd91dp+0, -0x1.1df98027bb78p-54, + 0x1.2063b88628cd6p+0, 0x1.dc775814a85p-55, + 0x1.21f49917ddc96p+0, 0x1.2a97e9494a6p-55, + 0x1.2387a6e756238p+0, 0x1.9b07eb6c7058p-54, + 0x1.251ce4fb2a63fp+0, 0x1.ac155bef4f5p-55, + 0x1.26b4565e27cddp+0, 0x1.2bd339940eap-55, + 0x1.284dfe1f56381p+0, -0x1.a4c3a8c3f0d8p-54, + 0x1.29e9df51fdee1p+0, 0x1.612e8afad12p-55, + 0x1.2b87fd0dad99p+0, -0x1.10adcd6382p-59, + 0x1.2d285a6e4030bp+0, 0x1.0024754db42p-54, + 0x1.2ecafa93e2f56p+0, 0x1.1ca0f45d524p-56, + 0x1.306fe0a31b715p+0, 0x1.6f46ad23183p-55, + 0x1.32170fc4cd831p+0, 0x1.a9ce78e1804p-55, + 0x1.33c08b26416ffp+0, 0x1.327218436598p-54, + 0x1.356c55f929ff1p+0, -0x1.b5cee5c4e46p-55, + 0x1.371a7373aa9cbp+0, -0x1.63aeabf42ebp-54, + 0x1.38cae6d05d866p+0, -0x1.e958d3c99048p-54, + 0x1.3a7db34e59ff7p+0, -0x1.5e436d661f6p-56, + 0x1.3c32dc313a8e5p+0, -0x1.efff8375d2ap-54, + 0x1.3dea64c123422p+0, 0x1.ada0911f09fp-55, + 0x1.3fa4504ac801cp+0, -0x1.7d023f956fap-54, + 0x1.4160a21f72e2ap+0, -0x1.ef3691c309p-58, + 0x1.431f5d950a897p+0, -0x1.1c7dde35f7ap-55, + 0x1.44e086061892dp+0, 0x1.89b7a04ef8p-59, + 0x1.46a41ed1d0057p+0, 0x1.c944bd1648a8p-54, + 0x1.486a2b5c13cdp+0, 0x1.3c1a3b69062p-56, + 0x1.4a32af0d7d3dep+0, 0x1.9cb62f3d1be8p-54, + 0x1.4bfdad5362a27p+0, 0x1.d4397afec42p-56, + 0x1.4dcb299fddd0dp+0, 0x1.8ecdbbc6a78p-54, + 0x1.4f9b2769d2ca7p+0, -0x1.4b309d25958p-54, + 0x1.516daa2cf6642p+0, -0x1.f768569bd94p-55, + 0x1.5342b569d4f82p+0, -0x1.07abe1db13dp-55, + 0x1.551a4ca5d920fp+0, -0x1.d689cefede6p-55, + 0x1.56f4736b527dap+0, 0x1.9bb2c011d938p-54, + 0x1.58d12d497c7fdp+0, 0x1.295e15b9a1ep-55, + 0x1.5ab07dd485429p+0, 0x1.6324c0546478p-54, + 0x1.5c9268a5946b7p+0, 0x1.c4b1b81698p-60, + 0x1.5e76f15ad2148p+0, 0x1.ba6f93080e68p-54, + 0x1.605e1b976dc09p+0, -0x1.3e2429b56de8p-54, + 0x1.6247eb03a5585p+0, -0x1.383c17e40b48p-54, + 0x1.6434634ccc32p+0, -0x1.c483c759d89p-55, + 0x1.6623882552225p+0, -0x1.bb60987591cp-54, + 0x1.68155d44ca973p+0, 0x1.038ae44f74p-57, +}; + +/** + * Compute the base 2 exponential of x for Intel 80-bit format. + * + * Accuracy: Peak error < 0.511 ulp. + * + * Method: (equally-spaced tables) + * + * Reduce x: + * x = 2**k + y, for integer k and |y| <= 1/2. + * Thus we have exp2l(x) = 2**k * exp2(y). + * + * Reduce y: + * y = i/TBLSIZE + z for integer i near y * TBLSIZE. + * Thus we have exp2(y) = exp2(i/TBLSIZE) * exp2(z), + * with |z| <= 2**-(TBLBITS+1). + * + * We compute exp2(i/TBLSIZE) via table lookup and exp2(z) via a + * degree-6 minimax polynomial with maximum error under 2**-75.6. + * The table entries each have 104 bits of accuracy, encoded as + * a pair of double precision values. + */ +long double +exp2l(long double x) +{ + union IEEEl2bits u, v; + long double r, twopk, twopkp10000, z; + uint32_t hx, ix, i0; + int k; + + /* Filter out exceptional cases. */ + u.e = x; + hx = u.xbits.expsign; + ix = hx & 0x7fff; + if (ix >= BIAS + 14) { /* |x| >= 16384 or x is NaN */ + if (ix == BIAS + LDBL_MAX_EXP) { + if (hx & 0x8000 && u.xbits.man == 1ULL << 63) + return (0.0L); /* x is -Inf */ + return (x + x); /* x is +Inf, NaN or unsupported */ + } + if (x >= 16384) + return (huge * huge); /* overflow */ + if (x <= -16446) + return (twom10000 * twom10000); /* underflow */ + } else if (ix <= BIAS - 66) { /* |x| < 0x1p-65 (includes pseudos) */ + return (1.0L + x); /* 1 with inexact */ + } + + ENTERI(); + + /* + * Reduce x, computing z, i0, and k. The low bits of x + redux + * contain the 16-bit integer part of the exponent (k) followed by + * TBLBITS fractional bits (i0). We use bit tricks to extract these + * as integers, then set z to the remainder. + * + * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8. + * Then the low-order word of x + redux is 0x000abc12, + * We split this into k = 0xabc and i0 = 0x12 (adjusted to + * index into the table), then we compute z = 0x0.003456p0. + * + * XXX If the exponent is negative, the computation of k depends on + * '>>' doing sign extension. + */ + u.e = x + redux; + i0 = u.bits.manl + TBLSIZE / 2; + k = (int)i0 >> TBLBITS; + i0 = (i0 & (TBLSIZE - 1)) << 1; + u.e -= redux; + z = x - u.e; + v.xbits.man = 1ULL << 63; + if (k >= LDBL_MIN_EXP) { + v.xbits.expsign = BIAS + k; + twopk = v.e; + } else { + v.xbits.expsign = BIAS + k + 10000; + twopkp10000 = v.e; + } + + /* Compute r = exp2l(y) = exp2lt[i0] * p(z). */ + long double t_hi = tbl[i0]; + long double t_lo = tbl[i0 + 1]; + r = t_lo + (t_hi + t_lo) * z * (P1.e + z * (P2 + z * (P3 + z * (P4 + + z * (P5 + z * P6))))) + t_hi; + + /* Scale by 2**k. */ + if (k >= LDBL_MIN_EXP) { + if (k == LDBL_MAX_EXP) + RETURNI(r * 2.0 * 0x1p16383L); + RETURNI(r * twopk); + } else { + RETURNI(r * twopkp10000 * twom10000); + } +} diff --git a/newlib/libm/ld80/s_expl.c b/newlib/libm/ld80/s_expl.c new file mode 100644 index 0000000000..e46e73f0c1 --- /dev/null +++ b/newlib/libm/ld80/s_expl.c @@ -0,0 +1,279 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2009-2013 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Optimized by Bruce D. Evans. + */ + +#include +__FBSDID("$FreeBSD$"); + +/** + * Compute the exponential of x for Intel 80-bit format. This is based on: + * + * PTP Tang, "Table-driven implementation of the exponential function + * in IEEE floating-point arithmetic," ACM Trans. Math. Soft., 15, + * 144-157 (1989). + * + * where the 32 table entries have been expanded to INTERVALS (see below). + */ + +#include + +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" +#include "k_expl.h" + +/* XXX Prevent compilers from erroneously constant folding these: */ +static const volatile long double +huge = 0x1p10000L, +tiny = 0x1p-10000L; + +static const long double +twom10000 = 0x1p-10000L; + +static const union IEEEl2bits +/* log(2**16384 - 0.5) rounded towards zero: */ +/* log(2**16384 - 0.5 + 1) rounded towards zero for expm1l() is the same: */ +o_thresholdu = LD80C(0xb17217f7d1cf79ab, 13, 11356.5234062941439488L), +#define o_threshold (o_thresholdu.e) +/* log(2**(-16381-64-1)) rounded towards zero: */ +u_thresholdu = LD80C(0xb21dfe7f09e2baa9, 13, -11399.4985314888605581L); +#define u_threshold (u_thresholdu.e) + +long double +expl(long double x) +{ + union IEEEl2bits u; + long double hi, lo, t, twopk; + int k; + uint16_t hx, ix; + + DOPRINT_START(&x); + + /* Filter out exceptional cases. */ + u.e = x; + hx = u.xbits.expsign; + ix = hx & 0x7fff; + if (ix >= BIAS + 13) { /* |x| >= 8192 or x is NaN */ + if (ix == BIAS + LDBL_MAX_EXP) { + if (hx & 0x8000) /* x is -Inf, -NaN or unsupported */ + RETURNP(-1 / x); + RETURNP(x + x); /* x is +Inf, +NaN or unsupported */ + } + if (x > o_threshold) + RETURNP(huge * huge); + if (x < u_threshold) + RETURNP(tiny * tiny); + } else if (ix < BIAS - 75) { /* |x| < 0x1p-75 (includes pseudos) */ + RETURN2P(1, x); /* 1 with inexact iff x != 0 */ + } + + ENTERI(); + + twopk = 1; + __k_expl(x, &hi, &lo, &k); + t = SUM2P(hi, lo); + + /* Scale by 2**k. */ + if (k >= LDBL_MIN_EXP) { + if (k == LDBL_MAX_EXP) + RETURNI(t * 2 * 0x1p16383L); + SET_LDBL_EXPSIGN(twopk, BIAS + k); + RETURNI(t * twopk); + } else { + SET_LDBL_EXPSIGN(twopk, BIAS + k + 10000); + RETURNI(t * twopk * twom10000); + } +} + +/** + * Compute expm1l(x) for Intel 80-bit format. This is based on: + * + * PTP Tang, "Table-driven implementation of the Expm1 function + * in IEEE floating-point arithmetic," ACM Trans. Math. Soft., 18, + * 211-222 (1992). + */ + +/* + * Our T1 and T2 are chosen to be approximately the points where method + * A and method B have the same accuracy. Tang's T1 and T2 are the + * points where method A's accuracy changes by a full bit. For Tang, + * this drop in accuracy makes method A immediately less accurate than + * method B, but our larger INTERVALS makes method A 2 bits more + * accurate so it remains the most accurate method significantly + * closer to the origin despite losing the full bit in our extended + * range for it. + */ +static const double +T1 = -0.1659, /* ~-30.625/128 * log(2) */ +T2 = 0.1659; /* ~30.625/128 * log(2) */ + +/* + * Domain [-0.1659, 0.1659], range ~[-2.6155e-22, 2.5507e-23]: + * |(exp(x)-1-x-x**2/2)/x - p(x)| < 2**-71.6 + * + * XXX the coeffs aren't very carefully rounded, and I get 2.8 more bits, + * but unlike for ld128 we can't drop any terms. + */ +static const union IEEEl2bits +B3 = LD80C(0xaaaaaaaaaaaaaaab, -3, 1.66666666666666666671e-1L), +B4 = LD80C(0xaaaaaaaaaaaaaaac, -5, 4.16666666666666666712e-2L); + +static const double +B5 = 8.3333333333333245e-3, /* 0x1.111111111110cp-7 */ +B6 = 1.3888888888888861e-3, /* 0x1.6c16c16c16c0ap-10 */ +B7 = 1.9841269841532042e-4, /* 0x1.a01a01a0319f9p-13 */ +B8 = 2.4801587302069236e-5, /* 0x1.a01a01a03cbbcp-16 */ +B9 = 2.7557316558468562e-6, /* 0x1.71de37fd33d67p-19 */ +B10 = 2.7557315829785151e-7, /* 0x1.27e4f91418144p-22 */ +B11 = 2.5063168199779829e-8, /* 0x1.ae94fabdc6b27p-26 */ +B12 = 2.0887164654459567e-9; /* 0x1.1f122d6413fe1p-29 */ + +long double +expm1l(long double x) +{ + union IEEEl2bits u, v; + long double fn, hx2_hi, hx2_lo, q, r, r1, r2, t, twomk, twopk, x_hi; + long double x_lo, x2, z; + long double x4; + int k, n, n2; + uint16_t hx, ix; + + DOPRINT_START(&x); + + /* Filter out exceptional cases. */ + u.e = x; + hx = u.xbits.expsign; + ix = hx & 0x7fff; + if (ix >= BIAS + 6) { /* |x| >= 64 or x is NaN */ + if (ix == BIAS + LDBL_MAX_EXP) { + if (hx & 0x8000) /* x is -Inf, -NaN or unsupported */ + RETURNP(-1 / x - 1); + RETURNP(x + x); /* x is +Inf, +NaN or unsupported */ + } + if (x > o_threshold) + RETURNP(huge * huge); + /* + * expm1l() never underflows, but it must avoid + * unrepresentable large negative exponents. We used a + * much smaller threshold for large |x| above than in + * expl() so as to handle not so large negative exponents + * in the same way as large ones here. + */ + if (hx & 0x8000) /* x <= -64 */ + RETURN2P(tiny, -1); /* good for x < -65ln2 - eps */ + } + + ENTERI(); + + if (T1 < x && x < T2) { + if (ix < BIAS - 74) { /* |x| < 0x1p-74 (includes pseudos) */ + /* x (rounded) with inexact if x != 0: */ + RETURNPI(x == 0 ? x : + (0x1p100 * x + fabsl(x)) * 0x1p-100); + } + + x2 = x * x; + x4 = x2 * x2; + q = x4 * (x2 * (x4 * + /* + * XXX the number of terms is no longer good for + * pairwise grouping of all except B3, and the + * grouping is no longer from highest down. + */ + (x2 * B12 + (x * B11 + B10)) + + (x2 * (x * B9 + B8) + (x * B7 + B6))) + + (x * B5 + B4.e)) + x2 * x * B3.e; + + x_hi = (float)x; + x_lo = x - x_hi; + hx2_hi = x_hi * x_hi / 2; + hx2_lo = x_lo * (x + x_hi) / 2; + if (ix >= BIAS - 7) + RETURN2PI(hx2_hi + x_hi, hx2_lo + x_lo + q); + else + RETURN2PI(x, hx2_lo + q + hx2_hi); + } + + /* Reduce x to (k*ln2 + endpoint[n2] + r1 + r2). */ + fn = rnintl(x * INV_L); + n = irint(fn); + n2 = (unsigned)n % INTERVALS; + k = n >> LOG2_INTERVALS; + r1 = x - fn * L1; + r2 = fn * -L2; + r = r1 + r2; + + /* Prepare scale factor. */ + v.e = 1; + v.xbits.expsign = BIAS + k; + twopk = v.e; + + /* + * Evaluate lower terms of + * expl(endpoint[n2] + r1 + r2) = tbl[n2] * expl(r1 + r2). + */ + z = r * r; + q = r2 + z * (A2 + r * A3) + z * z * (A4 + r * A5) + z * z * z * A6; + + t = (long double)tbl[n2].lo + tbl[n2].hi; + + if (k == 0) { + t = SUM2P(tbl[n2].hi - 1, tbl[n2].lo * (r1 + 1) + t * q + + tbl[n2].hi * r1); + RETURNI(t); + } + if (k == -1) { + t = SUM2P(tbl[n2].hi - 2, tbl[n2].lo * (r1 + 1) + t * q + + tbl[n2].hi * r1); + RETURNI(t / 2); + } + if (k < -7) { + t = SUM2P(tbl[n2].hi, tbl[n2].lo + t * (q + r1)); + RETURNI(t * twopk - 1); + } + if (k > 2 * LDBL_MANT_DIG - 1) { + t = SUM2P(tbl[n2].hi, tbl[n2].lo + t * (q + r1)); + if (k == LDBL_MAX_EXP) + RETURNI(t * 2 * 0x1p16383L - 1); + RETURNI(t * twopk - 1); + } + + v.xbits.expsign = BIAS - k; + twomk = v.e; + + if (k > LDBL_MANT_DIG - 1) + t = SUM2P(tbl[n2].hi, tbl[n2].lo - twomk + t * (q + r1)); + else + t = SUM2P(tbl[n2].hi - twomk, tbl[n2].lo + t * (q + r1)); + RETURNI(t * twopk); +} diff --git a/newlib/libm/ld80/s_logl.c b/newlib/libm/ld80/s_logl.c new file mode 100644 index 0000000000..c74519cafd --- /dev/null +++ b/newlib/libm/ld80/s_logl.c @@ -0,0 +1,722 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2007-2013 Bruce D. Evans + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/** + * Implementation of the natural logarithm of x for Intel 80-bit format. + * + * First decompose x into its base 2 representation: + * + * log(x) = log(X * 2**k), where X is in [1, 2) + * = log(X) + k * log(2). + * + * Let X = X_i + e, where X_i is the center of one of the intervals + * [-1.0/256, 1.0/256), [1.0/256, 3.0/256), .... [2.0-1.0/256, 2.0+1.0/256) + * and X is in this interval. Then + * + * log(X) = log(X_i + e) + * = log(X_i * (1 + e / X_i)) + * = log(X_i) + log(1 + e / X_i). + * + * The values log(X_i) are tabulated below. Let d = e / X_i and use + * + * log(1 + d) = p(d) + * + * where p(d) = d - 0.5*d*d + ... is a special minimax polynomial of + * suitably high degree. + * + * To get sufficiently small roundoff errors, k * log(2), log(X_i), and + * sometimes (if |k| is not large) the first term in p(d) must be evaluated + * and added up in extra precision. Extra precision is not needed for the + * rest of p(d). In the worst case when k = 0 and log(X_i) is 0, the final + * error is controlled mainly by the error in the second term in p(d). The + * error in this term itself is at most 0.5 ulps from the d*d operation in + * it. The error in this term relative to the first term is thus at most + * 0.5 * |-0.5| * |d| < 1.0/1024 ulps. We aim for an accumulated error of + * at most twice this at the point of the final rounding step. Thus the + * final error should be at most 0.5 + 1.0/512 = 0.5020 ulps. Exhaustive + * testing of a float variant of this function showed a maximum final error + * of 0.5008 ulps. Non-exhaustive testing of a double variant of this + * function showed a maximum final error of 0.5078 ulps (near 1+1.0/256). + * + * We made the maximum of |d| (and thus the total relative error and the + * degree of p(d)) small by using a large number of intervals. Using + * centers of intervals instead of endpoints reduces this maximum by a + * factor of 2 for a given number of intervals. p(d) is special only + * in beginning with the Taylor coefficients 0 + 1*d, which tends to happen + * naturally. The most accurate minimax polynomial of a given degree might + * be different, but then we wouldn't want it since we would have to do + * extra work to avoid roundoff error (especially for P0*d instead of d). + */ + +#ifdef DEBUG +#include +#include +#endif + +#ifdef __i386__ +#include +#endif + +#include "fpmath.h" +#include "math.h" +#define i386_SSE_GOOD +#ifndef NO_STRUCT_RETURN +#define STRUCT_RETURN +#endif +#include "math_private.h" + +#if !defined(NO_UTAB) && !defined(NO_UTABL) +#define USE_UTAB +#endif + +/* + * Domain [-0.005280, 0.004838], range ~[-5.1736e-22, 5.1738e-22]: + * |log(1 + d)/d - p(d)| < 2**-70.7 + */ +static const double +P2 = -0.5, +P3 = 3.3333333333333359e-1, /* 0x1555555555555a.0p-54 */ +P4 = -2.5000000000004424e-1, /* -0x1000000000031d.0p-54 */ +P5 = 1.9999999992970016e-1, /* 0x1999999972f3c7.0p-55 */ +P6 = -1.6666666072191585e-1, /* -0x15555548912c09.0p-55 */ +P7 = 1.4286227413310518e-1, /* 0x12494f9d9def91.0p-55 */ +P8 = -1.2518388626763144e-1; /* -0x1006068cc0b97c.0p-55 */ + +static volatile const double zero = 0; + +#define INTERVALS 128 +#define LOG2_INTERVALS 7 +#define TSIZE (INTERVALS + 1) +#define G(i) (T[(i)].G) +#define F_hi(i) (T[(i)].F_hi) +#define F_lo(i) (T[(i)].F_lo) +#define ln2_hi F_hi(TSIZE - 1) +#define ln2_lo F_lo(TSIZE - 1) +#define E(i) (U[(i)].E) +#define H(i) (U[(i)].H) + +static const struct { + float G; /* 1/(1 + i/128) rounded to 8/9 bits */ + float F_hi; /* log(1 / G_i) rounded (see below) */ + double F_lo; /* next 53 bits for log(1 / G_i) */ +} T[TSIZE] = { + /* + * ln2_hi and each F_hi(i) are rounded to a number of bits that + * makes F_hi(i) + dk*ln2_hi exact for all i and all dk. + * + * The last entry (for X just below 2) is used to define ln2_hi + * and ln2_lo, to ensure that F_hi(i) and F_lo(i) cancel exactly + * with dk*ln2_hi and dk*ln2_lo, respectively, when dk = -1. + * This is needed for accuracy when x is just below 1. (To avoid + * special cases, such x are "reduced" strangely to X just below + * 2 and dk = -1, and then the exact cancellation is needed + * because any the error from any non-exactness would be too + * large). + * + * We want to share this table between double precision and ld80, + * so the relevant range of dk is the larger one of ld80 + * ([-16445, 16383]) and the relevant exactness requirement is + * the stricter one of double precision. The maximum number of + * bits in F_hi(i) that works is very dependent on i but has + * a minimum of 33. We only need about 12 bits in F_hi(i) for + * it to provide enough extra precision in double precision (11 + * more than that are required for ld80). + * + * We round F_hi(i) to 24 bits so that it can have type float, + * mainly to minimize the size of the table. Using all 24 bits + * in a float for it automatically satisfies the above constraints. + */ + { 0x800000.0p-23, 0, 0 }, + { 0xfe0000.0p-24, 0x8080ac.0p-30, -0x14ee431dae6675.0p-84 }, + { 0xfc0000.0p-24, 0x8102b3.0p-29, -0x1db29ee2d83718.0p-84 }, + { 0xfa0000.0p-24, 0xc24929.0p-29, 0x1191957d173698.0p-83 }, + { 0xf80000.0p-24, 0x820aec.0p-28, 0x13ce8888e02e79.0p-82 }, + { 0xf60000.0p-24, 0xa33577.0p-28, -0x17a4382ce6eb7c.0p-82 }, + { 0xf48000.0p-24, 0xbc42cb.0p-28, -0x172a21161a1076.0p-83 }, + { 0xf30000.0p-24, 0xd57797.0p-28, -0x1e09de07cb9589.0p-82 }, + { 0xf10000.0p-24, 0xf7518e.0p-28, 0x1ae1eec1b036c5.0p-91 }, + { 0xef0000.0p-24, 0x8cb9df.0p-27, -0x1d7355325d560e.0p-81 }, + { 0xed8000.0p-24, 0x999ec0.0p-27, -0x1f9f02d256d503.0p-82 }, + { 0xec0000.0p-24, 0xa6988b.0p-27, -0x16fc0a9d12c17a.0p-83 }, + { 0xea0000.0p-24, 0xb80698.0p-27, 0x15d581c1e8da9a.0p-81 }, + { 0xe80000.0p-24, 0xc99af3.0p-27, -0x1535b3ba8f150b.0p-83 }, + { 0xe70000.0p-24, 0xd273b2.0p-27, 0x163786f5251af0.0p-85 }, + { 0xe50000.0p-24, 0xe442c0.0p-27, 0x1bc4b2368e32d5.0p-84 }, + { 0xe38000.0p-24, 0xf1b83f.0p-27, 0x1c6090f684e676.0p-81 }, + { 0xe20000.0p-24, 0xff448a.0p-27, -0x1890aa69ac9f42.0p-82 }, + { 0xe08000.0p-24, 0x8673f6.0p-26, 0x1b9985194b6b00.0p-80 }, + { 0xdf0000.0p-24, 0x8d515c.0p-26, -0x1dc08d61c6ef1e.0p-83 }, + { 0xdd8000.0p-24, 0x943a9e.0p-26, -0x1f72a2dac729b4.0p-82 }, + { 0xdc0000.0p-24, 0x9b2fe6.0p-26, -0x1fd4dfd3a0afb9.0p-80 }, + { 0xda8000.0p-24, 0xa2315d.0p-26, -0x11b26121629c47.0p-82 }, + { 0xd90000.0p-24, 0xa93f2f.0p-26, 0x1286d633e8e569.0p-81 }, + { 0xd78000.0p-24, 0xb05988.0p-26, 0x16128eba936770.0p-84 }, + { 0xd60000.0p-24, 0xb78094.0p-26, 0x16ead577390d32.0p-80 }, + { 0xd50000.0p-24, 0xbc4c6c.0p-26, 0x151131ccf7c7b7.0p-81 }, + { 0xd38000.0p-24, 0xc3890a.0p-26, -0x115e2cd714bd06.0p-80 }, + { 0xd20000.0p-24, 0xcad2d7.0p-26, -0x1847f406ebd3b0.0p-82 }, + { 0xd10000.0p-24, 0xcfb620.0p-26, 0x1c2259904d6866.0p-81 }, + { 0xcf8000.0p-24, 0xd71653.0p-26, 0x1ece57a8d5ae55.0p-80 }, + { 0xce0000.0p-24, 0xde843a.0p-26, -0x1f109d4bc45954.0p-81 }, + { 0xcd0000.0p-24, 0xe37fde.0p-26, 0x1bc03dc271a74d.0p-81 }, + { 0xcb8000.0p-24, 0xeb050c.0p-26, -0x1bf2badc0df842.0p-85 }, + { 0xca0000.0p-24, 0xf29878.0p-26, -0x18efededd89fbe.0p-87 }, + { 0xc90000.0p-24, 0xf7ad6f.0p-26, 0x1373ff977baa69.0p-81 }, + { 0xc80000.0p-24, 0xfcc8e3.0p-26, 0x196766f2fb3283.0p-80 }, + { 0xc68000.0p-24, 0x823f30.0p-25, 0x19bd076f7c434e.0p-79 }, + { 0xc58000.0p-24, 0x84d52c.0p-25, -0x1a327257af0f46.0p-79 }, + { 0xc40000.0p-24, 0x88bc74.0p-25, 0x113f23def19c5a.0p-81 }, + { 0xc30000.0p-24, 0x8b5ae6.0p-25, 0x1759f6e6b37de9.0p-79 }, + { 0xc20000.0p-24, 0x8dfccb.0p-25, 0x1ad35ca6ed5148.0p-81 }, + { 0xc10000.0p-24, 0x90a22b.0p-25, 0x1a1d71a87deba4.0p-79 }, + { 0xbf8000.0p-24, 0x94a0d8.0p-25, -0x139e5210c2b731.0p-80 }, + { 0xbe8000.0p-24, 0x974f16.0p-25, -0x18f6ebcff3ed73.0p-81 }, + { 0xbd8000.0p-24, 0x9a00f1.0p-25, -0x1aa268be39aab7.0p-79 }, + { 0xbc8000.0p-24, 0x9cb672.0p-25, -0x14c8815839c566.0p-79 }, + { 0xbb0000.0p-24, 0xa0cda1.0p-25, 0x1eaf46390dbb24.0p-81 }, + { 0xba0000.0p-24, 0xa38c6e.0p-25, 0x138e20d831f698.0p-81 }, + { 0xb90000.0p-24, 0xa64f05.0p-25, -0x1e8d3c41123616.0p-82 }, + { 0xb80000.0p-24, 0xa91570.0p-25, 0x1ce28f5f3840b2.0p-80 }, + { 0xb70000.0p-24, 0xabdfbb.0p-25, -0x186e5c0a424234.0p-79 }, + { 0xb60000.0p-24, 0xaeadef.0p-25, -0x14d41a0b2a08a4.0p-83 }, + { 0xb50000.0p-24, 0xb18018.0p-25, 0x16755892770634.0p-79 }, + { 0xb40000.0p-24, 0xb45642.0p-25, -0x16395ebe59b152.0p-82 }, + { 0xb30000.0p-24, 0xb73077.0p-25, 0x1abc65c8595f09.0p-80 }, + { 0xb20000.0p-24, 0xba0ec4.0p-25, -0x1273089d3dad89.0p-79 }, + { 0xb10000.0p-24, 0xbcf133.0p-25, 0x10f9f67b1f4bbf.0p-79 }, + { 0xb00000.0p-24, 0xbfd7d2.0p-25, -0x109fab90486409.0p-80 }, + { 0xaf0000.0p-24, 0xc2c2ac.0p-25, -0x1124680aa43333.0p-79 }, + { 0xae8000.0p-24, 0xc439b3.0p-25, -0x1f360cc4710fc0.0p-80 }, + { 0xad8000.0p-24, 0xc72afd.0p-25, -0x132d91f21d89c9.0p-80 }, + { 0xac8000.0p-24, 0xca20a2.0p-25, -0x16bf9b4d1f8da8.0p-79 }, + { 0xab8000.0p-24, 0xcd1aae.0p-25, 0x19deb5ce6a6a87.0p-81 }, + { 0xaa8000.0p-24, 0xd0192f.0p-25, 0x1a29fb48f7d3cb.0p-79 }, + { 0xaa0000.0p-24, 0xd19a20.0p-25, 0x1127d3c6457f9d.0p-81 }, + { 0xa90000.0p-24, 0xd49f6a.0p-25, -0x1ba930e486a0ac.0p-81 }, + { 0xa80000.0p-24, 0xd7a94b.0p-25, -0x1b6e645f31549e.0p-79 }, + { 0xa70000.0p-24, 0xdab7d0.0p-25, 0x1118a425494b61.0p-80 }, + { 0xa68000.0p-24, 0xdc40d5.0p-25, 0x1966f24d29d3a3.0p-80 }, + { 0xa58000.0p-24, 0xdf566d.0p-25, -0x1d8e52eb2248f1.0p-82 }, + { 0xa48000.0p-24, 0xe270ce.0p-25, -0x1ee370f96e6b68.0p-80 }, + { 0xa40000.0p-24, 0xe3ffce.0p-25, 0x1d155324911f57.0p-80 }, + { 0xa30000.0p-24, 0xe72179.0p-25, -0x1fe6e2f2f867d9.0p-80 }, + { 0xa20000.0p-24, 0xea4812.0p-25, 0x1b7be9add7f4d4.0p-80 }, + { 0xa18000.0p-24, 0xebdd3d.0p-25, 0x1b3cfb3f7511dd.0p-79 }, + { 0xa08000.0p-24, 0xef0b5b.0p-25, -0x1220de1f730190.0p-79 }, + { 0xa00000.0p-24, 0xf0a451.0p-25, -0x176364c9ac81cd.0p-80 }, + { 0x9f0000.0p-24, 0xf3da16.0p-25, 0x1eed6b9aafac8d.0p-81 }, + { 0x9e8000.0p-24, 0xf576e9.0p-25, 0x1d593218675af2.0p-79 }, + { 0x9d8000.0p-24, 0xf8b47c.0p-25, -0x13e8eb7da053e0.0p-84 }, + { 0x9d0000.0p-24, 0xfa553f.0p-25, 0x1c063259bcade0.0p-79 }, + { 0x9c0000.0p-24, 0xfd9ac5.0p-25, 0x1ef491085fa3c1.0p-79 }, + { 0x9b8000.0p-24, 0xff3f8c.0p-25, 0x1d607a7c2b8c53.0p-79 }, + { 0x9a8000.0p-24, 0x814697.0p-24, -0x12ad3817004f3f.0p-78 }, + { 0x9a0000.0p-24, 0x821b06.0p-24, -0x189fc53117f9e5.0p-81 }, + { 0x990000.0p-24, 0x83c5f8.0p-24, 0x14cf15a048907b.0p-79 }, + { 0x988000.0p-24, 0x849c7d.0p-24, 0x1cbb1d35fb8287.0p-78 }, + { 0x978000.0p-24, 0x864ba6.0p-24, 0x1128639b814f9c.0p-78 }, + { 0x970000.0p-24, 0x87244c.0p-24, 0x184733853300f0.0p-79 }, + { 0x968000.0p-24, 0x87fdaa.0p-24, 0x109d23aef77dd6.0p-80 }, + { 0x958000.0p-24, 0x89b293.0p-24, -0x1a81ef367a59de.0p-78 }, + { 0x950000.0p-24, 0x8a8e20.0p-24, -0x121ad3dbb2f452.0p-78 }, + { 0x948000.0p-24, 0x8b6a6a.0p-24, -0x1cfb981628af72.0p-79 }, + { 0x938000.0p-24, 0x8d253a.0p-24, -0x1d21730ea76cfe.0p-79 }, + { 0x930000.0p-24, 0x8e03c2.0p-24, 0x135cc00e566f77.0p-78 }, + { 0x928000.0p-24, 0x8ee30d.0p-24, -0x10fcb5df257a26.0p-80 }, + { 0x918000.0p-24, 0x90a3ee.0p-24, -0x16e171b15433d7.0p-79 }, + { 0x910000.0p-24, 0x918587.0p-24, -0x1d050da07f3237.0p-79 }, + { 0x908000.0p-24, 0x9267e7.0p-24, 0x1be03669a5268d.0p-79 }, + { 0x8f8000.0p-24, 0x942f04.0p-24, 0x10b28e0e26c337.0p-79 }, + { 0x8f0000.0p-24, 0x9513c3.0p-24, 0x1a1d820da57cf3.0p-78 }, + { 0x8e8000.0p-24, 0x95f950.0p-24, -0x19ef8f13ae3cf1.0p-79 }, + { 0x8e0000.0p-24, 0x96dfab.0p-24, -0x109e417a6e507c.0p-78 }, + { 0x8d0000.0p-24, 0x98aed2.0p-24, 0x10d01a2c5b0e98.0p-79 }, + { 0x8c8000.0p-24, 0x9997a2.0p-24, -0x1d6a50d4b61ea7.0p-78 }, + { 0x8c0000.0p-24, 0x9a8145.0p-24, 0x1b3b190b83f952.0p-78 }, + { 0x8b8000.0p-24, 0x9b6bbf.0p-24, 0x13a69fad7e7abe.0p-78 }, + { 0x8b0000.0p-24, 0x9c5711.0p-24, -0x11cd12316f576b.0p-78 }, + { 0x8a8000.0p-24, 0x9d433b.0p-24, 0x1c95c444b807a2.0p-79 }, + { 0x898000.0p-24, 0x9f1e22.0p-24, -0x1b9c224ea698c3.0p-79 }, + { 0x890000.0p-24, 0xa00ce1.0p-24, 0x125ca93186cf0f.0p-81 }, + { 0x888000.0p-24, 0xa0fc80.0p-24, -0x1ee38a7bc228b3.0p-79 }, + { 0x880000.0p-24, 0xa1ed00.0p-24, -0x1a0db876613d20.0p-78 }, + { 0x878000.0p-24, 0xa2de62.0p-24, 0x193224e8516c01.0p-79 }, + { 0x870000.0p-24, 0xa3d0a9.0p-24, 0x1fa28b4d2541ad.0p-79 }, + { 0x868000.0p-24, 0xa4c3d6.0p-24, 0x1c1b5760fb4572.0p-78 }, + { 0x858000.0p-24, 0xa6acea.0p-24, 0x1fed5d0f65949c.0p-80 }, + { 0x850000.0p-24, 0xa7a2d4.0p-24, 0x1ad270c9d74936.0p-80 }, + { 0x848000.0p-24, 0xa899ab.0p-24, 0x199ff15ce53266.0p-79 }, + { 0x840000.0p-24, 0xa99171.0p-24, 0x1a19e15ccc45d2.0p-79 }, + { 0x838000.0p-24, 0xaa8a28.0p-24, -0x121a14ec532b36.0p-80 }, + { 0x830000.0p-24, 0xab83d1.0p-24, 0x1aee319980bff3.0p-79 }, + { 0x828000.0p-24, 0xac7e6f.0p-24, -0x18ffd9e3900346.0p-80 }, + { 0x820000.0p-24, 0xad7a03.0p-24, -0x1e4db102ce29f8.0p-80 }, + { 0x818000.0p-24, 0xae768f.0p-24, 0x17c35c55a04a83.0p-81 }, + { 0x810000.0p-24, 0xaf7415.0p-24, 0x1448324047019b.0p-78 }, + { 0x808000.0p-24, 0xb07298.0p-24, -0x1750ee3915a198.0p-78 }, + { 0x800000.0p-24, 0xb17218.0p-24, -0x105c610ca86c39.0p-81 }, +}; + +#ifdef USE_UTAB +static const struct { + float H; /* 1 + i/INTERVALS (exact) */ + float E; /* H(i) * G(i) - 1 (exact) */ +} U[TSIZE] = { + { 0x800000.0p-23, 0 }, + { 0x810000.0p-23, -0x800000.0p-37 }, + { 0x820000.0p-23, -0x800000.0p-35 }, + { 0x830000.0p-23, -0x900000.0p-34 }, + { 0x840000.0p-23, -0x800000.0p-33 }, + { 0x850000.0p-23, -0xc80000.0p-33 }, + { 0x860000.0p-23, -0xa00000.0p-36 }, + { 0x870000.0p-23, 0x940000.0p-33 }, + { 0x880000.0p-23, 0x800000.0p-35 }, + { 0x890000.0p-23, -0xc80000.0p-34 }, + { 0x8a0000.0p-23, 0xe00000.0p-36 }, + { 0x8b0000.0p-23, 0x900000.0p-33 }, + { 0x8c0000.0p-23, -0x800000.0p-35 }, + { 0x8d0000.0p-23, -0xe00000.0p-33 }, + { 0x8e0000.0p-23, 0x880000.0p-33 }, + { 0x8f0000.0p-23, -0xa80000.0p-34 }, + { 0x900000.0p-23, -0x800000.0p-35 }, + { 0x910000.0p-23, 0x800000.0p-37 }, + { 0x920000.0p-23, 0x900000.0p-35 }, + { 0x930000.0p-23, 0xd00000.0p-35 }, + { 0x940000.0p-23, 0xe00000.0p-35 }, + { 0x950000.0p-23, 0xc00000.0p-35 }, + { 0x960000.0p-23, 0xe00000.0p-36 }, + { 0x970000.0p-23, -0x800000.0p-38 }, + { 0x980000.0p-23, -0xc00000.0p-35 }, + { 0x990000.0p-23, -0xd00000.0p-34 }, + { 0x9a0000.0p-23, 0x880000.0p-33 }, + { 0x9b0000.0p-23, 0xe80000.0p-35 }, + { 0x9c0000.0p-23, -0x800000.0p-35 }, + { 0x9d0000.0p-23, 0xb40000.0p-33 }, + { 0x9e0000.0p-23, 0x880000.0p-34 }, + { 0x9f0000.0p-23, -0xe00000.0p-35 }, + { 0xa00000.0p-23, 0x800000.0p-33 }, + { 0xa10000.0p-23, -0x900000.0p-36 }, + { 0xa20000.0p-23, -0xb00000.0p-33 }, + { 0xa30000.0p-23, -0xa00000.0p-36 }, + { 0xa40000.0p-23, 0x800000.0p-33 }, + { 0xa50000.0p-23, -0xf80000.0p-35 }, + { 0xa60000.0p-23, 0x880000.0p-34 }, + { 0xa70000.0p-23, -0x900000.0p-33 }, + { 0xa80000.0p-23, -0x800000.0p-35 }, + { 0xa90000.0p-23, 0x900000.0p-34 }, + { 0xaa0000.0p-23, 0xa80000.0p-33 }, + { 0xab0000.0p-23, -0xac0000.0p-34 }, + { 0xac0000.0p-23, -0x800000.0p-37 }, + { 0xad0000.0p-23, 0xf80000.0p-35 }, + { 0xae0000.0p-23, 0xf80000.0p-34 }, + { 0xaf0000.0p-23, -0xac0000.0p-33 }, + { 0xb00000.0p-23, -0x800000.0p-33 }, + { 0xb10000.0p-23, -0xb80000.0p-34 }, + { 0xb20000.0p-23, -0x800000.0p-34 }, + { 0xb30000.0p-23, -0xb00000.0p-35 }, + { 0xb40000.0p-23, -0x800000.0p-35 }, + { 0xb50000.0p-23, -0xe00000.0p-36 }, + { 0xb60000.0p-23, -0x800000.0p-35 }, + { 0xb70000.0p-23, -0xb00000.0p-35 }, + { 0xb80000.0p-23, -0x800000.0p-34 }, + { 0xb90000.0p-23, -0xb80000.0p-34 }, + { 0xba0000.0p-23, -0x800000.0p-33 }, + { 0xbb0000.0p-23, -0xac0000.0p-33 }, + { 0xbc0000.0p-23, 0x980000.0p-33 }, + { 0xbd0000.0p-23, 0xbc0000.0p-34 }, + { 0xbe0000.0p-23, 0xe00000.0p-36 }, + { 0xbf0000.0p-23, -0xb80000.0p-35 }, + { 0xc00000.0p-23, -0x800000.0p-33 }, + { 0xc10000.0p-23, 0xa80000.0p-33 }, + { 0xc20000.0p-23, 0x900000.0p-34 }, + { 0xc30000.0p-23, -0x800000.0p-35 }, + { 0xc40000.0p-23, -0x900000.0p-33 }, + { 0xc50000.0p-23, 0x820000.0p-33 }, + { 0xc60000.0p-23, 0x800000.0p-38 }, + { 0xc70000.0p-23, -0x820000.0p-33 }, + { 0xc80000.0p-23, 0x800000.0p-33 }, + { 0xc90000.0p-23, -0xa00000.0p-36 }, + { 0xca0000.0p-23, -0xb00000.0p-33 }, + { 0xcb0000.0p-23, 0x840000.0p-34 }, + { 0xcc0000.0p-23, -0xd00000.0p-34 }, + { 0xcd0000.0p-23, 0x800000.0p-33 }, + { 0xce0000.0p-23, -0xe00000.0p-35 }, + { 0xcf0000.0p-23, 0xa60000.0p-33 }, + { 0xd00000.0p-23, -0x800000.0p-35 }, + { 0xd10000.0p-23, 0xb40000.0p-33 }, + { 0xd20000.0p-23, -0x800000.0p-35 }, + { 0xd30000.0p-23, 0xaa0000.0p-33 }, + { 0xd40000.0p-23, -0xe00000.0p-35 }, + { 0xd50000.0p-23, 0x880000.0p-33 }, + { 0xd60000.0p-23, -0xd00000.0p-34 }, + { 0xd70000.0p-23, 0x9c0000.0p-34 }, + { 0xd80000.0p-23, -0xb00000.0p-33 }, + { 0xd90000.0p-23, -0x800000.0p-38 }, + { 0xda0000.0p-23, 0xa40000.0p-33 }, + { 0xdb0000.0p-23, -0xdc0000.0p-34 }, + { 0xdc0000.0p-23, 0xc00000.0p-35 }, + { 0xdd0000.0p-23, 0xca0000.0p-33 }, + { 0xde0000.0p-23, -0xb80000.0p-34 }, + { 0xdf0000.0p-23, 0xd00000.0p-35 }, + { 0xe00000.0p-23, 0xc00000.0p-33 }, + { 0xe10000.0p-23, -0xf40000.0p-34 }, + { 0xe20000.0p-23, 0x800000.0p-37 }, + { 0xe30000.0p-23, 0x860000.0p-33 }, + { 0xe40000.0p-23, -0xc80000.0p-33 }, + { 0xe50000.0p-23, -0xa80000.0p-34 }, + { 0xe60000.0p-23, 0xe00000.0p-36 }, + { 0xe70000.0p-23, 0x880000.0p-33 }, + { 0xe80000.0p-23, -0xe00000.0p-33 }, + { 0xe90000.0p-23, -0xfc0000.0p-34 }, + { 0xea0000.0p-23, -0x800000.0p-35 }, + { 0xeb0000.0p-23, 0xe80000.0p-35 }, + { 0xec0000.0p-23, 0x900000.0p-33 }, + { 0xed0000.0p-23, 0xe20000.0p-33 }, + { 0xee0000.0p-23, -0xac0000.0p-33 }, + { 0xef0000.0p-23, -0xc80000.0p-34 }, + { 0xf00000.0p-23, -0x800000.0p-35 }, + { 0xf10000.0p-23, 0x800000.0p-35 }, + { 0xf20000.0p-23, 0xb80000.0p-34 }, + { 0xf30000.0p-23, 0x940000.0p-33 }, + { 0xf40000.0p-23, 0xc80000.0p-33 }, + { 0xf50000.0p-23, -0xf20000.0p-33 }, + { 0xf60000.0p-23, -0xc80000.0p-33 }, + { 0xf70000.0p-23, -0xa20000.0p-33 }, + { 0xf80000.0p-23, -0x800000.0p-33 }, + { 0xf90000.0p-23, -0xc40000.0p-34 }, + { 0xfa0000.0p-23, -0x900000.0p-34 }, + { 0xfb0000.0p-23, -0xc80000.0p-35 }, + { 0xfc0000.0p-23, -0x800000.0p-35 }, + { 0xfd0000.0p-23, -0x900000.0p-36 }, + { 0xfe0000.0p-23, -0x800000.0p-37 }, + { 0xff0000.0p-23, -0x800000.0p-39 }, + { 0x800000.0p-22, 0 }, +}; +#endif /* USE_UTAB */ + +#ifdef STRUCT_RETURN +#define RETURN1(rp, v) do { \ + (rp)->hi = (v); \ + (rp)->lo_set = 0; \ + return; \ +} while (0) + +#define RETURN2(rp, h, l) do { \ + (rp)->hi = (h); \ + (rp)->lo = (l); \ + (rp)->lo_set = 1; \ + return; \ +} while (0) + +struct ld { + long double hi; + long double lo; + int lo_set; +}; +#else +#define RETURN1(rp, v) RETURNF(v) +#define RETURN2(rp, h, l) RETURNI((h) + (l)) +#endif + +#ifdef STRUCT_RETURN +static inline __always_inline void +k_logl(long double x, struct ld *rp) +#else +long double +logl(long double x) +#endif +{ + long double d, dk, val_hi, val_lo, z; + uint64_t ix, lx; + int i, k; + uint16_t hx; + + EXTRACT_LDBL80_WORDS(hx, lx, x); + k = -16383; +#if 0 /* Hard to do efficiently. Don't do it until we support all modes. */ + if (x == 1) + RETURN1(rp, 0); /* log(1) = +0 in all rounding modes */ +#endif + if (hx == 0 || hx >= 0x8000) { /* zero, negative or subnormal? */ + if (((hx & 0x7fff) | lx) == 0) + RETURN1(rp, -1 / zero); /* log(+-0) = -Inf */ + if (hx != 0) + /* log(neg or [pseudo-]NaN) = qNaN: */ + RETURN1(rp, (x - x) / zero); + x *= 0x1.0p65; /* subnormal; scale up x */ + /* including pseudo-subnormals */ + EXTRACT_LDBL80_WORDS(hx, lx, x); + k = -16383 - 65; + } else if (hx >= 0x7fff || (lx & 0x8000000000000000ULL) == 0) + RETURN1(rp, x + x); /* log(Inf or NaN) = Inf or qNaN */ + /* log(pseudo-Inf) = qNaN */ + /* log(pseudo-NaN) = qNaN */ + /* log(unnormal) = qNaN */ +#ifndef STRUCT_RETURN + ENTERI(); +#endif + k += hx; + ix = lx & 0x7fffffffffffffffULL; + dk = k; + + /* Scale x to be in [1, 2). */ + SET_LDBL_EXPSIGN(x, 0x3fff); + + /* 0 <= i <= INTERVALS: */ +#define L2I (64 - LOG2_INTERVALS) + i = (ix + (1LL << (L2I - 2))) >> (L2I - 1); + + /* + * -0.005280 < d < 0.004838. In particular, the infinite- + * precision |d| is <= 2**-7. Rounding of G(i) to 8 bits + * ensures that d is representable without extra precision for + * this bound on |d| (since when this calculation is expressed + * as x*G(i)-1, the multiplication needs as many extra bits as + * G(i) has and the subtraction cancels 8 bits). But for + * most i (107 cases out of 129), the infinite-precision |d| + * is <= 2**-8. G(i) is rounded to 9 bits for such i to give + * better accuracy (this works by improving the bound on |d|, + * which in turn allows rounding to 9 bits in more cases). + * This is only important when the original x is near 1 -- it + * lets us avoid using a special method to give the desired + * accuracy for such x. + */ + if (0) + d = x * G(i) - 1; + else { +#ifdef USE_UTAB + d = (x - H(i)) * G(i) + E(i); +#else + long double x_hi, x_lo; + float fx_hi; + + /* + * Split x into x_hi + x_lo to calculate x*G(i)-1 exactly. + * G(i) has at most 9 bits, so the splitting point is not + * critical. + */ + SET_FLOAT_WORD(fx_hi, (lx >> 40) | 0x3f800000); + x_hi = fx_hi; + x_lo = x - x_hi; + d = x_hi * G(i) - 1 + x_lo * G(i); +#endif + } + + /* + * Our algorithm depends on exact cancellation of F_lo(i) and + * F_hi(i) with dk*ln_2_lo and dk*ln2_hi when k is -1 and i is + * at the end of the table. This and other technical complications + * make it difficult to avoid the double scaling in (dk*ln2) * + * log(base) for base != e without losing more accuracy and/or + * efficiency than is gained. + */ + z = d * d; + val_lo = z * d * z * (z * (d * P8 + P7) + (d * P6 + P5)) + + (F_lo(i) + dk * ln2_lo + z * d * (d * P4 + P3)) + z * P2; + val_hi = d; +#ifdef DEBUG + if (fetestexcept(FE_UNDERFLOW)) + breakpoint(); +#endif + + _3sumF(val_hi, val_lo, F_hi(i) + dk * ln2_hi); + RETURN2(rp, val_hi, val_lo); +} + +long double +log1pl(long double x) +{ + long double d, d_hi, d_lo, dk, f_lo, val_hi, val_lo, z; + long double f_hi, twopminusk; + uint64_t ix, lx; + int i, k; + int16_t ax, hx; + + DOPRINT_START(&x); + EXTRACT_LDBL80_WORDS(hx, lx, x); + if (hx < 0x3fff) { /* x < 1, or x neg NaN */ + ax = hx & 0x7fff; + if (ax >= 0x3fff) { /* x <= -1, or x neg NaN */ + if (ax == 0x3fff && lx == 0x8000000000000000ULL) + RETURNP(-1 / zero); /* log1p(-1) = -Inf */ + /* log1p(x < 1, or x [pseudo-]NaN) = qNaN: */ + RETURNP((x - x) / (x - x)); + } + if (ax <= 0x3fbe) { /* |x| < 2**-64 */ + if ((int)x == 0) + RETURNP(x); /* x with inexact if x != 0 */ + } + f_hi = 1; + f_lo = x; + } else if (hx >= 0x7fff) { /* x +Inf or non-neg NaN */ + RETURNP(x + x); /* log1p(Inf or NaN) = Inf or qNaN */ + /* log1p(pseudo-Inf) = qNaN */ + /* log1p(pseudo-NaN) = qNaN */ + /* log1p(unnormal) = qNaN */ + } else if (hx < 0x407f) { /* 1 <= x < 2**128 */ + f_hi = x; + f_lo = 1; + } else { /* 2**128 <= x < +Inf */ + f_hi = x; + f_lo = 0; /* avoid underflow of the P5 term */ + } + ENTERI(); + x = f_hi + f_lo; + f_lo = (f_hi - x) + f_lo; + + EXTRACT_LDBL80_WORDS(hx, lx, x); + k = -16383; + + k += hx; + ix = lx & 0x7fffffffffffffffULL; + dk = k; + + SET_LDBL_EXPSIGN(x, 0x3fff); + twopminusk = 1; + SET_LDBL_EXPSIGN(twopminusk, 0x7ffe - (hx & 0x7fff)); + f_lo *= twopminusk; + + i = (ix + (1LL << (L2I - 2))) >> (L2I - 1); + + /* + * x*G(i)-1 (with a reduced x) can be represented exactly, as + * above, but now we need to evaluate the polynomial on d = + * (x+f_lo)*G(i)-1 and extra precision is needed for that. + * Since x+x_lo is a hi+lo decomposition and subtracting 1 + * doesn't lose too many bits, an inexact calculation for + * f_lo*G(i) is good enough. + */ + if (0) + d_hi = x * G(i) - 1; + else { +#ifdef USE_UTAB + d_hi = (x - H(i)) * G(i) + E(i); +#else + long double x_hi, x_lo; + float fx_hi; + + SET_FLOAT_WORD(fx_hi, (lx >> 40) | 0x3f800000); + x_hi = fx_hi; + x_lo = x - x_hi; + d_hi = x_hi * G(i) - 1 + x_lo * G(i); +#endif + } + d_lo = f_lo * G(i); + + /* + * This is _2sumF(d_hi, d_lo) inlined. The condition + * (d_hi == 0 || |d_hi| >= |d_lo|) for using _2sumF() is not + * always satisifed, so it is not clear that this works, but + * it works in practice. It works even if it gives a wrong + * normalized d_lo, since |d_lo| > |d_hi| implies that i is + * nonzero and d is tiny, so the F(i) term dominates d_lo. + * In float precision: + * (By exhaustive testing, the worst case is d_hi = 0x1.bp-25. + * And if d is only a little tinier than that, we would have + * another underflow problem for the P3 term; this is also ruled + * out by exhaustive testing.) + */ + d = d_hi + d_lo; + d_lo = d_hi - d + d_lo; + d_hi = d; + + z = d * d; + val_lo = z * d * z * (z * (d * P8 + P7) + (d * P6 + P5)) + + (F_lo(i) + dk * ln2_lo + d_lo + z * d * (d * P4 + P3)) + z * P2; + val_hi = d_hi; +#ifdef DEBUG + if (fetestexcept(FE_UNDERFLOW)) + breakpoint(); +#endif + + _3sumF(val_hi, val_lo, F_hi(i) + dk * ln2_hi); + RETURN2PI(val_hi, val_lo); +} + +#ifdef STRUCT_RETURN + +long double +logl(long double x) +{ + struct ld r; + + ENTERI(); + DOPRINT_START(&x); + k_logl(x, &r); + RETURNSPI(&r); +} + +/* Use macros since GCC < 8 rejects static const expressions in initializers. */ +#define invln10_hi 4.3429448190317999e-1 /* 0x1bcb7b1526e000.0p-54 */ +#define invln10_lo 7.1842412889749798e-14 /* 0x1438ca9aadd558.0p-96 */ +#define invln2_hi 1.4426950408887933e0 /* 0x171547652b8000.0p-52 */ +#define invln2_lo 1.7010652264631490e-13 /* 0x17f0bbbe87fed0.0p-95 */ +/* Let the compiler pre-calculate this sum to avoid FE_INEXACT at run time. */ +static const double invln10_lo_plus_hi = invln10_lo + invln10_hi; +static const double invln2_lo_plus_hi = invln2_lo + invln2_hi; + +long double +log10l(long double x) +{ + struct ld r; + long double hi, lo; + + ENTERI(); + DOPRINT_START(&x); + k_logl(x, &r); + if (!r.lo_set) + RETURNPI(r.hi); + _2sumF(r.hi, r.lo); + hi = (float)r.hi; + lo = r.lo + (r.hi - hi); + RETURN2PI(invln10_hi * hi, + invln10_lo_plus_hi * lo + invln10_lo * hi); +} + +long double +log2l(long double x) +{ + struct ld r; + long double hi, lo; + + ENTERI(); + DOPRINT_START(&x); + k_logl(x, &r); + if (!r.lo_set) + RETURNPI(r.hi); + _2sumF(r.hi, r.lo); + hi = (float)r.hi; + lo = r.lo + (r.hi - hi); + RETURN2PI(invln2_hi * hi, + invln2_lo_plus_hi * lo + invln2_lo * hi); +} + +#endif /* STRUCT_RETURN */ diff --git a/newlib/libm/ld80/s_sinpil.c b/newlib/libm/ld80/s_sinpil.c new file mode 100644 index 0000000000..e8a3824d9d --- /dev/null +++ b/newlib/libm/ld80/s_sinpil.c @@ -0,0 +1,140 @@ +/*- + * Copyright (c) 2017 Steven G. Kargl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * See ../src/s_sinpi.c for implementation details. + */ + +#ifdef __i386__ +#include +#endif +#include + +#include "fpmath.h" +#include "math.h" +#include "math_private.h" + +static const union IEEEl2bits +pi_hi_u = LD80C(0xc90fdaa200000000, 1, 3.14159265346825122833e+00L), +pi_lo_u = LD80C(0x85a308d313198a2e, -33, 1.21542010130123852029e-10L); +#define pi_hi (pi_hi_u.e) +#define pi_lo (pi_lo_u.e) + +#include "k_cospil.h" +#include "k_sinpil.h" + +volatile static const double vzero = 0; + +long double +sinpil(long double x) +{ + long double ax, hi, lo, s; + uint64_t lx, m; + uint32_t j0; + uint16_t hx, ix; + + EXTRACT_LDBL80_WORDS(hx, lx, x); + ix = hx & 0x7fff; + INSERT_LDBL80_WORDS(ax, ix, lx); + + ENTERI(); + + if (ix < 0x3fff) { /* |x| < 1 */ + if (ix < 0x3ffd) { /* |x| < 0.25 */ + if (ix < 0x3fdd) { /* |x| < 0x1p-34 */ + if (x == 0) + RETURNI(x); + INSERT_LDBL80_WORDS(hi, hx, + lx & 0xffffffff00000000ull); + hi *= 0x1p63L; + lo = x * 0x1p63L - hi; + s = (pi_lo + pi_hi) * lo + pi_lo * hi + + pi_hi * hi; + RETURNI(s * 0x1p-63L); + } + s = __kernel_sinpil(ax); + RETURNI((hx & 0x8000) ? -s : s); + } + + if (ix < 0x3ffe) /* |x| < 0.5 */ + s = __kernel_cospil(0.5 - ax); + else if (lx < 0xc000000000000000ull) /* |x| < 0.75 */ + s = __kernel_cospil(ax - 0.5); + else + s = __kernel_sinpil(1 - ax); + RETURNI((hx & 0x8000) ? -s : s); + } + + if (ix < 0x403e) { /* 1 <= |x| < 0x1p63 */ + /* Determine integer part of ax. */ + j0 = ix - 0x3fff + 1; + if (j0 < 32) { + lx = (lx >> 32) << 32; + lx &= ~(((lx << 32)-1) >> j0); + } else { + m = (uint64_t)-1 >> (j0 + 1); + if (lx & m) lx &= ~m; + } + INSERT_LDBL80_WORDS(x, ix, lx); + + ax -= x; + EXTRACT_LDBL80_WORDS(ix, lx, ax); + + if (ix == 0) { + s = 0; + } else { + if (ix < 0x3ffe) { /* |x| < 0.5 */ + if (ix < 0x3ffd) /* |x| < 0.25 */ + s = __kernel_sinpil(ax); + else + s = __kernel_cospil(0.5 - ax); + } else { + /* |x| < 0.75 */ + if (lx < 0xc000000000000000ull) + s = __kernel_cospil(ax - 0.5); + else + s = __kernel_sinpil(1 - ax); + } + + if (j0 > 40) + x -= 0x1p40; + if (j0 > 30) + x -= 0x1p30; + j0 = (uint32_t)x; + if (j0 & 1) s = -s; + } + RETURNI((hx & 0x8000) ? -s : s); + } + + /* x = +-inf or nan. */ + if (ix >= 0x7fff) + RETURNI(vzero / vzero); + + /* + * |x| >= 0x1p63 is always an integer, so return +-0. + */ + RETURNI(copysignl(0, x)); +} From 048ebea9819b67daefc1ab3cda2add6ebe6f27a0 Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 5 May 2023 13:39:17 -0500 Subject: [PATCH 301/767] newlib: Add non LDBL_EQ_DBL math support for aarch64, i386, and x86_64 Rename s_nearbyint.c, s_fdim.c and s_scalbln.c to remove conflicts Remove functions that are not needed from above files Modify include paths Add includes missing in cygwin build Add missing types Create Makefiles Create header files to resolve dependencies between directories Modify some instances of unsigned long to uint64_t for 32 bit platforms Add HAVE_FPMATH_H --- newlib/libc/acinclude.m4 | 3 + newlib/libc/include/math.h | 3 +- newlib/libc/machine/aarch64/machine/_fpmath.h | 20 ++++--- newlib/libm/Makefile.inc | 8 +++ newlib/libm/ld/Makefile.inc | 56 +++++++++++++++++++ newlib/libm/ld/e_lgammal.c | 2 + newlib/libm/ld/{s_fdim.c => fdiml.c} | 7 +++ newlib/libm/ld/fpmath.h | 2 +- newlib/libm/ld/invtrig.h | 33 +++++++++++ newlib/libm/ld/k_expl.h | 33 +++++++++++ newlib/libm/ld/math_private.h | 21 ++++++- newlib/libm/ld/s_ilogbl.c | 7 ++- newlib/libm/ld/s_logbl.c | 7 ++- newlib/libm/ld/s_lround.c | 2 +- .../libm/ld/{s_nearbyint.c => s_nearbyintl.c} | 7 +++ newlib/libm/ld/s_rintl.c | 1 + newlib/libm/ld/{s_scalbln.c => scalblnl.c} | 7 +++ newlib/libm/ld128/Makefile.inc | 14 +++++ newlib/libm/ld128/e_lgammal_r.c | 4 +- newlib/libm/ld128/e_powl.c | 2 +- newlib/libm/ld128/e_rem_pio2l.h | 2 +- newlib/libm/ld128/invtrig.h | 2 +- newlib/libm/ld128/k_cosl.c | 4 +- newlib/libm/ld128/k_sinl.c | 4 +- newlib/libm/ld128/s_erfl.c | 4 +- newlib/libm/ld128/s_exp2l.c | 2 +- newlib/libm/ld128/s_expl.c | 4 +- newlib/libm/ld128/s_logl.c | 4 +- newlib/libm/ld80/Makefile.inc | 15 +++++ newlib/libm/ld80/b_expl.c | 4 +- newlib/libm/ld80/b_tgammal.c | 7 ++- newlib/libm/ld80/e_lgammal_r.c | 4 +- newlib/libm/ld80/e_powl.c | 4 +- newlib/libm/ld80/e_rem_pio2l.h | 2 +- newlib/libm/ld80/invtrig.h | 2 +- newlib/libm/ld80/k_cosl.c | 4 +- newlib/libm/ld80/k_sinl.c | 4 +- newlib/libm/ld80/s_cospil.c | 4 +- newlib/libm/ld80/s_erfl.c | 4 +- newlib/libm/ld80/s_exp2l.c | 4 +- newlib/libm/ld80/s_expl.c | 4 +- newlib/libm/ld80/s_logl.c | 4 +- newlib/libm/ld80/s_sinpil.c | 4 +- 43 files changed, 275 insertions(+), 60 deletions(-) create mode 100644 newlib/libm/ld/Makefile.inc rename newlib/libm/ld/{s_fdim.c => fdiml.c} (93%) create mode 100644 newlib/libm/ld/invtrig.h create mode 100644 newlib/libm/ld/k_expl.h rename newlib/libm/ld/{s_nearbyint.c => s_nearbyintl.c} (94%) rename newlib/libm/ld/{s_scalbln.c => scalblnl.c} (93%) create mode 100644 newlib/libm/ld128/Makefile.inc create mode 100644 newlib/libm/ld80/Makefile.inc diff --git a/newlib/libc/acinclude.m4 b/newlib/libc/acinclude.m4 index 7cba7db398..42662669f0 100644 --- a/newlib/libc/acinclude.m4 +++ b/newlib/libc/acinclude.m4 @@ -62,4 +62,7 @@ m4_foreach_w([MACHINE], [ z8k ], [AM_CONDITIONAL([HAVE_LIBC_MACHINE_]m4_toupper(MACHINE), test "${machine_dir}" = MACHINE)]) +AM_CONDITIONAL(HAVE_FPMATH_H, test -r "${srcdir}/libc/machine/${machine_dir}/machine/_fpmath.h") + + AM_CONDITIONAL(MACH_ADD_SETJMP, test "x$mach_add_setjmp" = "xtrue") diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h index 54e30ef82d..87f51335f4 100644 --- a/newlib/libc/include/math.h +++ b/newlib/libc/include/math.h @@ -445,7 +445,8 @@ extern float hypotf (float, float); simply call the double functions. On Cygwin the long double functions are implemented independently from newlib to be able to use optimized assembler functions despite using the Microsoft x86_64 ABI. */ -#if defined (_LDBL_EQ_DBL) || defined (__CYGWIN__) +#if defined (_LDBL_EQ_DBL) || defined (__CYGWIN__) || \ + defined(__aarch64__) || defined(__i386__) || defined(__x86_64__) /* Reentrant ANSI C functions. */ #ifndef __math_68881 extern long double atanl (long double); diff --git a/newlib/libc/machine/aarch64/machine/_fpmath.h b/newlib/libc/machine/aarch64/machine/_fpmath.h index 71d0a71523..fa62ae81cf 100644 --- a/newlib/libc/machine/aarch64/machine/_fpmath.h +++ b/newlib/libc/machine/aarch64/machine/_fpmath.h @@ -27,19 +27,25 @@ * $FreeBSD$ */ +/* + * Change unsigned int/long used by FreeBSD to fixed width types because + * ilp32 has a different size for unsigned long. --joel (20 Aug 2022) + */ +#include + union IEEEl2bits { long double e; struct { - unsigned long manl :64; - unsigned long manh :48; - unsigned int exp :15; - unsigned int sign :1; + uint64_t manl :64; + uint64_t manh :48; + uint32_t exp :15; + uint32_t sign :1; } bits; /* TODO andrew: Check the packing here */ struct { - unsigned long manl :64; - unsigned long manh :48; - unsigned int expsign :16; + uint64_t manl :64; + uint64_t manh :48; + uint32_t expsign :16; } xbits; }; diff --git a/newlib/libm/Makefile.inc b/newlib/libm/Makefile.inc index 9d1469555d..075693a73e 100644 --- a/newlib/libm/Makefile.inc +++ b/newlib/libm/Makefile.inc @@ -44,12 +44,18 @@ else include %D%/math/Makefile.inc endif include %D%/common/Makefile.inc + +if HAVE_FPMATH_H +include %D%/ld/Makefile.inc +endif # HAVE_FPMATH_H + include %D%/complex/Makefile.inc include %D%/fenv/Makefile.inc include %D%/test/Makefile.inc if HAVE_LIBM_MACHINE_AARCH64 include %D%/machine/aarch64/Makefile.inc +include %D%/ld128/Makefile.inc endif if HAVE_LIBM_MACHINE_AMDGCN include %D%/machine/amdgcn/Makefile.inc @@ -59,6 +65,7 @@ include %D%/machine/arm/Makefile.inc endif if HAVE_LIBM_MACHINE_I386 include %D%/machine/i386/Makefile.inc +include %D%/ld80/Makefile.inc endif if HAVE_LIBM_MACHINE_MIPS include %D%/machine/mips/Makefile.inc @@ -83,6 +90,7 @@ include %D%/machine/riscv/Makefile.inc endif if HAVE_LIBM_MACHINE_X86_64 include %D%/machine/x86_64/Makefile.inc +include %D%/ld80/Makefile.inc endif CLEANFILES += \ diff --git a/newlib/libm/ld/Makefile.inc b/newlib/libm/ld/Makefile.inc new file mode 100644 index 0000000000..fef3db4a69 --- /dev/null +++ b/newlib/libm/ld/Makefile.inc @@ -0,0 +1,56 @@ +%C%_lsrc = \ + %D%/e_acoshl.c \ + %D%/e_acosl.c \ + %D%/e_asinl.c \ + %D%/e_atan2l.c \ + %D%/e_atanhl.c \ + %D%/e_coshl.c \ + %D%/e_fmodl.c \ + %D%/e_lgammal.c \ + %D%/e_remainderl.c \ + %D%/e_sinhl.c \ + %D%/s_asinhl.c \ + %D%/s_atanl.c \ + %D%/s_cbrtl.c \ + %D%/s_ceill.c \ + %D%/s_copysignl.c \ + %D%/s_cosl.c \ + %D%/s_fabsl.c \ + %D%/fdiml.c \ + %D%/s_floorl.c \ + %D%/s_fmal.c \ + %D%/s_fmaxl.c \ + %D%/s_fminl.c \ + %D%/s_frexpl.c \ + %D%/s_ilogbl.c \ + %D%/s_llrintl.c \ + %D%/s_llroundl.c \ + %D%/s_logbl.c \ + %D%/s_lrint.c \ + %D%/s_lrintl.c \ + %D%/s_lround.c \ + %D%/s_lroundl.c \ + %D%/s_modfl.c \ + %D%/s_nearbyintl.c \ + %D%/s_nextafterl.c \ + %D%/s_nexttoward.c \ + %D%/s_nexttowardf.c \ + %D%/s_remquol.c \ + %D%/s_rintl.c \ + %D%/s_roundl.c \ + %D%/scalblnl.c \ + %D%/s_scalbnl.c \ + %D%/s_sinl.c \ + %D%/s_tanhl.c \ + %D%/s_tanl.c \ + %D%/s_truncl.c + +libm_a_CFLAGS_%C% = -fbuiltin -fno-math-errno + +if HAVE_LONG_DOUBLE +libm_a_SOURCES += $(%C%_lsrc) +endif # HAVE_LONG_DOUBLE + +LIBM_CHEWOUT_FILES += + +LIBM_CHAPTERS += diff --git a/newlib/libm/ld/e_lgammal.c b/newlib/libm/ld/e_lgammal.c index ebc2fc78cb..0e6a0c39b7 100644 --- a/newlib/libm/ld/e_lgammal.c +++ b/newlib/libm/ld/e_lgammal.c @@ -16,6 +16,8 @@ __FBSDID("$FreeBSD$"); #include "math.h" #include "math_private.h" +long double lgammal_r(long double x, int *signp); + extern int signgam; long double diff --git a/newlib/libm/ld/s_fdim.c b/newlib/libm/ld/fdiml.c similarity index 93% rename from newlib/libm/ld/s_fdim.c rename to newlib/libm/ld/fdiml.c index c40c3e9d32..dfdb4e63d3 100644 --- a/newlib/libm/ld/s_fdim.c +++ b/newlib/libm/ld/fdiml.c @@ -43,6 +43,13 @@ fn(type x, type y) \ return (x > y ? x - y : 0.0); \ } +/* + * fdim and fdimf are defined elsewhere in + * newlib. Ignore the freebsd versions and only compile + * fdiml. + */ +#if 0 DECL(double, fdim) DECL(float, fdimf) +#endif DECL(long double, fdiml) diff --git a/newlib/libm/ld/fpmath.h b/newlib/libm/ld/fpmath.h index ce935eb403..323fbe5fcd 100644 --- a/newlib/libm/ld/fpmath.h +++ b/newlib/libm/ld/fpmath.h @@ -33,7 +33,7 @@ #define _FPMATH_H_ #include -#include "_fpmath.h" +#include "machine/_fpmath.h" /* changed to machine for newlib */ #ifndef _IEEE_WORD_ORDER #define _IEEE_WORD_ORDER _BYTE_ORDER diff --git a/newlib/libm/ld/invtrig.h b/newlib/libm/ld/invtrig.h new file mode 100644 index 0000000000..e8d97d3b6c --- /dev/null +++ b/newlib/libm/ld/invtrig.h @@ -0,0 +1,33 @@ +/* + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#if LDBL_MANT_DIG == 64 +#include "../ld80/invtrig.h" +#elif LDBL_MANT_DIG == 113 +#include "../ld128/invtrig.h" +#else +#error "Unsupported long double format" +#endif diff --git a/newlib/libm/ld/k_expl.h b/newlib/libm/ld/k_expl.h new file mode 100644 index 0000000000..721a912801 --- /dev/null +++ b/newlib/libm/ld/k_expl.h @@ -0,0 +1,33 @@ +/* + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#if LDBL_MANT_DIG == 64 +#include "../ld80/k_expl.h" +#elif LDBL_MANT_DIG == 113 +#include "../ld128/k_expl.h" +#else +#error "Unsupported long double format" +#endif diff --git a/newlib/libm/ld/math_private.h b/newlib/libm/ld/math_private.h index c6d06fb145..c5b88f65e9 100644 --- a/newlib/libm/ld/math_private.h +++ b/newlib/libm/ld/math_private.h @@ -20,6 +20,23 @@ #include #include +/* + * __double_t and __float_t are defined elsewhere in + * freebsd and used to define double_t and float_t. + * Newlib has already went through the process of + * defining double_t and float_t so we should be able + * to use them to define __double_t and __float_t for + * this file. + */ +typedef double_t __double_t; +typedef float_t __float_t; + +/* + * Necessary to disable Protection Enabled specific + * Free-bsd source. + */ +#define NO_FPSETPREC + /* * The original fdlibm code used statements like: * n0 = ((*(int*)&one)>>29)^1; * index of high word * @@ -644,7 +661,7 @@ rnintl(long double x) * return type provided their arg is a floating point integer. They can * sometimes be more efficient because no rounding is required. */ -#if defined(amd64) || defined(__i386__) +#if defined(amd64) || (defined(__i386__) && (!defined _SOFT_FLOAT)) #define irint(x) \ (sizeof(x) == sizeof(float) && \ sizeof(__float_t) == sizeof(long double) ? irintf(x) : \ @@ -677,7 +694,7 @@ irintd(double x) } #endif -#if defined(__amd64__) || defined(__i386__) +#if defined(__amd64__) || (defined(__i386__) && (!defined _SOFT_FLOAT)) static __inline int irintl(long double x) { diff --git a/newlib/libm/ld/s_ilogbl.c b/newlib/libm/ld/s_ilogbl.c index 3211f44090..14c632796f 100644 --- a/newlib/libm/ld/s_ilogbl.c +++ b/newlib/libm/ld/s_ilogbl.c @@ -16,6 +16,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include "fpmath.h" @@ -23,7 +24,7 @@ int ilogbl(long double x) { union IEEEl2bits u; - unsigned long m; + uint64_t m; int b; u.e = x; @@ -32,11 +33,11 @@ ilogbl(long double x) return (FP_ILOGB0); /* denormalized */ if (u.bits.manh == 0) { - m = 1lu << (LDBL_MANL_SIZE - 1); + m = 1llu << (LDBL_MANL_SIZE - 1); for (b = LDBL_MANH_SIZE; !(u.bits.manl & m); m >>= 1) b++; } else { - m = 1lu << (LDBL_MANH_SIZE - 1); + m = 1llu << (LDBL_MANH_SIZE - 1); for (b = 0; !(u.bits.manh & m); m >>= 1) b++; } diff --git a/newlib/libm/ld/s_logbl.c b/newlib/libm/ld/s_logbl.c index ee1a91fd83..357a738827 100644 --- a/newlib/libm/ld/s_logbl.c +++ b/newlib/libm/ld/s_logbl.c @@ -16,6 +16,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include "fpmath.h" @@ -23,7 +24,7 @@ long double logbl(long double x) { union IEEEl2bits u; - unsigned long m; + uint64_t m; int b; u.e = x; @@ -34,11 +35,11 @@ logbl(long double x) } /* denormalized */ if (u.bits.manh == 0) { - m = 1lu << (LDBL_MANL_SIZE - 1); + m = 1llu << (LDBL_MANL_SIZE - 1); for (b = LDBL_MANH_SIZE; !(u.bits.manl & m); m >>= 1) b++; } else { - m = 1lu << (LDBL_MANH_SIZE - 1); + m = 1llu << (LDBL_MANH_SIZE - 1); for (b = 0; !(u.bits.manh & m); m >>= 1) b++; } diff --git a/newlib/libm/ld/s_lround.c b/newlib/libm/ld/s_lround.c index 1dd8e697f7..f67f9fbeb5 100644 --- a/newlib/libm/ld/s_lround.c +++ b/newlib/libm/ld/s_lround.c @@ -27,7 +27,7 @@ */ #include -#include +#include #include #include diff --git a/newlib/libm/ld/s_nearbyint.c b/newlib/libm/ld/s_nearbyintl.c similarity index 94% rename from newlib/libm/ld/s_nearbyint.c rename to newlib/libm/ld/s_nearbyintl.c index 796dbaf984..9befed4dfe 100644 --- a/newlib/libm/ld/s_nearbyint.c +++ b/newlib/libm/ld/s_nearbyintl.c @@ -56,6 +56,13 @@ fn(type x) \ return (ret); \ } +/* + * nearbyint and nearbyintf are defined elsewhere in + * newlib. Ignore the freebsd versions and only compile + * nearbyintl. + */ +#if 0 DECL(double, nearbyint, rint) DECL(float, nearbyintf, rintf) +#endif DECL(long double, nearbyintl, rintl) diff --git a/newlib/libm/ld/s_rintl.c b/newlib/libm/ld/s_rintl.c index 1e9824d83b..9bbb7c31e6 100644 --- a/newlib/libm/ld/s_rintl.c +++ b/newlib/libm/ld/s_rintl.c @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include "fpmath.h" diff --git a/newlib/libm/ld/s_scalbln.c b/newlib/libm/ld/scalblnl.c similarity index 93% rename from newlib/libm/ld/s_scalbln.c rename to newlib/libm/ld/scalblnl.c index c27420c929..b0a0fc3237 100644 --- a/newlib/libm/ld/s_scalbln.c +++ b/newlib/libm/ld/scalblnl.c @@ -34,6 +34,12 @@ __FBSDID("$FreeBSD$"); #define NMAX 65536 #define NMIN -65536 +/* + * scalbln and scalblnf are defined elsewhere in + * newlib. Ignore the freebsd versions and only compile + * scalblnl. + */ +#if 0 double scalbln(double x, long n) { @@ -47,6 +53,7 @@ scalblnf(float x, long n) return (scalbnf(x, (n > NMAX) ? NMAX : (n < NMIN) ? NMIN : (int)n)); } +#endif long double scalblnl(long double x, long n) diff --git a/newlib/libm/ld128/Makefile.inc b/newlib/libm/ld128/Makefile.inc new file mode 100644 index 0000000000..337284d690 --- /dev/null +++ b/newlib/libm/ld128/Makefile.inc @@ -0,0 +1,14 @@ +%C%_lsrc = \ + %D%/e_powl.c %D%/s_erfl.c %D%/s_exp2l.c %D%/s_expl.c \ + %D%/s_logl.c %D%/b_tgammal.c %D%/invtrig.c \ + %D%/e_lgammal_r.c %D%/k_cosl.c %D%/k_sinl.c + +libm_a_CFLAGS_%C% = -fbuiltin -fno-math-errno + +if HAVE_LONG_DOUBLE +libm_a_SOURCES += $(%C%_lsrc) +endif # HAVE_LONG_DOUBLE + +LIBM_CHEWOUT_FILES += + +LIBM_CHAPTERS += diff --git a/newlib/libm/ld128/e_lgammal_r.c b/newlib/libm/ld128/e_lgammal_r.c index f236a5da08..fe315a4c58 100644 --- a/newlib/libm/ld128/e_lgammal_r.c +++ b/newlib/libm/ld128/e_lgammal_r.c @@ -19,9 +19,9 @@ __FBSDID("$FreeBSD$"); * Converted to long double by Steven G. Kargl. */ -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" static const volatile double vzero = 0; diff --git a/newlib/libm/ld128/e_powl.c b/newlib/libm/ld128/e_powl.c index 12b92a1a98..ea68f87ba4 100644 --- a/newlib/libm/ld128/e_powl.c +++ b/newlib/libm/ld128/e_powl.c @@ -65,7 +65,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include "math_private.h" +#include "../ld/math_private.h" static const long double bp[] = { 1.0L, diff --git a/newlib/libm/ld128/e_rem_pio2l.h b/newlib/libm/ld128/e_rem_pio2l.h index 10f4edb0f4..55810ab395 100644 --- a/newlib/libm/ld128/e_rem_pio2l.h +++ b/newlib/libm/ld128/e_rem_pio2l.h @@ -25,7 +25,7 @@ __FBSDID("$FreeBSD$"); #include #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" #include "../ld/fpmath.h" #define BIAS (LDBL_MAX_EXP - 1) diff --git a/newlib/libm/ld128/invtrig.h b/newlib/libm/ld128/invtrig.h index 423b568470..eaa801d431 100644 --- a/newlib/libm/ld128/invtrig.h +++ b/newlib/libm/ld128/invtrig.h @@ -30,7 +30,7 @@ #include -#include "fpmath.h" +#include "../ld/fpmath.h" #define BIAS (LDBL_MAX_EXP - 1) #define MANH_SIZE (LDBL_MANH_SIZE + 1) diff --git a/newlib/libm/ld128/k_cosl.c b/newlib/libm/ld128/k_cosl.c index 6807873073..ea5b013c5f 100644 --- a/newlib/libm/ld128/k_cosl.c +++ b/newlib/libm/ld128/k_cosl.c @@ -17,8 +17,8 @@ __FBSDID("$FreeBSD$"); /* * ld128 version of k_cos.c. See ../src/k_cos.c for most comments. */ - -#include "math_private.h" +#include +#include "../ld/math_private.h" /* * Domain [-0.7854, 0.7854], range ~[-1.17e-39, 1.19e-39]: diff --git a/newlib/libm/ld128/k_sinl.c b/newlib/libm/ld128/k_sinl.c index bd415c053c..da9e57f58f 100644 --- a/newlib/libm/ld128/k_sinl.c +++ b/newlib/libm/ld128/k_sinl.c @@ -17,8 +17,8 @@ __FBSDID("$FreeBSD$"); /* * ld128 version of k_sin.c. See ../src/k_sin.c for most comments. */ - -#include "math_private.h" +#include +#include "../ld/math_private.h" static const double half = 0.5; diff --git a/newlib/libm/ld128/s_erfl.c b/newlib/libm/ld128/s_erfl.c index 755294b5d9..3a74659519 100644 --- a/newlib/libm/ld128/s_erfl.c +++ b/newlib/libm/ld128/s_erfl.c @@ -20,9 +20,9 @@ __FBSDID("$FreeBSD$"); */ #include -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" /* XXX Prevent compilers from erroneously constant folding these: */ static const volatile long double tiny = 0x1p-10000L; diff --git a/newlib/libm/ld128/s_exp2l.c b/newlib/libm/ld128/s_exp2l.c index 2ab088f43d..5535e075cb 100644 --- a/newlib/libm/ld128/s_exp2l.c +++ b/newlib/libm/ld128/s_exp2l.c @@ -32,7 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" #define TBLBITS 7 diff --git a/newlib/libm/ld128/s_expl.c b/newlib/libm/ld128/s_expl.c index 5b786af494..29fcda3505 100644 --- a/newlib/libm/ld128/s_expl.c +++ b/newlib/libm/ld128/s_expl.c @@ -37,9 +37,9 @@ __FBSDID("$FreeBSD$"); #include -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" #include "k_expl.h" /* XXX Prevent compilers from erroneously constant folding these: */ diff --git a/newlib/libm/ld128/s_logl.c b/newlib/libm/ld128/s_logl.c index 4774a271e7..3b00d47ad4 100644 --- a/newlib/libm/ld128/s_logl.c +++ b/newlib/libm/ld128/s_logl.c @@ -81,12 +81,12 @@ __FBSDID("$FreeBSD$"); #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" #ifndef NO_STRUCT_RETURN #define STRUCT_RETURN #endif -#include "math_private.h" +#include "../ld/math_private.h" #if !defined(NO_UTAB) && !defined(NO_UTABL) #define USE_UTAB diff --git a/newlib/libm/ld80/Makefile.inc b/newlib/libm/ld80/Makefile.inc new file mode 100644 index 0000000000..97fbacddaa --- /dev/null +++ b/newlib/libm/ld80/Makefile.inc @@ -0,0 +1,15 @@ +%C%_lsrc = \ + %D%/b_tgammal.c %D%/e_powl.c %D%/s_erfl.c %D%/s_exp2l.c \ + %D%/s_expl.c %D%/s_logl.c %D%/s_sinpil.c %D%/s_cospil.c \ + %D%/invtrig.c %D%/e_lgammal_r.c %D%/k_cosl.c %D%/k_sinl.c + + +libm_a_CFLAGS_%C% = -fbuiltin -fno-math-errno + +if HAVE_LONG_DOUBLE +libm_a_SOURCES += $(%C%_lsrc) +endif # HAVE_LONG_DOUBLE + +LIBM_CHEWOUT_FILES += + +LIBM_CHAPTERS += diff --git a/newlib/libm/ld80/b_expl.c b/newlib/libm/ld80/b_expl.c index c18a554510..26c95fb7bf 100644 --- a/newlib/libm/ld80/b_expl.c +++ b/newlib/libm/ld80/b_expl.c @@ -35,8 +35,8 @@ * bsdrc/b_exp.c converted to long double by Steven G. Kargl. */ -#include "fpmath.h" -#include "math_private.h" +#include "../ld/fpmath.h" +#include "../ld/math_private.h" static const union IEEEl2bits p0u = LD80C(0xaaaaaaaaaaaaaaab, -3, 1.66666666666666666671e-01L), diff --git a/newlib/libm/ld80/b_tgammal.c b/newlib/libm/ld80/b_tgammal.c index 2b955d6585..efc0e24345 100644 --- a/newlib/libm/ld80/b_tgammal.c +++ b/newlib/libm/ld80/b_tgammal.c @@ -55,9 +55,12 @@ #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" + +long double sinpil(long double x); +long double cospil(long double x); /* Used in b_log.c and below. */ struct Double { diff --git a/newlib/libm/ld80/e_lgammal_r.c b/newlib/libm/ld80/e_lgammal_r.c index 7d3697bb99..840c7ccbea 100644 --- a/newlib/libm/ld80/e_lgammal_r.c +++ b/newlib/libm/ld80/e_lgammal_r.c @@ -23,9 +23,9 @@ __FBSDID("$FreeBSD$"); #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" static const volatile double vzero = 0; diff --git a/newlib/libm/ld80/e_powl.c b/newlib/libm/ld80/e_powl.c index ea25354c2a..6c11c73d0f 100644 --- a/newlib/libm/ld80/e_powl.c +++ b/newlib/libm/ld80/e_powl.c @@ -19,7 +19,7 @@ __FBSDID("$FreeBSD$"); #include -#include "math_private.h" +#include "../ld/math_private.h" /* * Polynomial evaluator: @@ -122,7 +122,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include "math_private.h" +#include "../ld/math_private.h" /* Table size */ #define NXT 32 diff --git a/newlib/libm/ld80/e_rem_pio2l.h b/newlib/libm/ld80/e_rem_pio2l.h index 4d849de41e..496a077441 100644 --- a/newlib/libm/ld80/e_rem_pio2l.h +++ b/newlib/libm/ld80/e_rem_pio2l.h @@ -25,7 +25,7 @@ __FBSDID("$FreeBSD$"); #include #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" #include "../ld/fpmath.h" #define BIAS (LDBL_MAX_EXP - 1) diff --git a/newlib/libm/ld80/invtrig.h b/newlib/libm/ld80/invtrig.h index be06a044bd..4a2469ed6c 100644 --- a/newlib/libm/ld80/invtrig.h +++ b/newlib/libm/ld80/invtrig.h @@ -30,7 +30,7 @@ #include -#include "fpmath.h" +#include "../ld/fpmath.h" #define BIAS (LDBL_MAX_EXP - 1) #define MANH_SIZE LDBL_MANH_SIZE diff --git a/newlib/libm/ld80/k_cosl.c b/newlib/libm/ld80/k_cosl.c index 354bf1d0e7..f7ba7cf3d1 100644 --- a/newlib/libm/ld80/k_cosl.c +++ b/newlib/libm/ld80/k_cosl.c @@ -17,8 +17,8 @@ __FBSDID("$FreeBSD$"); /* * ld80 version of k_cos.c. See ../src/k_cos.c for most comments. */ - -#include "math_private.h" +#include +#include "../ld/math_private.h" /* * Domain [-0.7854, 0.7854], range ~[-2.43e-23, 2.425e-23]: diff --git a/newlib/libm/ld80/k_sinl.c b/newlib/libm/ld80/k_sinl.c index 1715490570..7d6e9717d3 100644 --- a/newlib/libm/ld80/k_sinl.c +++ b/newlib/libm/ld80/k_sinl.c @@ -17,8 +17,8 @@ __FBSDID("$FreeBSD$"); /* * ld80 version of k_sin.c. See ../src/k_sin.c for most comments. */ - -#include "math_private.h" +#include +#include "../ld/math_private.h" static const double half = 0.5; diff --git a/newlib/libm/ld80/s_cospil.c b/newlib/libm/ld80/s_cospil.c index 199479e9ea..75ec27d0c5 100644 --- a/newlib/libm/ld80/s_cospil.c +++ b/newlib/libm/ld80/s_cospil.c @@ -33,9 +33,9 @@ #endif #include -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" static const double pi_hi = 3.1415926814079285e+00, /* 0x400921fb 0x58000000 */ diff --git a/newlib/libm/ld80/s_erfl.c b/newlib/libm/ld80/s_erfl.c index 1d54838f5e..da04cd8ea8 100644 --- a/newlib/libm/ld80/s_erfl.c +++ b/newlib/libm/ld80/s_erfl.c @@ -23,9 +23,9 @@ __FBSDID("$FreeBSD$"); #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" /* XXX Prevent compilers from erroneously constant folding: */ static const volatile long double tiny = 0x1p-10000L; diff --git a/newlib/libm/ld80/s_exp2l.c b/newlib/libm/ld80/s_exp2l.c index 421d6e2e04..552956b8b7 100644 --- a/newlib/libm/ld80/s_exp2l.c +++ b/newlib/libm/ld80/s_exp2l.c @@ -36,9 +36,9 @@ __FBSDID("$FreeBSD$"); #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" #define TBLBITS 7 #define TBLSIZE (1 << TBLBITS) diff --git a/newlib/libm/ld80/s_expl.c b/newlib/libm/ld80/s_expl.c index e46e73f0c1..81469e00fb 100644 --- a/newlib/libm/ld80/s_expl.c +++ b/newlib/libm/ld80/s_expl.c @@ -47,9 +47,9 @@ __FBSDID("$FreeBSD$"); #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" #include "k_expl.h" /* XXX Prevent compilers from erroneously constant folding these: */ diff --git a/newlib/libm/ld80/s_logl.c b/newlib/libm/ld80/s_logl.c index c74519cafd..01e541b497 100644 --- a/newlib/libm/ld80/s_logl.c +++ b/newlib/libm/ld80/s_logl.c @@ -85,13 +85,13 @@ __FBSDID("$FreeBSD$"); #include #endif -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" #define i386_SSE_GOOD #ifndef NO_STRUCT_RETURN #define STRUCT_RETURN #endif -#include "math_private.h" +#include "../ld/math_private.h" #if !defined(NO_UTAB) && !defined(NO_UTABL) #define USE_UTAB diff --git a/newlib/libm/ld80/s_sinpil.c b/newlib/libm/ld80/s_sinpil.c index e8a3824d9d..3390d4d056 100644 --- a/newlib/libm/ld80/s_sinpil.c +++ b/newlib/libm/ld80/s_sinpil.c @@ -33,9 +33,9 @@ #endif #include -#include "fpmath.h" +#include "../ld/fpmath.h" #include "math.h" -#include "math_private.h" +#include "../ld/math_private.h" static const union IEEEl2bits pi_hi_u = LD80C(0xc90fdaa200000000, 1, 3.14159265346825122833e+00L), From 9ae9eef21db51e1e26d43a2c1347de5dc50170fd Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Fri, 5 May 2023 13:39:18 -0500 Subject: [PATCH 302/767] Regenerated source for adding non LDBL_EQ_DBL --- newlib/Makefile.in | 1463 ++++++++++++++++++++++++++++++++++++++++++-- newlib/configure | 16 + 2 files changed, 1414 insertions(+), 65 deletions(-) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 644bf8bce2..4d2b5e7825 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -910,20 +910,32 @@ check_PROGRAMS = @NEWLIB_HW_FP_FALSE@am__append_136 = libm/math/math.tex @HAVE_LONG_DOUBLE_TRUE@am__append_137 = $(libm_common_lsrc) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_138 = $(libm_machine_aarch64_src) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_139 = $(libm_machine_amdgcn_src) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_140 = $(libm_machine_arm_src) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_141 = $(libm_machine_i386_src) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_142 = $(libm_machine_mips_src) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_143 = libm/machine/nds32/wf_sqrt.S -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_144 = libm/machine/nds32/w_sqrt.S -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_145 = $(libm_machine_nds32_src) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_146 = $(libm_machine_powerpc_src) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_147 = $(libm_machine_pru_src) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_148 = $(libm_machine_sparc_src) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_149 = $(libm_machine_spu_src) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_150 = $(libm_machine_riscv_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_151 = $(libm_machine_x86_64_src) +@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_138 = $(libm_ld_lsrc) +@HAVE_FPMATH_H_TRUE@am__append_139 = +@HAVE_FPMATH_H_TRUE@am__append_140 = +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_141 = $(libm_machine_aarch64_src) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_142 = $(libm_ld128_lsrc) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_143 = +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_144 = +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_145 = $(libm_machine_amdgcn_src) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_146 = $(libm_machine_arm_src) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_147 = $(libm_machine_i386_src) +@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_148 = $(libm_ld80_lsrc) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_149 = +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_150 = +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_151 = $(libm_machine_mips_src) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_152 = libm/machine/nds32/wf_sqrt.S +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_153 = libm/machine/nds32/w_sqrt.S +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_154 = $(libm_machine_nds32_src) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_155 = $(libm_machine_powerpc_src) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_156 = $(libm_machine_pru_src) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_157 = $(libm_machine_sparc_src) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_158 = $(libm_machine_spu_src) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_159 = $(libm_machine_riscv_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_160 = $(libm_machine_x86_64_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_161 = $(libm_ld80_lsrc) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_162 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_163 = subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -2968,7 +2980,55 @@ am__objects_150 = libm/common/libm_a-atanl.$(OBJEXT) \ libm/common/libm_a-log2l.$(OBJEXT) \ libm/common/libm_a-sl_finite.$(OBJEXT) @HAVE_LONG_DOUBLE_TRUE@am__objects_151 = $(am__objects_150) -am__objects_152 = libm/complex/libm_a-cabs.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@am__objects_152 = \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_acoshl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_acosl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_asinl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_atan2l.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_atanhl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_coshl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_fmodl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_lgammal.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_remainderl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_sinhl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_asinhl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_atanl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_cbrtl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_ceill.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_copysignl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_cosl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_fabsl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-fdiml.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_floorl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_fmal.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_fmaxl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_fminl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_frexpl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_ilogbl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_llrintl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_llroundl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_logbl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_lrint.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_lrintl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_lround.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_lroundl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_modfl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_nearbyintl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_nextafterl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_nexttoward.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_nexttowardf.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_remquol.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_rintl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_roundl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-scalblnl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_scalbnl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_sinl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_tanhl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_tanl.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_truncl.$(OBJEXT) +@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_153 = \ +@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@ $(am__objects_152) +am__objects_154 = libm/complex/libm_a-cabs.$(OBJEXT) \ libm/complex/libm_a-cacos.$(OBJEXT) \ libm/complex/libm_a-cacosh.$(OBJEXT) \ libm/complex/libm_a-carg.$(OBJEXT) \ @@ -2992,7 +3052,7 @@ am__objects_152 = libm/complex/libm_a-cabs.$(OBJEXT) \ libm/complex/libm_a-csqrt.$(OBJEXT) \ libm/complex/libm_a-ctan.$(OBJEXT) \ libm/complex/libm_a-ctanh.$(OBJEXT) -am__objects_153 = libm/complex/libm_a-cabsf.$(OBJEXT) \ +am__objects_155 = libm/complex/libm_a-cabsf.$(OBJEXT) \ libm/complex/libm_a-casinf.$(OBJEXT) \ libm/complex/libm_a-ccosf.$(OBJEXT) \ libm/complex/libm_a-cimagf.$(OBJEXT) \ @@ -3016,7 +3076,7 @@ am__objects_153 = libm/complex/libm_a-cabsf.$(OBJEXT) \ libm/complex/libm_a-cexpf.$(OBJEXT) \ libm/complex/libm_a-cpowf.$(OBJEXT) \ libm/complex/libm_a-csinhf.$(OBJEXT) -am__objects_154 = libm/complex/libm_a-cabsl.$(OBJEXT) \ +am__objects_156 = libm/complex/libm_a-cabsl.$(OBJEXT) \ libm/complex/libm_a-creall.$(OBJEXT) \ libm/complex/libm_a-cimagl.$(OBJEXT) \ libm/complex/libm_a-ccoshl.$(OBJEXT) \ @@ -3039,7 +3099,7 @@ am__objects_154 = libm/complex/libm_a-cabsl.$(OBJEXT) \ libm/complex/libm_a-csinhl.$(OBJEXT) \ libm/complex/libm_a-csinl.$(OBJEXT) \ libm/complex/libm_a-catanl.$(OBJEXT) -am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ +am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ libm/fenv/libm_a-fe_dfl_env.$(OBJEXT) \ libm/fenv/libm_a-fegetenv.$(OBJEXT) \ libm/fenv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3051,7 +3111,7 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ libm/fenv/libm_a-fesetround.$(OBJEXT) \ libm/fenv/libm_a-fetestexcept.$(OBJEXT) \ libm/fenv/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_156 = libm/machine/aarch64/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_158 = libm/machine/aarch64/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-s_fabs.$(OBJEXT) \ @@ -3093,8 +3153,19 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_157 = $(am__objects_156) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_158 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_159 = $(am__objects_158) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_160 = libm/ld128/libm_a-e_powl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_erfl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_exp2l.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_expl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_logl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-b_tgammal.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-invtrig.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-e_lgammal_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-k_cosl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-k_sinl.$(OBJEXT) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_161 = $(am__objects_160) +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_162 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT) \ @@ -3182,8 +3253,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_159 = $(am__objects_158) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_160 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_163 = $(am__objects_162) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_164 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_floor.$(OBJEXT) \ @@ -3214,8 +3285,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feenableexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-fedisableexcept.$(OBJEXT) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_161 = $(am__objects_160) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_162 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_165 = $(am__objects_164) +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_166 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_atan2f.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_exp.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_expf.$(OBJEXT) \ @@ -3252,8 +3323,33 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_163 = $(am__objects_162) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_164 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_167 = $(am__objects_166) +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_168 = libm/ld80/libm_a-b_tgammal.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-e_powl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_erfl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_exp2l.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_expl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_logl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_sinpil.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_cospil.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-invtrig.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-e_lgammal_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-k_cosl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-k_sinl.$(OBJEXT) +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_168 = libm/ld80/libm_a-b_tgammal.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-e_powl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_erfl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_exp2l.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_expl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_logl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_sinpil.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_cospil.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-invtrig.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-e_lgammal_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-k_cosl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-k_sinl.$(OBJEXT) +@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_169 = $(am__objects_168) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_170 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetround.$(OBJEXT) \ @@ -3265,13 +3361,13 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_165 = $(am__objects_164) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_166 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_167 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_168 = $(am__objects_166) \ -@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_167) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_169 = $(am__objects_168) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_170 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_171 = $(am__objects_170) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_172 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_173 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_174 = $(am__objects_172) \ +@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_173) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_175 = $(am__objects_174) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_176 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetround.$(OBJEXT) \ @@ -3283,8 +3379,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_171 = $(am__objects_170) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_172 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_177 = $(am__objects_176) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_178 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-fpclassifyf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinite.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinitef.$(OBJEXT) \ @@ -3294,8 +3390,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnanf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormalf.$(OBJEXT) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_173 = $(am__objects_172) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_174 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_179 = $(am__objects_178) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_180 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetround.$(OBJEXT) \ @@ -3307,8 +3403,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_175 = $(am__objects_174) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_176 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_181 = $(am__objects_180) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_182 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3433,8 +3529,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sinh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_177 = $(am__objects_176) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_178 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_183 = $(am__objects_182) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_184 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3474,8 +3570,8 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llrint.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-s_llround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llround.$(OBJEXT) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_179 = $(am__objects_178) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_180 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_185 = $(am__objects_184) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_186 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetround.$(OBJEXT) \ @@ -3487,15 +3583,17 @@ am__objects_155 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_181 = $(am__objects_180) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_187 = $(am__objects_186) +@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_188 = $(am__objects_168) am_libm_a_OBJECTS = $(am__objects_143) $(am__objects_147) \ $(am__objects_148) $(am__objects_149) $(am__objects_151) \ - $(am__objects_152) $(am__objects_153) $(am__objects_154) \ - $(am__objects_155) $(am__objects_157) $(am__objects_159) \ + $(am__objects_153) $(am__objects_154) $(am__objects_155) \ + $(am__objects_156) $(am__objects_157) $(am__objects_159) \ $(am__objects_161) $(am__objects_163) $(am__objects_165) \ - $(am__objects_169) $(am__objects_171) $(am__objects_173) \ + $(am__objects_167) $(am__objects_169) $(am__objects_171) \ $(am__objects_175) $(am__objects_177) $(am__objects_179) \ - $(am__objects_181) + $(am__objects_181) $(am__objects_183) $(am__objects_185) \ + $(am__objects_187) $(am__objects_188) libm_a_OBJECTS = $(am_libm_a_OBJECTS) am_libm_test_test_OBJECTS = libm/test/test.$(OBJEXT) \ libm/test/string.$(OBJEXT) libm/test/convert.$(OBJEXT) \ @@ -4044,12 +4142,13 @@ libc_a_CPPFLAGS = $(AM_CPPFLAGS) $(libc_a_CPPFLAGS_$(subst /,_,$(@D))) $(libc_a_ libc_a_DEPENDENCIES = stamp-libc-math-objects libm_a_SOURCES = $(am__append_131) $(am__append_134) \ $(libm_common_src) $(libm_common_fsrc) $(am__append_137) \ - $(libm_complex_src) $(libm_complex_fsrc) $(libm_complex_lsrc) \ - $(libm_fenv_src) $(am__append_138) $(am__append_139) \ - $(am__append_140) $(am__append_141) $(am__append_142) \ - $(am__append_145) $(am__append_146) $(am__append_147) \ - $(am__append_148) $(am__append_149) $(am__append_150) \ - $(am__append_151) + $(am__append_138) $(libm_complex_src) $(libm_complex_fsrc) \ + $(libm_complex_lsrc) $(libm_fenv_src) $(am__append_141) \ + $(am__append_142) $(am__append_145) $(am__append_146) \ + $(am__append_147) $(am__append_148) $(am__append_151) \ + $(am__append_154) $(am__append_155) $(am__append_156) \ + $(am__append_157) $(am__append_158) $(am__append_159) \ + $(am__append_160) $(am__append_161) libm_a_CFLAGS = $(AM_CFLAGS) $(libm_a_CFLAGS_$(subst /,_,$(@D))) $(libm_a_CFLAGS_$(subst /,_,$(@D)_$( libm/ld/$(am__dirstamp) +libm/ld/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libm/ld/$(DEPDIR) + @: > libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_acoshl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_acosl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_asinl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_atan2l.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_atanhl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_coshl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_fmodl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_lgammal.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_remainderl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-e_sinhl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_asinhl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_atanl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_cbrtl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_ceill.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_copysignl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_cosl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_fabsl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-fdiml.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_floorl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_fmal.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_fmaxl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_fminl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_frexpl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_ilogbl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_llrintl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_llroundl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_logbl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_lrint.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_lrintl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_lround.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_lroundl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_modfl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_nearbyintl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_nextafterl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_nexttoward.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_nexttowardf.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_remquol.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_rintl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_roundl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-scalblnl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_scalbnl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_sinl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_tanhl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_tanl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) +libm/ld/libm_a-s_truncl.$(OBJEXT): libm/ld/$(am__dirstamp) \ + libm/ld/$(DEPDIR)/$(am__dirstamp) libm/complex/$(am__dirstamp): @$(MKDIR_P) libm/complex @: > libm/complex/$(am__dirstamp) @@ -10594,6 +10857,32 @@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT): \ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT): \ libm/machine/aarch64/$(am__dirstamp) \ libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp) +libm/ld128/$(am__dirstamp): + @$(MKDIR_P) libm/ld128 + @: > libm/ld128/$(am__dirstamp) +libm/ld128/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libm/ld128/$(DEPDIR) + @: > libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-e_powl.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-s_erfl.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-s_exp2l.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-s_expl.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-s_logl.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-b_tgammal.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-invtrig.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-e_lgammal_r.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-k_cosl.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) +libm/ld128/libm_a-k_sinl.$(OBJEXT): libm/ld128/$(am__dirstamp) \ + libm/ld128/$(DEPDIR)/$(am__dirstamp) libm/machine/amdgcn/$(am__dirstamp): @$(MKDIR_P) libm/machine/amdgcn @: > libm/machine/amdgcn/$(am__dirstamp) @@ -11080,6 +11369,36 @@ libm/machine/i386/libm_a-fetestexcept.$(OBJEXT): \ libm/machine/i386/libm_a-feupdateenv.$(OBJEXT): \ libm/machine/i386/$(am__dirstamp) \ libm/machine/i386/$(DEPDIR)/$(am__dirstamp) +libm/ld80/$(am__dirstamp): + @$(MKDIR_P) libm/ld80 + @: > libm/ld80/$(am__dirstamp) +libm/ld80/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libm/ld80/$(DEPDIR) + @: > libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-b_tgammal.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-e_powl.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-s_erfl.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-s_exp2l.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-s_expl.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-s_logl.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-s_sinpil.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-s_cospil.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-invtrig.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-e_lgammal_r.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-k_cosl.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) +libm/ld80/libm_a-k_sinl.$(OBJEXT): libm/ld80/$(am__dirstamp) \ + libm/ld80/$(DEPDIR)/$(am__dirstamp) libm/machine/mips/$(am__dirstamp): @$(MKDIR_P) libm/machine/mips @: > libm/machine/mips/$(am__dirstamp) @@ -12079,6 +12398,9 @@ mostlyclean-compile: -rm -f libm/common/*.$(OBJEXT) -rm -f libm/complex/*.$(OBJEXT) -rm -f libm/fenv/*.$(OBJEXT) + -rm -f libm/ld/*.$(OBJEXT) + -rm -f libm/ld128/*.$(OBJEXT) + -rm -f libm/ld80/*.$(OBJEXT) -rm -f libm/machine/aarch64/*.$(OBJEXT) -rm -f libm/machine/amdgcn/*.$(OBJEXT) -rm -f libm/machine/arm/*.$(OBJEXT) @@ -13815,6 +14137,73 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libm/fenv/$(DEPDIR)/libm_a-fesetround.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/fenv/$(DEPDIR)/libm_a-fetestexcept.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/fenv/$(DEPDIR)/libm_a-feupdateenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_acoshl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_acosl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_asinl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_atan2l.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_atanhl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_coshl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_fmodl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_lgammal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_remainderl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-e_sinhl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-fdiml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_asinhl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_atanl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_ceill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_copysignl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_cosl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_fabsl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_floorl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_fmal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_fminl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_frexpl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_llrintl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_llroundl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_logbl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_lrint.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_lrintl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_lround.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_lroundl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_modfl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_remquol.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_rintl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_roundl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_sinl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_tanhl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_tanl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-s_truncl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld/$(DEPDIR)/libm_a-scalblnl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-e_powl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-invtrig.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-k_cosl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-k_sinl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-s_erfl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-s_expl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld128/$(DEPDIR)/libm_a-s_logl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-e_powl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-invtrig.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-k_cosl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-k_sinl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-s_cospil.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-s_erfl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-s_expl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-s_logl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-e_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-ef_sqrt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/aarch64/$(DEPDIR)/libm_a-feclearexcept.Po@am__quote@ @@ -40856,6 +41245,636 @@ libm/common/libm_a-sl_finite.obj: libm/common/sl_finite.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/common/libm_a-sl_finite.obj `if test -f 'libm/common/sl_finite.c'; then $(CYGPATH_W) 'libm/common/sl_finite.c'; else $(CYGPATH_W) '$(srcdir)/libm/common/sl_finite.c'; fi` +libm/ld/libm_a-e_acoshl.o: libm/ld/e_acoshl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_acoshl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_acoshl.Tpo -c -o libm/ld/libm_a-e_acoshl.o `test -f 'libm/ld/e_acoshl.c' || echo '$(srcdir)/'`libm/ld/e_acoshl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_acoshl.Tpo libm/ld/$(DEPDIR)/libm_a-e_acoshl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_acoshl.c' object='libm/ld/libm_a-e_acoshl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_acoshl.o `test -f 'libm/ld/e_acoshl.c' || echo '$(srcdir)/'`libm/ld/e_acoshl.c + +libm/ld/libm_a-e_acoshl.obj: libm/ld/e_acoshl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_acoshl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_acoshl.Tpo -c -o libm/ld/libm_a-e_acoshl.obj `if test -f 'libm/ld/e_acoshl.c'; then $(CYGPATH_W) 'libm/ld/e_acoshl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_acoshl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_acoshl.Tpo libm/ld/$(DEPDIR)/libm_a-e_acoshl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_acoshl.c' object='libm/ld/libm_a-e_acoshl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_acoshl.obj `if test -f 'libm/ld/e_acoshl.c'; then $(CYGPATH_W) 'libm/ld/e_acoshl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_acoshl.c'; fi` + +libm/ld/libm_a-e_acosl.o: libm/ld/e_acosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_acosl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_acosl.Tpo -c -o libm/ld/libm_a-e_acosl.o `test -f 'libm/ld/e_acosl.c' || echo '$(srcdir)/'`libm/ld/e_acosl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_acosl.Tpo libm/ld/$(DEPDIR)/libm_a-e_acosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_acosl.c' object='libm/ld/libm_a-e_acosl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_acosl.o `test -f 'libm/ld/e_acosl.c' || echo '$(srcdir)/'`libm/ld/e_acosl.c + +libm/ld/libm_a-e_acosl.obj: libm/ld/e_acosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_acosl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_acosl.Tpo -c -o libm/ld/libm_a-e_acosl.obj `if test -f 'libm/ld/e_acosl.c'; then $(CYGPATH_W) 'libm/ld/e_acosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_acosl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_acosl.Tpo libm/ld/$(DEPDIR)/libm_a-e_acosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_acosl.c' object='libm/ld/libm_a-e_acosl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_acosl.obj `if test -f 'libm/ld/e_acosl.c'; then $(CYGPATH_W) 'libm/ld/e_acosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_acosl.c'; fi` + +libm/ld/libm_a-e_asinl.o: libm/ld/e_asinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_asinl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_asinl.Tpo -c -o libm/ld/libm_a-e_asinl.o `test -f 'libm/ld/e_asinl.c' || echo '$(srcdir)/'`libm/ld/e_asinl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_asinl.Tpo libm/ld/$(DEPDIR)/libm_a-e_asinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_asinl.c' object='libm/ld/libm_a-e_asinl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_asinl.o `test -f 'libm/ld/e_asinl.c' || echo '$(srcdir)/'`libm/ld/e_asinl.c + +libm/ld/libm_a-e_asinl.obj: libm/ld/e_asinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_asinl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_asinl.Tpo -c -o libm/ld/libm_a-e_asinl.obj `if test -f 'libm/ld/e_asinl.c'; then $(CYGPATH_W) 'libm/ld/e_asinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_asinl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_asinl.Tpo libm/ld/$(DEPDIR)/libm_a-e_asinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_asinl.c' object='libm/ld/libm_a-e_asinl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_asinl.obj `if test -f 'libm/ld/e_asinl.c'; then $(CYGPATH_W) 'libm/ld/e_asinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_asinl.c'; fi` + +libm/ld/libm_a-e_atan2l.o: libm/ld/e_atan2l.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_atan2l.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_atan2l.Tpo -c -o libm/ld/libm_a-e_atan2l.o `test -f 'libm/ld/e_atan2l.c' || echo '$(srcdir)/'`libm/ld/e_atan2l.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_atan2l.Tpo libm/ld/$(DEPDIR)/libm_a-e_atan2l.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_atan2l.c' object='libm/ld/libm_a-e_atan2l.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_atan2l.o `test -f 'libm/ld/e_atan2l.c' || echo '$(srcdir)/'`libm/ld/e_atan2l.c + +libm/ld/libm_a-e_atan2l.obj: libm/ld/e_atan2l.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_atan2l.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_atan2l.Tpo -c -o libm/ld/libm_a-e_atan2l.obj `if test -f 'libm/ld/e_atan2l.c'; then $(CYGPATH_W) 'libm/ld/e_atan2l.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_atan2l.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_atan2l.Tpo libm/ld/$(DEPDIR)/libm_a-e_atan2l.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_atan2l.c' object='libm/ld/libm_a-e_atan2l.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_atan2l.obj `if test -f 'libm/ld/e_atan2l.c'; then $(CYGPATH_W) 'libm/ld/e_atan2l.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_atan2l.c'; fi` + +libm/ld/libm_a-e_atanhl.o: libm/ld/e_atanhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_atanhl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_atanhl.Tpo -c -o libm/ld/libm_a-e_atanhl.o `test -f 'libm/ld/e_atanhl.c' || echo '$(srcdir)/'`libm/ld/e_atanhl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_atanhl.Tpo libm/ld/$(DEPDIR)/libm_a-e_atanhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_atanhl.c' object='libm/ld/libm_a-e_atanhl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_atanhl.o `test -f 'libm/ld/e_atanhl.c' || echo '$(srcdir)/'`libm/ld/e_atanhl.c + +libm/ld/libm_a-e_atanhl.obj: libm/ld/e_atanhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_atanhl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_atanhl.Tpo -c -o libm/ld/libm_a-e_atanhl.obj `if test -f 'libm/ld/e_atanhl.c'; then $(CYGPATH_W) 'libm/ld/e_atanhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_atanhl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_atanhl.Tpo libm/ld/$(DEPDIR)/libm_a-e_atanhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_atanhl.c' object='libm/ld/libm_a-e_atanhl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_atanhl.obj `if test -f 'libm/ld/e_atanhl.c'; then $(CYGPATH_W) 'libm/ld/e_atanhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_atanhl.c'; fi` + +libm/ld/libm_a-e_coshl.o: libm/ld/e_coshl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_coshl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_coshl.Tpo -c -o libm/ld/libm_a-e_coshl.o `test -f 'libm/ld/e_coshl.c' || echo '$(srcdir)/'`libm/ld/e_coshl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_coshl.Tpo libm/ld/$(DEPDIR)/libm_a-e_coshl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_coshl.c' object='libm/ld/libm_a-e_coshl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_coshl.o `test -f 'libm/ld/e_coshl.c' || echo '$(srcdir)/'`libm/ld/e_coshl.c + +libm/ld/libm_a-e_coshl.obj: libm/ld/e_coshl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_coshl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_coshl.Tpo -c -o libm/ld/libm_a-e_coshl.obj `if test -f 'libm/ld/e_coshl.c'; then $(CYGPATH_W) 'libm/ld/e_coshl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_coshl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_coshl.Tpo libm/ld/$(DEPDIR)/libm_a-e_coshl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_coshl.c' object='libm/ld/libm_a-e_coshl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_coshl.obj `if test -f 'libm/ld/e_coshl.c'; then $(CYGPATH_W) 'libm/ld/e_coshl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_coshl.c'; fi` + +libm/ld/libm_a-e_fmodl.o: libm/ld/e_fmodl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_fmodl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_fmodl.Tpo -c -o libm/ld/libm_a-e_fmodl.o `test -f 'libm/ld/e_fmodl.c' || echo '$(srcdir)/'`libm/ld/e_fmodl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_fmodl.Tpo libm/ld/$(DEPDIR)/libm_a-e_fmodl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_fmodl.c' object='libm/ld/libm_a-e_fmodl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_fmodl.o `test -f 'libm/ld/e_fmodl.c' || echo '$(srcdir)/'`libm/ld/e_fmodl.c + +libm/ld/libm_a-e_fmodl.obj: libm/ld/e_fmodl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_fmodl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_fmodl.Tpo -c -o libm/ld/libm_a-e_fmodl.obj `if test -f 'libm/ld/e_fmodl.c'; then $(CYGPATH_W) 'libm/ld/e_fmodl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_fmodl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_fmodl.Tpo libm/ld/$(DEPDIR)/libm_a-e_fmodl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_fmodl.c' object='libm/ld/libm_a-e_fmodl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_fmodl.obj `if test -f 'libm/ld/e_fmodl.c'; then $(CYGPATH_W) 'libm/ld/e_fmodl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_fmodl.c'; fi` + +libm/ld/libm_a-e_lgammal.o: libm/ld/e_lgammal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_lgammal.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_lgammal.Tpo -c -o libm/ld/libm_a-e_lgammal.o `test -f 'libm/ld/e_lgammal.c' || echo '$(srcdir)/'`libm/ld/e_lgammal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_lgammal.Tpo libm/ld/$(DEPDIR)/libm_a-e_lgammal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_lgammal.c' object='libm/ld/libm_a-e_lgammal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_lgammal.o `test -f 'libm/ld/e_lgammal.c' || echo '$(srcdir)/'`libm/ld/e_lgammal.c + +libm/ld/libm_a-e_lgammal.obj: libm/ld/e_lgammal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_lgammal.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_lgammal.Tpo -c -o libm/ld/libm_a-e_lgammal.obj `if test -f 'libm/ld/e_lgammal.c'; then $(CYGPATH_W) 'libm/ld/e_lgammal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_lgammal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_lgammal.Tpo libm/ld/$(DEPDIR)/libm_a-e_lgammal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_lgammal.c' object='libm/ld/libm_a-e_lgammal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_lgammal.obj `if test -f 'libm/ld/e_lgammal.c'; then $(CYGPATH_W) 'libm/ld/e_lgammal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_lgammal.c'; fi` + +libm/ld/libm_a-e_remainderl.o: libm/ld/e_remainderl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_remainderl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_remainderl.Tpo -c -o libm/ld/libm_a-e_remainderl.o `test -f 'libm/ld/e_remainderl.c' || echo '$(srcdir)/'`libm/ld/e_remainderl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_remainderl.Tpo libm/ld/$(DEPDIR)/libm_a-e_remainderl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_remainderl.c' object='libm/ld/libm_a-e_remainderl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_remainderl.o `test -f 'libm/ld/e_remainderl.c' || echo '$(srcdir)/'`libm/ld/e_remainderl.c + +libm/ld/libm_a-e_remainderl.obj: libm/ld/e_remainderl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_remainderl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_remainderl.Tpo -c -o libm/ld/libm_a-e_remainderl.obj `if test -f 'libm/ld/e_remainderl.c'; then $(CYGPATH_W) 'libm/ld/e_remainderl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_remainderl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_remainderl.Tpo libm/ld/$(DEPDIR)/libm_a-e_remainderl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_remainderl.c' object='libm/ld/libm_a-e_remainderl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_remainderl.obj `if test -f 'libm/ld/e_remainderl.c'; then $(CYGPATH_W) 'libm/ld/e_remainderl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_remainderl.c'; fi` + +libm/ld/libm_a-e_sinhl.o: libm/ld/e_sinhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_sinhl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_sinhl.Tpo -c -o libm/ld/libm_a-e_sinhl.o `test -f 'libm/ld/e_sinhl.c' || echo '$(srcdir)/'`libm/ld/e_sinhl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_sinhl.Tpo libm/ld/$(DEPDIR)/libm_a-e_sinhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_sinhl.c' object='libm/ld/libm_a-e_sinhl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_sinhl.o `test -f 'libm/ld/e_sinhl.c' || echo '$(srcdir)/'`libm/ld/e_sinhl.c + +libm/ld/libm_a-e_sinhl.obj: libm/ld/e_sinhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-e_sinhl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-e_sinhl.Tpo -c -o libm/ld/libm_a-e_sinhl.obj `if test -f 'libm/ld/e_sinhl.c'; then $(CYGPATH_W) 'libm/ld/e_sinhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_sinhl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-e_sinhl.Tpo libm/ld/$(DEPDIR)/libm_a-e_sinhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/e_sinhl.c' object='libm/ld/libm_a-e_sinhl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-e_sinhl.obj `if test -f 'libm/ld/e_sinhl.c'; then $(CYGPATH_W) 'libm/ld/e_sinhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/e_sinhl.c'; fi` + +libm/ld/libm_a-s_asinhl.o: libm/ld/s_asinhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_asinhl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_asinhl.Tpo -c -o libm/ld/libm_a-s_asinhl.o `test -f 'libm/ld/s_asinhl.c' || echo '$(srcdir)/'`libm/ld/s_asinhl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_asinhl.Tpo libm/ld/$(DEPDIR)/libm_a-s_asinhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_asinhl.c' object='libm/ld/libm_a-s_asinhl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_asinhl.o `test -f 'libm/ld/s_asinhl.c' || echo '$(srcdir)/'`libm/ld/s_asinhl.c + +libm/ld/libm_a-s_asinhl.obj: libm/ld/s_asinhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_asinhl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_asinhl.Tpo -c -o libm/ld/libm_a-s_asinhl.obj `if test -f 'libm/ld/s_asinhl.c'; then $(CYGPATH_W) 'libm/ld/s_asinhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_asinhl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_asinhl.Tpo libm/ld/$(DEPDIR)/libm_a-s_asinhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_asinhl.c' object='libm/ld/libm_a-s_asinhl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_asinhl.obj `if test -f 'libm/ld/s_asinhl.c'; then $(CYGPATH_W) 'libm/ld/s_asinhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_asinhl.c'; fi` + +libm/ld/libm_a-s_atanl.o: libm/ld/s_atanl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_atanl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_atanl.Tpo -c -o libm/ld/libm_a-s_atanl.o `test -f 'libm/ld/s_atanl.c' || echo '$(srcdir)/'`libm/ld/s_atanl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_atanl.Tpo libm/ld/$(DEPDIR)/libm_a-s_atanl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_atanl.c' object='libm/ld/libm_a-s_atanl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_atanl.o `test -f 'libm/ld/s_atanl.c' || echo '$(srcdir)/'`libm/ld/s_atanl.c + +libm/ld/libm_a-s_atanl.obj: libm/ld/s_atanl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_atanl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_atanl.Tpo -c -o libm/ld/libm_a-s_atanl.obj `if test -f 'libm/ld/s_atanl.c'; then $(CYGPATH_W) 'libm/ld/s_atanl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_atanl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_atanl.Tpo libm/ld/$(DEPDIR)/libm_a-s_atanl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_atanl.c' object='libm/ld/libm_a-s_atanl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_atanl.obj `if test -f 'libm/ld/s_atanl.c'; then $(CYGPATH_W) 'libm/ld/s_atanl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_atanl.c'; fi` + +libm/ld/libm_a-s_cbrtl.o: libm/ld/s_cbrtl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_cbrtl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Tpo -c -o libm/ld/libm_a-s_cbrtl.o `test -f 'libm/ld/s_cbrtl.c' || echo '$(srcdir)/'`libm/ld/s_cbrtl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Tpo libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_cbrtl.c' object='libm/ld/libm_a-s_cbrtl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_cbrtl.o `test -f 'libm/ld/s_cbrtl.c' || echo '$(srcdir)/'`libm/ld/s_cbrtl.c + +libm/ld/libm_a-s_cbrtl.obj: libm/ld/s_cbrtl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_cbrtl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Tpo -c -o libm/ld/libm_a-s_cbrtl.obj `if test -f 'libm/ld/s_cbrtl.c'; then $(CYGPATH_W) 'libm/ld/s_cbrtl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_cbrtl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Tpo libm/ld/$(DEPDIR)/libm_a-s_cbrtl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_cbrtl.c' object='libm/ld/libm_a-s_cbrtl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_cbrtl.obj `if test -f 'libm/ld/s_cbrtl.c'; then $(CYGPATH_W) 'libm/ld/s_cbrtl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_cbrtl.c'; fi` + +libm/ld/libm_a-s_ceill.o: libm/ld/s_ceill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_ceill.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_ceill.Tpo -c -o libm/ld/libm_a-s_ceill.o `test -f 'libm/ld/s_ceill.c' || echo '$(srcdir)/'`libm/ld/s_ceill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_ceill.Tpo libm/ld/$(DEPDIR)/libm_a-s_ceill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_ceill.c' object='libm/ld/libm_a-s_ceill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_ceill.o `test -f 'libm/ld/s_ceill.c' || echo '$(srcdir)/'`libm/ld/s_ceill.c + +libm/ld/libm_a-s_ceill.obj: libm/ld/s_ceill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_ceill.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_ceill.Tpo -c -o libm/ld/libm_a-s_ceill.obj `if test -f 'libm/ld/s_ceill.c'; then $(CYGPATH_W) 'libm/ld/s_ceill.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_ceill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_ceill.Tpo libm/ld/$(DEPDIR)/libm_a-s_ceill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_ceill.c' object='libm/ld/libm_a-s_ceill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_ceill.obj `if test -f 'libm/ld/s_ceill.c'; then $(CYGPATH_W) 'libm/ld/s_ceill.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_ceill.c'; fi` + +libm/ld/libm_a-s_copysignl.o: libm/ld/s_copysignl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_copysignl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_copysignl.Tpo -c -o libm/ld/libm_a-s_copysignl.o `test -f 'libm/ld/s_copysignl.c' || echo '$(srcdir)/'`libm/ld/s_copysignl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_copysignl.Tpo libm/ld/$(DEPDIR)/libm_a-s_copysignl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_copysignl.c' object='libm/ld/libm_a-s_copysignl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_copysignl.o `test -f 'libm/ld/s_copysignl.c' || echo '$(srcdir)/'`libm/ld/s_copysignl.c + +libm/ld/libm_a-s_copysignl.obj: libm/ld/s_copysignl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_copysignl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_copysignl.Tpo -c -o libm/ld/libm_a-s_copysignl.obj `if test -f 'libm/ld/s_copysignl.c'; then $(CYGPATH_W) 'libm/ld/s_copysignl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_copysignl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_copysignl.Tpo libm/ld/$(DEPDIR)/libm_a-s_copysignl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_copysignl.c' object='libm/ld/libm_a-s_copysignl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_copysignl.obj `if test -f 'libm/ld/s_copysignl.c'; then $(CYGPATH_W) 'libm/ld/s_copysignl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_copysignl.c'; fi` + +libm/ld/libm_a-s_cosl.o: libm/ld/s_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_cosl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_cosl.Tpo -c -o libm/ld/libm_a-s_cosl.o `test -f 'libm/ld/s_cosl.c' || echo '$(srcdir)/'`libm/ld/s_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_cosl.Tpo libm/ld/$(DEPDIR)/libm_a-s_cosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_cosl.c' object='libm/ld/libm_a-s_cosl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_cosl.o `test -f 'libm/ld/s_cosl.c' || echo '$(srcdir)/'`libm/ld/s_cosl.c + +libm/ld/libm_a-s_cosl.obj: libm/ld/s_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_cosl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_cosl.Tpo -c -o libm/ld/libm_a-s_cosl.obj `if test -f 'libm/ld/s_cosl.c'; then $(CYGPATH_W) 'libm/ld/s_cosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_cosl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_cosl.Tpo libm/ld/$(DEPDIR)/libm_a-s_cosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_cosl.c' object='libm/ld/libm_a-s_cosl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_cosl.obj `if test -f 'libm/ld/s_cosl.c'; then $(CYGPATH_W) 'libm/ld/s_cosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_cosl.c'; fi` + +libm/ld/libm_a-s_fabsl.o: libm/ld/s_fabsl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fabsl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fabsl.Tpo -c -o libm/ld/libm_a-s_fabsl.o `test -f 'libm/ld/s_fabsl.c' || echo '$(srcdir)/'`libm/ld/s_fabsl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fabsl.Tpo libm/ld/$(DEPDIR)/libm_a-s_fabsl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fabsl.c' object='libm/ld/libm_a-s_fabsl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fabsl.o `test -f 'libm/ld/s_fabsl.c' || echo '$(srcdir)/'`libm/ld/s_fabsl.c + +libm/ld/libm_a-s_fabsl.obj: libm/ld/s_fabsl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fabsl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fabsl.Tpo -c -o libm/ld/libm_a-s_fabsl.obj `if test -f 'libm/ld/s_fabsl.c'; then $(CYGPATH_W) 'libm/ld/s_fabsl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fabsl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fabsl.Tpo libm/ld/$(DEPDIR)/libm_a-s_fabsl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fabsl.c' object='libm/ld/libm_a-s_fabsl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fabsl.obj `if test -f 'libm/ld/s_fabsl.c'; then $(CYGPATH_W) 'libm/ld/s_fabsl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fabsl.c'; fi` + +libm/ld/libm_a-fdiml.o: libm/ld/fdiml.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-fdiml.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-fdiml.Tpo -c -o libm/ld/libm_a-fdiml.o `test -f 'libm/ld/fdiml.c' || echo '$(srcdir)/'`libm/ld/fdiml.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-fdiml.Tpo libm/ld/$(DEPDIR)/libm_a-fdiml.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/fdiml.c' object='libm/ld/libm_a-fdiml.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-fdiml.o `test -f 'libm/ld/fdiml.c' || echo '$(srcdir)/'`libm/ld/fdiml.c + +libm/ld/libm_a-fdiml.obj: libm/ld/fdiml.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-fdiml.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-fdiml.Tpo -c -o libm/ld/libm_a-fdiml.obj `if test -f 'libm/ld/fdiml.c'; then $(CYGPATH_W) 'libm/ld/fdiml.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/fdiml.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-fdiml.Tpo libm/ld/$(DEPDIR)/libm_a-fdiml.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/fdiml.c' object='libm/ld/libm_a-fdiml.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-fdiml.obj `if test -f 'libm/ld/fdiml.c'; then $(CYGPATH_W) 'libm/ld/fdiml.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/fdiml.c'; fi` + +libm/ld/libm_a-s_floorl.o: libm/ld/s_floorl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_floorl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_floorl.Tpo -c -o libm/ld/libm_a-s_floorl.o `test -f 'libm/ld/s_floorl.c' || echo '$(srcdir)/'`libm/ld/s_floorl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_floorl.Tpo libm/ld/$(DEPDIR)/libm_a-s_floorl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_floorl.c' object='libm/ld/libm_a-s_floorl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_floorl.o `test -f 'libm/ld/s_floorl.c' || echo '$(srcdir)/'`libm/ld/s_floorl.c + +libm/ld/libm_a-s_floorl.obj: libm/ld/s_floorl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_floorl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_floorl.Tpo -c -o libm/ld/libm_a-s_floorl.obj `if test -f 'libm/ld/s_floorl.c'; then $(CYGPATH_W) 'libm/ld/s_floorl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_floorl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_floorl.Tpo libm/ld/$(DEPDIR)/libm_a-s_floorl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_floorl.c' object='libm/ld/libm_a-s_floorl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_floorl.obj `if test -f 'libm/ld/s_floorl.c'; then $(CYGPATH_W) 'libm/ld/s_floorl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_floorl.c'; fi` + +libm/ld/libm_a-s_fmal.o: libm/ld/s_fmal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fmal.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fmal.Tpo -c -o libm/ld/libm_a-s_fmal.o `test -f 'libm/ld/s_fmal.c' || echo '$(srcdir)/'`libm/ld/s_fmal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fmal.Tpo libm/ld/$(DEPDIR)/libm_a-s_fmal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fmal.c' object='libm/ld/libm_a-s_fmal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fmal.o `test -f 'libm/ld/s_fmal.c' || echo '$(srcdir)/'`libm/ld/s_fmal.c + +libm/ld/libm_a-s_fmal.obj: libm/ld/s_fmal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fmal.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fmal.Tpo -c -o libm/ld/libm_a-s_fmal.obj `if test -f 'libm/ld/s_fmal.c'; then $(CYGPATH_W) 'libm/ld/s_fmal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fmal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fmal.Tpo libm/ld/$(DEPDIR)/libm_a-s_fmal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fmal.c' object='libm/ld/libm_a-s_fmal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fmal.obj `if test -f 'libm/ld/s_fmal.c'; then $(CYGPATH_W) 'libm/ld/s_fmal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fmal.c'; fi` + +libm/ld/libm_a-s_fmaxl.o: libm/ld/s_fmaxl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fmaxl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Tpo -c -o libm/ld/libm_a-s_fmaxl.o `test -f 'libm/ld/s_fmaxl.c' || echo '$(srcdir)/'`libm/ld/s_fmaxl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Tpo libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fmaxl.c' object='libm/ld/libm_a-s_fmaxl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fmaxl.o `test -f 'libm/ld/s_fmaxl.c' || echo '$(srcdir)/'`libm/ld/s_fmaxl.c + +libm/ld/libm_a-s_fmaxl.obj: libm/ld/s_fmaxl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fmaxl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Tpo -c -o libm/ld/libm_a-s_fmaxl.obj `if test -f 'libm/ld/s_fmaxl.c'; then $(CYGPATH_W) 'libm/ld/s_fmaxl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fmaxl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Tpo libm/ld/$(DEPDIR)/libm_a-s_fmaxl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fmaxl.c' object='libm/ld/libm_a-s_fmaxl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fmaxl.obj `if test -f 'libm/ld/s_fmaxl.c'; then $(CYGPATH_W) 'libm/ld/s_fmaxl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fmaxl.c'; fi` + +libm/ld/libm_a-s_fminl.o: libm/ld/s_fminl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fminl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fminl.Tpo -c -o libm/ld/libm_a-s_fminl.o `test -f 'libm/ld/s_fminl.c' || echo '$(srcdir)/'`libm/ld/s_fminl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fminl.Tpo libm/ld/$(DEPDIR)/libm_a-s_fminl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fminl.c' object='libm/ld/libm_a-s_fminl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fminl.o `test -f 'libm/ld/s_fminl.c' || echo '$(srcdir)/'`libm/ld/s_fminl.c + +libm/ld/libm_a-s_fminl.obj: libm/ld/s_fminl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_fminl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_fminl.Tpo -c -o libm/ld/libm_a-s_fminl.obj `if test -f 'libm/ld/s_fminl.c'; then $(CYGPATH_W) 'libm/ld/s_fminl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fminl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_fminl.Tpo libm/ld/$(DEPDIR)/libm_a-s_fminl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_fminl.c' object='libm/ld/libm_a-s_fminl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_fminl.obj `if test -f 'libm/ld/s_fminl.c'; then $(CYGPATH_W) 'libm/ld/s_fminl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_fminl.c'; fi` + +libm/ld/libm_a-s_frexpl.o: libm/ld/s_frexpl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_frexpl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_frexpl.Tpo -c -o libm/ld/libm_a-s_frexpl.o `test -f 'libm/ld/s_frexpl.c' || echo '$(srcdir)/'`libm/ld/s_frexpl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_frexpl.Tpo libm/ld/$(DEPDIR)/libm_a-s_frexpl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_frexpl.c' object='libm/ld/libm_a-s_frexpl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_frexpl.o `test -f 'libm/ld/s_frexpl.c' || echo '$(srcdir)/'`libm/ld/s_frexpl.c + +libm/ld/libm_a-s_frexpl.obj: libm/ld/s_frexpl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_frexpl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_frexpl.Tpo -c -o libm/ld/libm_a-s_frexpl.obj `if test -f 'libm/ld/s_frexpl.c'; then $(CYGPATH_W) 'libm/ld/s_frexpl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_frexpl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_frexpl.Tpo libm/ld/$(DEPDIR)/libm_a-s_frexpl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_frexpl.c' object='libm/ld/libm_a-s_frexpl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_frexpl.obj `if test -f 'libm/ld/s_frexpl.c'; then $(CYGPATH_W) 'libm/ld/s_frexpl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_frexpl.c'; fi` + +libm/ld/libm_a-s_ilogbl.o: libm/ld/s_ilogbl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_ilogbl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Tpo -c -o libm/ld/libm_a-s_ilogbl.o `test -f 'libm/ld/s_ilogbl.c' || echo '$(srcdir)/'`libm/ld/s_ilogbl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Tpo libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_ilogbl.c' object='libm/ld/libm_a-s_ilogbl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_ilogbl.o `test -f 'libm/ld/s_ilogbl.c' || echo '$(srcdir)/'`libm/ld/s_ilogbl.c + +libm/ld/libm_a-s_ilogbl.obj: libm/ld/s_ilogbl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_ilogbl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Tpo -c -o libm/ld/libm_a-s_ilogbl.obj `if test -f 'libm/ld/s_ilogbl.c'; then $(CYGPATH_W) 'libm/ld/s_ilogbl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_ilogbl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Tpo libm/ld/$(DEPDIR)/libm_a-s_ilogbl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_ilogbl.c' object='libm/ld/libm_a-s_ilogbl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_ilogbl.obj `if test -f 'libm/ld/s_ilogbl.c'; then $(CYGPATH_W) 'libm/ld/s_ilogbl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_ilogbl.c'; fi` + +libm/ld/libm_a-s_llrintl.o: libm/ld/s_llrintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_llrintl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_llrintl.Tpo -c -o libm/ld/libm_a-s_llrintl.o `test -f 'libm/ld/s_llrintl.c' || echo '$(srcdir)/'`libm/ld/s_llrintl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_llrintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_llrintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_llrintl.c' object='libm/ld/libm_a-s_llrintl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_llrintl.o `test -f 'libm/ld/s_llrintl.c' || echo '$(srcdir)/'`libm/ld/s_llrintl.c + +libm/ld/libm_a-s_llrintl.obj: libm/ld/s_llrintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_llrintl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_llrintl.Tpo -c -o libm/ld/libm_a-s_llrintl.obj `if test -f 'libm/ld/s_llrintl.c'; then $(CYGPATH_W) 'libm/ld/s_llrintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_llrintl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_llrintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_llrintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_llrintl.c' object='libm/ld/libm_a-s_llrintl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_llrintl.obj `if test -f 'libm/ld/s_llrintl.c'; then $(CYGPATH_W) 'libm/ld/s_llrintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_llrintl.c'; fi` + +libm/ld/libm_a-s_llroundl.o: libm/ld/s_llroundl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_llroundl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_llroundl.Tpo -c -o libm/ld/libm_a-s_llroundl.o `test -f 'libm/ld/s_llroundl.c' || echo '$(srcdir)/'`libm/ld/s_llroundl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_llroundl.Tpo libm/ld/$(DEPDIR)/libm_a-s_llroundl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_llroundl.c' object='libm/ld/libm_a-s_llroundl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_llroundl.o `test -f 'libm/ld/s_llroundl.c' || echo '$(srcdir)/'`libm/ld/s_llroundl.c + +libm/ld/libm_a-s_llroundl.obj: libm/ld/s_llroundl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_llroundl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_llroundl.Tpo -c -o libm/ld/libm_a-s_llroundl.obj `if test -f 'libm/ld/s_llroundl.c'; then $(CYGPATH_W) 'libm/ld/s_llroundl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_llroundl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_llroundl.Tpo libm/ld/$(DEPDIR)/libm_a-s_llroundl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_llroundl.c' object='libm/ld/libm_a-s_llroundl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_llroundl.obj `if test -f 'libm/ld/s_llroundl.c'; then $(CYGPATH_W) 'libm/ld/s_llroundl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_llroundl.c'; fi` + +libm/ld/libm_a-s_logbl.o: libm/ld/s_logbl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_logbl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_logbl.Tpo -c -o libm/ld/libm_a-s_logbl.o `test -f 'libm/ld/s_logbl.c' || echo '$(srcdir)/'`libm/ld/s_logbl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_logbl.Tpo libm/ld/$(DEPDIR)/libm_a-s_logbl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_logbl.c' object='libm/ld/libm_a-s_logbl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_logbl.o `test -f 'libm/ld/s_logbl.c' || echo '$(srcdir)/'`libm/ld/s_logbl.c + +libm/ld/libm_a-s_logbl.obj: libm/ld/s_logbl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_logbl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_logbl.Tpo -c -o libm/ld/libm_a-s_logbl.obj `if test -f 'libm/ld/s_logbl.c'; then $(CYGPATH_W) 'libm/ld/s_logbl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_logbl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_logbl.Tpo libm/ld/$(DEPDIR)/libm_a-s_logbl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_logbl.c' object='libm/ld/libm_a-s_logbl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_logbl.obj `if test -f 'libm/ld/s_logbl.c'; then $(CYGPATH_W) 'libm/ld/s_logbl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_logbl.c'; fi` + +libm/ld/libm_a-s_lrint.o: libm/ld/s_lrint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lrint.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lrint.Tpo -c -o libm/ld/libm_a-s_lrint.o `test -f 'libm/ld/s_lrint.c' || echo '$(srcdir)/'`libm/ld/s_lrint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lrint.Tpo libm/ld/$(DEPDIR)/libm_a-s_lrint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lrint.c' object='libm/ld/libm_a-s_lrint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lrint.o `test -f 'libm/ld/s_lrint.c' || echo '$(srcdir)/'`libm/ld/s_lrint.c + +libm/ld/libm_a-s_lrint.obj: libm/ld/s_lrint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lrint.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lrint.Tpo -c -o libm/ld/libm_a-s_lrint.obj `if test -f 'libm/ld/s_lrint.c'; then $(CYGPATH_W) 'libm/ld/s_lrint.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lrint.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lrint.Tpo libm/ld/$(DEPDIR)/libm_a-s_lrint.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lrint.c' object='libm/ld/libm_a-s_lrint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lrint.obj `if test -f 'libm/ld/s_lrint.c'; then $(CYGPATH_W) 'libm/ld/s_lrint.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lrint.c'; fi` + +libm/ld/libm_a-s_lrintl.o: libm/ld/s_lrintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lrintl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lrintl.Tpo -c -o libm/ld/libm_a-s_lrintl.o `test -f 'libm/ld/s_lrintl.c' || echo '$(srcdir)/'`libm/ld/s_lrintl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lrintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_lrintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lrintl.c' object='libm/ld/libm_a-s_lrintl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lrintl.o `test -f 'libm/ld/s_lrintl.c' || echo '$(srcdir)/'`libm/ld/s_lrintl.c + +libm/ld/libm_a-s_lrintl.obj: libm/ld/s_lrintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lrintl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lrintl.Tpo -c -o libm/ld/libm_a-s_lrintl.obj `if test -f 'libm/ld/s_lrintl.c'; then $(CYGPATH_W) 'libm/ld/s_lrintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lrintl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lrintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_lrintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lrintl.c' object='libm/ld/libm_a-s_lrintl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lrintl.obj `if test -f 'libm/ld/s_lrintl.c'; then $(CYGPATH_W) 'libm/ld/s_lrintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lrintl.c'; fi` + +libm/ld/libm_a-s_lround.o: libm/ld/s_lround.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lround.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lround.Tpo -c -o libm/ld/libm_a-s_lround.o `test -f 'libm/ld/s_lround.c' || echo '$(srcdir)/'`libm/ld/s_lround.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lround.Tpo libm/ld/$(DEPDIR)/libm_a-s_lround.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lround.c' object='libm/ld/libm_a-s_lround.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lround.o `test -f 'libm/ld/s_lround.c' || echo '$(srcdir)/'`libm/ld/s_lround.c + +libm/ld/libm_a-s_lround.obj: libm/ld/s_lround.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lround.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lround.Tpo -c -o libm/ld/libm_a-s_lround.obj `if test -f 'libm/ld/s_lround.c'; then $(CYGPATH_W) 'libm/ld/s_lround.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lround.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lround.Tpo libm/ld/$(DEPDIR)/libm_a-s_lround.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lround.c' object='libm/ld/libm_a-s_lround.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lround.obj `if test -f 'libm/ld/s_lround.c'; then $(CYGPATH_W) 'libm/ld/s_lround.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lround.c'; fi` + +libm/ld/libm_a-s_lroundl.o: libm/ld/s_lroundl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lroundl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lroundl.Tpo -c -o libm/ld/libm_a-s_lroundl.o `test -f 'libm/ld/s_lroundl.c' || echo '$(srcdir)/'`libm/ld/s_lroundl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lroundl.Tpo libm/ld/$(DEPDIR)/libm_a-s_lroundl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lroundl.c' object='libm/ld/libm_a-s_lroundl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lroundl.o `test -f 'libm/ld/s_lroundl.c' || echo '$(srcdir)/'`libm/ld/s_lroundl.c + +libm/ld/libm_a-s_lroundl.obj: libm/ld/s_lroundl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_lroundl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_lroundl.Tpo -c -o libm/ld/libm_a-s_lroundl.obj `if test -f 'libm/ld/s_lroundl.c'; then $(CYGPATH_W) 'libm/ld/s_lroundl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lroundl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_lroundl.Tpo libm/ld/$(DEPDIR)/libm_a-s_lroundl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_lroundl.c' object='libm/ld/libm_a-s_lroundl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_lroundl.obj `if test -f 'libm/ld/s_lroundl.c'; then $(CYGPATH_W) 'libm/ld/s_lroundl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_lroundl.c'; fi` + +libm/ld/libm_a-s_modfl.o: libm/ld/s_modfl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_modfl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_modfl.Tpo -c -o libm/ld/libm_a-s_modfl.o `test -f 'libm/ld/s_modfl.c' || echo '$(srcdir)/'`libm/ld/s_modfl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_modfl.Tpo libm/ld/$(DEPDIR)/libm_a-s_modfl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_modfl.c' object='libm/ld/libm_a-s_modfl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_modfl.o `test -f 'libm/ld/s_modfl.c' || echo '$(srcdir)/'`libm/ld/s_modfl.c + +libm/ld/libm_a-s_modfl.obj: libm/ld/s_modfl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_modfl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_modfl.Tpo -c -o libm/ld/libm_a-s_modfl.obj `if test -f 'libm/ld/s_modfl.c'; then $(CYGPATH_W) 'libm/ld/s_modfl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_modfl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_modfl.Tpo libm/ld/$(DEPDIR)/libm_a-s_modfl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_modfl.c' object='libm/ld/libm_a-s_modfl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_modfl.obj `if test -f 'libm/ld/s_modfl.c'; then $(CYGPATH_W) 'libm/ld/s_modfl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_modfl.c'; fi` + +libm/ld/libm_a-s_nearbyintl.o: libm/ld/s_nearbyintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nearbyintl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Tpo -c -o libm/ld/libm_a-s_nearbyintl.o `test -f 'libm/ld/s_nearbyintl.c' || echo '$(srcdir)/'`libm/ld/s_nearbyintl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nearbyintl.c' object='libm/ld/libm_a-s_nearbyintl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nearbyintl.o `test -f 'libm/ld/s_nearbyintl.c' || echo '$(srcdir)/'`libm/ld/s_nearbyintl.c + +libm/ld/libm_a-s_nearbyintl.obj: libm/ld/s_nearbyintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nearbyintl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Tpo -c -o libm/ld/libm_a-s_nearbyintl.obj `if test -f 'libm/ld/s_nearbyintl.c'; then $(CYGPATH_W) 'libm/ld/s_nearbyintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nearbyintl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_nearbyintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nearbyintl.c' object='libm/ld/libm_a-s_nearbyintl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nearbyintl.obj `if test -f 'libm/ld/s_nearbyintl.c'; then $(CYGPATH_W) 'libm/ld/s_nearbyintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nearbyintl.c'; fi` + +libm/ld/libm_a-s_nextafterl.o: libm/ld/s_nextafterl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nextafterl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Tpo -c -o libm/ld/libm_a-s_nextafterl.o `test -f 'libm/ld/s_nextafterl.c' || echo '$(srcdir)/'`libm/ld/s_nextafterl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Tpo libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nextafterl.c' object='libm/ld/libm_a-s_nextafterl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nextafterl.o `test -f 'libm/ld/s_nextafterl.c' || echo '$(srcdir)/'`libm/ld/s_nextafterl.c + +libm/ld/libm_a-s_nextafterl.obj: libm/ld/s_nextafterl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nextafterl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Tpo -c -o libm/ld/libm_a-s_nextafterl.obj `if test -f 'libm/ld/s_nextafterl.c'; then $(CYGPATH_W) 'libm/ld/s_nextafterl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nextafterl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Tpo libm/ld/$(DEPDIR)/libm_a-s_nextafterl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nextafterl.c' object='libm/ld/libm_a-s_nextafterl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nextafterl.obj `if test -f 'libm/ld/s_nextafterl.c'; then $(CYGPATH_W) 'libm/ld/s_nextafterl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nextafterl.c'; fi` + +libm/ld/libm_a-s_nexttoward.o: libm/ld/s_nexttoward.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nexttoward.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Tpo -c -o libm/ld/libm_a-s_nexttoward.o `test -f 'libm/ld/s_nexttoward.c' || echo '$(srcdir)/'`libm/ld/s_nexttoward.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Tpo libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nexttoward.c' object='libm/ld/libm_a-s_nexttoward.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nexttoward.o `test -f 'libm/ld/s_nexttoward.c' || echo '$(srcdir)/'`libm/ld/s_nexttoward.c + +libm/ld/libm_a-s_nexttoward.obj: libm/ld/s_nexttoward.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nexttoward.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Tpo -c -o libm/ld/libm_a-s_nexttoward.obj `if test -f 'libm/ld/s_nexttoward.c'; then $(CYGPATH_W) 'libm/ld/s_nexttoward.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nexttoward.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Tpo libm/ld/$(DEPDIR)/libm_a-s_nexttoward.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nexttoward.c' object='libm/ld/libm_a-s_nexttoward.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nexttoward.obj `if test -f 'libm/ld/s_nexttoward.c'; then $(CYGPATH_W) 'libm/ld/s_nexttoward.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nexttoward.c'; fi` + +libm/ld/libm_a-s_nexttowardf.o: libm/ld/s_nexttowardf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nexttowardf.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Tpo -c -o libm/ld/libm_a-s_nexttowardf.o `test -f 'libm/ld/s_nexttowardf.c' || echo '$(srcdir)/'`libm/ld/s_nexttowardf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Tpo libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nexttowardf.c' object='libm/ld/libm_a-s_nexttowardf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nexttowardf.o `test -f 'libm/ld/s_nexttowardf.c' || echo '$(srcdir)/'`libm/ld/s_nexttowardf.c + +libm/ld/libm_a-s_nexttowardf.obj: libm/ld/s_nexttowardf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_nexttowardf.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Tpo -c -o libm/ld/libm_a-s_nexttowardf.obj `if test -f 'libm/ld/s_nexttowardf.c'; then $(CYGPATH_W) 'libm/ld/s_nexttowardf.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nexttowardf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Tpo libm/ld/$(DEPDIR)/libm_a-s_nexttowardf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_nexttowardf.c' object='libm/ld/libm_a-s_nexttowardf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_nexttowardf.obj `if test -f 'libm/ld/s_nexttowardf.c'; then $(CYGPATH_W) 'libm/ld/s_nexttowardf.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_nexttowardf.c'; fi` + +libm/ld/libm_a-s_remquol.o: libm/ld/s_remquol.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_remquol.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_remquol.Tpo -c -o libm/ld/libm_a-s_remquol.o `test -f 'libm/ld/s_remquol.c' || echo '$(srcdir)/'`libm/ld/s_remquol.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_remquol.Tpo libm/ld/$(DEPDIR)/libm_a-s_remquol.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_remquol.c' object='libm/ld/libm_a-s_remquol.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_remquol.o `test -f 'libm/ld/s_remquol.c' || echo '$(srcdir)/'`libm/ld/s_remquol.c + +libm/ld/libm_a-s_remquol.obj: libm/ld/s_remquol.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_remquol.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_remquol.Tpo -c -o libm/ld/libm_a-s_remquol.obj `if test -f 'libm/ld/s_remquol.c'; then $(CYGPATH_W) 'libm/ld/s_remquol.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_remquol.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_remquol.Tpo libm/ld/$(DEPDIR)/libm_a-s_remquol.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_remquol.c' object='libm/ld/libm_a-s_remquol.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_remquol.obj `if test -f 'libm/ld/s_remquol.c'; then $(CYGPATH_W) 'libm/ld/s_remquol.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_remquol.c'; fi` + +libm/ld/libm_a-s_rintl.o: libm/ld/s_rintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_rintl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_rintl.Tpo -c -o libm/ld/libm_a-s_rintl.o `test -f 'libm/ld/s_rintl.c' || echo '$(srcdir)/'`libm/ld/s_rintl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_rintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_rintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_rintl.c' object='libm/ld/libm_a-s_rintl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_rintl.o `test -f 'libm/ld/s_rintl.c' || echo '$(srcdir)/'`libm/ld/s_rintl.c + +libm/ld/libm_a-s_rintl.obj: libm/ld/s_rintl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_rintl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_rintl.Tpo -c -o libm/ld/libm_a-s_rintl.obj `if test -f 'libm/ld/s_rintl.c'; then $(CYGPATH_W) 'libm/ld/s_rintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_rintl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_rintl.Tpo libm/ld/$(DEPDIR)/libm_a-s_rintl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_rintl.c' object='libm/ld/libm_a-s_rintl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_rintl.obj `if test -f 'libm/ld/s_rintl.c'; then $(CYGPATH_W) 'libm/ld/s_rintl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_rintl.c'; fi` + +libm/ld/libm_a-s_roundl.o: libm/ld/s_roundl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_roundl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_roundl.Tpo -c -o libm/ld/libm_a-s_roundl.o `test -f 'libm/ld/s_roundl.c' || echo '$(srcdir)/'`libm/ld/s_roundl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_roundl.Tpo libm/ld/$(DEPDIR)/libm_a-s_roundl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_roundl.c' object='libm/ld/libm_a-s_roundl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_roundl.o `test -f 'libm/ld/s_roundl.c' || echo '$(srcdir)/'`libm/ld/s_roundl.c + +libm/ld/libm_a-s_roundl.obj: libm/ld/s_roundl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_roundl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_roundl.Tpo -c -o libm/ld/libm_a-s_roundl.obj `if test -f 'libm/ld/s_roundl.c'; then $(CYGPATH_W) 'libm/ld/s_roundl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_roundl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_roundl.Tpo libm/ld/$(DEPDIR)/libm_a-s_roundl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_roundl.c' object='libm/ld/libm_a-s_roundl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_roundl.obj `if test -f 'libm/ld/s_roundl.c'; then $(CYGPATH_W) 'libm/ld/s_roundl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_roundl.c'; fi` + +libm/ld/libm_a-scalblnl.o: libm/ld/scalblnl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-scalblnl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-scalblnl.Tpo -c -o libm/ld/libm_a-scalblnl.o `test -f 'libm/ld/scalblnl.c' || echo '$(srcdir)/'`libm/ld/scalblnl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-scalblnl.Tpo libm/ld/$(DEPDIR)/libm_a-scalblnl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/scalblnl.c' object='libm/ld/libm_a-scalblnl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-scalblnl.o `test -f 'libm/ld/scalblnl.c' || echo '$(srcdir)/'`libm/ld/scalblnl.c + +libm/ld/libm_a-scalblnl.obj: libm/ld/scalblnl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-scalblnl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-scalblnl.Tpo -c -o libm/ld/libm_a-scalblnl.obj `if test -f 'libm/ld/scalblnl.c'; then $(CYGPATH_W) 'libm/ld/scalblnl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/scalblnl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-scalblnl.Tpo libm/ld/$(DEPDIR)/libm_a-scalblnl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/scalblnl.c' object='libm/ld/libm_a-scalblnl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-scalblnl.obj `if test -f 'libm/ld/scalblnl.c'; then $(CYGPATH_W) 'libm/ld/scalblnl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/scalblnl.c'; fi` + +libm/ld/libm_a-s_scalbnl.o: libm/ld/s_scalbnl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_scalbnl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Tpo -c -o libm/ld/libm_a-s_scalbnl.o `test -f 'libm/ld/s_scalbnl.c' || echo '$(srcdir)/'`libm/ld/s_scalbnl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Tpo libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_scalbnl.c' object='libm/ld/libm_a-s_scalbnl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_scalbnl.o `test -f 'libm/ld/s_scalbnl.c' || echo '$(srcdir)/'`libm/ld/s_scalbnl.c + +libm/ld/libm_a-s_scalbnl.obj: libm/ld/s_scalbnl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_scalbnl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Tpo -c -o libm/ld/libm_a-s_scalbnl.obj `if test -f 'libm/ld/s_scalbnl.c'; then $(CYGPATH_W) 'libm/ld/s_scalbnl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_scalbnl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Tpo libm/ld/$(DEPDIR)/libm_a-s_scalbnl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_scalbnl.c' object='libm/ld/libm_a-s_scalbnl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_scalbnl.obj `if test -f 'libm/ld/s_scalbnl.c'; then $(CYGPATH_W) 'libm/ld/s_scalbnl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_scalbnl.c'; fi` + +libm/ld/libm_a-s_sinl.o: libm/ld/s_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_sinl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_sinl.Tpo -c -o libm/ld/libm_a-s_sinl.o `test -f 'libm/ld/s_sinl.c' || echo '$(srcdir)/'`libm/ld/s_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_sinl.Tpo libm/ld/$(DEPDIR)/libm_a-s_sinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_sinl.c' object='libm/ld/libm_a-s_sinl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_sinl.o `test -f 'libm/ld/s_sinl.c' || echo '$(srcdir)/'`libm/ld/s_sinl.c + +libm/ld/libm_a-s_sinl.obj: libm/ld/s_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_sinl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_sinl.Tpo -c -o libm/ld/libm_a-s_sinl.obj `if test -f 'libm/ld/s_sinl.c'; then $(CYGPATH_W) 'libm/ld/s_sinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_sinl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_sinl.Tpo libm/ld/$(DEPDIR)/libm_a-s_sinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_sinl.c' object='libm/ld/libm_a-s_sinl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_sinl.obj `if test -f 'libm/ld/s_sinl.c'; then $(CYGPATH_W) 'libm/ld/s_sinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_sinl.c'; fi` + +libm/ld/libm_a-s_tanhl.o: libm/ld/s_tanhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_tanhl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_tanhl.Tpo -c -o libm/ld/libm_a-s_tanhl.o `test -f 'libm/ld/s_tanhl.c' || echo '$(srcdir)/'`libm/ld/s_tanhl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_tanhl.Tpo libm/ld/$(DEPDIR)/libm_a-s_tanhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_tanhl.c' object='libm/ld/libm_a-s_tanhl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_tanhl.o `test -f 'libm/ld/s_tanhl.c' || echo '$(srcdir)/'`libm/ld/s_tanhl.c + +libm/ld/libm_a-s_tanhl.obj: libm/ld/s_tanhl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_tanhl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_tanhl.Tpo -c -o libm/ld/libm_a-s_tanhl.obj `if test -f 'libm/ld/s_tanhl.c'; then $(CYGPATH_W) 'libm/ld/s_tanhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_tanhl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_tanhl.Tpo libm/ld/$(DEPDIR)/libm_a-s_tanhl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_tanhl.c' object='libm/ld/libm_a-s_tanhl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_tanhl.obj `if test -f 'libm/ld/s_tanhl.c'; then $(CYGPATH_W) 'libm/ld/s_tanhl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_tanhl.c'; fi` + +libm/ld/libm_a-s_tanl.o: libm/ld/s_tanl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_tanl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_tanl.Tpo -c -o libm/ld/libm_a-s_tanl.o `test -f 'libm/ld/s_tanl.c' || echo '$(srcdir)/'`libm/ld/s_tanl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_tanl.Tpo libm/ld/$(DEPDIR)/libm_a-s_tanl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_tanl.c' object='libm/ld/libm_a-s_tanl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_tanl.o `test -f 'libm/ld/s_tanl.c' || echo '$(srcdir)/'`libm/ld/s_tanl.c + +libm/ld/libm_a-s_tanl.obj: libm/ld/s_tanl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_tanl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_tanl.Tpo -c -o libm/ld/libm_a-s_tanl.obj `if test -f 'libm/ld/s_tanl.c'; then $(CYGPATH_W) 'libm/ld/s_tanl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_tanl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_tanl.Tpo libm/ld/$(DEPDIR)/libm_a-s_tanl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_tanl.c' object='libm/ld/libm_a-s_tanl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_tanl.obj `if test -f 'libm/ld/s_tanl.c'; then $(CYGPATH_W) 'libm/ld/s_tanl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_tanl.c'; fi` + +libm/ld/libm_a-s_truncl.o: libm/ld/s_truncl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_truncl.o -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_truncl.Tpo -c -o libm/ld/libm_a-s_truncl.o `test -f 'libm/ld/s_truncl.c' || echo '$(srcdir)/'`libm/ld/s_truncl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_truncl.Tpo libm/ld/$(DEPDIR)/libm_a-s_truncl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_truncl.c' object='libm/ld/libm_a-s_truncl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_truncl.o `test -f 'libm/ld/s_truncl.c' || echo '$(srcdir)/'`libm/ld/s_truncl.c + +libm/ld/libm_a-s_truncl.obj: libm/ld/s_truncl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld/libm_a-s_truncl.obj -MD -MP -MF libm/ld/$(DEPDIR)/libm_a-s_truncl.Tpo -c -o libm/ld/libm_a-s_truncl.obj `if test -f 'libm/ld/s_truncl.c'; then $(CYGPATH_W) 'libm/ld/s_truncl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_truncl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld/$(DEPDIR)/libm_a-s_truncl.Tpo libm/ld/$(DEPDIR)/libm_a-s_truncl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld/s_truncl.c' object='libm/ld/libm_a-s_truncl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld/libm_a-s_truncl.obj `if test -f 'libm/ld/s_truncl.c'; then $(CYGPATH_W) 'libm/ld/s_truncl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld/s_truncl.c'; fi` + libm/complex/libm_a-cabs.o: libm/complex/cabs.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/complex/libm_a-cabs.o -MD -MP -MF libm/complex/$(DEPDIR)/libm_a-cabs.Tpo -c -o libm/complex/libm_a-cabs.o `test -f 'libm/complex/cabs.c' || echo '$(srcdir)/'`libm/complex/cabs.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/complex/$(DEPDIR)/libm_a-cabs.Tpo libm/complex/$(DEPDIR)/libm_a-cabs.Po @@ -42606,6 +43625,146 @@ libm/machine/aarch64/libm_a-feupdateenv.obj: libm/machine/aarch64/feupdateenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/aarch64/libm_a-feupdateenv.obj `if test -f 'libm/machine/aarch64/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/aarch64/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/aarch64/feupdateenv.c'; fi` +libm/ld128/libm_a-e_powl.o: libm/ld128/e_powl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-e_powl.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-e_powl.Tpo -c -o libm/ld128/libm_a-e_powl.o `test -f 'libm/ld128/e_powl.c' || echo '$(srcdir)/'`libm/ld128/e_powl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-e_powl.Tpo libm/ld128/$(DEPDIR)/libm_a-e_powl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/e_powl.c' object='libm/ld128/libm_a-e_powl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-e_powl.o `test -f 'libm/ld128/e_powl.c' || echo '$(srcdir)/'`libm/ld128/e_powl.c + +libm/ld128/libm_a-e_powl.obj: libm/ld128/e_powl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-e_powl.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-e_powl.Tpo -c -o libm/ld128/libm_a-e_powl.obj `if test -f 'libm/ld128/e_powl.c'; then $(CYGPATH_W) 'libm/ld128/e_powl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/e_powl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-e_powl.Tpo libm/ld128/$(DEPDIR)/libm_a-e_powl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/e_powl.c' object='libm/ld128/libm_a-e_powl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-e_powl.obj `if test -f 'libm/ld128/e_powl.c'; then $(CYGPATH_W) 'libm/ld128/e_powl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/e_powl.c'; fi` + +libm/ld128/libm_a-s_erfl.o: libm/ld128/s_erfl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_erfl.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_erfl.Tpo -c -o libm/ld128/libm_a-s_erfl.o `test -f 'libm/ld128/s_erfl.c' || echo '$(srcdir)/'`libm/ld128/s_erfl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_erfl.Tpo libm/ld128/$(DEPDIR)/libm_a-s_erfl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_erfl.c' object='libm/ld128/libm_a-s_erfl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_erfl.o `test -f 'libm/ld128/s_erfl.c' || echo '$(srcdir)/'`libm/ld128/s_erfl.c + +libm/ld128/libm_a-s_erfl.obj: libm/ld128/s_erfl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_erfl.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_erfl.Tpo -c -o libm/ld128/libm_a-s_erfl.obj `if test -f 'libm/ld128/s_erfl.c'; then $(CYGPATH_W) 'libm/ld128/s_erfl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_erfl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_erfl.Tpo libm/ld128/$(DEPDIR)/libm_a-s_erfl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_erfl.c' object='libm/ld128/libm_a-s_erfl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_erfl.obj `if test -f 'libm/ld128/s_erfl.c'; then $(CYGPATH_W) 'libm/ld128/s_erfl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_erfl.c'; fi` + +libm/ld128/libm_a-s_exp2l.o: libm/ld128/s_exp2l.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_exp2l.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Tpo -c -o libm/ld128/libm_a-s_exp2l.o `test -f 'libm/ld128/s_exp2l.c' || echo '$(srcdir)/'`libm/ld128/s_exp2l.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Tpo libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_exp2l.c' object='libm/ld128/libm_a-s_exp2l.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_exp2l.o `test -f 'libm/ld128/s_exp2l.c' || echo '$(srcdir)/'`libm/ld128/s_exp2l.c + +libm/ld128/libm_a-s_exp2l.obj: libm/ld128/s_exp2l.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_exp2l.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Tpo -c -o libm/ld128/libm_a-s_exp2l.obj `if test -f 'libm/ld128/s_exp2l.c'; then $(CYGPATH_W) 'libm/ld128/s_exp2l.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_exp2l.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Tpo libm/ld128/$(DEPDIR)/libm_a-s_exp2l.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_exp2l.c' object='libm/ld128/libm_a-s_exp2l.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_exp2l.obj `if test -f 'libm/ld128/s_exp2l.c'; then $(CYGPATH_W) 'libm/ld128/s_exp2l.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_exp2l.c'; fi` + +libm/ld128/libm_a-s_expl.o: libm/ld128/s_expl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_expl.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_expl.Tpo -c -o libm/ld128/libm_a-s_expl.o `test -f 'libm/ld128/s_expl.c' || echo '$(srcdir)/'`libm/ld128/s_expl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_expl.Tpo libm/ld128/$(DEPDIR)/libm_a-s_expl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_expl.c' object='libm/ld128/libm_a-s_expl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_expl.o `test -f 'libm/ld128/s_expl.c' || echo '$(srcdir)/'`libm/ld128/s_expl.c + +libm/ld128/libm_a-s_expl.obj: libm/ld128/s_expl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_expl.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_expl.Tpo -c -o libm/ld128/libm_a-s_expl.obj `if test -f 'libm/ld128/s_expl.c'; then $(CYGPATH_W) 'libm/ld128/s_expl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_expl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_expl.Tpo libm/ld128/$(DEPDIR)/libm_a-s_expl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_expl.c' object='libm/ld128/libm_a-s_expl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_expl.obj `if test -f 'libm/ld128/s_expl.c'; then $(CYGPATH_W) 'libm/ld128/s_expl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_expl.c'; fi` + +libm/ld128/libm_a-s_logl.o: libm/ld128/s_logl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_logl.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_logl.Tpo -c -o libm/ld128/libm_a-s_logl.o `test -f 'libm/ld128/s_logl.c' || echo '$(srcdir)/'`libm/ld128/s_logl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_logl.Tpo libm/ld128/$(DEPDIR)/libm_a-s_logl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_logl.c' object='libm/ld128/libm_a-s_logl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_logl.o `test -f 'libm/ld128/s_logl.c' || echo '$(srcdir)/'`libm/ld128/s_logl.c + +libm/ld128/libm_a-s_logl.obj: libm/ld128/s_logl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-s_logl.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-s_logl.Tpo -c -o libm/ld128/libm_a-s_logl.obj `if test -f 'libm/ld128/s_logl.c'; then $(CYGPATH_W) 'libm/ld128/s_logl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_logl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-s_logl.Tpo libm/ld128/$(DEPDIR)/libm_a-s_logl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/s_logl.c' object='libm/ld128/libm_a-s_logl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-s_logl.obj `if test -f 'libm/ld128/s_logl.c'; then $(CYGPATH_W) 'libm/ld128/s_logl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/s_logl.c'; fi` + +libm/ld128/libm_a-b_tgammal.o: libm/ld128/b_tgammal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-b_tgammal.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Tpo -c -o libm/ld128/libm_a-b_tgammal.o `test -f 'libm/ld128/b_tgammal.c' || echo '$(srcdir)/'`libm/ld128/b_tgammal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Tpo libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/b_tgammal.c' object='libm/ld128/libm_a-b_tgammal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-b_tgammal.o `test -f 'libm/ld128/b_tgammal.c' || echo '$(srcdir)/'`libm/ld128/b_tgammal.c + +libm/ld128/libm_a-b_tgammal.obj: libm/ld128/b_tgammal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-b_tgammal.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Tpo -c -o libm/ld128/libm_a-b_tgammal.obj `if test -f 'libm/ld128/b_tgammal.c'; then $(CYGPATH_W) 'libm/ld128/b_tgammal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/b_tgammal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Tpo libm/ld128/$(DEPDIR)/libm_a-b_tgammal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/b_tgammal.c' object='libm/ld128/libm_a-b_tgammal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-b_tgammal.obj `if test -f 'libm/ld128/b_tgammal.c'; then $(CYGPATH_W) 'libm/ld128/b_tgammal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/b_tgammal.c'; fi` + +libm/ld128/libm_a-invtrig.o: libm/ld128/invtrig.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-invtrig.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-invtrig.Tpo -c -o libm/ld128/libm_a-invtrig.o `test -f 'libm/ld128/invtrig.c' || echo '$(srcdir)/'`libm/ld128/invtrig.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-invtrig.Tpo libm/ld128/$(DEPDIR)/libm_a-invtrig.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/invtrig.c' object='libm/ld128/libm_a-invtrig.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-invtrig.o `test -f 'libm/ld128/invtrig.c' || echo '$(srcdir)/'`libm/ld128/invtrig.c + +libm/ld128/libm_a-invtrig.obj: libm/ld128/invtrig.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-invtrig.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-invtrig.Tpo -c -o libm/ld128/libm_a-invtrig.obj `if test -f 'libm/ld128/invtrig.c'; then $(CYGPATH_W) 'libm/ld128/invtrig.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/invtrig.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-invtrig.Tpo libm/ld128/$(DEPDIR)/libm_a-invtrig.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/invtrig.c' object='libm/ld128/libm_a-invtrig.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-invtrig.obj `if test -f 'libm/ld128/invtrig.c'; then $(CYGPATH_W) 'libm/ld128/invtrig.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/invtrig.c'; fi` + +libm/ld128/libm_a-e_lgammal_r.o: libm/ld128/e_lgammal_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-e_lgammal_r.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Tpo -c -o libm/ld128/libm_a-e_lgammal_r.o `test -f 'libm/ld128/e_lgammal_r.c' || echo '$(srcdir)/'`libm/ld128/e_lgammal_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Tpo libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/e_lgammal_r.c' object='libm/ld128/libm_a-e_lgammal_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-e_lgammal_r.o `test -f 'libm/ld128/e_lgammal_r.c' || echo '$(srcdir)/'`libm/ld128/e_lgammal_r.c + +libm/ld128/libm_a-e_lgammal_r.obj: libm/ld128/e_lgammal_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-e_lgammal_r.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Tpo -c -o libm/ld128/libm_a-e_lgammal_r.obj `if test -f 'libm/ld128/e_lgammal_r.c'; then $(CYGPATH_W) 'libm/ld128/e_lgammal_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/e_lgammal_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Tpo libm/ld128/$(DEPDIR)/libm_a-e_lgammal_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/e_lgammal_r.c' object='libm/ld128/libm_a-e_lgammal_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-e_lgammal_r.obj `if test -f 'libm/ld128/e_lgammal_r.c'; then $(CYGPATH_W) 'libm/ld128/e_lgammal_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/e_lgammal_r.c'; fi` + +libm/ld128/libm_a-k_cosl.o: libm/ld128/k_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-k_cosl.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-k_cosl.Tpo -c -o libm/ld128/libm_a-k_cosl.o `test -f 'libm/ld128/k_cosl.c' || echo '$(srcdir)/'`libm/ld128/k_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-k_cosl.Tpo libm/ld128/$(DEPDIR)/libm_a-k_cosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/k_cosl.c' object='libm/ld128/libm_a-k_cosl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-k_cosl.o `test -f 'libm/ld128/k_cosl.c' || echo '$(srcdir)/'`libm/ld128/k_cosl.c + +libm/ld128/libm_a-k_cosl.obj: libm/ld128/k_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-k_cosl.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-k_cosl.Tpo -c -o libm/ld128/libm_a-k_cosl.obj `if test -f 'libm/ld128/k_cosl.c'; then $(CYGPATH_W) 'libm/ld128/k_cosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/k_cosl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-k_cosl.Tpo libm/ld128/$(DEPDIR)/libm_a-k_cosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/k_cosl.c' object='libm/ld128/libm_a-k_cosl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-k_cosl.obj `if test -f 'libm/ld128/k_cosl.c'; then $(CYGPATH_W) 'libm/ld128/k_cosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/k_cosl.c'; fi` + +libm/ld128/libm_a-k_sinl.o: libm/ld128/k_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-k_sinl.o -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-k_sinl.Tpo -c -o libm/ld128/libm_a-k_sinl.o `test -f 'libm/ld128/k_sinl.c' || echo '$(srcdir)/'`libm/ld128/k_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-k_sinl.Tpo libm/ld128/$(DEPDIR)/libm_a-k_sinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/k_sinl.c' object='libm/ld128/libm_a-k_sinl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-k_sinl.o `test -f 'libm/ld128/k_sinl.c' || echo '$(srcdir)/'`libm/ld128/k_sinl.c + +libm/ld128/libm_a-k_sinl.obj: libm/ld128/k_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld128/libm_a-k_sinl.obj -MD -MP -MF libm/ld128/$(DEPDIR)/libm_a-k_sinl.Tpo -c -o libm/ld128/libm_a-k_sinl.obj `if test -f 'libm/ld128/k_sinl.c'; then $(CYGPATH_W) 'libm/ld128/k_sinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/k_sinl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld128/$(DEPDIR)/libm_a-k_sinl.Tpo libm/ld128/$(DEPDIR)/libm_a-k_sinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld128/k_sinl.c' object='libm/ld128/libm_a-k_sinl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld128/libm_a-k_sinl.obj `if test -f 'libm/ld128/k_sinl.c'; then $(CYGPATH_W) 'libm/ld128/k_sinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld128/k_sinl.c'; fi` + libm/machine/amdgcn/libm_a-v64_mathcnst.o: libm/machine/amdgcn/v64_mathcnst.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/amdgcn/libm_a-v64_mathcnst.o -MD -MP -MF libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo -c -o libm/machine/amdgcn/libm_a-v64_mathcnst.o `test -f 'libm/machine/amdgcn/v64_mathcnst.c' || echo '$(srcdir)/'`libm/machine/amdgcn/v64_mathcnst.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Tpo libm/machine/amdgcn/$(DEPDIR)/libm_a-v64_mathcnst.Po @@ -44622,6 +45781,174 @@ libm/machine/i386/libm_a-feupdateenv.obj: libm/machine/i386/feupdateenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/i386/libm_a-feupdateenv.obj `if test -f 'libm/machine/i386/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/i386/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/i386/feupdateenv.c'; fi` +libm/ld80/libm_a-b_tgammal.o: libm/ld80/b_tgammal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-b_tgammal.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Tpo -c -o libm/ld80/libm_a-b_tgammal.o `test -f 'libm/ld80/b_tgammal.c' || echo '$(srcdir)/'`libm/ld80/b_tgammal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Tpo libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/b_tgammal.c' object='libm/ld80/libm_a-b_tgammal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-b_tgammal.o `test -f 'libm/ld80/b_tgammal.c' || echo '$(srcdir)/'`libm/ld80/b_tgammal.c + +libm/ld80/libm_a-b_tgammal.obj: libm/ld80/b_tgammal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-b_tgammal.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Tpo -c -o libm/ld80/libm_a-b_tgammal.obj `if test -f 'libm/ld80/b_tgammal.c'; then $(CYGPATH_W) 'libm/ld80/b_tgammal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/b_tgammal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Tpo libm/ld80/$(DEPDIR)/libm_a-b_tgammal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/b_tgammal.c' object='libm/ld80/libm_a-b_tgammal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-b_tgammal.obj `if test -f 'libm/ld80/b_tgammal.c'; then $(CYGPATH_W) 'libm/ld80/b_tgammal.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/b_tgammal.c'; fi` + +libm/ld80/libm_a-e_powl.o: libm/ld80/e_powl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-e_powl.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-e_powl.Tpo -c -o libm/ld80/libm_a-e_powl.o `test -f 'libm/ld80/e_powl.c' || echo '$(srcdir)/'`libm/ld80/e_powl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-e_powl.Tpo libm/ld80/$(DEPDIR)/libm_a-e_powl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/e_powl.c' object='libm/ld80/libm_a-e_powl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-e_powl.o `test -f 'libm/ld80/e_powl.c' || echo '$(srcdir)/'`libm/ld80/e_powl.c + +libm/ld80/libm_a-e_powl.obj: libm/ld80/e_powl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-e_powl.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-e_powl.Tpo -c -o libm/ld80/libm_a-e_powl.obj `if test -f 'libm/ld80/e_powl.c'; then $(CYGPATH_W) 'libm/ld80/e_powl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/e_powl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-e_powl.Tpo libm/ld80/$(DEPDIR)/libm_a-e_powl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/e_powl.c' object='libm/ld80/libm_a-e_powl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-e_powl.obj `if test -f 'libm/ld80/e_powl.c'; then $(CYGPATH_W) 'libm/ld80/e_powl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/e_powl.c'; fi` + +libm/ld80/libm_a-s_erfl.o: libm/ld80/s_erfl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_erfl.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_erfl.Tpo -c -o libm/ld80/libm_a-s_erfl.o `test -f 'libm/ld80/s_erfl.c' || echo '$(srcdir)/'`libm/ld80/s_erfl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_erfl.Tpo libm/ld80/$(DEPDIR)/libm_a-s_erfl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_erfl.c' object='libm/ld80/libm_a-s_erfl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_erfl.o `test -f 'libm/ld80/s_erfl.c' || echo '$(srcdir)/'`libm/ld80/s_erfl.c + +libm/ld80/libm_a-s_erfl.obj: libm/ld80/s_erfl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_erfl.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_erfl.Tpo -c -o libm/ld80/libm_a-s_erfl.obj `if test -f 'libm/ld80/s_erfl.c'; then $(CYGPATH_W) 'libm/ld80/s_erfl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_erfl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_erfl.Tpo libm/ld80/$(DEPDIR)/libm_a-s_erfl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_erfl.c' object='libm/ld80/libm_a-s_erfl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_erfl.obj `if test -f 'libm/ld80/s_erfl.c'; then $(CYGPATH_W) 'libm/ld80/s_erfl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_erfl.c'; fi` + +libm/ld80/libm_a-s_exp2l.o: libm/ld80/s_exp2l.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_exp2l.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Tpo -c -o libm/ld80/libm_a-s_exp2l.o `test -f 'libm/ld80/s_exp2l.c' || echo '$(srcdir)/'`libm/ld80/s_exp2l.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Tpo libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_exp2l.c' object='libm/ld80/libm_a-s_exp2l.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_exp2l.o `test -f 'libm/ld80/s_exp2l.c' || echo '$(srcdir)/'`libm/ld80/s_exp2l.c + +libm/ld80/libm_a-s_exp2l.obj: libm/ld80/s_exp2l.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_exp2l.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Tpo -c -o libm/ld80/libm_a-s_exp2l.obj `if test -f 'libm/ld80/s_exp2l.c'; then $(CYGPATH_W) 'libm/ld80/s_exp2l.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_exp2l.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Tpo libm/ld80/$(DEPDIR)/libm_a-s_exp2l.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_exp2l.c' object='libm/ld80/libm_a-s_exp2l.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_exp2l.obj `if test -f 'libm/ld80/s_exp2l.c'; then $(CYGPATH_W) 'libm/ld80/s_exp2l.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_exp2l.c'; fi` + +libm/ld80/libm_a-s_expl.o: libm/ld80/s_expl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_expl.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_expl.Tpo -c -o libm/ld80/libm_a-s_expl.o `test -f 'libm/ld80/s_expl.c' || echo '$(srcdir)/'`libm/ld80/s_expl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_expl.Tpo libm/ld80/$(DEPDIR)/libm_a-s_expl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_expl.c' object='libm/ld80/libm_a-s_expl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_expl.o `test -f 'libm/ld80/s_expl.c' || echo '$(srcdir)/'`libm/ld80/s_expl.c + +libm/ld80/libm_a-s_expl.obj: libm/ld80/s_expl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_expl.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_expl.Tpo -c -o libm/ld80/libm_a-s_expl.obj `if test -f 'libm/ld80/s_expl.c'; then $(CYGPATH_W) 'libm/ld80/s_expl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_expl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_expl.Tpo libm/ld80/$(DEPDIR)/libm_a-s_expl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_expl.c' object='libm/ld80/libm_a-s_expl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_expl.obj `if test -f 'libm/ld80/s_expl.c'; then $(CYGPATH_W) 'libm/ld80/s_expl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_expl.c'; fi` + +libm/ld80/libm_a-s_logl.o: libm/ld80/s_logl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_logl.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_logl.Tpo -c -o libm/ld80/libm_a-s_logl.o `test -f 'libm/ld80/s_logl.c' || echo '$(srcdir)/'`libm/ld80/s_logl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_logl.Tpo libm/ld80/$(DEPDIR)/libm_a-s_logl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_logl.c' object='libm/ld80/libm_a-s_logl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_logl.o `test -f 'libm/ld80/s_logl.c' || echo '$(srcdir)/'`libm/ld80/s_logl.c + +libm/ld80/libm_a-s_logl.obj: libm/ld80/s_logl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_logl.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_logl.Tpo -c -o libm/ld80/libm_a-s_logl.obj `if test -f 'libm/ld80/s_logl.c'; then $(CYGPATH_W) 'libm/ld80/s_logl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_logl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_logl.Tpo libm/ld80/$(DEPDIR)/libm_a-s_logl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_logl.c' object='libm/ld80/libm_a-s_logl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_logl.obj `if test -f 'libm/ld80/s_logl.c'; then $(CYGPATH_W) 'libm/ld80/s_logl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_logl.c'; fi` + +libm/ld80/libm_a-s_sinpil.o: libm/ld80/s_sinpil.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_sinpil.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Tpo -c -o libm/ld80/libm_a-s_sinpil.o `test -f 'libm/ld80/s_sinpil.c' || echo '$(srcdir)/'`libm/ld80/s_sinpil.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Tpo libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_sinpil.c' object='libm/ld80/libm_a-s_sinpil.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_sinpil.o `test -f 'libm/ld80/s_sinpil.c' || echo '$(srcdir)/'`libm/ld80/s_sinpil.c + +libm/ld80/libm_a-s_sinpil.obj: libm/ld80/s_sinpil.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_sinpil.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Tpo -c -o libm/ld80/libm_a-s_sinpil.obj `if test -f 'libm/ld80/s_sinpil.c'; then $(CYGPATH_W) 'libm/ld80/s_sinpil.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_sinpil.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Tpo libm/ld80/$(DEPDIR)/libm_a-s_sinpil.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_sinpil.c' object='libm/ld80/libm_a-s_sinpil.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_sinpil.obj `if test -f 'libm/ld80/s_sinpil.c'; then $(CYGPATH_W) 'libm/ld80/s_sinpil.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_sinpil.c'; fi` + +libm/ld80/libm_a-s_cospil.o: libm/ld80/s_cospil.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_cospil.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_cospil.Tpo -c -o libm/ld80/libm_a-s_cospil.o `test -f 'libm/ld80/s_cospil.c' || echo '$(srcdir)/'`libm/ld80/s_cospil.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_cospil.Tpo libm/ld80/$(DEPDIR)/libm_a-s_cospil.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_cospil.c' object='libm/ld80/libm_a-s_cospil.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_cospil.o `test -f 'libm/ld80/s_cospil.c' || echo '$(srcdir)/'`libm/ld80/s_cospil.c + +libm/ld80/libm_a-s_cospil.obj: libm/ld80/s_cospil.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-s_cospil.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-s_cospil.Tpo -c -o libm/ld80/libm_a-s_cospil.obj `if test -f 'libm/ld80/s_cospil.c'; then $(CYGPATH_W) 'libm/ld80/s_cospil.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_cospil.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-s_cospil.Tpo libm/ld80/$(DEPDIR)/libm_a-s_cospil.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/s_cospil.c' object='libm/ld80/libm_a-s_cospil.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-s_cospil.obj `if test -f 'libm/ld80/s_cospil.c'; then $(CYGPATH_W) 'libm/ld80/s_cospil.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/s_cospil.c'; fi` + +libm/ld80/libm_a-invtrig.o: libm/ld80/invtrig.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-invtrig.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-invtrig.Tpo -c -o libm/ld80/libm_a-invtrig.o `test -f 'libm/ld80/invtrig.c' || echo '$(srcdir)/'`libm/ld80/invtrig.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-invtrig.Tpo libm/ld80/$(DEPDIR)/libm_a-invtrig.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/invtrig.c' object='libm/ld80/libm_a-invtrig.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-invtrig.o `test -f 'libm/ld80/invtrig.c' || echo '$(srcdir)/'`libm/ld80/invtrig.c + +libm/ld80/libm_a-invtrig.obj: libm/ld80/invtrig.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-invtrig.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-invtrig.Tpo -c -o libm/ld80/libm_a-invtrig.obj `if test -f 'libm/ld80/invtrig.c'; then $(CYGPATH_W) 'libm/ld80/invtrig.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/invtrig.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-invtrig.Tpo libm/ld80/$(DEPDIR)/libm_a-invtrig.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/invtrig.c' object='libm/ld80/libm_a-invtrig.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-invtrig.obj `if test -f 'libm/ld80/invtrig.c'; then $(CYGPATH_W) 'libm/ld80/invtrig.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/invtrig.c'; fi` + +libm/ld80/libm_a-e_lgammal_r.o: libm/ld80/e_lgammal_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-e_lgammal_r.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Tpo -c -o libm/ld80/libm_a-e_lgammal_r.o `test -f 'libm/ld80/e_lgammal_r.c' || echo '$(srcdir)/'`libm/ld80/e_lgammal_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Tpo libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/e_lgammal_r.c' object='libm/ld80/libm_a-e_lgammal_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-e_lgammal_r.o `test -f 'libm/ld80/e_lgammal_r.c' || echo '$(srcdir)/'`libm/ld80/e_lgammal_r.c + +libm/ld80/libm_a-e_lgammal_r.obj: libm/ld80/e_lgammal_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-e_lgammal_r.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Tpo -c -o libm/ld80/libm_a-e_lgammal_r.obj `if test -f 'libm/ld80/e_lgammal_r.c'; then $(CYGPATH_W) 'libm/ld80/e_lgammal_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/e_lgammal_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Tpo libm/ld80/$(DEPDIR)/libm_a-e_lgammal_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/e_lgammal_r.c' object='libm/ld80/libm_a-e_lgammal_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-e_lgammal_r.obj `if test -f 'libm/ld80/e_lgammal_r.c'; then $(CYGPATH_W) 'libm/ld80/e_lgammal_r.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/e_lgammal_r.c'; fi` + +libm/ld80/libm_a-k_cosl.o: libm/ld80/k_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-k_cosl.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-k_cosl.Tpo -c -o libm/ld80/libm_a-k_cosl.o `test -f 'libm/ld80/k_cosl.c' || echo '$(srcdir)/'`libm/ld80/k_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-k_cosl.Tpo libm/ld80/$(DEPDIR)/libm_a-k_cosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/k_cosl.c' object='libm/ld80/libm_a-k_cosl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-k_cosl.o `test -f 'libm/ld80/k_cosl.c' || echo '$(srcdir)/'`libm/ld80/k_cosl.c + +libm/ld80/libm_a-k_cosl.obj: libm/ld80/k_cosl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-k_cosl.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-k_cosl.Tpo -c -o libm/ld80/libm_a-k_cosl.obj `if test -f 'libm/ld80/k_cosl.c'; then $(CYGPATH_W) 'libm/ld80/k_cosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/k_cosl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-k_cosl.Tpo libm/ld80/$(DEPDIR)/libm_a-k_cosl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/k_cosl.c' object='libm/ld80/libm_a-k_cosl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-k_cosl.obj `if test -f 'libm/ld80/k_cosl.c'; then $(CYGPATH_W) 'libm/ld80/k_cosl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/k_cosl.c'; fi` + +libm/ld80/libm_a-k_sinl.o: libm/ld80/k_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-k_sinl.o -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-k_sinl.Tpo -c -o libm/ld80/libm_a-k_sinl.o `test -f 'libm/ld80/k_sinl.c' || echo '$(srcdir)/'`libm/ld80/k_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-k_sinl.Tpo libm/ld80/$(DEPDIR)/libm_a-k_sinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/k_sinl.c' object='libm/ld80/libm_a-k_sinl.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-k_sinl.o `test -f 'libm/ld80/k_sinl.c' || echo '$(srcdir)/'`libm/ld80/k_sinl.c + +libm/ld80/libm_a-k_sinl.obj: libm/ld80/k_sinl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/ld80/libm_a-k_sinl.obj -MD -MP -MF libm/ld80/$(DEPDIR)/libm_a-k_sinl.Tpo -c -o libm/ld80/libm_a-k_sinl.obj `if test -f 'libm/ld80/k_sinl.c'; then $(CYGPATH_W) 'libm/ld80/k_sinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/k_sinl.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/ld80/$(DEPDIR)/libm_a-k_sinl.Tpo libm/ld80/$(DEPDIR)/libm_a-k_sinl.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/ld80/k_sinl.c' object='libm/ld80/libm_a-k_sinl.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/ld80/libm_a-k_sinl.obj `if test -f 'libm/ld80/k_sinl.c'; then $(CYGPATH_W) 'libm/ld80/k_sinl.c'; else $(CYGPATH_W) '$(srcdir)/libm/ld80/k_sinl.c'; fi` + libm/machine/mips/libm_a-feclearexcept.o: libm/machine/mips/feclearexcept.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/mips/libm_a-feclearexcept.o -MD -MP -MF libm/machine/mips/$(DEPDIR)/libm_a-feclearexcept.Tpo -c -o libm/machine/mips/libm_a-feclearexcept.o `test -f 'libm/machine/mips/feclearexcept.c' || echo '$(srcdir)/'`libm/machine/mips/feclearexcept.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/mips/$(DEPDIR)/libm_a-feclearexcept.Tpo libm/machine/mips/$(DEPDIR)/libm_a-feclearexcept.Po @@ -48292,6 +49619,12 @@ distclean-generic: -rm -f libm/complex/$(am__dirstamp) -rm -f libm/fenv/$(DEPDIR)/$(am__dirstamp) -rm -f libm/fenv/$(am__dirstamp) + -rm -f libm/ld/$(DEPDIR)/$(am__dirstamp) + -rm -f libm/ld/$(am__dirstamp) + -rm -f libm/ld128/$(DEPDIR)/$(am__dirstamp) + -rm -f libm/ld128/$(am__dirstamp) + -rm -f libm/ld80/$(DEPDIR)/$(am__dirstamp) + -rm -f libm/ld80/$(am__dirstamp) -rm -f libm/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/aarch64/$(am__dirstamp) -rm -f libm/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) @@ -48333,7 +49666,7 @@ clean-am: clean-aminfo clean-checkPROGRAMS clean-generic clean-local \ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/ld/$(DEPDIR) libm/ld128/$(DEPDIR) libm/ld80/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-compile \ distclean-generic distclean-hdr distclean-local distclean-tags @@ -48471,7 +49804,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/ld/$(DEPDIR) libm/ld128/$(DEPDIR) libm/ld80/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/newlib/configure b/newlib/configure index 6be7896ea5..77ab8eca00 100755 --- a/newlib/configure +++ b/newlib/configure @@ -633,6 +633,8 @@ HAS_NDS32_FPU_SP_FALSE HAS_NDS32_FPU_SP_TRUE MACH_ADD_SETJMP_FALSE MACH_ADD_SETJMP_TRUE +HAVE_FPMATH_H_FALSE +HAVE_FPMATH_H_TRUE HAVE_LIBC_MACHINE_Z8K_FALSE HAVE_LIBC_MACHINE_Z8K_TRUE HAVE_LIBC_MACHINE_XSTORMY16_FALSE @@ -6123,6 +6125,16 @@ else fi + if test -r "${srcdir}/libc/machine/${machine_dir}/machine/_fpmath.h"; then + HAVE_FPMATH_H_TRUE= + HAVE_FPMATH_H_FALSE='#' +else + HAVE_FPMATH_H_TRUE='#' + HAVE_FPMATH_H_FALSE= +fi + + + if test "x$mach_add_setjmp" = "xtrue"; then MACH_ADD_SETJMP_TRUE= MACH_ADD_SETJMP_FALSE='#' @@ -7869,6 +7881,10 @@ if test -z "${HAVE_LIBC_MACHINE_Z8K_TRUE}" && test -z "${HAVE_LIBC_MACHINE_Z8K_F as_fn_error $? "conditional \"HAVE_LIBC_MACHINE_Z8K\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_FPMATH_H_TRUE}" && test -z "${HAVE_FPMATH_H_FALSE}"; then + as_fn_error $? "conditional \"HAVE_FPMATH_H\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${MACH_ADD_SETJMP_TRUE}" && test -z "${MACH_ADD_SETJMP_FALSE}"; then as_fn_error $? "conditional \"MACH_ADD_SETJMP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 From e7858c0a585e29c48a4109933423a0de362fc62d Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Wed, 17 May 2023 17:44:57 -0400 Subject: [PATCH 303/767] fix __time_load_locale return code - add explicit __HAVE_LOCALE_INFO__ check --- newlib/libc/locale/timelocal.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/newlib/libc/locale/timelocal.c b/newlib/libc/locale/timelocal.c index 4b361544ac..e3a7fd02d7 100644 --- a/newlib/libc/locale/timelocal.c +++ b/newlib/libc/locale/timelocal.c @@ -147,10 +147,11 @@ int __time_load_locale (struct __locale_t *locale, const char *name, void *f_wctomb, const char *charset) { - int ret; + int ret = 0; struct lc_time_T ti; char *bufp = NULL; +#ifdef __HAVE_LOCALE_INFO__ #ifdef __CYGWIN__ extern int __set_lc_time_from_win (const char *, const struct lc_time_T *, struct lc_time_T *, char **, void *, @@ -186,5 +187,6 @@ __time_load_locale (struct __locale_t *locale, const char *name, #else /* TODO */ #endif +#endif /* __HAVE_LOCALE_INFO__ */ return (ret); } From 4840a5632520c1a3c1598f73f9d1cdd37df371ba Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 22 May 2023 13:36:27 +0200 Subject: [PATCH 304/767] Cygwin: Adjust CWD magic to accommodate for the latest Windows previews Reportedly Windows 11 build 25*** from Insider changed the current working directory logic a bit, and Cygwin's "magic" (or: "technologically sufficiently advanced") code needs to be adjusted accordingly. This fixes https://github.com/git-for-windows/git/issues/4429 Signed-off-by: Johannes Schindelin --- winsup/cygwin/path.cc | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 582238d150..37e46c08ba 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -4511,13 +4511,27 @@ find_fast_cwd_pointer () if (!lock) { /* Windows 8.1 Preview calls `lea rel(rip),%r12' then some unrelated - or, then `mov %r12,%rcx', then `callq RtlEnterCriticalSection'. */ + ops, then `mov %r12,%rcx', then `callq RtlEnterCriticalSection'. */ lock = (const uint8_t *) memmem ((const char *) use_cwd, 80, "\x4c\x8d\x25", 3); - if (!lock) - return NULL; call_rtl_offset = 14; } + + if (!lock) + { + /* A recent Windows 11 Preview calls `lea rel(rip),%r13' then + some unrelated instructions, then `callq RtlEnterCriticalSection'. + */ + lock = (const uint8_t *) memmem ((const char *) use_cwd, 80, + "\x4c\x8d\x2d", 3); + call_rtl_offset = 24; + } + + if (!lock) + { + return NULL; + } + PRTL_CRITICAL_SECTION lockaddr = (PRTL_CRITICAL_SECTION) (lock + 7 + peek32 (lock + 3)); /* Test if lock address is FastPebLock. */ From e79304d7b4a54abc393d0f13f7170c5863a1ef1d Mon Sep 17 00:00:00 2001 From: Remy Bohmer Date: Sun, 28 May 2023 15:05:44 +1200 Subject: [PATCH 305/767] m68k: disallow unaligned access for m68010 and m68020 Disable at least m68010 and m68020. These processors certainly do not like unaligned accesses. Signed-off-by: Remy Bohmer Signed-off-by: "Yann E. MORIN" Signed-off-by: Austin Morton Signed-off-by: Chris Packham --- newlib/libc/machine/m68k/memcpy.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/machine/m68k/memcpy.S b/newlib/libc/machine/m68k/memcpy.S index 2bb6de16c5..464da95efc 100644 --- a/newlib/libc/machine/m68k/memcpy.S +++ b/newlib/libc/machine/m68k/memcpy.S @@ -15,7 +15,7 @@ #include "m68kasm.h" -#if defined (__mcoldfire__) || defined (__mc68010__) || defined (__mc68020__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__) +#if defined (__mcoldfire__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__) # define MISALIGNED_OK 1 #else # define MISALIGNED_OK 0 From 28489b0702556eb183029750b0292fa3d59d31c0 Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Sun, 28 May 2023 15:05:45 +1200 Subject: [PATCH 306/767] config/mt-d30v: Append flags Append to CFLAGS_FOR_TARGET/CXXFLAGS_FOR_TARGET rather than replacing them. Signed-off-by: Chris Packham --- config/mt-d30v | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/mt-d30v b/config/mt-d30v index d34b774b3f..f5081aef5d 100644 --- a/config/mt-d30v +++ b/config/mt-d30v @@ -1,4 +1,4 @@ # Build libraries optimizing for space, not speed. # Turn off warnings about symbols named the same as registers - CFLAGS_FOR_TARGET = -g -Os -Wa,-C - CXXFLAGS_FOR_TARGET = -g -Os -Wa,-C + CFLAGS_FOR_TARGET += -g -Os -Wa,-C + CXXFLAGS_FOR_TARGET += -g -Os -Wa,-C From 9fc746d17dc3087a50b464a947441fd69d422ca4 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 1 Jun 2023 19:44:41 +0900 Subject: [PATCH 307/767] Cygwin: pty: Fix transferring type-ahead input between input pipes. After the commit e5fcc5837c95, transferring type-ahead input between the pipe for cygwin app and the pipe for non-cygwin app will not be done appropriately when the stdin of the non-cygwin app is not pty. Due to this issue, sometimes the keyboard input might be lost which should be sent to cygwin app. This patch fixes the issue. Fixes: e5fcc5837c95 ("Cygwin: pty: Fix reading CONIN$ when stdin is not a pty.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 03c859172b..207f374632 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -1297,17 +1297,7 @@ fhandler_pty_slave::mask_switch_to_nat_pipe (bool mask, bool xfer) else if (InterlockedDecrement (&num_reader) == 0) CloseHandle (slave_reading); - /* This is needed when cygwin-app is started from non-cygwin app if - pseudo console is disabled. */ - bool need_xfer = get_ttyp ()->nat_fg (get_ttyp ()->getpgid ()) - && get_ttyp ()->switch_to_nat_pipe && !get_ttyp ()->pcon_activated; - - /* In GDB, transfer input based on setpgid() does not work because - GDB may not set terminal process group properly. Therefore, - transfer input here if isHybrid is set. */ - bool need_gdb_xfer = - isHybrid && GetStdHandle (STD_INPUT_HANDLE) == get_handle (); - if (!!masked != mask && xfer && (need_gdb_xfer || need_xfer)) + if (!!masked != mask && xfer && get_ttyp ()->switch_to_nat_pipe) { if (mask && get_ttyp ()->pty_input_state_eq (tty::to_nat)) { @@ -2238,11 +2228,7 @@ fhandler_pty_master::write (const void *ptr, size_t len) if (!get_ttyp ()->pcon_start) { /* Pseudo console initialization has been done in above code. */ pinfo pp (get_ttyp ()->pcon_start_pid); - bool pcon_fg = (pp && get_ttyp ()->getpgid () == pp->pgid); - /* GDB may set WINPID rather than cygwin PID to process group - when the debugged process is a non-cygwin process.*/ - pcon_fg |= !pinfo (get_ttyp ()->getpgid ()); - if (get_ttyp ()->switch_to_nat_pipe && pcon_fg + if (get_ttyp ()->switch_to_nat_pipe && get_ttyp ()->pty_input_state_eq (tty::to_cyg)) { /* This accept_input() call is needed in order to transfer input @@ -4089,7 +4075,7 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp, DWORD force_switch_to) { ttyp->wait_fwd (); - if (ttyp->getpgid () == myself->pgid && stdin_is_ptys + if ((ttyp->pcon_activated || stdin_is_ptys) && ttyp->pty_input_state_eq (tty::to_nat)) { WaitForSingleObject (p->input_mutex, mutex_timeout); From a9038789488e7cdac5a30898fc3b064782646108 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 2 Jun 2023 10:19:18 +0900 Subject: [PATCH 308/767] Cygwin: pty: Additional fix for transferring input at exit. The commit 9fc746d17dc3 does not fix transferring input at exit appropriately. If the more than one non-cygwin apps are executed simultaneously and one of them is terminated, the pty master failed to send input to the other non-cygwin apps. This patch fixes that. Fixes: 9fc746d17dc3 ("Cygwin: pty: Fix transferring type-ahead input between input pipes.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 207f374632..1f2b634a06 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -4075,7 +4075,14 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp, DWORD force_switch_to) { ttyp->wait_fwd (); - if ((ttyp->pcon_activated || stdin_is_ptys) + DWORD current_pid = myself->exec_dwProcessId ?: myself->dwProcessId; + DWORD switch_to = force_switch_to; + WaitForSingleObject (p->pipe_sw_mutex, INFINITE); + if (!switch_to) + switch_to = get_console_process_id (current_pid, false, true, true); + if (!switch_to) + switch_to = get_console_process_id (current_pid, false, true, false); + if ((!switch_to && (ttyp->pcon_activated || stdin_is_ptys)) && ttyp->pty_input_state_eq (tty::to_nat)) { WaitForSingleObject (p->input_mutex, mutex_timeout); @@ -4085,7 +4092,6 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp, release_attach_mutex (); ReleaseMutex (p->input_mutex); } - WaitForSingleObject (p->pipe_sw_mutex, INFINITE); if (ttyp->pcon_activated) close_pseudoconsole (ttyp, force_switch_to); else From e9dd5d8f2585293cb5fa0d86fc14e06156b65e19 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 22 May 2023 13:12:56 +0200 Subject: [PATCH 309/767] uinfo: special-case IIS APPPOOL accounts The account under which Azure Web Apps run is an IIS APPOOL account that is generated on the fly. These are special because the virtual machines on which thes Apps run are not domain-joined, yet the accounts are domain accounts. To support the use case where such a Web App needs to call `ssh` (e.g. to deploy from a Git repository that is accessible only via SSH), we do need OpenSSH's `getpwuid (getuid ())` invocation to work. But currently it does not. Concretely, `getuid ()` returns -1 for these accounts, and OpenSSH fails to find the correct home directory (_especially_ when that home directory was overridden via a `db_home: env` line in `/etc/nsswitch.conf`). This can be verified e.g. in a Kudu console (for details about Kudu consoles, see https://github.com/projectkudu/kudu/wiki/Kudu-console): the domain is `IIS APPPOOL`, the account name is the name of the Azure Web App, the SID starts with 'S-1-5-82-`, and `pwdgrp::fetch_account_from_windows()` runs into the code path where "[...] the domain returned by LookupAccountSid is not our machine name, and if our machine is no domain member, we lose. We have nobody to ask for the POSIX offset." Since these IIS APPPOOL accounts are relatively similar to AzureAD accounts in this scenario, let's imitate the latter to support also the former. Reported-by: David Ebbo Helped-by: Corinna Vinschen Signed-off-by: Johannes Schindelin --- winsup/cygwin/uinfo.cc | 107 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 98 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index d493d29b3b..5e2d88bcd7 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -1485,9 +1485,9 @@ get_logon_sid () } } -/* Fetch special AzureAD group, which is part of the token group list but - *not* recognized by LookupAccountSid (ERROR_NONE_MAPPED). */ -static cygsid azure_grp_sid (""); +/* Fetch special AzureAD and IIS APPPOOL groups, which are part of the token + group list but *not* recognized by LookupAccountSid (ERROR_NONE_MAPPED). */ +static cygsid azure_grp_sid (""), iis_apppool_grp_sid (""); static void get_azure_grp_sid () @@ -1515,6 +1515,36 @@ get_azure_grp_sid () } } +static void +get_iis_apppool_grp_sid () +{ + if (PSID (iis_apppool_grp_sid) == NO_SID) + { + NTSTATUS status; + ULONG size; + tmp_pathbuf tp; + PTOKEN_GROUPS groups = (PTOKEN_GROUPS) tp.w_get (); + + status = NtQueryInformationToken (hProcToken, TokenGroups, groups, + 2 * NT_MAX_PATH, &size); + if (!NT_SUCCESS (status)) + debug_printf ("NtQueryInformationToken (TokenGroups) %y", status); + else + { + for (DWORD pg = 0; pg < groups->GroupCount; ++pg) + { + PSID sid = groups->Groups[pg].Sid; + if (sid_id_auth (sid) == 5 && + sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID) + { + iis_apppool_grp_sid = sid; + break; + } + } + } + } +} + void * pwdgrp::add_account_post_fetch (char *line, bool lock) { @@ -1796,6 +1826,16 @@ pwdgrp::construct_sid_from_name (cygsid &sid, wchar_t *name, wchar_t *sep) } return false; } + if (sep && wcscmp (name, L"IIS APPPOOL\\Group") == 0) + { + get_iis_apppool_grp_sid (); + if (PSID (logon_sid) != NO_SID) + { + sid = iis_apppool_grp_sid; + return true; + } + return false; + } if (!sep && wcscmp (name, L"CurrentSession") == 0) { get_logon_sid (); @@ -2018,8 +2058,11 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) /* Last but not least, some validity checks on the name style. */ if (!fq_name) { - /* AzureAD user must be prepended by "domain" name. */ - if (sid_id_auth (sid) == 12) + /* AzureAD and IIS APPPOOL users must be prepended by "domain" + name. */ + if (sid_id_auth (sid) == 12 || + (sid_id_auth (sid) == 5 && + sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID)) return NULL; /* name_only account is either builtin or primary domain, or account domain on non-domain machines. */ @@ -2045,8 +2088,10 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) } else { - /* AzureAD accounts should be fully qualifed either. */ - if (sid_id_auth (sid) == 12) + /* AzureAD and IIS APPPOOL accounts should be fully qualifed either. */ + if (sid_id_auth (sid) == 12 || + (sid_id_auth (sid) == 5 && + sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID)) break; /* Otherwise, no fully_qualified for builtin accounts, except for NT SERVICE, for which we require the prefix. Note that there's @@ -2125,6 +2170,19 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) sid = csid = azure_grp_sid; break; } + else if (arg.id == 0x1002) + { + /* IIS APPPOOL S-1-5-82-* user */ + csid = cygheap->user.saved_sid (); + } + else if (arg.id == 0x1003) + { + /* Special IIS APPPOOL group SID */ + get_iis_apppool_grp_sid (); + /* LookupAccountSidW will fail. */ + sid = csid = iis_apppool_grp_sid; + break; + } else if (arg.id == 0xfffe) { /* Special case "nobody" for reproducible construction of a @@ -2253,7 +2311,9 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) Those we let pass, but no others. */ bool its_ok = false; - if (sid_id_auth (sid) == 12) + if (sid_id_auth (sid) == 12 || + (sid_id_auth (sid) == 5 && + sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID)) its_ok = true; else /* Microsoft Account */ { @@ -2342,7 +2402,7 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) posix_offset = fetch_posix_offset (td, &loc_ldap); } } - /* AzureAD S-1-12-1-W-X-Y-Z user */ + /* AzureAD S-1-12-1-W-X-Y-Z and IIS APPOOL S-1-5-82-* user */ else if (sid_id_auth (sid) == 12) { uid = gid = 0x1000; @@ -2355,6 +2415,21 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) name, fully_qualified_name); break; } + /* IIS APPOOL S-1-5-82-* user */ + else if (sid_id_auth (sid) == 5 && + sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID) + { + uid = 0x1002; + gid = 0x1003; + fully_qualified_name = true; + home = cygheap->pg.get_home ((PUSER_INFO_3) NULL, sid, dom, name, + fully_qualified_name); + shell = cygheap->pg.get_shell ((PUSER_INFO_3) NULL, sid, dom, + name, fully_qualified_name); + gecos = cygheap->pg.get_gecos ((PUSER_INFO_3) NULL, sid, dom, + name, fully_qualified_name); + break; + } /* If the domain returned by LookupAccountSid is not our machine name, and if our machine is no domain member, we lose. We have nobody to ask for the POSIX offset. */ @@ -2614,6 +2689,20 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) fully_qualified_name = true; acc_type = SidTypeUnknown; } + else if (sid_id_auth (sid) == 5 && + sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID) + { + /* Special IIS APPPOOL group SID which can't be resolved by + LookupAccountSid (ERROR_NONE_MAPPED). This is only allowed + as group entry, not as passwd entry. */ + if (is_passwd ()) + return NULL; + uid = gid = 0x1003; + wcpcpy (dom, L"IIS APPPOOL"); + wcpcpy (name = namebuf, L"Group"); + fully_qualified_name = true; + acc_type = SidTypeUnknown; + } else if (sid_id_auth (sid) == 5 /* SECURITY_NT_AUTHORITY */ && sid_sub_auth (sid, 0) == SECURITY_LOGON_IDS_RID) { From 80ff7bc26ca97a7e2194554c21fe25cbdf227813 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 22 May 2023 13:13:02 +0200 Subject: [PATCH 310/767] Do not rely on `getenv ("HOME")`'s path conversion In the very early code path where `dll_crt0_1 ()` calls `user_shared->initialize ()`, the Cygwin runtime calls `internal_pwsid ()` to initialize the user name in preparation for reading the `fstab` file. In case `db_home: env` is defined in `/etc/nsswitch.conf`, we need to look at the environment variable `HOME` and use it, if set. When all of this happens, though, the `pinfo_init ()` function has had no chance to run yet (and therefore, `environ_init ()`). At this stage, therefore, `getenv ()`'s `findenv_func ()` call still finds `getearly ()` and we get the _verbatim_ value of `HOME`. That is, the Windows form. But we need the "POSIX" form. To add insult to injury, later calls to `getpwuid (getuid ())` will receive a cached version of the home directory via `cygheap->pg.pwd_cache.win.find_user ()` thanks to the first `internal_pwsid ()` call caching the result via `add_user_from_cygserver ()`, read: we will never receive the converted `HOME` but always the Windows variant. So, contrary to the assumptions made in 27376c60a9 (Allow deriving the current user's home directory via the HOME variable, 2023-03-28), we cannot assume that `getenv ("HOME")` returned a "POSIX" path. This is a real problem. Even setting aside that common callers of `getpwuid ()` (such as OpenSSH) are unable to handle Windows paths in the `pw_dir` attribute, the Windows path never makes it back to the caller unscathed. The value returned from `fetch_home_env ()` is not actually used as-is. Instead, the `fetch_account_from_windows ()` method uses it to write a pseudo `/etc/passwd`-formatted line that is _then_ parsed via the `pwdgrp::parse_passwd ()` method which sees no problem with misinterpreting the colon after the drive letter as a field separator of that `/etc/passwd`-formatted line, and instead of a Windows path, we now have a mere drive letter. Let's detect when the `HOME` value is still in Windows format in `fetch_home_env ()`, and convert it in that case. For good measure, interpret this "Windows format" not only to include absolute paths with drive prefixes, but also UNC paths. Signed-off-by: Johannes Schindelin --- winsup/cygwin/uinfo.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 5e2d88bcd7..21d729d5dc 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -929,7 +929,13 @@ fetch_home_env (void) /* If `HOME` is set, prefer it */ const char *home = getenv ("HOME"); if (home) - return strdup (home); + { + /* In the very early code path of `user_info::initialize ()`, the value + of the environment variable `HOME` is still in its Windows form. */ + if (isdrive (home) || home[0] == '\\') + return (char *) cygwin_create_path (CCP_WIN_A_TO_POSIX, home); + return strdup (home); + } /* If `HOME` is unset, fall back to `HOMEDRIVE``HOMEPATH` (without a directory separator, as `HOMEPATH` starts with one). */ From 538b29a8da8661eceab9b7329d24625256a8d469 Mon Sep 17 00:00:00 2001 From: Philippe Cerfon Date: Tue, 30 May 2023 13:16:18 +0200 Subject: [PATCH 311/767] Cygwin: export XATTR_{NAME,SIZE,LIST}_MAX These are used for example by CPython. Signed-off-by: Philippe Cerfon Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/limits.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/winsup/cygwin/include/cygwin/limits.h b/winsup/cygwin/include/cygwin/limits.h index aefc7c7bdb..ea3e2836a4 100644 --- a/winsup/cygwin/include/cygwin/limits.h +++ b/winsup/cygwin/include/cygwin/limits.h @@ -56,4 +56,11 @@ details. */ #define __PATH_MAX 4096 #define __PIPE_BUF 4096 +/* XATTR_NAME_MAX is the maximum XATTR name length excluding the null + * terminator. Since only XATTRs in the `user' namespace are allowed and the + * `user.' prefix is not stored, the maximum is increased by 5. */ +#define XATTR_NAME_MAX 260 +#define XATTR_SIZE_MAX 65536 +#define XATTR_LIST_MAX 65536 + #endif /* _CYGWIN_LIMITS_H__ */ From 048031501043e61ca31713b92ce2190213c7fb21 Mon Sep 17 00:00:00 2001 From: Philippe Cerfon Date: Tue, 6 Jun 2023 02:52:49 +0200 Subject: [PATCH 312/767] Cygwin: use new XATTR_{NAME,SIZE}_MAX instead of MAX_EA_{NAME,VALUE}_LEN Signed-off-by: Philippe Cerfon --- winsup/cygwin/ntea.cc | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/ntea.cc b/winsup/cygwin/ntea.cc index a400fcb2b3..70815649c3 100644 --- a/winsup/cygwin/ntea.cc +++ b/winsup/cygwin/ntea.cc @@ -17,9 +17,11 @@ details. */ #include "tls_pbuf.h" #include #include +#include -#define MAX_EA_NAME_LEN 256 -#define MAX_EA_VALUE_LEN 65536 +/* On storage the `user.` prefix is not included but the terminating null byte + is needed.*/ +#define _XATTR_NAME_MAX_ONDISK_ (XATTR_NAME_MAX - strlen("user.") + 1) /* At least one maximum sized entry fits. CV 2014-04-04: NtQueryEaFile function chokes on buffers bigger than 64K @@ -27,13 +29,13 @@ details. */ on a remote share, at least on Windows 7 and later. In theory the buffer should have a size of - sizeof (FILE_FULL_EA_INFORMATION) + MAX_EA_NAME_LEN - + MAX_EA_VALUE_LEN + sizeof (FILE_FULL_EA_INFORMATION) + _XATTR_NAME_MAX_ONDISK_ + + XATTR_SIZE_MAX (65804 bytes), but we're opting for simplicity here, and a 64K buffer has the advantage that we can use a tmp_pathbuf buffer, rather than having to alloca 64K from stack. */ -#define EA_BUFSIZ MAX_EA_VALUE_LEN +#define EA_BUFSIZ XATTR_SIZE_MAX #define NEXT_FEA(p) ((PFILE_FULL_EA_INFORMATION) (p->NextEntryOffset \ ? (char *) p + p->NextEntryOffset : NULL)) @@ -55,7 +57,7 @@ read_ea (HANDLE hdl, path_conv &pc, const char *name, char *value, size_t size) returns the last EA entry of the file infinitely. Even utilizing the optional EaIndex only helps marginally. If you use that, the last EA in the file is returned twice. */ - char lastname[MAX_EA_NAME_LEN]; + char lastname[_XATTR_NAME_MAX_ONDISK_]; __try { @@ -95,7 +97,7 @@ read_ea (HANDLE hdl, path_conv &pc, const char *name, char *value, size_t size) __leave; } - if ((nlen = strlen (name)) >= MAX_EA_NAME_LEN) + if ((nlen = strlen (name)) >= _XATTR_NAME_MAX_ONDISK_) { set_errno (EINVAL); __leave; @@ -197,7 +199,7 @@ read_ea (HANDLE hdl, path_conv &pc, const char *name, char *value, size_t size) /* For compatibility with Linux, we always prepend "user." to the attribute name, so effectively we only support user attributes from a application point of view. */ - char tmpbuf[MAX_EA_NAME_LEN * 2]; + char tmpbuf[_XATTR_NAME_MAX_ONDISK_ * 2]; char *tp = stpcpy (tmpbuf, "user."); stpcpy (tp, fea->EaName); /* NTFS stores all EA names in uppercase unfortunately. To @@ -297,7 +299,7 @@ write_ea (HANDLE hdl, path_conv &pc, const char *name, const char *value, /* Skip "user." prefix. */ name += 5; - if ((nlen = strlen (name)) >= MAX_EA_NAME_LEN) + if ((nlen = strlen (name)) >= _XATTR_NAME_MAX_ONDISK_) { set_errno (EINVAL); __leave; From 293785382cb0787c77c3daa34ca9cdcfee860ec1 Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Mon, 19 Jun 2023 12:15:17 -0600 Subject: [PATCH 313/767] wincap.h: add wincap member has_user_shstk Indicate support of user mode hardware-enforced shadow stack Signed-off-by: Brian Inglis --- winsup/cygwin/local_includes/wincap.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/local_includes/wincap.h b/winsup/cygwin/local_includes/wincap.h index 29a7a63de7..c14872787c 100644 --- a/winsup/cygwin/local_includes/wincap.h +++ b/winsup/cygwin/local_includes/wincap.h @@ -32,6 +32,7 @@ struct wincaps unsigned has_linux_tcp_keepalive_sockopts : 1; unsigned has_tcp_maxrtms : 1; unsigned has_con_broken_tabs : 1; + unsigned has_user_shstk : 1; }; }; @@ -84,6 +85,7 @@ class wincapc bool IMPLEMENT (has_linux_tcp_keepalive_sockopts) bool IMPLEMENT (has_tcp_maxrtms) bool IMPLEMENT (has_con_broken_tabs) + bool IMPLEMENT (has_user_shstk) void disable_case_sensitive_dirs () { From 1c4a00962fb78f722d3faafe2f71506e6124cacb Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Mon, 19 Jun 2023 12:15:18 -0600 Subject: [PATCH 314/767] wincap.cc: set wincap member has_user_shstk true for 2004+ Signed-off-by: Brian Inglis --- winsup/cygwin/wincap.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 91d5d9df88..30d9c14e8d 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -31,6 +31,7 @@ static const wincaps wincap_8_1 = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, + has_user_shstk:false, }, }; @@ -52,6 +53,7 @@ static const wincaps wincap_10_1507 = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:false, has_con_broken_tabs:false, + has_user_shstk:false, }, }; @@ -73,6 +75,7 @@ static const wincaps wincap_10_1607 = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, has_con_broken_tabs:false, + has_user_shstk:false, }, }; @@ -94,6 +97,7 @@ static const wincaps wincap_10_1703 = { has_linux_tcp_keepalive_sockopts:false, has_tcp_maxrtms:true, has_con_broken_tabs:true, + has_user_shstk:false, }, }; @@ -115,6 +119,7 @@ static const wincaps wincap_10_1709 = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, + has_user_shstk:false, }, }; @@ -136,6 +141,7 @@ static const wincaps wincap_10_1803 = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, + has_user_shstk:false, }, }; @@ -157,6 +163,7 @@ static const wincaps wincap_10_1809 = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, + has_user_shstk:false, }, }; @@ -178,6 +185,7 @@ static const wincaps wincap_10_1903 = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, + has_user_shstk:false, }, }; @@ -199,6 +207,7 @@ static const wincaps wincap_10_2004 = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:true, + has_user_shstk:true, }, }; @@ -220,6 +229,7 @@ static const wincaps wincap_11 = { has_linux_tcp_keepalive_sockopts:true, has_tcp_maxrtms:true, has_con_broken_tabs:false, + has_user_shstk:true, }, }; From 6604db8b80bd8c5aed4673ade49f768b9f51898b Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Mon, 19 Jun 2023 12:15:19 -0600 Subject: [PATCH 315/767] fhandler/proc.cc: use wincap.has_user_shstk In test for AMD/Intel Control flow Enforcement Technology user mode shadow stack support replace Windows version tests with test of wincap member addition has_user_shstk with Windows version dependent value Fixes: 41fdb869f998 ("fhandler/proc.cc(format_proc_cpuinfo): Add Linux 6.3 cpuinfo") Signed-off-by: Brian Inglis --- winsup/cygwin/fhandler/proc.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index 3c79762e0f..cbc49a12a4 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -1486,12 +1486,12 @@ format_proc_cpuinfo (void *, char *&destbuf) /* ftcprint (features1, 6, "split_lock_detect");*//* MSR_TEST_CTRL split lock */ - /* cpuid 0x00000007 ecx & Windows [20]20H1/[20]2004+ */ - if (maxf >= 0x00000007 && wincap.osname () >= "10.0" - && wincap.build_number () >= 19041) + /* Windows [20]20H1/[20]2004/19041 user shadow stack */ + if (maxf >= 0x00000007 && wincap.has_user_shstk ()) { + /* cpuid 0x00000007 ecx CET shadow stack */ cpuid (&unused, &unused, &features1, &unused, 0x00000007, 0); - ftcprint (features1, 7, "user_shstk"); /* "user shadow stack" */ + ftcprint (features1, 7, "user_shstk"); /* user shadow stack */ } /* cpuid 0x00000007:1 eax */ From 6b2ae32ecdfdb8ca1337e19fac3b6e0a4079e769 Mon Sep 17 00:00:00 2001 From: Mingye Wang Date: Wed, 21 Jun 2023 20:11:57 +0800 Subject: [PATCH 316/767] Make SIG2STR_MAX usable in #if The text accepted for POSIX issue 8 requires that SIG2STR_MAX be usable in #if, which we currently break with sizeof. Use static values instead. --- newlib/libc/include/sys/signal.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/libc/include/sys/signal.h b/newlib/libc/include/sys/signal.h index 8dc5fb9c34..96bf9781ae 100644 --- a/newlib/libc/include/sys/signal.h +++ b/newlib/libc/include/sys/signal.h @@ -245,9 +245,9 @@ int sigqueue (pid_t, int, const union sigval); /* POSIX Issue 8 adds sig2str() and str2sig() */ #if __SIZEOF_INT__ >= 4 -#define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("4294967295") - 1) +#define SIG2STR_MAX 17 /* (sizeof("RTMAX+") + sizeof("4294967295") - 1) */ #else -#define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("65535") - 1) +#define SIG2STR_MAX 12 /* (sizeof("RTMAX+") + sizeof("65535") - 1) */ #endif int sig2str(int, char *); From 4c7d0dfec5793cbf5cf3930b91f930479126d8ce Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Fri, 14 Apr 2023 21:26:32 +0200 Subject: [PATCH 317/767] For GCC, newlib combined tree, newlib build-tree testing, use standard search paths For example, for GCC/GCN target (AMD GPUs), target libraries are built individually per supported hardware ISA ('-march=[...]'). Testing such a toolchain via, for example: $ make RUNTESTFLAGS='--target_board=[...]/-march=gfx90a' check[...] ... does work fine for all 'check-gcc-[...]' as well as GCC-provided target libraries, 'check-target-[...]'. Just for 'check-target-newlib', for the example above, not the '-march=gfx90a' newlib libraries are linked in, but instead always the default ones, which results in link FAILure. This is cured simply by skipping use of 'newlib/testsuite/lib/flags.exp', so that the standard search paths as determined by GCC, DejaGnu are used for newlib, too. --- newlib/testsuite/lib/flags.exp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/newlib/testsuite/lib/flags.exp b/newlib/testsuite/lib/flags.exp index e1e9acb186..697291e7a5 100644 --- a/newlib/testsuite/lib/flags.exp +++ b/newlib/testsuite/lib/flags.exp @@ -4,6 +4,13 @@ # is freely granted, provided that this notice is preserved. # +if [info exists env(XGCC_FLAGS_FOR_TARGET)] { + verbose "GCC, newlib combined tree, build-tree testing; using standard search paths" + # ... instead of the search paths built here, based on 'objdir' as set in + # newlib's 'site.exp', which always points to the default multilib. + return +} + # flags.exp: overrides the dejagnu versions of libgloss_link_flags, # newlib_link_flags, and newlib_include_flags. From bfb16b0edef49b8e694bcb1b419bfcb5a0a3dfac Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 23 Jun 2023 00:07:26 +0900 Subject: [PATCH 318/767] Cygwin: thread: Reset _my_tls.tid if it's pthread_null in init_mainthread(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, _my_tls.tid is set to pthread_null if pthread::self() is called before pthread::init_mainthread(). As a result, pthread:: init_mainthread() does not set _my_tls.tid appropriately. Due to this, pthread_join() fails in LDAP environment if the program is the first program which loads cygwin1.dll. https://cygwin.com/pipermail/cygwin/2023-June/253792.html With this patch, _my_tls.tid is re-initialized in pthread:: init_mainthread() if it is pthread_null. Reported-by: Mümin A. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/thread.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index 5c1284a936..f614e01c42 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -364,7 +364,7 @@ void pthread::init_mainthread () { pthread *thread = _my_tls.tid; - if (!thread) + if (!thread || thread == pthread_null::get_null_pthread ()) { thread = new pthread (); if (!thread) From 6422e76637d3dfcb2fcf791bb92c9cc910dd33a5 Mon Sep 17 00:00:00 2001 From: Mark Geisert Date: Mon, 3 Jul 2023 17:51:41 -0700 Subject: [PATCH 319/767] Cygwin: Make safe for c89 compilations Four modifications to include/sys/cpuset.h: * Change C++-style comments to C-style also supported by C++ * Change "inline" to "__inline" on code lines * Add "#include " to make sure __inline is defined * Don't declare loop variables on for-loop init clauses Tested by first reproducing the reported issue with home-grown test programs by compiling with gcc option "-std=c89", then compiling again using the modified . Other "-std=" options tested too. Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q3/012308.html Fixes: 315e5fbd99ec ("Cygwin: Fix type mismatch on sys/cpuset.h") Signed-off-by: Mark Geisert --- winsup/cygwin/include/sys/cpuset.h | 49 ++++++++++++++++-------------- winsup/cygwin/release/3.4.7 | 3 ++ 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/winsup/cygwin/include/sys/cpuset.h b/winsup/cygwin/include/sys/cpuset.h index d83359fdf3..0c95134ff3 100644 --- a/winsup/cygwin/include/sys/cpuset.h +++ b/winsup/cygwin/include/sys/cpuset.h @@ -9,14 +9,16 @@ details. */ #ifndef _SYS_CPUSET_H_ #define _SYS_CPUSET_H_ +#include + #ifdef __cplusplus extern "C" { #endif typedef __SIZE_TYPE__ __cpu_mask; -#define __CPU_SETSIZE 1024 // maximum number of logical processors tracked -#define __NCPUBITS (8 * sizeof (__cpu_mask)) // max size of processor group -#define __CPU_GROUPMAX (__CPU_SETSIZE / __NCPUBITS) // maximum group number +#define __CPU_SETSIZE 1024 /* maximum number of logical processors tracked */ +#define __NCPUBITS (8 * sizeof (__cpu_mask)) /* max size of processor group */ +#define __CPU_GROUPMAX (__CPU_SETSIZE / __NCPUBITS) /* maximum group number */ #define __CPUELT(cpu) ((cpu) / __NCPUBITS) #define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS)) @@ -32,21 +34,21 @@ int __sched_getaffinity_sys (pid_t, size_t, cpu_set_t *); /* These macros alloc or free dynamically-sized cpu sets of size 'num' cpus. Allocations are padded such that full-word operations can be done easily. */ #define CPU_ALLOC_SIZE(num) __cpuset_alloc_size (num) -static inline size_t +static __inline size_t __cpuset_alloc_size (int num) { return (size_t) (((num + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)); } #define CPU_ALLOC(num) __cpuset_alloc (num) -static inline cpu_set_t * +static __inline cpu_set_t * __cpuset_alloc (int num) { return (cpu_set_t *) __builtin_malloc (CPU_ALLOC_SIZE(num)); } #define CPU_FREE(set) __cpuset_free (set) -static inline void +static __inline void __cpuset_free (cpu_set_t *set) { __builtin_free (set); @@ -54,14 +56,14 @@ __cpuset_free (cpu_set_t *set) /* These _S macros operate on dynamically-sized cpu sets of size 'siz' bytes */ #define CPU_ZERO_S(siz, set) __cpuset_zero_s (siz, set) -static inline void +static __inline void __cpuset_zero_s (size_t siz, cpu_set_t *set) { (void) __builtin_memset (set, 0, siz); } #define CPU_SET_S(cpu, siz, set) __cpuset_set_s (cpu, siz, set) -static inline void +static __inline void __cpuset_set_s (int cpu, size_t siz, cpu_set_t *set) { if (cpu >= 0 && cpu < 8 * siz) @@ -69,7 +71,7 @@ __cpuset_set_s (int cpu, size_t siz, cpu_set_t *set) } #define CPU_CLR_S(cpu, siz, set) __cpuset_clr_s (cpu, siz, set) -static inline void +static __inline void __cpuset_clr_s (int cpu, size_t siz, cpu_set_t *set) { if (cpu >= 0 && cpu < 8 * siz) @@ -77,7 +79,7 @@ __cpuset_clr_s (int cpu, size_t siz, cpu_set_t *set) } #define CPU_ISSET_S(cpu, siz, set) __cpuset_isset_s (cpu, siz, set) -static inline int +static __inline int __cpuset_isset_s (int cpu, size_t siz, cpu_set_t *set) { int res = 0; @@ -87,45 +89,48 @@ __cpuset_isset_s (int cpu, size_t siz, cpu_set_t *set) } #define CPU_COUNT_S(siz, set) __cpuset_count_s (siz, set) -static inline int +static __inline int __cpuset_count_s (size_t siz, cpu_set_t *set) { - int res = 0; - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + int i, res = 0; + for (i = 0; i < siz / sizeof (__cpu_mask); i++) res += __builtin_popcountl ((set)->__bits[i]); return res; } #define CPU_AND_S(siz, dst, src1, src2) __cpuset_and_s (siz, dst, src1, src2) -static inline void +static __inline void __cpuset_and_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) { - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + int i; + for (i = 0; i < siz / sizeof (__cpu_mask); i++) (dst)->__bits[i] = (src1)->__bits[i] & (src2)->__bits[i]; } #define CPU_OR_S(siz, dst, src1, src2) __cpuset_or_s (siz, dst, src1, src2) -static inline void +static __inline void __cpuset_or_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) { - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + int i; + for (i = 0; i < siz / sizeof (__cpu_mask); i++) (dst)->__bits[i] = (src1)->__bits[i] | (src2)->__bits[i]; } #define CPU_XOR_S(siz, dst, src1, src2) __cpuset_xor_s (siz, dst, src1, src2) -static inline void +static __inline void __cpuset_xor_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) { - for (int i = 0; i < siz / sizeof (__cpu_mask); i++) + int i; + for (i = 0; i < siz / sizeof (__cpu_mask); i++) (dst)->__bits[i] = (src1)->__bits[i] ^ (src2)->__bits[i]; } #define CPU_EQUAL_S(siz, src1, src2) __cpuset_equal_s (siz, src1, src2) -static inline int +static __inline int __cpuset_equal_s (size_t siz, cpu_set_t *src1, cpu_set_t *src2) { - int res = 1; - for (int i = 0; res && i < siz / sizeof (__cpu_mask); i++) + int i, res = 1; + for (i = 0; res && i < siz / sizeof (__cpu_mask); i++) res &= (src1)->__bits[i] == (src2)->__bits[i]; return res; } diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 0e6922163a..923408ec2d 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -25,3 +25,6 @@ Bug Fixes - Fix return code and errno set by renameat2, if oldfile and newfile refer to the same file, and the RENAME_NOREPLACE flag is set. Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253514.html + +- Make safe for c89 compilations. + Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q3/012308.html From e38f91d5a96c4554c69c833243e5afec8e3e90eb Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 4 Jul 2023 16:50:00 +0200 Subject: [PATCH 320/767] Cygwin: Fix latest release message being in the wrong release file. Fixes: 6422e76637d3 ("Cygwin: Make safe for c89 compilations") Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.7 | 3 --- winsup/cygwin/release/3.4.8 | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 winsup/cygwin/release/3.4.8 diff --git a/winsup/cygwin/release/3.4.7 b/winsup/cygwin/release/3.4.7 index 923408ec2d..0e6922163a 100644 --- a/winsup/cygwin/release/3.4.7 +++ b/winsup/cygwin/release/3.4.7 @@ -25,6 +25,3 @@ Bug Fixes - Fix return code and errno set by renameat2, if oldfile and newfile refer to the same file, and the RENAME_NOREPLACE flag is set. Addresses: https://cygwin.com/pipermail/cygwin/2023-April/253514.html - -- Make safe for c89 compilations. - Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q3/012308.html diff --git a/winsup/cygwin/release/3.4.8 b/winsup/cygwin/release/3.4.8 new file mode 100644 index 0000000000..d1e34ce3c6 --- /dev/null +++ b/winsup/cygwin/release/3.4.8 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +- Make safe for c89 compilations. + Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q3/012308.html From 3edb55af820025013b87fdb53249676067a8b8ee Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 7 Jul 2023 06:11:52 +0900 Subject: [PATCH 321/767] Cygwin: stat(): Fix "Bad address" error on stat() for /dev/tty. As reported in https://cygwin.com/pipermail/cygwin/2023-June/253888.html, "Bad address" error occurs when stat() is called after the commit 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals."). There are two problems in the current code. One is fhandler_console:: fstat() calls get_ttyp()->getsid(). However, fh_alloc() in dtable.cc omits to initialize the fhandler_console instance when stat() is called. Due to this, get_ttyp() returns NULL and access violation occurs. The other problem is fh_alloc() assigns fhandler_console even if the CTTY is not a console. So the first problem above occurs even if the CTTY is a pty. This patch fixes the issue by: 1) Call set_unit() to initialize _tc if the get_ttyp() returns NULL. 2) Assign fhandler_pty_slave for /dev/tty if CTTY is a pty in fh_alloc(). Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals."). Fixes: 23771fa1f7028 ("dtable.cc (fh_alloc): Make different decisions when generating fhandler for not-opened devices. Add kludge to deal with opening /dev/tty.") Reported-by: Bruce Jerrick Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/dtable.cc | 8 +++++++- winsup/cygwin/fhandler/console.cc | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 18e0f30978..2aae2fd652 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -600,7 +600,13 @@ fh_alloc (path_conv& pc) case FH_TTY: if (!pc.isopen ()) { - fhraw = cnew_no_ctor (fhandler_console, -1); + if (CTTY_IS_VALID (myself->ctty)) + { + if (iscons_dev (myself->ctty)) + fhraw = cnew_no_ctor (fhandler_console, -1); + else + fhraw = cnew_no_ctor (fhandler_pty_slave, -1); + } debug_printf ("not called from open for /dev/tty"); } else if (!CTTY_IS_VALID (myself->ctty) && last_tty_dev diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 7768a99418..6aa3b50bf5 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -4554,6 +4554,12 @@ fhandler_console::set_disable_master_thread (bool x, fhandler_console *cons) int fhandler_console::fstat (struct stat *st) { + /* When stat() is called, fh_alloc() in dtable.cc omits to initialize + the console instance. Due to this, get_ttyp() returns NULL here. + So, calling set_unit() is necessary to access getsid(). */ + if (!get_ttyp ()) + set_unit (); + fhandler_base::fstat (st); st->st_mode = S_IFCHR | S_IRUSR | S_IWUSR; pinfo p (get_ttyp ()->getsid ()); From b03601a6713a6f7ef9ed3adea7d0e7715332f87d Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 7 Jul 2023 06:39:13 +0900 Subject: [PATCH 322/767] Cygwin: fstat(): Fix st_rdev returned by fstat() for /dev/tty. While st_rdev returned by fstat() for /dev/tty should be FH_TTY, the current cygwin1.dll returns FH_PTYS+minor or FH_CONS+minor. Similarly, fstat() does not return correct value for /dev/console, /dev/conout, /dev/conin or /dev/ptmx. This patch fixes the issue by: 1) Introduce dev_referred_via in fhandler_termios. 2) Add new argument, which has dev_t value referred by open(), for constructors of fhandler_pty_slave and fhandler_pty_master to set the value of dev_referred_via. 3) Set st_rdev using dev_referred_via in fhandler_termios::fstat() if it is available. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/dtable.cc | 5 +++-- winsup/cygwin/fhandler/console.cc | 8 ++++++-- winsup/cygwin/fhandler/pty.cc | 8 +++++--- winsup/cygwin/fhandler/termios.cc | 9 +++++++++ winsup/cygwin/local_includes/fhandler.h | 12 ++++++++++-- 5 files changed, 33 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 2aae2fd652..156445119c 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -509,7 +509,7 @@ fh_alloc (path_conv& pc) break; case FH_PTMX: if (pc.isopen ()) - fh = cnew (fhandler_pty_master, -1); + fh = cnew (fhandler_pty_master, -1, (dev_t) pc.dev); else fhraw = cnew_no_ctor (fhandler_pty_master, -1); break; @@ -618,7 +618,8 @@ fh_alloc (path_conv& pc) if (iscons_dev (myself->ctty)) fh = cnew (fhandler_console, pc.dev); else - fh = cnew (fhandler_pty_slave, myself->ctty); + fh = cnew (fhandler_pty_slave, + minor (myself->ctty), (dev_t) pc.dev); if (fh->dev () != FH_NADA) fh->set_name ("/dev/tty"); } diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 6aa3b50bf5..b924a6bf31 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -2110,6 +2110,7 @@ fhandler_console::fhandler_console (fh_devices devunit) : fhandler_termios (), input_ready (false), thread_sync_event (NULL), input_mutex (NULL), output_mutex (NULL), unit (MAX_CONS_DEV) { + dev_referred_via = (dev_t) devunit; if (devunit > 0) dev ().parse (devunit); setup (); @@ -4558,9 +4559,12 @@ fhandler_console::fstat (struct stat *st) the console instance. Due to this, get_ttyp() returns NULL here. So, calling set_unit() is necessary to access getsid(). */ if (!get_ttyp ()) - set_unit (); + { + dev_referred_via = get_device (); + set_unit (); + } - fhandler_base::fstat (st); + fhandler_termios::fstat (st); st->st_mode = S_IFCHR | S_IRUSR | S_IWUSR; pinfo p (get_ttyp ()->getsid ()); if (p) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 1f2b634a06..8b8c42bc13 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -765,10 +765,11 @@ fhandler_pty_master::process_slave_output (char *buf, size_t len, int pktmode_on /* pty slave stuff */ -fhandler_pty_slave::fhandler_pty_slave (int unit) +fhandler_pty_slave::fhandler_pty_slave (int unit, dev_t via) : fhandler_pty_common (), inuse (NULL), output_handle_nat (NULL), io_handle_nat (NULL), slave_reading (NULL), num_reader (0) { + dev_referred_via = via; if (unit >= 0) dev ().parse (DEV_PTYS_MAJOR, unit); } @@ -1769,7 +1770,7 @@ fhandler_pty_slave::ioctl (unsigned int cmd, void *arg) int fhandler_pty_slave::fstat (struct stat *st) { - fhandler_base::fstat (st); + fhandler_termios::fstat (st); bool to_close = false; if (!input_available_event) @@ -1974,13 +1975,14 @@ fhandler_pty_slave::fchown (uid_t uid, gid_t gid) /******************************************************* fhandler_pty_master */ -fhandler_pty_master::fhandler_pty_master (int unit) +fhandler_pty_master::fhandler_pty_master (int unit, dev_t via) : fhandler_pty_common (), pktmode (0), master_ctl (NULL), master_thread (NULL), from_master_nat (NULL), to_master_nat (NULL), from_slave_nat (NULL), to_slave_nat (NULL), echo_r (NULL), echo_w (NULL), dwProcessId (0), to_master (NULL), from_master (NULL), master_fwd_thread (NULL) { + dev_referred_via = via; if (unit >= 0) dev ().parse (DEV_PTYM_MAJOR, unit); set_name ("/dev/ptmx"); diff --git a/winsup/cygwin/fhandler/termios.cc b/winsup/cygwin/fhandler/termios.cc index 1a5dfdd1bb..789ae0179f 100644 --- a/winsup/cygwin/fhandler/termios.cc +++ b/winsup/cygwin/fhandler/termios.cc @@ -691,6 +691,15 @@ fhandler_termios::tcgetsid () return -1; } +int +fhandler_termios::fstat (struct stat *buf) +{ + fhandler_base::fstat (buf); + if (dev_referred_via > 0) + buf->st_rdev = dev_referred_via; + return 0; +} + static bool is_console_app (const WCHAR *filename) { diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index f82f565cf4..661fe23dc2 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -1936,6 +1936,7 @@ class fhandler_termios: public fhandler_base virtual void acquire_input_mutex_if_necessary (DWORD ms) {}; virtual void release_input_mutex_if_necessary (void) {}; virtual void discard_input () {}; + dev_t dev_referred_via; /* Result status of processing keys in process_sigs(). */ enum process_sig_state { @@ -1975,6 +1976,7 @@ class fhandler_termios: public fhandler_base void echo_erase (int force = 0); virtual off_t lseek (off_t, int); pid_t tcgetsid (); + virtual int fstat (struct stat *buf); fhandler_termios (void *) {} @@ -2297,7 +2299,9 @@ class fhandler_console: public fhandler_termios void copy_from (fhandler_base *x) { pc.free_strings (); + dev_t via = this->dev_referred_via; /* Do not copy dev_referred_via */ *this = *reinterpret_cast (x); + this->dev_referred_via = via; _copy_from_reset_helper (); } @@ -2424,7 +2428,7 @@ class fhandler_pty_slave: public fhandler_pty_common typedef ptys_handle_set_t handle_set_t; /* Constructor */ - fhandler_pty_slave (int); + fhandler_pty_slave (int, dev_t via = 0); void set_output_handle_nat (HANDLE h) { output_handle_nat = h; } HANDLE& get_output_handle_nat () { return output_handle_nat; } @@ -2462,7 +2466,9 @@ class fhandler_pty_slave: public fhandler_pty_common void copy_from (fhandler_base *x) { pc.free_strings (); + dev_t via = this->dev_referred_via; /* Do not copy dev_referred_via */ *this = *reinterpret_cast (x); + this->dev_referred_via = via; _copy_from_reset_helper (); } @@ -2537,7 +2543,7 @@ class fhandler_pty_master: public fhandler_pty_common public: HANDLE get_echo_handle () const { return echo_r; } /* Constructor */ - fhandler_pty_master (int); + fhandler_pty_master (int, dev_t via = 0); static DWORD pty_master_thread (const master_thread_param_t *p); static DWORD pty_master_fwd_thread (const master_fwd_thread_param_t *p); @@ -2572,7 +2578,9 @@ class fhandler_pty_master: public fhandler_pty_common void copy_from (fhandler_base *x) { pc.free_strings (); + dev_t via = this->dev_referred_via; /* Do not copy dev_referred_via */ *this = *reinterpret_cast (x); + this->dev_referred_via = via; _copy_from_reset_helper (); } From 3f2790e0443973fc3130713b0f8d8be3bf5650af Mon Sep 17 00:00:00 2001 From: Mark Geisert Date: Sun, 9 Jul 2023 00:59:22 -0700 Subject: [PATCH 323/767] Cygwin: Make gcc-specific code in compiler-agnostic The current version of cannot be compiled by Clang due to the use of builtin versions of malloc, free, and memset. Their presence here was a dubious optimization anyway, so their usage has been converted to standard library functions. The use of __builtin_popcountl remains because Clang implements it just like gcc does. If/when some other compiler (Rust? Go?) runs into this issue we can deal with specialized handling then. The "#include " here to define __inline can be removed since both of the new includes sub-include it. Addresses: https://cygwin.com/pipermail/cygwin/2023-July/253927.html Fixes: 9cc910dd33a5 (Cygwin: Make safe for c89 compilations) Signed-off-by: Mark Geisert --- winsup/cygwin/include/sys/cpuset.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/include/sys/cpuset.h b/winsup/cygwin/include/sys/cpuset.h index 0c95134ff3..95c777cfbc 100644 --- a/winsup/cygwin/include/sys/cpuset.h +++ b/winsup/cygwin/include/sys/cpuset.h @@ -9,7 +9,8 @@ details. */ #ifndef _SYS_CPUSET_H_ #define _SYS_CPUSET_H_ -#include +#include +#include #ifdef __cplusplus extern "C" { @@ -44,14 +45,14 @@ __cpuset_alloc_size (int num) static __inline cpu_set_t * __cpuset_alloc (int num) { - return (cpu_set_t *) __builtin_malloc (CPU_ALLOC_SIZE(num)); + return (cpu_set_t *) malloc (CPU_ALLOC_SIZE(num)); } #define CPU_FREE(set) __cpuset_free (set) static __inline void __cpuset_free (cpu_set_t *set) { - __builtin_free (set); + free (set); } /* These _S macros operate on dynamically-sized cpu sets of size 'siz' bytes */ @@ -59,7 +60,7 @@ __cpuset_free (cpu_set_t *set) static __inline void __cpuset_zero_s (size_t siz, cpu_set_t *set) { - (void) __builtin_memset (set, 0, siz); + (void) memset (set, 0, siz); } #define CPU_SET_S(cpu, siz, set) __cpuset_set_s (cpu, siz, set) From c836d26d768b9db1b948ba5dcef571cd356cfb6c Mon Sep 17 00:00:00 2001 From: Mark Geisert Date: Wed, 12 Jul 2023 22:36:59 -0700 Subject: [PATCH 324/767] Cygwin: Update release/3.4.8 for latest commit --- winsup/cygwin/release/3.4.8 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.4.8 b/winsup/cygwin/release/3.4.8 index d1e34ce3c6..3113be8cb6 100644 --- a/winsup/cygwin/release/3.4.8 +++ b/winsup/cygwin/release/3.4.8 @@ -3,3 +3,6 @@ Bug Fixes - Make safe for c89 compilations. Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q3/012308.html + +- Make gcc-specific code in compiler-agnostic. + Addresses: https://cygwin.com/pipermail/cygwin/2023-July/253927.html From b7c3a63bb3c4dab861b2bce8793b8dfb36151799 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Thu, 13 Jul 2023 09:52:26 +0000 Subject: [PATCH 325/767] newlib: posix: add HAVE_OPENDIR build condition for [n]ftw.c --- newlib/libc/posix/ftw.c | 3 +++ newlib/libc/posix/nftw.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/newlib/libc/posix/ftw.c b/newlib/libc/posix/ftw.c index 18cfc24cbf..79e63582ce 100644 --- a/newlib/libc/posix/ftw.c +++ b/newlib/libc/posix/ftw.c @@ -1,3 +1,5 @@ +#ifndef HAVE_OPENDIR + /* * Copyright © 2005-2020 Rich Felker, et al. * @@ -31,3 +33,4 @@ int ftw(const char *path, int (*fn)(const char *, const struct stat *, int), int return nftw(path, (int (*)())fn, fd_limit, FTW_PHYS); } +#endif /* ! HAVE_OPENDIR */ diff --git a/newlib/libc/posix/nftw.c b/newlib/libc/posix/nftw.c index c45cc8f172..17c5bfd1e3 100644 --- a/newlib/libc/posix/nftw.c +++ b/newlib/libc/posix/nftw.c @@ -1,3 +1,5 @@ +#ifndef HAVE_OPENDIR + /* * Copyright © 2005-2020 Rich Felker, et al. * @@ -154,3 +156,4 @@ int nftw(const char *path, int (*fn)(const char *, const struct stat *, int, str return r; } +#endif /* ! HAVE_OPENDIR */ From e8c1a579cdc5fc71b1aac1e747f6b10d4a1e8fd6 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 4 Jul 2023 13:59:14 +0100 Subject: [PATCH 326/767] Cygwin: testsuite: Setup test prereqs in 'installation' the tests run in Do some setup in the Cygwin 'installation' at testsuite/testinst/: * Ensure /tmp exists * Use BusyBox to provide executables needed by tests which use system() (sh, sleep, ls) This enables tests which use system(), or require /tmp to exist to pass. Signed-off-by: Jon Turney --- .github/workflows/cygwin.yml | 3 ++- winsup/cygwin/Makefile.am | 4 ++-- winsup/doc/faq-programming.xml | 3 ++- winsup/testsuite/Makefile.am | 25 ++++++++++++++++++++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 575ff1fdc8..248a3e4cdb 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -71,6 +71,7 @@ jobs: packages: >- autoconf, automake, + busybox, cocom, dblatex, dejagnu, @@ -116,6 +117,6 @@ jobs: export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 && export MAKEFLAGS=-j$(nproc) && cd build && - (export PATH=${{ matrix.target }}/winsup/testsuite/runtime:${PATH} && cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) && + (export PATH=${{ matrix.target }}/winsup/testsuite/testinst/bin:${PATH} && cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) && (cd ${{ matrix.target }}/winsup; make check || true) shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index c34ca6ddc3..bfb5ead103 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -602,8 +602,8 @@ $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libm.a \ $(newlib_build)/libc.a \ -lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map - @$(MKDIR_P) ${target_builddir}/winsup/testsuite/runtime/ - $(AM_V_at)$(INSTALL_PROGRAM) $(NEW_DLL_NAME) ${target_builddir}/winsup/testsuite/runtime/$(DLL_NAME) + @$(MKDIR_P) ${target_builddir}/winsup/testsuite/testinst/bin/ + $(AM_V_at)$(INSTALL_PROGRAM) $(NEW_DLL_NAME) ${target_builddir}/winsup/testsuite/testinst/bin/$(DLL_NAME) # cygwin import library toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@ diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index 7fc6baf254..15ae6eac48 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -697,7 +697,8 @@ Building these programs can be disabled with the --without-cross-bootst option to configure. - + Building the documentation also requires the dblatex, diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index 7853d98e84..11332eda2a 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -339,7 +339,7 @@ testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive site-extra.exp: ../config.status Makefile @rm -f ./tmp0 - @echo "set runtime_root \"`pwd`/runtime\"" >> ./tmp0 + @echo "set runtime_root \"`pwd`/testinst/bin\"" >> ./tmp0 @echo "set tmpdir $(tmpdir)" >> ./tmp0 @echo "set testdll_tmpdir $(testdll_tmpdir)" >> ./tmp0 @echo "set cygrun \"`pwd`/mingw/cygrun\"" >> ./tmp0 @@ -347,6 +347,29 @@ site-extra.exp: ../config.status Makefile EXTRA_DEJAGNU_SITE_CONFIG = site-extra.exp +# Set up things in the Cygwin 'installation' at testsuite/testinst/ to provide +# things which tests need to work +# +# * Create /tmp +# * Ensure there is a /usr/bin/sh for tests which use system() +# * Ensure there is a /usr/bin/sleep for tests which use system("sleep 10") +# * Ensure there is a /usr/bin/ls for tests which use system("ls") +# +# copy to avoid all the complexities: hardlink will fail if builddir is on a +# separate filesystem, symlink would need to be constructed with regard to the +# mounts of the test installation, and making it into /bin/ will cause +# CreateProcess() to load cygwin1.dll from there. +# +# use busybox executables as they don't have any other shared library +# dependencies other than cygwin1.dll. +# + +check-local: + $(MKDIR_P) ${builddir}/testinst/tmp + cd ${builddir}/testinst/bin && cp /usr/libexec/busybox/bin/busybox.exe sh.exe + cd ${builddir}/testinst/bin && cp /usr/libexec/busybox/bin/busybox.exe sleep.exe + cd ${builddir}/testinst/bin && cp /usr/libexec/busybox/bin/busybox.exe ls.exe + # target to build all the programs needed by check, without running check check_programs: $(check_PROGRAMS) From 328258eba44993f05e6238c4c9b2124e2496fb4d Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 11 Jul 2023 11:17:56 +0100 Subject: [PATCH 327/767] Cygwin: testsuite: Add a simple timeout mechanism Astonishingly, we don't have this already, so tests which hang just stop the testsuite dead in it's tracks... Signed-off-by: Jon Turney --- winsup/testsuite/cygrun.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index e6c4aa7055..925b5513fb 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -20,6 +20,7 @@ main (int argc, char **argv) { STARTUPINFO sa; PROCESS_INFORMATION pi; + DWORD res; DWORD ec = 1; char *p; @@ -42,9 +43,21 @@ main (int argc, char **argv) exit (1); } - WaitForSingleObject (pi.hProcess, INFINITE); + res = WaitForSingleObject (pi.hProcess, 60 * 1000); - GetExitCodeProcess (pi.hProcess, &ec); + if (res == WAIT_TIMEOUT) + { + char cmd[1024]; + // there is no simple API to kill a Windows process tree + sprintf(cmd, "taskkill /f /t /pid %lu", GetProcessId(pi.hProcess)); + system(cmd); + fprintf (stderr, "Timeout\n"); + ec = 124; + } + else + { + GetExitCodeProcess (pi.hProcess, &ec); + } CloseHandle (pi.hProcess); CloseHandle (pi.hThread); From 04326f999b476d07b9c14f2a0ef2e4e9ac5b7e4c Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 8 Jul 2023 15:28:47 +0100 Subject: [PATCH 328/767] Cygwin: testsuite: Remove const from writable string in fcntl07b Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/ltp/fcntl07B.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/testsuite/winsup.api/ltp/fcntl07B.c b/winsup/testsuite/winsup.api/ltp/fcntl07B.c index 4e94ff2673..db866fddd6 100644 --- a/winsup/testsuite/winsup.api/ltp/fcntl07B.c +++ b/winsup/testsuite/winsup.api/ltp/fcntl07B.c @@ -170,7 +170,7 @@ const char *File1 = DEFAULT_FILE; #define DEFAULT_SUBPROG "test_open" const char *openck = DEFAULT_SUBPROG; /* support program name to check for open FD */ -const char subprog_path[_POSIX_PATH_MAX];/* path to exec "openck" with */ +char subprog_path[_POSIX_PATH_MAX];/* path to exec "openck" with */ #define STRSIZE 255 #define FIFONAME "FiFo" From 97763573230368b38e6aadfa78cbd67f5871a1f4 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 8 Jul 2023 12:50:58 +0100 Subject: [PATCH 329/767] Cygwin: testsuite: Skip devdsp test when no audio devices present Signed-off-by: Jon Turney --- winsup/testsuite/Makefile.am | 3 +++ winsup/testsuite/winsup.api/devdsp.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index 11332eda2a..60111a0aac 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -325,6 +325,9 @@ AM_CPPFLAGS = -I$(srcdir)/libltp/include AM_LDFLAGS = $(LDFLAGS_FOR_TESTDLL) LDADD = $(builddir)/libltp.a $(builddir)/../cygwin/binmode.o $(LDADD_FOR_TESTDLL) +# additional flags for specific test executables +winsup_api_devdsp_LDADD = -lwinmm $(LDADD) + DEJATOOL = winsup # Add '-v' to RUNTESTFLAGS if V=1 diff --git a/winsup/testsuite/winsup.api/devdsp.c b/winsup/testsuite/winsup.api/devdsp.c index 6c8850a749..0ac76f0855 100644 --- a/winsup/testsuite/winsup.api/devdsp.c +++ b/winsup/testsuite/winsup.api/devdsp.c @@ -27,6 +27,8 @@ details. */ #include #include "test.h" /* use libltp framework */ +#include + /* Controls if a child can open the device after the parent */ #define CHILD_EXPECT 0 /* 0 or 1 */ @@ -59,6 +61,7 @@ void playwavtest (void); void syncwithchild (pid_t pid, int expected_exit_status); void cleanup (void); void dup_test (void); +void devcheck (void); static int expect_child_failure = 0; @@ -77,6 +80,7 @@ int main (int argc, char *argv[]) { /* tst_brkm(TBROK, cleanup, "see if it breaks all right"); */ + devcheck (); ioctltest (); playbacktest (); recordingtest (); @@ -91,6 +95,17 @@ main (int argc, char *argv[]) return 0; } +/* skip test if we don't have any audio devices*/ +void +devcheck (void) +{ + if ((waveInGetNumDevs() == 0) || (waveOutGetNumDevs() == 0)) + { + tst_resm (TINFO, "Skipping, no audio devices present"); + exit(0); + } +} + /* test some extra ioctls */ void ioctltest (void) From 7c0750e96294c4c565fadc662219d56f93af389d Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 7 Jul 2023 13:36:29 +0100 Subject: [PATCH 330/767] Cygwin: testsuite: Just log result of second open of /dev/dsp Do not rate successful second open of /dev/dsp as an error, just log the result. Based on this patch by Gerd Spalink: https://cygwin.com/pipermail/cygwin-patches/2004q3/004848.html Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/devdsp.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/winsup/testsuite/winsup.api/devdsp.c b/winsup/testsuite/winsup.api/devdsp.c index 0ac76f0855..de3ccfa197 100644 --- a/winsup/testsuite/winsup.api/devdsp.c +++ b/winsup/testsuite/winsup.api/devdsp.c @@ -170,15 +170,11 @@ playbacktest (void) strerror (errno)); } audio2 = open ("/dev/dsp", O_WRONLY); + tst_resm (TINFO, "Second open /dev/dsp W %s ", + audio2 >= 0 ? "WORKS" : "DOESN'T WORK"); if (audio2 >= 0) { - tst_brkm (TFAIL, cleanup, - "Second open /dev/dsp W succeeded, but is expected to fail"); - } - else if (errno != EBUSY) - { - tst_brkm (TFAIL, cleanup, "Expected EBUSY here, exit: %s", - strerror (errno)); + close (audio2); } for (rate = 0; rate < sizeof (rates) / sizeof (int); rate++) for (k = 0; k < sizeof (sblut) / sizeof (struct sb); k++) @@ -209,15 +205,11 @@ recordingtest (void) strerror (errno)); } audio2 = open ("/dev/dsp", O_RDONLY); + tst_resm (TINFO, "Second open /dev/dsp R %s", + audio2 >= 0 ? "WORKS" : "DOESN'T WORK"); if (audio2 >= 0) { - tst_brkm (TFAIL, cleanup, - "Second open /dev/dsp R succeeded, but is expected to fail"); - } - else if (errno != EBUSY) - { - tst_brkm (TFAIL, cleanup, "Expected EBUSY here, exit: %s", - strerror (errno)); + close (audio2); } for (rate = 0; rate < sizeof (rates) / sizeof (int); rate++) for (k = 0; k < sizeof (sblut) / sizeof (struct sb); k++) From 79a9288434aaa15407727474f26504214b027306 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 9 Jul 2023 12:12:23 +0100 Subject: [PATCH 331/767] Cygwin: testsuite: Also check direct call in systemcall Check direct call to system(), as well as one in a subprocess. (This is a lot easier to debug when it's completely broken by the environment the test is running in) Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/systemcall.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/winsup/testsuite/winsup.api/systemcall.c b/winsup/testsuite/winsup.api/systemcall.c index d10c9825c9..74bd6f8703 100644 --- a/winsup/testsuite/winsup.api/systemcall.c +++ b/winsup/testsuite/winsup.api/systemcall.c @@ -26,6 +26,14 @@ main (int argc, char **argv) fprintf (stderr, "couldn't redirect stdout to /dev/null, fd %d - %s\n", fd, strerror (errno)); exit (1); } + + n = system ("ls"); + if (n != 0) + { + fprintf (stderr, "system() (in parent) call returned %x\n", n); + exit (1); + } + if (pipe (fds)) { fprintf (stderr, "pipe call failed - %s\n", strerror (errno)); @@ -61,7 +69,7 @@ main (int argc, char **argv) } if (n != 0) { - fprintf (stderr, "system() call returned %x\n", n); + fprintf (stderr, "system() (in child) call returned %x\n", n); exit (1); } exit (0); From 7d50e65a8442546a6bdce7636d67ad65f154de46 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 1 Sep 2022 12:13:50 +0100 Subject: [PATCH 332/767] Cygwin: testsuite: Fix for limited thread priority values Since commit 4b51e4c1, we return the actual thread priority, not what we originally stored in the thread attributes. Windows only supports 7 thread priority levels, which we map onto the 32 required by POSIX. So, only a subset of values will be returned exactly by by pthread_getschedparam() after pthread_setschedparam(). Adjust tests priority1, priority2 and inherit1 so they only check for round-tripping priority values which can be exactly represented. For CI, this needs to handle process priority class "below normal priority" as well. Also check that the range of priority values is at least 32, as required by POSIX. Signed-off-by: Jon Turney --- .../testsuite/winsup.api/pthread/inherit1.c | 21 +++++++++++++++- .../testsuite/winsup.api/pthread/priority1.c | 24 +++++++++++++++++-- .../testsuite/winsup.api/pthread/priority2.c | 22 +++++++++++++++-- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/winsup/testsuite/winsup.api/pthread/inherit1.c b/winsup/testsuite/winsup.api/pthread/inherit1.c index 16c3f534b8..f036462aa3 100644 --- a/winsup/testsuite/winsup.api/pthread/inherit1.c +++ b/winsup/testsuite/winsup.api/pthread/inherit1.c @@ -50,6 +50,23 @@ void * func(void * arg) return (void *) (size_t)param.sched_priority; } +// Windows only supports 7 thread priority levels, which we map onto the 32 +// required by POSIX. The exact mapping also depends on the overall process +// priority class. So only a subset of values will be returned exactly by +// pthread_getschedparam() after pthread_setschedparam(). +int doable_pri(int pri) +{ + switch (GetPriorityClass(GetCurrentProcess())) + { + case BELOW_NORMAL_PRIORITY_CLASS: + return (pri == 2) || (pri == 8) || (pri == 10) || (pri == 12) || (pri == 14) || (pri == 16) || (pri == 30); + case NORMAL_PRIORITY_CLASS: + return (pri == 2) || (pri == 12) || (pri == 14) || (pri == 16) || (pri == 18) || (pri == 20) || (pri == 30); + } + + return TRUE; +} + int main() { @@ -81,7 +98,9 @@ main() assert(pthread_setschedparam(mainThread, SCHED_FIFO, &mainParam) == 0); assert(pthread_getschedparam(mainThread, &policy, &mainParam) == 0); assert(policy == SCHED_FIFO); - assert(mainParam.sched_priority == prio); + + if (doable_pri(prio)) + assert(mainParam.sched_priority == prio); for (param.sched_priority = prio; param.sched_priority <= maxPrio; diff --git a/winsup/testsuite/winsup.api/pthread/priority1.c b/winsup/testsuite/winsup.api/pthread/priority1.c index a1e8d051df..135f77d76c 100644 --- a/winsup/testsuite/winsup.api/pthread/priority1.c +++ b/winsup/testsuite/winsup.api/pthread/priority1.c @@ -50,7 +50,24 @@ void * func(void * arg) assert(policy == SCHED_FIFO); return (void *)(size_t)param.sched_priority; } - + +// Windows only supports 7 thread priority levels, which we map onto the 32 +// required by POSIX. The exact mapping also depends on the overall process +// priority class. So only a subset of values will be returned exactly by +// pthread_getschedparam() after pthread_setschedparam(). +int doable_pri(int pri) +{ + switch (GetPriorityClass(GetCurrentProcess())) + { + case BELOW_NORMAL_PRIORITY_CLASS: + return (pri == 2) || (pri == 8) || (pri == 10) || (pri == 12) || (pri == 14) || (pri == 16) || (pri == 30); + case NORMAL_PRIORITY_CLASS: + return (pri == 2) || (pri == 12) || (pri == 14) || (pri == 16) || (pri == 18) || (pri == 20) || (pri == 30); + } + + return TRUE; +} + int main() { @@ -61,6 +78,8 @@ main() int maxPrio = sched_get_priority_max(SCHED_FIFO); int minPrio = sched_get_priority_min(SCHED_FIFO); + assert((maxPrio - minPrio) >= 31); + assert(pthread_attr_init(&attr) == 0); assert(pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) == 0); @@ -71,7 +90,8 @@ main() assert(pthread_attr_setschedparam(&attr, ¶m) == 0); assert(pthread_create(&t, &attr, func, NULL) == 0); pthread_join(t, &result); - assert((int)(size_t) result == param.sched_priority); + if (doable_pri(param.sched_priority)) + assert((int)(size_t) result == param.sched_priority); } return 0; diff --git a/winsup/testsuite/winsup.api/pthread/priority2.c b/winsup/testsuite/winsup.api/pthread/priority2.c index 0534e7ba1d..f084efadfd 100644 --- a/winsup/testsuite/winsup.api/pthread/priority2.c +++ b/winsup/testsuite/winsup.api/pthread/priority2.c @@ -54,7 +54,24 @@ void * func(void * arg) assert(policy == SCHED_FIFO); return (void *) (size_t)param.sched_priority; } - + +// Windows only supports 7 thread priority levels, which we map onto the 32 +// required by POSIX. The exact mapping also depends on the overall process +// priority class. So only a subset of values will be returned exactly by +// pthread_getschedparam() after pthread_setschedparam(). +int doable_pri(int pri) +{ + switch (GetPriorityClass(GetCurrentProcess())) + { + case BELOW_NORMAL_PRIORITY_CLASS: + return (pri == 2) || (pri == 8) || (pri == 10) || (pri == 12) || (pri == 14) || (pri == 16) || (pri == 30); + case NORMAL_PRIORITY_CLASS: + return (pri == 2) || (pri == 12) || (pri == 14) || (pri == 16) || (pri == 18) || (pri == 20) || (pri == 30); + } + + return TRUE; +} + int main() { @@ -73,7 +90,8 @@ main() assert(pthread_setschedparam(t, SCHED_FIFO, ¶m) == 0); assert(pthread_mutex_unlock(&startMx) == 0); pthread_join(t, &result); - assert((int)(size_t)result == param.sched_priority); + if (doable_pri(param.sched_priority)) + assert((int)(size_t)result == param.sched_priority); } return 0; From e867f8c3e89f4f6a85de3a96ddfd2de8f4bb882f Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Mon, 10 Jul 2023 19:04:58 +0100 Subject: [PATCH 333/767] Cygwin: testsuite: Busy-wait in cancel3 and cancel5 These tests async thread cancellation of a thread that doesn't have any cancellation points. Unfortunately, since 2b165a45 the async cancellation silently fails when the thread is inside the kernel function Sleep(), so it just exits normally after 10 seconds. (See the commentary in pthread::cancel() in thread.cc, where it checks if the target thread is inside the kernel, and silently converts the cancellation into a deferred one) Work around this by busy-waiting rather than Sleep()ing for 10 seconds. This is still somewhat fragile: the async cancel could still fail, if it happens to occur while we're inside the kernel function that time() calls. v2: Do nothing more efficiently Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/pthread/cancel3.c | 24 ++++++++++++++----- winsup/testsuite/winsup.api/pthread/cancel5.c | 24 ++++++++++++++----- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/winsup/testsuite/winsup.api/pthread/cancel3.c b/winsup/testsuite/winsup.api/pthread/cancel3.c index 832fe2e3f8..07feb7c9bc 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel3.c +++ b/winsup/testsuite/winsup.api/pthread/cancel3.c @@ -75,11 +75,22 @@ mythread(void * arg) assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * We wait up to 10 seconds for a cancelation to be applied to us. */ - for (bag->count = 0; bag->count < 100; bag->count++) - Sleep(100); + for (bag->count = 0; bag->count < 10; bag->count++) + { + /* Busy wait to avoid Sleep(), since we can't asynchronous cancel inside a + kernel function. (This is still somewhat fragile as if the async cancel + can fail if it happens to occur while we're inside the kernel function + that time() calls...) */ + time_t start = time(NULL); + while ((time(NULL) - start) < 1) + { + int i; + for (i = 0; i < 1E7; i++) + __asm__ volatile ("pause":::); + } + } return result; } @@ -149,10 +160,11 @@ main() if (fail) { - fprintf(stderr, "Thread %d: started %d: count %d\n", + fprintf(stderr, "Thread %d: started %d: count %d: result %d \n", i, threadbag[i].started, - threadbag[i].count); + threadbag[i].count, + result); } failed = (failed || fail); } diff --git a/winsup/testsuite/winsup.api/pthread/cancel5.c b/winsup/testsuite/winsup.api/pthread/cancel5.c index 8b7240615d..999b3c95c7 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel5.c +++ b/winsup/testsuite/winsup.api/pthread/cancel5.c @@ -76,11 +76,22 @@ mythread(void * arg) assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); /* - * We wait up to 10 seconds, waking every 0.1 seconds, - * for a cancelation to be applied to us. + * We wait up to 10 seconds for a cancelation to be applied to us. */ - for (bag->count = 0; bag->count < 100; bag->count++) - Sleep(100); + for (bag->count = 0; bag->count < 10; bag->count++) + { + /* Busy wait to avoid Sleep(), since we can't asynchronous cancel inside a + kernel function. (This is still somewhat fragile as if the async cancel + can fail if it happens to occur while we're inside the kernel function + that time() calls...) */ + time_t start = time(NULL); + while ((time(NULL) - start) < 1) + { + int i; + for (i = 0; i < 1E7; i++) + __asm__ volatile ("pause":::); + } + } return result; } @@ -148,10 +159,11 @@ main() if (fail) { - fprintf(stderr, "Thread %d: started %d: count %d\n", + fprintf(stderr, "Thread %d: started %d: count %d: result %d\n", i, threadbag[i].started, - threadbag[i].count); + threadbag[i].count, + result); } failed = (failed || fail); } From 0e8227bbb746a1f85b9983aab7cef78a4fd41c9a Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 11 Jul 2023 15:08:14 +0100 Subject: [PATCH 334/767] Cygwin: testsuite: Fix a buffer overflow in symlink01 full_path needs to hold a overlong pathname of length PATH_MAX+1, plus a terminating null. See ltp commit 44d51c3f https://github.com/linux-test-project/ltp/commit/44d51c3f0670961149ba486a678cfc13b37cce2c Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/ltp/symlink01.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/testsuite/winsup.api/ltp/symlink01.c b/winsup/testsuite/winsup.api/ltp/symlink01.c index 54a24b87fa..186a85b4e1 100644 --- a/winsup/testsuite/winsup.api/ltp/symlink01.c +++ b/winsup/testsuite/winsup.api/ltp/symlink01.c @@ -488,7 +488,7 @@ time_t a_time_value = 100; const char *TCID = NULL; char *Selectedtests = NULL; /* Name (tcid) of selected test cases */ char test_msg[BUFMAX]; -char full_path[PATH_MAX+1]; +char full_path[PATH_MAX+1+1]; /* Add one for '\0' and another to exceed the PATH_MAX limit, see creat_path_max() */ extern int Tst_count; extern char *TESTDIR; extern char *strrchr(); From 10e50f9617a851469c007cfe98666c8bc22f960b Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 11 Jul 2023 15:27:47 +0100 Subject: [PATCH 335/767] Cygwin: testsuite: Minor fixes to umask03 Change TCIDs to they match the filename Fix use of "%0" rather than "%o" Record failure on mismatched permissions, rather than immediately breaking See ltp commits fa31d55d, 923b23ff and b846e7bb https://github.com/linux-test-project/ltp/commit/fa31d55d3486830313bd044f7333697ce6124d22 https://github.com/linux-test-project/ltp/commit/923b23ff1fd1b77bd895949f9a6b4508c6485f33 https://github.com/linux-test-project/ltp/commit/b846e7bb9c1e6b00af25fdd28d88a5847fb0b052 Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/ltp/umask03.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/winsup/testsuite/winsup.api/ltp/umask03.c b/winsup/testsuite/winsup.api/ltp/umask03.c index 341da75070..5209f051cb 100644 --- a/winsup/testsuite/winsup.api/ltp/umask03.c +++ b/winsup/testsuite/winsup.api/ltp/umask03.c @@ -19,7 +19,7 @@ /* * NAME - * umask01.c + * umask03.c * * DESCRIPTION * Check that umask changes the mask, and that the previous @@ -30,7 +30,7 @@ * corresponds to the previous value set. * * USAGE: - * umask01 [-c n] [-i n] [-I x] [-P x] [-t] + * umask03 [-c n] [-i n] [-I x] [-P x] [-t] * where, -c n : Run n copies concurrently. * -i n : Execute test n times. * -I x : Execute test for x seconds. @@ -51,7 +51,7 @@ #include #include -const char *TCID = "umask01"; +const char *TCID = "umask03"; int TST_TOTAL = 1; extern int Tst_count; @@ -68,6 +68,7 @@ main(int argc, char **argv) struct stat statbuf; unsigned mskval = 0000; + int failcnt = 0; int fildes, i; unsigned low9mode; @@ -99,12 +100,13 @@ main(int argc, char **argv) } else { low9mode = statbuf.st_mode & 0777; if (low9mode != (~mskval & 0777)) { - tst_brkm(TBROK, cleanup, - "got %0 expected %o" - "mask didnot take", + tst_resm(TFAIL, + "got mode %o expected %o " + "mask %o did not take", low9mode, - (~mskval & 0777)); - /*NOTREACHED*/ + (~mskval & 0777), + mskval); + failcnt++; } else { tst_resm(TPASS, "Test " "condition: %d, umask: " @@ -114,6 +116,9 @@ main(int argc, char **argv) } close(fildes); } + if (!failcnt) + tst_resm(TPASS, "umask correctly returns the " + "previous value for all masks"); } cleanup(); /*NOTREACHED*/ From fee0c04e30e31d9034276ecb70cc8dd82e33e761 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 11 Jul 2023 15:40:09 +0100 Subject: [PATCH 336/767] Cygwin: testsuite: Drop Adminstrator privileges while running tests Test access05 and symlink03 expect operations to fail which succeed when we have Adminstrator privileges. There's perhaps a bit of incoherency here: some XFAILed tests expect to run as root (so maybe we need the ability to selectively cygdrop?). Signed-off-by: Jon Turney --- .github/workflows/cygwin.yml | 1 + winsup/doc/faq-programming.xml | 5 +++-- winsup/testsuite/winsup.api/winsup.exp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 248a3e4cdb..39553d37ac 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -73,6 +73,7 @@ jobs: automake, busybox, cocom, + cygutils-extra, dblatex, dejagnu, docbook-xml45, diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index 15ae6eac48..2c684bb2bd 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -697,8 +697,9 @@ Building these programs can be disabled with the --without-cross-bootst option to configure. - + Building the documentation also requires the dblatex, diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp index fb3e3816c6..111509511b 100644 --- a/winsup/testsuite/winsup.api/winsup.exp +++ b/winsup/testsuite/winsup.api/winsup.exp @@ -64,7 +64,7 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc } file mkdir $tmpdir/$tmpfile set env(PATH) "$runtime_root:$env(PATH)" - ws_spawn "$cygrun $exec $testdll_tmpdir/$tmpfile > $redirect_output" + ws_spawn "cygdrop $cygrun $exec $testdll_tmpdir/$tmpfile > $redirect_output" file delete -force $tmpdir/$tmpfile set env(PATH) "$orig_path" if { $rv } { From 661f9f9c5a1e6f8fa74d450ee8273d6d1f30c5b2 Mon Sep 17 00:00:00 2001 From: Jordi Sanfeliu Date: Mon, 17 Jul 2023 14:58:04 -0400 Subject: [PATCH 337/767] Change getlogin() to only check stdin being null --- newlib/libc/unix/getlogin.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/newlib/libc/unix/getlogin.c b/newlib/libc/unix/getlogin.c index da4f47a95c..876ac32cd8 100644 --- a/newlib/libc/unix/getlogin.c +++ b/newlib/libc/unix/getlogin.c @@ -17,8 +17,6 @@ getlogin () char *tty; if (((tty = ttyname (0)) == 0) - || ((tty = ttyname (1)) == 0) - || ((tty = ttyname (2)) == 0)) return 0; if ((utmp_fd = open (UTMP_FILE, O_RDONLY)) == -1) From c431f6b7fe11edc1e1cb1a8aec1205ca1713402b Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 6 Jul 2023 16:39:13 +0100 Subject: [PATCH 338/767] Cygwin: pthread: Take note of schedparam in pthread_create Take note of schedparam in any pthread_attr_t passed to pthread_create. postcreate() (racily, after the thread is actually created), sets the scheduling priority if it's inherited, but precreate() doesn't store any scheduling priority explicitly set via a non-default attr to pthread_create, so schedparam.sched_priority has the default value of 0. (I think this is another long-standing bug exposed by 4b51e4c1. Now we don't lie about the actual thread priority, it's apparent it's not really being set in this case.) Fixes testcase priority2. Signed-off-by: Jon Turney --- winsup/cygwin/thread.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index f614e01c42..afddf42821 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -457,6 +457,7 @@ pthread::precreate (pthread_attr *newattr) attr.joinable = newattr->joinable; attr.contentionscope = newattr->contentionscope; attr.inheritsched = newattr->inheritsched; + attr.schedparam = newattr->schedparam; attr.stackaddr = newattr->stackaddr; attr.stacksize = newattr->stacksize; attr.guardsize = newattr->guardsize; From 89e80d414b9d4ec71c6d43503704f7b3da3a2407 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 16 Jul 2023 14:46:00 +0100 Subject: [PATCH 339/767] Cygwin: Restore signal handlers on thread cancellation during system() Add back the restoration of signal handlers modified during system() on thread cancellation. Removed in 3cb9da14 which describes it as 'ill-conceived' (additional context doesn't appear to be available). We use the internal implementation helpers for the pthread cleanup chain, so we can neatly tuck it inside the object, and keep the point when we restore the signal handlers the same. (The pthread_cleanup_push/pop() functions are implemented as macros which must appear in the same lexical scope.) Fixes: 3cb9da14617c ("Put signals on hold and use system_call_cleanup class to set and restore signals rather than doing it prior to to running the program. Remove the ill-conceived pthread_cleanup stuff.") Signed-off-by: Jon Turney --- winsup/cygwin/spawn.cc | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 84dd74e28f..c16fe269a3 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -228,6 +228,8 @@ struct system_call_handle _sig_func_ptr oldint; _sig_func_ptr oldquit; sigset_t oldmask; + __pthread_cleanup_handler cleanup_handler; + bool is_system_call () { return oldint != ILLEGAL_SIG_FUNC_PTR; @@ -253,18 +255,27 @@ struct system_call_handle sigaddset (&child_block, SIGCHLD); sigprocmask (SIG_BLOCK, &child_block, &oldmask); sig_send (NULL, __SIGNOHOLD); + + cleanup_handler = { system_call_handle::cleanup, this, NULL }; + _pthread_cleanup_push (&cleanup_handler); } } ~system_call_handle () { if (is_system_call ()) + _pthread_cleanup_pop (1); + } + static void cleanup (void *arg) + { +# define this_ ((system_call_handle *) arg) + if (this_->is_system_call ()) { - signal (SIGINT, oldint); - signal (SIGQUIT, oldquit); - sigprocmask (SIG_SETMASK, &oldmask, NULL); + signal (SIGINT, this_->oldint); + signal (SIGQUIT, this_->oldquit); + sigprocmask (SIG_SETMASK, &(this_->oldmask), NULL); } } -# undef cleanup +# undef this_ }; child_info_spawn NO_COPY ch_spawn; From 938475f6de03942146c1c5220a60bd5a7a4b4ab4 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 15 Jul 2023 17:57:43 +0100 Subject: [PATCH 340/767] Cygwin: testsuite: Make cancel3 and cancel5 more robust Despite our efforts, sometimes the async cancellation gets deferred. Notice this by calling pthread_testcancel(), and then try to work out if async cancellation was ever successful by checking if all threads ran for the full expected time, or if some were stopped early. Also, increase the time we allow for the async cancellation to get delivered to 30 seconds. Signed-off-by: Jon Turney --- winsup/testsuite/winsup.api/pthread/cancel3.c | 18 ++++++++++++++++-- winsup/testsuite/winsup.api/pthread/cancel5.c | 18 ++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/winsup/testsuite/winsup.api/pthread/cancel3.c b/winsup/testsuite/winsup.api/pthread/cancel3.c index 07feb7c9bc..8ed7d529be 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel3.c +++ b/winsup/testsuite/winsup.api/pthread/cancel3.c @@ -75,9 +75,9 @@ mythread(void * arg) assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); /* - * We wait up to 10 seconds for a cancelation to be applied to us. + * We wait up to 30 seconds for a cancelation to be applied to us. */ - for (bag->count = 0; bag->count < 10; bag->count++) + for (bag->count = 0; bag->count < 30; bag->count++) { /* Busy wait to avoid Sleep(), since we can't asynchronous cancel inside a kernel function. (This is still somewhat fragile as if the async cancel @@ -92,6 +92,9 @@ mythread(void * arg) } } + /* Notice if asynchronous cancel got deferred */ + pthread_testcancel(); + return result; } @@ -101,6 +104,7 @@ main() int failed = 0; int i; pthread_t t[NUMTHREADS + 1]; + int ran_to_completion = 0; assert((t[0] = pthread_self()) != NULL); @@ -166,9 +170,19 @@ main() threadbag[i].count, result); } + + if (threadbag[i].count >= 30) + ran_to_completion++; + failed = (failed || fail); } + if (ran_to_completion >= 10) + { + fprintf(stderr, "All threads ran to completion, async cancellation never happened\n"); + failed = 1; + } + assert(!failed); /* diff --git a/winsup/testsuite/winsup.api/pthread/cancel5.c b/winsup/testsuite/winsup.api/pthread/cancel5.c index 999b3c95c7..dd5be7beaa 100644 --- a/winsup/testsuite/winsup.api/pthread/cancel5.c +++ b/winsup/testsuite/winsup.api/pthread/cancel5.c @@ -76,9 +76,9 @@ mythread(void * arg) assert(pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL) == 0); /* - * We wait up to 10 seconds for a cancelation to be applied to us. + * We wait up to 30 seconds for a cancelation to be applied to us. */ - for (bag->count = 0; bag->count < 10; bag->count++) + for (bag->count = 0; bag->count < 30; bag->count++) { /* Busy wait to avoid Sleep(), since we can't asynchronous cancel inside a kernel function. (This is still somewhat fragile as if the async cancel @@ -93,6 +93,9 @@ mythread(void * arg) } } + /* Notice if asynchronous cancel got deferred */ + pthread_testcancel(); + return result; } @@ -102,6 +105,7 @@ main() int failed = 0; int i; pthread_t t[NUMTHREADS + 1]; + int ran_to_completion = 0; for (i = 1; i <= NUMTHREADS; i++) { @@ -165,9 +169,19 @@ main() threadbag[i].count, result); } + + if (threadbag[i].count >= 30) + ran_to_completion++; + failed = (failed || fail); } + if (ran_to_completion >= 10) + { + fprintf(stderr, "All threads ran to completion, async cancellation never happened\n"); + failed = TRUE; + } + assert(!failed); /* From 816e9d67be0780b1fb253ad8d3d3c7443b70fd4c Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 18 Jul 2023 13:43:03 -0400 Subject: [PATCH 341/767] Fix typo. --- newlib/libc/unix/getlogin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/unix/getlogin.c b/newlib/libc/unix/getlogin.c index 876ac32cd8..e646bcb089 100644 --- a/newlib/libc/unix/getlogin.c +++ b/newlib/libc/unix/getlogin.c @@ -16,7 +16,7 @@ getlogin () extern char *ttyname (); char *tty; - if (((tty = ttyname (0)) == 0) + if ((tty = ttyname (0)) == 0) return 0; if ((utmp_fd = open (UTMP_FILE, O_RDONLY)) == -1) From a02144808c5bc4e9753bfeabf06313c6413e1cd3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 17 Jul 2023 18:02:04 +0200 Subject: [PATCH 342/767] Cygwin: don't wait infinitely on a pthread cancel event Starting with commit 42faed412857 ("* thread.h (class pthread): Add bool member canceled."), pthread::testcancel waits infinitely on cancel_event after it checked if the canceled variable is set. However, this might introduce a deadlock, if the thread calling pthread_cancel is terminated after setting canceled to true, but before calling SetEvent on cancel_event. In fact, it's not at all necessary to wait infinitely. By definition, the thread is only canceled if cancel_event is set. The canceled variable is just a helper to speed up code. We can safely assume that the thread hasn't been canceled yet, if canceled is set, but cancel_event isn't. Fixes: 42faed412857 ("* thread.h (class pthread): Add bool member canceled.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/thread.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index afddf42821..7bb4f9fc83 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -962,12 +962,9 @@ pthread::testcancel () pthread_testcancel function a lot without adding the overhead of an OS call. Only if the thread is marked as canceled, we wait for cancel_event being really set, on the off-chance that pthread_cancel - gets interrupted before calling SetEvent. */ - if (canceled) - { - WaitForSingleObject (cancel_event, INFINITE); - cancel_self (); - } + gets interrupted or terminated before calling SetEvent. */ + if (canceled && IsEventSignalled (cancel_event)) + cancel_self (); } /* Return cancel event handle if it exists *and* cancel is not disabled. From 9fca983916a88ebb565654d639b79f2e5fdfd5a8 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 6 Jul 2023 11:54:04 +0100 Subject: [PATCH 343/767] Cygwin: testsuite: Drop setting TDIRECTORY Drop setting TDIRECTORY, just use /tmp in the 'test installation' now that we have it. This effectively reverts f3ed5f2fe029d74372aca68b18936e164ff47cf7 Signed-off-by: Jon Turney --- winsup/testsuite/Makefile.am | 8 -------- winsup/testsuite/cygrun.c | 5 +---- winsup/testsuite/winsup.api/winsup.exp | 4 +--- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index 60111a0aac..9159a1be8f 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -334,17 +334,9 @@ DEJATOOL = winsup RUNTESTFLAGS_1 = -v RUNTESTFLAGS = $(RUNTESTFLAGS_$(V)) -# a temporary directory, to be used for files created by tests -tmpdir = $(abspath $(builddir)/tmp/) -# the same temporary directory, as an absolute, /cygdrive path (so it can be -# understood by the test DLL, which will have a different mount table) -testdll_tmpdir = $(shell cygpath -ma $(tmpdir) | sed -e 's#^\([A-Z]\):#/cygdrive/\L\1#') - site-extra.exp: ../config.status Makefile @rm -f ./tmp0 @echo "set runtime_root \"`pwd`/testinst/bin\"" >> ./tmp0 - @echo "set tmpdir $(tmpdir)" >> ./tmp0 - @echo "set testdll_tmpdir $(testdll_tmpdir)" >> ./tmp0 @echo "set cygrun \"`pwd`/mingw/cygrun\"" >> ./tmp0 @mv ./tmp0 site-extra.exp diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index 925b5513fb..d8de7d1588 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -26,13 +26,10 @@ main (int argc, char **argv) if (argc < 2) { - fprintf (stderr, "Usage: cygrun [program] [tmpdir]\n"); + fprintf (stderr, "Usage: cygrun [program]\n"); exit (0); } - if (argc >= 3) - SetEnvironmentVariable ("TDIRECTORY", argv[2]); - SetEnvironmentVariable ("CYGWIN_TESTING", "1"); memset (&sa, 0, sizeof (sa)); diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp index 111509511b..76455a97ca 100644 --- a/winsup/testsuite/winsup.api/winsup.exp +++ b/winsup/testsuite/winsup.api/winsup.exp @@ -62,10 +62,8 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc } else { set redirect_output /dev/null } - file mkdir $tmpdir/$tmpfile set env(PATH) "$runtime_root:$env(PATH)" - ws_spawn "cygdrop $cygrun $exec $testdll_tmpdir/$tmpfile > $redirect_output" - file delete -force $tmpdir/$tmpfile + ws_spawn "cygdrop $cygrun $exec > $redirect_output" set env(PATH) "$orig_path" if { $rv } { fail "$testcase" From 42b44044b34d7c26abf84f8b24f820e04e1662f2 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Mon, 17 Jul 2023 16:05:01 +0100 Subject: [PATCH 344/767] Cygwin: Fix Windows file handle leak in stat("file", -1) Don't leak a Windows file handle if stat() is called with a valid filename, but invalid stat buffer pointer. We do not destroy fh (which closes a Windows handle it has opened) if an exception happens in the __try block. Avoid this by re-ordering things so that we don't construct the fhandler object until after we've attempted to use the struct stat buffer. Fixes: 73151c54d581 ("syscalls.cc (stat_worker): Don't call build_fh_pc with invalid pc.") Signed-off-by: Jon Turney --- winsup/cygwin/syscalls.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 73343ecc1f..32ace4d389 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1967,12 +1967,13 @@ stat_worker (path_conv &pc, struct stat *buf) { fhandler_base *fh; - if (!(fh = build_fh_pc (pc))) - __leave; - debug_printf ("(%S, %p, %p), file_attributes %d", pc.get_nt_native_path (), buf, fh, (DWORD) *fh); memset (buf, 0, sizeof (*buf)); + + if (!(fh = build_fh_pc (pc))) + __leave; + res = fh->fstat (buf); if (!res) fh->stat_fixup (buf); From 8b0b719d499f6025b56652d8282d5a52f3722dc4 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 21 Jul 2023 14:22:27 +0100 Subject: [PATCH 345/767] Cygwin: Fix uninitialized use of fh in strace output in stat_worker() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move strace output to fix uninitalized use of fh introduced in previous commit. ../../../../src/winsup/cygwin/syscalls.cc: In function ‘int stat_worker(path_conv&, stat*)’: ../../../../src/winsup/cygwin/syscalls.cc:1971:69: error: ‘fh’ may be used uninitialized [-Werror=maybe-uninitialized] Fixes: 42b44044b34d ("Cygwin: Fix Windows file handle leak in stat("file", -1)") Signed-off-by: Jon Turney --- winsup/cygwin/syscalls.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 32ace4d389..f1cd5693ed 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1967,13 +1967,14 @@ stat_worker (path_conv &pc, struct stat *buf) { fhandler_base *fh; - debug_printf ("(%S, %p, %p), file_attributes %d", - pc.get_nt_native_path (), buf, fh, (DWORD) *fh); memset (buf, 0, sizeof (*buf)); if (!(fh = build_fh_pc (pc))) __leave; + debug_printf ("(%S, %p, %p), file_attributes %d", + pc.get_nt_native_path (), buf, fh, (DWORD) *fh); + res = fh->fstat (buf); if (!res) fh->stat_fixup (buf); From 971d2dffea7848270aa9dfb5c14dcd946c8971c0 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 21 Jul 2023 21:49:54 +0200 Subject: [PATCH 346/767] Cygwin: get_posix_access: do not merge permissions for just created files When creating the POSIX ACL rewrite, the code merging permissions from everyone/group to group/user ACEs was accidentally called for newly generated files as well. This could result in broken permissions, if umask used unusual values like "0100", granted permissions to everyone/group not granted to group/user. Make sure to skip permission merging if the file got just created and we only want to set correct permissions for the first time. Fixes: bc444e5aa4ca ("Reapply POSIX ACL changes.") Reported-by: Jon Turney Signed-off-by: Corinna Vinschen --- winsup/cygwin/sec/acl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/sec/acl.cc b/winsup/cygwin/sec/acl.cc index 2fd08ad625..db86f9e9e0 100644 --- a/winsup/cygwin/sec/acl.cc +++ b/winsup/cygwin/sec/acl.cc @@ -1103,7 +1103,7 @@ get_posix_access (PSECURITY_DESCRIPTOR psd, pos = MAX_ACL_ENTRIES; /* For old-style or non-Cygwin ACLs, check for merging permissions. */ - if (!new_style) + if (!just_created && !new_style) for (idx = 0; idx < pos; ++idx) { if (lacl[idx].a_type & (USER_OBJ | USER) From a1ee8a0f0508b5975bf52b5fa018a4434817cfe4 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 24 Aug 2022 18:21:18 +0100 Subject: [PATCH 347/767] Cygwin: testsuite: Drop using DejaGnu to run tests A more sophisticated (and modern) test harness would probably be useful, but switching to Automake's built-in test harness gets us parallel test execution, colourization of failures, simplifies matters, seems adequate for the current testuite, and means we don't need to write any icky Tcl. Signed-off-by: Jon Turney --- .github/workflows/cygwin.yml | 2 +- winsup/configure.ac | 2 +- winsup/doc/faq-programming.xml | 5 +- winsup/testsuite/Makefile.am | 27 ++++---- winsup/testsuite/README | 22 +++---- winsup/testsuite/config/default.exp | 13 ---- winsup/testsuite/cygrun.sh | 17 +++++ winsup/testsuite/winsup.api/cygload.exp | 30 --------- winsup/testsuite/winsup.api/known_bugs.tcl | 4 -- winsup/testsuite/winsup.api/winsup.exp | 74 ---------------------- 10 files changed, 47 insertions(+), 149 deletions(-) delete mode 100644 winsup/testsuite/config/default.exp create mode 100755 winsup/testsuite/cygrun.sh delete mode 100644 winsup/testsuite/winsup.api/cygload.exp delete mode 100644 winsup/testsuite/winsup.api/known_bugs.tcl delete mode 100644 winsup/testsuite/winsup.api/winsup.exp diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 39553d37ac..5b96a5ee10 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -119,5 +119,5 @@ jobs: export MAKEFLAGS=-j$(nproc) && cd build && (export PATH=${{ matrix.target }}/winsup/testsuite/testinst/bin:${PATH} && cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) && - (cd ${{ matrix.target }}/winsup; make check || true) + (cd ${{ matrix.target }}/winsup; make check AM_COLOR_TESTS=always || true) shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' diff --git a/winsup/configure.ac b/winsup/configure.ac index 13fce0da65..9b9b59dbcb 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -12,7 +12,7 @@ AC_PREREQ([2.59]) AC_INIT([Cygwin],[0],[cygwin@cygwin.com],[cygwin],[https://cygwin.com]) AC_CONFIG_AUX_DIR(..) AC_CANONICAL_TARGET -AM_INIT_AUTOMAKE([dejagnu foreign no-define no-dist subdir-objects -Wall -Wno-portability -Wno-extra-portability]) +AM_INIT_AUTOMAKE([foreign no-define no-dist subdir-objects -Wall -Wno-portability -Wno-extra-portability]) AM_SILENT_RULES([yes]) realdirpath() { diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index 2c684bb2bd..ba00dfea5a 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -697,9 +697,8 @@ Building these programs can be disabled with the --without-cross-bootst option to configure. - + Building the documentation also requires the dblatex, diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index 9159a1be8f..8f2967a6dc 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -328,19 +328,23 @@ LDADD = $(builddir)/libltp.a $(builddir)/../cygwin/binmode.o $(LDADD_FOR_TESTDLL # additional flags for specific test executables winsup_api_devdsp_LDADD = -lwinmm $(LDADD) -DEJATOOL = winsup +# all tests +TESTS = $(check_PROGRAMS) \ + mingw/cygload -# Add '-v' to RUNTESTFLAGS if V=1 -RUNTESTFLAGS_1 = -v -RUNTESTFLAGS = $(RUNTESTFLAGS_$(V)) +# expected fail tests +XFAIL_TESTS = \ + winsup.api/ltp/setgroups01 \ + winsup.api/ltp/setuid02 \ + winsup.api/ltp/ulimit01 \ + winsup.api/ltp/unlink08 \ + winsup.api/samples/sample-fail -site-extra.exp: ../config.status Makefile - @rm -f ./tmp0 - @echo "set runtime_root \"`pwd`/testinst/bin\"" >> ./tmp0 - @echo "set cygrun \"`pwd`/mingw/cygrun\"" >> ./tmp0 - @mv ./tmp0 site-extra.exp +# cygrun.sh test-runner script, and variables used by it: +LOG_COMPILER = $(srcdir)/cygrun.sh -EXTRA_DEJAGNU_SITE_CONFIG = site-extra.exp +export runtime_root=$(abs_builddir)/testinst/bin +export cygrun=$(builddir)/mingw/cygrun # Set up things in the Cygwin 'installation' at testsuite/testinst/ to provide # things which tests need to work @@ -369,7 +373,8 @@ check-local: check_programs: $(check_PROGRAMS) clean-local: - rm -f *.log *.exe *.exp *.bak *.stackdump winsup.sum + rm -f *.stackdump + rm -rf ${builddir}/testinst/tmp if CROSS_BOOTSTRAP SUBDIRS = mingw diff --git a/winsup/testsuite/README b/winsup/testsuite/README index 363ebb9e80..ff2df4119c 100644 --- a/winsup/testsuite/README +++ b/winsup/testsuite/README @@ -1,5 +1,3 @@ -1999-12-23 DJ Delorie - Here are some notes about adding and using this testsuite. The testsuite adds a directory containing the just built cygwin1.dll to the PATH @@ -20,18 +18,18 @@ The testsuite/winsup.api subdirectory is for testing the API to cygwin1.dll ONLY. Create other subdirs under testsuite/ for other classes of testing. -Tests in winsup.api/*.c or winsup.api/*/*.c (only one subdirectory -level is allowed) either run, and exit(0) or they fail. -Either abort or exit with a non-zero code to indicate failure. Don't -print anything to the screen if you can avoid it (except for failure -reasons, of course). One .c file per test, no compile options are -allowed (we're testing the api, not the compiler). +Tests under winsup.api/ either run successfully and exit(0), exit(77) to +indicate a skipped test, or any other exit status to indicate a failure. + +Don't print anything to the screen if you can avoid it (except for failure +reasons, of course). One .c file per test, no compile options are allowed +(we're testing the api, not the compiler). -Tests whose filename is mentioned in known-bugs.tcl will be *expected* -to fail, and will "fail" if they compile, run, and return zero. +Tests whose filename is mentioned in XFAIL_TESTS are expected to fail, +effectively reversing the result of those. "make check" will only work if you run it *on* an NT machine. Cross-checking is not supported. -To test a subset of the test-suite, use -$ make check CYGWIN_TESTSUITE_TESTS=regexp +To run selected tests, use e.g: +$ make check TESTS="winsup.api/ltp/umask03 winsup.api/ltp/stat06" diff --git a/winsup/testsuite/config/default.exp b/winsup/testsuite/config/default.exp deleted file mode 100644 index ad91caa037..0000000000 --- a/winsup/testsuite/config/default.exp +++ /dev/null @@ -1,13 +0,0 @@ -proc winsup_version {} { - global env - global runtime_root - clone_output "\n[exec grep -a ^%%% $runtime_root/cygwin1.dll]\n" - if { [info exists env(CYGWIN)] } { - clone_output "CYGWIN=$env(CYGWIN)\n" - } else { - clone_output "CYGWIN=\n" - } -} - -proc winsup_exit {} { -} diff --git a/winsup/testsuite/cygrun.sh b/winsup/testsuite/cygrun.sh new file mode 100755 index 0000000000..c82c1872bc --- /dev/null +++ b/winsup/testsuite/cygrun.sh @@ -0,0 +1,17 @@ +#!/bin/dash +# +# test driver to run $1 in the appropriate environment +# + +# $1 = test executable to run +exe=$1 + +export PATH="$runtime_root:${PATH}" + +if [ "$1" = "./mingw/cygload" ] +then + windows_runtime_root=$(cygpath -m $runtime_root) + $exe -v -cygwin $windows_runtime_root/cygwin1.dll +else + cygdrop $cygrun $exe +fi diff --git a/winsup/testsuite/winsup.api/cygload.exp b/winsup/testsuite/winsup.api/cygload.exp deleted file mode 100644 index 724cb01cce..0000000000 --- a/winsup/testsuite/winsup.api/cygload.exp +++ /dev/null @@ -1,30 +0,0 @@ -source "site.exp" - -if { ! [isnative] } { - verbose "skipping cygload because it's not native \"$target_triplet\" != \"$build_triplet\"" - return -} - -proc ws_spawn {cmd args} { - global rv - verbose "running $cmd\n" - set rv {} - # First item in rv is the return code, second item is the message - lappend rv [catch "exec $cmd" message] $message - verbose send "catchCode = $rv\n" -} - -if { $verbose } { - set redirect_output "./mingw-cygwin.log" -} else { - set redirect_output /dev/null -} - -set windows_runtime_root [exec cygpath -m $runtime_root] -ws_spawn "./mingw/cygload.exe -cygwin $windows_runtime_root/cygwin1.dll > $redirect_output" -if { $rv != {0 {}} } { - verbose -log "cygload: $rv" - fail "cygload" -} else { - pass "cygload" -} diff --git a/winsup/testsuite/winsup.api/known_bugs.tcl b/winsup/testsuite/winsup.api/known_bugs.tcl deleted file mode 100644 index 4f13c90e08..0000000000 --- a/winsup/testsuite/winsup.api/known_bugs.tcl +++ /dev/null @@ -1,4 +0,0 @@ -set xfail_list [list \ - setgroups01 setuid02 \ - ulimit01 unlink08 \ - sample-fail sample-miscompile] diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp deleted file mode 100644 index 76455a97ca..0000000000 --- a/winsup/testsuite/winsup.api/winsup.exp +++ /dev/null @@ -1,74 +0,0 @@ -source "site.exp" -source "$srcdir/winsup.api/known_bugs.tcl" - -if { ! [isnative] } { - verbose "skipping winsup.api because it's not native" - return -} - -set rv "" - -set orig_path "$env(PATH)" - -set test_filter "" - -if { [info exists env(CYGWIN_TESTSUITE_TESTS)] } { - set test_filter "$env(CYGWIN_TESTSUITE_TESTS)" -} - -proc ws_spawn {cmd} { - global rv - verbose "running $cmd\n" - try { - set msg [exec -ignorestderr {*}$cmd "2>@1"] - set rv 0 - } trap CHILDSTATUS {results options} { - verbose "returned $::errorCode\n" - set msg $results - set rv 1 - } - verbose -log "$msg" - return $rv -} - -verbose "Filter: $test_filter" - -foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.{cc,c}]] { - if { $test_filter != "" && ! [regexp $test_filter $src] } { - verbose -log "Skipping $src" - continue - } - - regsub "^$srcdir/$subdir/" $src "" testcase - regsub ".c$" $testcase "" base - regsub ".*/" $base "" basename - regsub "/" $base "-" tmpfile - - set exec "./winsup.api/$base.exe" - - if { [lsearch -exact $xfail_list $basename] >= 0 } { - set xfail_expected 1 - setup_xfail "*-*-*" - } else { - set xfail_expected 0 - clear_xfail - } - - if [ file exists "$srcdir/$subdir/$basename.exp" ] then { - source "$srcdir/$subdir/$basename.exp" - } else { - if { $verbose } { - set redirect_output "./$tmpfile.log" - } else { - set redirect_output /dev/null - } - set env(PATH) "$runtime_root:$env(PATH)" - ws_spawn "cygdrop $cygrun $exec > $redirect_output" - set env(PATH) "$orig_path" - if { $rv } { - fail "$testcase" - } else { - pass "$testcase" - } - } -} From 2133d91175543b778999e953cd1a158003855f07 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 8 Jul 2023 20:53:54 +0100 Subject: [PATCH 348/767] Cygwin: CI: Retain test logs as a build artifact Signed-off-by: Jon Turney --- .github/workflows/cygwin.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 5b96a5ee10..145b59eba2 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -121,3 +121,13 @@ jobs: (export PATH=${{ matrix.target }}/winsup/testsuite/testinst/bin:${PATH} && cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) && (cd ${{ matrix.target }}/winsup; make check AM_COLOR_TESTS=always || true) shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' + + # upload test logs to facilitate investigation of problems + - name: Upload test logs + uses: actions/upload-artifact@v3 + with: + name: testlogs + path: | + build/${{ matrix.target }}/winsup/testsuite/**/*.log + build/${{ matrix.target }}/winsup/testsuite/**/*.trs + if: ${{ !cancelled() }} From 25d65d6ec0532742d2d4121e4ddfda6295a4da78 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 22 Jul 2023 13:23:15 +0100 Subject: [PATCH 349/767] Cygwin: CI: Upgrade checkout actions to avoid deprecation warning Also: workaround a problem with actions/checkout's post-run step using Cygwin git but being incompatible with it. (This would be better solved by cygwin-install-action having a post-run step to unwind it's PATH changes, but that's not currently possible) Signed-off-by: Jon Turney --- .github/workflows/cygwin.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 145b59eba2..1034495e60 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -15,7 +15,7 @@ jobs: name: Fedora cross ${{ matrix.target }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # install build tools - run: dnf install -y autoconf automake make patch perl @@ -61,7 +61,7 @@ jobs: # endings, but this could still be dangerous e.g if we need symlinks in the # repo) - run: git config --global core.autocrlf input - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 # install cygwin and build tools - name: Install Cygwin @@ -131,3 +131,7 @@ jobs: build/${{ matrix.target }}/winsup/testsuite/**/*.log build/${{ matrix.target }}/winsup/testsuite/**/*.trs if: ${{ !cancelled() }} + + # workaround problems with actions/checkout post-run step using cygwin git + - name: Avoid actions/checkout post-run step using Cygwin git + run: bash -c 'rm /usr/bin/git.exe' From ae03aa7303bff5d6814bc6c9e681128aee42eb6a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 12 Jul 2023 13:31:31 +0200 Subject: [PATCH 350/767] Cygwin: gen_full_path_at: drop never reached code The check if the local variable p is NULL is useless. The preceeding code always sets p to a valid pointer, or it crashes if path_ret is invalid (which would be a bug in Cygwin). Fixes: c57b57e5c43a ("* cygwin.din: Sort.") Reviewed-by: Johannes Schindelin Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index f1cd5693ed..8d3ec46f3a 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -4449,11 +4449,6 @@ gen_full_path_at (char *path_ret, int dirfd, const char *pathname, } p = stpcpy (path_ret, cfd->get_name ()); } - if (!p) - { - set_errno (ENOTDIR); - return -1; - } if (pathname) { if (!*pathname) From a891dc7605b565282a1274198c9e4a033cafc348 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 12 Jul 2023 13:27:04 +0200 Subject: [PATCH 351/767] Define _AT_NULL_PATHNAME_ALLOWED Cygwin needs an internal flag to allow specifying an empty pathname in utimesat (GLIBC extension). We define it in _default_fcntl.h to make sure we never introduce a value collision accidentally. While at it, define the values as 16 bit hex values. Reviewed-by: Johannes Schindelin Signed-off-by: Corinna Vinschen --- newlib/libc/include/sys/_default_fcntl.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/newlib/libc/include/sys/_default_fcntl.h b/newlib/libc/include/sys/_default_fcntl.h index 48914c92ea..ce721fa23c 100644 --- a/newlib/libc/include/sys/_default_fcntl.h +++ b/newlib/libc/include/sys/_default_fcntl.h @@ -162,12 +162,13 @@ extern "C" { #define AT_FDCWD -2 /* Flag values for faccessat2) et al. */ -#define AT_EACCESS 1 -#define AT_SYMLINK_NOFOLLOW 2 -#define AT_SYMLINK_FOLLOW 4 -#define AT_REMOVEDIR 8 +#define AT_EACCESS 0x0001 +#define AT_SYMLINK_NOFOLLOW 0x0002 +#define AT_SYMLINK_FOLLOW 0x0004 +#define AT_REMOVEDIR 0x0008 #if __GNU_VISIBLE -#define AT_EMPTY_PATH 16 +#define AT_EMPTY_PATH 0x0010 +#define _AT_NULL_PATHNAME_ALLOWED 0x4000 /* Internal flag used by futimesat */ #endif #endif From 00510919993da49cf91421fe13242a7d8a82c1fd Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 12 Jul 2023 13:45:24 +0200 Subject: [PATCH 352/767] Cygwin: use new _AT_NULL_PATHNAME_ALLOWED flag Convert gen_full_path_at to take flag values from the caller, rather than just a bool indicating that empty paths are allowed. This is in preparation of a better AT_EMPTY_PATH handling in a followup patch. Reviewed-by: Johannes Schindelin Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 8d3ec46f3a..9c7ad61feb 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -4416,11 +4416,10 @@ pclose (FILE *fp) static int gen_full_path_at (char *path_ret, int dirfd, const char *pathname, - bool null_pathname_allowed = false) + int flags = 0) { - /* Set null_pathname_allowed to true to allow GLIBC compatible behaviour - for NULL pathname. Only used by futimesat. */ - if (!pathname && !null_pathname_allowed) + /* futimesat allows a NULL pathname. */ + if (!pathname && !(flags & _AT_NULL_PATHNAME_ALLOWED)) { set_errno (EFAULT); return -1; @@ -4678,7 +4677,7 @@ futimesat (int dirfd, const char *pathname, const struct timeval times[2]) __try { char *path = tp.c_get (); - if (gen_full_path_at (path, dirfd, pathname, true)) + if (gen_full_path_at (path, dirfd, pathname, _AT_NULL_PATHNAME_ALLOWED)) __leave; return utimes (path, times); } From f48ce81122d4be42c3679dade5724d734091129e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 12 Jul 2023 13:47:49 +0200 Subject: [PATCH 353/767] Cygwin: Fix and streamline AT_EMPTY_PATH handling The GLIBC extension AT_EMPTY_PATH allows the functions fchownat and fstatat to operate on dirfd alone, if the given pathname is an empty string. This also allows to operate on any file type, not only directories. Commit fa84aa4dd2fb4 broke this. It only allows dirfd to be a directory in calls to these two functions. Fix that by handling AT_EMPTY_PATH right in gen_full_path_at. A valid dirfd and an empty pathname is now a valid combination and, noticably, this returns a valid path in path_ret. That in turn allows to remove the additional path generation code from the callers. Fixes: fa84aa4dd2fb ("Cygwin: fix errno values set by readlinkat") Reported-by: Johannes Schindelin Tested-by: Johannes Schindelin Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 47 +++++++++------------------------------ 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 9c7ad61feb..04907b991c 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -4441,7 +4441,7 @@ gen_full_path_at (char *path_ret, int dirfd, const char *pathname, cygheap_fdget cfd (dirfd); if (cfd < 0) return -1; - if (!cfd->pc.isdir ()) + if (!cfd->pc.isdir () && !(flags & AT_EMPTY_PATH)) { set_errno (ENOTDIR); return -1; @@ -4452,6 +4452,8 @@ gen_full_path_at (char *path_ret, int dirfd, const char *pathname, { if (!*pathname) { + if (flags & AT_EMPTY_PATH) + return 0; set_errno (ENOENT); return -1; } @@ -4573,29 +4575,14 @@ fchownat (int dirfd, const char *pathname, uid_t uid, gid_t gid, int flags) __leave; } char *path = tp.c_get (); - int res = gen_full_path_at (path, dirfd, pathname); + int res = gen_full_path_at (path, dirfd, pathname, flags); if (res) + __leave; + if (!*pathname) /* Implies AT_EMPTY_PATH */ { - if (!(errno == ENOENT && (flags & AT_EMPTY_PATH))) - __leave; - /* pathname is an empty string. Operate on dirfd. */ - if (dirfd == AT_FDCWD) - { - cwdstuff::acquire_read (); - strcpy (path, cygheap->cwd.get_posix ()); - cwdstuff::release_read (); - } - else - { - cygheap_fdget cfd (dirfd); - if (cfd < 0) - __leave; - strcpy (path, cfd->get_name ()); - /* If dirfd refers to a symlink (which was necessarily - opened with O_PATH | O_NOFOLLOW), we must operate - directly on that symlink.. */ - flags = AT_SYMLINK_NOFOLLOW; - } + /* If dirfd refers to a symlink (which was necessarily opened with + O_PATH | O_NOFOLLOW), we must operate directly on that symlink. */ + flags = AT_SYMLINK_NOFOLLOW; } return chown_worker (path, (flags & AT_SYMLINK_NOFOLLOW) ? PC_SYM_NOFOLLOW : PC_SYM_FOLLOW, uid, gid); @@ -4618,21 +4605,9 @@ fstatat (int dirfd, const char *__restrict pathname, struct stat *__restrict st, __leave; } char *path = tp.c_get (); - int res = gen_full_path_at (path, dirfd, pathname); + int res = gen_full_path_at (path, dirfd, pathname, flags); if (res) - { - if (!(errno == ENOENT && (flags & AT_EMPTY_PATH))) - __leave; - /* pathname is an empty string. Operate on dirfd. */ - if (dirfd == AT_FDCWD) - { - cwdstuff::acquire_read (); - strcpy (path, cygheap->cwd.get_posix ()); - cwdstuff::release_read (); - } - else - return fstat (dirfd, st); - } + __leave; path_conv pc (path, ((flags & AT_SYMLINK_NOFOLLOW) ? PC_SYM_NOFOLLOW : PC_SYM_FOLLOW) | PC_POSIX | PC_KEEP_HANDLE, stat_suffixes); From fcc87263c41cc6be7d1c61b8c8feee76cf20bb6c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 12 Jul 2023 13:55:23 +0200 Subject: [PATCH 354/767] Cygwin: add AT_EMPTY_PATH fix to release message Reviewed-by: Johannes Schindelin Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.8 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/winsup/cygwin/release/3.4.8 b/winsup/cygwin/release/3.4.8 index 3113be8cb6..595b584cdf 100644 --- a/winsup/cygwin/release/3.4.8 +++ b/winsup/cygwin/release/3.4.8 @@ -6,3 +6,7 @@ Bug Fixes - Make gcc-specific code in compiler-agnostic. Addresses: https://cygwin.com/pipermail/cygwin/2023-July/253927.html + +- Fix AT_EMPTY_PATH handling in fchmodat and fstatat if dirfd referres to + a file other than a directory + Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q2/012306.html From d572c4482b473d7725be0f9380d4f5d8342e4390 Mon Sep 17 00:00:00 2001 From: Kito Cheng via Newlib Date: Wed, 26 Jul 2023 18:03:19 +0800 Subject: [PATCH 355/767] RISC-V: Support Zfinx/Zdinx extension. Zfinx/Zdinx are new extensions ratified in 2022, it similar to F/D extensions, support hard float operation for single/double precision, but the difference between Zfinx/Zdinx and F/D is Zfinx/Zdinx is operating under general purpose registers rather than dedicated floating-point registers. This patch improve the hard float support detection for RISC-V port, so that Zfinx/Zdinx can have better/right performance. Co-authored-by: Jesse Huang --- newlib/libc/include/machine/ieeefp.h | 4 ++-- newlib/libc/machine/riscv/ieeefp.c | 10 +++++----- newlib/libc/machine/riscv/sys/fenv.h | 2 +- newlib/libm/common/math_config.h | 6 ++++-- newlib/libm/machine/riscv/e_sqrt.c | 2 +- newlib/libm/machine/riscv/ef_sqrt.c | 2 +- newlib/libm/machine/riscv/feclearexcept.c | 3 ++- newlib/libm/machine/riscv/fegetenv.c | 3 ++- newlib/libm/machine/riscv/fegetexceptflag.c | 3 ++- newlib/libm/machine/riscv/fegetround.c | 3 ++- newlib/libm/machine/riscv/feholdexcept.c | 3 ++- newlib/libm/machine/riscv/feraiseexcept.c | 3 ++- newlib/libm/machine/riscv/fesetenv.c | 3 ++- newlib/libm/machine/riscv/fesetexceptflag.c | 3 ++- newlib/libm/machine/riscv/fesetround.c | 3 ++- newlib/libm/machine/riscv/fetestexcept.c | 3 ++- newlib/libm/machine/riscv/feupdateenv.c | 3 ++- newlib/libm/machine/riscv/riscv_math.h | 12 +++++++++--- newlib/libm/machine/riscv/s_copysign.c | 3 ++- newlib/libm/machine/riscv/s_fabs.c | 3 ++- newlib/libm/machine/riscv/s_finite.c | 3 ++- newlib/libm/machine/riscv/s_fmax.c | 3 ++- newlib/libm/machine/riscv/s_fmin.c | 3 ++- newlib/libm/machine/riscv/s_fpclassify.c | 5 ++--- newlib/libm/machine/riscv/s_isinf.c | 4 ++-- newlib/libm/machine/riscv/s_isnan.c | 4 ++-- newlib/libm/machine/riscv/s_llrint.c | 3 ++- newlib/libm/machine/riscv/s_llround.c | 3 ++- newlib/libm/machine/riscv/s_lrint.c | 3 ++- newlib/libm/machine/riscv/s_lround.c | 3 ++- newlib/libm/machine/riscv/sf_copysign.c | 3 ++- newlib/libm/machine/riscv/sf_fabs.c | 3 ++- newlib/libm/machine/riscv/sf_finite.c | 3 ++- newlib/libm/machine/riscv/sf_fmax.c | 3 ++- newlib/libm/machine/riscv/sf_fmin.c | 3 ++- newlib/libm/machine/riscv/sf_fpclassify.c | 3 ++- newlib/libm/machine/riscv/sf_isinf.c | 4 ++-- newlib/libm/machine/riscv/sf_isnan.c | 4 ++-- newlib/libm/machine/riscv/sf_llrint.c | 3 ++- newlib/libm/machine/riscv/sf_llround.c | 3 ++- newlib/libm/machine/riscv/sf_lrint.c | 3 ++- newlib/libm/machine/riscv/sf_lround.c | 3 ++- 42 files changed, 93 insertions(+), 56 deletions(-) diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h index a29557a6d0..abadf520b4 100644 --- a/newlib/libc/include/machine/ieeefp.h +++ b/newlib/libc/include/machine/ieeefp.h @@ -218,10 +218,10 @@ #else #define __IEEE_LITTLE_ENDIAN #endif -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined (__riscv_zfinx) # define _SUPPORTS_ERREXCEPT #endif -#if __riscv_flen == 64 +#if (__riscv_flen == 64) || defined (__riscv_zdinx) # define __OBSOLETE_MATH_DEFAULT 0 #else # define __OBSOLETE_MATH_DEFAULT 1 diff --git a/newlib/libc/machine/riscv/ieeefp.c b/newlib/libc/machine/riscv/ieeefp.c index 60ecacfc29..185da648c8 100644 --- a/newlib/libc/machine/riscv/ieeefp.c +++ b/newlib/libc/machine/riscv/ieeefp.c @@ -11,7 +11,7 @@ #include -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined (__riscv_zfinx) static void fssr(unsigned value) { @@ -85,7 +85,7 @@ fpgetmask(void) fp_rnd fpgetround(void) { -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined (__riscv_zfinx) unsigned rm = (frsr () >> 5) & 0x7; return frm_fp_rnd (rm); #else @@ -96,7 +96,7 @@ fpgetround(void) fp_except fpgetsticky(void) { -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined (__riscv_zfinx) return frm_fp_except(frsr ()); #else return 0; @@ -112,7 +112,7 @@ fpsetmask(fp_except mask) fp_rnd fpsetround(fp_rnd rnd_dir) { -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined (__riscv_zfinx) unsigned fsr = frsr (); unsigned rm = (fsr >> 5) & 0x7; unsigned new_rm; @@ -134,7 +134,7 @@ fpsetround(fp_rnd rnd_dir) fp_except fpsetsticky(fp_except sticky) { -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined (__riscv_zfinx) unsigned fsr = frsr (); fssr (frm_except(sticky) | (fsr & ~0x1f)); return frm_fp_except(fsr); diff --git a/newlib/libc/machine/riscv/sys/fenv.h b/newlib/libc/machine/riscv/sys/fenv.h index 772f3833f4..1d577d527b 100644 --- a/newlib/libc/machine/riscv/sys/fenv.h +++ b/newlib/libc/machine/riscv/sys/fenv.h @@ -14,7 +14,7 @@ #include -#if __riscv_flen +#if defined(__riscv_f) || defined(__riscv_zfinx) /* Per "The RISC-V Instruction Set Manual: Volume I: User-Level ISA: * Version 2.1", Section 8.2, "Floating-Point Control and Status diff --git a/newlib/libm/common/math_config.h b/newlib/libm/common/math_config.h index 0f78b5c09b..bf881e81b8 100644 --- a/newlib/libm/common/math_config.h +++ b/newlib/libm/common/math_config.h @@ -72,7 +72,8 @@ /* Compiler can inline fma as a single instruction. */ #ifndef HAVE_FAST_FMA -# if __aarch64__ || (__ARM_FEATURE_FMA && (__ARM_FP & 8)) || __riscv_flen >= 64 +# if __aarch64__ || (__ARM_FEATURE_FMA && (__ARM_FP & 8)) \ + || __riscv_flen >= 64 || defined (__riscv_zdinx) # define HAVE_FAST_FMA 1 # else # define HAVE_FAST_FMA 0 @@ -80,7 +81,8 @@ #endif #ifndef HAVE_FAST_FMAF -# if HAVE_FAST_FMA || (__ARM_FEATURE_FMA && (__ARM_FP & 4)) || __riscv_flen >= 32 +# if HAVE_FAST_FMA || (__ARM_FEATURE_FMA && (__ARM_FP & 4)) \ + || __riscv_flen >= 32 || defined (__riscv_zfinx) # define HAVE_FAST_FMAF 1 # else # define HAVE_FAST_FMAF 0 diff --git a/newlib/libm/machine/riscv/e_sqrt.c b/newlib/libm/machine/riscv/e_sqrt.c index d6bfd90ad6..0c5aaadf3f 100644 --- a/newlib/libm/machine/riscv/e_sqrt.c +++ b/newlib/libm/machine/riscv/e_sqrt.c @@ -36,7 +36,7 @@ #include #include "math_config.h" -#if defined(__riscv_fsqrt) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 double __ieee754_sqrt (double x) diff --git a/newlib/libm/machine/riscv/ef_sqrt.c b/newlib/libm/machine/riscv/ef_sqrt.c index 1f378f547d..cc41813dd5 100644 --- a/newlib/libm/machine/riscv/ef_sqrt.c +++ b/newlib/libm/machine/riscv/ef_sqrt.c @@ -36,7 +36,7 @@ #include #include "math_config.h" -#if defined(__riscv_fsqrt) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 float __ieee754_sqrtf (float x) diff --git a/newlib/libm/machine/riscv/feclearexcept.c b/newlib/libm/machine/riscv/feclearexcept.c index 90c7775a49..e236a59eba 100644 --- a/newlib/libm/machine/riscv/feclearexcept.c +++ b/newlib/libm/machine/riscv/feclearexcept.c @@ -33,6 +33,7 @@ #include #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -47,7 +48,7 @@ int feclearexcept(int excepts) { -#if __riscv_flen +#if __RISCV_HARD_FLOAT /* Mask excepts to be sure only supported flag bits are set */ diff --git a/newlib/libm/machine/riscv/fegetenv.c b/newlib/libm/machine/riscv/fegetenv.c index c1488c7898..10a9af3375 100644 --- a/newlib/libm/machine/riscv/fegetenv.c +++ b/newlib/libm/machine/riscv/fegetenv.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -47,7 +48,7 @@ int fegetenv(fenv_t *envp) { -#if __riscv_flen +#if __RISCV_HARD_FLOAT /* Get the current environment (FCSR) */ diff --git a/newlib/libm/machine/riscv/fegetexceptflag.c b/newlib/libm/machine/riscv/fegetexceptflag.c index ab1b8a66b2..43d5543f73 100644 --- a/newlib/libm/machine/riscv/fegetexceptflag.c +++ b/newlib/libm/machine/riscv/fegetexceptflag.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -48,7 +49,7 @@ int fegetexceptflag(fexcept_t *flagp, int excepts) { -#if __riscv_flen +#if __RISCV_HARD_FLOAT /* Mask excepts to be sure only supported flag bits are set */ diff --git a/newlib/libm/machine/riscv/fegetround.c b/newlib/libm/machine/riscv/fegetround.c index b4c0f2b19b..6d553479b4 100644 --- a/newlib/libm/machine/riscv/fegetround.c +++ b/newlib/libm/machine/riscv/fegetround.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -45,7 +46,7 @@ int fegetround() { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Get current rounding mode */ diff --git a/newlib/libm/machine/riscv/feholdexcept.c b/newlib/libm/machine/riscv/feholdexcept.c index 9d726dabe8..c83a09bc12 100644 --- a/newlib/libm/machine/riscv/feholdexcept.c +++ b/newlib/libm/machine/riscv/feholdexcept.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -49,7 +50,7 @@ int feholdexcept(fenv_t *envp) { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Store the current FP environment in envp*/ diff --git a/newlib/libm/machine/riscv/feraiseexcept.c b/newlib/libm/machine/riscv/feraiseexcept.c index 6f28632d1a..817fa6274c 100644 --- a/newlib/libm/machine/riscv/feraiseexcept.c +++ b/newlib/libm/machine/riscv/feraiseexcept.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -58,7 +59,7 @@ int feraiseexcept(int excepts) excepts &= FE_ALL_EXCEPT; -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Set the requested exception flags */ diff --git a/newlib/libm/machine/riscv/fesetenv.c b/newlib/libm/machine/riscv/fesetenv.c index 943b272b70..a752c45d6f 100644 --- a/newlib/libm/machine/riscv/fesetenv.c +++ b/newlib/libm/machine/riscv/fesetenv.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -54,7 +55,7 @@ int fesetenv(const fenv_t *envp) { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Set environment (FCSR) */ diff --git a/newlib/libm/machine/riscv/fesetexceptflag.c b/newlib/libm/machine/riscv/fesetexceptflag.c index 04400f4ff0..8c70bbd00e 100644 --- a/newlib/libm/machine/riscv/fesetexceptflag.c +++ b/newlib/libm/machine/riscv/fesetexceptflag.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -53,7 +54,7 @@ int fesetexceptflag(const fexcept_t *flagp, int excepts) { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Mask excepts to be sure only supported flag bits are set */ diff --git a/newlib/libm/machine/riscv/fesetround.c b/newlib/libm/machine/riscv/fesetround.c index b2451c71bc..76585261d0 100644 --- a/newlib/libm/machine/riscv/fesetround.c +++ b/newlib/libm/machine/riscv/fesetround.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -48,7 +49,7 @@ int fesetround(int round) { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Mask round to be sure only valid rounding bits are set */ diff --git a/newlib/libm/machine/riscv/fetestexcept.c b/newlib/libm/machine/riscv/fetestexcept.c index 55d880c990..8ed0d5ffa5 100644 --- a/newlib/libm/machine/riscv/fetestexcept.c +++ b/newlib/libm/machine/riscv/fetestexcept.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -47,7 +48,7 @@ int fetestexcept(int excepts) { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Mask excepts to be sure only supported flag bits are set */ diff --git a/newlib/libm/machine/riscv/feupdateenv.c b/newlib/libm/machine/riscv/feupdateenv.c index 737095c2b0..90235d0210 100644 --- a/newlib/libm/machine/riscv/feupdateenv.c +++ b/newlib/libm/machine/riscv/feupdateenv.c @@ -32,6 +32,7 @@ */ #include +#include "riscv_math.h" /* This implementation is intended to comply with the following * specification: @@ -50,7 +51,7 @@ int feupdateenv(const fenv_t *envp) { -#if __riscv_flen +#ifdef __RISCV_HARD_FLOAT /* Get current exception flags */ diff --git a/newlib/libm/machine/riscv/riscv_math.h b/newlib/libm/machine/riscv/riscv_math.h index 38948ca12d..31220ba0e9 100644 --- a/newlib/libm/machine/riscv/riscv_math.h +++ b/newlib/libm/machine/riscv/riscv_math.h @@ -38,7 +38,13 @@ -#ifdef __riscv_flen +#if defined(__riscv_flen) || defined(__riscv_zfinx) + +#if (__riscv_flen >= 64) || defined(__riscv_zdinx) +#define __RISCV_HARD_FLOAT 64 +#else +#define __RISCV_HARD_FLOAT 32 +#endif #define FCLASS_NEG_INF (1 << 0) #define FCLASS_NEG_NORMAL (1 << 1) @@ -58,7 +64,7 @@ #define FCLASS_SUBNORMAL (FCLASS_NEG_SUBNORMAL | FCLASS_POS_SUBNORMAL) #define FCLASS_NAN (FCLASS_SNAN | FCLASS_QNAN) -#if __riscv_flen >= 64 +#if (__riscv_flen >= 64) || defined(__riscv_zdinx) static inline long _fclass_d(double x){ long fclass; __asm __volatile ("fclass.d\t%0, %1" : "=r" (fclass) : "f" (x)); @@ -66,7 +72,7 @@ static inline long _fclass_d(double x){ } #endif -#if __riscv_flen >= 32 +#if (__riscv_flen >= 32) || defined(__riscv_zfinx) static inline long _fclass_f(float x){ long fclass; __asm __volatile ("fclass.s\t%0, %1" : "=r" (fclass) : "f" (x)); diff --git a/newlib/libm/machine/riscv/s_copysign.c b/newlib/libm/machine/riscv/s_copysign.c index 0475355783..876e4a80ee 100644 --- a/newlib/libm/machine/riscv/s_copysign.c +++ b/newlib/libm/machine/riscv/s_copysign.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 double copysign (double x, double y) diff --git a/newlib/libm/machine/riscv/s_fabs.c b/newlib/libm/machine/riscv/s_fabs.c index abf7d2c0f5..bb26d3d0aa 100644 --- a/newlib/libm/machine/riscv/s_fabs.c +++ b/newlib/libm/machine/riscv/s_fabs.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 double fabs (double x) diff --git a/newlib/libm/machine/riscv/s_finite.c b/newlib/libm/machine/riscv/s_finite.c index 1f1f2244d8..d9ad888a4b 100644 --- a/newlib/libm/machine/riscv/s_finite.c +++ b/newlib/libm/machine/riscv/s_finite.c @@ -38,8 +38,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 #include "riscv_math.h" int finite(double x) { diff --git a/newlib/libm/machine/riscv/s_fmax.c b/newlib/libm/machine/riscv/s_fmax.c index bc174d0a09..059b71c475 100644 --- a/newlib/libm/machine/riscv/s_fmax.c +++ b/newlib/libm/machine/riscv/s_fmax.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 double fmax (double x, double y) diff --git a/newlib/libm/machine/riscv/s_fmin.c b/newlib/libm/machine/riscv/s_fmin.c index 13dbbf5dd0..c62dd868d2 100644 --- a/newlib/libm/machine/riscv/s_fmin.c +++ b/newlib/libm/machine/riscv/s_fmin.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 double fmin (double x, double y) diff --git a/newlib/libm/machine/riscv/s_fpclassify.c b/newlib/libm/machine/riscv/s_fpclassify.c index 8112d4f786..42b4e9fcb2 100644 --- a/newlib/libm/machine/riscv/s_fpclassify.c +++ b/newlib/libm/machine/riscv/s_fpclassify.c @@ -33,11 +33,10 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include - -#if defined(__riscv_flen) && __riscv_flen >= 64 - #include "riscv_math.h" +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 + int __fpclassifyd (double x) { diff --git a/newlib/libm/machine/riscv/s_isinf.c b/newlib/libm/machine/riscv/s_isinf.c index 3d6d685a3e..2860b3f888 100644 --- a/newlib/libm/machine/riscv/s_isinf.c +++ b/newlib/libm/machine/riscv/s_isinf.c @@ -35,10 +35,10 @@ #include #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 -#include "riscv_math.h" #undef isinf int diff --git a/newlib/libm/machine/riscv/s_isnan.c b/newlib/libm/machine/riscv/s_isnan.c index a0209729ae..96185cd9a1 100644 --- a/newlib/libm/machine/riscv/s_isnan.c +++ b/newlib/libm/machine/riscv/s_isnan.c @@ -35,10 +35,10 @@ #include #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 -#include "riscv_math.h" #undef isnan int diff --git a/newlib/libm/machine/riscv/s_llrint.c b/newlib/libm/machine/riscv/s_llrint.c index 3f93e60b8d..39aeb1dbfc 100644 --- a/newlib/libm/machine/riscv/s_llrint.c +++ b/newlib/libm/machine/riscv/s_llrint.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 && __riscv_xlen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 && __riscv_xlen >= 64 long long int llrint (double x) { diff --git a/newlib/libm/machine/riscv/s_llround.c b/newlib/libm/machine/riscv/s_llround.c index ff41394cf1..538ae9a182 100644 --- a/newlib/libm/machine/riscv/s_llround.c +++ b/newlib/libm/machine/riscv/s_llround.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 && __riscv_xlen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 && __riscv_xlen >= 64 long long int llround(double x) { diff --git a/newlib/libm/machine/riscv/s_lrint.c b/newlib/libm/machine/riscv/s_lrint.c index 0e9a9bc8ba..9bed894eeb 100644 --- a/newlib/libm/machine/riscv/s_lrint.c +++ b/newlib/libm/machine/riscv/s_lrint.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 long int lrint (double x) { diff --git a/newlib/libm/machine/riscv/s_lround.c b/newlib/libm/machine/riscv/s_lround.c index 5be778834f..8f15a0ad7a 100644 --- a/newlib/libm/machine/riscv/s_lround.c +++ b/newlib/libm/machine/riscv/s_lround.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 64 long int lround (double x) { diff --git a/newlib/libm/machine/riscv/sf_copysign.c b/newlib/libm/machine/riscv/sf_copysign.c index 31b1321ad1..88afbe2f82 100644 --- a/newlib/libm/machine/riscv/sf_copysign.c +++ b/newlib/libm/machine/riscv/sf_copysign.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 float copysignf (float x, float y) diff --git a/newlib/libm/machine/riscv/sf_fabs.c b/newlib/libm/machine/riscv/sf_fabs.c index 1ca92d30d3..ac7a4e0d80 100644 --- a/newlib/libm/machine/riscv/sf_fabs.c +++ b/newlib/libm/machine/riscv/sf_fabs.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 float fabsf (float x) diff --git a/newlib/libm/machine/riscv/sf_finite.c b/newlib/libm/machine/riscv/sf_finite.c index a17b0fa363..690985567e 100644 --- a/newlib/libm/machine/riscv/sf_finite.c +++ b/newlib/libm/machine/riscv/sf_finite.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 #include "riscv_math.h" int finitef(float x) diff --git a/newlib/libm/machine/riscv/sf_fmax.c b/newlib/libm/machine/riscv/sf_fmax.c index 7b18f00623..e2d4ad774f 100644 --- a/newlib/libm/machine/riscv/sf_fmax.c +++ b/newlib/libm/machine/riscv/sf_fmax.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 float fmaxf (float x, float y) diff --git a/newlib/libm/machine/riscv/sf_fmin.c b/newlib/libm/machine/riscv/sf_fmin.c index 771613338e..7387d46d39 100644 --- a/newlib/libm/machine/riscv/sf_fmin.c +++ b/newlib/libm/machine/riscv/sf_fmin.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 float fminf (float x, float y) diff --git a/newlib/libm/machine/riscv/sf_fpclassify.c b/newlib/libm/machine/riscv/sf_fpclassify.c index dee9a7a25f..9b16408538 100644 --- a/newlib/libm/machine/riscv/sf_fpclassify.c +++ b/newlib/libm/machine/riscv/sf_fpclassify.c @@ -33,8 +33,9 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 #include "riscv_math.h" diff --git a/newlib/libm/machine/riscv/sf_isinf.c b/newlib/libm/machine/riscv/sf_isinf.c index 0c60f33af4..d668746948 100644 --- a/newlib/libm/machine/riscv/sf_isinf.c +++ b/newlib/libm/machine/riscv/sf_isinf.c @@ -35,10 +35,10 @@ #include #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 -#include "riscv_math.h" #undef isinff int diff --git a/newlib/libm/machine/riscv/sf_isnan.c b/newlib/libm/machine/riscv/sf_isnan.c index e38abf4abb..75b17f151a 100644 --- a/newlib/libm/machine/riscv/sf_isnan.c +++ b/newlib/libm/machine/riscv/sf_isnan.c @@ -35,10 +35,10 @@ #include #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 -#include "riscv_math.h" #undef isnanf int diff --git a/newlib/libm/machine/riscv/sf_llrint.c b/newlib/libm/machine/riscv/sf_llrint.c index 58f2e5371a..9be28402c4 100644 --- a/newlib/libm/machine/riscv/sf_llrint.c +++ b/newlib/libm/machine/riscv/sf_llrint.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 && __riscv_xlen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 && __riscv_xlen >= 64 long long int llrintf (float x) { diff --git a/newlib/libm/machine/riscv/sf_llround.c b/newlib/libm/machine/riscv/sf_llround.c index 389da692e7..c378eb0cba 100644 --- a/newlib/libm/machine/riscv/sf_llround.c +++ b/newlib/libm/machine/riscv/sf_llround.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 && __riscv_xlen >= 64 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 && __riscv_xlen >= 64 long long int llroundf (float x) { diff --git a/newlib/libm/machine/riscv/sf_lrint.c b/newlib/libm/machine/riscv/sf_lrint.c index 4f80a93391..13320eb155 100644 --- a/newlib/libm/machine/riscv/sf_lrint.c +++ b/newlib/libm/machine/riscv/sf_lrint.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 long int lrintf (float x) { diff --git a/newlib/libm/machine/riscv/sf_lround.c b/newlib/libm/machine/riscv/sf_lround.c index dda6d984e3..398dfd2d8c 100644 --- a/newlib/libm/machine/riscv/sf_lround.c +++ b/newlib/libm/machine/riscv/sf_lround.c @@ -34,8 +34,9 @@ */ #include +#include "riscv_math.h" -#if defined(__riscv_flen) && __riscv_flen >= 32 +#if defined(__RISCV_HARD_FLOAT) && __RISCV_HARD_FLOAT >= 32 long int lroundf(float x) { From 4fbcc8c5fe7d655de4bf04f2f123e77506011030 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 26 Jul 2023 19:48:34 +0200 Subject: [PATCH 356/767] Rename _NL_CTYPE_OUTDIGITSx_MB/WC to _NL_CTYPE_OUTDIGITx_MB/WC The extended _NL_foo names were originally designed after their GLibc counterparts. However, the OUTDIGIT macros were accidentally defined as OUTDIGITS, plural. Fix them. Fixes: d47d5b850bed ("Extend locale support to maintain wide char values of native strings") Signed-off-by: Corinna Vinschen --- newlib/libc/include/langinfo.h | 40 +++++++++++++++++----------------- winsup/cygwin/release/3.4.8 | 4 ++++ winsup/utils/locale.cc | 40 +++++++++++++++++----------------- 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/newlib/libc/include/langinfo.h b/newlib/libc/include/langinfo.h index fcf986cce1..41d090d371 100644 --- a/newlib/libc/include/langinfo.h +++ b/newlib/libc/include/langinfo.h @@ -191,26 +191,26 @@ enum _NL_LOCALE_EXTENDED_FIRST_ENTRY, - _NL_CTYPE_OUTDIGITS0_MB, - _NL_CTYPE_OUTDIGITS1_MB, - _NL_CTYPE_OUTDIGITS2_MB, - _NL_CTYPE_OUTDIGITS3_MB, - _NL_CTYPE_OUTDIGITS4_MB, - _NL_CTYPE_OUTDIGITS5_MB, - _NL_CTYPE_OUTDIGITS6_MB, - _NL_CTYPE_OUTDIGITS7_MB, - _NL_CTYPE_OUTDIGITS8_MB, - _NL_CTYPE_OUTDIGITS9_MB, - _NL_CTYPE_OUTDIGITS0_WC, - _NL_CTYPE_OUTDIGITS1_WC, - _NL_CTYPE_OUTDIGITS2_WC, - _NL_CTYPE_OUTDIGITS3_WC, - _NL_CTYPE_OUTDIGITS4_WC, - _NL_CTYPE_OUTDIGITS5_WC, - _NL_CTYPE_OUTDIGITS6_WC, - _NL_CTYPE_OUTDIGITS7_WC, - _NL_CTYPE_OUTDIGITS8_WC, - _NL_CTYPE_OUTDIGITS9_WC, + _NL_CTYPE_OUTDIGIT0_MB, + _NL_CTYPE_OUTDIGIT1_MB, + _NL_CTYPE_OUTDIGIT2_MB, + _NL_CTYPE_OUTDIGIT3_MB, + _NL_CTYPE_OUTDIGIT4_MB, + _NL_CTYPE_OUTDIGIT5_MB, + _NL_CTYPE_OUTDIGIT6_MB, + _NL_CTYPE_OUTDIGIT7_MB, + _NL_CTYPE_OUTDIGIT8_MB, + _NL_CTYPE_OUTDIGIT9_MB, + _NL_CTYPE_OUTDIGIT0_WC, + _NL_CTYPE_OUTDIGIT1_WC, + _NL_CTYPE_OUTDIGIT2_WC, + _NL_CTYPE_OUTDIGIT3_WC, + _NL_CTYPE_OUTDIGIT4_WC, + _NL_CTYPE_OUTDIGIT5_WC, + _NL_CTYPE_OUTDIGIT6_WC, + _NL_CTYPE_OUTDIGIT7_WC, + _NL_CTYPE_OUTDIGIT8_WC, + _NL_CTYPE_OUTDIGIT9_WC, _NL_TIME_CODESET, _NL_TIME_WMON_1, diff --git a/winsup/cygwin/release/3.4.8 b/winsup/cygwin/release/3.4.8 index 595b584cdf..d37272eef8 100644 --- a/winsup/cygwin/release/3.4.8 +++ b/winsup/cygwin/release/3.4.8 @@ -10,3 +10,7 @@ Bug Fixes - Fix AT_EMPTY_PATH handling in fchmodat and fstatat if dirfd referres to a file other than a directory Addresses: https://cygwin.com/pipermail/cygwin-patches/2023q2/012306.html + +- Rename internal macros _NL_CTYPE_OUTDIGITSx_MB/WC to GLibc compatible + _NL_CTYPE_OUTDIGITx_MB/WC. + Addresses: https://cygwin.com/pipermail/cygwin-developers/2023-July/012637.html diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 953cc21846..5ec7dd888a 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -468,26 +468,26 @@ lc_names_t lc_ctype_names[] = { { "ctype-class-names", is_string_fake, 0, 0 }, { "ctype-map-names", is_string_fake, 2, 0 }, - { "ctype-outdigit0_mb", is_string, _NL_CTYPE_OUTDIGITS0_MB, 0 }, - { "ctype-outdigit1_mb", is_string, _NL_CTYPE_OUTDIGITS1_MB, 0 }, - { "ctype-outdigit2_mb", is_string, _NL_CTYPE_OUTDIGITS2_MB, 0 }, - { "ctype-outdigit3_mb", is_string, _NL_CTYPE_OUTDIGITS3_MB, 0 }, - { "ctype-outdigit4_mb", is_string, _NL_CTYPE_OUTDIGITS4_MB, 0 }, - { "ctype-outdigit5_mb", is_string, _NL_CTYPE_OUTDIGITS5_MB, 0 }, - { "ctype-outdigit6_mb", is_string, _NL_CTYPE_OUTDIGITS6_MB, 0 }, - { "ctype-outdigit7_mb", is_string, _NL_CTYPE_OUTDIGITS7_MB, 0 }, - { "ctype-outdigit8_mb", is_string, _NL_CTYPE_OUTDIGITS8_MB, 0 }, - { "ctype-outdigit9_mb", is_string, _NL_CTYPE_OUTDIGITS9_MB, 0 }, - { "ctype-outdigit0_wc", is_wchar, _NL_CTYPE_OUTDIGITS0_WC, 0 }, - { "ctype-outdigit1_wc", is_wchar, _NL_CTYPE_OUTDIGITS1_WC, 0 }, - { "ctype-outdigit2_wc", is_wchar, _NL_CTYPE_OUTDIGITS2_WC, 0 }, - { "ctype-outdigit3_wc", is_wchar, _NL_CTYPE_OUTDIGITS3_WC, 0 }, - { "ctype-outdigit4_wc", is_wchar, _NL_CTYPE_OUTDIGITS4_WC, 0 }, - { "ctype-outdigit5_wc", is_wchar, _NL_CTYPE_OUTDIGITS5_WC, 0 }, - { "ctype-outdigit6_wc", is_wchar, _NL_CTYPE_OUTDIGITS6_WC, 0 }, - { "ctype-outdigit7_wc", is_wchar, _NL_CTYPE_OUTDIGITS7_WC, 0 }, - { "ctype-outdigit8_wc", is_wchar, _NL_CTYPE_OUTDIGITS8_WC, 0 }, - { "ctype-outdigit9_wc", is_wchar, _NL_CTYPE_OUTDIGITS9_WC, 0 }, + { "ctype-outdigit0_mb", is_string, _NL_CTYPE_OUTDIGIT0_MB, 0 }, + { "ctype-outdigit1_mb", is_string, _NL_CTYPE_OUTDIGIT1_MB, 0 }, + { "ctype-outdigit2_mb", is_string, _NL_CTYPE_OUTDIGIT2_MB, 0 }, + { "ctype-outdigit3_mb", is_string, _NL_CTYPE_OUTDIGIT3_MB, 0 }, + { "ctype-outdigit4_mb", is_string, _NL_CTYPE_OUTDIGIT4_MB, 0 }, + { "ctype-outdigit5_mb", is_string, _NL_CTYPE_OUTDIGIT5_MB, 0 }, + { "ctype-outdigit6_mb", is_string, _NL_CTYPE_OUTDIGIT6_MB, 0 }, + { "ctype-outdigit7_mb", is_string, _NL_CTYPE_OUTDIGIT7_MB, 0 }, + { "ctype-outdigit8_mb", is_string, _NL_CTYPE_OUTDIGIT8_MB, 0 }, + { "ctype-outdigit9_mb", is_string, _NL_CTYPE_OUTDIGIT9_MB, 0 }, + { "ctype-outdigit0_wc", is_wchar, _NL_CTYPE_OUTDIGIT0_WC, 0 }, + { "ctype-outdigit1_wc", is_wchar, _NL_CTYPE_OUTDIGIT1_WC, 0 }, + { "ctype-outdigit2_wc", is_wchar, _NL_CTYPE_OUTDIGIT2_WC, 0 }, + { "ctype-outdigit3_wc", is_wchar, _NL_CTYPE_OUTDIGIT3_WC, 0 }, + { "ctype-outdigit4_wc", is_wchar, _NL_CTYPE_OUTDIGIT4_WC, 0 }, + { "ctype-outdigit5_wc", is_wchar, _NL_CTYPE_OUTDIGIT5_WC, 0 }, + { "ctype-outdigit6_wc", is_wchar, _NL_CTYPE_OUTDIGIT6_WC, 0 }, + { "ctype-outdigit7_wc", is_wchar, _NL_CTYPE_OUTDIGIT7_WC, 0 }, + { "ctype-outdigit8_wc", is_wchar, _NL_CTYPE_OUTDIGIT8_WC, 0 }, + { "ctype-outdigit9_wc", is_wchar, _NL_CTYPE_OUTDIGIT9_WC, 0 }, { "charmap", is_string, CODESET, 0 }, { "ctype-mb-cur-max", is_int, _NL_CTYPE_MB_CUR_MAX, 0 }, { NULL, is_end, 0, 0 } From 9e329b544ac04b389e12984362e06b92e1506399 Mon Sep 17 00:00:00 2001 From: Jesse Huang via Newlib Date: Thu, 27 Jul 2023 01:49:41 -0700 Subject: [PATCH 357/767] Fix rounding results in lrint() & llrint() when close to 0 soft-fp should round floating pointer numbers according to the current rounding mode. However, in the current code of lrint() and llrint(), there are if statements before the actual rounding computation if(j0 < -1) return 0; Where j0 is the exponent of the floating point number. It means any number having a exponent less than -1 (i.e. interval (-0.5, 0.5)) will be rounded to 0 regardeless of the rounding mode. The bug already fixed in glibc in 2006 by moving the check afterwards the rounding computation, but still persists in newlib. This patch fixed it in a similar way to glibc Ref Commit in glibc: 6624dbc07b5a9fb316ed188ef01f65b8eea8b47c --- newlib/libm/common/s_llrint.c | 31 +++++++++++-------------------- newlib/libm/common/s_lrint.c | 31 +++++++++++-------------------- newlib/libm/common/sf_llrint.c | 6 ++---- newlib/libm/common/sf_lrint.c | 6 ++---- 4 files changed, 26 insertions(+), 48 deletions(-) diff --git a/newlib/libm/common/s_llrint.c b/newlib/libm/common/s_llrint.c index 72452dbe93..f2c48766e4 100644 --- a/newlib/libm/common/s_llrint.c +++ b/newlib/libm/common/s_llrint.c @@ -66,26 +66,17 @@ long long int if(j0 < 20) { /* j0 in [-1023,19] */ - if(j0 < -1) - return 0; - else - { - /* j0 in [0,19] */ - /* shift amt in [0,19] */ - w = TWO52[sx] + x; - t = w - TWO52[sx]; - GET_HIGH_WORD(i0, t); - /* Detect the all-zeros representation of plus and - minus zero, which fails the calculation below. */ - if ((i0 & ~((__int32_t)1 << 31)) == 0) - return 0; - /* After round: j0 in [0,20] */ - j0 = ((i0 & 0x7ff00000) >> 20) - 1023; - i0 &= 0x000fffff; - i0 |= 0x00100000; - /* shift amt in [20,0] */ - result = i0 >> (20 - j0); - } + w = TWO52[sx] + x; + t = w - TWO52[sx]; + GET_HIGH_WORD(i0, t); + /* Detect the all-zeros representation of plus and + minus zero, which fails the calculation below. */ + if ((i0 & ~((__int32_t)1 << 31)) == 0) + return 0; + j0 = ((i0 & 0x7ff00000) >> 20) - 1023; + i0 &= 0x000fffff; + i0 |= 0x00100000; + result = (j0 < 0 ? 0 : i0 >> (20 - j0)); } else if (j0 < (int)(8 * sizeof (long long int)) - 1) { diff --git a/newlib/libm/common/s_lrint.c b/newlib/libm/common/s_lrint.c index b37f50fd4d..b37b93affa 100644 --- a/newlib/libm/common/s_lrint.c +++ b/newlib/libm/common/s_lrint.c @@ -103,26 +103,17 @@ TWO52[2]={ if(j0 < 20) { /* j0 in [-1023,19] */ - if(j0 < -1) - return 0; - else - { - /* j0 in [0,19] */ - /* shift amt in [0,19] */ - w = TWO52[sx] + x; - t = w - TWO52[sx]; - GET_HIGH_WORD(i0, t); - /* Detect the all-zeros representation of plus and - minus zero, which fails the calculation below. */ - if ((i0 & ~(1L << 31)) == 0) - return 0; - /* After round: j0 in [0,20] */ - j0 = ((i0 & 0x7ff00000) >> 20) - 1023; - i0 &= 0x000fffff; - i0 |= 0x00100000; - /* shift amt in [20,0] */ - result = i0 >> (20 - j0); - } + w = TWO52[sx] + x; + t = w - TWO52[sx]; + GET_HIGH_WORD(i0, t); + /* Detect the all-zeros representation of plus and + minus zero, which fails the calculation below. */ + if ((i0 & ~(1L << 31)) == 0) + return 0; + j0 = ((i0 & 0x7ff00000) >> 20) - 1023; + i0 &= 0x000fffff; + i0 |= 0x00100000; + result = (j0 < 0 ? 0 : i0 >> (20 - j0)); } else if (j0 < (int)(8 * sizeof (long int)) - 1) { diff --git a/newlib/libm/common/sf_llrint.c b/newlib/libm/common/sf_llrint.c index 7558e89acd..905a5b21d0 100644 --- a/newlib/libm/common/sf_llrint.c +++ b/newlib/libm/common/sf_llrint.c @@ -60,9 +60,7 @@ TWO23[2]={ if (j0 < (int)(sizeof (long long int) * 8) - 1) { - if (j0 < -1) - return 0; - else if (j0 >= 23) + if (j0 >= 23) result = (long long int) ((i0 & 0x7fffff) | 0x800000) << (j0 - 23); else { @@ -76,7 +74,7 @@ TWO23[2]={ j0 = ((i0 >> 23) & 0xff) - 0x7f; i0 &= 0x7fffff; i0 |= 0x800000; - result = i0 >> (23 - j0); + result = (j0 < 0 ? 0 : i0 >> (23 - j0)); } } else diff --git a/newlib/libm/common/sf_lrint.c b/newlib/libm/common/sf_lrint.c index 3c58c5d101..7fe47aefb2 100644 --- a/newlib/libm/common/sf_lrint.c +++ b/newlib/libm/common/sf_lrint.c @@ -60,9 +60,7 @@ TWO23[2]={ if (j0 < (int)(sizeof (long int) * 8) - 1) { - if (j0 < -1) - return 0; - else if (j0 >= 23) + if (j0 >= 23) result = (long int) ((i0 & 0x7fffff) | 0x800000) << (j0 - 23); else { @@ -76,7 +74,7 @@ TWO23[2]={ j0 = ((i0 >> 23) & 0xff) - 0x7f; i0 &= 0x7fffff; i0 |= 0x800000; - result = i0 >> (23 - j0); + result = (j0 < 0 ? 0 : i0 >> (23 - j0)); } } else From a13b0b7aea9d12c6cefe21082ef5c921ac071e3a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 27 Jul 2023 21:57:49 +0200 Subject: [PATCH 358/767] Cygwin: fnmatch: fix range comparison in C locale Commit c36064bbd0c5 introduced operating on character pointers instead of operating on characters, to allow collating symbols. This patch neglected to change the expression for range comparison in case we're in the C locale. Thus it suddenly compared pointers instead of characters. Fix that. Fixes: c36064bbd0c5 ("Cygwin: fnmatch: support collating symbols in [. .] brackets") Signed-off-by: Corinna Vinschen --- winsup/cygwin/libc/fnmatch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/libc/fnmatch.c b/winsup/cygwin/libc/fnmatch.c index 8a229a1420..a1cb5d1e46 100644 --- a/winsup/cygwin/libc/fnmatch.c +++ b/winsup/cygwin/libc/fnmatch.c @@ -353,7 +353,7 @@ rangematch(const wint_t *pattern, wint_t *test, int flags, wint_t **newp, } if ((!__get_current_collate_locale ()->win_locale[0]) ? - c <= test && test <= c2 : + *c <= *test && *test <= *c2 : __wscollate_range_cmp(c, test, clen, tlen) <= 0 && __wscollate_range_cmp(test, c2, tlen, c2len) <= 0 ) From 4f78215c866a2e1a7cd1ba894772029fa19d8328 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 31 Jul 2023 22:23:45 +0200 Subject: [PATCH 359/767] Cygwin: belatedly bump CYGWIN_VERSION_API_MINOR for new posix_spawn funcs Commit c743751aafa84 ("Cygwin: Export posix_spawn_file_actions_add{f}chdir_np") added two new functions but we forgot to bump the API version. Catch up. Fixes: c743751aafa84 ("Cygwin: Export posix_spawn_file_actions_add{f}chdir_np") Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 0644311a0b..188dc6d08b 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -479,12 +479,14 @@ details. */ 343: Change FD_SETSIZE and NOFILE. 344: Remove _alloca. 345: Reinstantiate _alloca. + 346: (Belatedly) add posix_spawn_file_actions_addchdir_np, + posix_spawn_file_actions_addfchdir_np. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 345 +#define CYGWIN_VERSION_API_MINOR 346 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible changes are made to the shared From 8a4318943875cd922601d34e54ce8a83ad2e733c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 31 Jul 2023 12:44:16 +0200 Subject: [PATCH 360/767] Revert "* libc/stdlib/mbtowc_r.c (__ascii_mbtowc): Disallow conversion of" This reverts commit 2b77087a48ea56e77fca5aeab478c922f6473d7c. For some reason lost in time, commit 2b77087a48ea5 introduced Cygwin-specific code treating single byte characters outside the portable character set as illegal chars. However, Cygwin was always alone with this over-correct behaviour and it leads to stuff like gnulib replacing functions defined in Cygwin with their own implementation just due to that. Revert this change, sans the changes to ChangeLog. Fixes: 2b77087a48ea ("* libc/stdlib/mbtowc_r.c (__ascii_mbtowc): Disallow conversion of") Signed-off-by: Corinna Vinschen --- newlib/libc/stdlib/mbtowc_r.c | 8 -------- newlib/libc/stdlib/wctomb_r.c | 4 ---- 2 files changed, 12 deletions(-) diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c index 01e596db8b..cab8333d70 100644 --- a/newlib/libc/stdlib/mbtowc_r.c +++ b/newlib/libc/stdlib/mbtowc_r.c @@ -36,14 +36,6 @@ __ascii_mbtowc (struct _reent *r, if (n == 0) return -2; -#ifdef __CYGWIN__ - if ((wchar_t)*t >= 0x80) - { - _REENT_ERRNO(r) = EILSEQ; - return -1; - } -#endif - *pwc = (wchar_t)*t; if (*t == '\0') diff --git a/newlib/libc/stdlib/wctomb_r.c b/newlib/libc/stdlib/wctomb_r.c index 3081e93702..5ea1e13e48 100644 --- a/newlib/libc/stdlib/wctomb_r.c +++ b/newlib/libc/stdlib/wctomb_r.c @@ -29,11 +29,7 @@ __ascii_wctomb (struct _reent *r, if (s == NULL) return 0; -#ifdef __CYGWIN__ - if ((size_t)wchar >= 0x80) -#else if ((size_t)wchar >= 0x100) -#endif { _REENT_ERRNO(r) = EILSEQ; return -1; From 68bb3deabd0381465e18d41ae7f722cfe95ba3c8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 28 Jul 2023 23:33:52 +0200 Subject: [PATCH 361/767] Cygwin: fix GB18030 support The changes to support GB18030 were insufficient and the underlying Windows conversion functions just failed. Fix how the Windows functions are called for GB18030. Fixes: 5da71b605995 ("Cygwin: add support for GB18030 codeset") Signed-off-by: Corinna Vinschen --- winsup/cygwin/strfuncs.cc | 150 +++++++++++++++++++++++++++++++++++++- 1 file changed, 148 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 76b7216cc3..43ce93ed22 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -331,7 +331,55 @@ __gbk_wctomb (struct _reent *r, char *s, wchar_t wchar, mbstate_t *state) extern "C" int __gb18030_wctomb (struct _reent *r, char *s, wchar_t wchar, mbstate_t *state) { - return __db_wctomb (r,s, wchar, 54936); + int ret; + wchar_t wres[2]; + + if (s == NULL) + return 0; + + if (state->__count == 0) + { + if (wchar <= 0x7f) + { + *s = (char) wchar; + return 1; + } + + if (wchar >= 0xd800 && wchar <= 0xdbff) + { + /* First half of a surrogate pair */ + state->__count = 18030; + state->__value.__wch = wchar; + return 0; + } + ret = WideCharToMultiByte (54936, WC_ERR_INVALID_CHARS, &wchar, 1, s, + 4, NULL, NULL); + if (ret > 0) + return ret; + goto ilseq; + } + else if (state->__count == 18030 && state->__value.__wch >= 0xd800 + && state->__value.__wch <= 0xdbff) + { + if (wchar >= 0xdc00 && wchar <= 0xdfff) + { + /* Create multibyte sequence from full surrogate pair. */ + wres[0] = state->__value.__wch; + wres[1] = wchar; + ret = WideCharToMultiByte (54936, WC_ERR_INVALID_CHARS, wres, 2, s, 4, + NULL, NULL); + if (ret > 0) + { + state->__count = 0; + return ret; + } + } +ilseq: + _REENT_ERRNO(r) = EILSEQ; + return -1; + } + _REENT_ERRNO(r) = EINVAL; + return -1; } extern "C" int @@ -495,7 +543,105 @@ extern "C" int __gb18030_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, mbstate_t *state) { - return __db_mbtowc (r, pwc, s, n, 54936, state); + wchar_t wres[2], dummy; + unsigned char ch; + int ret, len, ocount; + size_t ncopy; + + if (state->__count < 0 || (state->__count > (int) sizeof state->__value.__wchb + && state->__count != 18030)) + { + errno = EINVAL; + return -1; + } + + if (s == NULL) + { + s = ""; + n = 1; + pwc = NULL; + } + + if (state->__count == 18030) + { + /* Return second half of the surrogate pair */ + *pwc = state->__value.__wch; + state->__count = 0; + return 1; + } + + ncopy = MIN (MIN (n, MB_CUR_MAX), + sizeof state->__value.__wchb - state->__count); + memcpy (state->__value.__wchb + state->__count, s, ncopy); + ocount = state->__count; + state->__count += ncopy; + s = (char *) state->__value.__wchb; + n = state->__count; + + if (n == 0) /* Incomplete multibyte sequence */ + return -2; + + if (!pwc) + pwc = &dummy; + + /* Check if input is a valid GB18030 char (per FreeBSD): + * Single byte: [00-7f] + * Two byte: [81-fe][40-7e,80-fe] + * Four byte: [81-fe][30-39][81-fe][30-39] + */ + ch = *(unsigned char *) s; + if (ch <= 0x7f) + { + *pwc = ch; + state->__count = 0; + return ch ? 1 : 0; + } + if (ch >= 0x81 && ch <= 0xfe) + { + if (n < 2) + return -2; + ch = (unsigned char) s[1]; + if ((ch >= 0x40 && ch <= 0x7e) || (ch >= 0x80 && ch <= 0xfe)) + len = 2; + else if (ch >= 0x30 && ch <= 0x39) + { + if (n < 3) + return -2; + ch = (unsigned char) s[2]; + if (ch < 0x81 || ch > 0xfe) + goto ilseq; + if (n < 4) + return -2; + ch = (unsigned char) s[3]; + if (ch < 0x30 || ch > 0x39) + goto ilseq; + len = 4; + } + else + goto ilseq; + } + else + goto ilseq; + ret = MultiByteToWideChar (54936, MB_ERR_INVALID_CHARS, s, len, wres, 2); + if (ret) + { + *pwc = wres[0]; + if (ret == 2) + { + /* Surrogate pair. Store second half for later and return + first half. Return real count - 1, return 1 when the second + half of the pair is returned in the next run. */ + state->__count = 18030; + state->__value.__wch = wres[1]; + --len; + } + else + state->__count = 0; + return len - ocount; + } +ilseq: + _REENT_ERRNO(r) = EILSEQ; + return -1; } extern "C" int From 4f258c55e87fe4c0ea7d5703c32890b63295bc23 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 31 Jul 2023 22:38:28 +0200 Subject: [PATCH 362/767] Cygwin: Add ISO C11 functions c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. Add uchar.h accordingly. For the c32 functions, use the internal functions wirtomb and mbrtowi as base, and convert wirtomb and mbrtowi to inline functions calling the c32 functions. Signed-off-by: Corinna Vinschen --- winsup/cygwin/cygwin.din | 4 + winsup/cygwin/include/cygwin/version.h | 1 + winsup/cygwin/include/uchar.h | 22 ++++++ winsup/cygwin/local_includes/wchar.h | 15 +++- winsup/cygwin/release/3.5.0 | 2 + winsup/cygwin/strfuncs.cc | 101 ++++++++++++++++++++----- winsup/doc/new-features.xml | 4 + 7 files changed, 127 insertions(+), 22 deletions(-) create mode 100644 winsup/cygwin/include/uchar.h diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index b654661e9e..ee646fddc8 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -268,6 +268,8 @@ bindresvport_sa = cygwin_bindresvport_sa SIGFE bsearch NOSIGFE btowc NOSIGFE bzero NOSIGFE +c16rtomb NOSIGFE +c32rtomb NOSIGFE cabs NOSIGFE cabsf NOSIGFE cabsl NOSIGFE @@ -936,6 +938,8 @@ malloc_trim SIGFE malloc_usable_size SIGFE mallopt SIGFE mblen NOSIGFE +mbrtoc16 NOSIGFE +mbrtoc32 NOSIGFE mbrlen NOSIGFE mbrtowc NOSIGFE mbsinit NOSIGFE diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 188dc6d08b..7bc3e5ec3b 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -481,6 +481,7 @@ details. */ 345: Reinstantiate _alloca. 346: (Belatedly) add posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. + 347: Add c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ diff --git a/winsup/cygwin/include/uchar.h b/winsup/cygwin/include/uchar.h new file mode 100644 index 0000000000..8402055370 --- /dev/null +++ b/winsup/cygwin/include/uchar.h @@ -0,0 +1,22 @@ +#ifndef _UCHAR_H +#define _UCHAR_H + +#include +#include + +typedef __uint16_t char16_t; +typedef __uint32_t char32_t; + +__BEGIN_DECLS + +size_t c16rtomb(char * __restrict, char16_t, mbstate_t * __restrict); +size_t mbrtoc16(char16_t * __restrict, const char * __restrict, size_t, + mbstate_t * __restrict); + +size_t c32rtomb(char * __restrict, char32_t, mbstate_t * __restrict); +size_t mbrtoc32(char32_t * __restrict, const char * __restrict, size_t, + mbstate_t * __restrict); + +__END_DECLS + +#endif /* _UCHAR_H */ diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index ecf489cd58..606559a6ab 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -13,6 +13,7 @@ details. */ /* Internal headers from newlib */ #include "../locale/setlocale.h" +#include #define ENCODING_LEN 31 @@ -46,11 +47,19 @@ void wcintowcs (wchar_t *, wint_t *, size_t); /* replacement function for wcrtomb, converting a UTF-32 char to a multibyte string. */ -size_t wirtomb (char *, wint_t, mbstate_t *); +static inline size_t +wirtomb (char *s, wint_t wc, mbstate_t *ps) +{ + return c32rtomb (s,(char32_t) wc, ps); +} /* replacement function for mbrtowc, returning a wint_t representing - a UTF-32 value. Defined in strfuncs.cc */ -extern size_t mbrtowi (wint_t *, const char *, size_t, mbstate_t *); + a UTF-32 value. */ +static inline size_t +mbrtowi (wint_t *pwc, const char *s, size_t n, mbstate_t *ps) +{ + return mbrtoc32 ((char32_t *) pwc, s, n, ps); +} /* replacement function for mbsnrtowcs, returning a wint_t representing a UTF-32 value. Defined in strfuncs.cc. diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index c8485b18c5..7c27e1bb8c 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -27,6 +27,8 @@ What's new: - New API calls: posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. +- New API calls: c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. + What changed: ------------- diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 43ce93ed22..770d40ed8f 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -10,6 +10,7 @@ details. */ #include #include #include +#include #include #include "path.h" #include "fhandler.h" @@ -132,26 +133,30 @@ wcintowcs (wchar_t *dest, wint_t *src, size_t len) /* replacement function for wcrtomb, converting a UTF-32 char to a multibyte string. */ extern "C" size_t -wirtomb (char *s, wint_t wi, mbstate_t *ps) +c32rtomb (char *s, char32_t wc, mbstate_t *ps) { - wchar_t wc[3] = { (wchar_t) wi, '\0', '\0' }; - const wchar_t *wcp = wc; - size_t nwc = 1; + /* If s is NULL, behave as if s pointed to an internal buffer and wc + was a null wide character (L''). wcrtomb will do that for us*/ + if (wc <= 0xffff || !s) + return wcrtomb (s, (wchar_t) wc, ps); + + wchar_t wc_arr[2]; + const wchar_t *wcp = wc_arr; + + wc -= 0x10000; + wc_arr[0] = (wc >> 10) + 0xd800; + wc_arr[1] = (wc & 0x3ff) + 0xdc00; + return wcsnrtombs (s, &wcp, 2, SIZE_MAX, ps); +} - if (wi >= 0x10000) - { - wi -= 0x10000; - wc[0] = (wi >> 10) + 0xd800; - wc[1] = (wi & 0x3ff) + 0xdc00; - nwc = 2; - } - return wcsnrtombs (s, &wcp, nwc, SIZE_MAX, ps); +extern "C" size_t +c16rtomb (char *s, char16_t wc, mbstate_t *ps) +{ + return wcrtomb (s, (wchar_t) wc, ps); } -/* replacement function for mbrtowc, returning a wint_t representing - a UTF-32 value. */ extern "C" size_t -mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) +mbrtoc32 (char32_t *pwc, const char *s, size_t n, mbstate_t *ps) { size_t len, len2; wchar_t w1, w2; @@ -159,8 +164,8 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) len = mbrtowc (&w1, s, n, ps); if (len == (size_t) -1 || len == (size_t) -2) return len; - if (pwi) - *pwi = w1; + if (pwc && s) + *pwc = w1; /* Convert surrogate pair to wint_t value */ if (len > 0 && w1 >= 0xd800 && w1 <= 0xdbff) { @@ -170,8 +175,8 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) if (len2 > 0 && w2 >= 0xdc00 && w2 <= 0xdfff) { len += len2; - if (pwi) - *pwi = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000; + if (pwc && s) + *pwc = (((w1 & 0x3ff) << 10) | (w2 & 0x3ff)) + 0x10000; } else { @@ -182,6 +187,64 @@ mbrtowi (wint_t *pwi, const char *s, size_t n, mbstate_t *ps) return len; } +/* Like mbrtowc, but we already defined how to return a surrogate, and + the definition of mbrtoc16 differes from that. + Return the high surrogate with a return value representing the length + of the entire multibyte sequence, and in the next call return the low + surrogate with a return value of -3. */ +extern "C" size_t +mbrtoc16 (char16_t *pwc, const char *s, size_t n, mbstate_t *ps) +{ + int retval = 0; + struct _reent *reent = _REENT; + wchar_t wc; + + if (ps == NULL) + { + _REENT_CHECK_MISC(reent); + ps = &(_REENT_MBRTOWC_STATE(reent)); + } + + if (s == NULL) + retval = __MBTOWC (reent, NULL, "", 1, ps); + else if (ps->__count == 0xdc00) + { + /* Return stored second half of the surrogate. */ + if (pwc) + *pwc = ps->__value.__wch; + ps->__count = 0; + return -3; + } + else + retval = __MBTOWC (reent, &wc, s, n, ps); + + if (retval == -1) + goto ilseq; + + if (pwc) + *pwc = wc; + /* Did we catch the first half of a surrogate? */ + if (wc >= 0xd800 && wc <= 0xdbff) + { + if (n <= (size_t) retval) + goto ilseq; + int r2 = __MBTOWC (reent, &wc, s + retval, n, ps); + if (r2 == -1) + goto ilseq; + /* Store second half of the surrogate in state, and return the + length of the entire multibyte sequence. */ + ps->__count = 0xdc00; + ps->__value.__wch = wc; + retval += r2; + } + return (size_t)retval; + +ilseq: + ps->__count = 0; + _REENT_ERRNO(reent) = EILSEQ; + return (size_t)(-1); +} + extern "C" size_t mbsnrtowci(wint_t *dst, const char **src, size_t nms, size_t len, mbstate_t *ps) { diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index f2e7a07731..b6d3e3a30a 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -50,6 +50,10 @@ Add support for GB18030 codeset. posix_spawn_file_actions_addfchdir_np. + +- New API calls: c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. + + From 0e711d6cc9b5206335fe8562817b6d5e6cad876e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 1 Aug 2023 14:16:40 +0200 Subject: [PATCH 363/767] Cygwin: autoload: introduce LoadDLLfunc_pfx_only This macro loads and defines a function just as usual, except that the Windows function is exposed only with the prefix _win32_. So Windows select (the immediate victim) is only exposed as _win32_select. That allows to autoload the windows function without collision with a Cygwin function of the same name. For a start, only define the most simple macro, setting all extensions to 0. Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index c8909caff4..c9ad92530c 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -123,6 +123,33 @@ _win32_" #name ": \n\ .asciz \"" #name "\" \n\ .text \n\ "); + +/* Do not export function "foo" as "foo". Only export it as "_win32_foo". + That allows to autoload and use a Windows function having the same name + as a Cygwin function. Namely select. */ +#define LoadDLLfunc_pfx_only(name, dllname) \ + LoadDLLprime (dllname, dll_func_load, 0) \ + __asm__ (" \n\ + .section ." #dllname "_autoload_text,\"wx\" \n\ + .global _win32_" #name " \n\ + .align 16 \n\ +_win32_" #name ": \n\ + movq 3f(%rip),%rax \n\ + jmp *%rax \n\ +1:movq 2f(%rip),%rax \n\ + push %rbp # Keep 16 byte aligned \n\ + push %r9 \n\ + push %r8 \n\ + push %rdx \n\ + push %rcx \n\ + call *(%rax) \n\ +2:.quad ." #dllname "_info \n\ + .hword 0 \n\ + .hword 0 \n\ +3:.quad 1b \n\ + .asciz \"" #name "\" \n\ + .text \n\ +"); #else #error unimplemented for this target #endif From dedbbd74d0a8f3b7dfae6188321703a47bb8a2b3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 1 Aug 2023 14:22:55 +0200 Subject: [PATCH 364/767] Cygwin: select: workaround FD_WRITE network event handling The FD_WRITE event is a false friend. It indicates ready to write even if the next send fails with WSAEWOULDBLOCK. *After* the fact, FD_WRITE will be cleared until sending is again possible, but that is too late for a select/write loop. Workaround that by using the WinSock select function when peeking at a socket and FD_WRITE gets indicated. WinSock select fortunately indicates writability correctly. Fixes: 70e476d27be8 ("(peek_socket): Use event handling for peeking socket.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 1 + winsup/cygwin/select.cc | 30 +++++++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index c9ad92530c..67149f8282 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -645,6 +645,7 @@ LoadDLLfunc (getsockname, ws2_32) LoadDLLfunc (getsockopt, ws2_32) LoadDLLfunc (ioctlsocket, ws2_32) LoadDLLfunc (listen, ws2_32) +LoadDLLfunc_pfx_only (select, ws2_32) LoadDLLfunc (setsockopt, ws2_32) LoadDLLfunc (shutdown, ws2_32) LoadDLLfunc (socket, ws2_32) diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index bad4c37f3b..7b9473849e 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1757,6 +1757,15 @@ fhandler_base::select_except (select_stuff *ss) return s; } +struct wfd_set +{ + u_int fd_count; + SOCKET fd_array[1]; +}; + +/* autoload exposes the Winsock select function only with a _win32_ prefix. */ +extern "C" int _win32_select(int, wfd_set *, wfd_set *, wfd_set *, TIMEVAL *); + static int peek_socket (select_record *me, bool) { @@ -1772,9 +1781,24 @@ peek_socket (select_record *me, bool) if (me->read_selected) me->read_ready |= ret || !!(events & (FD_READ | FD_ACCEPT | FD_CLOSE)); if (me->write_selected) - /* Don't check for FD_CLOSE here. Only an error case (ret == -1) - will set ready for writing. */ - me->write_ready |= ret || !!(events & (FD_WRITE | FD_CONNECT)); + { + /* The FD_WRITE event is a false friend. It indicates ready to write + even if the next send fails with WSAEWOULDBLOCK. *After* the fact, + FD_WRITE will be cleared until sending is again possible. + For the time being, workaround that here by using the WinSock + select function. It indicates writability correctly. */ + if (events & FD_WRITE) + { + wfd_set w = { 1, { fh->get_socket () } }; + TIMEVAL t = { 0 }; + + if (_win32_select (0, NULL, &w, NULL, &t) == 0) + events &= ~FD_WRITE; + } + /* Don't check for FD_CLOSE here. Only an error case (ret == -1) + will set ready for writing. */ + me->write_ready |= ret || !!(events & (FD_WRITE | FD_CONNECT)); + } if (me->except_selected) me->except_ready |= !!(events & FD_OOB); From 5ac83ea47a7acd704c2fb0dff1edb7f51f081e52 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 2 Aug 2023 14:31:53 +0900 Subject: [PATCH 365/767] newlib: Fix memory leak regarding gdtoa-based _ldtoa_r(). After the commit a4705d387f78, printf() for floating-point values causes a memory leak. The legacy _ldtoa_r() assumed the char pointer returned will be free'ed by Bfree(). However, gdtoa-based _ldtoa_r() returns the pointer returned by gdtoa() which should be free'ed by freedtoa(). Due to this issue, the caller of _ldtoa_r() fails to free the allocated char buffer. This is the cause of the said memory leak. https://cygwin.com/pipermail/cygwin/2023-July/254054.html This patch makes rv_alloc()/freedtoa() allocate/free the buffer in a compatible way with legacy _ldtoa_r(). Fixes: a4705d387f78 ("ldtoa: Import gdtoa from OpenBSD.") Reported-by: natan_b Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- newlib/libc/stdlib/gdtoa-dmisc.c | 23 +++++++++++++---------- newlib/libc/stdlib/gdtoa-ldtoa.c | 4 +--- winsup/cygwin/release/3.4.8 | 3 +++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/newlib/libc/stdlib/gdtoa-dmisc.c b/newlib/libc/stdlib/gdtoa-dmisc.c index 332023dae9..f330f8ae7d 100644 --- a/newlib/libc/stdlib/gdtoa-dmisc.c +++ b/newlib/libc/stdlib/gdtoa-dmisc.c @@ -46,26 +46,28 @@ rv_alloc(ptr, i) struct _reent *ptr, int i; rv_alloc(struct _reent *ptr, int i) #endif { - int j, k, *r; + int j; + char *r; + /* Allocate buffer in a compatible way with legacy _ldtoa_r(). */ j = sizeof(ULong); - for(k = 0; - sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= i; - j <<= 1) - k++; - r = (int*)Balloc(ptr, k); + for (_REENT_MP_RESULT_K (ptr) = 0; + sizeof (Bigint) - sizeof (ULong) + j <= i; j <<= 1) + _REENT_MP_RESULT_K (ptr)++; + _REENT_MP_RESULT (ptr) = eBalloc (ptr, _REENT_MP_RESULT_K (ptr)); + r = (char *) _REENT_MP_RESULT (ptr); + if (r == NULL) return ( #ifndef MULTIPLE_THREADS dtoa_result = #endif NULL); - *r = k; return #ifndef MULTIPLE_THREADS dtoa_result = #endif - (char *)(r+1); + r; } char * @@ -100,8 +102,9 @@ freedtoa(ptr, s) struct _reent *ptr, char *s; freedtoa(struct _reent *ptr, char *s) #endif { - Bigint *b = (Bigint *)((int *)s - 1); - b->_maxwds = 1 << (b->_k = *(int*)b); + /* Free buffer allocated in a compatible way with legacy _ldtoa_r(). */ + Bigint *b = (Bigint *)s; + b->_maxwds = 1 << (b->_k = _REENT_MP_RESULT_K (ptr)); Bfree(ptr, b); #ifndef MULTIPLE_THREADS if (s == dtoa_result) diff --git a/newlib/libc/stdlib/gdtoa-ldtoa.c b/newlib/libc/stdlib/gdtoa-ldtoa.c index 14b99042ce..09ba6b34b0 100644 --- a/newlib/libc/stdlib/gdtoa-ldtoa.c +++ b/newlib/libc/stdlib/gdtoa-ldtoa.c @@ -72,9 +72,7 @@ _ldtoa_r(struct _reent *ptr, /* reentrancy addition to use mprec storage pool */ if (_REENT_MP_RESULT (ptr)) { - _REENT_MP_RESULT (ptr)->_k = _REENT_MP_RESULT_K (ptr); - _REENT_MP_RESULT (ptr)->_maxwds = 1 << _REENT_MP_RESULT_K (ptr); - Bfree (ptr, _REENT_MP_RESULT (ptr)); + freedtoa (ptr, _REENT_MP_RESULT (ptr)); _REENT_MP_RESULT (ptr) = 0; } diff --git a/winsup/cygwin/release/3.4.8 b/winsup/cygwin/release/3.4.8 index d37272eef8..448831c65c 100644 --- a/winsup/cygwin/release/3.4.8 +++ b/winsup/cygwin/release/3.4.8 @@ -14,3 +14,6 @@ Bug Fixes - Rename internal macros _NL_CTYPE_OUTDIGITSx_MB/WC to GLibc compatible _NL_CTYPE_OUTDIGITx_MB/WC. Addresses: https://cygwin.com/pipermail/cygwin-developers/2023-July/012637.html + +- Fix memory leak in printf() regarding gdtoa-based _ldtoa_r(). + Addresses: https://cygwin.com/pipermail/cygwin/2023-July/254054.html From 8fbbc668a01db50c3735d396f6e021940f7b3834 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 2 Aug 2023 16:50:23 +0200 Subject: [PATCH 366/767] Cygwin: uchar.h: fix definition of uchar16_t and uchar32_t Per C++11, uchar16_t and uchar32_t are defined the same as uint_least16_t and uint_least32_t. Also, check for the C++ version to make sure that the types are not colliding with predefined c++ types. Fixes: 4f258c55e87f ("Cygwin: Add ISO C11 functions c16rtomb, c32rtomb, mbrtoc16, mbrtoc32.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/uchar.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/winsup/cygwin/include/uchar.h b/winsup/cygwin/include/uchar.h index 8402055370..bf865ff16e 100644 --- a/winsup/cygwin/include/uchar.h +++ b/winsup/cygwin/include/uchar.h @@ -6,6 +6,11 @@ typedef __uint16_t char16_t; typedef __uint32_t char32_t; +/* C++11 already defines those types. */ +#if !defined (__cplusplus) || (__cplusplus - 0 < 201103L) +typedef __uint_least16_t char16_t; +typedef __uint_least32_t char32_t; +#endif __BEGIN_DECLS From 290b56a87947620f171f65190616116fc1e0082c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 2 Aug 2023 16:52:27 +0200 Subject: [PATCH 367/767] sys/features.h: Define _ISOC2X_SOURCE and __ISO_C_VISIBLE Add feature test for C2X code. Add matching definitions _ISOC2X_SOURCE for requesting sources and __ISO_C_VISIBLE to be used in headers. Signed-off-by: Corinna Vinschen --- newlib/libc/include/sys/features.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h index 45476ce4ad..a7d4bc52d1 100644 --- a/newlib/libc/include/sys/features.h +++ b/newlib/libc/include/sys/features.h @@ -87,6 +87,9 @@ extern "C" { * _ISOC11_SOURCE or gcc -std=c11 or g++ -std=c++11 * ISO C11 * + * _ISOC2x_SOURCE or gcc -std=c2x or g++ -std=c++20 + * ISO C11 + * * _ATFILE_SOURCE (implied by _POSIX_C_SOURCE >= 200809L) * "at" functions * @@ -114,6 +117,8 @@ extern "C" { #define _ISOC99_SOURCE 1 #undef _ISOC11_SOURCE #define _ISOC11_SOURCE 1 +#undef _ISOC2X_SOURCE +#define _ISOC2X_SOURCE 1 #undef _POSIX_SOURCE #define _POSIX_SOURCE 1 #undef _POSIX_C_SOURCE @@ -215,6 +220,11 @@ extern "C" { * g++ -std=c++11 or newer (on by default since GCC 6), or with * _ISOC11_SOURCE. * + * __ISO_C_VISIBLE >= 2020 + * ISO C2x; enabled with gcc -std=c2x or newer, + * g++ -std=c++20 or newer, or with + * _ISOC2X_SOURCE. + * * __ATFILE_VISIBLE * "at" functions; enabled by default, with _ATFILE_SOURCE, * _POSIX_C_SOURCE >= 200809L, or _XOPEN_SOURCE >= 700. @@ -261,7 +271,10 @@ extern "C" { #define __GNU_VISIBLE 0 #endif -#if defined(_ISOC11_SOURCE) || \ +#if defined(_ISOC2X_SOURCE) || \ + (__STDC_VERSION__ - 0) > 201710L || (__cplusplus - 0) >= 202002L +#define __ISO_C_VISIBLE 2020 +#elif defined(_ISOC11_SOURCE) || \ (__STDC_VERSION__ - 0) >= 201112L || (__cplusplus - 0) >= 201103L #define __ISO_C_VISIBLE 2011 #elif defined(_ISOC99_SOURCE) || (_POSIX_C_SOURCE - 0) >= 200112L || \ From c49bc478b4a7e7d00a0c8540b8d6b6e99453443e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 2 Aug 2023 16:55:52 +0200 Subject: [PATCH 368/767] Cygwin: Add ISO C2X functions c8rtomb, mbrtoc8 Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 3 +- winsup/cygwin/include/uchar.h | 14 ++- winsup/cygwin/release/3.5.0 | 2 +- winsup/cygwin/strfuncs.cc | 166 +++++++++++++++++++++++++ winsup/doc/new-features.xml | 6 +- 5 files changed, 184 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 7bc3e5ec3b..833de646c5 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -482,12 +482,13 @@ details. */ 346: (Belatedly) add posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. 347: Add c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. + 348: Add c8rtomb, mbrtoc. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 346 +#define CYGWIN_VERSION_API_MINOR 348 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible changes are made to the shared diff --git a/winsup/cygwin/include/uchar.h b/winsup/cygwin/include/uchar.h index bf865ff16e..ed548ac736 100644 --- a/winsup/cygwin/include/uchar.h +++ b/winsup/cygwin/include/uchar.h @@ -4,8 +4,11 @@ #include #include -typedef __uint16_t char16_t; -typedef __uint32_t char32_t; +/* Either C2x or if C++ doesn't already define char8_t */ +#if __ISO_C_VISIBLE >= 2020 && !defined (__cpp_char8_t) +typedef unsigned char char8_t; +#endif + /* C++11 already defines those types. */ #if !defined (__cplusplus) || (__cplusplus - 0 < 201103L) typedef __uint_least16_t char16_t; @@ -14,6 +17,13 @@ typedef __uint_least32_t char32_t; __BEGIN_DECLS +/* Either C2x or if C++ defines char8_t */ +#if __ISO_C_VISIBLE >= 2020 || defined (__cpp_char8_t) +size_t c8rtomb(char * __restrict, char8_t, mbstate_t * __restrict); +size_t mbrtoc8(char8_t * __restrict, const char * __restrict, size_t, + mbstate_t * __restrict); +#endif + size_t c16rtomb(char * __restrict, char16_t, mbstate_t * __restrict); size_t mbrtoc16(char16_t * __restrict, const char * __restrict, size_t, mbstate_t * __restrict); diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 7c27e1bb8c..d71de50de5 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -27,7 +27,7 @@ What's new: - New API calls: posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. -- New API calls: c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. +- New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. What changed: ------------- diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 770d40ed8f..cbcd0ec464 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -155,6 +155,103 @@ c16rtomb (char *s, char16_t wc, mbstate_t *ps) return wcrtomb (s, (wchar_t) wc, ps); } +extern "C" size_t +c8rtomb (char *s, char8_t c8, mbstate_t *ps) +{ + struct _reent *reent = _REENT; + char32_t wc; + + if (ps == NULL) + { + _REENT_CHECK_MISC(reent); + ps = &(_REENT_MBRTOWC_STATE(reent)); + } + + if (s == NULL) + { + ps->__count = 0; + return 1; + } + if ((ps->__count & 0xff00) != 0xc800) + { + switch (c8) + { + case 0 ... 0x7f: /* single octet */ + ps->__count = 0; + wc = c8; + break; + case 0xc2 ... 0xf4: /* valid lead byte */ + ps->__count = 0xc801; + ps->__value.__wchb[0] = c8; + return 0; + default: + goto ilseq; + } + } + else + { + /* We already collected something... */ + int idx = ps->__count & 0x3; + char8_t &c1 = ps->__value.__wchb[0]; + char8_t &c2 = ps->__value.__wchb[1]; + char8_t &c3 = ps->__value.__wchb[2]; + + switch (idx) + { + case 1: + /* Annoyingly complex check for validity for 2nd octet. */ + if (c8 <= 0x7f || c8 >= 0xc0) + goto ilseq; + if (c1 == 0xe0 && c8 <= 0x9f) + goto ilseq; + if (c1 == 0xed && c8 >= 0xa0) + goto ilseq; + if (c1 == 0xf0 && c8 <= 0x8f) + goto ilseq; + if (c1 == 0xf4 && c8 >= 0x90) + goto ilseq; + if (c1 >= 0xe0) + { + ps->__count = 0xc802; + c2 = c8; + return 0; + } + wc = ((c1 & 0x1f) << 6) + | (c8 & 0x3f); + break; + case 2: + if (c8 <= 0x7f || c8 >= 0xc0) + goto ilseq; + if (c1 >= 0xf0) + { + ps->__count = 0xc803; + c3 = c8; + return 0; + } + wc = ((c1 & 0x0f) << 12) + | ((c2 & 0x3f) << 6) + | (c8 & 0x3f); + break; + case 3: + if (c8 <= 0x7f || c8 >= 0xc0) + goto ilseq; + wc = ((c1 & 0x07) << 18) + | ((c2 & 0x3f) << 12) + | ((c3 & 0x3f) << 6) + | (c8 & 0x3f); + break; + default: /* Shouldn't happen */ + goto ilseq; + } + } + ps->__count = 0; + return c32rtomb (s, wc, ps); +ilseq: + ps->__count = 0; + _REENT_ERRNO(reent) = EILSEQ; + return (size_t)(-1); +} + extern "C" size_t mbrtoc32 (char32_t *pwc, const char *s, size_t n, mbstate_t *ps) { @@ -245,6 +342,75 @@ mbrtoc16 (char16_t *pwc, const char *s, size_t n, mbstate_t *ps) return (size_t)(-1); } +extern "C" size_t +mbrtoc8 (char8_t *pc8, const char *s, size_t n, mbstate_t *ps) +{ + struct _reent *reent = _REENT; + size_t len; + char32_t wc; + + if (ps == NULL) + { + _REENT_CHECK_MISC(reent); + ps = &(_REENT_MBRTOWC_STATE(reent)); + } + + if (s == NULL) + { + if (ps) + ps->__count = 0; + return 1; + } + else if ((ps->__count & 0xff00) == 0xc800) + { + /* Return next utf-8 octet in line. */ + int idx = ps->__count & 0x3; + + if (pc8) + *pc8 = ps->__value.__wchb[--idx]; + if (idx == 0) + ps->__count = 0; + return -3; + } + len = mbrtoc32 (&wc, s, n, ps); + if (len > 0) + { + /* octets stored back to front for easier indexing */ + switch (wc) + { + case 0 ... 0x7f: + ps->__value.__wchb[0] = wc; + ps->__count = 0; + break; + case 0x80 ... 0x7ff: + ps->__value.__wchb[1] = 0xc0 | ((wc & 0x7c0) >> 6); + ps->__value.__wchb[0] = 0x80 | (wc & 0x3f); + ps->__count = 0xc800 | 1; + break; + case 0x800 ... 0xffff: + ps->__value.__wchb[2] = 0xe0 | ((wc & 0xf000) >> 12); + ps->__value.__wchb[1] = 0x80 | ((wc & 0xfc0) >> 6); + ps->__value.__wchb[0] = 0x80 | (wc & 0x3f); + ps->__count = 0xc800 | 2; + break; + case 0x10000 ... 0x10ffff: + ps->__value.__wchb[3] = 0xf0 | ((wc & 0x1c0000) >> 18); + ps->__value.__wchb[2] = 0x80 | ((wc & 0x3f000) >> 12); + ps->__value.__wchb[1] = 0x80 | ((wc & 0xfc0) >> 6); + ps->__value.__wchb[0] = 0x80 | (wc & 0x3f); + ps->__count = 0xc800 | 3; + break; + default: + ps->__count = 0; + _REENT_ERRNO(reent) = EILSEQ; + return (size_t)(-1); + } + if (pc8) + *pc8 = ps->__value.__wchb[ps->__count & 0x3]; + } + return len; +} + extern "C" size_t mbsnrtowci(wint_t *dst, const char **src, size_t nms, size_t len, mbstate_t *ps) { diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index b6d3e3a30a..14644aa85e 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -46,12 +46,12 @@ Add support for GB18030 codeset. -- New API calls: posix_spawn_file_actions_addchdir_np, - posix_spawn_file_actions_addfchdir_np. +New API calls: posix_spawn_file_actions_addchdir_np, +posix_spawn_file_actions_addfchdir_np. -- New API calls: c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. +New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. From 57e3e3d3abf6733567cc0f3d2a267a1dea21e9dd Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 22 Jul 2023 17:47:02 +0100 Subject: [PATCH 369/767] Cygwin: CI: don't run on both main and master refs --- .github/workflows/cygwin.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 1034495e60..378d1d14ad 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -1,6 +1,10 @@ name: cygwin -on: push +on: + push: + # since master is a symbolic reference to main, don't run for both + branches-ignore: + - 'master' jobs: fedora-build: From ab78bd2d228027d0ac5a84bfc409444d3ce18948 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 4 Aug 2023 17:42:18 +0900 Subject: [PATCH 370/767] newlib: gdtoa: Suppress compiler warning. Fixes: 5ac83ea47a7a ("newlib: Fix memory leak regarding gdtoa-based _ldtoa_r().") Signed-off-by: Takashi Yano --- newlib/libc/stdlib/gdtoa-ldtoa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/stdlib/gdtoa-ldtoa.c b/newlib/libc/stdlib/gdtoa-ldtoa.c index 09ba6b34b0..d5db270a67 100644 --- a/newlib/libc/stdlib/gdtoa-ldtoa.c +++ b/newlib/libc/stdlib/gdtoa-ldtoa.c @@ -72,7 +72,7 @@ _ldtoa_r(struct _reent *ptr, /* reentrancy addition to use mprec storage pool */ if (_REENT_MP_RESULT (ptr)) { - freedtoa (ptr, _REENT_MP_RESULT (ptr)); + freedtoa (ptr, (char *) _REENT_MP_RESULT (ptr)); _REENT_MP_RESULT (ptr) = 0; } From 3b4f6217c371cf70d5ec5137436cfa5892bb45e8 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 4 Aug 2023 17:45:34 +0900 Subject: [PATCH 371/767] Cygwin: pty: Fix thread safety of readahead buffer handling in pty master. Previously, though readahead buffer handling in pty master was not fully thread-safe, accept_input() was called from peek_pipe() thread in select.cc. This caused the problem reported in: https://cygwin.com/pipermail/cygwin/2023-July/253984.html The mechanism of the problem is: 1) accept_input() which is called from peek_pipe() thread calls eat_readahead(-1) before reading readahead buffer. This allows writing to the readahead buffer from another (main) thread. 2) The main thread calls fhandler_pty_master::write() just after eat_readahead(-1) was called and before reading the readahead buffer by accept_input() called from peek_pipe() thread. This overwrites the readahead buffer. 3) The read result from readahead buffer which was overwritten is sent to the slave. This patch makes readahead buffer handling fully thread-safe using input_mutex to resolve this issue. Fixes: 7b03b0d8cee0 ("select.cc (peek_pipe): Call flush_to_slave whenever we're checking for a pty master.") Reported-by: Thomas Wolff Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 10 +++++----- winsup/cygwin/local_includes/fhandler.h | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 8b8c42bc13..db3b77ecfd 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -436,8 +436,10 @@ static int osi; void fhandler_pty_master::flush_to_slave () { + WaitForSingleObject (input_mutex, mutex_timeout); if (get_readahead_valid () && !(get_ttyp ()->ti.c_lflag & ICANON)) accept_input (); + ReleaseMutex (input_mutex); } void @@ -523,8 +525,6 @@ fhandler_pty_master::accept_input () DWORD bytes_left; int ret = 1; - WaitForSingleObject (input_mutex, mutex_timeout); - char *p = rabuf () + raixget (); bytes_left = eat_readahead (-1); @@ -625,7 +625,6 @@ fhandler_pty_master::accept_input () if (write_to == get_output_handle ()) SetEvent (input_available_event); /* Set input_available_event only when the data is written to cyg pipe. */ - ReleaseMutex (input_mutex); return ret; } @@ -2235,9 +2234,9 @@ fhandler_pty_master::write (const void *ptr, size_t len) { /* This accept_input() call is needed in order to transfer input which is not accepted yet to non-cygwin pipe. */ + WaitForSingleObject (input_mutex, mutex_timeout); if (get_readahead_valid ()) accept_input (); - WaitForSingleObject (input_mutex, mutex_timeout); acquire_attach_mutex (mutex_timeout); fhandler_pty_slave::transfer_input (tty::to_nat, from_master, get_ttyp (), @@ -2305,9 +2304,10 @@ fhandler_pty_master::write (const void *ptr, size_t len) get_ttyp (), input_available_event); release_attach_mutex (); } - ReleaseMutex (input_mutex); line_edit_status status = line_edit (p, len, ti, &ret); + ReleaseMutex (input_mutex); + if (status > line_edit_signalled && status != line_edit_pipe_full) ret = -1; return ret; diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 661fe23dc2..03b51a7e48 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2572,6 +2572,14 @@ class fhandler_pty_master: public fhandler_pty_common int tcgetpgrp (); void flush_to_slave (); void discard_input (); + void acquire_input_mutex_if_necessary (DWORD ms) + { + WaitForSingleObject (input_mutex, ms); + } + void release_input_mutex_if_necessary (void) + { + ReleaseMutex (input_mutex); + } fhandler_pty_master (void *) {} From b12934540f17ba7c22923940e48bfbf02d0ae082 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Thu, 26 Jan 2023 16:28:22 -0800 Subject: [PATCH 372/767] : Decay expression passed to fallback version of __generic() This ensures that __generic() more closely matches _Generic() when using the fallback version when _Generic() is not available (such as GCC). Co-authored by: jrtc27 Reviewed by: jrtc27 Differential Revision: https://reviews.freebsd.org/D38215 --- newlib/libc/include/sys/cdefs.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/newlib/libc/include/sys/cdefs.h b/newlib/libc/include/sys/cdefs.h index 720e700920..808498c50b 100644 --- a/newlib/libc/include/sys/cdefs.h +++ b/newlib/libc/include/sys/cdefs.h @@ -328,6 +328,9 @@ * __generic(). Unlike _Generic(), this macro can only distinguish * between a single type, so it requires nested invocations to * distinguish multiple cases. + * + * Note that the comma operator is used to force expr to decay in + * order to match _Generic(). */ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ @@ -337,7 +340,7 @@ #elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus) #define __generic(expr, t, yes, no) \ __builtin_choose_expr( \ - __builtin_types_compatible_p(__typeof(expr), t), yes, no) + __builtin_types_compatible_p(__typeof((0, (expr))), t), yes, no) #endif /* From 3c75fac130b5720068707f67b12f4372abf4ad38 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Sun, 6 Aug 2023 16:27:27 +0300 Subject: [PATCH 373/767] sys/cdefs.h: fix for use __restrict in C++ Newlib shares large parts of with FreeBSD and received this bug report: https://sourceware.org/pipermail/newlib/2023/020400.html As an extension, GCC and clang offer C99-style restricted pointers in C++ mode: https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html We notice that this extension is broken when including newlib headers: restricted pointers are treated as ordinary pointers. We traced this to the following section of newlib/libc/include/sys/cdefs.h: /* * GCC 2.95 provides `__restrict' as an extension to C90 to support the * C99-specific `restrict' type qualifier. We happen to use `__restrict' as * a way to define the `restrict' type qualifier without disturbing older * software that is unaware of C99 keywords. */ #if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95) #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 #define __restrict #else #define __restrict restrict #endif #endif While the GCC __restrict extension was indeed introduced in GCC 2.95, it is not limited to this version; the extension is also not limited to C90: https://gcc.gnu.org/gcc-2.95/c++features.html Rewrite the logic in the header so that __restrict is kept alone when available. PR: 272723 MFC after: 1 week --- newlib/libc/include/sys/cdefs.h | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/newlib/libc/include/sys/cdefs.h b/newlib/libc/include/sys/cdefs.h index 808498c50b..cc1a8a1ccb 100644 --- a/newlib/libc/include/sys/cdefs.h +++ b/newlib/libc/include/sys/cdefs.h @@ -412,17 +412,15 @@ #endif /* - * GCC 2.95 provides `__restrict' as an extension to C90 to support the - * C99-specific `restrict' type qualifier. We happen to use `__restrict' as - * a way to define the `restrict' type qualifier without disturbing older - * software that is unaware of C99 keywords. + * We use `__restrict' as a way to define the `restrict' type qualifier + * without disturbing older software that is unaware of C99 keywords. + * GCC also provides `__restrict' as an extension to support C99-style + * restricted pointers in other language modes. */ -#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95) -#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 -#define __restrict -#else +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901 #define __restrict restrict -#endif +#elif !__GNUC_PREREQ__(2, 95) +#define __restrict #endif /* From e66c63be6b800ae19ff21fe2f5c12e231986acb6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 7 Aug 2023 15:59:42 +0200 Subject: [PATCH 374/767] sys/cdefs.h: introduce __restrict_arr, as in glibc C99 allows to define arrays as non-overlappiung using the restrict keyword. This is supported by GCC 3.1 and later, but it's not allowed in C++. This is in preparation of fixing a Cygwin build problem introduce by commit 3c75fac130b5. Signed-off-by: Corinna Vinschen --- newlib/libc/include/sys/cdefs.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/newlib/libc/include/sys/cdefs.h b/newlib/libc/include/sys/cdefs.h index cc1a8a1ccb..d13a92a79e 100644 --- a/newlib/libc/include/sys/cdefs.h +++ b/newlib/libc/include/sys/cdefs.h @@ -423,6 +423,19 @@ #define __restrict #endif +/* + * Additionally, we allow to use `__restrict_arr' for declaring arrays as + * non-overlapping per C99. That's supported since gcc 3.1, but it's not + * allowed in C++. + */ +#if defined(__cplusplus) || !__GNUC_PREREQ__(3, 1) +#define __restrict_arr +#elif defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L +#define __restrict_arr restrict +#else +#define __restrict_arr +#endif + /* * GNU C version 2.96 adds explicit branch prediction so that * the CPU back-end can hint the processor and also so that From 2e7332d6bd0219da491e899e0c3cee335ec8c9ab Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 7 Aug 2023 16:04:32 +0200 Subject: [PATCH 375/767] Cygwin: fix build failure due to redefinition of __restrict in sys/cdefs.h Commit 3c75fac130b5 fixed the __restrict definition in sys/cdefs.h, but uncovered a problem in the definition of lio_listio in Cygwin's aio.h. It uses the C99 extension of using the restrict keyword to define non-overlapping arrays. However, this is not allowed in C++. Use the newly defined __restrict_arr from commit e66c63be6b80 ("sys/cdefs.h: introduce __restrict_arr, as in glibc") Fixes: 3c75fac130b5 ("sys/cdefs.h: fix for use __restrict in C++" Signed-off-by: Corinna Vinschen --- winsup/cygwin/aio.cc | 2 +- winsup/cygwin/include/aio.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/aio.cc b/winsup/cygwin/aio.cc index 1c17aa7f65..c4b3389c46 100644 --- a/winsup/cygwin/aio.cc +++ b/winsup/cygwin/aio.cc @@ -905,7 +905,7 @@ aio_write (struct aiocb *aio) } int -lio_listio (int mode, struct aiocb *__restrict const aiolist[__restrict], +lio_listio (int mode, struct aiocb *__restrict const aiolist[__restrict_arr], int nent, struct sigevent *__restrict sig) { struct aiocb *aio; diff --git a/winsup/cygwin/include/aio.h b/winsup/cygwin/include/aio.h index 523a47870c..7ddd17e838 100644 --- a/winsup/cygwin/include/aio.h +++ b/winsup/cygwin/include/aio.h @@ -73,7 +73,7 @@ ssize_t aio_return (struct aiocb *); int aio_suspend (const struct aiocb *const [], int, const struct timespec *); int aio_write (struct aiocb *); -int lio_listio (int, struct aiocb *__restrict const [__restrict], int, +int lio_listio (int, struct aiocb *__restrict const [__restrict_arr], int, struct sigevent *__restrict); #ifdef __cplusplus From c88ac48eab3e9df4c7bb353af1b5dfd3798fa9f0 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 20 Jul 2023 13:54:09 +0100 Subject: [PATCH 376/767] Cygwin: testsuite: Add '-notimeout' option to cygrun Add '-notimeout' option for cygrun. This is very useful when using it to run a test standalone and under a debugger. Also: warn about excess arguments --- winsup/testsuite/cygrun.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index d8de7d1588..450201342a 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -23,24 +23,42 @@ main (int argc, char **argv) DWORD res; DWORD ec = 1; char *p; + DWORD timeout = 60 * 1000; if (argc < 2) { fprintf (stderr, "Usage: cygrun [program]\n"); - exit (0); + exit (1); + } + + int i; + for (i = 1; i < argc; ++i) + { + if (strcmp (argv[i], "-notimeout") == 0) + timeout = INFINITE; + else + break; + } + + char *command = argv[i]; + + if (i < (argc-1)) + { + fprintf (stderr, "cygrun: excess arguments\n"); + exit (1); } SetEnvironmentVariable ("CYGWIN_TESTING", "1"); memset (&sa, 0, sizeof (sa)); memset (&pi, 0, sizeof (pi)); - if (!CreateProcess (0, argv[1], 0, 0, 1, 0, 0, 0, &sa, &pi)) + if (!CreateProcess (0, command, 0, 0, 1, 0, 0, 0, &sa, &pi)) { - fprintf (stderr, "CreateProcess %s failed\n", argv[1]); + fprintf (stderr, "CreateProcess %s failed\n", command); exit (1); } - res = WaitForSingleObject (pi.hProcess, 60 * 1000); + res = WaitForSingleObject (pi.hProcess, timeout); if (res == WAIT_TIMEOUT) { From 718f37823dc8f5a738dcc8ee49e4e7b17671da56 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Mon, 10 Jul 2023 16:37:41 +0100 Subject: [PATCH 377/767] Cygwin: testsuite: Update README v2: Polish instructions on adding a test Signed-off-by: Jon Turney --- winsup/testsuite/README | 82 +++++++++++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 24 deletions(-) diff --git a/winsup/testsuite/README b/winsup/testsuite/README index ff2df4119c..511133e4d5 100644 --- a/winsup/testsuite/README +++ b/winsup/testsuite/README @@ -1,35 +1,69 @@ -Here are some notes about adding and using this testsuite. +Here are some notes about adding to and using this testsuite. -The testsuite adds a directory containing the just built cygwin1.dll to the PATH -(during the run step) so that it can be found by the Windows loader during -testing. +The testsuite adds a directory containing the just-built cygwin1.dll to the PATH +so that it can be found by the Windows loader during testing. -Because we'll probably run into complaints about using two DLLs, we -run cygrun.exe for each test. All this does is run the test with -CreateProcess() so that we don't attempt to do the special code for -when a cygwin program calls another cygwin program, as this might be a -"multiple cygwins" problem. +Because we'll probably run into complaints about using two DLLs, we use +cygrun.exe to run each test. All this does is run the test with CreateProcess() +so that we don't attempt to do the special code for when a cygwin program calls +another cygwin program, as this might be a "multiple cygwins" problem. -Any test that needs to test command line args or redirection needs to -run such a child program itself, as the testsuite will not do any -arguments or redirection for it. Same for fork, signals, etc. +The testsuite/winsup.api subdirectory is for testing the API to cygwin1.dll +ONLY. Create other subdirs under testsuite/ for other classes of testing. -The testsuite/winsup.api subdirectory is for testing the API to -cygwin1.dll ONLY. Create other subdirs under testsuite/ for other -classes of testing. +Tests in testsuite/winsup.api/pthread/ are derived from the pthread-win32 +testsuite. -Tests under winsup.api/ either run successfully and exit(0), exit(77) to -indicate a skipped test, or any other exit status to indicate a failure. +Tests in testsuite/winsup.api/ltp/ are derived from (a very old version of) the +ltp testsuite. Don't print anything to the screen if you can avoid it (except for failure -reasons, of course). One .c file per test, no compile options are allowed -(we're testing the api, not the compiler). +reasons, of course). -Tests whose filename is mentioned in XFAIL_TESTS are expected to fail, -effectively reversing the result of those. +"make check" will only work if you run it *on* an NT machine. Cross-checking is +not supported. -"make check" will only work if you run it *on* an NT machine. -Cross-checking is not supported. +Tests whose name is mentioned in XFAIL_TESTS are expected to fail, effectively +reversing the result of those. + +Adding a test +============= + +Add the source for the test under testsuite/winsup.api/. + +Add the additional tests program to check_PROGRAMS in testsuite/Makefile.am. + +(Note that if the test 'foo' has a single source file, foo.c, there's no need to +write a foo_SOURCES as that's the default Automake assumes.) + +Tests can use libltp, but's that not required. + +The Cygwin 'installation' that the tests are run in is minimal, so don't assume +anything is present. + +Any test that needs to test command line args or redirection needs to run such a +child program itself, as the testsuite will not do any arguments or redirection +for it. Same for fork, signals, etc. + +Tests should either run successfully and exit(0), exit(77) to indicate a skipped +test, or any other exit status to indicate a failure. + +Tips +==== + +* To run selected tests, use e.g: -To run selected tests, use e.g: $ make check TESTS="winsup.api/ltp/umask03 winsup.api/ltp/stat06" + +* To build the tests without running them, use the check_programs target, e.g: + +$ make -C winsup/testsuite/ check_programs + +* To run an individual test program directly (against the installed, rather than + just built DLL), e.g.: + +$ winsup/testsuite/winsup.api/pthread/cancel1 + +* To run an individual test program against the test DLL under gdb, e.g.: + +$ PATH="/winsup/testsuite/testinst/bin/:$PATH" cygrun -notimeout "gdb winsup.api/systemcall" From edda3aeaf54ad6786031419f83513b1a6f756d97 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 22 Jul 2023 20:54:49 +0100 Subject: [PATCH 378/767] Cygwin: testsuite: Fix cygload test Use cygrun to isolate the cygload test from the current DLL, which allows it to pass. --- winsup/testsuite/cygrun.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/testsuite/cygrun.sh b/winsup/testsuite/cygrun.sh index c82c1872bc..bf1d5cc6b5 100755 --- a/winsup/testsuite/cygrun.sh +++ b/winsup/testsuite/cygrun.sh @@ -11,7 +11,7 @@ export PATH="$runtime_root:${PATH}" if [ "$1" = "./mingw/cygload" ] then windows_runtime_root=$(cygpath -m $runtime_root) - $exe -v -cygwin $windows_runtime_root/cygwin1.dll + $cygrun "$exe -v -cygwin $windows_runtime_root/cygwin1.dll" else cygdrop $cygrun $exe fi From cbe7543cdfdb7f3d270214877d4a4c3e78710bd3 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 1 Aug 2023 15:34:28 +0100 Subject: [PATCH 379/767] Cygwin: CI: XFAIL umask03 umask03 fails in CI due to some not understood weirdness. --- winsup/testsuite/Makefile.am | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/testsuite/Makefile.am b/winsup/testsuite/Makefile.am index 8f2967a6dc..2289556682 100644 --- a/winsup/testsuite/Makefile.am +++ b/winsup/testsuite/Makefile.am @@ -333,12 +333,16 @@ TESTS = $(check_PROGRAMS) \ mingw/cygload # expected fail tests +XFAIL_TESTS_CI_true = \ + winsup.api/ltp/umask03$(EXEEXT) + XFAIL_TESTS = \ winsup.api/ltp/setgroups01 \ winsup.api/ltp/setuid02 \ winsup.api/ltp/ulimit01 \ winsup.api/ltp/unlink08 \ - winsup.api/samples/sample-fail + winsup.api/samples/sample-fail \ + $(XFAIL_TESTS_CI_$(GITHUB_ACTIONS)) # cygrun.sh test-runner script, and variables used by it: LOG_COMPILER = $(srcdir)/cygrun.sh From b9e867d088935d9f0bf312e6dbf3e4976850dfd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20SVENSSON?= Date: Tue, 8 Aug 2023 18:09:50 +0200 Subject: [PATCH 380/767] Add stub for getentropy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Example test case that fails with undefined reference to getentropy: Testing g++.robertl/eb77.C, -std=c++20 doing compile Executing on host: /build/gcc-13-2709-g9ac9fde961f/bin/arm-none-eabi-g++ /build/src/gcc/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C -mthumb -march=armv6s-m -mcpu=cortex-m0 -mfloat-abi=soft -fdiagnostics-plain-output -fmessage-length=0 -std=c++20 -pedantic-errors -Wno-long-long -Wl,--start-group -lc -lm -Wl,--end-group --specs=nosys.specs -Wl,--allow-multiple-definition -Wl,-u,_isatty,-u,_fstat -Wl,-wrap,exit -Wl,-wrap,_exit -Wl,-wrap,main -Wl,-wrap,abort -Wl,g++_tg.o -lm -o ./eb77.exe (timeout = 800) spawn -ignore SIGHUP /build/gcc-13-2709-g9ac9fde961f/bin/arm-none-eabi-g++ /build/src/gcc/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C -mthumb -march=armv6s-m -mcpu=cortex-m0 -mfloat-abi=soft -fdiagnostics-plain-output -fmessage-length=0 -std=c++20 -pedantic-errors -Wno-long-long -Wl,--start-group -lc -lm -Wl,--end-group --specs=nosys.specs -Wl,--allow-multiple-definition -Wl,-u,_isatty,-u,_fstat -Wl,-wrap,exit -Wl,-wrap,_exit -Wl,-wrap,main -Wl,-wrap,abort -Wl,g++_tg.o -lm -o ./eb77.exe pid is 28414 -28414 /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/bin/ld: /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a(random.o): in function `std::(anonymous namespace)::__libc_getentropy(void*)': (.text._ZNSt12_GLOBAL__N_117__libc_getentropyEPv+0x8): undefined reference to `getentropy' /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/bin/ld: /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a(random.o): in function `std::random_device::_M_init(std::__cxx11::basic_string, std::allocator > const&)': (.text._ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x58): undefined reference to `getentropy' /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/bin/ld: /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(libc_a-arc4random.o): in function `_rs_stir': (.text._rs_stir+0x8): undefined reference to `getentropy' collect2: error: ld returned 1 exit status pid is -1 close result is 28414 exp6 0 1 output is /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/bin/ld: /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a(random.o): in function `std::(anonymous namespace)::__libc_getentropy(void*)': (.text._ZNSt12_GLOBAL__N_117__libc_getentropyEPv+0x8): undefined reference to `getentropy' /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/bin/ld: /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a(random.o): in function `std::random_device::_M_init(std::__cxx11::basic_string, std::allocator > const&)': (.text._ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x58): undefined reference to `getentropy' /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/bin/ld: /build/gcc-13-2709-g9ac9fde961f/bin/../lib/gcc/arm-none-eabi/13.0.0/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(libc_a-arc4random.o): in function `_rs_stir': (.text._rs_stir+0x8): undefined reference to `getentropy' collect2: error: ld returned 1 exit status status 1 compiler exited with status 1 FAIL: g++.old-deja/g++.robertl/eb77.C -std=c++20 (test for excess errors) Excess errors: (.text._ZNSt12_GLOBAL__N_117__libc_getentropyEPv+0x8): undefined reference to `getentropy' (.text._ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x58): undefined reference to `getentropy' (.text._rs_stir+0x8): undefined reference to `getentropy' UNRESOLVED: g++.old-deja/g++.robertl/eb77.C -std=c++20 compilation failed to produce executable Contributed by STMicroelectronics Signed-off-by: Torbjörn SVENSSON --- libgloss/Makefile.in | 5 + libgloss/libnosys/Makefile.inc | 1 + libgloss/libnosys/getentropy.c | 21 ++++ newlib/Makefile.in | 147 +++++++++++++++++---------- newlib/libc/include/_syslist.h | 1 + newlib/libc/include/reent.h | 2 + newlib/libc/reent/Makefile.inc | 2 + newlib/libc/reent/getentropyr.c | 53 ++++++++++ newlib/libc/syscalls/Makefile.inc | 1 + newlib/libc/syscalls/sysgetentropy.c | 12 +++ 10 files changed, 191 insertions(+), 54 deletions(-) create mode 100644 libgloss/libnosys/getentropy.c create mode 100644 newlib/libc/reent/getentropyr.c create mode 100644 newlib/libc/syscalls/sysgetentropy.c diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 187d0edb00..7f46375c0c 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -409,6 +409,7 @@ libnosys_libnosys_a_LIBADD = @CONFIG_LIBNOSYS_TRUE@ libnosys/unlink.$(OBJEXT) \ @CONFIG_LIBNOSYS_TRUE@ libnosys/wait.$(OBJEXT) \ @CONFIG_LIBNOSYS_TRUE@ libnosys/write.$(OBJEXT) \ +@CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.$(OBJEXT) \ @CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.$(OBJEXT) libnosys_libnosys_a_OBJECTS = $(am_libnosys_libnosys_a_OBJECTS) libobjs_a_AR = $(AR) $(ARFLAGS) @@ -991,6 +992,7 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LIBNOSYS_TRUE@ libnosys/unlink.c \ @CONFIG_LIBNOSYS_TRUE@ libnosys/wait.c \ @CONFIG_LIBNOSYS_TRUE@ libnosys/write.c \ +@CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \ @CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c @CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \ @@ -1558,6 +1560,8 @@ libnosys/wait.$(OBJEXT): libnosys/$(am__dirstamp) \ libnosys/$(DEPDIR)/$(am__dirstamp) libnosys/write.$(OBJEXT): libnosys/$(am__dirstamp) \ libnosys/$(DEPDIR)/$(am__dirstamp) +libnosys/getentropy.$(OBJEXT): libnosys/$(am__dirstamp) \ + libnosys/$(DEPDIR)/$(am__dirstamp) libnosys/_exit.$(OBJEXT): libnosys/$(am__dirstamp) \ libnosys/$(DEPDIR)/$(am__dirstamp) @@ -1958,6 +1962,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/execve.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/fork.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/getentropy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/gettod.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/isatty.Po@am__quote@ diff --git a/libgloss/libnosys/Makefile.inc b/libgloss/libnosys/Makefile.inc index 5e69072e78..334f694af1 100644 --- a/libgloss/libnosys/Makefile.inc +++ b/libgloss/libnosys/Makefile.inc @@ -24,4 +24,5 @@ multilibtool_LIBRARIES += %D%/libnosys.a %D%/unlink.c \ %D%/wait.c \ %D%/write.c \ + %D%/getentropy.c \ %D%/_exit.c diff --git a/libgloss/libnosys/getentropy.c b/libgloss/libnosys/getentropy.c new file mode 100644 index 0000000000..5c4d3a8347 --- /dev/null +++ b/libgloss/libnosys/getentropy.c @@ -0,0 +1,21 @@ +/* + * Stub version of getentropy. + */ + +#include "config.h" +#include <_ansi.h> +#include <_syslist.h> +#include +#undef errno +extern int errno; +#include "warning.h" + +int +_getentropy (void *buf, + size_t buflen) +{ + errno = ENOSYS; + return -1; +} + +stub_warning(_getentropy) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 4d2b5e7825..6e5b0fbd6a 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -391,6 +391,7 @@ check_PROGRAMS = @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysclose.c \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysfcntl.c \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysfstat.c \ +@HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysgetentropy.c \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysgetpid.c \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysgettod.c \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/sysisatty.c \ @@ -1438,6 +1439,7 @@ am__objects_28 = libc/reent/libc_a-execr.$(OBJEXT) @HAVE_SYSCALL_DIR_TRUE@am__objects_44 = libc/syscalls/libc_a-sysclose.$(OBJEXT) \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/libc_a-sysfcntl.$(OBJEXT) \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/libc_a-sysfstat.$(OBJEXT) \ +@HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/libc_a-sysgetentropy.$(OBJEXT) \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/libc_a-sysgetpid.$(OBJEXT) \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/libc_a-sysgettod.$(OBJEXT) \ @HAVE_SYSCALL_DIR_TRUE@ libc/syscalls/libc_a-sysisatty.$(OBJEXT) \ @@ -2521,6 +2523,7 @@ am_libc_a_OBJECTS = $(am__objects_1) \ libc/reent/libc_a-impure.$(OBJEXT) \ libc/reent/libc_a-fcntlr.$(OBJEXT) \ libc/reent/libc_a-fstatr.$(OBJEXT) \ + libc/reent/libc_a-getentropyr.$(OBJEXT) \ libc/reent/libc_a-getreent.$(OBJEXT) \ libc/reent/libc_a-gettimeofdayr.$(OBJEXT) \ libc/reent/libc_a-isattyr.$(OBJEXT) \ @@ -4092,50 +4095,50 @@ libc_a_SOURCES = $(am__append_5) libc/stdlib/__adjust.c \ libc/locale/setlocale.h libc/locale/locale.c \ libc/locale/localeconv.c $(am__append_19) libc/reent/closer.c \ libc/reent/reent.c libc/reent/impure.c libc/reent/fcntlr.c \ - libc/reent/fstatr.c libc/reent/getreent.c \ - libc/reent/gettimeofdayr.c libc/reent/isattyr.c \ - libc/reent/linkr.c libc/reent/lseekr.c libc/reent/mkdirr.c \ - libc/reent/openr.c libc/reent/readr.c libc/reent/renamer.c \ - libc/reent/signalr.c libc/reent/sbrkr.c libc/reent/statr.c \ - libc/reent/timesr.c libc/reent/unlinkr.c libc/reent/writer.c \ - $(am__append_21) $(am__append_22) $(am__append_23) \ - libc/errno/errno.c libc/misc/__dprintf.c libc/misc/unctrl.c \ - libc/misc/ffs.c libc/misc/init.c libc/misc/fini.c \ - $(am__append_24) $(am__append_25) $(am__append_26) \ - $(am__append_27) $(am__append_28) $(am__append_29) \ - $(am__append_30) $(am__append_31) $(am__append_32) \ - $(am__append_33) $(am__append_34) $(am__append_35) \ - $(am__append_36) $(am__append_38) $(am__append_41) \ - $(am__append_42) $(am__append_43) $(am__append_44) \ - $(am__append_45) $(am__append_46) $(am__append_47) \ - $(am__append_48) $(am__append_49) $(am__append_50) \ - $(am__append_51) $(am__append_52) $(am__append_53) \ - $(am__append_54) $(am__append_55) $(am__append_56) \ - $(am__append_57) $(am__append_58) $(am__append_59) \ - $(am__append_60) $(am__append_61) $(am__append_62) \ - $(am__append_63) $(am__append_64) $(am__append_65) \ - $(am__append_66) $(am__append_67) $(am__append_68) \ - $(am__append_69) $(am__append_70) $(am__append_71) \ - $(am__append_73) $(am__append_74) $(am__append_75) \ - $(am__append_76) $(am__append_77) $(am__append_78) \ - $(am__append_79) $(am__append_80) $(am__append_81) \ - $(am__append_82) $(am__append_83) $(am__append_84) \ - $(am__append_85) $(am__append_86) $(am__append_87) \ - $(am__append_88) $(am__append_89) $(am__append_90) \ - $(am__append_91) $(am__append_92) $(am__append_93) \ - $(am__append_94) $(am__append_95) $(am__append_96) \ - $(am__append_97) $(am__append_98) $(am__append_99) \ - $(am__append_100) $(am__append_101) $(am__append_102) \ - $(am__append_103) $(am__append_104) $(am__append_105) \ - $(am__append_106) $(am__append_107) $(am__append_108) \ - $(am__append_109) $(am__append_110) $(am__append_111) \ - $(am__append_112) $(am__append_113) $(am__append_114) \ - $(am__append_115) $(am__append_116) $(am__append_117) \ - $(am__append_118) $(am__append_119) $(am__append_120) \ - $(am__append_121) $(am__append_122) $(am__append_123) \ - $(am__append_124) $(am__append_125) $(am__append_126) \ - $(am__append_127) $(am__append_128) $(am__append_129) \ - $(am__append_130) + libc/reent/fstatr.c libc/reent/getentropyr.c \ + libc/reent/getreent.c libc/reent/gettimeofdayr.c \ + libc/reent/isattyr.c libc/reent/linkr.c libc/reent/lseekr.c \ + libc/reent/mkdirr.c libc/reent/openr.c libc/reent/readr.c \ + libc/reent/renamer.c libc/reent/signalr.c libc/reent/sbrkr.c \ + libc/reent/statr.c libc/reent/timesr.c libc/reent/unlinkr.c \ + libc/reent/writer.c $(am__append_21) $(am__append_22) \ + $(am__append_23) libc/errno/errno.c libc/misc/__dprintf.c \ + libc/misc/unctrl.c libc/misc/ffs.c libc/misc/init.c \ + libc/misc/fini.c $(am__append_24) $(am__append_25) \ + $(am__append_26) $(am__append_27) $(am__append_28) \ + $(am__append_29) $(am__append_30) $(am__append_31) \ + $(am__append_32) $(am__append_33) $(am__append_34) \ + $(am__append_35) $(am__append_36) $(am__append_38) \ + $(am__append_41) $(am__append_42) $(am__append_43) \ + $(am__append_44) $(am__append_45) $(am__append_46) \ + $(am__append_47) $(am__append_48) $(am__append_49) \ + $(am__append_50) $(am__append_51) $(am__append_52) \ + $(am__append_53) $(am__append_54) $(am__append_55) \ + $(am__append_56) $(am__append_57) $(am__append_58) \ + $(am__append_59) $(am__append_60) $(am__append_61) \ + $(am__append_62) $(am__append_63) $(am__append_64) \ + $(am__append_65) $(am__append_66) $(am__append_67) \ + $(am__append_68) $(am__append_69) $(am__append_70) \ + $(am__append_71) $(am__append_73) $(am__append_74) \ + $(am__append_75) $(am__append_76) $(am__append_77) \ + $(am__append_78) $(am__append_79) $(am__append_80) \ + $(am__append_81) $(am__append_82) $(am__append_83) \ + $(am__append_84) $(am__append_85) $(am__append_86) \ + $(am__append_87) $(am__append_88) $(am__append_89) \ + $(am__append_90) $(am__append_91) $(am__append_92) \ + $(am__append_93) $(am__append_94) $(am__append_95) \ + $(am__append_96) $(am__append_97) $(am__append_98) \ + $(am__append_99) $(am__append_100) $(am__append_101) \ + $(am__append_102) $(am__append_103) $(am__append_104) \ + $(am__append_105) $(am__append_106) $(am__append_107) \ + $(am__append_108) $(am__append_109) $(am__append_110) \ + $(am__append_111) $(am__append_112) $(am__append_113) \ + $(am__append_114) $(am__append_115) $(am__append_116) \ + $(am__append_117) $(am__append_118) $(am__append_119) \ + $(am__append_120) $(am__append_121) $(am__append_122) \ + $(am__append_123) $(am__append_124) $(am__append_125) \ + $(am__append_126) $(am__append_127) $(am__append_128) \ + $(am__append_129) $(am__append_130) libc_a_CFLAGS = $(AM_CFLAGS) $(libc_a_CFLAGS_$(subst /,_,$(@D))) $(libc_a_CFLAGS_$(subst /,_,$(@D)_$( +#include +#include <_syslist.h> + +/* Some targets provides their own versions of these functions. Those + targets should define REENTRANT_SYSCALLS_PROVIDED in TARGET_CFLAGS. */ + +#ifdef _REENT_ONLY +#ifndef REENTRANT_SYSCALLS_PROVIDED +#define REENTRANT_SYSCALLS_PROVIDED +#endif +#endif + +#ifndef REENTRANT_SYSCALLS_PROVIDED + +/* We use the errno variable used by the system dependent layer. */ +#undef errno +extern int errno; + +/* +FUNCTION + <<_getentropy_r>>---Reentrant version of getentropy + +INDEX + _getentropy_r + +SYNOPSIS + #include + int _getentropy_r(struct _reent *<[ptr]>, + void *<[buf]>, size_t <[buflen]>); + +DESCRIPTION + This is a reentrant version of <>. It + takes a pointer to the global data block, which holds + <>. +*/ + +int +_getentropy_r (struct _reent *ptr, + void *buf, + size_t buflen) +{ + int ret; + + errno = 0; + if ((ret = _getentropy (buf, buflen)) == -1 && errno != 0) + _REENT_ERRNO(ptr) = errno; + return ret; +} + +#endif /* ! defined (REENTRANT_SYSCALLS_PROVIDED) */ diff --git a/newlib/libc/syscalls/Makefile.inc b/newlib/libc/syscalls/Makefile.inc index 627a4dfd2f..7f7bbbddb6 100644 --- a/newlib/libc/syscalls/Makefile.inc +++ b/newlib/libc/syscalls/Makefile.inc @@ -4,6 +4,7 @@ libc_a_SOURCES += \ %D%/sysclose.c \ %D%/sysfcntl.c \ %D%/sysfstat.c \ + %D%/sysgetentropy.c \ %D%/sysgetpid.c \ %D%/sysgettod.c \ %D%/sysisatty.c \ diff --git a/newlib/libc/syscalls/sysgetentropy.c b/newlib/libc/syscalls/sysgetentropy.c new file mode 100644 index 0000000000..d68ccbc72a --- /dev/null +++ b/newlib/libc/syscalls/sysgetentropy.c @@ -0,0 +1,12 @@ +/* connector for getentropy */ + +#include +#include +#include + +int +getentropy (void *buf, + size_t buflen) +{ + return _getentropy_r (_REENT, buf, buflen); +} From 07092a52e9516f0c341f7f3e5e6169c1e33b6fcc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Aug 2023 16:51:57 +0200 Subject: [PATCH 381/767] sys/unistd.h: define GNU extensions SEEK_DATA and SEEK_HOLE SEEK_DATA and SEEK_HOLE are GNU nonstandard extensions also present in Solaris, FreeBSD, and DragonFly BSD; they are proposed for inclusion in the next POSIX revision (Issue 8). Signed-off-by: Corinna Vinschen --- newlib/libc/include/sys/unistd.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/newlib/libc/include/sys/unistd.h b/newlib/libc/include/sys/unistd.h index 216d779d8a..8074077003 100644 --- a/newlib/libc/include/sys/unistd.h +++ b/newlib/libc/include/sys/unistd.h @@ -315,6 +315,10 @@ int unlinkat (int, const char *, int); # define SEEK_SET 0 # define SEEK_CUR 1 # define SEEK_END 2 +#if __GNU_VISIBLE +# define SEEK_DATA 3 +# define SEEK_HOLE 4 +#endif #include From 5b53633b5dd02adf7b2b00ac0b69906e4ea3ffe6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Aug 2023 16:56:02 +0200 Subject: [PATCH 382/767] Cygwin: clipboard: Only SEEK_SET and SEEK_CUR are supported Make sure of that, especially given the addition of SEEK_DATA and SEEK_HOLE. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/clipboard.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/winsup/cygwin/fhandler/clipboard.cc b/winsup/cygwin/fhandler/clipboard.cc index fe3545bf55..376d434407 100644 --- a/winsup/cygwin/fhandler/clipboard.cc +++ b/winsup/cygwin/fhandler/clipboard.cc @@ -322,6 +322,13 @@ fhandler_dev_clipboard::lseek (off_t offset, int whence) * On writes we use this to decide how to write - empty and write, or open, copy, empty * and write */ + if (whence == SEEK_CUR) + return 0; + if (whence != SEEK_SET) + { + set_errno (EINVAL); + return -1; + } pos = offset; /* treat seek like rewind */ if (membuffer) From b6fbe0fc2e062e6f0d155009da235574e39dbbe2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Aug 2023 16:56:40 +0200 Subject: [PATCH 383/767] Cygwin: lseek: propagate new SEEK_DATA and SEEK_HOLE to fhandler Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 04907b991c..e4b3dd2f3c 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1559,7 +1559,7 @@ lseek (int fd, off_t pos, int dir) { off_t res; - if (dir != SEEK_SET && dir != SEEK_CUR && dir != SEEK_END) + if (dir < SEEK_SET || dir > SEEK_HOLE) { set_errno (EINVAL); res = -1; From edfa581d3c5a783ace9f837be1cbaccb97330c34 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Aug 2023 17:18:14 +0200 Subject: [PATCH 384/767] Cygwin: lseek: implement SEEK_DATA and SEEK_HOLE for files Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 85 +++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index 9b49ec7b9e..d8351d7a64 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1109,7 +1109,7 @@ fhandler_base::lseek (off_t offset, int whence) } fpi.CurrentByteOffset.QuadPart += offset; break; - default: /* SEEK_END */ + case SEEK_END: status = NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, FileStandardInformation); if (!NT_SUCCESS (status)) @@ -1119,6 +1119,89 @@ fhandler_base::lseek (off_t offset, int whence) } fpi.CurrentByteOffset.QuadPart = fsi.EndOfFile.QuadPart + offset; break; + case SEEK_DATA: + case SEEK_HOLE: + { + FILE_ALLOCATED_RANGE_BUFFER inp, out; + + status = NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, + FileStandardInformation); + if (!NT_SUCCESS (status)) + { + __seterrno_from_nt_status (status); + return -1; + } + /* Per Linux man page, ENXIO if offset is beyond EOF */ + if (offset > fsi.EndOfFile.QuadPart) + { + set_errno (ENXIO); + return -1; + } + if (!pc.support_sparse ()) + { + /* Default behaviour if sparse files are not supported: + SEEK_DATA: seek to offset + SEEK_HOLE: seek to EOF */ + fpi.CurrentByteOffset.QuadPart = (whence == SEEK_DATA) + ? offset + : fsi.EndOfFile.QuadPart; + break; + } + inp.FileOffset.QuadPart = offset; + inp.Length.QuadPart = fsi.EndOfFile.QuadPart - offset; + /* Note that we only fetch a single region, so we expect the + function to fail with STATUS_BUFFER_OVERFLOW. It still + returns the data region containing offset, or the next + region after offset, if offset is within a hole. */ + status = NtFsControlFile (get_output_handle (), NULL, NULL, NULL, + &io, FSCTL_QUERY_ALLOCATED_RANGES, + &inp, sizeof inp, + &out, sizeof out); + if (!NT_SUCCESS (status) && status != STATUS_BUFFER_OVERFLOW) + { + /* On error, fall back to default behaviour, see above. */ + fpi.CurrentByteOffset.QuadPart = (whence == SEEK_DATA) + ? offset + : fsi.EndOfFile.QuadPart; + break; + } + if (io.Information == 0) + { + /* No valid region, so offset is within a hole at EOF. + SEEK_DATA: ENXIO + SEEK_HOLE: seek to offset */ + if (whence == SEEK_DATA) + { + set_errno (ENXIO); + return -1; + } + fpi.CurrentByteOffset.QuadPart = offset; + } + else if (out.FileOffset.QuadPart == offset) + { + /* offset within valid data range? In that case, that region + supposedly starts at offset, and the region length is corrected + accordingly. That's quite helpful. + SEEK_DATA: seek to offset + SEEK_HOLE: seek to end of range */ + fpi.CurrentByteOffset.QuadPart = offset; + if (whence == SEEK_HOLE) + fpi.CurrentByteOffset.QuadPart += out.Length.QuadPart; + } + else + { + /* Is range beyond offset? + SEEK_DATA: seek to start of range + SEEK_HOLE: seek to offset */ + fpi.CurrentByteOffset.QuadPart = (whence == SEEK_DATA) + ? out.FileOffset.QuadPart + : offset; + } + } + break; + default: /* Should never be reached */ + set_errno (EINVAL); + return -1; } debug_printf ("setting file pointer to %U", fpi.CurrentByteOffset.QuadPart); From 9939aa7d0945719dcf8856d28cd64a7a94fbd888 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Aug 2023 17:21:54 +0200 Subject: [PATCH 385/767] Cygwin: add SEEK_DATA/SEEK_HOLE addition to release message Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 2 ++ winsup/doc/new-features.xml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index d71de50de5..91c470442a 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -24,6 +24,8 @@ What's new: - Add support for GB18030 codeset. +- Add support for lseek flags SEEK_DATA and SEEK_HOLE, a GNU extension. + - New API calls: posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 14644aa85e..98ca7f595c 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -45,6 +45,10 @@ could do. Add support for GB18030 codeset. + +Add support for lseek flags SEEK_DATA and SEEK_HOLE, a GNU extension. + + New API calls: posix_spawn_file_actions_addchdir_np, posix_spawn_file_actions_addfchdir_np. From adc7eafa76e719d01823b6c929e468c14075ec95 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 9 Aug 2023 18:08:16 +0200 Subject: [PATCH 386/767] Cygwin: fhandler_base::lseek: fix formatting Fixes: edfa581d3c5a ("Cygwin: lseek: implement SEEK_DATA and SEEK_HOLE for files") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index d8351d7a64..3d348b5159 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1195,7 +1195,7 @@ fhandler_base::lseek (off_t offset, int whence) SEEK_HOLE: seek to offset */ fpi.CurrentByteOffset.QuadPart = (whence == SEEK_DATA) ? out.FileOffset.QuadPart - : offset; + : offset; } } break; From 3550d74823bfc17ca5a1a687350821421b0d74e1 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Thu, 10 Aug 2023 14:13:11 -0400 Subject: [PATCH 387/767] Add wildcard support to recurse into sys include directories --- newlib/Makefile.am | 31 ++++++++++++------------------ newlib/Makefile.in | 47 ++++++++++++++++++++-------------------------- 2 files changed, 32 insertions(+), 46 deletions(-) diff --git a/newlib/Makefile.am b/newlib/Makefile.am index a188845d6c..126cf24c12 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -110,6 +110,9 @@ AWK_UNIQUE_OBJS = $(AWK) '{ \ print objs[i]; \ }' +# Recursive Wildcard function +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d)) + # The functions ldexp, frexp and modf are traditionally supplied in # both libc.a and libm.a. We build them in libm.a and copy them over, # along with some required supporting routines. @@ -236,13 +239,11 @@ stmp-targ-include: config.status $(AM_V_at)s=machine/$(machine_dir)/sys d=sys $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=machine/$(machine_dir)/include d= $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/include d= $(TARG_INCLUDE_CP_DIR) - $(AM_V_at)for i in $(srcdir)/libc/sys/$(sys_dir)/include/*/; do \ - if [ -d $$i ]; then \ - d=`basename $$i`; \ - $(MKDIR_P) targ-include/$$d; \ - s=sys/${sys_dir}/include/$$d $(TARG_INCLUDE_CP_DIR) || exit $$?; \ - fi \ - done + $(AM_V_at)for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ + f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + $(MKDIR_P) targ-include/`dirname $$f`; \ + cp $$i targ-include/$$f; \ + done $(AM_V_at)s=sys/$(sys_dir)/sys d=sys $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/bits d=bits $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/machine d=machine $(TARG_INCLUDE_CP_DIR) @@ -332,18 +333,10 @@ install-data-local: install-toollibLIBRARIES install-multi $(INSTALL_DATA_LOCAL) $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \ else true; fi ; \ done ; \ - for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \ - if [ -f $$i ]; then \ - $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \ - else true; fi ; \ - done ; \ - for i in $(srcdir)/libc/sys/$(sys_dir)/include/*; do \ - if [ -d $$i ]; then \ - $(MKDIR_P) $(DESTDIR)$(tooldir)/include/`basename $$i`; \ - for j in $$i/*.h; do \ - $(INSTALL_DATA) $$j $(DESTDIR)$(tooldir)/include/`basename $$i`/`basename $$j`; \ - done ; \ - else true; fi ; \ + for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ + f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + $(MKDIR_P) $(DESTDIR)$(tooldir)/`dirname $$f`; \ + $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/`dirname $$f`; \ done ; \ for i in $(srcdir)/libc/sys/$(sys_dir)/machine/$(machine_dir)/include/*.h; do \ if [ -f $$i ]; then \ diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 6e5b0fbd6a..93a97b5fb9 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -912,18 +912,18 @@ check_PROGRAMS = @NEWLIB_HW_FP_FALSE@am__append_136 = libm/math/math.tex @HAVE_LONG_DOUBLE_TRUE@am__append_137 = $(libm_common_lsrc) @HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_138 = $(libm_ld_lsrc) -@HAVE_FPMATH_H_TRUE@am__append_139 = -@HAVE_FPMATH_H_TRUE@am__append_140 = +@HAVE_FPMATH_H_TRUE@am__append_139 = +@HAVE_FPMATH_H_TRUE@am__append_140 = @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_141 = $(libm_machine_aarch64_src) @HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_142 = $(libm_ld128_lsrc) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_143 = -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_144 = +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_143 = +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_144 = @HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_145 = $(libm_machine_amdgcn_src) @HAVE_LIBM_MACHINE_ARM_TRUE@am__append_146 = $(libm_machine_arm_src) @HAVE_LIBM_MACHINE_I386_TRUE@am__append_147 = $(libm_machine_i386_src) @HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_148 = $(libm_ld80_lsrc) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_149 = -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_150 = +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_149 = +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_150 = @HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_151 = $(libm_machine_mips_src) @HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_152 = libm/machine/nds32/wf_sqrt.S @HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_153 = libm/machine/nds32/w_sqrt.S @@ -935,8 +935,8 @@ check_PROGRAMS = @HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_159 = $(libm_machine_riscv_src) @HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_160 = $(libm_machine_x86_64_src) @HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_161 = $(libm_ld80_lsrc) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_162 = -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_163 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_162 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_163 = subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -3968,6 +3968,9 @@ AWK_UNIQUE_OBJS = $(AWK) '{ \ }' +# Recursive Wildcard function +rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d)) + # The functions ldexp, frexp and modf are traditionally supplied in # both libc.a and libm.a. We build them in libm.a and copy them over, # along with some required supporting routines. @@ -49971,13 +49974,11 @@ stmp-targ-include: config.status $(AM_V_at)s=machine/$(machine_dir)/sys d=sys $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=machine/$(machine_dir)/include d= $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/include d= $(TARG_INCLUDE_CP_DIR) - $(AM_V_at)for i in $(srcdir)/libc/sys/$(sys_dir)/include/*/; do \ - if [ -d $$i ]; then \ - d=`basename $$i`; \ - $(MKDIR_P) targ-include/$$d; \ - s=sys/${sys_dir}/include/$$d $(TARG_INCLUDE_CP_DIR) || exit $$?; \ - fi \ - done + $(AM_V_at)for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ + f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + $(MKDIR_P) targ-include/`dirname $$f`; \ + cp $$i targ-include/$$f; \ + done $(AM_V_at)s=sys/$(sys_dir)/sys d=sys $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/bits d=bits $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/machine d=machine $(TARG_INCLUDE_CP_DIR) @@ -50062,18 +50063,10 @@ install-data-local: install-toollibLIBRARIES install-multi $(INSTALL_DATA_LOCAL) $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/machine/`basename $$i`; \ else true; fi ; \ done ; \ - for i in $(srcdir)/libc/sys/$(sys_dir)/include/*.h; do \ - if [ -f $$i ]; then \ - $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/`basename $$i`; \ - else true; fi ; \ - done ; \ - for i in $(srcdir)/libc/sys/$(sys_dir)/include/*; do \ - if [ -d $$i ]; then \ - $(MKDIR_P) $(DESTDIR)$(tooldir)/include/`basename $$i`; \ - for j in $$i/*.h; do \ - $(INSTALL_DATA) $$j $(DESTDIR)$(tooldir)/include/`basename $$i`/`basename $$j`; \ - done ; \ - else true; fi ; \ + for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ + f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + $(MKDIR_P) $(DESTDIR)$(tooldir)/`dirname $$f`; \ + $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/`dirname $$f`; \ done ; \ for i in $(srcdir)/libc/sys/$(sys_dir)/machine/$(machine_dir)/include/*.h; do \ if [ -f $$i ]; then \ From 7374b46bfd5ca551febf7883f6fce22f27a18aa8 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 8 Aug 2023 16:38:20 +0100 Subject: [PATCH 388/767] Cygwin: testsuite: Add a small delay in kill01 Avoid transient failures by adding a small delay after fork()-ing to allow the child to get into a state where it can recieve signals. Also add same small delay to kill03 and kill04. kill02 has a more elaborate setup where child processes write to a pipe to indicate they have started. --- winsup/testsuite/winsup.api/ltp/kill01.c | 1 + winsup/testsuite/winsup.api/ltp/kill03.c | 1 + winsup/testsuite/winsup.api/ltp/kill04.c | 1 + 3 files changed, 3 insertions(+) diff --git a/winsup/testsuite/winsup.api/ltp/kill01.c b/winsup/testsuite/winsup.api/ltp/kill01.c index 042899173c..5f0a32ba97 100644 --- a/winsup/testsuite/winsup.api/ltp/kill01.c +++ b/winsup/testsuite/winsup.api/ltp/kill01.c @@ -102,6 +102,7 @@ main(int ac, char **av) /*NOTREACHED*/ exit(exno); } else { + usleep(1000); TEST(kill(pid, TEST_SIG)); waitpid(pid, &status, 0); } diff --git a/winsup/testsuite/winsup.api/ltp/kill03.c b/winsup/testsuite/winsup.api/ltp/kill03.c index 1de727fd7b..eb75fdb383 100644 --- a/winsup/testsuite/winsup.api/ltp/kill03.c +++ b/winsup/testsuite/winsup.api/ltp/kill03.c @@ -106,6 +106,7 @@ main(int ac, char **av) /*NOTREACHED*/ exit(exno); } else { + usleep(1000); TEST(kill(pid, TEST_SIG)); kill(pid, SIGKILL); waitpid(pid, &status, 0); diff --git a/winsup/testsuite/winsup.api/ltp/kill04.c b/winsup/testsuite/winsup.api/ltp/kill04.c index a7b3274c32..c3314f35dc 100644 --- a/winsup/testsuite/winsup.api/ltp/kill04.c +++ b/winsup/testsuite/winsup.api/ltp/kill04.c @@ -114,6 +114,7 @@ main(int ac, char **av) /*NOTREACHED*/ exit(exno); } + usleep(1000); kill(fake_pid, TEST_SIG); waitpid(fake_pid, &fake_status, 0); TEST(kill(fake_pid, TEST_SIG)); From 1a646ad7970a2cd3a1c931af4217cc17fc576116 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 10 Aug 2023 20:50:00 +0100 Subject: [PATCH 389/767] Cygwin: testsuite: Tweak lseek03 after addition of SEEK_HOLE After addition of SEEK_HOLE, the whence of *4* is not an invalid argument, causing the test to FAIL. See ltp commit 423e636a4c8f ("lseek03: change to fix with the lseek syscall") --- winsup/testsuite/winsup.api/ltp/lseek03.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/testsuite/winsup.api/ltp/lseek03.c b/winsup/testsuite/winsup.api/ltp/lseek03.c index 51c303d85c..06bbcc32b4 100644 --- a/winsup/testsuite/winsup.api/ltp/lseek03.c +++ b/winsup/testsuite/winsup.api/ltp/lseek03.c @@ -129,7 +129,7 @@ char fname[255]; int fd; int Rec_sigsys = 0; -int Whences[] = { 4, -1, 7 }; +int Whences[] = { 5, -1, 7 }; int main(int ac, char **av) From b5111e46424b693e04bc0e964a01f871a71c26ef Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Aug 2023 22:30:59 +0200 Subject: [PATCH 390/767] struct _reent: add state for unicode functions C23 requires that the unicode functions c16rtomb, c8rtomb, mbrtoc16, mbrtoc32 and mbrtoc8 use their own internal state object. c32rtomb only needs an internal state if the lib supports encoding with shift states, but that's the case for newlib and Cygwin. Only Cygwin implements these functions so add the states objects only for Cygwin for now. Signed-off-by: Corinna Vinschen --- newlib/libc/include/sys/reent.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index c71f75dbc2..a6c923f1cf 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -622,6 +622,14 @@ struct _reent _mbstate_t _wcrtomb_state; _mbstate_t _wcsrtombs_state; int _h_errno; +#ifdef __CYGWIN__ + _mbstate_t _c8rtomb_state; + _mbstate_t _c16rtomb_state; + _mbstate_t _c32rtomb_state; + _mbstate_t _mbrtoc8_state; + _mbstate_t _mbrtoc16_state; + _mbstate_t _mbrtoc32_state; +#endif } _reent; #ifdef _REENT_BACKWARD_BINARY_COMPAT struct @@ -730,6 +738,14 @@ struct _reent #define _REENT_MBSRTOWCS_STATE(ptr)((ptr)->_new._reent._mbsrtowcs_state) #define _REENT_WCRTOMB_STATE(ptr)((ptr)->_new._reent._wcrtomb_state) #define _REENT_WCSRTOMBS_STATE(ptr)((ptr)->_new._reent._wcsrtombs_state) +#ifdef __CYGWIN__ +# define _REENT_C8RTOMB_STATE(ptr)((ptr)->_new._reent._c8rtomb_state) +# define _REENT_C16RTOMB_STATE(ptr)((ptr)->_new._reent._c16rtomb_state) +# define _REENT_C32RTOMB_STATE(ptr)((ptr)->_new._reent._c32rtomb_state) +# define _REENT_MBRTOC8_STATE(ptr)((ptr)->_new._reent._mbrtoc8_state) +# define _REENT_MBRTOC16_STATE(ptr)((ptr)->_new._reent._mbrtoc16_state) +# define _REENT_MBRTOC32_STATE(ptr)((ptr)->_new._reent._mbrtoc32_state) +#endif #define _REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf) #define _REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf) #define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err)) From 46c4a9072436b01f9239bbac2e9a24bc08755026 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 15 Aug 2023 22:34:29 +0200 Subject: [PATCH 391/767] Cygwin: cXXrtomb, mbrtcXX: use function-specific internal state As described in the previous commit b5111e46424b ("struct _reent: add state for unicode functions") every unicode conversion function has to use their own state object, if the state parameter is NULL. Fixes: 4f258c55e87f ("Cygwin: Add ISO C11 functions c16rtomb, c32rtomb, mbrtoc16, mbrtoc32.") Fixes: c49bc478b4a7 ("Cygwin: Add ISO C2X functions c8rtomb, mbrtoc8") Signed-off-by: Corinna Vinschen --- winsup/cygwin/strfuncs.cc | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index cbcd0ec464..66667bdb3a 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -135,6 +135,12 @@ wcintowcs (wchar_t *dest, wint_t *src, size_t len) extern "C" size_t c32rtomb (char *s, char32_t wc, mbstate_t *ps) { + if (ps == NULL) + { + _REENT_CHECK_MISC(_REENT); + ps = &(_REENT_C32RTOMB_STATE(_REENT)); + } + /* If s is NULL, behave as if s pointed to an internal buffer and wc was a null wide character (L''). wcrtomb will do that for us*/ if (wc <= 0xffff || !s) @@ -152,6 +158,12 @@ c32rtomb (char *s, char32_t wc, mbstate_t *ps) extern "C" size_t c16rtomb (char *s, char16_t wc, mbstate_t *ps) { + if (ps == NULL) + { + _REENT_CHECK_MISC(_REENT); + ps = &(_REENT_C16RTOMB_STATE(_REENT)); + } + return wcrtomb (s, (wchar_t) wc, ps); } @@ -164,7 +176,7 @@ c8rtomb (char *s, char8_t c8, mbstate_t *ps) if (ps == NULL) { _REENT_CHECK_MISC(reent); - ps = &(_REENT_MBRTOWC_STATE(reent)); + ps = &(_REENT_C8RTOMB_STATE(reent)); } if (s == NULL) @@ -258,6 +270,12 @@ mbrtoc32 (char32_t *pwc, const char *s, size_t n, mbstate_t *ps) size_t len, len2; wchar_t w1, w2; + if (ps == NULL) + { + _REENT_CHECK_MISC(_REENT); + ps = &(_REENT_MBRTOC32_STATE(_REENT)); + } + len = mbrtowc (&w1, s, n, ps); if (len == (size_t) -1 || len == (size_t) -2) return len; @@ -299,7 +317,7 @@ mbrtoc16 (char16_t *pwc, const char *s, size_t n, mbstate_t *ps) if (ps == NULL) { _REENT_CHECK_MISC(reent); - ps = &(_REENT_MBRTOWC_STATE(reent)); + ps = &(_REENT_MBRTOC16_STATE(reent)); } if (s == NULL) @@ -352,7 +370,7 @@ mbrtoc8 (char8_t *pc8, const char *s, size_t n, mbstate_t *ps) if (ps == NULL) { _REENT_CHECK_MISC(reent); - ps = &(_REENT_MBRTOWC_STATE(reent)); + ps = &(_REENT_MBRTOC8_STATE(reent)); } if (s == NULL) From 2ee8de782b809c83c4261cc6e7e17bdaf31cff96 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 14 Aug 2023 19:48:12 +0900 Subject: [PATCH 392/767] Cygwin: pty: Add missing pinfo check in transfer_input(). The commit 10d083c745dd has a bug that lacks a check for pinfo pointer value for master_pid. This causes segmentation fault if the process whose pid is master_pid no longer exists. This patch fixes the issue. Fixes: 10d083c745dd ("Cygwin: pty: Inherit typeahead data between two input pipes.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index db3b77ecfd..607333f524 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -3835,7 +3835,9 @@ fhandler_pty_slave::transfer_input (tty::xfer_dir dir, HANDLE from, tty *ttyp, to = ttyp->to_slave (); pinfo p (ttyp->master_pid); - HANDLE pty_owner = OpenProcess (PROCESS_DUP_HANDLE, FALSE, p->dwProcessId); + HANDLE pty_owner = NULL; + if (p) + pty_owner = OpenProcess (PROCESS_DUP_HANDLE, FALSE, p->dwProcessId); if (pty_owner) { DuplicateHandle (pty_owner, to, GetCurrentProcess (), &to, From 65d34484e9097fd9036dd577028423355cb5f5bc Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 16 Aug 2023 08:00:27 +0900 Subject: [PATCH 393/767] Cygwin: shared: Fix access permissions setting in open_shared(). After the commit 93508e5bb841, the access permissions argument passed to open_shared() is ignored and always replaced with (FILE_MAP_READ | FILE_MAP_WRITE). This causes the weird behaviour that sshd service process loses its cygwin PID. This triggers the failure in pty that transfer_input() does not work properly. This patch resumes the access permission settings to fix that. Fixes: 93508e5bb841 ("Cygwin: open_shared: don't reuse shared_locations parameter as output") Reviewed-by: Corinna Vinschen Signedd-off-by: Takashi Yano --- winsup/cygwin/mm/shared.cc | 6 ++---- winsup/cygwin/release/3.4.8 | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/mm/shared.cc b/winsup/cygwin/mm/shared.cc index 40cdd47228..7977df382a 100644 --- a/winsup/cygwin/mm/shared.cc +++ b/winsup/cygwin/mm/shared.cc @@ -139,8 +139,7 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, if (name) mapname = shared_name (map_buf, name, n); if (m == SH_JUSTOPEN) - shared_h = OpenFileMappingW (FILE_MAP_READ | FILE_MAP_WRITE, FALSE, - mapname); + shared_h = OpenFileMappingW (access, FALSE, mapname); else { created = true; @@ -165,8 +164,7 @@ open_shared (const WCHAR *name, int n, HANDLE& shared_h, DWORD size, do { addr = (void *) next_address; - shared = MapViewOfFileEx (shared_h, FILE_MAP_READ | FILE_MAP_WRITE, - 0, 0, 0, addr); + shared = MapViewOfFileEx (shared_h, access, 0, 0, 0, addr); next_address += wincap.allocation_granularity (); if (next_address >= SHARED_REGIONS_ADDRESS_HIGH) { diff --git a/winsup/cygwin/release/3.4.8 b/winsup/cygwin/release/3.4.8 index 448831c65c..8cd3eb14be 100644 --- a/winsup/cygwin/release/3.4.8 +++ b/winsup/cygwin/release/3.4.8 @@ -17,3 +17,6 @@ Bug Fixes - Fix memory leak in printf() regarding gdtoa-based _ldtoa_r(). Addresses: https://cygwin.com/pipermail/cygwin/2023-July/254054.html + +- Fix a bug introduced in cygwin 3.4.5 that open_shared() does not set + access permissions as requested by its argument. From 7ba103eb1a95703c7803e4ca48e6ba5c8e1f3d56 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Thu, 17 Aug 2023 02:05:53 +0400 Subject: [PATCH 394/767] newlib: add Xtensa port --- newlib/Makefile.in | 942 +++++++++++++----- newlib/configure | 102 ++ newlib/configure.host | 13 + newlib/libc/acinclude.m4 | 4 +- newlib/libc/include/machine/ieeefp.h | 4 + newlib/libc/include/machine/setjmp.h | 29 + newlib/libc/machine/Makefile.inc | 3 + newlib/libc/machine/xtensa/Makefile.inc | 8 + newlib/libc/machine/xtensa/acinclude.m4 | 1 + newlib/libc/machine/xtensa/memcpy.S | 343 +++++++ newlib/libc/machine/xtensa/memset.S | 193 ++++ newlib/libc/machine/xtensa/setjmp.S | 252 +++++ newlib/libc/machine/xtensa/strcmp.S | 353 +++++++ newlib/libc/machine/xtensa/strcpy.S | 274 +++++ newlib/libc/machine/xtensa/strlen.S | 115 +++ newlib/libc/machine/xtensa/strncpy.S | 274 +++++ newlib/libc/machine/xtensa/xtensa-asm.h | 72 ++ newlib/libc/machine/xtensa/xtensa.tex | 72 ++ newlib/libc/sys/Makefile.inc | 3 + newlib/libc/sys/xtensa/Makefile.inc | 1 + newlib/libc/sys/xtensa/clibrary_init.c | 42 + newlib/libc/sys/xtensa/creat.c | 9 + newlib/libc/sys/xtensa/crt0.c | 16 + newlib/libc/sys/xtensa/include/fenv.h | 88 ++ newlib/libc/sys/xtensa/include/unistd.h | 13 + .../xtensa/include/xtensa/config/core-isa.h | 115 +++ newlib/libc/sys/xtensa/isatty.c | 18 + newlib/libc/sys/xtensa/sys/file.h | 33 + newlib/libm/Makefile.inc | 3 + newlib/libm/acinclude.m4 | 3 +- newlib/libm/machine/xtensa/Makefile.inc | 12 + newlib/libm/machine/xtensa/acinclude.m4 | 11 + newlib/libm/machine/xtensa/ef_sqrt.c | 7 + newlib/libm/machine/xtensa/feclearexcept.c | 48 + newlib/libm/machine/xtensa/fegetenv.c | 55 + newlib/libm/machine/xtensa/fegetexcept.c | 67 ++ newlib/libm/machine/xtensa/fegetexceptflag.c | 63 ++ newlib/libm/machine/xtensa/fegetround.c | 50 + newlib/libm/machine/xtensa/feholdexcept.c | 54 + newlib/libm/machine/xtensa/feraiseexcept.c | 49 + newlib/libm/machine/xtensa/fetestexcept.c | 41 + newlib/libm/machine/xtensa/feupdateenv.c | 46 + 42 files changed, 3646 insertions(+), 255 deletions(-) create mode 100644 newlib/libc/machine/xtensa/Makefile.inc create mode 100644 newlib/libc/machine/xtensa/acinclude.m4 create mode 100644 newlib/libc/machine/xtensa/memcpy.S create mode 100644 newlib/libc/machine/xtensa/memset.S create mode 100644 newlib/libc/machine/xtensa/setjmp.S create mode 100644 newlib/libc/machine/xtensa/strcmp.S create mode 100644 newlib/libc/machine/xtensa/strcpy.S create mode 100644 newlib/libc/machine/xtensa/strlen.S create mode 100644 newlib/libc/machine/xtensa/strncpy.S create mode 100644 newlib/libc/machine/xtensa/xtensa-asm.h create mode 100644 newlib/libc/machine/xtensa/xtensa.tex create mode 100644 newlib/libc/sys/xtensa/Makefile.inc create mode 100644 newlib/libc/sys/xtensa/clibrary_init.c create mode 100644 newlib/libc/sys/xtensa/creat.c create mode 100644 newlib/libc/sys/xtensa/crt0.c create mode 100644 newlib/libc/sys/xtensa/include/fenv.h create mode 100644 newlib/libc/sys/xtensa/include/unistd.h create mode 100644 newlib/libc/sys/xtensa/include/xtensa/config/core-isa.h create mode 100644 newlib/libc/sys/xtensa/isatty.c create mode 100644 newlib/libc/sys/xtensa/sys/file.h create mode 100644 newlib/libm/machine/xtensa/Makefile.inc create mode 100644 newlib/libm/machine/xtensa/acinclude.m4 create mode 100644 newlib/libm/machine/xtensa/ef_sqrt.c create mode 100644 newlib/libm/machine/xtensa/feclearexcept.c create mode 100644 newlib/libm/machine/xtensa/fegetenv.c create mode 100644 newlib/libm/machine/xtensa/fegetexcept.c create mode 100644 newlib/libm/machine/xtensa/fegetexceptflag.c create mode 100644 newlib/libm/machine/xtensa/fegetround.c create mode 100644 newlib/libm/machine/xtensa/feholdexcept.c create mode 100644 newlib/libm/machine/xtensa/feraiseexcept.c create mode 100644 newlib/libm/machine/xtensa/fetestexcept.c create mode 100644 newlib/libm/machine/xtensa/feupdateenv.c diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 93a97b5fb9..6c7a7aeea4 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -585,8 +585,9 @@ check_PROGRAMS = @HAVE_LIBC_SYS_TIRTOS_DIR_TRUE@am__append_62 = libc/sys/tirtos/lock.c @HAVE_LIBC_SYS_W65_DIR_TRUE@am__append_63 = libc/sys/w65/syscalls.c libc/sys/w65/trap.c -@HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE@am__append_64 = libc/sys/z8ksim/glue.c -@HAVE_LIBC_MACHINE_AARCH64_TRUE@am__append_65 = \ +@HAVE_LIBC_SYS_XTENSA_DIR_TRUE@am__append_64 = libc/sys/xtensa/creat.c libc/sys/xtensa/isatty.c libc/sys/xtensa/clibrary_init.c +@HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE@am__append_65 = libc/sys/z8ksim/glue.c +@HAVE_LIBC_MACHINE_AARCH64_TRUE@am__append_66 = \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memchr-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memchr.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcmp-stub.c \ @@ -619,7 +620,7 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/strrchr-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/strrchr.S -@HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__append_66 = \ +@HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__append_67 = \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/abort.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/exit.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/atexit.c \ @@ -627,7 +628,7 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/getreent.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/signal.c -@HAVE_LIBC_MACHINE_ARC_TRUE@am__append_67 = \ +@HAVE_LIBC_MACHINE_ARC_TRUE@am__append_68 = \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/memcmp.S \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/memcmp-bs-norm.S \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/memcmp-stub.c \ @@ -659,7 +660,7 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/strncpy-stub.c \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/strncpy-bs.S -@HAVE_LIBC_MACHINE_ARM_TRUE@am__append_68 = \ +@HAVE_LIBC_MACHINE_ARM_TRUE@am__append_69 = \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/setjmp.S libc/machine/arm/strcmp.S libc/machine/arm/strcpy.c \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/aeabi_memcpy.c libc/machine/arm/aeabi_memcpy-armv7a.S \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/aeabi_memmove.c libc/machine/arm/aeabi_memmove-soft.S \ @@ -671,39 +672,39 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/strlen-stub.c \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/strlen.S -@HAVE_LIBC_MACHINE_BFIN_TRUE@am__append_69 = libc/machine/bfin/setjmp.S libc/machine/bfin/longjmp.S -@HAVE_LIBC_MACHINE_CR16_TRUE@am__append_70 = libc/machine/cr16/setjmp.S libc/machine/cr16/getenv.c -@HAVE_LIBC_MACHINE_CRIS_TRUE@am__append_71 = libc/machine/cris/setjmp.c libc/machine/cris/memcpy.c libc/machine/cris/memset.c libc/machine/cris/memmove.c libc/machine/cris/libcdtor.c +@HAVE_LIBC_MACHINE_BFIN_TRUE@am__append_70 = libc/machine/bfin/setjmp.S libc/machine/bfin/longjmp.S +@HAVE_LIBC_MACHINE_CR16_TRUE@am__append_71 = libc/machine/cr16/setjmp.S libc/machine/cr16/getenv.c +@HAVE_LIBC_MACHINE_CRIS_TRUE@am__append_72 = libc/machine/cris/setjmp.c libc/machine/cris/memcpy.c libc/machine/cris/memset.c libc/machine/cris/memmove.c libc/machine/cris/libcdtor.c # We also make a library with just the useful # machine-but-not-system-specific functions, usable as an add-on # by itself together with e.g. uclibc. -@HAVE_LIBC_MACHINE_CRIS_TRUE@am__append_72 = libc/machine/cris/libic.a -@HAVE_LIBC_MACHINE_CRX_TRUE@am__append_73 = libc/machine/crx/setjmp.S libc/machine/crx/getenv.c -@HAVE_LIBC_MACHINE_CSKY_TRUE@am__append_74 = libc/machine/csky/setjmp.S -@HAVE_LIBC_MACHINE_D10V_TRUE@am__append_75 = libc/machine/d10v/setjmp.S -@HAVE_LIBC_MACHINE_D30V_TRUE@am__append_76 = libc/machine/d30v/setjmp.S -@HAVE_LIBC_MACHINE_EPIPHANY_TRUE@am__append_77 = libc/machine/epiphany/setjmp.S -@HAVE_LIBC_MACHINE_FR30_TRUE@am__append_78 = libc/machine/fr30/setjmp.S -@HAVE_LIBC_MACHINE_FRV_TRUE@am__append_79 = libc/machine/frv/setjmp.S -@HAVE_LIBC_MACHINE_FT32_TRUE@am__append_80 = libc/machine/ft32/setjmp.S libc/machine/ft32/strlen.S libc/machine/ft32/memcpy.S libc/machine/ft32/strcmp.S libc/machine/ft32/memset.S libc/machine/ft32/strcpy.S -@HAVE_LIBC_MACHINE_H8300_TRUE@am__append_81 = \ +@HAVE_LIBC_MACHINE_CRIS_TRUE@am__append_73 = libc/machine/cris/libic.a +@HAVE_LIBC_MACHINE_CRX_TRUE@am__append_74 = libc/machine/crx/setjmp.S libc/machine/crx/getenv.c +@HAVE_LIBC_MACHINE_CSKY_TRUE@am__append_75 = libc/machine/csky/setjmp.S +@HAVE_LIBC_MACHINE_D10V_TRUE@am__append_76 = libc/machine/d10v/setjmp.S +@HAVE_LIBC_MACHINE_D30V_TRUE@am__append_77 = libc/machine/d30v/setjmp.S +@HAVE_LIBC_MACHINE_EPIPHANY_TRUE@am__append_78 = libc/machine/epiphany/setjmp.S +@HAVE_LIBC_MACHINE_FR30_TRUE@am__append_79 = libc/machine/fr30/setjmp.S +@HAVE_LIBC_MACHINE_FRV_TRUE@am__append_80 = libc/machine/frv/setjmp.S +@HAVE_LIBC_MACHINE_FT32_TRUE@am__append_81 = libc/machine/ft32/setjmp.S libc/machine/ft32/strlen.S libc/machine/ft32/memcpy.S libc/machine/ft32/strcmp.S libc/machine/ft32/memset.S libc/machine/ft32/strcpy.S +@HAVE_LIBC_MACHINE_H8300_TRUE@am__append_82 = \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/reg_memcpy.S libc/machine/h8300/reg_memset.S libc/machine/h8300/strcmp.S libc/machine/h8300/memcpy.S libc/machine/h8300/memset.S \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/setjmp.S libc/machine/h8300/h8sx_strcpy.S -@HAVE_LIBC_MACHINE_H8500_TRUE@am__append_82 = libc/machine/h8500/divsi3.c libc/machine/h8500/mulsi3.c libc/machine/h8500/divhi3.S libc/machine/h8500/shifts.c libc/machine/h8500/cmpsi.c libc/machine/h8500/psi.S libc/machine/h8500/setjmp.S -@HAVE_LIBC_MACHINE_HPPA_TRUE@am__append_83 = \ +@HAVE_LIBC_MACHINE_H8500_TRUE@am__append_83 = libc/machine/h8500/divsi3.c libc/machine/h8500/mulsi3.c libc/machine/h8500/divhi3.S libc/machine/h8500/shifts.c libc/machine/h8500/cmpsi.c libc/machine/h8500/psi.S libc/machine/h8500/setjmp.S +@HAVE_LIBC_MACHINE_HPPA_TRUE@am__append_84 = \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/memchr.S libc/machine/hppa/memcmp.S libc/machine/hppa/memcpy.S libc/machine/hppa/memset.S \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/setjmp.S \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/strcat.S libc/machine/hppa/strcmp.S \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/strcpy.S libc/machine/hppa/strlen.S libc/machine/hppa/strncat.S libc/machine/hppa/strncmp.S libc/machine/hppa/strncpy.S -@HAVE_LIBC_MACHINE_I386_TRUE@@MACH_ADD_SETJMP_TRUE@am__append_84 = libc/machine/i386/setjmp.S -@HAVE_LIBC_MACHINE_I386_TRUE@am__append_85 = \ +@HAVE_LIBC_MACHINE_I386_TRUE@@MACH_ADD_SETJMP_TRUE@am__append_85 = libc/machine/i386/setjmp.S +@HAVE_LIBC_MACHINE_I386_TRUE@am__append_86 = \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/memchr.S libc/machine/i386/memcmp.S libc/machine/i386/memcpy.S libc/machine/i386/memset.S libc/machine/i386/strchr.S \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/memmove.S libc/machine/i386/strlen.S libc/machine/i386/i386mach.h -@HAVE_LIBC_MACHINE_I960_TRUE@am__append_86 = \ +@HAVE_LIBC_MACHINE_I960_TRUE@am__append_87 = \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/memccpy_ca.S \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/memccpy.S \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/memchr_ca.S \ @@ -733,43 +734,43 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/strpbrk.S \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/strrchr.S -@HAVE_LIBC_MACHINE_IQ2000_TRUE@am__append_87 = libc/machine/iq2000/setjmp.S -@HAVE_LIBC_MACHINE_LM32_TRUE@am__append_88 = libc/machine/lm32/setjmp.S -@HAVE_LIBC_MACHINE_M32C_TRUE@am__append_89 = libc/machine/m32c/setjmp.S -@HAVE_LIBC_MACHINE_M32R_TRUE@am__append_90 = libc/machine/m32r/setjmp.S -@HAVE_LIBC_MACHINE_M68HC11_TRUE@am__append_91 = libc/machine/m68hc11/setjmp.S -@HAVE_LIBC_MACHINE_M68K_TRUE@am__append_92 = libc/machine/m68k/setjmp.S libc/machine/m68k/strcpy.c libc/machine/m68k/strlen.c libc/machine/m68k/memcpy.S libc/machine/m68k/memset.S -@HAVE_LIBC_MACHINE_M88K_TRUE@am__append_93 = libc/machine/m88k/setjmp.S -@HAVE_LIBC_MACHINE_MEP_TRUE@am__append_94 = libc/machine/mep/setjmp.S -@HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@am__append_95 = libc/machine/microblaze/strlen.c libc/machine/microblaze/strcmp.c libc/machine/microblaze/strcpy.c libc/machine/microblaze/setjmp.S libc/machine/microblaze/longjmp.S -@HAVE_LIBC_MACHINE_MIPS_TRUE@am__append_96 = libc/machine/mips/setjmp.S libc/machine/mips/strlen.c libc/machine/mips/strcmp.S libc/machine/mips/strncpy.c libc/machine/mips/memset.S libc/machine/mips/memcpy.S -@HAVE_LIBC_MACHINE_MN10200_TRUE@am__append_97 = libc/machine/mn10200/setjmp.S -@HAVE_LIBC_MACHINE_MN10300_TRUE@am__append_98 = \ +@HAVE_LIBC_MACHINE_IQ2000_TRUE@am__append_88 = libc/machine/iq2000/setjmp.S +@HAVE_LIBC_MACHINE_LM32_TRUE@am__append_89 = libc/machine/lm32/setjmp.S +@HAVE_LIBC_MACHINE_M32C_TRUE@am__append_90 = libc/machine/m32c/setjmp.S +@HAVE_LIBC_MACHINE_M32R_TRUE@am__append_91 = libc/machine/m32r/setjmp.S +@HAVE_LIBC_MACHINE_M68HC11_TRUE@am__append_92 = libc/machine/m68hc11/setjmp.S +@HAVE_LIBC_MACHINE_M68K_TRUE@am__append_93 = libc/machine/m68k/setjmp.S libc/machine/m68k/strcpy.c libc/machine/m68k/strlen.c libc/machine/m68k/memcpy.S libc/machine/m68k/memset.S +@HAVE_LIBC_MACHINE_M88K_TRUE@am__append_94 = libc/machine/m88k/setjmp.S +@HAVE_LIBC_MACHINE_MEP_TRUE@am__append_95 = libc/machine/mep/setjmp.S +@HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@am__append_96 = libc/machine/microblaze/strlen.c libc/machine/microblaze/strcmp.c libc/machine/microblaze/strcpy.c libc/machine/microblaze/setjmp.S libc/machine/microblaze/longjmp.S +@HAVE_LIBC_MACHINE_MIPS_TRUE@am__append_97 = libc/machine/mips/setjmp.S libc/machine/mips/strlen.c libc/machine/mips/strcmp.S libc/machine/mips/strncpy.c libc/machine/mips/memset.S libc/machine/mips/memcpy.S +@HAVE_LIBC_MACHINE_MN10200_TRUE@am__append_98 = libc/machine/mn10200/setjmp.S +@HAVE_LIBC_MACHINE_MN10300_TRUE@am__append_99 = \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/setjmp.S libc/machine/mn10300/memchr.S libc/machine/mn10300/memcmp.S libc/machine/mn10300/memcpy.S libc/machine/mn10300/memset.S libc/machine/mn10300/strchr.S \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/strcmp.S libc/machine/mn10300/strcpy.S libc/machine/mn10300/strlen.S -@HAVE_LIBC_MACHINE_MOXIE_TRUE@am__append_99 = libc/machine/moxie/setjmp.S -@HAVE_LIBC_MACHINE_MSP430_TRUE@am__append_100 = libc/machine/msp430/setjmp.S -@HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@am__append_101 = libc/machine/msp430/tiny-puts.c libc/machine/msp430/tiny-printf.c -@HAVE_LIBC_MACHINE_MT_TRUE@am__append_102 = libc/machine/mt/setjmp.S -@HAVE_LIBC_MACHINE_NDS32_TRUE@am__append_103 = \ +@HAVE_LIBC_MACHINE_MOXIE_TRUE@am__append_100 = libc/machine/moxie/setjmp.S +@HAVE_LIBC_MACHINE_MSP430_TRUE@am__append_101 = libc/machine/msp430/setjmp.S +@HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@am__append_102 = libc/machine/msp430/tiny-puts.c libc/machine/msp430/tiny-printf.c +@HAVE_LIBC_MACHINE_MT_TRUE@am__append_103 = libc/machine/mt/setjmp.S +@HAVE_LIBC_MACHINE_NDS32_TRUE@am__append_104 = \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/abort.c \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/setjmp.S \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/strcmp.S \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/strcpy.S -@HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@am__append_104 = libc/machine/nds32/memcpy.S libc/machine/nds32/memset.S -@HAVE_LIBC_MACHINE_NECV70_TRUE@am__append_105 = libc/machine/necv70/fastmath.S libc/machine/necv70/setjmp.S -@HAVE_LIBC_MACHINE_NIOS2_TRUE@am__append_106 = libc/machine/nios2/setjmp.s -@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__append_107 = \ +@HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@am__append_105 = libc/machine/nds32/memcpy.S libc/machine/nds32/memset.S +@HAVE_LIBC_MACHINE_NECV70_TRUE@am__append_106 = libc/machine/necv70/fastmath.S libc/machine/necv70/setjmp.S +@HAVE_LIBC_MACHINE_NIOS2_TRUE@am__append_107 = libc/machine/nios2/setjmp.s +@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__append_108 = \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/_exit.c \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/calloc.c libc/machine/nvptx/callocr.c libc/machine/nvptx/malloc.c libc/machine/nvptx/mallocr.c libc/machine/nvptx/realloc.c libc/machine/nvptx/reallocr.c \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/free.c libc/machine/nvptx/write.c libc/machine/nvptx/assert.c libc/machine/nvptx/puts.c libc/machine/nvptx/putchar.c libc/machine/nvptx/printf.c libc/machine/nvptx/abort.c \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/misc.c libc/machine/nvptx/clock.c -@HAVE_LIBC_MACHINE_OR1K_TRUE@am__append_108 = libc/machine/or1k/setjmp.S -@HAVE_LIBC_MACHINE_POWERPC_TRUE@am__append_109 = libc/machine/powerpc/setjmp.S -@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@am__append_110 = \ +@HAVE_LIBC_MACHINE_OR1K_TRUE@am__append_109 = libc/machine/or1k/setjmp.S +@HAVE_LIBC_MACHINE_POWERPC_TRUE@am__append_110 = libc/machine/powerpc/setjmp.S +@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@am__append_111 = \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/vfprintf.c \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/vfscanf.c \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/vec_malloc.c \ @@ -780,7 +781,7 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/vec_callocr.c \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/vec_reallocr.c -@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@am__append_111 = \ +@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@am__append_112 = \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/atosfix16.c \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/atosfix32.c \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/atosfix64.c \ @@ -798,21 +799,21 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/vfprintf.c \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/vfscanf.c -@HAVE_LIBC_MACHINE_PRU_TRUE@am__append_112 = libc/machine/pru/setjmp.s -@HAVE_LIBC_MACHINE_RISCV_TRUE@am__append_113 = \ +@HAVE_LIBC_MACHINE_PRU_TRUE@am__append_113 = libc/machine/pru/setjmp.s +@HAVE_LIBC_MACHINE_RISCV_TRUE@am__append_114 = \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/memmove.S libc/machine/riscv/memmove-stub.c libc/machine/riscv/memset.S libc/machine/riscv/memcpy-asm.S libc/machine/riscv/memcpy.c libc/machine/riscv/strlen.c \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/strcpy.c libc/machine/riscv/strcmp.S libc/machine/riscv/setjmp.S libc/machine/riscv/ieeefp.c libc/machine/riscv/ffs.c -@HAVE_LIBC_MACHINE_RL78_TRUE@am__append_114 = libc/machine/rl78/setjmp.S -@HAVE_LIBC_MACHINE_RX_TRUE@am__append_115 = \ +@HAVE_LIBC_MACHINE_RL78_TRUE@am__append_115 = libc/machine/rl78/setjmp.S +@HAVE_LIBC_MACHINE_RX_TRUE@am__append_116 = \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/setjmp.S \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/strncmp.S libc/machine/rx/strcmp.S libc/machine/rx/strncpy.S libc/machine/rx/strcpy.S libc/machine/rx/strlen.S libc/machine/rx/strcat.S libc/machine/rx/strncat.S \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/memset.S libc/machine/rx/mempcpy.S libc/machine/rx/memcpy.S libc/machine/rx/memmove.S libc/machine/rx/memchr.S -@HAVE_LIBC_MACHINE_SH_TRUE@am__append_116 = libc/machine/sh/memcpy.S libc/machine/sh/memset.S libc/machine/sh/setjmp.S libc/machine/sh/strcpy.S libc/machine/sh/strlen.S libc/machine/sh/strcmp.S -@HAVE_LIBC_MACHINE_SH_TRUE@@SH64_TRUE@am__append_117 = libc/machine/sh/strncpy.S -@HAVE_LIBC_MACHINE_SPARC_TRUE@am__append_118 = libc/machine/sparc/scan.c libc/machine/sparc/shuffle.c libc/machine/sparc/setjmp.S -@HAVE_LIBC_MACHINE_SPU_TRUE@am__append_119 = \ +@HAVE_LIBC_MACHINE_SH_TRUE@am__append_117 = libc/machine/sh/memcpy.S libc/machine/sh/memset.S libc/machine/sh/setjmp.S libc/machine/sh/strcpy.S libc/machine/sh/strlen.S libc/machine/sh/strcmp.S +@HAVE_LIBC_MACHINE_SH_TRUE@@SH64_TRUE@am__append_118 = libc/machine/sh/strncpy.S +@HAVE_LIBC_MACHINE_SPARC_TRUE@am__append_119 = libc/machine/sparc/scan.c libc/machine/sparc/shuffle.c libc/machine/sparc/setjmp.S +@HAVE_LIBC_MACHINE_SPU_TRUE@am__append_120 = \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/setjmp.S libc/machine/spu/assert.c libc/machine/spu/clearerr.c libc/machine/spu/creat.c libc/machine/spu/fclose.c libc/machine/spu/feof.c \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/ferror.c libc/machine/spu/fflush.c libc/machine/spu/fgetc.c libc/machine/spu/fgetpos.c libc/machine/spu/fgets.c libc/machine/spu/fileno.c libc/machine/spu/fiprintf.S \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/fiscanf.S libc/machine/spu/fopen.c libc/machine/spu/fprintf.S libc/machine/spu/fputc.c libc/machine/spu/fputs.c libc/machine/spu/fread.c libc/machine/spu/freopen.c \ @@ -830,7 +831,7 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/spu_timer_slih.c libc/machine/spu/spu_timer_slih_reg.c libc/machine/spu/spu_timer_svcs.c \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/spu_timer_stop.c libc/machine/spu/spu_timer_free.c libc/machine/spu/spu_timebase.c libc/machine/spu/fdopen.c -@HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@am__append_120 = \ +@HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@am__append_121 = \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/calloc_ea.c libc/machine/spu/free_ea.c libc/machine/spu/malloc_ea.c libc/machine/spu/memchr_ea.c libc/machine/spu/memcmp_ea.c \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/memcpy_ea.c libc/machine/spu/memmove_ea.c libc/machine/spu/memset_ea.c libc/machine/spu/mmap_ea.c libc/machine/spu/mremap_ea.c libc/machine/spu/msync_ea.c \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/munmap_ea.c libc/machine/spu/posix_memalign_ea.c libc/machine/spu/realloc_ea.c libc/machine/spu/strcat_ea.c libc/machine/spu/strchr_ea.c \ @@ -839,18 +840,18 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/pread_ea.c libc/machine/spu/readv_ea.c libc/machine/spu/write_ea.c libc/machine/spu/pwrite_ea.c libc/machine/spu/writev_ea.c libc/machine/spu/spu-mcount.S \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/spu-gmon.c -@HAVE_LIBC_MACHINE_TIC4X_TRUE@am__append_121 = libc/machine/tic4x/setjmp.S -@HAVE_LIBC_MACHINE_TIC6X_TRUE@am__append_122 = libc/machine/tic6x/setjmp.S -@HAVE_LIBC_MACHINE_TIC80_TRUE@am__append_123 = libc/machine/tic80/setjmp.S -@HAVE_LIBC_MACHINE_V850_TRUE@am__append_124 = libc/machine/v850/setjmp.S -@HAVE_LIBC_MACHINE_VISIUM_TRUE@am__append_125 = libc/machine/visium/memcpy.c libc/machine/visium/memset.c libc/machine/visium/memmove.c libc/machine/visium/setjmp.S -@HAVE_LIBC_MACHINE_W65_TRUE@am__append_126 = \ +@HAVE_LIBC_MACHINE_TIC4X_TRUE@am__append_122 = libc/machine/tic4x/setjmp.S +@HAVE_LIBC_MACHINE_TIC6X_TRUE@am__append_123 = libc/machine/tic6x/setjmp.S +@HAVE_LIBC_MACHINE_TIC80_TRUE@am__append_124 = libc/machine/tic80/setjmp.S +@HAVE_LIBC_MACHINE_V850_TRUE@am__append_125 = libc/machine/v850/setjmp.S +@HAVE_LIBC_MACHINE_VISIUM_TRUE@am__append_126 = libc/machine/visium/memcpy.c libc/machine/visium/memset.c libc/machine/visium/memmove.c libc/machine/visium/setjmp.S +@HAVE_LIBC_MACHINE_W65_TRUE@am__append_127 = \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/udivhi3.S libc/machine/w65/umodhi3.S libc/machine/w65/smulhi3.S libc/machine/w65/lshrhi.S libc/machine/w65/sdivhi3.S libc/machine/w65/mulsi3.c \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/divsi3.c libc/machine/w65/cmpsi.c -@HAVE_LIBC_MACHINE_X86_64_TRUE@am__append_127 = libc/machine/x86_64/setjmp.S libc/machine/x86_64/memcpy.S libc/machine/x86_64/memset.S -@HAVE_LIBC_MACHINE_XC16X_TRUE@am__append_128 = libc/machine/xc16x/setjmp.S libc/machine/xc16x/puts.c libc/machine/xc16x/putchar.c -@HAVE_LIBC_MACHINE_XSTORMY16_TRUE@am__append_129 = \ +@HAVE_LIBC_MACHINE_X86_64_TRUE@am__append_128 = libc/machine/x86_64/setjmp.S libc/machine/x86_64/memcpy.S libc/machine/x86_64/memset.S +@HAVE_LIBC_MACHINE_XC16X_TRUE@am__append_129 = libc/machine/xc16x/setjmp.S libc/machine/xc16x/puts.c libc/machine/xc16x/putchar.c +@HAVE_LIBC_MACHINE_XSTORMY16_TRUE@am__append_130 = \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/setjmp.S \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/calloc.c \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/callocr.c \ @@ -865,9 +866,13 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/reallocr.c \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/valloc.c -@HAVE_LIBC_MACHINE_Z8K_TRUE@am__append_130 = libc/machine/z8k/setjmp.S libc/machine/z8k/memset.S libc/machine/z8k/memcpy.S libc/machine/z8k/memmove.S libc/machine/z8k/memcmp.S -@NEWLIB_HW_FP_TRUE@am__append_131 = $(libm_mathfp_src) $(libm_mathfp_fsrc) -@NEWLIB_HW_FP_TRUE@am__append_132 = \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@am__append_131 = \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/memcpy.S libc/machine/xtensa/memset.S libc/machine/xtensa/setjmp.S libc/machine/xtensa/strcmp.S libc/machine/xtensa/strcpy.S \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/strlen.S libc/machine/xtensa/strncpy.S + +@HAVE_LIBC_MACHINE_Z8K_TRUE@am__append_132 = libc/machine/z8k/setjmp.S libc/machine/z8k/memset.S libc/machine/z8k/memcpy.S libc/machine/z8k/memmove.S libc/machine/z8k/memcmp.S +@NEWLIB_HW_FP_TRUE@am__append_133 = $(libm_mathfp_src) $(libm_mathfp_fsrc) +@NEWLIB_HW_FP_TRUE@am__append_134 = \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/e_acosh.def \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/e_atanh.def \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/e_hypot.def \ @@ -897,9 +902,9 @@ check_PROGRAMS = @NEWLIB_HW_FP_TRUE@ libm/mathfp/s_tanh.def \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/w_jn.def -@NEWLIB_HW_FP_TRUE@am__append_133 = libm/mathfp/mathfp.tex -@NEWLIB_HW_FP_FALSE@am__append_134 = $(libm_math_src) $(libm_math_fsrc) $(libm_math_lsrc) -@NEWLIB_HW_FP_FALSE@am__append_135 = \ +@NEWLIB_HW_FP_TRUE@am__append_135 = libm/mathfp/mathfp.tex +@NEWLIB_HW_FP_FALSE@am__append_136 = $(libm_math_src) $(libm_math_fsrc) $(libm_math_lsrc) +@NEWLIB_HW_FP_FALSE@am__append_137 = \ @NEWLIB_HW_FP_FALSE@ libm/math/w_acos.def libm/math/w_acosh.def libm/math/w_asin.def libm/math/s_asinh.def \ @NEWLIB_HW_FP_FALSE@ libm/math/s_atan.def libm/math/w_atan2.def libm/math/w_atanh.def libm/math/w_j0.def \ @NEWLIB_HW_FP_FALSE@ libm/math/w_cosh.def libm/math/s_erf.def libm/math/w_exp.def libm/math/w_exp2.def \ @@ -909,34 +914,38 @@ check_PROGRAMS = @NEWLIB_HW_FP_FALSE@ libm/math/w_pow.def libm/math/w_remainder.def libm/math/s_sin.def libm/math/w_sinh.def \ @NEWLIB_HW_FP_FALSE@ libm/math/w_sqrt.def libm/math/s_tan.def libm/math/s_tanh.def -@NEWLIB_HW_FP_FALSE@am__append_136 = libm/math/math.tex -@HAVE_LONG_DOUBLE_TRUE@am__append_137 = $(libm_common_lsrc) -@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_138 = $(libm_ld_lsrc) -@HAVE_FPMATH_H_TRUE@am__append_139 = -@HAVE_FPMATH_H_TRUE@am__append_140 = -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_141 = $(libm_machine_aarch64_src) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_142 = $(libm_ld128_lsrc) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_143 = -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_144 = -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_145 = $(libm_machine_amdgcn_src) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_146 = $(libm_machine_arm_src) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_147 = $(libm_machine_i386_src) -@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_148 = $(libm_ld80_lsrc) -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_149 = -@HAVE_LIBM_MACHINE_I386_TRUE@am__append_150 = -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_151 = $(libm_machine_mips_src) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_152 = libm/machine/nds32/wf_sqrt.S -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_153 = libm/machine/nds32/w_sqrt.S -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_154 = $(libm_machine_nds32_src) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_155 = $(libm_machine_powerpc_src) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_156 = $(libm_machine_pru_src) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_157 = $(libm_machine_sparc_src) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_158 = $(libm_machine_spu_src) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_159 = $(libm_machine_riscv_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_160 = $(libm_machine_x86_64_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_161 = $(libm_ld80_lsrc) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_162 = -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_163 = +@NEWLIB_HW_FP_FALSE@am__append_138 = libm/math/math.tex +@HAVE_LONG_DOUBLE_TRUE@am__append_139 = $(libm_common_lsrc) +@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_140 = $(libm_ld_lsrc) +@HAVE_FPMATH_H_TRUE@am__append_141 = +@HAVE_FPMATH_H_TRUE@am__append_142 = +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_143 = $(libm_machine_aarch64_src) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_144 = $(libm_ld128_lsrc) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_145 = +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_146 = +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_147 = $(libm_machine_amdgcn_src) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_148 = $(libm_machine_arm_src) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_149 = $(libm_machine_i386_src) +@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_150 = $(libm_ld80_lsrc) +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_151 = +@HAVE_LIBM_MACHINE_I386_TRUE@am__append_152 = +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_153 = $(libm_machine_mips_src) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_154 = libm/machine/nds32/wf_sqrt.S +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_155 = libm/machine/nds32/w_sqrt.S +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_156 = $(libm_machine_nds32_src) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_157 = $(libm_machine_powerpc_src) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_158 = $(libm_machine_pru_src) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_159 = $(libm_machine_sparc_src) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_160 = $(libm_machine_spu_src) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_161 = $(libm_machine_riscv_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_162 = $(libm_machine_x86_64_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_163 = $(libm_ld80_lsrc) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_164 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_165 = +@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__append_166 = \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@ libm/machine/xtensa/ef_sqrt.c + +@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__append_167 = $(libm_machine_xtensa_src) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -948,8 +957,10 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/libc/machine/powerpc/acinclude.m4 \ $(top_srcdir)/libc/machine/sh/acinclude.m4 \ $(top_srcdir)/libc/machine/spu/acinclude.m4 \ + $(top_srcdir)/libc/machine/xtensa/acinclude.m4 \ $(top_srcdir)/libm/acinclude.m4 \ $(top_srcdir)/libm/machine/nds32/acinclude.m4 \ + $(top_srcdir)/libm/machine/xtensa/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -1824,8 +1835,11 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_SYS_TIRTOS_DIR_TRUE@am__objects_73 = libc/sys/tirtos/libc_a-lock.$(OBJEXT) @HAVE_LIBC_SYS_W65_DIR_TRUE@am__objects_74 = libc/sys/w65/libc_a-syscalls.$(OBJEXT) \ @HAVE_LIBC_SYS_W65_DIR_TRUE@ libc/sys/w65/libc_a-trap.$(OBJEXT) -@HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE@am__objects_75 = libc/sys/z8ksim/libc_a-glue.$(OBJEXT) -@HAVE_LIBC_MACHINE_AARCH64_TRUE@am__objects_76 = libc/machine/aarch64/libc_a-memchr-stub.$(OBJEXT) \ +@HAVE_LIBC_SYS_XTENSA_DIR_TRUE@am__objects_75 = libc/sys/xtensa/libc_a-creat.$(OBJEXT) \ +@HAVE_LIBC_SYS_XTENSA_DIR_TRUE@ libc/sys/xtensa/libc_a-isatty.$(OBJEXT) \ +@HAVE_LIBC_SYS_XTENSA_DIR_TRUE@ libc/sys/xtensa/libc_a-clibrary_init.$(OBJEXT) +@HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE@am__objects_76 = libc/sys/z8ksim/libc_a-glue.$(OBJEXT) +@HAVE_LIBC_MACHINE_AARCH64_TRUE@am__objects_77 = libc/machine/aarch64/libc_a-memchr-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memchr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcmp-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcmp.$(OBJEXT) \ @@ -1856,13 +1870,13 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-strnlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-strrchr-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-strrchr.$(OBJEXT) -@HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__objects_77 = libc/machine/amdgcn/libc_a-abort.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__objects_78 = libc/machine/amdgcn/libc_a-abort.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-exit.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-atexit.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-mlock.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-getreent.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-signal.$(OBJEXT) -@HAVE_LIBC_MACHINE_ARC_TRUE@am__objects_78 = libc/machine/arc/libc_a-memcmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_ARC_TRUE@am__objects_79 = libc/machine/arc/libc_a-memcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/libc_a-memcmp-bs-norm.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/libc_a-memcmp-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/libc_a-memcpy.$(OBJEXT) \ @@ -1892,7 +1906,7 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/libc_a-strncpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/libc_a-strncpy-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARC_TRUE@ libc/machine/arc/libc_a-strncpy-bs.$(OBJEXT) -@HAVE_LIBC_MACHINE_ARM_TRUE@am__objects_79 = libc/machine/arm/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_ARM_TRUE@am__objects_80 = libc/machine/arm/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/libc_a-strcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/libc_a-aeabi_memcpy.$(OBJEXT) \ @@ -1908,44 +1922,44 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/libc_a-strlen-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_ARM_TRUE@ libc/machine/arm/libc_a-strlen.$(OBJEXT) -@HAVE_LIBC_MACHINE_BFIN_TRUE@am__objects_80 = libc/machine/bfin/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_BFIN_TRUE@am__objects_81 = libc/machine/bfin/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_BFIN_TRUE@ libc/machine/bfin/libc_a-longjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_CR16_TRUE@am__objects_81 = libc/machine/cr16/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_CR16_TRUE@am__objects_82 = libc/machine/cr16/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_CR16_TRUE@ libc/machine/cr16/libc_a-getenv.$(OBJEXT) -@HAVE_LIBC_MACHINE_CRIS_TRUE@am__objects_82 = libc/machine/cris/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_CRIS_TRUE@am__objects_83 = libc/machine/cris/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_CRIS_TRUE@ libc/machine/cris/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_CRIS_TRUE@ libc/machine/cris/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_CRIS_TRUE@ libc/machine/cris/libc_a-memmove.$(OBJEXT) \ @HAVE_LIBC_MACHINE_CRIS_TRUE@ libc/machine/cris/libc_a-libcdtor.$(OBJEXT) -@HAVE_LIBC_MACHINE_CRX_TRUE@am__objects_83 = libc/machine/crx/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_CRX_TRUE@am__objects_84 = libc/machine/crx/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_CRX_TRUE@ libc/machine/crx/libc_a-getenv.$(OBJEXT) -@HAVE_LIBC_MACHINE_CSKY_TRUE@am__objects_84 = libc/machine/csky/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_D10V_TRUE@am__objects_85 = libc/machine/d10v/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_D30V_TRUE@am__objects_86 = libc/machine/d30v/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_EPIPHANY_TRUE@am__objects_87 = libc/machine/epiphany/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_FR30_TRUE@am__objects_88 = libc/machine/fr30/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_FRV_TRUE@am__objects_89 = libc/machine/frv/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_FT32_TRUE@am__objects_90 = libc/machine/ft32/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_CSKY_TRUE@am__objects_85 = libc/machine/csky/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_D10V_TRUE@am__objects_86 = libc/machine/d10v/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_D30V_TRUE@am__objects_87 = libc/machine/d30v/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_EPIPHANY_TRUE@am__objects_88 = libc/machine/epiphany/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_FR30_TRUE@am__objects_89 = libc/machine/fr30/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_FRV_TRUE@am__objects_90 = libc/machine/frv/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_FT32_TRUE@am__objects_91 = libc/machine/ft32/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_FT32_TRUE@ libc/machine/ft32/libc_a-strlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_FT32_TRUE@ libc/machine/ft32/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_FT32_TRUE@ libc/machine/ft32/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_FT32_TRUE@ libc/machine/ft32/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_FT32_TRUE@ libc/machine/ft32/libc_a-strcpy.$(OBJEXT) -@HAVE_LIBC_MACHINE_H8300_TRUE@am__objects_91 = libc/machine/h8300/libc_a-reg_memcpy.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_H8300_TRUE@am__objects_92 = libc/machine/h8300/libc_a-reg_memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/libc_a-reg_memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8300_TRUE@ libc/machine/h8300/libc_a-h8sx_strcpy.$(OBJEXT) -@HAVE_LIBC_MACHINE_H8500_TRUE@am__objects_92 = libc/machine/h8500/libc_a-divsi3.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_H8500_TRUE@am__objects_93 = libc/machine/h8500/libc_a-divsi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8500_TRUE@ libc/machine/h8500/libc_a-mulsi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8500_TRUE@ libc/machine/h8500/libc_a-divhi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8500_TRUE@ libc/machine/h8500/libc_a-shifts.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8500_TRUE@ libc/machine/h8500/libc_a-cmpsi.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8500_TRUE@ libc/machine/h8500/libc_a-psi.$(OBJEXT) \ @HAVE_LIBC_MACHINE_H8500_TRUE@ libc/machine/h8500/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_HPPA_TRUE@am__objects_93 = libc/machine/hppa/libc_a-memchr.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_HPPA_TRUE@am__objects_94 = libc/machine/hppa/libc_a-memchr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/libc_a-memcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/libc_a-memset.$(OBJEXT) \ @@ -1957,15 +1971,15 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/libc_a-strncat.$(OBJEXT) \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/libc_a-strncmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_HPPA_TRUE@ libc/machine/hppa/libc_a-strncpy.$(OBJEXT) -@HAVE_LIBC_MACHINE_I386_TRUE@@MACH_ADD_SETJMP_TRUE@am__objects_94 = libc/machine/i386/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_I386_TRUE@am__objects_95 = libc/machine/i386/libc_a-memchr.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_I386_TRUE@@MACH_ADD_SETJMP_TRUE@am__objects_95 = libc/machine/i386/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_I386_TRUE@am__objects_96 = libc/machine/i386/libc_a-memchr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/libc_a-memcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/libc_a-strchr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/libc_a-memmove.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I386_TRUE@ libc/machine/i386/libc_a-strlen.$(OBJEXT) -@HAVE_LIBC_MACHINE_I960_TRUE@am__objects_96 = libc/machine/i960/libc_a-memccpy_ca.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_I960_TRUE@am__objects_97 = libc/machine/i960/libc_a-memccpy_ca.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/libc_a-memccpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/libc_a-memchr_ca.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/libc_a-memchr.$(OBJEXT) \ @@ -1993,31 +2007,31 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/libc_a-strncpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/libc_a-strpbrk.$(OBJEXT) \ @HAVE_LIBC_MACHINE_I960_TRUE@ libc/machine/i960/libc_a-strrchr.$(OBJEXT) -@HAVE_LIBC_MACHINE_IQ2000_TRUE@am__objects_97 = libc/machine/iq2000/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_LM32_TRUE@am__objects_98 = libc/machine/lm32/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_M32C_TRUE@am__objects_99 = libc/machine/m32c/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_M32R_TRUE@am__objects_100 = libc/machine/m32r/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_M68HC11_TRUE@am__objects_101 = libc/machine/m68hc11/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_M68K_TRUE@am__objects_102 = libc/machine/m68k/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_IQ2000_TRUE@am__objects_98 = libc/machine/iq2000/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_LM32_TRUE@am__objects_99 = libc/machine/lm32/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_M32C_TRUE@am__objects_100 = libc/machine/m32c/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_M32R_TRUE@am__objects_101 = libc/machine/m32r/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_M68HC11_TRUE@am__objects_102 = libc/machine/m68hc11/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_M68K_TRUE@am__objects_103 = libc/machine/m68k/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_M68K_TRUE@ libc/machine/m68k/libc_a-strcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_M68K_TRUE@ libc/machine/m68k/libc_a-strlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_M68K_TRUE@ libc/machine/m68k/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_M68K_TRUE@ libc/machine/m68k/libc_a-memset.$(OBJEXT) -@HAVE_LIBC_MACHINE_M88K_TRUE@am__objects_103 = libc/machine/m88k/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_MEP_TRUE@am__objects_104 = libc/machine/mep/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@am__objects_105 = libc/machine/microblaze/libc_a-strlen.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_M88K_TRUE@am__objects_104 = libc/machine/m88k/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_MEP_TRUE@am__objects_105 = libc/machine/mep/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@am__objects_106 = libc/machine/microblaze/libc_a-strlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@ libc/machine/microblaze/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@ libc/machine/microblaze/libc_a-strcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@ libc/machine/microblaze/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@ libc/machine/microblaze/libc_a-longjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_MIPS_TRUE@am__objects_106 = libc/machine/mips/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_MIPS_TRUE@am__objects_107 = libc/machine/mips/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MIPS_TRUE@ libc/machine/mips/libc_a-strlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MIPS_TRUE@ libc/machine/mips/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MIPS_TRUE@ libc/machine/mips/libc_a-strncpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MIPS_TRUE@ libc/machine/mips/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MIPS_TRUE@ libc/machine/mips/libc_a-memcpy.$(OBJEXT) -@HAVE_LIBC_MACHINE_MN10200_TRUE@am__objects_107 = libc/machine/mn10200/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_MN10300_TRUE@am__objects_108 = libc/machine/mn10300/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_MN10200_TRUE@am__objects_108 = libc/machine/mn10200/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_MN10300_TRUE@am__objects_109 = libc/machine/mn10300/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/libc_a-memchr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/libc_a-memcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/libc_a-memcpy.$(OBJEXT) \ @@ -2026,21 +2040,21 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/libc_a-strcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MN10300_TRUE@ libc/machine/mn10300/libc_a-strlen.$(OBJEXT) -@HAVE_LIBC_MACHINE_MOXIE_TRUE@am__objects_109 = libc/machine/moxie/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_MSP430_TRUE@am__objects_110 = libc/machine/msp430/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@am__objects_111 = libc/machine/msp430/libc_a-tiny-puts.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_MOXIE_TRUE@am__objects_110 = libc/machine/moxie/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_MSP430_TRUE@am__objects_111 = libc/machine/msp430/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@am__objects_112 = libc/machine/msp430/libc_a-tiny-puts.$(OBJEXT) \ @HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@ libc/machine/msp430/libc_a-tiny-printf.$(OBJEXT) -@HAVE_LIBC_MACHINE_MT_TRUE@am__objects_112 = libc/machine/mt/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_NDS32_TRUE@am__objects_113 = libc/machine/nds32/libc_a-abort.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_MT_TRUE@am__objects_113 = libc/machine/mt/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_NDS32_TRUE@am__objects_114 = libc/machine/nds32/libc_a-abort.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NDS32_TRUE@ libc/machine/nds32/libc_a-strcpy.$(OBJEXT) -@HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@am__objects_114 = libc/machine/nds32/libc_a-memcpy.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@am__objects_115 = libc/machine/nds32/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@ libc/machine/nds32/libc_a-memset.$(OBJEXT) -@HAVE_LIBC_MACHINE_NECV70_TRUE@am__objects_115 = libc/machine/necv70/libc_a-fastmath.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_NECV70_TRUE@am__objects_116 = libc/machine/necv70/libc_a-fastmath.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NECV70_TRUE@ libc/machine/necv70/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_NIOS2_TRUE@am__objects_116 = libc/machine/nios2/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__objects_117 = libc/machine/nvptx/libc_a-_exit.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_NIOS2_TRUE@am__objects_117 = libc/machine/nios2/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__objects_118 = libc/machine/nvptx/libc_a-_exit.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-calloc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-callocr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-malloc.$(OBJEXT) \ @@ -2056,9 +2070,9 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-abort.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-misc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_NVPTX_TRUE@ libc/machine/nvptx/libc_a-clock.$(OBJEXT) -@HAVE_LIBC_MACHINE_OR1K_TRUE@am__objects_118 = libc/machine/or1k/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_POWERPC_TRUE@am__objects_119 = libc/machine/powerpc/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@am__objects_120 = libc/machine/powerpc/libc_a-vfprintf.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_OR1K_TRUE@am__objects_119 = libc/machine/or1k/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_POWERPC_TRUE@am__objects_120 = libc/machine/powerpc/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@am__objects_121 = libc/machine/powerpc/libc_a-vfprintf.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/libc_a-vfscanf.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/libc_a-vec_malloc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/libc_a-vec_calloc.$(OBJEXT) \ @@ -2067,7 +2081,7 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/libc_a-vec_mallocr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/libc_a-vec_callocr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@ libc/machine/powerpc/libc_a-vec_reallocr.$(OBJEXT) -@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@am__objects_121 = libc/machine/powerpc/libc_a-atosfix16.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@am__objects_122 = libc/machine/powerpc/libc_a-atosfix16.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/libc_a-atosfix32.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/libc_a-atosfix64.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/libc_a-atoufix16.$(OBJEXT) \ @@ -2083,8 +2097,8 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/libc_a-ufix64toa.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/libc_a-vfprintf.$(OBJEXT) \ @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@ libc/machine/powerpc/libc_a-vfscanf.$(OBJEXT) -@HAVE_LIBC_MACHINE_PRU_TRUE@am__objects_122 = libc/machine/pru/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_RISCV_TRUE@am__objects_123 = libc/machine/riscv/libc_a-memmove.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_PRU_TRUE@am__objects_123 = libc/machine/pru/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_RISCV_TRUE@am__objects_124 = libc/machine/riscv/libc_a-memmove.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/libc_a-memmove-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/libc_a-memcpy-asm.$(OBJEXT) \ @@ -2095,8 +2109,8 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/libc_a-ieeefp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RISCV_TRUE@ libc/machine/riscv/libc_a-ffs.$(OBJEXT) -@HAVE_LIBC_MACHINE_RL78_TRUE@am__objects_124 = libc/machine/rl78/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_RX_TRUE@am__objects_125 = libc/machine/rx/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_RL78_TRUE@am__objects_125 = libc/machine/rl78/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_RX_TRUE@am__objects_126 = libc/machine/rx/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/libc_a-strncmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/libc_a-strcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/libc_a-strncpy.$(OBJEXT) \ @@ -2109,17 +2123,17 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/libc_a-memmove.$(OBJEXT) \ @HAVE_LIBC_MACHINE_RX_TRUE@ libc/machine/rx/libc_a-memchr.$(OBJEXT) -@HAVE_LIBC_MACHINE_SH_TRUE@am__objects_126 = libc/machine/sh/libc_a-memcpy.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_SH_TRUE@am__objects_127 = libc/machine/sh/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SH_TRUE@ libc/machine/sh/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SH_TRUE@ libc/machine/sh/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SH_TRUE@ libc/machine/sh/libc_a-strcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SH_TRUE@ libc/machine/sh/libc_a-strlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SH_TRUE@ libc/machine/sh/libc_a-strcmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_SH_TRUE@@SH64_TRUE@am__objects_127 = libc/machine/sh/libc_a-strncpy.$(OBJEXT) -@HAVE_LIBC_MACHINE_SPARC_TRUE@am__objects_128 = libc/machine/sparc/libc_a-scan.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_SH_TRUE@@SH64_TRUE@am__objects_128 = libc/machine/sh/libc_a-strncpy.$(OBJEXT) +@HAVE_LIBC_MACHINE_SPARC_TRUE@am__objects_129 = libc/machine/sparc/libc_a-scan.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPARC_TRUE@ libc/machine/sparc/libc_a-shuffle.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPARC_TRUE@ libc/machine/sparc/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_SPU_TRUE@am__objects_129 = libc/machine/spu/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_SPU_TRUE@am__objects_130 = libc/machine/spu/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/libc_a-assert.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/libc_a-clearerr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/libc_a-creat.$(OBJEXT) \ @@ -2214,7 +2228,7 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/libc_a-spu_timer_free.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/libc_a-spu_timebase.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@ libc/machine/spu/libc_a-fdopen.$(OBJEXT) -@HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@am__objects_130 = libc/machine/spu/libc_a-calloc_ea.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@am__objects_131 = libc/machine/spu/libc_a-calloc_ea.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/libc_a-free_ea.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/libc_a-malloc_ea.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/libc_a-memchr_ea.$(OBJEXT) \ @@ -2249,15 +2263,15 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/libc_a-writev_ea.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/libc_a-spu-mcount.$(OBJEXT) \ @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@ libc/machine/spu/libc_a-spu-gmon.$(OBJEXT) -@HAVE_LIBC_MACHINE_TIC4X_TRUE@am__objects_131 = libc/machine/tic4x/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_TIC6X_TRUE@am__objects_132 = libc/machine/tic6x/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_TIC80_TRUE@am__objects_133 = libc/machine/tic80/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_V850_TRUE@am__objects_134 = libc/machine/v850/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_VISIUM_TRUE@am__objects_135 = libc/machine/visium/libc_a-memcpy.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_TIC4X_TRUE@am__objects_132 = libc/machine/tic4x/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_TIC6X_TRUE@am__objects_133 = libc/machine/tic6x/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_TIC80_TRUE@am__objects_134 = libc/machine/tic80/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_V850_TRUE@am__objects_135 = libc/machine/v850/libc_a-setjmp.$(OBJEXT) +@HAVE_LIBC_MACHINE_VISIUM_TRUE@am__objects_136 = libc/machine/visium/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_VISIUM_TRUE@ libc/machine/visium/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_VISIUM_TRUE@ libc/machine/visium/libc_a-memmove.$(OBJEXT) \ @HAVE_LIBC_MACHINE_VISIUM_TRUE@ libc/machine/visium/libc_a-setjmp.$(OBJEXT) -@HAVE_LIBC_MACHINE_W65_TRUE@am__objects_136 = libc/machine/w65/libc_a-udivhi3.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_W65_TRUE@am__objects_137 = libc/machine/w65/libc_a-udivhi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/libc_a-umodhi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/libc_a-smulhi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/libc_a-lshrhi.$(OBJEXT) \ @@ -2265,13 +2279,13 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/libc_a-mulsi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/libc_a-divsi3.$(OBJEXT) \ @HAVE_LIBC_MACHINE_W65_TRUE@ libc/machine/w65/libc_a-cmpsi.$(OBJEXT) -@HAVE_LIBC_MACHINE_X86_64_TRUE@am__objects_137 = libc/machine/x86_64/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_X86_64_TRUE@am__objects_138 = libc/machine/x86_64/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_X86_64_TRUE@ libc/machine/x86_64/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_X86_64_TRUE@ libc/machine/x86_64/libc_a-memset.$(OBJEXT) -@HAVE_LIBC_MACHINE_XC16X_TRUE@am__objects_138 = libc/machine/xc16x/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XC16X_TRUE@am__objects_139 = libc/machine/xc16x/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XC16X_TRUE@ libc/machine/xc16x/libc_a-puts.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XC16X_TRUE@ libc/machine/xc16x/libc_a-putchar.$(OBJEXT) -@HAVE_LIBC_MACHINE_XSTORMY16_TRUE@am__objects_139 = libc/machine/xstormy16/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XSTORMY16_TRUE@am__objects_140 = libc/machine/xstormy16/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/libc_a-calloc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/libc_a-callocr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/libc_a-cfree.$(OBJEXT) \ @@ -2284,7 +2298,14 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/libc_a-realloc.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/libc_a-reallocr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@ libc/machine/xstormy16/libc_a-valloc.$(OBJEXT) -@HAVE_LIBC_MACHINE_Z8K_TRUE@am__objects_140 = libc/machine/z8k/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@am__objects_141 = libc/machine/xtensa/libc_a-memcpy.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/libc_a-memset.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/libc_a-setjmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/libc_a-strcmp.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/libc_a-strcpy.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/libc_a-strlen.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_XTENSA_TRUE@ libc/machine/xtensa/libc_a-strncpy.$(OBJEXT) +@HAVE_LIBC_MACHINE_Z8K_TRUE@am__objects_142 = libc/machine/z8k/libc_a-setjmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_Z8K_TRUE@ libc/machine/z8k/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_Z8K_TRUE@ libc/machine/z8k/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_Z8K_TRUE@ libc/machine/z8k/libc_a-memmove.$(OBJEXT) \ @@ -2578,7 +2599,8 @@ am_libc_a_OBJECTS = $(am__objects_1) \ $(am__objects_129) $(am__objects_130) $(am__objects_131) \ $(am__objects_132) $(am__objects_133) $(am__objects_134) \ $(am__objects_135) $(am__objects_136) $(am__objects_137) \ - $(am__objects_138) $(am__objects_139) $(am__objects_140) + $(am__objects_138) $(am__objects_139) $(am__objects_140) \ + $(am__objects_141) $(am__objects_142) libc_a_OBJECTS = $(am_libc_a_OBJECTS) libc_machine_cris_libic_a_AR = $(AR) $(ARFLAGS) @HAVE_LIBC_MACHINE_CRIS_TRUE@libc_machine_cris_libic_a_DEPENDENCIES = libc/machine/cris/libc_a-setjmp.o \ @@ -2591,7 +2613,7 @@ libc_machine_cris_libic_a_OBJECTS = \ $(am_libc_machine_cris_libic_a_OBJECTS) libm_a_AR = $(AR) $(ARFLAGS) libm_a_LIBADD = -@NEWLIB_HW_FP_TRUE@am__objects_141 = \ +@NEWLIB_HW_FP_TRUE@am__objects_143 = \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-s_acos.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-s_frexp.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-s_mathcnst.$(OBJEXT) \ @@ -2639,7 +2661,7 @@ libm_a_LIBADD = @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-s_signif.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-s_exp2.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-s_tgamma.$(OBJEXT) -@NEWLIB_HW_FP_TRUE@am__objects_142 = \ +@NEWLIB_HW_FP_TRUE@am__objects_144 = \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-sf_ceil.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-sf_acos.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-sf_frexp.$(OBJEXT) \ @@ -2687,9 +2709,9 @@ libm_a_LIBADD = @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-sf_signif.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-sf_exp2.$(OBJEXT) \ @NEWLIB_HW_FP_TRUE@ libm/mathfp/libm_a-sf_tgamma.$(OBJEXT) -@NEWLIB_HW_FP_TRUE@am__objects_143 = $(am__objects_141) \ -@NEWLIB_HW_FP_TRUE@ $(am__objects_142) -@NEWLIB_HW_FP_FALSE@am__objects_144 = \ +@NEWLIB_HW_FP_TRUE@am__objects_145 = $(am__objects_143) \ +@NEWLIB_HW_FP_TRUE@ $(am__objects_144) +@NEWLIB_HW_FP_FALSE@am__objects_146 = \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-k_standard.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-k_rem_pio2.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-k_cos.$(OBJEXT) \ @@ -2758,7 +2780,7 @@ libm_a_LIBADD = @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-s_tanh.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-w_exp2.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-w_tgamma.$(OBJEXT) -@NEWLIB_HW_FP_FALSE@am__objects_145 = \ +@NEWLIB_HW_FP_FALSE@am__objects_147 = \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-kf_rem_pio2.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-kf_cos.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-kf_sin.$(OBJEXT) \ @@ -2826,11 +2848,11 @@ libm_a_LIBADD = @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-wf_exp2.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-wf_tgamma.$(OBJEXT) \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-wf_log2.$(OBJEXT) -@NEWLIB_HW_FP_FALSE@am__objects_146 = \ +@NEWLIB_HW_FP_FALSE@am__objects_148 = \ @NEWLIB_HW_FP_FALSE@ libm/math/libm_a-el_hypot.$(OBJEXT) -@NEWLIB_HW_FP_FALSE@am__objects_147 = $(am__objects_144) \ -@NEWLIB_HW_FP_FALSE@ $(am__objects_145) $(am__objects_146) -am__objects_148 = libm/common/libm_a-s_finite.$(OBJEXT) \ +@NEWLIB_HW_FP_FALSE@am__objects_149 = $(am__objects_146) \ +@NEWLIB_HW_FP_FALSE@ $(am__objects_147) $(am__objects_148) +am__objects_150 = libm/common/libm_a-s_finite.$(OBJEXT) \ libm/common/libm_a-s_copysign.$(OBJEXT) \ libm/common/libm_a-s_modf.$(OBJEXT) \ libm/common/libm_a-s_scalbn.$(OBJEXT) \ @@ -2875,7 +2897,7 @@ am__objects_148 = libm/common/libm_a-s_finite.$(OBJEXT) \ libm/common/libm_a-log2_data.$(OBJEXT) \ libm/common/libm_a-pow.$(OBJEXT) \ libm/common/libm_a-pow_log_data.$(OBJEXT) -am__objects_149 = libm/common/libm_a-sf_finite.$(OBJEXT) \ +am__objects_151 = libm/common/libm_a-sf_finite.$(OBJEXT) \ libm/common/libm_a-sf_copysign.$(OBJEXT) \ libm/common/libm_a-sf_modf.$(OBJEXT) \ libm/common/libm_a-sf_scalbn.$(OBJEXT) \ @@ -2922,7 +2944,7 @@ am__objects_149 = libm/common/libm_a-sf_finite.$(OBJEXT) \ libm/common/libm_a-sincosf.$(OBJEXT) \ libm/common/libm_a-sincosf_data.$(OBJEXT) \ libm/common/libm_a-math_errf.$(OBJEXT) -am__objects_150 = libm/common/libm_a-atanl.$(OBJEXT) \ +am__objects_152 = libm/common/libm_a-atanl.$(OBJEXT) \ libm/common/libm_a-cosl.$(OBJEXT) \ libm/common/libm_a-sinl.$(OBJEXT) \ libm/common/libm_a-tanl.$(OBJEXT) \ @@ -2982,8 +3004,8 @@ am__objects_150 = libm/common/libm_a-atanl.$(OBJEXT) \ libm/common/libm_a-nexttowardl.$(OBJEXT) \ libm/common/libm_a-log2l.$(OBJEXT) \ libm/common/libm_a-sl_finite.$(OBJEXT) -@HAVE_LONG_DOUBLE_TRUE@am__objects_151 = $(am__objects_150) -@HAVE_FPMATH_H_TRUE@am__objects_152 = \ +@HAVE_LONG_DOUBLE_TRUE@am__objects_153 = $(am__objects_152) +@HAVE_FPMATH_H_TRUE@am__objects_154 = \ @HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_acoshl.$(OBJEXT) \ @HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_acosl.$(OBJEXT) \ @HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-e_asinl.$(OBJEXT) \ @@ -3029,9 +3051,9 @@ am__objects_150 = libm/common/libm_a-atanl.$(OBJEXT) \ @HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_tanhl.$(OBJEXT) \ @HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_tanl.$(OBJEXT) \ @HAVE_FPMATH_H_TRUE@ libm/ld/libm_a-s_truncl.$(OBJEXT) -@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_153 = \ -@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@ $(am__objects_152) -am__objects_154 = libm/complex/libm_a-cabs.$(OBJEXT) \ +@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_155 = \ +@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@ $(am__objects_154) +am__objects_156 = libm/complex/libm_a-cabs.$(OBJEXT) \ libm/complex/libm_a-cacos.$(OBJEXT) \ libm/complex/libm_a-cacosh.$(OBJEXT) \ libm/complex/libm_a-carg.$(OBJEXT) \ @@ -3055,7 +3077,7 @@ am__objects_154 = libm/complex/libm_a-cabs.$(OBJEXT) \ libm/complex/libm_a-csqrt.$(OBJEXT) \ libm/complex/libm_a-ctan.$(OBJEXT) \ libm/complex/libm_a-ctanh.$(OBJEXT) -am__objects_155 = libm/complex/libm_a-cabsf.$(OBJEXT) \ +am__objects_157 = libm/complex/libm_a-cabsf.$(OBJEXT) \ libm/complex/libm_a-casinf.$(OBJEXT) \ libm/complex/libm_a-ccosf.$(OBJEXT) \ libm/complex/libm_a-cimagf.$(OBJEXT) \ @@ -3079,7 +3101,7 @@ am__objects_155 = libm/complex/libm_a-cabsf.$(OBJEXT) \ libm/complex/libm_a-cexpf.$(OBJEXT) \ libm/complex/libm_a-cpowf.$(OBJEXT) \ libm/complex/libm_a-csinhf.$(OBJEXT) -am__objects_156 = libm/complex/libm_a-cabsl.$(OBJEXT) \ +am__objects_158 = libm/complex/libm_a-cabsl.$(OBJEXT) \ libm/complex/libm_a-creall.$(OBJEXT) \ libm/complex/libm_a-cimagl.$(OBJEXT) \ libm/complex/libm_a-ccoshl.$(OBJEXT) \ @@ -3102,7 +3124,7 @@ am__objects_156 = libm/complex/libm_a-cabsl.$(OBJEXT) \ libm/complex/libm_a-csinhl.$(OBJEXT) \ libm/complex/libm_a-csinl.$(OBJEXT) \ libm/complex/libm_a-catanl.$(OBJEXT) -am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ +am__objects_159 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ libm/fenv/libm_a-fe_dfl_env.$(OBJEXT) \ libm/fenv/libm_a-fegetenv.$(OBJEXT) \ libm/fenv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3114,7 +3136,7 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ libm/fenv/libm_a-fesetround.$(OBJEXT) \ libm/fenv/libm_a-fetestexcept.$(OBJEXT) \ libm/fenv/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_158 = libm/machine/aarch64/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_160 = libm/machine/aarch64/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-s_fabs.$(OBJEXT) \ @@ -3156,8 +3178,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_159 = $(am__objects_158) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_160 = libm/ld128/libm_a-e_powl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_161 = $(am__objects_160) +@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_162 = libm/ld128/libm_a-e_powl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_erfl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_exp2l.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_expl.$(OBJEXT) \ @@ -3167,8 +3189,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-e_lgammal_r.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-k_cosl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-k_sinl.$(OBJEXT) -@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_161 = $(am__objects_160) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_162 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_163 = $(am__objects_162) +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_164 = libm/machine/amdgcn/libm_a-v64_mathcnst.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64_reent.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acos.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64df_acosh.$(OBJEXT) \ @@ -3256,8 +3278,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tan.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tanh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AMDGCN_TRUE@ libm/machine/amdgcn/libm_a-v64sf_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_163 = $(am__objects_162) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_164 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__objects_165 = $(am__objects_164) +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_166 = libm/machine/arm/libm_a-e_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-ef_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_ceil.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-s_floor.$(OBJEXT) \ @@ -3288,8 +3310,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-feenableexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_ARM_TRUE@ libm/machine/arm/libm_a-fedisableexcept.$(OBJEXT) -@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_165 = $(am__objects_164) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_166 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_ARM_TRUE@am__objects_167 = $(am__objects_166) +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_168 = libm/machine/i386/libm_a-f_atan2.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_atan2f.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_exp.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-f_expf.$(OBJEXT) \ @@ -3326,8 +3348,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/machine/i386/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_167 = $(am__objects_166) -@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_168 = libm/ld80/libm_a-b_tgammal.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_169 = $(am__objects_168) +@HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_170 = libm/ld80/libm_a-b_tgammal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-e_powl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_erfl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-s_exp2l.$(OBJEXT) \ @@ -3339,7 +3361,7 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-e_lgammal_r.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-k_cosl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_FALSE@@HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/ld80/libm_a-k_sinl.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_168 = libm/ld80/libm_a-b_tgammal.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@am__objects_170 = libm/ld80/libm_a-b_tgammal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-e_powl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_erfl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-s_exp2l.$(OBJEXT) \ @@ -3351,8 +3373,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-e_lgammal_r.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-k_cosl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_I386_TRUE@ libm/ld80/libm_a-k_sinl.$(OBJEXT) -@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_169 = $(am__objects_168) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_170 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_171 = $(am__objects_170) +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_172 = libm/machine/mips/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fegetround.$(OBJEXT) \ @@ -3364,13 +3386,13 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_MIPS_TRUE@ libm/machine/mips/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_171 = $(am__objects_170) -@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_172 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) -@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_173 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_174 = $(am__objects_172) \ -@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_173) -@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_175 = $(am__objects_174) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_176 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_MIPS_TRUE@am__objects_173 = $(am__objects_172) +@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_174 = libm/machine/nds32/libm_a-wf_sqrt.$(OBJEXT) +@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_175 = libm/machine/nds32/libm_a-w_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_176 = $(am__objects_174) \ +@HAVE_LIBM_MACHINE_NDS32_TRUE@ $(am__objects_175) +@HAVE_LIBM_MACHINE_NDS32_TRUE@am__objects_177 = $(am__objects_176) +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_178 = libm/machine/powerpc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fegetround.$(OBJEXT) \ @@ -3382,8 +3404,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_POWERPC_TRUE@ libm/machine/powerpc/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_177 = $(am__objects_176) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_178 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__objects_179 = $(am__objects_178) +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_180 = libm/machine/pru/libm_a-fpclassify.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-fpclassifyf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinite.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isfinitef.$(OBJEXT) \ @@ -3393,8 +3415,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnanf.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormal.$(OBJEXT) \ @HAVE_LIBM_MACHINE_PRU_TRUE@ libm/machine/pru/libm_a-isnormalf.$(OBJEXT) -@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_179 = $(am__objects_178) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_180 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_PRU_TRUE@am__objects_181 = $(am__objects_180) +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_182 = libm/machine/sparc/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fegetround.$(OBJEXT) \ @@ -3406,8 +3428,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-feupdateenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPARC_TRUE@ libm/machine/sparc/libm_a-fenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_181 = $(am__objects_180) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_182 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPARC_TRUE@am__objects_183 = $(am__objects_182) +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_184 = libm/machine/spu/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3532,8 +3554,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sinh.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_sqrt.$(OBJEXT) \ @HAVE_LIBM_MACHINE_SPU_TRUE@ libm/machine/spu/libm_a-w_tgamma.$(OBJEXT) -@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_183 = $(am__objects_182) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_184 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_SPU_TRUE@am__objects_185 = $(am__objects_184) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_186 = libm/machine/riscv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fe_dfl_env.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3573,8 +3595,8 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llrint.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-s_llround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llround.$(OBJEXT) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_185 = $(am__objects_184) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_186 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_187 = $(am__objects_186) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_188 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetround.$(OBJEXT) \ @@ -3586,17 +3608,29 @@ am__objects_157 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_187 = $(am__objects_186) -@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_188 = $(am__objects_168) -am_libm_a_OBJECTS = $(am__objects_143) $(am__objects_147) \ - $(am__objects_148) $(am__objects_149) $(am__objects_151) \ - $(am__objects_153) $(am__objects_154) $(am__objects_155) \ - $(am__objects_156) $(am__objects_157) $(am__objects_159) \ - $(am__objects_161) $(am__objects_163) $(am__objects_165) \ - $(am__objects_167) $(am__objects_169) $(am__objects_171) \ - $(am__objects_175) $(am__objects_177) $(am__objects_179) \ - $(am__objects_181) $(am__objects_183) $(am__objects_185) \ - $(am__objects_187) $(am__objects_188) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_189 = $(am__objects_188) +@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_190 = $(am__objects_170) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__objects_191 = libm/machine/xtensa/libm_a-ef_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__objects_192 = libm/machine/xtensa/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetenv.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetexceptflag.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetround.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-feholdexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-feraiseexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fetestexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-feupdateenv.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ $(am__objects_191) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__objects_193 = $(am__objects_192) +am_libm_a_OBJECTS = $(am__objects_145) $(am__objects_149) \ + $(am__objects_150) $(am__objects_151) $(am__objects_153) \ + $(am__objects_155) $(am__objects_156) $(am__objects_157) \ + $(am__objects_158) $(am__objects_159) $(am__objects_161) \ + $(am__objects_163) $(am__objects_165) $(am__objects_167) \ + $(am__objects_169) $(am__objects_171) $(am__objects_173) \ + $(am__objects_177) $(am__objects_179) $(am__objects_181) \ + $(am__objects_183) $(am__objects_185) $(am__objects_187) \ + $(am__objects_189) $(am__objects_190) $(am__objects_193) libm_a_OBJECTS = $(am_libm_a_OBJECTS) am_libm_test_test_OBJECTS = libm/test/test.$(OBJEXT) \ libm/test/string.$(OBJEXT) libm/test/convert.$(OBJEXT) \ @@ -3951,7 +3985,7 @@ AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$( libc/sys/xtensa/$(am__dirstamp) +libc/sys/xtensa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libc/sys/xtensa/$(DEPDIR) + @: > libc/sys/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/sys/xtensa/libc_a-creat.$(OBJEXT): \ + libc/sys/xtensa/$(am__dirstamp) \ + libc/sys/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/sys/xtensa/libc_a-isatty.$(OBJEXT): \ + libc/sys/xtensa/$(am__dirstamp) \ + libc/sys/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/sys/xtensa/libc_a-clibrary_init.$(OBJEXT): \ + libc/sys/xtensa/$(am__dirstamp) \ + libc/sys/xtensa/$(DEPDIR)/$(am__dirstamp) libc/sys/z8ksim/$(am__dirstamp): @$(MKDIR_P) libc/sys/z8ksim @: > libc/sys/z8ksim/$(am__dirstamp) @@ -9643,6 +9707,33 @@ libc/machine/xstormy16/libc_a-reallocr.$(OBJEXT): \ libc/machine/xstormy16/libc_a-valloc.$(OBJEXT): \ libc/machine/xstormy16/$(am__dirstamp) \ libc/machine/xstormy16/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/$(am__dirstamp): + @$(MKDIR_P) libc/machine/xtensa + @: > libc/machine/xtensa/$(am__dirstamp) +libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libc/machine/xtensa/$(DEPDIR) + @: > libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-memcpy.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-memset.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-setjmp.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-strcmp.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-strcpy.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-strlen.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libc/machine/xtensa/libc_a-strncpy.$(OBJEXT): \ + libc/machine/xtensa/$(am__dirstamp) \ + libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) libc/machine/z8k/$(am__dirstamp): @$(MKDIR_P) libc/machine/z8k @: > libc/machine/z8k/$(am__dirstamp) @@ -12134,6 +12225,42 @@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT): \ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT): \ libm/machine/x86_64/$(am__dirstamp) \ libm/machine/x86_64/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/$(am__dirstamp): + @$(MKDIR_P) libm/machine/xtensa + @: > libm/machine/xtensa/$(am__dirstamp) +libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) libm/machine/xtensa/$(DEPDIR) + @: > libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-feclearexcept.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-fegetenv.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-fegetexcept.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-fegetexceptflag.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-fegetround.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-feholdexcept.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-feraiseexcept.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-fetestexcept.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-feupdateenv.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) +libm/machine/xtensa/libm_a-ef_sqrt.$(OBJEXT): \ + libm/machine/xtensa/$(am__dirstamp) \ + libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) @@ -12370,6 +12497,7 @@ mostlyclean-compile: -rm -f libc/machine/x86_64/*.$(OBJEXT) -rm -f libc/machine/xc16x/*.$(OBJEXT) -rm -f libc/machine/xstormy16/*.$(OBJEXT) + -rm -f libc/machine/xtensa/*.$(OBJEXT) -rm -f libc/machine/z8k/*.$(OBJEXT) -rm -f libc/misc/*.$(OBJEXT) -rm -f libc/posix/*.$(OBJEXT) @@ -12402,6 +12530,7 @@ mostlyclean-compile: -rm -f libc/sys/sysvnecv70/*.$(OBJEXT) -rm -f libc/sys/tirtos/*.$(OBJEXT) -rm -f libc/sys/w65/*.$(OBJEXT) + -rm -f libc/sys/xtensa/*.$(OBJEXT) -rm -f libc/sys/z8ksim/*.$(OBJEXT) -rm -f libc/syscalls/*.$(OBJEXT) -rm -f libc/time/*.$(OBJEXT) @@ -12425,6 +12554,7 @@ mostlyclean-compile: -rm -f libm/machine/sparc/*.$(OBJEXT) -rm -f libm/machine/spu/*.$(OBJEXT) -rm -f libm/machine/x86_64/*.$(OBJEXT) + -rm -f libm/machine/xtensa/*.$(OBJEXT) -rm -f libm/math/*.$(OBJEXT) -rm -f libm/mathfp/*.$(OBJEXT) -rm -f libm/test/*.$(OBJEXT) @@ -13047,6 +13177,13 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xstormy16/$(DEPDIR)/libc_a-reallocr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xstormy16/$(DEPDIR)/libc_a-setjmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xstormy16/$(DEPDIR)/libc_a-valloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/z8k/$(DEPDIR)/libc_a-memcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/z8k/$(DEPDIR)/libc_a-memcpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/z8k/$(DEPDIR)/libc_a-memmove.Po@am__quote@ @@ -13852,6 +13989,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/tirtos/$(DEPDIR)/libc_a-lock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/w65/$(DEPDIR)/libc_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/w65/$(DEPDIR)/libc_a-trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/z8ksim/$(DEPDIR)/libc_a-glue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/syscalls/$(DEPDIR)/libc_a-sysclose.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/syscalls/$(DEPDIR)/libc_a-sysexecve.Po@am__quote@ @@ -14641,6 +14781,16 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/x86_64/$(DEPDIR)/libm_a-fesetround.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/x86_64/$(DEPDIR)/libm_a-fetestexcept.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/machine/x86_64/$(DEPDIR)/libm_a-feupdateenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/math/$(DEPDIR)/libm_a-e_acos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/math/$(DEPDIR)/libm_a-e_acosh.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libm/math/$(DEPDIR)/libm_a-e_asin.Po@am__quote@ @@ -19557,6 +19707,104 @@ libc/machine/xstormy16/libc_a-setjmp.obj: libc/machine/xstormy16/setjmp.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xstormy16/libc_a-setjmp.obj `if test -f 'libc/machine/xstormy16/setjmp.S'; then $(CYGPATH_W) 'libc/machine/xstormy16/setjmp.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xstormy16/setjmp.S'; fi` +libc/machine/xtensa/libc_a-memcpy.o: libc/machine/xtensa/memcpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-memcpy.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Tpo -c -o libc/machine/xtensa/libc_a-memcpy.o `test -f 'libc/machine/xtensa/memcpy.S' || echo '$(srcdir)/'`libc/machine/xtensa/memcpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/memcpy.S' object='libc/machine/xtensa/libc_a-memcpy.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-memcpy.o `test -f 'libc/machine/xtensa/memcpy.S' || echo '$(srcdir)/'`libc/machine/xtensa/memcpy.S + +libc/machine/xtensa/libc_a-memcpy.obj: libc/machine/xtensa/memcpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-memcpy.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Tpo -c -o libc/machine/xtensa/libc_a-memcpy.obj `if test -f 'libc/machine/xtensa/memcpy.S'; then $(CYGPATH_W) 'libc/machine/xtensa/memcpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/memcpy.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-memcpy.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/memcpy.S' object='libc/machine/xtensa/libc_a-memcpy.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-memcpy.obj `if test -f 'libc/machine/xtensa/memcpy.S'; then $(CYGPATH_W) 'libc/machine/xtensa/memcpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/memcpy.S'; fi` + +libc/machine/xtensa/libc_a-memset.o: libc/machine/xtensa/memset.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-memset.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Tpo -c -o libc/machine/xtensa/libc_a-memset.o `test -f 'libc/machine/xtensa/memset.S' || echo '$(srcdir)/'`libc/machine/xtensa/memset.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/memset.S' object='libc/machine/xtensa/libc_a-memset.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-memset.o `test -f 'libc/machine/xtensa/memset.S' || echo '$(srcdir)/'`libc/machine/xtensa/memset.S + +libc/machine/xtensa/libc_a-memset.obj: libc/machine/xtensa/memset.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-memset.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Tpo -c -o libc/machine/xtensa/libc_a-memset.obj `if test -f 'libc/machine/xtensa/memset.S'; then $(CYGPATH_W) 'libc/machine/xtensa/memset.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/memset.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-memset.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/memset.S' object='libc/machine/xtensa/libc_a-memset.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-memset.obj `if test -f 'libc/machine/xtensa/memset.S'; then $(CYGPATH_W) 'libc/machine/xtensa/memset.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/memset.S'; fi` + +libc/machine/xtensa/libc_a-setjmp.o: libc/machine/xtensa/setjmp.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-setjmp.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Tpo -c -o libc/machine/xtensa/libc_a-setjmp.o `test -f 'libc/machine/xtensa/setjmp.S' || echo '$(srcdir)/'`libc/machine/xtensa/setjmp.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/setjmp.S' object='libc/machine/xtensa/libc_a-setjmp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-setjmp.o `test -f 'libc/machine/xtensa/setjmp.S' || echo '$(srcdir)/'`libc/machine/xtensa/setjmp.S + +libc/machine/xtensa/libc_a-setjmp.obj: libc/machine/xtensa/setjmp.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-setjmp.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Tpo -c -o libc/machine/xtensa/libc_a-setjmp.obj `if test -f 'libc/machine/xtensa/setjmp.S'; then $(CYGPATH_W) 'libc/machine/xtensa/setjmp.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/setjmp.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-setjmp.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/setjmp.S' object='libc/machine/xtensa/libc_a-setjmp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-setjmp.obj `if test -f 'libc/machine/xtensa/setjmp.S'; then $(CYGPATH_W) 'libc/machine/xtensa/setjmp.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/setjmp.S'; fi` + +libc/machine/xtensa/libc_a-strcmp.o: libc/machine/xtensa/strcmp.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strcmp.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Tpo -c -o libc/machine/xtensa/libc_a-strcmp.o `test -f 'libc/machine/xtensa/strcmp.S' || echo '$(srcdir)/'`libc/machine/xtensa/strcmp.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strcmp.S' object='libc/machine/xtensa/libc_a-strcmp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strcmp.o `test -f 'libc/machine/xtensa/strcmp.S' || echo '$(srcdir)/'`libc/machine/xtensa/strcmp.S + +libc/machine/xtensa/libc_a-strcmp.obj: libc/machine/xtensa/strcmp.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strcmp.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Tpo -c -o libc/machine/xtensa/libc_a-strcmp.obj `if test -f 'libc/machine/xtensa/strcmp.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strcmp.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strcmp.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strcmp.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strcmp.S' object='libc/machine/xtensa/libc_a-strcmp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strcmp.obj `if test -f 'libc/machine/xtensa/strcmp.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strcmp.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strcmp.S'; fi` + +libc/machine/xtensa/libc_a-strcpy.o: libc/machine/xtensa/strcpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strcpy.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Tpo -c -o libc/machine/xtensa/libc_a-strcpy.o `test -f 'libc/machine/xtensa/strcpy.S' || echo '$(srcdir)/'`libc/machine/xtensa/strcpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strcpy.S' object='libc/machine/xtensa/libc_a-strcpy.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strcpy.o `test -f 'libc/machine/xtensa/strcpy.S' || echo '$(srcdir)/'`libc/machine/xtensa/strcpy.S + +libc/machine/xtensa/libc_a-strcpy.obj: libc/machine/xtensa/strcpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strcpy.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Tpo -c -o libc/machine/xtensa/libc_a-strcpy.obj `if test -f 'libc/machine/xtensa/strcpy.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strcpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strcpy.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strcpy.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strcpy.S' object='libc/machine/xtensa/libc_a-strcpy.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strcpy.obj `if test -f 'libc/machine/xtensa/strcpy.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strcpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strcpy.S'; fi` + +libc/machine/xtensa/libc_a-strlen.o: libc/machine/xtensa/strlen.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strlen.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Tpo -c -o libc/machine/xtensa/libc_a-strlen.o `test -f 'libc/machine/xtensa/strlen.S' || echo '$(srcdir)/'`libc/machine/xtensa/strlen.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strlen.S' object='libc/machine/xtensa/libc_a-strlen.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strlen.o `test -f 'libc/machine/xtensa/strlen.S' || echo '$(srcdir)/'`libc/machine/xtensa/strlen.S + +libc/machine/xtensa/libc_a-strlen.obj: libc/machine/xtensa/strlen.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strlen.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Tpo -c -o libc/machine/xtensa/libc_a-strlen.obj `if test -f 'libc/machine/xtensa/strlen.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strlen.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strlen.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strlen.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strlen.S' object='libc/machine/xtensa/libc_a-strlen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strlen.obj `if test -f 'libc/machine/xtensa/strlen.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strlen.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strlen.S'; fi` + +libc/machine/xtensa/libc_a-strncpy.o: libc/machine/xtensa/strncpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strncpy.o -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Tpo -c -o libc/machine/xtensa/libc_a-strncpy.o `test -f 'libc/machine/xtensa/strncpy.S' || echo '$(srcdir)/'`libc/machine/xtensa/strncpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strncpy.S' object='libc/machine/xtensa/libc_a-strncpy.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strncpy.o `test -f 'libc/machine/xtensa/strncpy.S' || echo '$(srcdir)/'`libc/machine/xtensa/strncpy.S + +libc/machine/xtensa/libc_a-strncpy.obj: libc/machine/xtensa/strncpy.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/xtensa/libc_a-strncpy.obj -MD -MP -MF libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Tpo -c -o libc/machine/xtensa/libc_a-strncpy.obj `if test -f 'libc/machine/xtensa/strncpy.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strncpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strncpy.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Tpo libc/machine/xtensa/$(DEPDIR)/libc_a-strncpy.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/xtensa/strncpy.S' object='libc/machine/xtensa/libc_a-strncpy.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/xtensa/libc_a-strncpy.obj `if test -f 'libc/machine/xtensa/strncpy.S'; then $(CYGPATH_W) 'libc/machine/xtensa/strncpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/xtensa/strncpy.S'; fi` + libc/machine/z8k/libc_a-setjmp.o: libc/machine/z8k/setjmp.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/z8k/libc_a-setjmp.o -MD -MP -MF libc/machine/z8k/$(DEPDIR)/libc_a-setjmp.Tpo -c -o libc/machine/z8k/libc_a-setjmp.o `test -f 'libc/machine/z8k/setjmp.S' || echo '$(srcdir)/'`libc/machine/z8k/setjmp.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/z8k/$(DEPDIR)/libc_a-setjmp.Tpo libc/machine/z8k/$(DEPDIR)/libc_a-setjmp.Po @@ -32621,6 +32869,48 @@ libc/sys/w65/libc_a-trap.obj: libc/sys/w65/trap.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/w65/libc_a-trap.obj `if test -f 'libc/sys/w65/trap.c'; then $(CYGPATH_W) 'libc/sys/w65/trap.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/w65/trap.c'; fi` +libc/sys/xtensa/libc_a-creat.o: libc/sys/xtensa/creat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/xtensa/libc_a-creat.o -MD -MP -MF libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Tpo -c -o libc/sys/xtensa/libc_a-creat.o `test -f 'libc/sys/xtensa/creat.c' || echo '$(srcdir)/'`libc/sys/xtensa/creat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Tpo libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/sys/xtensa/creat.c' object='libc/sys/xtensa/libc_a-creat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/xtensa/libc_a-creat.o `test -f 'libc/sys/xtensa/creat.c' || echo '$(srcdir)/'`libc/sys/xtensa/creat.c + +libc/sys/xtensa/libc_a-creat.obj: libc/sys/xtensa/creat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/xtensa/libc_a-creat.obj -MD -MP -MF libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Tpo -c -o libc/sys/xtensa/libc_a-creat.obj `if test -f 'libc/sys/xtensa/creat.c'; then $(CYGPATH_W) 'libc/sys/xtensa/creat.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/xtensa/creat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Tpo libc/sys/xtensa/$(DEPDIR)/libc_a-creat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/sys/xtensa/creat.c' object='libc/sys/xtensa/libc_a-creat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/xtensa/libc_a-creat.obj `if test -f 'libc/sys/xtensa/creat.c'; then $(CYGPATH_W) 'libc/sys/xtensa/creat.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/xtensa/creat.c'; fi` + +libc/sys/xtensa/libc_a-isatty.o: libc/sys/xtensa/isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/xtensa/libc_a-isatty.o -MD -MP -MF libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Tpo -c -o libc/sys/xtensa/libc_a-isatty.o `test -f 'libc/sys/xtensa/isatty.c' || echo '$(srcdir)/'`libc/sys/xtensa/isatty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Tpo libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/sys/xtensa/isatty.c' object='libc/sys/xtensa/libc_a-isatty.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/xtensa/libc_a-isatty.o `test -f 'libc/sys/xtensa/isatty.c' || echo '$(srcdir)/'`libc/sys/xtensa/isatty.c + +libc/sys/xtensa/libc_a-isatty.obj: libc/sys/xtensa/isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/xtensa/libc_a-isatty.obj -MD -MP -MF libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Tpo -c -o libc/sys/xtensa/libc_a-isatty.obj `if test -f 'libc/sys/xtensa/isatty.c'; then $(CYGPATH_W) 'libc/sys/xtensa/isatty.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/xtensa/isatty.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Tpo libc/sys/xtensa/$(DEPDIR)/libc_a-isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/sys/xtensa/isatty.c' object='libc/sys/xtensa/libc_a-isatty.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/xtensa/libc_a-isatty.obj `if test -f 'libc/sys/xtensa/isatty.c'; then $(CYGPATH_W) 'libc/sys/xtensa/isatty.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/xtensa/isatty.c'; fi` + +libc/sys/xtensa/libc_a-clibrary_init.o: libc/sys/xtensa/clibrary_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/xtensa/libc_a-clibrary_init.o -MD -MP -MF libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Tpo -c -o libc/sys/xtensa/libc_a-clibrary_init.o `test -f 'libc/sys/xtensa/clibrary_init.c' || echo '$(srcdir)/'`libc/sys/xtensa/clibrary_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Tpo libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/sys/xtensa/clibrary_init.c' object='libc/sys/xtensa/libc_a-clibrary_init.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/xtensa/libc_a-clibrary_init.o `test -f 'libc/sys/xtensa/clibrary_init.c' || echo '$(srcdir)/'`libc/sys/xtensa/clibrary_init.c + +libc/sys/xtensa/libc_a-clibrary_init.obj: libc/sys/xtensa/clibrary_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/xtensa/libc_a-clibrary_init.obj -MD -MP -MF libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Tpo -c -o libc/sys/xtensa/libc_a-clibrary_init.obj `if test -f 'libc/sys/xtensa/clibrary_init.c'; then $(CYGPATH_W) 'libc/sys/xtensa/clibrary_init.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/xtensa/clibrary_init.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Tpo libc/sys/xtensa/$(DEPDIR)/libc_a-clibrary_init.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/sys/xtensa/clibrary_init.c' object='libc/sys/xtensa/libc_a-clibrary_init.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/xtensa/libc_a-clibrary_init.obj `if test -f 'libc/sys/xtensa/clibrary_init.c'; then $(CYGPATH_W) 'libc/sys/xtensa/clibrary_init.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/xtensa/clibrary_init.c'; fi` + libc/sys/z8ksim/libc_a-glue.o: libc/sys/z8ksim/glue.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/z8ksim/libc_a-glue.o -MD -MP -MF libc/sys/z8ksim/$(DEPDIR)/libc_a-glue.Tpo -c -o libc/sys/z8ksim/libc_a-glue.o `test -f 'libc/sys/z8ksim/glue.c' || echo '$(srcdir)/'`libc/sys/z8ksim/glue.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/sys/z8ksim/$(DEPDIR)/libc_a-glue.Tpo libc/sys/z8ksim/$(DEPDIR)/libc_a-glue.Po @@ -49113,6 +49403,146 @@ libm/machine/x86_64/libm_a-feupdateenv.obj: libm/machine/x86_64/feupdateenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/x86_64/libm_a-feupdateenv.obj `if test -f 'libm/machine/x86_64/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/x86_64/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/x86_64/feupdateenv.c'; fi` +libm/machine/xtensa/libm_a-feclearexcept.o: libm/machine/xtensa/feclearexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feclearexcept.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Tpo -c -o libm/machine/xtensa/libm_a-feclearexcept.o `test -f 'libm/machine/xtensa/feclearexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/feclearexcept.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feclearexcept.c' object='libm/machine/xtensa/libm_a-feclearexcept.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feclearexcept.o `test -f 'libm/machine/xtensa/feclearexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/feclearexcept.c + +libm/machine/xtensa/libm_a-feclearexcept.obj: libm/machine/xtensa/feclearexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feclearexcept.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Tpo -c -o libm/machine/xtensa/libm_a-feclearexcept.obj `if test -f 'libm/machine/xtensa/feclearexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feclearexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feclearexcept.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feclearexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feclearexcept.c' object='libm/machine/xtensa/libm_a-feclearexcept.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feclearexcept.obj `if test -f 'libm/machine/xtensa/feclearexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feclearexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feclearexcept.c'; fi` + +libm/machine/xtensa/libm_a-fegetenv.o: libm/machine/xtensa/fegetenv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetenv.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Tpo -c -o libm/machine/xtensa/libm_a-fegetenv.o `test -f 'libm/machine/xtensa/fegetenv.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetenv.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetenv.c' object='libm/machine/xtensa/libm_a-fegetenv.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetenv.o `test -f 'libm/machine/xtensa/fegetenv.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetenv.c + +libm/machine/xtensa/libm_a-fegetenv.obj: libm/machine/xtensa/fegetenv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetenv.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Tpo -c -o libm/machine/xtensa/libm_a-fegetenv.obj `if test -f 'libm/machine/xtensa/fegetenv.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetenv.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetenv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetenv.c' object='libm/machine/xtensa/libm_a-fegetenv.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetenv.obj `if test -f 'libm/machine/xtensa/fegetenv.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetenv.c'; fi` + +libm/machine/xtensa/libm_a-fegetexcept.o: libm/machine/xtensa/fegetexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetexcept.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Tpo -c -o libm/machine/xtensa/libm_a-fegetexcept.o `test -f 'libm/machine/xtensa/fegetexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetexcept.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetexcept.c' object='libm/machine/xtensa/libm_a-fegetexcept.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetexcept.o `test -f 'libm/machine/xtensa/fegetexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetexcept.c + +libm/machine/xtensa/libm_a-fegetexcept.obj: libm/machine/xtensa/fegetexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetexcept.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Tpo -c -o libm/machine/xtensa/libm_a-fegetexcept.obj `if test -f 'libm/machine/xtensa/fegetexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetexcept.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetexcept.c' object='libm/machine/xtensa/libm_a-fegetexcept.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetexcept.obj `if test -f 'libm/machine/xtensa/fegetexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetexcept.c'; fi` + +libm/machine/xtensa/libm_a-fegetexceptflag.o: libm/machine/xtensa/fegetexceptflag.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetexceptflag.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Tpo -c -o libm/machine/xtensa/libm_a-fegetexceptflag.o `test -f 'libm/machine/xtensa/fegetexceptflag.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetexceptflag.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetexceptflag.c' object='libm/machine/xtensa/libm_a-fegetexceptflag.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetexceptflag.o `test -f 'libm/machine/xtensa/fegetexceptflag.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetexceptflag.c + +libm/machine/xtensa/libm_a-fegetexceptflag.obj: libm/machine/xtensa/fegetexceptflag.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetexceptflag.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Tpo -c -o libm/machine/xtensa/libm_a-fegetexceptflag.obj `if test -f 'libm/machine/xtensa/fegetexceptflag.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetexceptflag.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetexceptflag.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetexceptflag.c' object='libm/machine/xtensa/libm_a-fegetexceptflag.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetexceptflag.obj `if test -f 'libm/machine/xtensa/fegetexceptflag.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetexceptflag.c'; fi` + +libm/machine/xtensa/libm_a-fegetround.o: libm/machine/xtensa/fegetround.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetround.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Tpo -c -o libm/machine/xtensa/libm_a-fegetround.o `test -f 'libm/machine/xtensa/fegetround.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetround.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetround.c' object='libm/machine/xtensa/libm_a-fegetround.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetround.o `test -f 'libm/machine/xtensa/fegetround.c' || echo '$(srcdir)/'`libm/machine/xtensa/fegetround.c + +libm/machine/xtensa/libm_a-fegetround.obj: libm/machine/xtensa/fegetround.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fegetround.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Tpo -c -o libm/machine/xtensa/libm_a-fegetround.obj `if test -f 'libm/machine/xtensa/fegetround.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetround.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetround.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fegetround.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fegetround.c' object='libm/machine/xtensa/libm_a-fegetround.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fegetround.obj `if test -f 'libm/machine/xtensa/fegetround.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fegetround.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fegetround.c'; fi` + +libm/machine/xtensa/libm_a-feholdexcept.o: libm/machine/xtensa/feholdexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feholdexcept.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Tpo -c -o libm/machine/xtensa/libm_a-feholdexcept.o `test -f 'libm/machine/xtensa/feholdexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/feholdexcept.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feholdexcept.c' object='libm/machine/xtensa/libm_a-feholdexcept.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feholdexcept.o `test -f 'libm/machine/xtensa/feholdexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/feholdexcept.c + +libm/machine/xtensa/libm_a-feholdexcept.obj: libm/machine/xtensa/feholdexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feholdexcept.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Tpo -c -o libm/machine/xtensa/libm_a-feholdexcept.obj `if test -f 'libm/machine/xtensa/feholdexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feholdexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feholdexcept.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feholdexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feholdexcept.c' object='libm/machine/xtensa/libm_a-feholdexcept.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feholdexcept.obj `if test -f 'libm/machine/xtensa/feholdexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feholdexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feholdexcept.c'; fi` + +libm/machine/xtensa/libm_a-feraiseexcept.o: libm/machine/xtensa/feraiseexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feraiseexcept.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Tpo -c -o libm/machine/xtensa/libm_a-feraiseexcept.o `test -f 'libm/machine/xtensa/feraiseexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/feraiseexcept.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feraiseexcept.c' object='libm/machine/xtensa/libm_a-feraiseexcept.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feraiseexcept.o `test -f 'libm/machine/xtensa/feraiseexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/feraiseexcept.c + +libm/machine/xtensa/libm_a-feraiseexcept.obj: libm/machine/xtensa/feraiseexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feraiseexcept.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Tpo -c -o libm/machine/xtensa/libm_a-feraiseexcept.obj `if test -f 'libm/machine/xtensa/feraiseexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feraiseexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feraiseexcept.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feraiseexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feraiseexcept.c' object='libm/machine/xtensa/libm_a-feraiseexcept.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feraiseexcept.obj `if test -f 'libm/machine/xtensa/feraiseexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feraiseexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feraiseexcept.c'; fi` + +libm/machine/xtensa/libm_a-fetestexcept.o: libm/machine/xtensa/fetestexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fetestexcept.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Tpo -c -o libm/machine/xtensa/libm_a-fetestexcept.o `test -f 'libm/machine/xtensa/fetestexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/fetestexcept.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fetestexcept.c' object='libm/machine/xtensa/libm_a-fetestexcept.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fetestexcept.o `test -f 'libm/machine/xtensa/fetestexcept.c' || echo '$(srcdir)/'`libm/machine/xtensa/fetestexcept.c + +libm/machine/xtensa/libm_a-fetestexcept.obj: libm/machine/xtensa/fetestexcept.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-fetestexcept.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Tpo -c -o libm/machine/xtensa/libm_a-fetestexcept.obj `if test -f 'libm/machine/xtensa/fetestexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fetestexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fetestexcept.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-fetestexcept.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/fetestexcept.c' object='libm/machine/xtensa/libm_a-fetestexcept.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-fetestexcept.obj `if test -f 'libm/machine/xtensa/fetestexcept.c'; then $(CYGPATH_W) 'libm/machine/xtensa/fetestexcept.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/fetestexcept.c'; fi` + +libm/machine/xtensa/libm_a-feupdateenv.o: libm/machine/xtensa/feupdateenv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feupdateenv.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Tpo -c -o libm/machine/xtensa/libm_a-feupdateenv.o `test -f 'libm/machine/xtensa/feupdateenv.c' || echo '$(srcdir)/'`libm/machine/xtensa/feupdateenv.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feupdateenv.c' object='libm/machine/xtensa/libm_a-feupdateenv.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feupdateenv.o `test -f 'libm/machine/xtensa/feupdateenv.c' || echo '$(srcdir)/'`libm/machine/xtensa/feupdateenv.c + +libm/machine/xtensa/libm_a-feupdateenv.obj: libm/machine/xtensa/feupdateenv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-feupdateenv.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Tpo -c -o libm/machine/xtensa/libm_a-feupdateenv.obj `if test -f 'libm/machine/xtensa/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feupdateenv.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-feupdateenv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/feupdateenv.c' object='libm/machine/xtensa/libm_a-feupdateenv.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-feupdateenv.obj `if test -f 'libm/machine/xtensa/feupdateenv.c'; then $(CYGPATH_W) 'libm/machine/xtensa/feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/feupdateenv.c'; fi` + +libm/machine/xtensa/libm_a-ef_sqrt.o: libm/machine/xtensa/ef_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-ef_sqrt.o -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Tpo -c -o libm/machine/xtensa/libm_a-ef_sqrt.o `test -f 'libm/machine/xtensa/ef_sqrt.c' || echo '$(srcdir)/'`libm/machine/xtensa/ef_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/ef_sqrt.c' object='libm/machine/xtensa/libm_a-ef_sqrt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-ef_sqrt.o `test -f 'libm/machine/xtensa/ef_sqrt.c' || echo '$(srcdir)/'`libm/machine/xtensa/ef_sqrt.c + +libm/machine/xtensa/libm_a-ef_sqrt.obj: libm/machine/xtensa/ef_sqrt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -MT libm/machine/xtensa/libm_a-ef_sqrt.obj -MD -MP -MF libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Tpo -c -o libm/machine/xtensa/libm_a-ef_sqrt.obj `if test -f 'libm/machine/xtensa/ef_sqrt.c'; then $(CYGPATH_W) 'libm/machine/xtensa/ef_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/ef_sqrt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Tpo libm/machine/xtensa/$(DEPDIR)/libm_a-ef_sqrt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libm/machine/xtensa/ef_sqrt.c' object='libm/machine/xtensa/libm_a-ef_sqrt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libm_a_CPPFLAGS) $(CPPFLAGS) $(libm_a_CFLAGS) $(CFLAGS) -c -o libm/machine/xtensa/libm_a-ef_sqrt.obj `if test -f 'libm/machine/xtensa/ef_sqrt.c'; then $(CYGPATH_W) 'libm/machine/xtensa/ef_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/libm/machine/xtensa/ef_sqrt.c'; fi` + .s.o: $(AM_V_CCAS)$(CCASCOMPILE) -c -o $@ $< @@ -49580,6 +50010,8 @@ distclean-generic: -rm -f libc/machine/xc16x/$(am__dirstamp) -rm -f libc/machine/xstormy16/$(DEPDIR)/$(am__dirstamp) -rm -f libc/machine/xstormy16/$(am__dirstamp) + -rm -f libc/machine/xtensa/$(DEPDIR)/$(am__dirstamp) + -rm -f libc/machine/xtensa/$(am__dirstamp) -rm -f libc/machine/z8k/$(DEPDIR)/$(am__dirstamp) -rm -f libc/machine/z8k/$(am__dirstamp) -rm -f libc/misc/$(DEPDIR)/$(am__dirstamp) @@ -49644,6 +50076,8 @@ distclean-generic: -rm -f libc/sys/tirtos/$(am__dirstamp) -rm -f libc/sys/w65/$(DEPDIR)/$(am__dirstamp) -rm -f libc/sys/w65/$(am__dirstamp) + -rm -f libc/sys/xtensa/$(DEPDIR)/$(am__dirstamp) + -rm -f libc/sys/xtensa/$(am__dirstamp) -rm -f libc/sys/z8ksim/$(DEPDIR)/$(am__dirstamp) -rm -f libc/sys/z8ksim/$(am__dirstamp) -rm -f libc/syscalls/$(DEPDIR)/$(am__dirstamp) @@ -49691,6 +50125,8 @@ distclean-generic: -rm -f libm/machine/spu/$(am__dirstamp) -rm -f libm/machine/x86_64/$(DEPDIR)/$(am__dirstamp) -rm -f libm/machine/x86_64/$(am__dirstamp) + -rm -f libm/machine/xtensa/$(DEPDIR)/$(am__dirstamp) + -rm -f libm/machine/xtensa/$(am__dirstamp) -rm -f libm/math/$(DEPDIR)/$(am__dirstamp) -rm -f libm/math/$(am__dirstamp) -rm -f libm/mathfp/$(DEPDIR)/$(am__dirstamp) @@ -49708,7 +50144,7 @@ clean-am: clean-aminfo clean-checkPROGRAMS clean-generic clean-local \ distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/ld/$(DEPDIR) libm/ld128/$(DEPDIR) libm/ld80/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/xtensa/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/xtensa/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/ld/$(DEPDIR) libm/ld128/$(DEPDIR) libm/ld80/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/machine/xtensa/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-compile \ distclean-generic distclean-hdr distclean-local distclean-tags @@ -49846,7 +50282,7 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/ld/$(DEPDIR) libm/ld128/$(DEPDIR) libm/ld80/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) + -rm -rf libc/argz/$(DEPDIR) libc/ctype/$(DEPDIR) libc/errno/$(DEPDIR) libc/iconv/ccs/$(DEPDIR) libc/iconv/ces/$(DEPDIR) libc/iconv/lib/$(DEPDIR) libc/locale/$(DEPDIR) libc/machine/aarch64/$(DEPDIR) libc/machine/amdgcn/$(DEPDIR) libc/machine/arc/$(DEPDIR) libc/machine/arm/$(DEPDIR) libc/machine/bfin/$(DEPDIR) libc/machine/cr16/$(DEPDIR) libc/machine/cris/$(DEPDIR) libc/machine/crx/$(DEPDIR) libc/machine/csky/$(DEPDIR) libc/machine/d10v/$(DEPDIR) libc/machine/d30v/$(DEPDIR) libc/machine/epiphany/$(DEPDIR) libc/machine/fr30/$(DEPDIR) libc/machine/frv/$(DEPDIR) libc/machine/ft32/$(DEPDIR) libc/machine/h8300/$(DEPDIR) libc/machine/h8500/$(DEPDIR) libc/machine/hppa/$(DEPDIR) libc/machine/i386/$(DEPDIR) libc/machine/i960/$(DEPDIR) libc/machine/iq2000/$(DEPDIR) libc/machine/lm32/$(DEPDIR) libc/machine/m32c/$(DEPDIR) libc/machine/m32r/$(DEPDIR) libc/machine/m68hc11/$(DEPDIR) libc/machine/m68k/$(DEPDIR) libc/machine/m88k/$(DEPDIR) libc/machine/mep/$(DEPDIR) libc/machine/microblaze/$(DEPDIR) libc/machine/mips/$(DEPDIR) libc/machine/mn10200/$(DEPDIR) libc/machine/mn10300/$(DEPDIR) libc/machine/moxie/$(DEPDIR) libc/machine/msp430/$(DEPDIR) libc/machine/mt/$(DEPDIR) libc/machine/nds32/$(DEPDIR) libc/machine/necv70/$(DEPDIR) libc/machine/nvptx/$(DEPDIR) libc/machine/or1k/$(DEPDIR) libc/machine/powerpc/$(DEPDIR) libc/machine/riscv/$(DEPDIR) libc/machine/rl78/$(DEPDIR) libc/machine/rx/$(DEPDIR) libc/machine/sh/$(DEPDIR) libc/machine/sparc/$(DEPDIR) libc/machine/spu/$(DEPDIR) libc/machine/tic4x/$(DEPDIR) libc/machine/tic6x/$(DEPDIR) libc/machine/tic80/$(DEPDIR) libc/machine/v850/$(DEPDIR) libc/machine/visium/$(DEPDIR) libc/machine/w65/$(DEPDIR) libc/machine/x86_64/$(DEPDIR) libc/machine/xc16x/$(DEPDIR) libc/machine/xstormy16/$(DEPDIR) libc/machine/xtensa/$(DEPDIR) libc/machine/z8k/$(DEPDIR) libc/misc/$(DEPDIR) libc/posix/$(DEPDIR) libc/reent/$(DEPDIR) libc/search/$(DEPDIR) libc/signal/$(DEPDIR) libc/ssp/$(DEPDIR) libc/stdio/$(DEPDIR) libc/stdio64/$(DEPDIR) libc/stdlib/$(DEPDIR) libc/string/$(DEPDIR) libc/sys/a29khif/$(DEPDIR) libc/sys/amdgcn/$(DEPDIR) libc/sys/arm/$(DEPDIR) libc/sys/d10v/$(DEPDIR) libc/sys/epiphany/$(DEPDIR) libc/sys/h8300hms/$(DEPDIR) libc/sys/h8500hms/$(DEPDIR) libc/sys/m88kbug/$(DEPDIR) libc/sys/mmixware/$(DEPDIR) libc/sys/netware/$(DEPDIR) libc/sys/or1k/$(DEPDIR) libc/sys/rdos/$(DEPDIR) libc/sys/rtems/$(DEPDIR) libc/sys/sh/$(DEPDIR) libc/sys/sysmec/$(DEPDIR) libc/sys/sysnec810/$(DEPDIR) libc/sys/sysnecv850/$(DEPDIR) libc/sys/sysvi386/$(DEPDIR) libc/sys/sysvnecv70/$(DEPDIR) libc/sys/tirtos/$(DEPDIR) libc/sys/w65/$(DEPDIR) libc/sys/xtensa/$(DEPDIR) libc/sys/z8ksim/$(DEPDIR) libc/syscalls/$(DEPDIR) libc/time/$(DEPDIR) libc/unix/$(DEPDIR) libc/xdr/$(DEPDIR) libm/common/$(DEPDIR) libm/complex/$(DEPDIR) libm/fenv/$(DEPDIR) libm/ld/$(DEPDIR) libm/ld128/$(DEPDIR) libm/ld80/$(DEPDIR) libm/machine/aarch64/$(DEPDIR) libm/machine/amdgcn/$(DEPDIR) libm/machine/arm/$(DEPDIR) libm/machine/i386/$(DEPDIR) libm/machine/mips/$(DEPDIR) libm/machine/nds32/$(DEPDIR) libm/machine/powerpc/$(DEPDIR) libm/machine/pru/$(DEPDIR) libm/machine/riscv/$(DEPDIR) libm/machine/sparc/$(DEPDIR) libm/machine/spu/$(DEPDIR) libm/machine/x86_64/$(DEPDIR) libm/machine/xtensa/$(DEPDIR) libm/math/$(DEPDIR) libm/mathfp/$(DEPDIR) libm/test/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/newlib/configure b/newlib/configure index 77ab8eca00..0585e0ee8b 100755 --- a/newlib/configure +++ b/newlib/configure @@ -603,6 +603,8 @@ HAVE_MULTISUBDIR_FALSE HAVE_MULTISUBDIR_TRUE HAVE_DOC_FALSE HAVE_DOC_TRUE +HAVE_LIBM_MACHINE_XTENSA_FALSE +HAVE_LIBM_MACHINE_XTENSA_TRUE HAVE_LIBM_MACHINE_X86_64_FALSE HAVE_LIBM_MACHINE_X86_64_TRUE HAVE_LIBM_MACHINE_RISCV_FALSE @@ -627,6 +629,8 @@ HAVE_LIBM_MACHINE_AMDGCN_FALSE HAVE_LIBM_MACHINE_AMDGCN_TRUE HAVE_LIBM_MACHINE_AARCH64_FALSE HAVE_LIBM_MACHINE_AARCH64_TRUE +XTENSA_XCHAL_HAVE_FP_SQRT_FALSE +XTENSA_XCHAL_HAVE_FP_SQRT_TRUE HAS_NDS32_FPU_DP_FALSE HAS_NDS32_FPU_DP_TRUE HAS_NDS32_FPU_SP_FALSE @@ -637,6 +641,8 @@ HAVE_FPMATH_H_FALSE HAVE_FPMATH_H_TRUE HAVE_LIBC_MACHINE_Z8K_FALSE HAVE_LIBC_MACHINE_Z8K_TRUE +HAVE_LIBC_MACHINE_XTENSA_FALSE +HAVE_LIBC_MACHINE_XTENSA_TRUE HAVE_LIBC_MACHINE_XSTORMY16_FALSE HAVE_LIBC_MACHINE_XSTORMY16_TRUE HAVE_LIBC_MACHINE_XC16X_FALSE @@ -751,6 +757,8 @@ HAVE_LIBC_MACHINE_AMDGCN_FALSE HAVE_LIBC_MACHINE_AMDGCN_TRUE HAVE_LIBC_MACHINE_AARCH64_FALSE HAVE_LIBC_MACHINE_AARCH64_TRUE +XTENSA_ESP32_PSRAM_CACHE_FIX_FALSE +XTENSA_ESP32_PSRAM_CACHE_FIX_TRUE HAVE_SPU_EA_FALSE HAVE_SPU_EA_TRUE SH64_FALSE @@ -767,6 +775,8 @@ HAVE_LONG_DOUBLE_FALSE HAVE_LONG_DOUBLE_TRUE HAVE_LIBC_SYS_Z8KSIM_DIR_FALSE HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE +HAVE_LIBC_SYS_XTENSA_DIR_FALSE +HAVE_LIBC_SYS_XTENSA_DIR_TRUE HAVE_LIBC_SYS_W65_DIR_FALSE HAVE_LIBC_SYS_W65_DIR_TRUE HAVE_LIBC_SYS_TIRTOS_DIR_FALSE @@ -5501,6 +5511,13 @@ fi else HAVE_LIBC_SYS_W65_DIR_TRUE='#' HAVE_LIBC_SYS_W65_DIR_FALSE= +fi + if test "${sys_dir}" = xtensa; then + HAVE_LIBC_SYS_XTENSA_DIR_TRUE= + HAVE_LIBC_SYS_XTENSA_DIR_FALSE='#' +else + HAVE_LIBC_SYS_XTENSA_DIR_TRUE='#' + HAVE_LIBC_SYS_XTENSA_DIR_FALSE= fi if test "${sys_dir}" = z8ksim; then HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE= @@ -5716,6 +5733,15 @@ else fi + if echo $CC | grep mfix-esp32-psram-cache-issue >/dev/null 2>&1; then + XTENSA_ESP32_PSRAM_CACHE_FIX_TRUE= + XTENSA_ESP32_PSRAM_CACHE_FIX_FALSE='#' +else + XTENSA_ESP32_PSRAM_CACHE_FIX_TRUE='#' + XTENSA_ESP32_PSRAM_CACHE_FIX_FALSE= +fi + + if test "${machine_dir}" = aarch64; then HAVE_LIBC_MACHINE_AARCH64_TRUE= @@ -6115,6 +6141,13 @@ fi else HAVE_LIBC_MACHINE_XSTORMY16_TRUE='#' HAVE_LIBC_MACHINE_XSTORMY16_FALSE= +fi + if test "${machine_dir}" = xtensa; then + HAVE_LIBC_MACHINE_XTENSA_TRUE= + HAVE_LIBC_MACHINE_XTENSA_FALSE='#' +else + HAVE_LIBC_MACHINE_XTENSA_TRUE='#' + HAVE_LIBC_MACHINE_XTENSA_FALSE= fi if test "${machine_dir}" = z8k; then HAVE_LIBC_MACHINE_Z8K_TRUE= @@ -6221,6 +6254,47 @@ else fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCHAL_HAVE_FP_SQRT" >&5 +$as_echo_n "checking for XCHAL_HAVE_FP_SQRT... " >&6; } +if ${newlib_cv_xchal_have_fp_sqrt+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LIBM +// targ-include does not exist yet, use relative path +#include "../sys/xtensa/include/xtensa/config/core-isa.h" +#if (!XCHAL_HAVE_FP_SQRT) +# error "Have not XCHAL_HAVE_FP_SQRT" +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + newlib_cv_xchal_have_fp_sqrt="yes" +else + newlib_cv_xchal_have_fp_sqrt="no" +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $newlib_cv_xchal_have_fp_sqrt" >&5 +$as_echo "$newlib_cv_xchal_have_fp_sqrt" >&6; } + + if test "$newlib_cv_xchal_have_fp_sqrt" = "yes"; then + XTENSA_XCHAL_HAVE_FP_SQRT_TRUE= + XTENSA_XCHAL_HAVE_FP_SQRT_FALSE='#' +else + XTENSA_XCHAL_HAVE_FP_SQRT_TRUE='#' + XTENSA_XCHAL_HAVE_FP_SQRT_FALSE= +fi + + if test "${libm_machine_dir}" = "aarch64"; then HAVE_LIBM_MACHINE_AARCH64_TRUE= @@ -6318,6 +6392,14 @@ else HAVE_LIBM_MACHINE_X86_64_FALSE= fi + if test "${libm_machine_dir}" = "xtensa"; then + HAVE_LIBM_MACHINE_XTENSA_TRUE= + HAVE_LIBM_MACHINE_XTENSA_FALSE='#' +else + HAVE_LIBM_MACHINE_XTENSA_TRUE='#' + HAVE_LIBM_MACHINE_XTENSA_FALSE= +fi + @@ -7617,6 +7699,10 @@ if test -z "${HAVE_LIBC_SYS_W65_DIR_TRUE}" && test -z "${HAVE_LIBC_SYS_W65_DIR_F as_fn_error $? "conditional \"HAVE_LIBC_SYS_W65_DIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_LIBC_SYS_XTENSA_DIR_TRUE}" && test -z "${HAVE_LIBC_SYS_XTENSA_DIR_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBC_SYS_XTENSA_DIR\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_LIBC_SYS_Z8KSIM_DIR_TRUE}" && test -z "${HAVE_LIBC_SYS_Z8KSIM_DIR_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBC_SYS_Z8KSIM_DIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -7649,6 +7735,10 @@ if test -z "${HAVE_SPU_EA_TRUE}" && test -z "${HAVE_SPU_EA_FALSE}"; then as_fn_error $? "conditional \"HAVE_SPU_EA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${XTENSA_ESP32_PSRAM_CACHE_FIX_TRUE}" && test -z "${XTENSA_ESP32_PSRAM_CACHE_FIX_FALSE}"; then + as_fn_error $? "conditional \"XTENSA_ESP32_PSRAM_CACHE_FIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_LIBC_MACHINE_AARCH64_TRUE}" && test -z "${HAVE_LIBC_MACHINE_AARCH64_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBC_MACHINE_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -7877,6 +7967,10 @@ if test -z "${HAVE_LIBC_MACHINE_XSTORMY16_TRUE}" && test -z "${HAVE_LIBC_MACHINE as_fn_error $? "conditional \"HAVE_LIBC_MACHINE_XSTORMY16\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_LIBC_MACHINE_XTENSA_TRUE}" && test -z "${HAVE_LIBC_MACHINE_XTENSA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBC_MACHINE_XTENSA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_LIBC_MACHINE_Z8K_TRUE}" && test -z "${HAVE_LIBC_MACHINE_Z8K_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBC_MACHINE_Z8K\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -7897,6 +7991,10 @@ if test -z "${HAS_NDS32_FPU_DP_TRUE}" && test -z "${HAS_NDS32_FPU_DP_FALSE}"; th as_fn_error $? "conditional \"HAS_NDS32_FPU_DP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${XTENSA_XCHAL_HAVE_FP_SQRT_TRUE}" && test -z "${XTENSA_XCHAL_HAVE_FP_SQRT_FALSE}"; then + as_fn_error $? "conditional \"XTENSA_XCHAL_HAVE_FP_SQRT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_LIBM_MACHINE_AARCH64_TRUE}" && test -z "${HAVE_LIBM_MACHINE_AARCH64_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_AARCH64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -7945,6 +8043,10 @@ if test -z "${HAVE_LIBM_MACHINE_X86_64_TRUE}" && test -z "${HAVE_LIBM_MACHINE_X8 as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_X86_64\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_LIBM_MACHINE_XTENSA_TRUE}" && test -z "${HAVE_LIBM_MACHINE_XTENSA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_LIBM_MACHINE_XTENSA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_DOC_TRUE}" && test -z "${HAVE_DOC_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/newlib/configure.host b/newlib/configure.host index 5f427526d0..3861834663 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -365,6 +365,13 @@ case "${host_cpu}" in newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED" newlib_cflags="${newlib_cflags} -DPREFER_SIZE_OVER_SPEED" ;; + xtensa) + libm_machine_dir=xtensa + machine_dir=xtensa + newlib_cflags="${newlib_cflags} -mlongcalls" + default_newlib_atexit_dynamic_alloc="no" + have_init_fini=no + ;; z8k) machine_dir=z8k ;; @@ -569,6 +576,9 @@ case "${host}" in w65-*-*) sys_dir=w65 ;; + xtensa*-*-*) + sys_dir=xtensa + ;; z8k-*-coff) sys_dir=z8ksim ;; @@ -861,6 +871,9 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID xstormy16-*-*) syscall_dir=syscalls ;; + xtensa*-*-* | xtensa*-*) + syscall_dir=syscalls + ;; z8k-*-*) syscall_dir=syscalls ;; diff --git a/newlib/libc/acinclude.m4 b/newlib/libc/acinclude.m4 index 42662669f0..24148b13f3 100644 --- a/newlib/libc/acinclude.m4 +++ b/newlib/libc/acinclude.m4 @@ -23,6 +23,7 @@ m4_foreach_w([SYS_DIR], [ sh sysmec sysnec810 sysnecv850 sysvi386 sysvnecv70 tic80 tirtos w65 + xtensa z8ksim ], [AM_CONDITIONAL([HAVE_LIBC_SYS_]m4_toupper(SYS_DIR)[_DIR], test "${sys_dir}" = SYS_DIR)]) @@ -38,6 +39,7 @@ m4_include([libc/machine/nds32/acinclude.m4]) m4_include([libc/machine/powerpc/acinclude.m4]) m4_include([libc/machine/sh/acinclude.m4]) m4_include([libc/machine/spu/acinclude.m4]) +m4_include([libc/machine/xtensa/acinclude.m4]) m4_foreach_w([MACHINE], [ aarch64 amdgcn arc arm @@ -58,7 +60,7 @@ m4_foreach_w([MACHINE], [ tic4x tic6x tic80 v850 visium w65 - x86_64 xc16x xstormy16 + x86_64 xc16x xstormy16 xtensa z8k ], [AM_CONDITIONAL([HAVE_LIBC_MACHINE_]m4_toupper(MACHINE), test "${machine_dir}" = MACHINE)]) diff --git a/newlib/libc/include/machine/ieeefp.h b/newlib/libc/include/machine/ieeefp.h index abadf520b4..ede75e1aa8 100644 --- a/newlib/libc/include/machine/ieeefp.h +++ b/newlib/libc/include/machine/ieeefp.h @@ -506,6 +506,10 @@ #define __IEEE_LITTLE_ENDIAN #endif +#ifdef __XTENSA_EB__ +#define __IEEE_BIG_ENDIAN +#endif + #ifdef __CYGWIN__ #define __OBSOLETE_MATH_DEFAULT 0 #endif diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h index 29b76cec1b..e3534e18d0 100644 --- a/newlib/libc/include/machine/setjmp.h +++ b/newlib/libc/include/machine/setjmp.h @@ -304,6 +304,35 @@ _BEGIN_STD_C #define _JBLEN 8 #endif +#ifdef __XTENSA__ +#if __XTENSA_WINDOWED_ABI__ + +/* The jmp_buf structure for Xtensa windowed ABI holds the following + (where "proc" is the procedure that calls setjmp): 4-12 registers + from the window of proc, the 4 words from the save area at proc's $sp + (in case a subsequent alloca in proc moves $sp), and the return + address within proc. Everything else is saved on the stack in the + normal save areas. The jmp_buf structure is: + + struct jmp_buf { + int regs[12]; + int save[4]; + void *return_address; + } + + See the setjmp code for details. */ + +/* sizeof(struct jmp_buf) */ +#define _JBLEN 17 + +#else /* __XTENSA_CALL0_ABI__ */ + +/* a0, a1, a12, a13, a14, a15 */ +#define _JBLEN 6 + +#endif /* __XTENSA_CALL0_ABI__ */ +#endif /* __XTENSA__ */ + #ifdef __mep__ /* 16 GPRs, pc, hi, lo */ #define _JBLEN 19 diff --git a/newlib/libc/machine/Makefile.inc b/newlib/libc/machine/Makefile.inc index 8aae2c52cc..a53cf9c10c 100644 --- a/newlib/libc/machine/Makefile.inc +++ b/newlib/libc/machine/Makefile.inc @@ -169,6 +169,9 @@ endif if HAVE_LIBC_MACHINE_XSTORMY16 include %D%/xstormy16/Makefile.inc endif +if HAVE_LIBC_MACHINE_XTENSA +include %D%/xtensa/Makefile.inc +endif if HAVE_LIBC_MACHINE_Z8K include %D%/z8k/Makefile.inc endif diff --git a/newlib/libc/machine/xtensa/Makefile.inc b/newlib/libc/machine/xtensa/Makefile.inc new file mode 100644 index 0000000000..158c2befe4 --- /dev/null +++ b/newlib/libc/machine/xtensa/Makefile.inc @@ -0,0 +1,8 @@ +libc_a_SOURCES += \ + %D%/memcpy.S %D%/memset.S %D%/setjmp.S %D%/strcmp.S %D%/strcpy.S \ + %D%/strlen.S %D%/strncpy.S + +if XTENSA_ESP32_PSRAM_CACHE_FIX +libc_a_CPPFLAGS_%C% = \ + -DXTENSA_ESP32_PSRAM_CACHE_FIX +endif diff --git a/newlib/libc/machine/xtensa/acinclude.m4 b/newlib/libc/machine/xtensa/acinclude.m4 new file mode 100644 index 0000000000..863d7507df --- /dev/null +++ b/newlib/libc/machine/xtensa/acinclude.m4 @@ -0,0 +1 @@ +AM_CONDITIONAL([XTENSA_ESP32_PSRAM_CACHE_FIX], [echo $CC | grep mfix-esp32-psram-cache-issue >/dev/null 2>&1]) diff --git a/newlib/libc/machine/xtensa/memcpy.S b/newlib/libc/machine/xtensa/memcpy.S new file mode 100644 index 0000000000..77b026a453 --- /dev/null +++ b/newlib/libc/machine/xtensa/memcpy.S @@ -0,0 +1,343 @@ +/* ANSI C standard library function memcpy. + + Copyright (c) 2002-2008 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "xtensa-asm.h" + +/* If the Xtensa Unaligned Load Exception option is not used, this + code can run a few cycles faster by relying on the low address bits + being ignored. However, if the code is then run with an Xtensa ISS + client that checks for unaligned accesses, it will produce a lot of + warning messages. Set this flag to disable the use of unaligned + accesses and keep the ISS happy. */ + +/* #define UNALIGNED_ADDRESSES_CHECKED XCHAL_UNALIGNED_LOAD_EXCEPTION */ +#define UNALIGNED_ADDRESSES_CHECKED 1 + + +/* void *memcpy (void *dst, const void *src, size_t len) + + The algorithm is as follows: + + If the destination is unaligned, align it by conditionally + copying 1- and/or 2-byte pieces. + + If the source is aligned, copy 16 bytes with a loop, and then finish up + with 8, 4, 2, and 1-byte copies conditional on the length. + + Else (if source is unaligned), do the same, but use SRC to align the + source data. + + This code tries to use fall-through branches for the common + case of aligned source and destination and multiple of 4 (or 8) length. */ + + +/* Byte by byte copy. */ + + .text + .begin schedule + .align XCHAL_INST_FETCH_WIDTH + .literal_position +__memcpy_aux: + + /* Skip bytes to get proper alignment for three-byte loop */ +.skip XCHAL_INST_FETCH_WIDTH - 3 + +.Lbytecopy: +#if XCHAL_HAVE_LOOPS + loopnez a4, 2f +#else + beqz a4, 2f + add a7, a3, a4 // a7 = end address for source +#endif +1: l8ui a6, a3, 0 + addi a3, a3, 1 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + nop + nop + nop +#endif + s8i a6, a5, 0 + addi a5, a5, 1 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif +#if !XCHAL_HAVE_LOOPS + bltu a3, a7, 1b +#endif +2: leaf_return + + +/* Destination is unaligned. */ + + .align 4 +.Ldst1mod2: // dst is only byte aligned + + /* Do short copies byte-by-byte. */ + bltui a4, 7, .Lbytecopy + + /* Copy 1 byte. */ + l8ui a6, a3, 0 + addi a3, a3, 1 + addi a4, a4, -1 + s8i a6, a5, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + addi a5, a5, 1 + + /* Return to main algorithm if dst is now aligned. */ + bbci.l a5, 1, .Ldstaligned + +.Ldst2mod4: // dst has 16-bit alignment + + /* Do short copies byte-by-byte. */ + bltui a4, 6, .Lbytecopy + + /* Copy 2 bytes. */ + l8ui a6, a3, 0 + l8ui a7, a3, 1 + addi a3, a3, 2 + addi a4, a4, -2 + s8i a6, a5, 0 + s8i a7, a5, 1 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + addi a5, a5, 2 + + /* dst is now aligned; return to main algorithm. */ + j .Ldstaligned + + + .align 4 + .global memcpy + .type memcpy, @function +memcpy: + leaf_entry sp, 16 + /* a2 = dst, a3 = src, a4 = len */ + + mov a5, a2 // copy dst so that a2 is return value + bbsi.l a2, 0, .Ldst1mod2 + bbsi.l a2, 1, .Ldst2mod4 +.Ldstaligned: + + /* Get number of loop iterations with 16B per iteration. */ + srli a7, a4, 4 + + /* Check if source is aligned. */ + slli a8, a3, 30 + bnez a8, .Lsrcunaligned + + /* Destination and source are word-aligned, use word copy. */ +#if XCHAL_HAVE_LOOPS + loopnez a7, 2f +#else + beqz a7, 2f + slli a8, a7, 4 + add a8, a8, a3 // a8 = end of last 16B source chunk +#endif + +#if XTENSA_ESP32_PSRAM_CACHE_FIX + +1: l32i a6, a3, 0 + l32i a7, a3, 4 + s32i a6, a5, 0 + s32i a7, a5, 4 + memw + l32i a6, a3, 8 + l32i a7, a3, 12 + s32i a6, a5, 8 + s32i a7, a5, 12 + memw + + addi a3, a3, 16 + addi a5, a5, 16 + +#else + +1: l32i a6, a3, 0 + l32i a7, a3, 4 + s32i a6, a5, 0 + l32i a6, a3, 8 + s32i a7, a5, 4 + l32i a7, a3, 12 + s32i a6, a5, 8 + addi a3, a3, 16 + s32i a7, a5, 12 + addi a5, a5, 16 + +#endif + + +#if !XCHAL_HAVE_LOOPS + bltu a3, a8, 1b +#endif + + /* Copy any leftover pieces smaller than 16B. */ +2: bbci.l a4, 3, 3f + + /* Copy 8 bytes. */ + l32i a6, a3, 0 + l32i a7, a3, 4 + addi a3, a3, 8 + s32i a6, a5, 0 + s32i a7, a5, 4 + addi a5, a5, 8 + +3: bbsi.l a4, 2, 4f + bbsi.l a4, 1, 5f + bbsi.l a4, 0, 6f +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + .align 4 + /* Copy 4 bytes. */ +4: l32i a6, a3, 0 + addi a3, a3, 4 + s32i a6, a5, 0 + addi a5, a5, 4 + bbsi.l a4, 1, 5f + bbsi.l a4, 0, 6f +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + /* Copy 2 bytes. */ +5: l16ui a6, a3, 0 + addi a3, a3, 2 + s16i a6, a5, 0 + addi a5, a5, 2 + bbsi.l a4, 0, 6f +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + /* Copy 1 byte. */ +6: l8ui a6, a3, 0 + s8i a6, a5, 0 + +.Ldone: +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + +/* Destination is aligned; source is unaligned. */ + + .align 4 +.Lsrcunaligned: + /* Avoid loading anything for zero-length copies. */ + beqz a4, .Ldone + + /* Copy 16 bytes per iteration for word-aligned dst and + unaligned src. */ + ssa8 a3 // set shift amount from byte offset +#if UNALIGNED_ADDRESSES_CHECKED + srli a11, a8, 30 // save unalignment offset for below + sub a3, a3, a11 // align a3 +#endif + l32i a6, a3, 0 // load first word +#if XCHAL_HAVE_LOOPS + loopnez a7, 2f +#else + beqz a7, 2f + slli a10, a7, 4 + add a10, a10, a3 // a10 = end of last 16B source chunk +#endif +1: l32i a7, a3, 4 + l32i a8, a3, 8 + src_b a6, a6, a7 + s32i a6, a5, 0 + l32i a9, a3, 12 + src_b a7, a7, a8 + s32i a7, a5, 4 + l32i a6, a3, 16 + src_b a8, a8, a9 + s32i a8, a5, 8 + addi a3, a3, 16 + src_b a9, a9, a6 + s32i a9, a5, 12 + addi a5, a5, 16 +#if !XCHAL_HAVE_LOOPS + bltu a3, a10, 1b +#endif + +2: bbci.l a4, 3, 3f + + /* Copy 8 bytes. */ + l32i a7, a3, 4 + l32i a8, a3, 8 + src_b a6, a6, a7 + s32i a6, a5, 0 + addi a3, a3, 8 + src_b a7, a7, a8 + s32i a7, a5, 4 + addi a5, a5, 8 + mov a6, a8 + +3: bbci.l a4, 2, 4f + + /* Copy 4 bytes. */ + l32i a7, a3, 4 + addi a3, a3, 4 + src_b a6, a6, a7 + s32i a6, a5, 0 + addi a5, a5, 4 + mov a6, a7 +4: +#if UNALIGNED_ADDRESSES_CHECKED + add a3, a3, a11 // readjust a3 with correct misalignment +#endif + bbsi.l a4, 1, 5f + bbsi.l a4, 0, 6f + leaf_return + + /* Copy 2 bytes. */ +5: l8ui a6, a3, 0 + l8ui a7, a3, 1 + addi a3, a3, 2 + s8i a6, a5, 0 + s8i a7, a5, 1 + addi a5, a5, 2 + bbsi.l a4, 0, 6f +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + /* Copy 1 byte. */ +6: l8ui a6, a3, 0 + s8i a6, a5, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + .end schedule + + .size memcpy, . - memcpy diff --git a/newlib/libc/machine/xtensa/memset.S b/newlib/libc/machine/xtensa/memset.S new file mode 100644 index 0000000000..48b5829d73 --- /dev/null +++ b/newlib/libc/machine/xtensa/memset.S @@ -0,0 +1,193 @@ +/* ANSI C standard library function memset. + + Copyright (c) 2001-2008 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "xtensa-asm.h" + +/* void *memset (void *dst, int c, size_t length) + + The algorithm is as follows: + + Create a word with c in all byte positions. + + If the destination is aligned, set 16B chunks with a loop, and then + finish up with 8B, 4B, 2B, and 1B stores conditional on the length. + + If the destination is unaligned, align it by conditionally + setting 1B and/or 2B and then go to aligned case. + + This code tries to use fall-through branches for the common + case of an aligned destination (except for the branches to + the alignment labels). */ + + +/* Byte-by-byte set. */ + + .text + .begin schedule + .align XCHAL_INST_FETCH_WIDTH + .literal_position +__memset_aux: + + /* Skip bytes to get proper alignment for three-byte loop */ +.skip XCHAL_INST_FETCH_WIDTH - 3 + +.Lbyteset: +#if XCHAL_HAVE_LOOPS + loopnez a4, 2f +#else + beqz a4, 2f + add a6, a5, a4 // a6 = ending address +#endif +1: s8i a3, a5, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + addi a5, a5, 1 +#if !XCHAL_HAVE_LOOPS + bltu a5, a6, 1b +#endif +2: leaf_return + + +/* Destination is unaligned. */ + + .align 4 + +.Ldst1mod2: // dst is only byte aligned + + /* Do short sizes byte-by-byte. */ + bltui a4, 8, .Lbyteset + + /* Set 1 byte. */ + s8i a3, a5, 0 + addi a5, a5, 1 + addi a4, a4, -1 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + + /* Now retest if dst is aligned. */ + _bbci.l a5, 1, .Ldstaligned + +.Ldst2mod4: // dst has 16-bit alignment + + /* Do short sizes byte-by-byte. */ + bltui a4, 8, .Lbyteset + + /* Set 2 bytes. */ + s16i a3, a5, 0 + addi a5, a5, 2 + addi a4, a4, -2 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + + /* dst is now aligned; return to main algorithm */ + j .Ldstaligned + + + .align 4 + .global memset + .type memset, @function +memset: + leaf_entry sp, 16 + /* a2 = dst, a3 = c, a4 = length */ + + /* Duplicate character into all bytes of word. */ + extui a3, a3, 0, 8 + slli a7, a3, 8 + or a3, a3, a7 + slli a7, a3, 16 + or a3, a3, a7 + + mov a5, a2 // copy dst so that a2 is return value + + /* Check if dst is unaligned. */ + _bbsi.l a2, 0, .Ldst1mod2 + _bbsi.l a2, 1, .Ldst2mod4 +.Ldstaligned: + + /* Get number of loop iterations with 16B per iteration. */ + srli a7, a4, 4 + +#if XTENSA_ESP32_PSRAM_CACHE_FIX + //do not do this if we have less than one iteration to do + beqz a7, 2f + //this seems to work to prefetch the cache line + s32i a3, a5, 0 + nop +#endif + + /* Destination is word-aligned. */ +#if XCHAL_HAVE_LOOPS + loopnez a7, 2f +#else + beqz a7, 2f + slli a6, a7, 4 + add a6, a6, a5 // a6 = end of last 16B chunk +#endif + /* Set 16 bytes per iteration. */ +1: s32i a3, a5, 0 + s32i a3, a5, 4 + s32i a3, a5, 8 + s32i a3, a5, 12 + addi a5, a5, 16 +#if !XCHAL_HAVE_LOOPS + bltu a5, a6, 1b +#endif + + /* Set any leftover pieces smaller than 16B. */ +2: bbci.l a4, 3, 3f + + /* Set 8 bytes. */ + s32i a3, a5, 0 + s32i a3, a5, 4 + addi a5, a5, 8 + +3: bbci.l a4, 2, 4f + + /* Set 4 bytes. */ + s32i a3, a5, 0 + addi a5, a5, 4 + +4: bbci.l a4, 1, 5f + + /* Set 2 bytes. */ + s16i a3, a5, 0 + addi a5, a5, 2 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + +5: bbci.l a4, 0, 6f + + /* Set 1 byte. */ + s8i a3, a5, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif +6: leaf_return + + .end schedule + + .size memset, . - memset diff --git a/newlib/libc/machine/xtensa/setjmp.S b/newlib/libc/machine/xtensa/setjmp.S new file mode 100644 index 0000000000..c32d443f2c --- /dev/null +++ b/newlib/libc/machine/xtensa/setjmp.S @@ -0,0 +1,252 @@ +/* setjmp/longjmp functions for Xtensa. + + Copyright (c) 2001-2006 by Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +/* Windowed ABI: + + This implementation relies heavily on the Xtensa register window + mechanism. Setjmp flushes all the windows except its own to the + stack and then copies registers from the save areas on the stack + into the jmp_buf structure, along with the return address of the call + to setjmp. Longjmp invalidates all the windows except its own, and + then sets things up so that it will return to the right place, + using a window underflow to automatically restore the registers. + + Note that it would probably be sufficient to only copy the + registers from setjmp's caller into jmp_buf. However, we also copy + the save area located at the stack pointer of setjmp's caller. + This save area will typically remain intact until the longjmp call. + The one exception is when there is an intervening alloca in + setjmp's caller. This is certainly an unusual situation and is + likely to cause problems in any case (the storage allocated on the + stack cannot be safely accessed following the longjmp). As bad as + it is, on most systems this situation would not necessarily lead to + a catastrophic failure. If we did not preserve the extra save area + on Xtensa, however, it would. When setjmp's caller returns after a + longjmp, there will be a window underflow; an invalid return + address or stack pointer in the save area will almost certainly + lead to a crash. Keeping a copy of the extra save area in the + jmp_buf avoids this with only a small additional cost. If setjmp + and longjmp are ever time-critical, this could be removed. + + + Call0 ABI: + + Much like other ABIs, this version just saves the necessary registers + to the stack and restores them later. Much less needs to be done. */ + +#include "xtensa-asm.h" + +#define SYS_nop 0 + + +#if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ + +/* int setjmp (jmp_buf env) */ + + .text + .align 4 + .literal_position + .global setjmp + .type setjmp, @function +setjmp: + entry sp, 16 + + /* Flush registers. */ + mov a4, a2 // save a2 (jmp_buf) + movi a2, SYS_nop + syscall + mov a2, a4 // restore a2 + + /* Copy the register save area at (sp - 16). */ + addi a5, a1, -16 + l32i a3, a5, 0 + l32i a4, a5, 4 + s32i a3, a2, 0 + s32i a4, a2, 4 + l32i a3, a5, 8 + l32i a4, a5, 12 + s32i a3, a2, 8 + s32i a4, a2, 12 + + /* Copy 0-8 words from the register overflow area. */ + extui a3, a0, 30, 2 + blti a3, 2, .Lendsj + l32i a7, a1, 4 + slli a4, a3, 4 + sub a5, a7, a4 + addi a6, a2, 16 + addi a7, a7, -16 // a7 = end of register overflow area +.Lsjloop: + l32i a3, a5, 0 + l32i a4, a5, 4 + s32i a3, a6, 0 + s32i a4, a6, 4 + l32i a3, a5, 8 + l32i a4, a5, 12 + s32i a3, a6, 8 + s32i a4, a6, 12 + addi a5, a5, 16 + addi a6, a6, 16 + blt a5, a7, .Lsjloop +.Lendsj: + + /* Copy the register save area at sp. */ + l32i a3, a1, 0 + l32i a4, a1, 4 + s32i a3, a2, 48 + s32i a4, a2, 52 + l32i a3, a1, 8 + l32i a4, a1, 12 + s32i a3, a2, 56 + s32i a4, a2, 60 + + /* Save the return address, including the window size bits. */ + s32i a0, a2, 64 + + movi a2, 0 + retw + .size setjmp, . - setjmp + + +/* void longjmp (jmp_buf env, int val) */ + + .align 4 + .literal_position + .global longjmp + .type longjmp, @function +longjmp: + entry sp, 16 + /* a2 == &env, a3 == val */ + + /* Invalidate all but the current window; + set WindowStart to (1 << WindowBase). */ + rsr a5, WINDOWBASE + movi a4, 1 + ssl a5 + sll a4, a4 + wsr a4, WINDOWSTART + rsync + + /* Return to the return address of the setjmp, using the + window size bits from the setjmp call so that the caller + will be able to find the return value that we put in a2. */ + + l32i a0, a2, 64 + + /* Copy the first 4 saved registers from jmp_buf into the save area + at the current sp so that the values will be restored to registers + when longjmp returns. */ + + addi a7, a1, -16 + l32i a4, a2, 0 + l32i a5, a2, 4 + s32i a4, a7, 0 + s32i a5, a7, 4 + l32i a4, a2, 8 + l32i a5, a2, 12 + s32i a4, a7, 8 + s32i a5, a7, 12 + + /* Copy the remaining 0-8 saved registers. */ + extui a7, a0, 30, 2 + blti a7, 2, .Lendlj + l32i a8, a2, 52 + slli a4, a7, 4 + sub a6, a8, a4 + addi a5, a2, 16 + addi a8, a8, -16 // a8 = end of register overflow area +.Lljloop: + l32i a7, a5, 0 + l32i a4, a5, 4 + s32i a7, a6, 0 + s32i a4, a6, 4 + l32i a7, a5, 8 + l32i a4, a5, 12 + s32i a7, a6, 8 + s32i a4, a6, 12 + addi a5, a5, 16 + addi a6, a6, 16 + blt a6, a8, .Lljloop +.Lendlj: + + /* The 4 words saved from the register save area at the target's + sp are copied back to the target procedure's save area. The + only point of this is to prevent a catastrophic failure in + case the contents were moved by an alloca after calling + setjmp. This is a bit paranoid but it doesn't cost much. */ + + l32i a7, a2, 4 // load the target stack pointer + addi a7, a7, -16 // find the destination save area + l32i a4, a2, 48 + l32i a5, a2, 52 + s32i a4, a7, 0 + s32i a5, a7, 4 + l32i a4, a2, 56 + l32i a5, a2, 60 + s32i a4, a7, 8 + s32i a5, a7, 12 + + /* Return val ? val : 1. */ + movi a2, 1 + movnez a2, a3, a3 + + retw + .size longjmp, . - longjmp + +#else /* CALL0 ABI */ + + .text + .align 4 + .literal_position + .global setjmp + .type setjmp, @function +setjmp: + s32i a0, a2, 0 + s32i a1, a2, 4 + s32i a12, a2, 8 + s32i a13, a2, 12 + s32i a14, a2, 16 + s32i a15, a2, 20 + movi a2, 0 + ret + .size setjmp, . - setjmp + + .align 4 + .literal_position + .global longjmp + .type longjmp, @function +longjmp: + l32i a0, a2, 0 + l32i a12, a2, 8 + l32i a13, a2, 12 + l32i a14, a2, 16 + l32i a15, a2, 20 + l32i a1, a2, 4 + /* Return val ? val : 1. */ + movi a2, 1 + movnez a2, a3, a3 + + ret + .size longjmp, .-longjmp + +#endif /* CALL0 ABI */ diff --git a/newlib/libc/machine/xtensa/strcmp.S b/newlib/libc/machine/xtensa/strcmp.S new file mode 100644 index 0000000000..49cb80581f --- /dev/null +++ b/newlib/libc/machine/xtensa/strcmp.S @@ -0,0 +1,353 @@ +/* ANSI C standard library function strcmp. + + Copyright (c) 2001-20012 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "xtensa-asm.h" + +#define MASK4 0x40404040 + + +#if XCHAL_HAVE_L32R + .literal .Lmask0, MASK0 + .literal .Lmask1, MASK1 + .literal .Lmask2, MASK2 + .literal .Lmask3, MASK3 + .literal .Lmask4, MASK4 +#endif /* XCHAL_HAVE_L32R */ + + .text + .align 4 + .literal_position + .global strcmp + .type strcmp, @function +strcmp: + + leaf_entry sp, 16 + /* a2 = s1, a3 = s2 */ + + l8ui a8, a2, 0 // byte 0 from s1 + l8ui a9, a3, 0 // byte 0 from s2 + movi a10, 3 // mask + bne a8, a9, .Lretdiff + + or a11, a2, a3 + bnone a11, a10, .Laligned + + xor a11, a2, a3 // compare low two bits of s1 and s2 + bany a11, a10, .Lunaligned // if they have different alignment + + /* s1/s2 are not word-aligned. */ + addi a2, a2, 1 // advance s1 + beqz a8, .Leq // bytes equal, if zero, strings are equal + addi a3, a3, 1 // advance s2 + bnone a2, a10, .Laligned // if s1/s2 now aligned + l8ui a8, a2, 0 // byte 1 from s1 + l8ui a9, a3, 0 // byte 1 from s2 + addi a2, a2, 1 // advance s1 + bne a8, a9, .Lretdiff // if different, return difference + beqz a8, .Leq // bytes equal, if zero, strings are equal + addi a3, a3, 1 // advance s2 + bnone a2, a10, .Laligned // if s1/s2 now aligned + l8ui a8, a2, 0 // byte 2 from s1 + l8ui a9, a3, 0 // byte 2 from s2 + addi a2, a2, 1 // advance s1 + bne a8, a9, .Lretdiff // if different, return difference + beqz a8, .Leq // bytes equal, if zero, strings are equal + addi a3, a3, 1 // advance s2 + j .Laligned + +/* s1 and s2 have different alignment. + + If the zero-overhead loop option is available, use an (almost) + infinite zero-overhead loop with conditional exits so we only pay + for taken branches when exiting the loop. + + Note: It is important for this unaligned case to come before the + code for aligned strings, because otherwise some of the branches + above cannot reach and have to be transformed to branches around + jumps. The unaligned code is smaller and the branches can reach + over it. */ + + .align 4 +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + /* (2 mod 4) alignment for loop instruction */ +#else + /* (1 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +#endif +.Lunaligned: +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + _movi.n a8, 0 // set up for the maximum loop count +#else + _movi a8, 0 // set up for the maximum loop count +#endif + loop a8, .Lretdiff // loop forever (almost anyway) +#endif +.Lnextbyte: + l8ui a8, a2, 0 + l8ui a9, a3, 0 + addi a2, a2, 1 + bne a8, a9, .Lretdiff + addi a3, a3, 1 +#if XCHAL_HAVE_LOOPS + beqz a8, .Lretdiff +#else + bnez a8, .Lnextbyte +#endif +.Lretdiff: + sub a2, a8, a9 + leaf_return + +/* s1 is word-aligned; s2 is word-aligned. + + If the zero-overhead loop option is available, use an (almost) + infinite zero-overhead loop with conditional exits so we only pay + for taken branches when exiting the loop. */ + +/* New algorithm, relying on the fact that all normal ASCII is between + 32 and 127. + + Rather than check all bytes for zero: + Take one word (4 bytes). Call it w1. + Shift w1 left by one into w1'. + Or w1 and w1'. For all normal ASCII bit 6 will be 1; for zero it won't. + Check that all 4 bit 6's (one for each byte) are one: + If they are, we are definitely not done. + If they are not, we are probably done, but need to check for zero. */ + + .align 4 +#if XCHAL_HAVE_LOOPS +#if !XCHAL_HAVE_L32R + /* (2 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +.Laligned: +#if XCHAL_HAVE_L32R + l32r a4, .Lmask0 // mask for byte 0 + l32r a7, .Lmask4 +#else + const16 a4, MASK0@h + const16 a4, MASK0@l + const16 a7, MASK4@h + const16 a7, MASK4@l +#endif + /* Loop forever */ +1: + loop a0, .Laligned_done + + /* First unrolled loop body. */ + l32i a8, a2, 0 // get word from s1 + l32i a9, a3, 0 // get word from s2 + slli a5, a8, 1 + bne a8, a9, .Lwne2 + or a9, a8, a5 + bnall a9, a7, .Lprobeq + + /* Second unrolled loop body. */ + l32i a8, a2, 4 // get word from s1+4 + l32i a9, a3, 4 // get word from s2+4 + slli a5, a8, 1 + bne a8, a9, .Lwne2 + or a9, a8, a5 + bnall a9, a7, .Lprobeq2 + + addi a2, a2, 8 // advance s1 pointer + addi a3, a3, 8 // advance s2 pointer +.Laligned_done: + j 1b + +.Lprobeq2: + /* Adjust pointers to account for the loop unrolling. */ + addi a2, a2, 4 + addi a3, a3, 4 + +#else /* !XCHAL_HAVE_LOOPS */ + +.Laligned: + movi a4, MASK0 // mask for byte 0 + movi a7, MASK4 + j .Lfirstword +.Lnextword: + addi a2, a2, 4 // advance s1 pointer + addi a3, a3, 4 // advance s2 pointer +.Lfirstword: + l32i a8, a2, 0 // get word from s1 + l32i a9, a3, 0 // get word from s2 + slli a5, a8, 1 + bne a8, a9, .Lwne2 + or a9, a8, a5 + ball a9, a7, .Lnextword +#endif /* !XCHAL_HAVE_LOOPS */ + + /* align (0 mod 4) */ +.Lprobeq: + /* Words are probably equal, but check for sure. + If not, loop over the rest of string using normal algorithm. */ + + bnone a8, a4, .Leq // if byte 0 is zero +#if XCHAL_HAVE_L32R + l32r a5, .Lmask1 // mask for byte 1 + l32r a6, .Lmask2 // mask for byte 2 + bnone a8, a5, .Leq // if byte 1 is zero + l32r a7, .Lmask3 // mask for byte 3 + bnone a8, a6, .Leq // if byte 2 is zero + bnone a8, a7, .Leq // if byte 3 is zero + /* align (1 mod 4) */ +#else + const16 a5, MASK1@h // mask for byte 1 + const16 a5, MASK1@l + bnone a8, a5, .Leq // if byte 1 is zero + const16 a6, MASK2@h // mask for byte 2 + const16 a6, MASK2@l + bnone a8, a6, .Leq // if byte 2 is zero + const16 a7, MASK3@h // mask for byte 3 + const16 a7, MASK3@l + bnone a8, a7, .Leq // if byte 3 is zero + /* align (2 mod 4) */ +#endif /* XCHAL_HAVE_L32R */ +#if XCHAL_HAVE_DENSITY + addi.n a2, a2, 4 // advance s1 pointer + addi.n a3, a3, 4 // advance s2 pointer + /* align (1 mod 4) or (2 mod 4) */ +#else + addi a2, a2, 4 // advance s1 pointer + addi a3, a3, 4 // advance s2 pointer + or a1, a1, a1 // nop +#if !XCHAL_HAVE_L32R + or a1, a1, a1 // nop +#endif + /* align (2 mod 4) */ +#endif /* XCHAL_HAVE_DENSITY */ +#if XCHAL_HAVE_LOOPS +1: + loop a0, .Leq // loop forever (a4 is bigger than max iters) + l32i a8, a2, 0 // get word from s1 + l32i a9, a3, 0 // get word from s2 + addi a2, a2, 4 // advance s1 pointer + bne a8, a9, .Lwne + bnone a8, a4, .Leq // if byte 0 is zero + bnone a8, a5, .Leq // if byte 1 is zero + bnone a8, a6, .Leq // if byte 2 is zero + bnone a8, a7, .Leq // if byte 3 is zero + addi a3, a3, 4 // advance s2 pointer + j 1b +#else /* !XCHAL_HAVE_LOOPS */ + + j .Lfirstword2 +.Lnextword2: + addi a3, a3, 4 // advance s2 pointer +.Lfirstword2: + l32i a8, a2, 0 // get word from s1 + l32i a9, a3, 0 // get word from s2 + addi a2, a2, 4 // advance s1 pointer + bne a8, a9, .Lwne + bnone a8, a4, .Leq // if byte 0 is zero + bnone a8, a5, .Leq // if byte 1 is zero + bnone a8, a6, .Leq // if byte 2 is zero + bany a8, a7, .Lnextword2 // if byte 3 is zero +#endif /* !XCHAL_HAVE_LOOPS */ + + /* Words are equal; some byte is zero. */ +.Leq: movi a2, 0 // return equal + leaf_return + +.Lwne2: /* Words are not equal. On big-endian processors, if none of the + bytes are zero, the return value can be determined by a simple + comparison. */ +#ifdef __XTENSA_EB__ + or a10, a8, a5 + bnall a10, a7, .Lsomezero + bgeu a8, a9, .Lposreturn + movi a2, -1 + leaf_return +.Lposreturn: + movi a2, 1 + leaf_return +.Lsomezero: // There is probably some zero byte. +#endif /* __XTENSA_EB__ */ +.Lwne: /* Words are not equal. */ + xor a2, a8, a9 // get word with nonzero in byte that differs + bany a2, a4, .Ldiff0 // if byte 0 differs + movi a5, MASK1 // mask for byte 1 + bnone a8, a4, .Leq // if byte 0 is zero + bany a2, a5, .Ldiff1 // if byte 1 differs + movi a6, MASK2 // mask for byte 2 + bnone a8, a5, .Leq // if byte 1 is zero + bany a2, a6, .Ldiff2 // if byte 2 differs + bnone a8, a6, .Leq // if byte 2 is zero +#ifdef __XTENSA_EB__ +.Ldiff3: +.Ldiff2: +.Ldiff1: + /* Byte 0 is equal (at least) and there is a difference before a zero + byte. Just subtract words to get the return value. + The high order equal bytes cancel, leaving room for the sign. */ + sub a2, a8, a9 + leaf_return + +.Ldiff0: + /* Need to make room for the sign, so can't subtract whole words. */ + extui a10, a8, 24, 8 + extui a11, a9, 24, 8 + sub a2, a10, a11 + leaf_return + +#else /* !__XTENSA_EB__ */ + /* Little-endian is a little more difficult because can't subtract + whole words. */ +.Ldiff3: + /* Bytes 0-2 are equal; byte 3 is different. + For little-endian need to have a sign bit for the difference. */ + extui a10, a8, 24, 8 + extui a11, a9, 24, 8 + sub a2, a10, a11 + leaf_return + +.Ldiff0: + /* Byte 0 is different. */ + extui a10, a8, 0, 8 + extui a11, a9, 0, 8 + sub a2, a10, a11 + leaf_return + +.Ldiff1: + /* Byte 0 is equal; byte 1 is different. */ + extui a10, a8, 8, 8 + extui a11, a9, 8, 8 + sub a2, a10, a11 + leaf_return + +.Ldiff2: + /* Bytes 0-1 are equal; byte 2 is different. */ + extui a10, a8, 16, 8 + extui a11, a9, 16, 8 + sub a2, a10, a11 + leaf_return + +#endif /* !__XTENSA_EB */ + + .size strcmp, . - strcmp diff --git a/newlib/libc/machine/xtensa/strcpy.S b/newlib/libc/machine/xtensa/strcpy.S new file mode 100644 index 0000000000..9ab624b73f --- /dev/null +++ b/newlib/libc/machine/xtensa/strcpy.S @@ -0,0 +1,274 @@ +/* ANSI C standard library function strcpy. + + Copyright (c) 2001-2008 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "xtensa-asm.h" + + .text + .begin schedule + .align 4 + .literal_position + .global strcpy + .type strcpy, @function +strcpy: + leaf_entry sp, 16 + /* a2 = dst, a3 = src */ + + mov a10, a2 // leave dst in return value register + movi a4, MASK0 + movi a5, MASK1 + movi a6, MASK2 + movi a7, MASK3 + bbsi.l a3, 0, .Lsrc1mod2 + bbsi.l a3, 1, .Lsrc2mod4 +.Lsrcaligned: + + /* Check if the destination is aligned. */ + movi a8, 3 + bnone a10, a8, .Laligned + + j .Ldstunaligned + +.Lsrc1mod2: // src address is odd + l8ui a8, a3, 0 // get byte 0 + addi a3, a3, 1 // advance src pointer + s8i a8, a10, 0 // store byte 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + beqz a8, 1f // if byte 0 is zero + addi a10, a10, 1 // advance dst pointer + bbci.l a3, 1, .Lsrcaligned // if src is now word-aligned + +.Lsrc2mod4: // src address is 2 mod 4 + l8ui a8, a3, 0 // get byte 0 + /* 1-cycle interlock */ + s8i a8, a10, 0 // store byte 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + beqz a8, 1f // if byte 0 is zero + l8ui a8, a3, 1 // get byte 0 + addi a3, a3, 2 // advance src pointer + s8i a8, a10, 1 // store byte 0 + addi a10, a10, 2 // advance dst pointer +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + bnez a8, .Lsrcaligned +1: leaf_return + + +/* dst is word-aligned; src is word-aligned. */ + + .align 4 +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + /* (2 mod 4) alignment for loop instruction */ +#else + /* (1 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +.Laligned: +#if XCHAL_HAVE_DENSITY + _movi.n a8, 0 // set up for the maximum loop count +#else + _movi a8, 0 // set up for the maximum loop count +#endif + loop a8, .Lz3 // loop forever (almost anyway) + l32i a8, a3, 0 // get word from src + addi a3, a3, 4 // advance src pointer + bnone a8, a4, .Lz0 // if byte 0 is zero + bnone a8, a5, .Lz1 // if byte 1 is zero + bnone a8, a6, .Lz2 // if byte 2 is zero + s32i a8, a10, 0 // store word to dst +#if XTENSA_ESP32_PSRAM_CACHE_FIX + l32i a8, a10, 0 + s32i a8, a10, 0 +#endif + bnone a8, a7, .Lz3 // if byte 3 is zero + addi a10, a10, 4 // advance dst pointer + +#else /* !XCHAL_HAVE_LOOPS */ + +1: addi a10, a10, 4 // advance dst pointer +.Laligned: + l32i a8, a3, 0 // get word from src + addi a3, a3, 4 // advance src pointer + bnone a8, a4, .Lz0 // if byte 0 is zero + bnone a8, a5, .Lz1 // if byte 1 is zero + bnone a8, a6, .Lz2 // if byte 2 is zero + s32i a8, a10, 0 // store word to dst +#if XTENSA_ESP32_PSRAM_CACHE_FIX + l32i a8, a10, 0 + s32i a8, a10, 0 +#endif + + bany a8, a7, 1b // if byte 3 is zero +#endif /* !XCHAL_HAVE_LOOPS */ + +.Lz3: /* Byte 3 is zero. */ + leaf_return + +.Lz0: /* Byte 0 is zero. */ +#ifdef __XTENSA_EB__ + movi a8, 0 +#endif + s8i a8, a10, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +.Lz1: /* Byte 1 is zero. */ +#ifdef __XTENSA_EB__ + extui a8, a8, 16, 16 +#endif + s16i a8, a10, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +.Lz2: /* Byte 2 is zero. */ +#ifdef __XTENSA_EB__ + extui a8, a8, 16, 16 +#endif + s16i a8, a10, 0 + movi a8, 0 + s8i a8, a10, 2 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +#if 1 +/* For now just use byte copy loop for the unaligned destination case. */ + + .align 4 +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + /* (2 mod 4) alignment for loop instruction */ +#else + /* (1 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +#endif +.Ldstunaligned: + +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + _movi.n a8, 0 // set up for the maximum loop count +#else + _movi a8, 0 // set up for the maximum loop count +#endif + loop a8, 2f // loop forever (almost anyway) +#endif +1: l8ui a8, a3, 0 + addi a3, a3, 1 + s8i a8, a10, 0 + addi a10, a10, 1 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif +#if XCHAL_HAVE_LOOPS + beqz a8, 2f +#else + bnez a8, 1b +#endif +2: leaf_return + +#else /* 0 */ + +/* This code is not functional yet. */ + +.Ldstunaligned: + l32i a9, a2, 0 // load word from dst +#ifdef __XTENSA_EB__ + ssa8b a9 // rotate by dst alignment so that + src a9, a9, a9 // shift in loop will put back in place + ssa8l a9 // shift left by byte*8 +#else + ssa8l a9 // rotate by dst alignment so that + src a9, a9, a9 // shift in loop will put back in place + ssa8b a9 // shift left by 32-byte*8 +#endif + +/* dst is word-aligned; src is unaligned. */ + +.Ldstunalignedloop: + l32i a8, a3, 0 // get word from src + /* 1-cycle interlock */ + bnone a8, a4, .Lu0 // if byte 0 is zero + bnone a8, a5, .Lu1 // if byte 1 is zero + bnone a8, a6, .Lu2 // if byte 2 is zero + src a9, a8, a9 // combine last word and this word + s32i a9, a10, 0 // store word to dst + bnone a8, a7, .Lu3 // if byte 3 is nonzero, iterate + l32i a9, a3, 4 // get word from src + addi a3, a3, 8 // advance src pointer + bnone a9, a4, .Lu4 // if byte 0 is zero + bnone a9, a5, .Lu5 // if byte 1 is zero + bnone a9, a6, .Lu6 // if byte 2 is zero + src a8, a9, a8 // combine last word and this word + s32i a8, a10, 4 // store word to dst + addi a10, a10, 8 // advance dst pointer + bany a8, a7, .Ldstunalignedloop // if byte 3 is nonzero, iterate + + /* Byte 7 is zero. */ +.Lu7: leaf_return + +.Lu0: /* Byte 0 is zero. */ +#ifdef __XTENSA_EB__ + movi a8, 0 +#endif + s8i a8, a10, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +.Lu1: /* Byte 1 is zero. */ +#ifdef __XTENSA_EB__ + extui a8, a8, 16, 16 +#endif + s16i a8, a10, 0 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +.Lu2: /* Byte 2 is zero. */ + s16i a8, a10, 0 + movi a8, 0 + s8i a8, a10, 2 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +#endif /* 0 */ + .end schedule + + .size strcpy, . - strcpy diff --git a/newlib/libc/machine/xtensa/strlen.S b/newlib/libc/machine/xtensa/strlen.S new file mode 100644 index 0000000000..6560a3185d --- /dev/null +++ b/newlib/libc/machine/xtensa/strlen.S @@ -0,0 +1,115 @@ +/* ANSI C standard library function strlen. + + Copyright (c) 2001-2008 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "xtensa-asm.h" + + .text + .begin schedule + .align 4 + .literal_position + .global strlen + .type strlen, @function +strlen: + leaf_entry sp, 16 + /* a2 = s */ + + addi a3, a2, -4 // because we overincrement at the end + movi a4, MASK0 + movi a5, MASK1 + movi a6, MASK2 + movi a7, MASK3 + bbsi.l a2, 0, .L1mod2 + bbsi.l a2, 1, .L2mod4 + j .Laligned + +.L1mod2: // address is odd + l8ui a8, a3, 4 // get byte 0 + addi a3, a3, 1 // advance string pointer + beqz a8, .Lz3 // if byte 0 is zero + bbci.l a3, 1, .Laligned // if string pointer is now word-aligned + +.L2mod4: // address is 2 mod 4 + addi a3, a3, 2 // advance ptr for aligned access + l32i a8, a3, 0 // get word with first two bytes of string + bnone a8, a6, .Lz2 // if byte 2 (of word, not string) is zero + bany a8, a7, .Laligned // if byte 3 (of word, not string) is nonzero + + /* Byte 3 is zero. */ + addi a3, a3, 3 // point to zero byte + sub a2, a3, a2 // subtract to get length + leaf_return + + +/* String is word-aligned. */ + + .align 4 +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + /* (2 mod 4) alignment for loop instruction */ +#else + /* (1 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +#endif +.Laligned: +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + _movi.n a8, 0 // set up for the maximum loop count +#else + _movi a8, 0 // set up for the maximum loop count +#endif + loop a8, .Lz3 // loop forever (almost anyway) +#endif +1: l32i a8, a3, 4 // get next word of string + addi a3, a3, 4 // advance string pointer + bnone a8, a4, .Lz0 // if byte 0 is zero + bnone a8, a5, .Lz1 // if byte 1 is zero + bnone a8, a6, .Lz2 // if byte 2 is zero +#if XCHAL_HAVE_LOOPS + bnone a8, a7, .Lz3 // if byte 3 is zero +#else + bany a8, a7, 1b // repeat if byte 3 is non-zero +#endif + +.Lz3: /* Byte 3 is zero. */ + addi a3, a3, 3 // point to zero byte + /* Fall through.... */ + +.Lz0: /* Byte 0 is zero. */ + sub a2, a3, a2 // subtract to get length + leaf_return + +.Lz1: /* Byte 1 is zero. */ + addi a3, a3, 1 // point to zero byte + sub a2, a3, a2 // subtract to get length + leaf_return + +.Lz2: /* Byte 2 is zero. */ + addi a3, a3, 2 // point to zero byte + sub a2, a3, a2 // subtract to get length + leaf_return + + .end schedule + + .size strlen, . - strlen diff --git a/newlib/libc/machine/xtensa/strncpy.S b/newlib/libc/machine/xtensa/strncpy.S new file mode 100644 index 0000000000..faa7c7b256 --- /dev/null +++ b/newlib/libc/machine/xtensa/strncpy.S @@ -0,0 +1,274 @@ +/* ANSI C standard library function strncpy. + + Copyright (c) 2001-2008 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "xtensa-asm.h" + + .text +.begin schedule + .align 4 + .literal_position +__strncpy_aux: + +.Lsrc1mod2: // src address is odd + l8ui a8, a3, 0 // get byte 0 + addi a3, a3, 1 // advance src pointer + s8i a8, a10, 0 // store byte 0 + addi a4, a4, -1 // decrement n + beqz a4, .Lret // if n is zero + addi a10, a10, 1 // advance dst pointer + beqz a8, .Lfill // if byte 0 is zero + bbci.l a3, 1, .Lsrcaligned // if src is now word-aligned + +.Lsrc2mod4: // src address is 2 mod 4 + l8ui a8, a3, 0 // get byte 0 + addi a4, a4, -1 // decrement n + s8i a8, a10, 0 // store byte 0 + beqz a4, .Lret // if n is zero + addi a10, a10, 1 // advance dst pointer + beqz a8, .Lfill // if byte 0 is zero + l8ui a8, a3, 1 // get byte 0 + addi a3, a3, 2 // advance src pointer + s8i a8, a10, 0 // store byte 0 + addi a4, a4, -1 // decrement n + beqz a4, .Lret // if n is zero + addi a10, a10, 1 // advance dst pointer + bnez a8, .Lsrcaligned + j .Lfill + +.Lret: +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + + + .align 4 + .global strncpy + .type strncpy, @function +strncpy: + leaf_entry sp, 16 + /* a2 = dst, a3 = src */ + + mov a10, a2 // leave dst in return value register + beqz a4, .Lret // if n is zero + + movi a11, MASK0 + movi a5, MASK1 + movi a6, MASK2 + movi a7, MASK3 + bbsi.l a3, 0, .Lsrc1mod2 + bbsi.l a3, 1, .Lsrc2mod4 +.Lsrcaligned: + + /* Check if the destination is aligned. */ + movi a8, 3 + bnone a10, a8, .Laligned + + j .Ldstunaligned + + +/* Fill the dst with zeros -- n is at least 1. */ + +.Lfill: + movi a9, 0 + bbsi.l a10, 0, .Lfill1mod2 + bbsi.l a10, 1, .Lfill2mod4 +.Lfillaligned: + blti a4, 4, .Lfillcleanup + + /* Loop filling complete words with zero. */ +#if XCHAL_HAVE_LOOPS + + srai a8, a4, 2 + loop a8, 1f + s32i a9, a10, 0 + addi a10, a10, 4 + +1: slli a8, a8, 2 + sub a4, a4, a8 + +#else /* !XCHAL_HAVE_LOOPS */ + +1: s32i a9, a10, 0 + addi a10, a10, 4 + addi a4, a4, -4 + bgei a4, 4, 1b + +#endif /* !XCHAL_HAVE_LOOPS */ + + beqz a4, 2f + +.Lfillcleanup: + /* Fill leftover (1 to 3) bytes with zero. */ + s8i a9, a10, 0 // store byte 0 + addi a4, a4, -1 // decrement n + addi a10, a10, 1 + bnez a4, .Lfillcleanup + +2: +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return + +.Lfill1mod2: // dst address is odd + s8i a9, a10, 0 // store byte 0 + addi a4, a4, -1 // decrement n + beqz a4, 2b // if n is zero + addi a10, a10, 1 // advance dst pointer + bbci.l a10, 1, .Lfillaligned // if dst is now word-aligned + +.Lfill2mod4: // dst address is 2 mod 4 + s8i a9, a10, 0 // store byte 0 + addi a4, a4, -1 // decrement n + beqz a4, 2b // if n is zero + s8i a9, a10, 1 // store byte 1 + addi a4, a4, -1 // decrement n + beqz a4, 2b // if n is zero + addi a10, a10, 2 // advance dst pointer + j .Lfillaligned + + +/* dst is word-aligned; src is word-aligned; n is at least 1. */ + + .align 4 +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + /* (2 mod 4) alignment for loop instruction */ +#else + /* (1 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +#endif +.Laligned: +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + _movi.n a8, 0 // set up for the maximum loop count +#else + _movi a8, 0 // set up for the maximum loop count +#endif + loop a8, 1f // loop forever (almost anyway) + blti a4, 5, .Ldstunaligned // n is near limit; do one at a time + l32i a8, a3, 0 // get word from src + addi a3, a3, 4 // advance src pointer + bnone a8, a11, .Lz0 // if byte 0 is zero + bnone a8, a5, .Lz1 // if byte 1 is zero + bnone a8, a6, .Lz2 // if byte 2 is zero + s32i a8, a10, 0 // store word to dst + addi a4, a4, -4 // decrement n + addi a10, a10, 4 // advance dst pointer + bnone a8, a7, .Lfill // if byte 3 is zero +1: + +#else /* !XCHAL_HAVE_LOOPS */ + +1: blti a4, 5, .Ldstunaligned // n is near limit; do one at a time + l32i a8, a3, 0 // get word from src + addi a3, a3, 4 // advance src pointer + bnone a8, a11, .Lz0 // if byte 0 is zero + bnone a8, a5, .Lz1 // if byte 1 is zero + bnone a8, a6, .Lz2 // if byte 2 is zero + s32i a8, a10, 0 // store word to dst + addi a4, a4, -4 // decrement n + addi a10, a10, 4 // advance dst pointer + bany a8, a7, 1b // no zeroes +#endif /* !XCHAL_HAVE_LOOPS */ + + j .Lfill + +.Lz0: /* Byte 0 is zero. */ +#ifdef __XTENSA_EB__ + movi a8, 0 +#endif + s8i a8, a10, 0 + addi a4, a4, -1 // decrement n + addi a10, a10, 1 // advance dst pointer + j .Lfill + +.Lz1: /* Byte 1 is zero. */ +#ifdef __XTENSA_EB__ + extui a8, a8, 16, 16 +#endif + s16i a8, a10, 0 + addi a4, a4, -2 // decrement n + addi a10, a10, 2 // advance dst pointer + j .Lfill + +.Lz2: /* Byte 2 is zero. */ +#ifdef __XTENSA_EB__ + extui a8, a8, 16, 16 +#endif + s16i a8, a10, 0 + movi a8, 0 + s8i a8, a10, 2 + addi a4, a4, -3 // decrement n + addi a10, a10, 3 // advance dst pointer + j .Lfill + + .align 4 +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + /* (2 mod 4) alignment for loop instruction */ +#else + /* (1 mod 4) alignment for loop instruction */ + .byte 0 + .byte 0 +#endif +#endif +.Ldstunaligned: + +#if XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_DENSITY + _movi.n a8, 0 // set up for the maximum loop count +#else + _movi a8, 0 // set up for the maximum loop count +#endif + loop a8, 2f // loop forever (almost anyway) +#endif +1: l8ui a8, a3, 0 + addi a3, a3, 1 +#if XTENSA_ESP32_PSRAM_CACHE_FIX + nop + nop + nop +#endif + s8i a8, a10, 0 + addi a4, a4, -1 + beqz a4, 3f + addi a10, a10, 1 +#if XCHAL_HAVE_LOOPS + beqz a8, 2f +#else + bnez a8, 1b +#endif +2: j .Lfill + +3: +#if XTENSA_ESP32_PSRAM_CACHE_FIX + memw +#endif + leaf_return +.end schedule + + .size strncpy, . - strncpy diff --git a/newlib/libc/machine/xtensa/xtensa-asm.h b/newlib/libc/machine/xtensa/xtensa-asm.h new file mode 100644 index 0000000000..926f3e4991 --- /dev/null +++ b/newlib/libc/machine/xtensa/xtensa-asm.h @@ -0,0 +1,72 @@ +/* Copyright (c) 2006 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +/* Define macros for leaf function entry and return, supporting either the + * standard register windowed ABI or the non-windowed call0 ABI. These + * macros do not allocate any extra stack space, so they only work for + * leaf functions that do not need to spill anything to the stack. */ + +#include + + .macro leaf_entry reg, size +#if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ + entry \reg, \size +#else + /* do nothing */ +#endif + .endm + + .macro leaf_return +#if XCHAL_HAVE_WINDOWED && !__XTENSA_CALL0_ABI__ + retw +#else + ret +#endif + .endm + + .macro src_b r, w0, w1 +#ifdef __XTENSA_EB__ + src \r, \w0, \w1 +#else + src \r, \w1, \w0 +#endif + .endm + + .macro ssa8 r +#ifdef __XTENSA_EB__ + ssa8b \r +#else + ssa8l \r +#endif + .endm + +#if XCHAL_HAVE_BE +#define MASK0 0xff000000 +#define MASK1 0x00ff0000 +#define MASK2 0x0000ff00 +#define MASK3 0x000000ff +#else +#define MASK0 0x000000ff +#define MASK1 0x0000ff00 +#define MASK2 0x00ff0000 +#define MASK3 0xff000000 +#endif + diff --git a/newlib/libc/machine/xtensa/xtensa.tex b/newlib/libc/machine/xtensa/xtensa.tex new file mode 100644 index 0000000000..1a5bf65e76 --- /dev/null +++ b/newlib/libc/machine/xtensa/xtensa.tex @@ -0,0 +1,72 @@ +@node Xtensa +@chapter Functions for Xtensa Processors + +This chapter describes machine-dependent functions that are included +in the C library when it is built for Xtensa processors. + +@menu +* setjmp:: Save stack environment +* longjmp:: Non-local goto +@end menu + +@page +@node setjmp +@section @code{setjmp}---save stack environment +@findex setjmp +@strong{Synopsis} +@example +#include +int setjmp(jmp_buf env); + +@end example +@strong{Description}@* +@code{setjmp} and @code{longjmp} are useful for dealing with errors +and interrupts encountered in a low-level subroutine of a program. +@code{setjmp} saves the stack context/environment in @code{env} for +later use by @code{longjmp}. The stack context will be invalidated if +the function which called @code{setjmp} returns. + +@* +@strong{Returns}@* +@code{setjmp} returns 0 if returning directly, and non-zero when +returning from @code{longjmp} using the saved context. + +@* +@strong{Portability}@* +@code{setjmp} is ANSI C and POSIX.1. + +setjmp requires no supporting OS subroutines. + +@* +@page +@node longjmp +@section @code{longjmp}---non-local goto +@findex longjmp +@strong{Synopsis} +@example +#include +void longjmp(jmp_buf env, int val); + +@end example +@strong{Description}@* +@code{longjmp} and @code{setjmp} are useful for dealing with errors +and interrupts encountered in a low-level subroutine of a program. +@code{longjmp} restores the environment saved by the last call of +@code{setjmp} with the corresponding @code{env} argument. After +@code{longjmp} is completed, program execution continues as if the +corresponding call of @code{setjmp} had just returned the value +@code{val}. @code{longjmp} cannot cause 0 to be returned. If +@code{longjmp} is invoked with a second argument of 0, 1 will be +returned instead. + +@* +@strong{Returns}@* +This function never returns. + +@* +@strong{Portability}@* +@code{longjmp} is ANSI C and POSIX.1. + +longjmp requires no supporting OS subroutines. + +@* diff --git a/newlib/libc/sys/Makefile.inc b/newlib/libc/sys/Makefile.inc index 9f8758934e..24d8407d5f 100644 --- a/newlib/libc/sys/Makefile.inc +++ b/newlib/libc/sys/Makefile.inc @@ -64,6 +64,9 @@ endif if HAVE_LIBC_SYS_W65_DIR include %D%/w65/Makefile.inc endif +if HAVE_LIBC_SYS_XTENSA_DIR +include %D%/xtensa/Makefile.inc +endif if HAVE_LIBC_SYS_Z8KSIM_DIR include %D%/z8ksim/Makefile.inc endif diff --git a/newlib/libc/sys/xtensa/Makefile.inc b/newlib/libc/sys/xtensa/Makefile.inc new file mode 100644 index 0000000000..ddee58ae1b --- /dev/null +++ b/newlib/libc/sys/xtensa/Makefile.inc @@ -0,0 +1 @@ +libc_a_SOURCES += %D%/creat.c %D%/isatty.c %D%/clibrary_init.c diff --git a/newlib/libc/sys/xtensa/clibrary_init.c b/newlib/libc/sys/xtensa/clibrary_init.c new file mode 100644 index 0000000000..24d4cf94ca --- /dev/null +++ b/newlib/libc/sys/xtensa/clibrary_init.c @@ -0,0 +1,42 @@ +/* Copyright (c) 2003-2006 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA + INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include +#include + +const char * __progname = 0; + +void +__clibrary_init (int argc, char **argv, char **envp, + void (*init)(void), + void (*fini)(void)) +{ + if (argv != 0) + __progname = *argv; + environ = envp; + if (init) + init (); + if (fini) + atexit (fini); +} diff --git a/newlib/libc/sys/xtensa/creat.c b/newlib/libc/sys/xtensa/creat.c new file mode 100644 index 0000000000..21e6a1874c --- /dev/null +++ b/newlib/libc/sys/xtensa/creat.c @@ -0,0 +1,9 @@ +/* creat() "system call" (copied from libc/posix/creat.c) */ + +#include + +int +creat (const char *path, mode_t mode) +{ + return open (path, O_WRONLY | O_CREAT | O_TRUNC, mode); +} diff --git a/newlib/libc/sys/xtensa/crt0.c b/newlib/libc/sys/xtensa/crt0.c new file mode 100644 index 0000000000..11725dca58 --- /dev/null +++ b/newlib/libc/sys/xtensa/crt0.c @@ -0,0 +1,16 @@ +/* Dummy crt0 code. */ + +/* Copyright (c) 2003 by Tensilica Inc. ALL RIGHTS RESERVED. + These coded instructions, statements, and computer programs are the + copyrighted works and confidential proprietary information of Tensilica Inc. + They may not be modified, copied, reproduced, distributed, or disclosed to + third parties in any manner, medium, or form, in whole or in part, without + the prior written consent of Tensilica Inc. */ + +/* Xtensa systems normally use a crt1 file associated with a particular + linker support package (LSP). There is no need for this crt0 file, + except that the newlib makefiles require it to exist if there is a + sys/xtensa directory. The directory exists only to hold the header + files for the Xtensa ISS semihosting "platform". */ + +void crt0_unused (void) {} diff --git a/newlib/libc/sys/xtensa/include/fenv.h b/newlib/libc/sys/xtensa/include/fenv.h new file mode 100644 index 0000000000..2fa76f758d --- /dev/null +++ b/newlib/libc/sys/xtensa/include/fenv.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + + +#ifndef _FENV_H +#define _FENV_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned long fenv_t; +typedef unsigned long fexcept_t; + +#define FE_DIVBYZERO 0x08 +#define FE_INEXACT 0x01 +#define FE_INVALID 0x10 +#define FE_OVERFLOW 0x04 +#define FE_UNDERFLOW 0x02 + +#define FE_ALL_EXCEPT \ + (FE_DIVBYZERO | \ + FE_INEXACT | \ + FE_INVALID | \ + FE_OVERFLOW | \ + FE_UNDERFLOW) + +#define FE_DOWNWARD 0x3 +#define FE_TONEAREST 0x0 +#define FE_TOWARDZERO 0x1 +#define FE_UPWARD 0x2 + +#define FE_DFL_ENV ((const fenv_t *) 0) + +int feclearexcept(int); +int fegetexceptflag(fexcept_t *, int); +int feraiseexcept(int); +int fesetexceptflag(const fexcept_t *, int); +int fetestexcept(int); +int fegetround(void); +int fesetround(int); +int fegetenv(fenv_t *); +int feholdexcept(fenv_t *); +int fesetenv(const fenv_t *); +int feupdateenv(const fenv_t *); + +/* glibc extensions */ +int feenableexcept(int excepts); +int fedisableexcept(int excepts); +int fegetexcept(void); + +#define _FE_EXCEPTION_FLAGS_OFFSET 7 +#define _FE_EXCEPTION_FLAG_MASK (FE_ALL_EXCEPT << _FE_EXCEPTION_FLAGS_OFFSET) +#define _FE_EXCEPTION_ENABLE_OFFSET 2 +#define _FE_EXCEPTION_ENABLE_MASK (FE_ALL_EXCEPT << _FE_EXCEPTION_ENABLE_OFFSET) +#define _FE_ROUND_MODE_OFFSET 0 +#define _FE_ROUND_MODE_MASK (0x3 << _FE_ROUND_MODE_OFFSET) +#define _FE_FLOATING_ENV_MASK (_FE_EXCEPTION_FLAG_MASK | _FE_EXCEPTION_ENABLE_MASK | _FE_ROUND_MODE_MASK) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/newlib/libc/sys/xtensa/include/unistd.h b/newlib/libc/sys/xtensa/include/unistd.h new file mode 100644 index 0000000000..4f6fd29a4d --- /dev/null +++ b/newlib/libc/sys/xtensa/include/unistd.h @@ -0,0 +1,13 @@ +#ifndef _UNISTD_H_ +#define _UNISTD_H_ + +# include + +#ifndef L_SET +/* Old BSD names for the same constants; just for compatibility. */ +#define L_SET SEEK_SET +#define L_INCR SEEK_CUR +#define L_XTND SEEK_END +#endif + +#endif /* _UNISTD_H_ */ diff --git a/newlib/libc/sys/xtensa/include/xtensa/config/core-isa.h b/newlib/libc/sys/xtensa/include/xtensa/config/core-isa.h new file mode 100644 index 0000000000..2accd411f9 --- /dev/null +++ b/newlib/libc/sys/xtensa/include/xtensa/config/core-isa.h @@ -0,0 +1,115 @@ +/* + * xtensa/config/core-isa.h -- minimum required HAL definitions that are + * dependent on Xtensa processor CORE configuration + * + * See , which includes this file, for more details. + */ + +/* Xtensa processor core configuration information. + + Copyright (c) 1999-2023 Tensilica Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#ifndef _XTENSA_CORE_CONFIGURATION_H +#define _XTENSA_CORE_CONFIGURATION_H + +#if defined(_LIBC) || defined(_LIBM) || defined(_LIBGLOSS) + +/* Macros used to build newlib and libgloss */ + +#undef XCHAL_HAVE_BE +#ifdef __XCHAL_HAVE_BE +#define XCHAL_HAVE_BE __XCHAL_HAVE_BE +#else +#define XCHAL_HAVE_BE 0 /* big-endian byte ordering */ +#endif + +#undef XCHAL_HAVE_WINDOWED +#ifdef __XCHAL_HAVE_WINDOWED +#define XCHAL_HAVE_WINDOWED __XCHAL_HAVE_WINDOWED +#else +#define XCHAL_HAVE_WINDOWED 1 /* windowed registers option */ +#endif + +#undef XCHAL_NUM_AREGS +#ifdef __XCHAL_NUM_AREGS +#define XCHAL_NUM_AREGS __XCHAL_NUM_AREGS +#else +#define XCHAL_NUM_AREGS 64 /* num of physical addr regs */ +#endif + +#undef XCHAL_HAVE_DENSITY +#ifdef __XCHAL_HAVE_DENSITY +#define XCHAL_HAVE_DENSITY __XCHAL_HAVE_DENSITY +#else +#define XCHAL_HAVE_DENSITY 1 /* 16-bit instructions */ +#endif + +#undef XCHAL_HAVE_LOOPS +#ifdef __XCHAL_HAVE_LOOPS +#define XCHAL_HAVE_LOOPS __XCHAL_HAVE_LOOPS +#else +#define XCHAL_HAVE_LOOPS 1 /* zero-overhead loops */ +#endif + +#undef XCHAL_HAVE_L32R +#ifdef __XCHAL_HAVE_L32R +#define XCHAL_HAVE_L32R __XCHAL_HAVE_L32R +#else +#define XCHAL_HAVE_L32R 1 /* L32R instruction */ +#endif + +#undef XCHAL_HAVE_FP +#ifdef __XCHAL_HAVE_FP +#define XCHAL_HAVE_FP __XCHAL_HAVE_FP +#else +#define XCHAL_HAVE_FP 1 /* single prec floating point */ +#endif + +#undef XCHAL_HAVE_FP_SQRT +#ifdef __XCHAL_HAVE_FP_SQRT +#define XCHAL_HAVE_FP_SQRT __XCHAL_HAVE_FP_SQRT +#else +#define XCHAL_HAVE_FP_SQRT 1 /* FP with SQRT instructions */ +#endif + +#undef XCHAL_HAVE_DFP +#ifdef __XCHAL_HAVE_DFP +#define XCHAL_HAVE_DFP __XCHAL_HAVE_DFP +#else +#define XCHAL_HAVE_DFP 0 /* double precision FP pkg */ +#endif + +#undef XCHAL_INST_FETCH_WIDTH +#ifdef __XCHAL_INST_FETCH_WIDTH +#define XCHAL_INST_FETCH_WIDTH __XCHAL_INST_FETCH_WIDTH +#else +#define XCHAL_INST_FETCH_WIDTH 4 /* instr-fetch width in bytes */ +#endif + +#else /* defined(_LIBC) || defined(_LIBM) || defined(_LIBGLOSS) */ + +/* Expect that core-isa.h exists in OS/baremetal port */ +#include_next + +#endif /* defined(_LIBC) || defined(_LIBM) || defined(_LIBGLOSS) */ + +#endif /* _XTENSA_CORE_CONFIGURATION_H */ diff --git a/newlib/libc/sys/xtensa/isatty.c b/newlib/libc/sys/xtensa/isatty.c new file mode 100644 index 0000000000..fe64209b94 --- /dev/null +++ b/newlib/libc/sys/xtensa/isatty.c @@ -0,0 +1,18 @@ +/* isatty.c */ + +/* Dumb implementation so programs will at least run. */ + +#include +#include + +int +_isatty_r (struct _reent *ptr, int fd) +{ + struct stat buf; + + if (_fstat_r (ptr, fd, &buf) < 0) + return 0; + if (S_ISCHR (buf.st_mode)) + return 1; + return 0; +} diff --git a/newlib/libc/sys/xtensa/sys/file.h b/newlib/libc/sys/xtensa/sys/file.h new file mode 100644 index 0000000000..48a2ca06de --- /dev/null +++ b/newlib/libc/sys/xtensa/sys/file.h @@ -0,0 +1,33 @@ +/* Copyright (c) 2005-2006 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA + INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +/* Alternate names for values for the WHENCE argument to `lseek'. + These are the same as SEEK_SET, SEEK_CUR, and SEEK_END, respectively. */ +#ifndef L_SET +#define L_SET 0 /* Seek from beginning of file. */ +#define L_INCR 1 /* Seek from current position. */ +#define L_XTND 2 /* Seek from end of file. */ +#endif diff --git a/newlib/libm/Makefile.inc b/newlib/libm/Makefile.inc index 075693a73e..28b84bfe2e 100644 --- a/newlib/libm/Makefile.inc +++ b/newlib/libm/Makefile.inc @@ -92,6 +92,9 @@ if HAVE_LIBM_MACHINE_X86_64 include %D%/machine/x86_64/Makefile.inc include %D%/ld80/Makefile.inc endif +if HAVE_LIBM_MACHINE_XTENSA +include %D%/machine/xtensa/Makefile.inc +endif CLEANFILES += \ %D%/targetdep.tex \ diff --git a/newlib/libm/acinclude.m4 b/newlib/libm/acinclude.m4 index f7f9f534f8..f6d88d4110 100644 --- a/newlib/libm/acinclude.m4 +++ b/newlib/libm/acinclude.m4 @@ -1,10 +1,11 @@ dnl We have to include these unconditionally since machines might want to use dnl AM_CONDITIONAL in their subdirs. m4_include([libm/machine/nds32/acinclude.m4]) +m4_include([libm/machine/xtensa/acinclude.m4]) dnl Define HAVE_LIBM_MACHINE_ automake conditionals. m4_foreach_w([MACHINE], [ - aarch64 amdgcn arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 + aarch64 amdgcn arm i386 mips nds32 powerpc pru sparc spu riscv x86_64 xtensa ], [dnl AM_CONDITIONAL([HAVE_LIBM_MACHINE_]m4_toupper(MACHINE), test "${libm_machine_dir}" = "MACHINE") ]) diff --git a/newlib/libm/machine/xtensa/Makefile.inc b/newlib/libm/machine/xtensa/Makefile.inc new file mode 100644 index 0000000000..3c95a56dd8 --- /dev/null +++ b/newlib/libm/machine/xtensa/Makefile.inc @@ -0,0 +1,12 @@ +%C%_src = \ + %D%/feclearexcept.c %D%/fegetenv.c %D%/fegetexcept.c %D%/fegetexceptflag.c \ + %D%/fegetround.c %D%/feholdexcept.c %D%/feraiseexcept.c %D%/fetestexcept.c \ + %D%/feupdateenv.c + +if XTENSA_XCHAL_HAVE_FP_SQRT +%C%_src += \ + %D%/ef_sqrt.c +endif + +libm_a_CFLAGS_%C% = -D_LIBM +libm_a_SOURCES += $(%C%_src) diff --git a/newlib/libm/machine/xtensa/acinclude.m4 b/newlib/libm/machine/xtensa/acinclude.m4 new file mode 100644 index 0000000000..4d242e057f --- /dev/null +++ b/newlib/libm/machine/xtensa/acinclude.m4 @@ -0,0 +1,11 @@ +AC_CACHE_CHECK([for XCHAL_HAVE_FP_SQRT], newlib_cv_xchal_have_fp_sqrt, [dnl + AC_PREPROC_IFELSE([AC_LANG_PROGRAM( +[[#define _LIBM +// targ-include does not exist yet, use relative path +#include "../sys/xtensa/include/xtensa/config/core-isa.h" +#if (!XCHAL_HAVE_FP_SQRT) +# error "Have not XCHAL_HAVE_FP_SQRT" +#endif +]])], [newlib_cv_xchal_have_fp_sqrt="yes"], [newlib_cv_xchal_have_fp_sqrt="no"])]) + +AM_CONDITIONAL(XTENSA_XCHAL_HAVE_FP_SQRT, test "$newlib_cv_xchal_have_fp_sqrt" = "yes") diff --git a/newlib/libm/machine/xtensa/ef_sqrt.c b/newlib/libm/machine/xtensa/ef_sqrt.c new file mode 100644 index 0000000000..39e8d75847 --- /dev/null +++ b/newlib/libm/machine/xtensa/ef_sqrt.c @@ -0,0 +1,7 @@ +#include + +#if !XCHAL_HAVE_FP_SQRT +#error "__ieee754_sqrtf from common libm must be used" +#else +/* Built-in GCC __ieee754_sqrtf must be used */ +#endif diff --git a/newlib/libm/machine/xtensa/feclearexcept.c b/newlib/libm/machine/xtensa/feclearexcept.c new file mode 100644 index 0000000000..f1bd84f964 --- /dev/null +++ b/newlib/libm/machine/xtensa/feclearexcept.c @@ -0,0 +1,48 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + + +int feclearexcept(int except) +{ + unsigned int fsr; + + if (except & ~FE_ALL_EXCEPT) + return -1; + except <<= _FE_EXCEPTION_FLAGS_OFFSET; + asm ("rur.fsr %0" : "=a"(fsr)); + fsr = fsr & ~except; + asm ("wur.fsr %0" : : "a"(fsr)); + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/fegetenv.c b/newlib/libm/machine/xtensa/fegetenv.c new file mode 100644 index 0000000000..b3984ee849 --- /dev/null +++ b/newlib/libm/machine/xtensa/fegetenv.c @@ -0,0 +1,55 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + +int fegetenv(fenv_t * env_ptr) +{ + unsigned int fsr; + unsigned int fcr; + asm ("rur.fsr %0" : "=a"(fsr)); + asm ("rur.fcr %0" : "=a"(fcr)); + *env_ptr = fsr | fcr; + return 0; +} + + +int fesetenv(const fenv_t * env_ptr) +{ + fenv_t env = *env_ptr; + if (env & ~(_FE_FLOATING_ENV_MASK)) + return -1; + asm ("wur.fsr %0" : : "a"(*env_ptr)); + asm ("wur.fcr %0" : : "a"(*env_ptr)); + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/fegetexcept.c b/newlib/libm/machine/xtensa/fegetexcept.c new file mode 100644 index 0000000000..250917c3e9 --- /dev/null +++ b/newlib/libm/machine/xtensa/fegetexcept.c @@ -0,0 +1,67 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +/* These functions are glibc extensions. */ + +#include + +int fegetexcept(void) +{ + fexcept_t current; + asm ("rur.fsr %0" : "=a"(current)); + return (current >> _FE_EXCEPTION_ENABLE_OFFSET) & FE_ALL_EXCEPT; +} + + +int feenableexcept(int excepts) +{ + fexcept_t current; + if (excepts & ~FE_ALL_EXCEPT) + return -1; + asm ("rur.fcr %0" : "=a"(current)); + current |= excepts << _FE_EXCEPTION_ENABLE_OFFSET; + asm ("wur.fcr %0" : "=a"(current)); + return 0; +} + + +int fedisableexcept(int excepts) +{ + fexcept_t current; + if (excepts & ~FE_ALL_EXCEPT) + return -1; + asm ("rur.fcr %0" : "=a"(current)); + current &= ~(excepts << _FE_EXCEPTION_ENABLE_OFFSET); + asm ("wur.fcr %0" : "=a"(current)); + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/fegetexceptflag.c b/newlib/libm/machine/xtensa/fegetexceptflag.c new file mode 100644 index 0000000000..6d9e7e6ac4 --- /dev/null +++ b/newlib/libm/machine/xtensa/fegetexceptflag.c @@ -0,0 +1,63 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + +int fegetexceptflag(fexcept_t *flagp, int excepts) +{ + unsigned int fsr; + if (excepts & ~FE_ALL_EXCEPT) + return -1; + asm ("rur.fsr %0" : "=a"(fsr)); + fsr >>= _FE_EXCEPTION_FLAGS_OFFSET; + excepts &= fsr; + *flagp = excepts; + + return 0; +} + + +int fesetexceptflag(const fexcept_t *flagp, int excepts) +{ + if (excepts & ~FE_ALL_EXCEPT) + return -1; + + unsigned int fsr; + + asm ("rur.fsr %0" : "=a"(fsr)); + + fsr &= ~(excepts << _FE_EXCEPTION_FLAGS_OFFSET); + fsr |= ((*flagp & excepts) << _FE_EXCEPTION_FLAGS_OFFSET); + asm ("wur.fsr %0" : : "a"(fsr)); + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/fegetround.c b/newlib/libm/machine/xtensa/fegetround.c new file mode 100644 index 0000000000..f17be6dc19 --- /dev/null +++ b/newlib/libm/machine/xtensa/fegetround.c @@ -0,0 +1,50 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + +int fegetround(void) +{ + fexcept_t current; + asm ("rur.fcr %0" : "=a"(current)); + return (current & _FE_ROUND_MODE_MASK) >> _FE_ROUND_MODE_OFFSET; +} + + +int fesetround(int round) +{ + if (round & ~_FE_ROUND_MODE_MASK) + return -1; + asm ("wur.fcr %0" : : "a"(round)); + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/feholdexcept.c b/newlib/libm/machine/xtensa/feholdexcept.c new file mode 100644 index 0000000000..32e5e0b3bb --- /dev/null +++ b/newlib/libm/machine/xtensa/feholdexcept.c @@ -0,0 +1,54 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + +int feholdexcept(fenv_t * envp) +{ + fexcept_t fsr; + fenv_t fcr; + /* Get the environment. */ + asm ("rur.fcr %0" : "=a"(fcr)); + asm ("rur.fsr %0" : "=a"(fsr)); + *envp = fsr | fcr; + + /* Clear the exception enable flags. */ + fcr &= _FE_ROUND_MODE_MASK; + asm ("wur.fcr %0" : :"a"(fcr)); + + /* Clear the exception happened flags. */ + fsr = 0; + asm ("wur.fsr %0" : :"a"(fsr)); + + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/feraiseexcept.c b/newlib/libm/machine/xtensa/feraiseexcept.c new file mode 100644 index 0000000000..8d418f0feb --- /dev/null +++ b/newlib/libm/machine/xtensa/feraiseexcept.c @@ -0,0 +1,49 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +/* Xtensa doesn't trap, so setting the flags is the best we can + do. */ + +#include + +int feraiseexcept(int excepts) +{ + fexcept_t current; + + if (excepts & ~FE_ALL_EXCEPT) + return -1; + asm ("rur.fsr %0" : "=a"(current)); + current |= excepts << _FE_EXCEPTION_FLAGS_OFFSET; + asm ("wur.fsr %0" : : "a"(current)); + return 0; +} + +#endif diff --git a/newlib/libm/machine/xtensa/fetestexcept.c b/newlib/libm/machine/xtensa/fetestexcept.c new file mode 100644 index 0000000000..295085949c --- /dev/null +++ b/newlib/libm/machine/xtensa/fetestexcept.c @@ -0,0 +1,41 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + +int fetestexcept(int excepts) +{ + fexcept_t current; + asm ("rur.fsr %0" : "=a"(current)); + return (current >> _FE_EXCEPTION_FLAGS_OFFSET) & excepts; +} + +#endif diff --git a/newlib/libm/machine/xtensa/feupdateenv.c b/newlib/libm/machine/xtensa/feupdateenv.c new file mode 100644 index 0000000000..cbb1ffa437 --- /dev/null +++ b/newlib/libm/machine/xtensa/feupdateenv.c @@ -0,0 +1,46 @@ +/* Copyright (c) 2011 Tensilica Inc. ALL RIGHTS RESERVED. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. */ + +#include + +#if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + +#include + +int feupdateenv(const fenv_t * envp) +{ + fenv_t current; + int err = fegetenv (¤t); + if (err != 0) + return err; + err = fesetenv (envp); + if (err != 0) + return err; + return feraiseexcept (current); +} + +#endif From 90d3b16d2b93d573501394d88538c99335edc343 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 19 Aug 2023 14:10:16 +0900 Subject: [PATCH 395/767] Cygwin: pty: Fix failure to clear switch_to_nat_pipe flag. After the commit fbfea31dd9b9, switch_to_nat_pipe is not cleared properly when non-cygwin app is terminated in the case where the pseudo console is disabled. This is because get_winpid_to_hand_over() sometimes returns PID of cygwin process even though it should return only PID of non-cygwin process. This patch fixes the issue by adding a new argument which requests only PID of non-cygwin process to get_console_process_id(). Fixes: fbfea31dd9b9 ("Cygwin: pty: Avoid cutting the branch the pty master is sitting on.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 11 ++++++++--- winsup/cygwin/local_includes/fhandler.h | 3 ++- winsup/cygwin/release/3.4.9 | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 winsup/cygwin/release/3.4.9 diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 607333f524..3f4bc56b52 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -85,7 +85,8 @@ inline static bool process_alive (DWORD pid); stub_only: return only stub process's pid of non-cygwin process. */ DWORD fhandler_pty_common::get_console_process_id (DWORD pid, bool match, - bool cygwin, bool stub_only) + bool cygwin, bool stub_only, + bool nat) { tmp_pathbuf tp; DWORD *list = (DWORD *) tp.c_get (); @@ -109,6 +110,8 @@ fhandler_pty_common::get_console_process_id (DWORD pid, bool match, else { pinfo p (cygwin_pid (list[i])); + if (nat && !!p && !ISSTATE(p, PID_NOTCYGWIN)) + continue; if (!!p && p->exec_dwProcessId) { res_pri = stub_only ? p->exec_dwProcessId : list[i]; @@ -3511,9 +3514,11 @@ fhandler_pty_slave::get_winpid_to_hand_over (tty *ttyp, { /* Search another native process which attaches to the same console */ DWORD current_pid = myself->exec_dwProcessId ?: myself->dwProcessId; - switch_to = get_console_process_id (current_pid, false, true, true); + switch_to = get_console_process_id (current_pid, + false, true, true, true); if (!switch_to) - switch_to = get_console_process_id (current_pid, false, true, false); + switch_to = get_console_process_id (current_pid, + false, true, false, true); } return switch_to; } diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 03b51a7e48..9af5f716cd 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2399,7 +2399,8 @@ class fhandler_pty_common: public fhandler_termios void resize_pseudo_console (struct winsize *); static DWORD get_console_process_id (DWORD pid, bool match, bool cygwin = false, - bool stub_only = false); + bool stub_only = false, + bool nat = false); bool to_be_read_from_nat_pipe (void); static DWORD attach_console_temporarily (DWORD target_pid); static void resume_from_temporarily_attach (DWORD resume_pid); diff --git a/winsup/cygwin/release/3.4.9 b/winsup/cygwin/release/3.4.9 new file mode 100644 index 0000000000..d089e5a9aa --- /dev/null +++ b/winsup/cygwin/release/3.4.9 @@ -0,0 +1,6 @@ +Bug Fixes +--------- + +- Fix a bug introduced in cygwin 3.4.0 that switch_to_nat_pipe flag is + not cleared properly when non-cygwin app is terminated in the case + where pseudo console is not activated. From 42fc2fa37c5995b642d128705cc67316bf9254b7 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Wed, 9 Aug 2023 00:07:04 +0400 Subject: [PATCH 396/767] libgloss: add Xtensa port Supported esp32 and esp32s2 boards: https://github.com/espressif/esp-toolchain-docs/blob/main/gcc/build-and-run-native-app.md --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 292 +++++++++++++++++- libgloss/configure | 64 ++++ libgloss/configure.ac | 6 +- libgloss/libnosys/acinclude.m4 | 1 + libgloss/xtensa/Makefile.inc | 55 ++++ libgloss/xtensa/acinclude.m4 | 5 + libgloss/xtensa/app.elf.ld | 190 ++++++++++++ libgloss/xtensa/board.elf.specs | 5 + libgloss/xtensa/boards/esp32/board.c | 24 ++ .../xtensa/boards/esp32/include/soc/cpu.h | 16 + .../xtensa/boards/esp32/include/soc/uart.h | 24 ++ libgloss/xtensa/boards/esp32/memory.elf.ld | 26 ++ libgloss/xtensa/boards/esp32s3/board.c | 24 ++ .../xtensa/boards/esp32s3/include/soc/cpu.h | 16 + .../xtensa/boards/esp32s3/include/soc/uart.h | 24 ++ libgloss/xtensa/boards/esp32s3/memory.elf.ld | 21 ++ libgloss/xtensa/crt0.S | 20 ++ libgloss/xtensa/crt1-boards.S | 223 +++++++++++++ libgloss/xtensa/crt1-sim.S | 201 ++++++++++++ libgloss/xtensa/default.specs | 2 + libgloss/xtensa/include/register_access.h | 12 + libgloss/xtensa/include/syscalls.h | 64 ++++ libgloss/xtensa/include/xtensa/corebits.h | 186 +++++++++++ libgloss/xtensa/nano.specs | 18 ++ libgloss/xtensa/sim-call.S | 12 + libgloss/xtensa/sim-vectors.S | 186 +++++++++++ libgloss/xtensa/sim.elf.specs | 5 + libgloss/xtensa/sleep.S | 69 +++++ libgloss/xtensa/sys.openocd.specs | 8 + libgloss/xtensa/sys.qemu.specs | 8 + libgloss/xtensa/syscalls.c | 205 ++++++++++++ libgloss/xtensa/window-vectors.S | 252 +++++++++++++++ 33 files changed, 2257 insertions(+), 10 deletions(-) create mode 100644 libgloss/xtensa/Makefile.inc create mode 100644 libgloss/xtensa/acinclude.m4 create mode 100644 libgloss/xtensa/app.elf.ld create mode 100644 libgloss/xtensa/board.elf.specs create mode 100644 libgloss/xtensa/boards/esp32/board.c create mode 100644 libgloss/xtensa/boards/esp32/include/soc/cpu.h create mode 100644 libgloss/xtensa/boards/esp32/include/soc/uart.h create mode 100644 libgloss/xtensa/boards/esp32/memory.elf.ld create mode 100644 libgloss/xtensa/boards/esp32s3/board.c create mode 100644 libgloss/xtensa/boards/esp32s3/include/soc/cpu.h create mode 100644 libgloss/xtensa/boards/esp32s3/include/soc/uart.h create mode 100644 libgloss/xtensa/boards/esp32s3/memory.elf.ld create mode 100644 libgloss/xtensa/crt0.S create mode 100644 libgloss/xtensa/crt1-boards.S create mode 100644 libgloss/xtensa/crt1-sim.S create mode 100644 libgloss/xtensa/default.specs create mode 100644 libgloss/xtensa/include/register_access.h create mode 100644 libgloss/xtensa/include/syscalls.h create mode 100644 libgloss/xtensa/include/xtensa/corebits.h create mode 100644 libgloss/xtensa/nano.specs create mode 100644 libgloss/xtensa/sim-call.S create mode 100644 libgloss/xtensa/sim-vectors.S create mode 100644 libgloss/xtensa/sim.elf.specs create mode 100644 libgloss/xtensa/sleep.S create mode 100644 libgloss/xtensa/sys.openocd.specs create mode 100644 libgloss/xtensa/sys.qemu.specs create mode 100644 libgloss/xtensa/syscalls.c create mode 100644 libgloss/xtensa/window-vectors.S diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index d4b7d40772..f440ad23a1 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -103,3 +103,6 @@ endif if CONFIG_WINCE include wince/Makefile.inc endif +if CONFIG_XTENSA +include xtensa/Makefile.inc +endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 7f46375c0c..611b42161f 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -190,6 +190,32 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_RISCV_TRUE@ riscv/libsemihost.a @CONFIG_WINCE_TRUE@am__append_36 = $(gdbdir) @CONFIG_WINCE_TRUE@am__append_37 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_38 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_39 = \ +@CONFIG_XTENSA_TRUE@ xtensa/default.specs \ +@CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ +@CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ +@CONFIG_XTENSA_TRUE@ xtensa/board.elf.specs \ +@CONFIG_XTENSA_TRUE@ xtensa/sys.qemu.specs \ +@CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ +@CONFIG_XTENSA_TRUE@ xtensa/crt0.o + +@CONFIG_XTENSA_TRUE@am__append_40 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_41 = \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o + +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_42 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_43 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_44 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_45 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_46 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_47 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_48 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -203,7 +229,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/mcore/acinclude.m4 \ $(top_srcdir)/mips/acinclude.m4 \ $(top_srcdir)/mn10300/acinclude.m4 \ - $(top_srcdir)/moxie/acinclude.m4 $(top_srcdir)/configure.ac + $(top_srcdir)/moxie/acinclude.m4 \ + $(top_srcdir)/xtensa/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -515,6 +542,27 @@ riscv_libsemihost_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsemihost_a-semihost-sys_unlink.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsemihost_a-semihost-sys_write.$(OBJEXT) riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) +xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) +xtensa_libgloss_a_LIBADD = +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_7 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_8 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_7) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_8) +xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) +xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) +xtensa_libsys_openocd_a_LIBADD = +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libsys_openocd_a_OBJECTS = xtensa/xtensa_libsys_openocd_a-syscalls.$(OBJEXT) +xtensa_libsys_openocd_a_OBJECTS = \ + $(am_xtensa_libsys_openocd_a_OBJECTS) +xtensa_libsys_qemu_a_AR = $(AR) $(ARFLAGS) +xtensa_libsys_qemu_a_LIBADD = +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libsys_qemu_a_OBJECTS = xtensa/xtensa_libsys_qemu_a-sim-vectors.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libsys_qemu_a-sim-call.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libsys_qemu_a-syscalls.$(OBJEXT) +xtensa_libsys_qemu_a_OBJECTS = $(am_xtensa_libsys_qemu_a_OBJECTS) @CONFIG_WINCE_TRUE@am__EXEEXT_1 = wince/stub.exe$(EXEEXT) @CONFIG_BFIN_TRUE@am__EXEEXT_2 = bfin/sim-test$(EXEEXT) @CONFIG_IQ2000_TRUE@am__EXEEXT_3 = iq2000/test$(EXEEXT) @@ -575,7 +623,9 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) bfin/sim-test.c iq2000/test.c \ + $(riscv_libsemihost_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ + $(xtensa_libsys_openocd_a_SOURCES) \ + $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) @@ -681,7 +731,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ $(am__append_38) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -728,6 +778,7 @@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +XTENSA_BOARD_ESP = @XTENSA_BOARD_ESP@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -799,11 +850,13 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_27) $(am__append_29) $(am__append_32) \ - $(am__append_34) + $(am__append_34) $(am__append_39) $(am__append_41) \ + $(am__append_43) $(am__append_47) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_24) $(am__append_28) \ - $(am__append_30) $(am__append_33) $(am__append_35) + $(am__append_30) $(am__append_33) $(am__append_35) \ + $(am__append_40) $(am__append_42) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1095,6 +1148,27 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_WINCE_TRUE@wince_stub_exe_SOURCES = wince-stub.c @CONFIG_WINCE_TRUE@wince_stub_exe_CPPFLAGS = $(AM_CPPFLAGS) -I$(gdbdir) @CONFIG_WINCE_TRUE@wince_stub_exe_LDADD = -lwinsock $(WINCE_STUB_LIBS) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_44) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_48) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_45) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_49) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c + +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_46) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_50) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c + +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = -I$(srcdir)/xtensa/boards/esp32/include all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -1102,7 +1176,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1124,7 +1198,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1782,6 +1856,59 @@ riscv/libsemihost.a: $(riscv_libsemihost_a_OBJECTS) $(riscv_libsemihost_a_DEPEND $(AM_V_at)-rm -f riscv/libsemihost.a $(AM_V_AR)$(riscv_libsemihost_a_AR) riscv/libsemihost.a $(riscv_libsemihost_a_OBJECTS) $(riscv_libsemihost_a_LIBADD) $(AM_V_at)$(RANLIB) riscv/libsemihost.a +xtensa/$(am__dirstamp): + @$(MKDIR_P) xtensa + @: > xtensa/$(am__dirstamp) +xtensa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) xtensa/$(DEPDIR) + @: > xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/xtensa_libgloss_a-sleep.$(OBJEXT): xtensa/$(am__dirstamp) \ + xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT): xtensa/$(am__dirstamp) \ + xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT): \ + xtensa/$(am__dirstamp) xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/boards/esp32/$(am__dirstamp): + @$(MKDIR_P) xtensa/boards/esp32 + @: > xtensa/boards/esp32/$(am__dirstamp) +xtensa/boards/esp32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) xtensa/boards/esp32/$(DEPDIR) + @: > xtensa/boards/esp32/$(DEPDIR)/$(am__dirstamp) +xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT): \ + xtensa/boards/esp32/$(am__dirstamp) \ + xtensa/boards/esp32/$(DEPDIR)/$(am__dirstamp) +xtensa/boards/esp32s3/$(am__dirstamp): + @$(MKDIR_P) xtensa/boards/esp32s3 + @: > xtensa/boards/esp32s3/$(am__dirstamp) +xtensa/boards/esp32s3/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) xtensa/boards/esp32s3/$(DEPDIR) + @: > xtensa/boards/esp32s3/$(DEPDIR)/$(am__dirstamp) +xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT): \ + xtensa/boards/esp32s3/$(am__dirstamp) \ + xtensa/boards/esp32s3/$(DEPDIR)/$(am__dirstamp) + +xtensa/libgloss.a: $(xtensa_libgloss_a_OBJECTS) $(xtensa_libgloss_a_DEPENDENCIES) $(EXTRA_xtensa_libgloss_a_DEPENDENCIES) xtensa/$(am__dirstamp) + $(AM_V_at)-rm -f xtensa/libgloss.a + $(AM_V_AR)$(xtensa_libgloss_a_AR) xtensa/libgloss.a $(xtensa_libgloss_a_OBJECTS) $(xtensa_libgloss_a_LIBADD) + $(AM_V_at)$(RANLIB) xtensa/libgloss.a +xtensa/xtensa_libsys_openocd_a-syscalls.$(OBJEXT): \ + xtensa/$(am__dirstamp) xtensa/$(DEPDIR)/$(am__dirstamp) + +xtensa/libsys_openocd.a: $(xtensa_libsys_openocd_a_OBJECTS) $(xtensa_libsys_openocd_a_DEPENDENCIES) $(EXTRA_xtensa_libsys_openocd_a_DEPENDENCIES) xtensa/$(am__dirstamp) + $(AM_V_at)-rm -f xtensa/libsys_openocd.a + $(AM_V_AR)$(xtensa_libsys_openocd_a_AR) xtensa/libsys_openocd.a $(xtensa_libsys_openocd_a_OBJECTS) $(xtensa_libsys_openocd_a_LIBADD) + $(AM_V_at)$(RANLIB) xtensa/libsys_openocd.a +xtensa/xtensa_libsys_qemu_a-sim-vectors.$(OBJEXT): \ + xtensa/$(am__dirstamp) xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/xtensa_libsys_qemu_a-sim-call.$(OBJEXT): \ + xtensa/$(am__dirstamp) xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/xtensa_libsys_qemu_a-syscalls.$(OBJEXT): \ + xtensa/$(am__dirstamp) xtensa/$(DEPDIR)/$(am__dirstamp) + +xtensa/libsys_qemu.a: $(xtensa_libsys_qemu_a_OBJECTS) $(xtensa_libsys_qemu_a_DEPENDENCIES) $(EXTRA_xtensa_libsys_qemu_a_DEPENDENCIES) xtensa/$(am__dirstamp) + $(AM_V_at)-rm -f xtensa/libsys_qemu.a + $(AM_V_AR)$(xtensa_libsys_qemu_a_AR) xtensa/libsys_qemu.a $(xtensa_libsys_qemu_a_OBJECTS) $(xtensa_libsys_qemu_a_LIBADD) + $(AM_V_at)$(RANLIB) xtensa/libsys_qemu.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ @@ -1860,6 +1987,9 @@ mostlyclean-compile: -rm -f lm32/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) + -rm -f xtensa/*.$(OBJEXT) + -rm -f xtensa/boards/esp32/*.$(OBJEXT) + -rm -f xtensa/boards/esp32s3/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @@ -2060,6 +2190,15 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsemihost_a-sys_kill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsemihost_a-sys_utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsemihost_a-sys_wait.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Po@am__quote@ .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @@ -2147,6 +2286,62 @@ nios2/nios2_libnios2_a-io-nios2.obj: nios2/io-nios2.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o nios2/nios2_libnios2_a-io-nios2.obj `if test -f 'nios2/io-nios2.S'; then $(CYGPATH_W) 'nios2/io-nios2.S'; else $(CYGPATH_W) '$(srcdir)/nios2/io-nios2.S'; fi` +xtensa/xtensa_libgloss_a-sleep.o: xtensa/sleep.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libgloss_a-sleep.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Tpo -c -o xtensa/xtensa_libgloss_a-sleep.o `test -f 'xtensa/sleep.S' || echo '$(srcdir)/'`xtensa/sleep.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/sleep.S' object='xtensa/xtensa_libgloss_a-sleep.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libgloss_a-sleep.o `test -f 'xtensa/sleep.S' || echo '$(srcdir)/'`xtensa/sleep.S + +xtensa/xtensa_libgloss_a-sleep.obj: xtensa/sleep.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libgloss_a-sleep.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Tpo -c -o xtensa/xtensa_libgloss_a-sleep.obj `if test -f 'xtensa/sleep.S'; then $(CYGPATH_W) 'xtensa/sleep.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/sleep.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/sleep.S' object='xtensa/xtensa_libgloss_a-sleep.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libgloss_a-sleep.obj `if test -f 'xtensa/sleep.S'; then $(CYGPATH_W) 'xtensa/sleep.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/sleep.S'; fi` + +xtensa/xtensa_libgloss_a-window-vectors.o: xtensa/window-vectors.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libgloss_a-window-vectors.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Tpo -c -o xtensa/xtensa_libgloss_a-window-vectors.o `test -f 'xtensa/window-vectors.S' || echo '$(srcdir)/'`xtensa/window-vectors.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/window-vectors.S' object='xtensa/xtensa_libgloss_a-window-vectors.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libgloss_a-window-vectors.o `test -f 'xtensa/window-vectors.S' || echo '$(srcdir)/'`xtensa/window-vectors.S + +xtensa/xtensa_libgloss_a-window-vectors.obj: xtensa/window-vectors.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libgloss_a-window-vectors.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Tpo -c -o xtensa/xtensa_libgloss_a-window-vectors.obj `if test -f 'xtensa/window-vectors.S'; then $(CYGPATH_W) 'xtensa/window-vectors.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/window-vectors.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/window-vectors.S' object='xtensa/xtensa_libgloss_a-window-vectors.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libgloss_a-window-vectors.obj `if test -f 'xtensa/window-vectors.S'; then $(CYGPATH_W) 'xtensa/window-vectors.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/window-vectors.S'; fi` + +xtensa/xtensa_libsys_qemu_a-sim-vectors.o: xtensa/sim-vectors.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libsys_qemu_a-sim-vectors.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Tpo -c -o xtensa/xtensa_libsys_qemu_a-sim-vectors.o `test -f 'xtensa/sim-vectors.S' || echo '$(srcdir)/'`xtensa/sim-vectors.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Tpo xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/sim-vectors.S' object='xtensa/xtensa_libsys_qemu_a-sim-vectors.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libsys_qemu_a-sim-vectors.o `test -f 'xtensa/sim-vectors.S' || echo '$(srcdir)/'`xtensa/sim-vectors.S + +xtensa/xtensa_libsys_qemu_a-sim-vectors.obj: xtensa/sim-vectors.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libsys_qemu_a-sim-vectors.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Tpo -c -o xtensa/xtensa_libsys_qemu_a-sim-vectors.obj `if test -f 'xtensa/sim-vectors.S'; then $(CYGPATH_W) 'xtensa/sim-vectors.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/sim-vectors.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Tpo xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-vectors.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/sim-vectors.S' object='xtensa/xtensa_libsys_qemu_a-sim-vectors.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libsys_qemu_a-sim-vectors.obj `if test -f 'xtensa/sim-vectors.S'; then $(CYGPATH_W) 'xtensa/sim-vectors.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/sim-vectors.S'; fi` + +xtensa/xtensa_libsys_qemu_a-sim-call.o: xtensa/sim-call.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libsys_qemu_a-sim-call.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Tpo -c -o xtensa/xtensa_libsys_qemu_a-sim-call.o `test -f 'xtensa/sim-call.S' || echo '$(srcdir)/'`xtensa/sim-call.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Tpo xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/sim-call.S' object='xtensa/xtensa_libsys_qemu_a-sim-call.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libsys_qemu_a-sim-call.o `test -f 'xtensa/sim-call.S' || echo '$(srcdir)/'`xtensa/sim-call.S + +xtensa/xtensa_libsys_qemu_a-sim-call.obj: xtensa/sim-call.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT xtensa/xtensa_libsys_qemu_a-sim-call.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Tpo -c -o xtensa/xtensa_libsys_qemu_a-sim-call.obj `if test -f 'xtensa/sim-call.S'; then $(CYGPATH_W) 'xtensa/sim-call.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/sim-call.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Tpo xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-sim-call.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='xtensa/sim-call.S' object='xtensa/xtensa_libsys_qemu_a-sim-call.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o xtensa/xtensa_libsys_qemu_a-sim-call.obj `if test -f 'xtensa/sim-call.S'; then $(CYGPATH_W) 'xtensa/sim-call.S'; else $(CYGPATH_W) '$(srcdir)/xtensa/sim-call.S'; fi` + .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @@ -3787,6 +3982,76 @@ riscv/riscv_libsemihost_a-semihost-sys_write.obj: riscv/semihost-sys_write.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsemihost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsemihost_a-semihost-sys_write.obj `if test -f 'riscv/semihost-sys_write.c'; then $(CYGPATH_W) 'riscv/semihost-sys_write.c'; else $(CYGPATH_W) '$(srcdir)/riscv/semihost-sys_write.c'; fi` +xtensa/xtensa_libgloss_a-syscalls.o: xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libgloss_a-syscalls.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Tpo -c -o xtensa/xtensa_libgloss_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/syscalls.c' object='xtensa/xtensa_libgloss_a-syscalls.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/xtensa_libgloss_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c + +xtensa/xtensa_libgloss_a-syscalls.obj: xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libgloss_a-syscalls.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Tpo -c -o xtensa/xtensa_libgloss_a-syscalls.obj `if test -f 'xtensa/syscalls.c'; then $(CYGPATH_W) 'xtensa/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/syscalls.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/syscalls.c' object='xtensa/xtensa_libgloss_a-syscalls.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/xtensa_libgloss_a-syscalls.obj `if test -f 'xtensa/syscalls.c'; then $(CYGPATH_W) 'xtensa/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/syscalls.c'; fi` + +xtensa/boards/esp32/xtensa_libgloss_a-board.o: xtensa/boards/esp32/board.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/boards/esp32/xtensa_libgloss_a-board.o -MD -MP -MF xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Tpo -c -o xtensa/boards/esp32/xtensa_libgloss_a-board.o `test -f 'xtensa/boards/esp32/board.c' || echo '$(srcdir)/'`xtensa/boards/esp32/board.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Tpo xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/boards/esp32/board.c' object='xtensa/boards/esp32/xtensa_libgloss_a-board.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/boards/esp32/xtensa_libgloss_a-board.o `test -f 'xtensa/boards/esp32/board.c' || echo '$(srcdir)/'`xtensa/boards/esp32/board.c + +xtensa/boards/esp32/xtensa_libgloss_a-board.obj: xtensa/boards/esp32/board.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/boards/esp32/xtensa_libgloss_a-board.obj -MD -MP -MF xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Tpo -c -o xtensa/boards/esp32/xtensa_libgloss_a-board.obj `if test -f 'xtensa/boards/esp32/board.c'; then $(CYGPATH_W) 'xtensa/boards/esp32/board.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/boards/esp32/board.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Tpo xtensa/boards/esp32/$(DEPDIR)/xtensa_libgloss_a-board.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/boards/esp32/board.c' object='xtensa/boards/esp32/xtensa_libgloss_a-board.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/boards/esp32/xtensa_libgloss_a-board.obj `if test -f 'xtensa/boards/esp32/board.c'; then $(CYGPATH_W) 'xtensa/boards/esp32/board.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/boards/esp32/board.c'; fi` + +xtensa/boards/esp32s3/xtensa_libgloss_a-board.o: xtensa/boards/esp32s3/board.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/boards/esp32s3/xtensa_libgloss_a-board.o -MD -MP -MF xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Tpo -c -o xtensa/boards/esp32s3/xtensa_libgloss_a-board.o `test -f 'xtensa/boards/esp32s3/board.c' || echo '$(srcdir)/'`xtensa/boards/esp32s3/board.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Tpo xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/boards/esp32s3/board.c' object='xtensa/boards/esp32s3/xtensa_libgloss_a-board.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/boards/esp32s3/xtensa_libgloss_a-board.o `test -f 'xtensa/boards/esp32s3/board.c' || echo '$(srcdir)/'`xtensa/boards/esp32s3/board.c + +xtensa/boards/esp32s3/xtensa_libgloss_a-board.obj: xtensa/boards/esp32s3/board.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/boards/esp32s3/xtensa_libgloss_a-board.obj -MD -MP -MF xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Tpo -c -o xtensa/boards/esp32s3/xtensa_libgloss_a-board.obj `if test -f 'xtensa/boards/esp32s3/board.c'; then $(CYGPATH_W) 'xtensa/boards/esp32s3/board.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/boards/esp32s3/board.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Tpo xtensa/boards/esp32s3/$(DEPDIR)/xtensa_libgloss_a-board.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/boards/esp32s3/board.c' object='xtensa/boards/esp32s3/xtensa_libgloss_a-board.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/boards/esp32s3/xtensa_libgloss_a-board.obj `if test -f 'xtensa/boards/esp32s3/board.c'; then $(CYGPATH_W) 'xtensa/boards/esp32s3/board.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/boards/esp32s3/board.c'; fi` + +xtensa/xtensa_libsys_openocd_a-syscalls.o: xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_openocd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libsys_openocd_a-syscalls.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Tpo -c -o xtensa/xtensa_libsys_openocd_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/syscalls.c' object='xtensa/xtensa_libsys_openocd_a-syscalls.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_openocd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/xtensa_libsys_openocd_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c + +xtensa/xtensa_libsys_openocd_a-syscalls.obj: xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_openocd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libsys_openocd_a-syscalls.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Tpo -c -o xtensa/xtensa_libsys_openocd_a-syscalls.obj `if test -f 'xtensa/syscalls.c'; then $(CYGPATH_W) 'xtensa/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/syscalls.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libsys_openocd_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/syscalls.c' object='xtensa/xtensa_libsys_openocd_a-syscalls.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_openocd_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/xtensa_libsys_openocd_a-syscalls.obj `if test -f 'xtensa/syscalls.c'; then $(CYGPATH_W) 'xtensa/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/syscalls.c'; fi` + +xtensa/xtensa_libsys_qemu_a-syscalls.o: xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libsys_qemu_a-syscalls.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Tpo -c -o xtensa/xtensa_libsys_qemu_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/syscalls.c' object='xtensa/xtensa_libsys_qemu_a-syscalls.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/xtensa_libsys_qemu_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c + +xtensa/xtensa_libsys_qemu_a-syscalls.obj: xtensa/syscalls.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libsys_qemu_a-syscalls.obj -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Tpo -c -o xtensa/xtensa_libsys_qemu_a-syscalls.obj `if test -f 'xtensa/syscalls.c'; then $(CYGPATH_W) 'xtensa/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/syscalls.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libsys_qemu_a-syscalls.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xtensa/syscalls.c' object='xtensa/xtensa_libsys_qemu_a-syscalls.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libsys_qemu_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xtensa/xtensa_libsys_qemu_a-syscalls.obj `if test -f 'xtensa/syscalls.c'; then $(CYGPATH_W) 'xtensa/syscalls.c'; else $(CYGPATH_W) '$(srcdir)/xtensa/syscalls.c'; fi` + wince_stub_exe-wince-stub.o: wince-stub.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wince_stub_exe_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wince_stub_exe-wince-stub.o -MD -MP -MF $(DEPDIR)/wince_stub_exe-wince-stub.Tpo -c -o wince_stub_exe-wince-stub.o `test -f 'wince-stub.c' || echo '$(srcdir)/'`wince-stub.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wince_stub_exe-wince-stub.Tpo $(DEPDIR)/wince_stub_exe-wince-stub.Po @@ -4233,6 +4498,12 @@ distclean-generic: -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) -rm -f wince/$(am__dirstamp) + -rm -f xtensa/$(DEPDIR)/$(am__dirstamp) + -rm -f xtensa/$(am__dirstamp) + -rm -f xtensa/boards/esp32/$(DEPDIR)/$(am__dirstamp) + -rm -f xtensa/boards/esp32/$(am__dirstamp) + -rm -f xtensa/boards/esp32s3/$(DEPDIR)/$(am__dirstamp) + -rm -f xtensa/boards/esp32s3/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -4245,7 +4516,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -4388,7 +4659,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -4537,6 +4808,9 @@ maintainer-clean-local: maintainer-clean-multi @CONFIG_BFIN_TRUE@bfin/basiccrt60xc1.$(OBJEXT): bfin/basiccrt.S @CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ +@CONFIG_XTENSA_TRUE@xtensa/crt0.$(OBJEXT): xtensa/crt0.S +@CONFIG_XTENSA_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(CPPFLAGS) -o $@ -c $< + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/libgloss/configure b/libgloss/configure index c076104117..3c0db81218 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -589,6 +589,13 @@ LIBOBJS multi_basedir target_makefile_frag_path host_makefile_frag_path +HAVE_XTENSA_BOARD_ESP_FALSE +HAVE_XTENSA_BOARD_ESP_TRUE +HAVE_XTENSA_BOARD_ESP32S3_FALSE +HAVE_XTENSA_BOARD_ESP32S3_TRUE +HAVE_XTENSA_BOARD_ESP32_FALSE +HAVE_XTENSA_BOARD_ESP32_TRUE +XTENSA_BOARD_ESP MOXIE_BUILD_CRT0_FALSE MOXIE_BUILD_CRT0_TRUE MN10300_BSP_LIST @@ -632,6 +639,8 @@ CFLAGS CC NEED_TOP_INCLUDE_DIR_FALSE NEED_TOP_INCLUDE_DIR_TRUE +CONFIG_XTENSA_FALSE +CONFIG_XTENSA_TRUE CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE CONFIG_RISCV_FALSE @@ -2928,6 +2937,9 @@ case "${target}" in subdirs="$subdirs xstormy16" ;; + xtensa-*-*) + config_xtensa=true + ;; m32c-*-*) ac_config_files="$ac_config_files m32c/Makefile" @@ -3082,6 +3094,14 @@ else CONFIG_WINCE_FALSE= fi + if test x$config_xtensa = xtrue; then + CONFIG_XTENSA_TRUE= + CONFIG_XTENSA_FALSE='#' +else + CONFIG_XTENSA_TRUE='#' + CONFIG_XTENSA_FALSE= +fi + if test x$config_arm = xtrue; then @@ -4959,6 +4979,7 @@ case "${target}" in v850*-*-*) ;; w65-*-*) ;; xstormy16-*-*) ;; + xtensa-*-*) ;; z8k-*-*) ;; *) $as_echo "#define MISSING_SYSCALL_NAMES 1" >>confdefs.h @@ -5099,6 +5120,33 @@ esac +XTENSA_BOARD_ESP=`echo $CC | sed 's/.*-mdynconfig=xtensa_\(.*\)\.so.*/\1/;s/.*-mcpu=\(^ *\).*/\1/;s/.* .*/unknown/'` + + if test x$XTENSA_BOARD_ESP = xesp32; then + HAVE_XTENSA_BOARD_ESP32_TRUE= + HAVE_XTENSA_BOARD_ESP32_FALSE='#' +else + HAVE_XTENSA_BOARD_ESP32_TRUE='#' + HAVE_XTENSA_BOARD_ESP32_FALSE= +fi + + if test x$XTENSA_BOARD_ESP = xesp32s3; then + HAVE_XTENSA_BOARD_ESP32S3_TRUE= + HAVE_XTENSA_BOARD_ESP32S3_FALSE='#' +else + HAVE_XTENSA_BOARD_ESP32S3_TRUE='#' + HAVE_XTENSA_BOARD_ESP32S3_FALSE= +fi + + if echo $XTENSA_BOARD_ESP | grep -w -e esp32 -e esp32s3 >/dev/null 2>&1; then + HAVE_XTENSA_BOARD_ESP_TRUE= + HAVE_XTENSA_BOARD_ESP_FALSE='#' +else + HAVE_XTENSA_BOARD_ESP_TRUE='#' + HAVE_XTENSA_BOARD_ESP_FALSE= +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler search settings" >&5 $as_echo_n "checking for compiler search settings... " >&6; } @@ -5359,6 +5407,10 @@ if test -z "${CONFIG_WINCE_TRUE}" && test -z "${CONFIG_WINCE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_WINCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_XTENSA_TRUE}" && test -z "${CONFIG_XTENSA_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_XTENSA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${NEED_TOP_INCLUDE_DIR_TRUE}" && test -z "${NEED_TOP_INCLUDE_DIR_FALSE}"; then as_fn_error $? "conditional \"NEED_TOP_INCLUDE_DIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5375,6 +5427,18 @@ if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_XTENSA_BOARD_ESP32_TRUE}" && test -z "${HAVE_XTENSA_BOARD_ESP32_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XTENSA_BOARD_ESP32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_XTENSA_BOARD_ESP32S3_TRUE}" && test -z "${HAVE_XTENSA_BOARD_ESP32S3_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XTENSA_BOARD_ESP32S3\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_XTENSA_BOARD_ESP_TRUE}" && test -z "${HAVE_XTENSA_BOARD_ESP_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XTENSA_BOARD_ESP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 diff --git a/libgloss/configure.ac b/libgloss/configure.ac index a332193ce0..47854eab31 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -195,6 +195,9 @@ case "${target}" in AC_CONFIG_FILES([xstormy16/Makefile]) subdirs="$subdirs xstormy16" ;; + xtensa-*-*) + config_xtensa=true + ;; m32c-*-*) AC_CONFIG_FILES([m32c/Makefile]) subdirs="$subdirs m32c" @@ -248,7 +251,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 nios2 riscv wince + aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 nios2 riscv wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) @@ -352,6 +355,7 @@ m4_include([mcore/acinclude.m4]) m4_include([mips/acinclude.m4]) m4_include([mn10300/acinclude.m4]) m4_include([moxie/acinclude.m4]) +m4_include([xtensa/acinclude.m4]) AC_CACHE_CHECK([for compiler search settings], libc_cv_compiler_isystem, [dnl for subdir in include include-fixed; do diff --git a/libgloss/libnosys/acinclude.m4 b/libgloss/libnosys/acinclude.m4 index 7b0d7b4d67..ba293f08a0 100644 --- a/libgloss/libnosys/acinclude.m4 +++ b/libgloss/libnosys/acinclude.m4 @@ -22,6 +22,7 @@ case "${target}" in v850*-*-*) ;; w65-*-*) ;; xstormy16-*-*) ;; + xtensa-*-*) ;; z8k-*-*) ;; *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;; esac diff --git a/libgloss/xtensa/Makefile.inc b/libgloss/xtensa/Makefile.inc new file mode 100644 index 0000000000..02308e4f34 --- /dev/null +++ b/libgloss/xtensa/Makefile.inc @@ -0,0 +1,55 @@ +CPPFLAGS += -D_LIBGLOSS -I$(srcdir)/%D%/include + +multilibtool_DATA += \ + %D%/default.specs \ + %D%/nano.specs \ + %D%/sim.elf.specs \ + %D%/board.elf.specs \ + %D%/sys.qemu.specs \ + %D%/sys.openocd.specs \ + %D%/crt0.o + +multilibtool_LIBRARIES += %D%/libgloss.a + +if HAVE_XTENSA_BOARD_ESP +multilibtool_DATA += \ + %D%/app.elf.ld \ + %D%/crt1-sim.o \ + %D%/crt1-boards.o + +%C%_libgloss_a_SOURCES = \ + %D%/sleep.S \ + %D%/syscalls.c \ + %D%/window-vectors.S + +multilibtool_LIBRARIES += %D%/libsys_qemu.a +%C%_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING +%C%_libsys_qemu_a_SOURCES = \ + %D%/sim-vectors.S \ + %D%/sim-call.S \ + %D%/syscalls.c + +multilibtool_LIBRARIES += %D%/libsys_openocd.a +%C%_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING +%C%_libsys_openocd_a_SOURCES = \ + %D%/syscalls.c + +if HAVE_XTENSA_BOARD_ESP32 +multilibtool_DATA += %D%/boards/esp32/memory.elf.ld +%C%_libgloss_a_SOURCES += %D%/boards/esp32/board.c +%C%_libgloss_a_CPPFLAGS = -I$(srcdir)/%D%/boards/esp32/include +%C%_libsys_qemu_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32/include +%C%_libsys_openocd_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32/include +endif + +if HAVE_XTENSA_BOARD_ESP32S3 +multilibtool_DATA += %D%/boards/esp32s3/memory.elf.ld +%C%_libgloss_a_SOURCES += %D%/boards/esp32s3/board.c +%C%_libgloss_a_CPPFLAGS = -I$(srcdir)/%D%/boards/esp32s3/include +%C%_libsys_qemu_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32s3/include +%C%_libsys_openocd_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32s3/include +endif +endif + +%D%/crt0.$(OBJEXT): %D%/crt0.S + $(AM_V_CPPAS)$(CPPASCOMPILE) $(CPPFLAGS) -o $@ -c $< diff --git a/libgloss/xtensa/acinclude.m4 b/libgloss/xtensa/acinclude.m4 new file mode 100644 index 0000000000..fc98f8a3d8 --- /dev/null +++ b/libgloss/xtensa/acinclude.m4 @@ -0,0 +1,5 @@ +XTENSA_BOARD_ESP=`echo $CC | sed 's/.*-mdynconfig=xtensa_\(.*\)\.so.*/\1/;s/.*-mcpu=\(^ *\).*/\1/;s/.* .*/unknown/'` +AC_SUBST([XTENSA_BOARD_ESP]) +AM_CONDITIONAL([HAVE_XTENSA_BOARD_ESP32], [test x$XTENSA_BOARD_ESP = xesp32]) +AM_CONDITIONAL([HAVE_XTENSA_BOARD_ESP32S3], [test x$XTENSA_BOARD_ESP = xesp32s3]) +AM_CONDITIONAL([HAVE_XTENSA_BOARD_ESP], [echo $XTENSA_BOARD_ESP | grep -w -e esp32 -e esp32s3 >/dev/null 2>&1]) diff --git a/libgloss/xtensa/app.elf.ld b/libgloss/xtensa/app.elf.ld new file mode 100644 index 0000000000..12c7eb8abb --- /dev/null +++ b/libgloss/xtensa/app.elf.ld @@ -0,0 +1,190 @@ +__stack = ORIGIN(dram_seg) + LENGTH(dram_seg); +__MIN_STACK_SIZE = 0x1000; + +ENTRY(_start) +SECTIONS +{ + . = SEGMENT_START("iram_seg", 0); + .vectors : + { + _vector_table = ABSOLUTE(.); + . = 0x0; + KEEP(*(.WindowVectors.text)); + . = 0x180; + KEEP(*(.Level2InterruptVector.text)); + . = 0x1c0; + KEEP(*(.Level3InterruptVector.text)); + . = 0x200; + KEEP(*(.Level4InterruptVector.text)); + . = 0x240; + KEEP(*(.Level5InterruptVector.text)); + . = 0x280; + KEEP(*(.DebugExceptionVector.text)); + . = 0x2c0; + KEEP(*(.NMIExceptionVector.text)); + . = 0x300; + KEEP(*(.KernelExceptionVector.text)); + . = 0x340; + KEEP(*(.UserExceptionVector.text)); + . = 0x3C0; + KEEP(*(.DoubleExceptionVector.text)); + . = 0x400; + KEEP(*(.ResetVector.text)); + *(.*Vector.literal) + . = ALIGN (16); + } > iram_seg + + text : + { + KEEP (*(.init.literal)) + KEEP (*(SORT_NONE(.init))) + *(.literal .text .stub .literal.* .text.* .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + KEEP (*(.fini.literal)) + KEEP (*(SORT_NONE(.fini))) + } > iram_seg + + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); + + .rodata : + { + *(.rodata .rodata.* .gnu.linkonce.r.*) + *(.rodata1) + *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) + *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) + } + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) + KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) + PROVIDE_HIDDEN (__init_array_end = .); + } + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) + KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) + PROVIDE_HIDDEN (__fini_array_end = .); + } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + KEEP (*crtbegin?.o(.ctors)) + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*crtbegin?.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + + _data_start = .; + .data : + { + *(.data .data.* .gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + *(.data1) + } + _edata = .; PROVIDE (edata = .); + . = .; + __bss_start = .; + .bss : + { + *(.dynsbss) + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + *(.dynbss) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. + FIXME: Why do we need it? When there is no .bss section, we do not + pad the .data section. */ + . = ALIGN(. != 0 ? 32 / 8 : 1); + } + . = ALIGN(32 / 8); + . = ALIGN(32 / 8); + _end = .; PROVIDE (end = .); + . = DATA_SEGMENT_END (.); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(. <= __stack - __MIN_STACK_SIZE, "region DRAM overflowed by .data and .bss sections") + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* DWARF 3 */ + .debug_pubtypes 0 : { *(.debug_pubtypes) } + .debug_ranges 0 : { *(.debug_ranges) } + /* DWARF Extension. */ + .debug_macro 0 : { *(.debug_macro) } + .debug_addr 0 : { *(.debug_addr) } + .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } + /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } +} + diff --git a/libgloss/xtensa/board.elf.specs b/libgloss/xtensa/board.elf.specs new file mode 100644 index 0000000000..87cff19e76 --- /dev/null +++ b/libgloss/xtensa/board.elf.specs @@ -0,0 +1,5 @@ +*startfile: +crt1-boards%O%s + +*lib: +-lc --whole-archive -lgloss --no-whole-archive -lpthread_stubs -lc %Tmemory.elf.ld %Tapp.elf.ld diff --git a/libgloss/xtensa/boards/esp32/board.c b/libgloss/xtensa/boards/esp32/board.c new file mode 100644 index 0000000000..f5c73e5337 --- /dev/null +++ b/libgloss/xtensa/boards/esp32/board.c @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +void board_init(void) +{ + WRITE_REGISTER(UART0_CLKDIV_REG, UART0_CLKDIV_VAL); +} + +void board_uart_write_char(char c) +{ + /* wait until txfifo_cnt == 0 */ + while (UART0_TXFIFO_CNT) { + ; + } + if (c == '\n') { + WRITE_REGISTER(UART0_TX_ADDR, '\r'); + } + WRITE_REGISTER(UART0_TX_ADDR, c); +} diff --git a/libgloss/xtensa/boards/esp32/include/soc/cpu.h b/libgloss/xtensa/boards/esp32/include/soc/cpu.h new file mode 100644 index 0000000000..4a16fb236f --- /dev/null +++ b/libgloss/xtensa/boards/esp32/include/soc/cpu.h @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef SOC_CPU_H +#define SOC_CPU_H + +/* + * ESP32 starts with CPU frequency 40MHz + * Let's do not reconfigure it to simplify libgloss + */ +#define CPU_FREQUENCY_MHZ 40 +#define CPU_FREQUENCY_HZ (CPU_FREQUENCY_MHZ * 1000000) + +#endif // SOC_CPU_H diff --git a/libgloss/xtensa/boards/esp32/include/soc/uart.h b/libgloss/xtensa/boards/esp32/include/soc/uart.h new file mode 100644 index 0000000000..c7b7eb2816 --- /dev/null +++ b/libgloss/xtensa/boards/esp32/include/soc/uart.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef SOC_UART_H +#define SOC_UART_H + +#include +#include + +#define UART0_BAUDRATE 115200 + +#define UART0_TX_ADDR 0x60000000 +#define UART0_BASE 0x3ff40000 +#define UART0_CLKDIV_REG (UART0_BASE + 0x14) +#define UART0_STATUS (UART0_BASE + 0x1c) +#define UART0_CLKDIV_VAL (CPU_FREQUENCY_HZ / UART0_BAUDRATE ) +#define UART0_TXFIFO_CNT (((READ_REGISTER(UART0_STATUS)) >> 16) & 0xff) + + +void board_uart_write_char(char c); + +#endif // SOC_UART_H diff --git a/libgloss/xtensa/boards/esp32/memory.elf.ld b/libgloss/xtensa/boards/esp32/memory.elf.ld new file mode 100644 index 0000000000..fa0e423b5b --- /dev/null +++ b/libgloss/xtensa/boards/esp32/memory.elf.ld @@ -0,0 +1,26 @@ +/* + * IROM/DRAM definition in QEMU: + * [ESP32_MEMREGION_IROM] = { 0x40000000, 0x70000 }, + * [ESP32_MEMREGION_DRAM] = { 0x3ffae000, 0x52000 }, + * + * In theory we could use whole DRAM section, but I had some faults when using + * memory in range 0x3ffae000 - 0x3ffb0000 + * + * But used memory range for data such as esp-idf for ESP32 to satisfy user's + * expectation on chip emulation + * + * Pass '--defsym=entire_dram_seg=1' to linker script to use whole DRAM + * + */ + +MEMORY +{ + iram_seg (X) : org = 0x40078000, len = 0x28000 +/* 64k at the end of DRAM, after ROM bootloader stack + * or entire DRAM (for QEMU only) + */ + dram_seg (RW) : org = DEFINED(entire_dram_seg) ? 0x3FFB0000 : 0x3FFF0000, + len = DEFINED(entire_dram_seg) ? 0x50000 : 0x10000 +} + + diff --git a/libgloss/xtensa/boards/esp32s3/board.c b/libgloss/xtensa/boards/esp32s3/board.c new file mode 100644 index 0000000000..f5c73e5337 --- /dev/null +++ b/libgloss/xtensa/boards/esp32s3/board.c @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +void board_init(void) +{ + WRITE_REGISTER(UART0_CLKDIV_REG, UART0_CLKDIV_VAL); +} + +void board_uart_write_char(char c) +{ + /* wait until txfifo_cnt == 0 */ + while (UART0_TXFIFO_CNT) { + ; + } + if (c == '\n') { + WRITE_REGISTER(UART0_TX_ADDR, '\r'); + } + WRITE_REGISTER(UART0_TX_ADDR, c); +} diff --git a/libgloss/xtensa/boards/esp32s3/include/soc/cpu.h b/libgloss/xtensa/boards/esp32s3/include/soc/cpu.h new file mode 100644 index 0000000000..2210ba7b01 --- /dev/null +++ b/libgloss/xtensa/boards/esp32s3/include/soc/cpu.h @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef SOC_CPU_H +#define SOC_CPU_H + +/* + * ESP32S3 starts with CPU frequency 40MHz + * Let's do not reconfigure it to simplify libgloss + */ +#define CPU_FREQUENCY_MHZ 40 +#define CPU_FREQUENCY_HZ (CPU_FREQUENCY_MHZ * 1000000) + +#endif // SOC_CPU_H diff --git a/libgloss/xtensa/boards/esp32s3/include/soc/uart.h b/libgloss/xtensa/boards/esp32s3/include/soc/uart.h new file mode 100644 index 0000000000..c6241fdec3 --- /dev/null +++ b/libgloss/xtensa/boards/esp32s3/include/soc/uart.h @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef SOC_UART_H +#define SOC_UART_H + +#include +#include + +#define UART0_BAUDRATE 115200 + +#define UART0_TX_ADDR 0x60000000 +#define UART0_BASE 0x60000000 +#define UART0_CLKDIV_REG (UART0_BASE + 0x14) +#define UART0_STATUS (UART0_BASE + 0x1c) +#define UART0_CLKDIV_VAL (CPU_FREQUENCY_HZ / UART0_BAUDRATE ) +#define UART0_TXFIFO_CNT (((READ_REGISTER(UART0_STATUS)) >> 16) & 0x3ff) + + +void board_uart_write_char(char c); + +#endif // SOC_UART_H diff --git a/libgloss/xtensa/boards/esp32s3/memory.elf.ld b/libgloss/xtensa/boards/esp32s3/memory.elf.ld new file mode 100644 index 0000000000..6426b7fc60 --- /dev/null +++ b/libgloss/xtensa/boards/esp32s3/memory.elf.ld @@ -0,0 +1,21 @@ +/* + * IROM/DRAM definition in QEMU: + * [ESP32S3_MEMREGION_IROM] = { 0x40000000, 0x60000 }, + * [ESP32S3_MEMREGION_DRAM] = { 0x3FC80000, 0x70000 }, + * + * In theory we could use whole DRAM section, but I had some faults when using + * memory in range 0x3ffae000 - 0x3ffb0000 + * + * But used memory range for data such as esp-idf for ESP32S3 to satisfy user's + * expectation on chip emulation + * + * Pass '--defsym=entire_dram_seg=1' to linker script to use whole DRAM + * + */ + +MEMORY +{ + iram_seg (X) : org = 0x40378000, len = 0x70000 + dram_seg (RW) : org = DEFINED(entire_dram_seg) ? 0x3FC80000 : 0x3FCF0000, + len = DEFINED(entire_dram_seg) ? 0x70000 : 0x10000 +} diff --git a/libgloss/xtensa/crt0.S b/libgloss/xtensa/crt0.S new file mode 100644 index 0000000000..67c359c5b4 --- /dev/null +++ b/libgloss/xtensa/crt0.S @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +/* crt0.S + * Dummy startup file which calls main() function. + * It can be used for compilation tests only. + */ + + .text + + /* + * Simple jump to main(). + */ + + .global _start + _start: + movi a4, main + jx a4 /* jump to main */ diff --git a/libgloss/xtensa/crt1-boards.S b/libgloss/xtensa/crt1-boards.S new file mode 100644 index 0000000000..a703634af6 --- /dev/null +++ b/libgloss/xtensa/crt1-boards.S @@ -0,0 +1,223 @@ +// crt1-boards.S +// +// For most hardware / boards, this code sets up the C calling context +// (setting up stack, PS, and clearing BSS) and jumps to __clibrary_start +// which sets up the C library, calls constructors and registers destructors, +// and calls main(). +// +// Control arrives here at _start from the reset vector or from crt0-app.S. + +// Copyright (c) 1998-2013 Tensilica Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include + + +// Exports +.global _start + +// Imports +// __clibrary_init from C library (eg. newlib or uclibc) +// exit from C library +// main from user application +// board_init board-specific (uart/mingloss/tinygloss.c) +// xthal_dcache_all_writeback from HAL library +// __stack from linker script (see LSP Ref Manual) +// __bss_start from linker script (see LSP Ref Manual) +// _end from linker script (see LSP Ref Manual) + +.type main, @function + +# define CALL call4 +# define CALLX callx4 +# define ARG1 a6 /* 1st outgoing call argument */ +# define ARG2 a7 /* 2nd outgoing call argument */ +# define ARG3 a8 /* 3rd outgoing call argument */ +# define ARG4 a9 /* 4th outgoing call argument */ +# define ARG5 a10 /* 5th outgoing call argument */ + + +/**************************************************************************/ + + .text + .align 4 +_start: + // _start is typically NOT at the beginning of the text segment -- + // it is always called from either the reset vector or other code + // that does equivalent initialization (such as crt0-app.S). + // + // Assumptions on entry to _start: + // - low (level-one) and medium priority interrupts are disabled + // via PS.INTLEVEL and/or INTENABLE (PS.INTLEVEL is expected to + // be zeroed, to potentially enable them, before calling main) + // - C calling context not initialized: + // - PS not initialized + // - SP not initialized + // - the following are initialized: + // - LITBASE, cache attributes, WindowBase, WindowStart, + // CPENABLE, FP's FCR and FSR, EXCSAVE[n] + + // Keep a0 zero. It is used to initialize a few things. + // It is also the return address, where zero indicates + // that the frame used by _start is the bottommost frame. + // + + movi a0, 0 // keep this register zero. + + wsr a0, INTENABLE // INTENABLE value is not defined after reset. + //make sure that interrupts are shut off (*before* we lower PS.INTLEVEL and PS.EXCM!) + + // Windowed register init, so we can call windowed code (eg. C code). + movi a1, 1 + wsr a1, WINDOWSTART + // The processor always clears WINDOWBASE at reset, so no need to clear it here. + // It resets WINDOWSTART to 1 starting with LX2.0/X7.0 (RB-2006.0). + // However, assuming hard reset is not yet always practical, so do this anyway: + wsr a0, WINDOWBASE + rsync + + // Set VECBASE to use our vectors instead vectors in ROM + movi a1, _vector_table + wsr a1, VECBASE + + // Initialize the stack pointer. + // See the "ABI and Software Conventions" chapter in the + // Xtensa ISA Reference manual for details. + + // NOTE: Because the _start routine does not use any memory in its + // stack frame, and because all of its CALL instructions use a + // window size of 4 (or zero), the stack frame for _start can be empty. + + movi sp, __stack + + /* + * Now that sp (a1) is set, we can set PS as per the application + * (user vector mode, enable interrupts, enable window exceptions if applicable). + */ + movi a3, PS_UM|PS_WOE + wsr a3, PS + rsync + + + /* + * Do any initialization that affects the memory map, such as + * setting up TLB entries, that needs to be done before we can + * successfully clear BSS (e.g. if some BSS segments are in + * remapped areas). + * + * NOTE: This hook works where the reset vector does not unpack + * segments (see "ROM packing" in the LSP manual), or where + * unpacking of segments is not affected by memory remapping. + * If ROM unpacking is affected, TLB setup must be done in + * assembler from the reset vector. + * + * The __memmap_init() routine can be a C function, however it + * does not have BSS initialized! In particular, __memmap_init() + * cannot set BSS variables, i.e. uninitialized global variables + * (they'll be wiped out by the following BSS clear), nor can it + * assume they are yet initialized to zero. + * + * The __memmap_init() function is optional. It is marked as a + * weak symbol, so that it gets valued zero if not defined. + */ + .weak __memmap_init + movi a4, __memmap_init + beqz a4, 1f + CALLX a4 +1: + + /* + * Clear the BSS (uninitialized data) segments. + * This code supports multiple zeroed sections (*.bss). + * + */ + movi a6, __bss_start + movi a8, _end + sub a8, a8, a6 + movi a7, 0 + CALL memset + + /* init semihosting if has function */ + .weak __semihosting_init + movi a4, __semihosting_init + beqz a4, 2f + CALLX a4 +2: + + // We can now call C code, the C calling environment has been initialized. + // + // From this point on, we use ABI-specific macros to refer to registers a0 .. a15 + // (ARG#). + + + .type board_init, @function + .type __clibrary_init, @function + .type exit, @function + + + // Initialize the board (eg. UART, etc). + CALL board_init + + /* + * Call __clibrary_init to initialize the C library: + * + * void __clibrary_init(int argc, char ** argv, char ** environ, + * void(*init_func)(void), void(*fini_func)(void)); + */ + + // Pass an empty argv array, with an empty string as the program name. + + .weak _init + .weak _fini + movi ARG1, _start_argc // argc address + movi ARG2, _start_argv // argv = ["", 0] + movi ARG3, _start_envp // envp = [0] + movi ARG4, _init // function that calls constructors + movi ARG5, _fini // function that calls destructors + l32i ARG1, ARG1, 0 // argc = 1 + CALL __clibrary_init + + // Call: int main(int argc, char ** argv, char ** environ); + movi ARG1, _start_argc // argc address + movi ARG2, _start_argv // argv = ["", 0] + movi ARG3, _start_envp // envp = [0] + l32i ARG1, ARG1, 0 // argc = 1 + CALL main + // The return value is the same register as the first outgoing argument. + CALL exit // exit with main's return value + // Does not return here. + + .data + // Mark argc/argv/envp parameters as weak so that an external + // object file can override them. + .weak _start_argc, _start_argv, _start_envp + .align 4 +_start_argv: + .word _start_null // empty program name +_start_null: +_start_envp: + .word 0 // end of argv array, empty string, empty environ +_start_argc: + .word 1 // one argument (program name) + .text + + .size _start, . - _start + diff --git a/libgloss/xtensa/crt1-sim.S b/libgloss/xtensa/crt1-sim.S new file mode 100644 index 0000000000..4f9924c3b0 --- /dev/null +++ b/libgloss/xtensa/crt1-sim.S @@ -0,0 +1,201 @@ +// crt1-sim.S +// For the Xtensa simulator target, this code sets up the C calling context +// and calls main() (via __clibrary_start). +// Control arrives here at _start from the reset vector or from crt0-app.S. + +// Copyright (c) 1998-2012 Tensilica Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include +#include +#include + +// Exports +.global _start + +// Imports +// __clibrary_init from C library (eg. newlib or uclibc) +// exit from C library +// main from user application +// __stack from linker script (see LSP Ref Manual) + +.type __clibrary_init, @function +.type main, @function +.type exit, @function + +# define CALL call4 +# define CALLX callx4 +# define ARG1 a6 /* 1st outgoing call argument */ +# define ARG2 a7 /* 2nd outgoing call argument */ +# define ARG3 a8 /* 3rd outgoing call argument */ +# define ARG4 a9 /* 4th outgoing call argument */ +# define ARG5 a10 /* 5th outgoing call argument */ + + .data + .weak _start_envp // allow overriding + .align 4 +_start_envp: .word 0 // empty environ + + .text + .align 4 + +_start: + // _start is typically NOT at the beginning of the text segment -- + // it is always called from either the reset vector or other code + // that does equivalent initialization (such as crt0-app.S). + // + // Assumptions on entry to _start: + // - low (level-one) and medium priority interrupts are disabled + // via PS.INTLEVEL and/or INTENABLE (PS.INTLEVEL is expected to + // be zeroed, to potentially enable them, before calling main) + // - C calling context not initialized: + // - PS not initialized + // - SP not initialized + // - the following are initialized: + // - LITBASE, cache attributes, WindowBase, WindowStart, + // CPENABLE, FP's FCR and FSR, EXCSAVE[n] + + // Keep a0 zero. It is used to initialize a few things. + // It is also the return address, where zero indicates + // that the frame used by _start is the bottommost frame. + // + movi a0, 0 // keep this register zero. + + wsr a0, INTENABLE // INTENABLE value is not defined after reset. + //make sure that interrupts are shut off (*before* we lower PS.INTLEVEL and PS.EXCM!) + + // Windowed register init, so we can call windowed code (eg. C code). + movi a1, 1 + wsr a1, WINDOWSTART + // The processor always clears WINDOWBASE at reset, so no need to clear it here. + // It resets WINDOWSTART to 1 starting with LX2.0/X7.0 (RB-2006.0). + // However, assuming hard reset is not yet always practical, so do this anyway: + wsr a0, WINDOWBASE + rsync + + // Set VECBASE to use our vectors instead vectors in ROM + movi a1, _vector_table + wsr a1, VECBASE + + + // Run only one core + // Multi-threading could be supported in future + rsr.prid a1 // core and multiprocessor ID + extui a1, a1, 13, 1 // extract core ID + beqz a1, .Lcore0 // goto Lcore0 for core0 only +.Lsuspend: // other cores are suspended + waiti 0 + j .Lsuspend + +.Lcore0: + // Initialize the stack pointer. + // See the "ABI and Software Conventions" chapter in the + // Xtensa ISA Reference manual for details. + + // NOTE: Because the _start routine does not use any memory in its + // stack frame, and because all of its CALL instructions use a + // window size of 4, the stack frame for _start can be empty. + movi sp, __stack + + // reserve stack space for + // - argv array + // - argument strings + movi a2, SYS_argv_size + simcall // returns size of argv[] + its strings in a2 + + // The stack only needs 16-byte alignment. + // However, here we round up the argv size further to 128 byte multiples + // so that in most cases, variations in argv[0]'s path do not result in + // different stack allocation. Otherwise, such variations can impact + // execution timing (eg. due to cache effects etc) for the same code and data. + // If we have a PIF, it's more likely the extra required space is okay. + addi a2, a2, 127 + srli a2, a2, 7 + slli a2, a2, 7 + + // No need to use MOVSP because we have no caller (we're the + // base caller); in fact it's better not to use MOVSP in this + // context, to avoid unnecessary ALLOCA exceptions and copying + // from undefined memory: + // sub a3, sp, a2 + // movsp sp, a3 + sub sp, sp, a2 + + /* + * Now that sp (a1) is set, we can set PS as per the application + * (user vector mode, enable interrupts, enable window exceptions if applicable). + */ + movi a3, PS_UM|PS_WOE // PS.WOE = 1, PS.UM = 1, PS.EXCM = 0, PS.INTLEVEL = 0 + wsr a3, PS + rsync + + #if XCHAL_HAVE_FP || XCHAL_HAVE_DFP + movi a3, 1 + wsr a3, CPENABLE + #endif + +1: + + /* + * Clear the BSS (uninitialized data) segments. + * This code supports multiple zeroed sections (*.bss). + * For speed, we clear memory using an ISS simcall + * (see crt1-boards.S for more generic BSS clearing code). + */ + movi a6, __bss_start + movi a7, _end + bgeu a6, a7, .Lnobss +.Lbssloop: + movi a2, SYS_memset + l32i a3, a6, 0 // arg1 = fill start address + movi a4, 0 // arg2 = fill pattern + l32i a5, a6, 4 // get end address + addi a6, a6, 8 // next bss table entry + sub a5, a5, a3 // arg3 = fill size in bytes + simcall // memset(a3,a4,a5) + bltu a6, a7, .Lbssloop // loop until end of bss table +.Lnobss: + + mov a3, sp // tell simcall where to write argv[] + movi a2, SYS_argv + simcall // write argv[] array at a3 + + movi a2, SYS_argc + simcall // put argc in a2 + + .weak _init + .weak _fini + mov ARG2, sp // argv + movi ARG3, _start_envp // envp + movi ARG4, _init // _init + movi ARG5, _fini // _fini + CALL __clibrary_init + + mov ARG1, a2 // argc + mov ARG2, sp // argv + CALL main + + // The return value is the same register as the first outgoing argument. + CALL exit // exit with main's return value + // Does not return here. + + .size _start, . - _start + diff --git a/libgloss/xtensa/default.specs b/libgloss/xtensa/default.specs new file mode 100644 index 0000000000..6002fe450f --- /dev/null +++ b/libgloss/xtensa/default.specs @@ -0,0 +1,2 @@ +*lib: +-lc -lnosys -lc diff --git a/libgloss/xtensa/include/register_access.h b/libgloss/xtensa/include/register_access.h new file mode 100644 index 0000000000..517220481d --- /dev/null +++ b/libgloss/xtensa/include/register_access.h @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef REGISTER_ACCESS_H +#define REGISTER_ACCESS_H + +#define WRITE_REGISTER(addr, val) (*((volatile uint32_t *)(addr))) = (uint32_t)(val) +#define READ_REGISTER(addr) (*((volatile uint32_t *)(addr))) + +#endif // REGISTER_ACCESS_H diff --git a/libgloss/xtensa/include/syscalls.h b/libgloss/xtensa/include/syscalls.h new file mode 100644 index 0000000000..323d6fa351 --- /dev/null +++ b/libgloss/xtensa/include/syscalls.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#ifndef XTENSA_SIMCALL_H +#define XTENSA_SIMCALL_H + +#ifdef OPENOCD_SEMIHOSTING +/* This data based on libgloss project (file aarch64/svc.h) */ + +#define ESP_SEMIHOSTING_SYS_DRV_INFO 0x100 +#define ADP_STOPPED_APPLICATION_EXIT 0x20026 + +#define SYS_close 0x02 +#define SYS_clock 0x10 +#define SYS_elapsed 0x30 +#define SYS_errno 0x13 +#define SYS_exit 0x18 +#define SYS_exit_extended 0x20 +#define SYS_flen 0x0C +#define SYS_get_cmdline 0x15 +#define SYS_heapinfo 0x16 +#define SYS_iserror 0x08 +#define SYS_istty 0x09 +#define SYS_open 0x01 +#define SYS_read 0x06 +#define SYS_readc 0x07 +#define SYS_remove 0x0E +#define SYS_rename 0x0F +#define SYS_lseek 0x0A +#define SYS_system 0x12 +#define SYS_tickfreq 0x31 +#define SYS_time 0x11 +#define SYS_tmpnam 0x0D +#define SYS_write 0x05 +#define SYS_writec 0x03 +#define SYS_write0 0x04 + +#else + +/* This data based on QEMU project (file target/xtensa/xtensa-semi.c) */ + +#define SYS_exit 1 +#define SYS_read 3 +#define SYS_write 4 +#define SYS_open 5 +#define SYS_close 6 +#define SYS_lseek 19 +#define SYS_select_one 29 +#define SYS_sendto 27 +#define SYS_recvfrom 28 +#define SYS_select_one 29 +#define SYS_bind 30 +#define SYS_ioctl 31 + +#define SYS_argc 1000 +#define SYS_argv_size 1001 +#define SYS_argv 1002 +#define SYS_memset 1004 + +#endif /* OPENOCD_SEMIHOSTING */ + +#endif /* !XTENSA_SIMCALL_H */ diff --git a/libgloss/xtensa/include/xtensa/corebits.h b/libgloss/xtensa/include/xtensa/corebits.h new file mode 100644 index 0000000000..445e33495e --- /dev/null +++ b/libgloss/xtensa/include/xtensa/corebits.h @@ -0,0 +1,186 @@ +/* + * xtensa/corebits.h - Xtensa Special Register field positions, masks, values. + * + * (In previous releases, these were defined in specreg.h, a generated file. + * This file is not generated, ie. it is processor configuration independent.) + */ + +/* $Id: //depot/rel/Eaglenest/Xtensa/OS/include/xtensa/corebits.h#2 $ */ + +/* + * Copyright (c) 2005-2011 Tensilica Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef XTENSA_COREBITS_H +#define XTENSA_COREBITS_H + +/* EXCCAUSE register fields: */ +#define EXCCAUSE_EXCCAUSE_SHIFT 0 +#define EXCCAUSE_EXCCAUSE_MASK 0x3F +/* EXCCAUSE register values: */ +/* + * General Exception Causes + * (values of EXCCAUSE special register set by general exceptions, + * which vector to the user, kernel, or double-exception vectors). + */ +#define EXCCAUSE_ILLEGAL 0 /* Illegal Instruction */ +#define EXCCAUSE_SYSCALL 1 /* System Call (SYSCALL instruction) */ +#define EXCCAUSE_INSTR_ERROR 2 /* Instruction Fetch Error */ +# define EXCCAUSE_IFETCHERROR 2 /* (backward compatibility macro, deprecated, avoid) */ +#define EXCCAUSE_LOAD_STORE_ERROR 3 /* Load Store Error */ +# define EXCCAUSE_LOADSTOREERROR 3 /* (backward compatibility macro, deprecated, avoid) */ +#define EXCCAUSE_LEVEL1_INTERRUPT 4 /* Level 1 Interrupt */ +# define EXCCAUSE_LEVEL1INTERRUPT 4 /* (backward compatibility macro, deprecated, avoid) */ +#define EXCCAUSE_ALLOCA 5 /* Stack Extension Assist (MOVSP instruction) for alloca */ +#define EXCCAUSE_DIVIDE_BY_ZERO 6 /* Integer Divide by Zero */ +#define EXCCAUSE_SPECULATION 7 /* Use of Failed Speculative Access (not implemented) */ +#define EXCCAUSE_PRIVILEGED 8 /* Privileged Instruction */ +#define EXCCAUSE_UNALIGNED 9 /* Unaligned Load or Store */ +/* Reserved 10..11 */ +#define EXCCAUSE_INSTR_DATA_ERROR 12 /* PIF Data Error on Instruction Fetch (RB-200x and later) */ +#define EXCCAUSE_LOAD_STORE_DATA_ERROR 13 /* PIF Data Error on Load or Store (RB-200x and later) */ +#define EXCCAUSE_INSTR_ADDR_ERROR 14 /* PIF Address Error on Instruction Fetch (RB-200x and later) */ +#define EXCCAUSE_LOAD_STORE_ADDR_ERROR 15 /* PIF Address Error on Load or Store (RB-200x and later) */ +#define EXCCAUSE_ITLB_MISS 16 /* ITLB Miss (no ITLB entry matches, hw refill also missed) */ +#define EXCCAUSE_ITLB_MULTIHIT 17 /* ITLB Multihit (multiple ITLB entries match) */ +#define EXCCAUSE_INSTR_RING 18 /* Ring Privilege Violation on Instruction Fetch */ +/* Reserved 19 */ /* Size Restriction on IFetch (not implemented) */ +#define EXCCAUSE_INSTR_PROHIBITED 20 /* Cache Attribute does not allow Instruction Fetch */ +/* Reserved 21..23 */ +#define EXCCAUSE_DTLB_MISS 24 /* DTLB Miss (no DTLB entry matches, hw refill also missed) */ +#define EXCCAUSE_DTLB_MULTIHIT 25 /* DTLB Multihit (multiple DTLB entries match) */ +#define EXCCAUSE_LOAD_STORE_RING 26 /* Ring Privilege Violation on Load or Store */ +/* Reserved 27 */ /* Size Restriction on Load/Store (not implemented) */ +#define EXCCAUSE_LOAD_PROHIBITED 28 /* Cache Attribute does not allow Load */ +#define EXCCAUSE_STORE_PROHIBITED 29 /* Cache Attribute does not allow Store */ +/* Reserved 30..31 */ +#define EXCCAUSE_CP_DISABLED(n) (32+(n)) /* Access to Coprocessor 'n' when disabled */ +#define EXCCAUSE_CP0_DISABLED 32 /* Access to Coprocessor 0 when disabled */ +#define EXCCAUSE_CP1_DISABLED 33 /* Access to Coprocessor 1 when disabled */ +#define EXCCAUSE_CP2_DISABLED 34 /* Access to Coprocessor 2 when disabled */ +#define EXCCAUSE_CP3_DISABLED 35 /* Access to Coprocessor 3 when disabled */ +#define EXCCAUSE_CP4_DISABLED 36 /* Access to Coprocessor 4 when disabled */ +#define EXCCAUSE_CP5_DISABLED 37 /* Access to Coprocessor 5 when disabled */ +#define EXCCAUSE_CP6_DISABLED 38 /* Access to Coprocessor 6 when disabled */ +#define EXCCAUSE_CP7_DISABLED 39 /* Access to Coprocessor 7 when disabled */ +/* Reserved 40..63 */ + +/* PS register fields: */ +#define PS_WOE_SHIFT 18 +#define PS_WOE_MASK 0x00040000 +#define PS_WOE PS_WOE_MASK +#define PS_WOE_ABI PS_WOE_MASK +#define PS_CALLINC_SHIFT 16 +#define PS_CALLINC_MASK 0x00030000 +#define PS_CALLINC(n) (((n)&3)< +#include + +//#define PS_OWB_SHIFT 8 +//#define PS_OWB_BITS 4 +//#define EXCCAUSE_ALLOCA 5 /* Stack Extension Assist (MOVSP instruction) for alloca */ + +#if XCHAL_HAVE_L32R + .section .rodata +_sim_panic_msg: + .ascii "PANIC: Unhandled exception!\n" + _sim_panic_msg_len = . - _sim_panic_msg + + .section .text + .literal .Lpanic_msg, _sim_panic_msg + .literal .Lpanic_msg_len, _sim_panic_msg_len + .align 4 +_xt_unhandled_exc: + movi a2, SYS_write + movi a3, 2 + l32r a4, .Lpanic_msg + l32r a5, .Lpanic_msg_len + simcall +#else +_xt_unhandled_exc: +#endif + movi a2, SYS_exit + movi a3, 1 + simcall + +/* +-------------------------------------------------------------------------------- +Handle alloca exception generated by interruptee executing 'movsp'. +This uses space between the window vectors, so is essentially "free". +All interruptee's regs are intact except a0 which is saved in EXCSAVE_1, +and PS.EXCM has been set by the exception hardware (can't be interrupted). +The fact the alloca exception was taken means the registers associated with +the base-save area have been spilled and will be restored by the underflow +handler, so those 4 registers are available for scratch. +The code is optimized to avoid unaligned branches and minimize cache misses. +-------------------------------------------------------------------------------- +*/ + + #if XCHAL_HAVE_WINDOWED + .section .text + .global _xt_alloca_exc + .align 4 +_xt_alloca_exc: + + rsr a0, WINDOWBASE /* grab WINDOWBASE before rotw changes it */ + rotw -1 /* WINDOWBASE goes to a4, new a0-a3 are scratch */ + rsr a2, PS + extui a3, a2, 8/*PS_OWB_BITS*/, 4/*PS_OWB_BITS*/ + xor a3, a3, a4 /* bits changed from old to current windowbase */ + rsr a4, EXCSAVE1 /* restore original a0 (now in a4) */ + slli a3, a3, 8 + xor a2, a2, a3 /* flip changed bits in old window base */ + wsr a2, PS /* update PS.OWB to new window base */ + rsync + + bbci.l a4, 31, _WindowUnderflow4 + rotw -1 /* original a0 goes to a8 */ + bbci.l a8, 30, _WindowUnderflow8 + rotw -1 + j _WindowUnderflow12 + #endif + + +/* +-------------------------------------------------------------------------------- + User exception handler. +-------------------------------------------------------------------------------- +*/ + + #if XCHAL_HAVE_WINDOWED + .section .text + .align 4 +_xt_to_alloca_exc: + j _xt_alloca_exc /* in window vectors section */ + #endif + + .type _xt_user_exc,@function + .align 4 +_xt_user_exc: + + rsr a0, EXCCAUSE + /* Handle alloca and syscall exceptions */ + #if XCHAL_HAVE_WINDOWED + beqi a0, 5/*EXCCAUSE_ALLOCA*/, _xt_to_alloca_exc + #endif + j _xt_unhandled_exc + + +/* +-------------------------------------------------------------------------------- +NMI Exception +-------------------------------------------------------------------------------- +*/ + + .begin literal_prefix .NMIExceptionVector + .section .NMIExceptionVector.text, "ax" + .global NMIExceptionVector + .type NMIExceptionVector,@function + .align 4 + +NMIExceptionVector: + j _xt_unhandled_exc + + .end literal_prefix + +/* +-------------------------------------------------------------------------------- +Kernel Exception +-------------------------------------------------------------------------------- +*/ + + .begin literal_prefix .KernelExceptionVector + .section .KernelExceptionVector.text, "ax" + .global KernelExceptionVector + .type KernelExceptionVector,@function + .align 4 + +KernelExceptionVector: + j _xt_unhandled_exc + + .end literal_prefix + +/* +-------------------------------------------------------------------------------- +User Exception +-------------------------------------------------------------------------------- +*/ + + .begin literal_prefix .UserExceptionVector + .section .UserExceptionVector.text, "ax" + .global _UserExceptionVector + .type _UserExceptionVector,@function + .align 4 + +_UserExceptionVector: + + wsr a0, EXCSAVE1 /* preserve a0 */ + j _xt_user_exc /* user exception handler */ + /* never returns here - call0 is used as a jump (see note at top) */ + + .end literal_prefix + +/* +-------------------------------------------------------------------------------- +Double Exception +-------------------------------------------------------------------------------- +*/ + + .begin literal_prefix .DoubleExceptionVector + .section .DoubleExceptionVector.text, "ax" + .global DoubleExceptionVector + .type DoubleExceptionVector,@function + .align 4 + +DoubleExceptionVector: + j _xt_unhandled_exc + + .end literal_prefix diff --git a/libgloss/xtensa/sim.elf.specs b/libgloss/xtensa/sim.elf.specs new file mode 100644 index 0000000000..3024f6887a --- /dev/null +++ b/libgloss/xtensa/sim.elf.specs @@ -0,0 +1,5 @@ +*startfile: +crt1-sim%O%s + +*lib: +-lc --whole-archive -lgloss --no-whole-archive -lpthread_stubs -lc %Tmemory.elf.ld %Tapp.elf.ld diff --git a/libgloss/xtensa/sleep.S b/libgloss/xtensa/sleep.S new file mode 100644 index 0000000000..2f20a61b54 --- /dev/null +++ b/libgloss/xtensa/sleep.S @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +#define USECONDS_IN_SECOND 1000000 + + .type sleep, @function + .align 4 + .global sleep +sleep: + entry a1, 0x30 + mov.n a7, a1 + s32i.n a2, a7, 0 + + mov a3, a2 +.Lsleep_delay_second: + addi a3, a3, -1 + movi a10, USECONDS_IN_SECOND + call8 usleep + bnez a3, .Lsleep_delay_second + +.Lsleep_exit: + s32i.n a2, a7, 0 + retw + + + .type usleep, @function + .align 4 + .global usleep +usleep: + entry a1, 0x30 + mov.n a7, a1 + s32i.n a2, a7, 0 + + /* convert time to CLOCK ticks per 1us */ + movi a6, CPU_FREQUENCY_MHZ // CPU_FREQUENCY_MHZ == ticks per us + mull a2, a2, a6 + + /* + * Registers purpose: + * a3 - start CCOUNT value + * a4 - current CCOUNT value + * a5 - target CCOUNT value + */ + + rsr a3, CCOUNT + add a5, a3, a2 + bgeu a5, a3, .Lusleep_waitloop + +.Lusleep_waitoverflow: + /* you are here because a5 (target CCOUNT) was overflown + * it means that we need to wait CCOUNT register overflow + * before do main loop + */ + rsr a4, CCOUNT + bgeu a4, a3, .Lusleep_waitoverflow + +.Lusleep_waitloop: + /* wait until we reach target CCOUNT value */ + rsr a4, CCOUNT + bgeu a4, a5, .Lusleep_exit + j .Lusleep_waitloop +.Lusleep_exit: + s32i.n a2, a7, 0 + retw + diff --git a/libgloss/xtensa/sys.openocd.specs b/libgloss/xtensa/sys.openocd.specs new file mode 100644 index 0000000000..4573184245 --- /dev/null +++ b/libgloss/xtensa/sys.openocd.specs @@ -0,0 +1,8 @@ +%rename link_gcc_c_sequence openocd_link_gcc_c_sequence + +*libopenocd: +--whole-archive -lsys_openocd --no-whole-archive + +*link_gcc_c_sequence: +%(openocd_link_gcc_c_sequence) --start-group %G %(libopenocd) --end-group + diff --git a/libgloss/xtensa/sys.qemu.specs b/libgloss/xtensa/sys.qemu.specs new file mode 100644 index 0000000000..5185c04804 --- /dev/null +++ b/libgloss/xtensa/sys.qemu.specs @@ -0,0 +1,8 @@ +%rename link_gcc_c_sequence qemu_link_gcc_c_sequence + +*libqemu: +--whole-archive -lsys_qemu --no-whole-archive + +*link_gcc_c_sequence: +%(qemu_link_gcc_c_sequence) --start-group %G %(libqemu) --end-group + diff --git a/libgloss/xtensa/syscalls.c b/libgloss/xtensa/syscalls.c new file mode 100644 index 0000000000..11e972c3fd --- /dev/null +++ b/libgloss/xtensa/syscalls.c @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +#if defined (OPENOCD_SEMIHOSTING) || (QEMU_SEMIHOSTING) +# define WITH_SEMIHOSTING +# define __WEAK_FUNCTION_ATTR__ +#else +# define __WEAK_FUNCTION_ATTR__ __attribute__((__weak__)) +#endif + + +/* __semihosting_call is a function in case semihosting usage, macro (-1) otherwise */ +#ifdef WITH_SEMIHOSTING + +static inline int +__attribute__ ((always_inline)) +__semihosting_call(int id, int arg1, int arg2, int arg3, int arg4) +{ +# ifdef OPENOCD_SEMIHOSTING + register long a2 asm("a2") = id; + long args[] = {arg1, arg2, arg3, arg4}; + register long a3 asm("a3") = (long)&args; + + /* OpenOCD has different semihosting api for sys_exit on 32-bit and 64-bit */ + if (id == SYS_exit && sizeof(void *) != 8) { + a3 = ADP_STOPPED_APPLICATION_EXIT; + } + __asm__ __volatile__ ( + "break 1, 14\n" + : "+r"(a2): "r"(a3) + : "memory"); + + // return code is placed in a2 register, so return it to the caller + return a2; +# else // OPENOCD_SEMIHOSTING + extern int __sim_call(int id, int arg1, int arg2, int arg3, int arg4); + return __sim_call(id, arg1, arg2, arg3, arg4); +# endif // OPENOCD_SEMIHOSTING +} + +# ifdef OPENOCD_SEMIHOSTING + +int +__semihosting_init (void) +{ + struct { + int version; + } ver_info = { 2 }; + __semihosting_call(ESP_SEMIHOSTING_SYS_DRV_INFO, (long) &ver_info, sizeof(ver_info), 0, 0); +} + +# endif // OPENOCD_SEMIHOSTING + +#else // !WITH_SEMIHOSTING +# define __semihosting_call(...) (-1) +#endif // WITH_SEMIHOSTING + + +void +__WEAK_FUNCTION_ATTR__ +__attribute__ ((noreturn)) +_exit (int status) +{ + __semihosting_call(SYS_exit, status, 0, 0, 0); + + for (;;) { + ; + } +} + + +int +__WEAK_FUNCTION_ATTR__ +_open (const char *file, int flags, int mode) +{ + return __semihosting_call(SYS_open, (int) file, flags, mode, 0); +} + + +int +__WEAK_FUNCTION_ATTR__ +_lseek (int fd, _off_t off, int whence) +{ + return __semihosting_call(SYS_lseek, fd, off, whence, 0); +} + + +int +__WEAK_FUNCTION_ATTR__ +_close (int fd) +{ + return __semihosting_call(SYS_close, fd, 0, 0, 0); +} + + +_ssize_t +__WEAK_FUNCTION_ATTR__ +_write (int fd, const char *buf, size_t cnt) +{ + int ret = 0; +#ifdef WITH_SEMIHOSTING + ret = __semihosting_call(SYS_write, fd, (int) buf, cnt, 0); +# ifdef OPENOCD_SEMIHOSTING + /* ret - number of bytes that are NOT written. Calculate written */ + ret = cnt - ret; +# endif // OPENOCD_SEMIHOSTING +#else // !WITH_SEMIHOSTING + if (fd != STDOUT_FILENO && fd != STDERR_FILENO) { + return -1; + } + + for (uint32_t i = 0; i < cnt; i++) { + board_uart_write_char(buf[i]); + } + ret = cnt; +#endif // WITH_SEMIHOSTING + return ret; +} + + +/* Do not compile functions with common implementation + * if building semihosting library + */ +#ifndef WITH_SEMIHOSTING + +struct _reent* +__WEAK_FUNCTION_ATTR__ +__getreent(void) +{ + return _GLOBAL_REENT; +} + + +int +__WEAK_FUNCTION_ATTR__ +_fstat (int fd, struct stat *pstat) +{ + + if (fd < STDERR_FILENO) + { + pstat->st_mode = S_IFCHR; + return 0; + } + return -1; +} + + +_ssize_t +__WEAK_FUNCTION_ATTR__ +_read (int fd, char *buf, size_t cnt) +{ + return -1; +} + + +int +__WEAK_FUNCTION_ATTR__ +_getpid (void) +{ + return -1; +} + + +int +__WEAK_FUNCTION_ATTR__ +_kill (int sig) +{ + return -1; +} + + +void * +__WEAK_FUNCTION_ATTR__ +_sbrk (int incr) +{ + extern char end; /* Set by linker. */ + static char * heap_end; + char * prev_heap_end; + + if (heap_end == 0) { + heap_end = & end; + } + + prev_heap_end = heap_end; + heap_end += incr; + + return (void *) prev_heap_end; +} + + +int +__WEAK_FUNCTION_ATTR__ +pthread_setcancelstate (int state, int *oldstate) +{ + return 0; +} + +#endif // WITH_SEMIHOSTING diff --git a/libgloss/xtensa/window-vectors.S b/libgloss/xtensa/window-vectors.S new file mode 100644 index 0000000000..acab8b355c --- /dev/null +++ b/libgloss/xtensa/window-vectors.S @@ -0,0 +1,252 @@ +// window-vectors-new.S - Register Window Overflow/Underflow Handlers for XEA2 +// $Id: //depot/rel/Eaglenest/Xtensa/OS/xtos/window-vectors-new.S#3 $ + +// Copyright (c) 1999-2013 Tensilica Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// Exports +.global _WindowOverflow4 +.global _WindowUnderflow4 +.global _WindowOverflow8 +.global _WindowUnderflow8 +.global _WindowOverflow12 +.global _WindowUnderflow12 + + // Note: the current window exception vectors do not generate any + // literals. Hence the literal_prefix directive is not necessary. + // Specifying it "just in case" creates an empty section (named + // ".WindowVectors.literal") which can in some cases cause linking + // problems (the linker scripts don't place it anywhere). + // So leave it commented out: + // + //.begin literal_prefix .WindowVectors + + .section .WindowVectors.text, "ax" + +// +// GENERAL NOTES: +// +// These window exception handlers need not be modified. +// They are specific to the windowed call ABI only. +// +// Underflow Handlers: +// +// The underflow handler for returning from call[i+1] to call[i] +// must preserve all the registers from call[i+1]'s window. +// In particular, a0 and a1 must be preserved because the RETW instruction +// will be reexecuted (and may even underflow again if an intervening +// exception has flushed call[i]'s registers). +// Registers a2 and up may contain return values. +// +// The caller could also potentially assume that the callee's a0 and a1 +// (its own a4&a5 if call4, a8&a9 if call8, a12&a13 if call12) +// are correct for whatever reason (not a clean thing to do in general, +// but if it's possible, unless the ABI explicitly prohibits it, +// it will eventually be done :) -- whether the the ABI needs to +// prohibit this is a different question). +// +// Timing of Handlers: +// +// Here is an overview of the overhead of taking a window exception, +// ie. the number of additional cycles taken relative to case where +// an exception is not taken. +// NOTE: these numbers do not take into account any cache misses, +// write buffer stalls, or other external stalls, if they occur. +// The totals consist of 5 cycles to enter the handler (or 6 or 7 +// for optional longer pipelines in Xtensa LX), the number of instructions +// and interlocks (2nd and 3rd columns below), and 2 cycles jump delay +// on return (3 cycles for optional longer I-side pipeline in Xtensa LX): +// +// Instruction+bubbles Totals (5-stage) +// XEA1 XEA2 XEA1 XEA2 +// Overflow-4 7 5 14 12 +// Overflow-8 14 10 21 17 +// Overflow-12 18 14 25 21 +// Underflow-4 6 5 13 12 +// Underflow-8 14 10 21 17 +// Underflow-12 18 14 25 21 +// +// Underflow-8 15 12 25 22 (7-stage; could be made 1 less) +// Underflow-12 19 16 29 26 (7-stage; could be made 1 less) + + +// 4-Register Window Overflow Vector (Handler) +// +// Invoked if a call[i] referenced a register (a4-a15) +// that contains data from ancestor call[j]; +// call[j] had done a call4 to call[j+1]. +// On entry here: +// window rotated to call[j] start point; +// a0-a3 are registers to be saved; +// a4-a15 must be preserved; +// a5 is call[j+1]'s stack pointer. + + .org 0x0 +_WindowOverflow4: + s32e a0, a5, -16 // save a0 to call[j+1]'s stack frame + s32e a1, a5, -12 // save a1 to call[j+1]'s stack frame + s32e a2, a5, -8 // save a2 to call[j+1]'s stack frame + s32e a3, a5, -4 // save a3 to call[j+1]'s stack frame + rfwo // rotates back to call[i] position + + .size _WindowOverflow4, . - _WindowOverflow4 + + +// 4-Register Window Underflow Vector (Handler) +// +// Invoked by RETW returning from call[i+1] to call[i] +// where call[i]'s registers must be reloaded (not live in ARs); +// call[i] had done a call4 to call[i+1]. +// On entry here: +// window rotated to call[i] start point; +// a0-a3 are undefined, must be reloaded with call[i].reg[0..3]; +// a4-a15 must be preserved (they are call[i+1].reg[0..11]); +// a5 is call[i+1]'s stack pointer. + + .org 0x40 +_WindowUnderflow4: + l32e a0, a5, -16 // restore a0 from call[i+1]'s stack frame + l32e a1, a5, -12 // restore a1 from call[i+1]'s stack frame + l32e a2, a5, -8 // restore a2 from call[i+1]'s stack frame + l32e a3, a5, -4 // restore a3 from call[i+1]'s stack frame + rfwu + + .size _WindowUnderflow4, . - _WindowUnderflow4 + + +// 8-Register Window Overflow Vector (Handler) +// +// Invoked if a call[i] referenced a register (a4-a15) +// that contains data from ancestor call[j]; +// call[j] had done a call8 to call[j+1]. +// On entry here: +// window rotated to call[j] start point; +// a0-a7 are registers to be saved; +// a8-a15 must be preserved; +// a9 is call[j+1]'s stack pointer. + + .org 0x80 +_WindowOverflow8: + s32e a0, a9, -16 // save a0 to call[j+1]'s stack frame + l32e a0, a1, -12 // a0 <- call[j-1]'s sp (used to find end of call[j]'s frame) + s32e a1, a9, -12 // save a1 to call[j+1]'s stack frame + s32e a2, a9, -8 // save a2 to call[j+1]'s stack frame + s32e a3, a9, -4 // save a3 to call[j+1]'s stack frame + s32e a4, a0, -32 // save a4 to call[j]'s stack frame + s32e a5, a0, -28 // save a5 to call[j]'s stack frame + s32e a6, a0, -24 // save a6 to call[j]'s stack frame + s32e a7, a0, -20 // save a7 to call[j]'s stack frame + rfwo // rotates back to call[i] position + + .size _WindowOverflow8, . - _WindowOverflow8 + + +// 8-Register Window Underflow Vector (Handler) +// +// Invoked by RETW returning from call[i+1] to call[i] +// where call[i]'s registers must be reloaded (not live in ARs); +// call[i] had done a call8 to call[i+1]. +// On entry here: +// window rotated to call[i] start point; +// a0-a7 are undefined, must be reloaded with call[i].reg[0..7]; +// a8-a15 must be preserved (they are call[i+1].reg[0..7]); +// a9 is call[i+1]'s stack pointer. + + .org 0xC0 +_WindowUnderflow8: + l32e a0, a9, -16 // restore a0 from call[i+1]'s stack frame + l32e a1, a9, -12 // restore a1 from call[i+1]'s stack frame + l32e a2, a9, -8 // restore a2 from call[i+1]'s stack frame + l32e a7, a1, -12 // a7 <- call[i-1]'s sp (used to find end of call[i]'s frame) + l32e a3, a9, -4 // restore a3 from call[i+1]'s stack frame + l32e a4, a7, -32 // restore a4 from call[i]'s stack frame + l32e a5, a7, -28 // restore a5 from call[i]'s stack frame + l32e a6, a7, -24 // restore a6 from call[i]'s stack frame../../.././libgloss/xtensa/window-vectors.S + l32e a7, a7, -20 // restore a7 from call[i]'s stack frame + rfwu + + .size _WindowUnderflow8, . - _WindowUnderflow8 + + +// 12-Register Window Overflow Vector (Handler) +// +// Invoked if a call[i] referenced a register (a4-a15) +// that contains data from ancestor call[j]; +// call[j] had done a call12 to call[j+1]. +// On entry here: +// window rotated to call[j] start point; +// a0-a11 are registers to be saved; +// a12-a15 must be preserved; +// a13 is call[j+1]'s stack pointer. + + .org 0x100 +_WindowOverflow12: + s32e a0, a13, -16 // save a0 to call[j+1]'s stack frame + l32e a0, a1, -12 // a0 <- call[j-1]'s sp (used to find end of call[j]'s frame) + s32e a1, a13, -12 // save a1 to call[j+1]'s stack frame + s32e a2, a13, -8 // save a2 to call[j+1]'s stack frame + s32e a3, a13, -4 // save a3 to call[j+1]'s stack frame + s32e a4, a0, -48 // save a4 to end of call[j]'s stack frame + s32e a5, a0, -44 // save a5 to end of call[j]'s stack frame + s32e a6, a0, -40 // save a6 to end of call[j]'s stack frame + s32e a7, a0, -36 // save a7 to end of call[j]'s stack frame + s32e a8, a0, -32 // save a8 to end of call[j]'s stack frame + s32e a9, a0, -28 // save a9 to end of call[j]'s stack frame + s32e a10, a0, -24 // save a10 to end of call[j]'s stack frame + s32e a11, a0, -20 // save a11 to end of call[j]'s stack frame + rfwo // rotates back to call[i] position + + .size _WindowOverflow12, . - _WindowOverflow12 + + +// 12-Register Window Underflow Vector (Handler) +// +// Invoked by RETW returning from call[i+1] to call[i] +// where call[i]'s registers must be reloaded (not live in ARs); +// call[i] had done a call12 to call[i+1]. +// On entry here: +// window rotated to call[i] start point; +// a0-a11 are undefined, must be reloaded with call[i].reg[0..11]; +// a12-a15 must be preserved (they are call[i+1].reg[0..3]); +// a13 is call[i+1]'s stack pointer. + + .org 0x140 +_WindowUnderflow12: + l32e a0, a13, -16 // restore a0 from call[i+1]'s stack frame + l32e a1, a13, -12 // restore a1 from call[i+1]'s stack frame + l32e a2, a13, -8 // restore a2 from call[i+1]'s stack frame + l32e a11, a1, -12 // a11 <- call[i-1]'s sp (used to find end of call[i]'s frame) + l32e a3, a13, -4 // restore a3 from call[i+1]'s stack frame + l32e a4, a11, -48 // restore a4 from end of call[i]'s stack frame + l32e a5, a11, -44 // restore a5 from end of call[i]'s stack frame + l32e a6, a11, -40 // restore a6 from end of call[i]'s stack frame + l32e a7, a11, -36 // restore a7 from end of call[i]'s stack frame + l32e a8, a11, -32 // restore a8 from end of call[i]'s stack frame + l32e a9, a11, -28 // restore a9 from end of call[i]'s stack frame + l32e a10, a11, -24 // restore a10 from end of call[i]'s stack frame + l32e a11, a11, -20 // restore a11 from end of call[i]'s stack frame + rfwu + + .size _WindowUnderflow12, . - _WindowUnderflow12 + + + //.end literal_prefix + .text From 6407da947d92205a59ab3713a6dd9fabd3fd2477 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 25 Aug 2023 11:11:32 +0200 Subject: [PATCH 397/767] Cygwin: doc: add new API calls in 3.5 Signed-off-by: Corinna Vinschen --- winsup/doc/posix.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/winsup/doc/posix.xml b/winsup/doc/posix.xml index a62557579a..151aeb9fee 100644 --- a/winsup/doc/posix.xml +++ b/winsup/doc/posix.xml @@ -1355,6 +1355,8 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017). mkostemp mkostemps pipe2 + posix_spawn_file_actions_addchdir_np + posix_spawn_file_actions_addfchdir_np pow10 pow10f pow10l @@ -1514,6 +1516,9 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017). aligned_alloc (ISO C11) at_quick_exit (ISO C11) + c16rtomb (ISO C11) + c32rtomb (ISO C11) + c8rtomb (ISO C23) call_once (ISO C11) cnd_broadcast (ISO C11) cnd_destroy (ISO C11) @@ -1521,6 +1526,9 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017). cnd_signal (ISO C11) cnd_timedwait (ISO C11) cnd_wait (ISO C11) + mbrtoc16 (ISO C11) + mbrtoc32 (ISO C11) + mbrtoc8 (ISO C23) mtx_destroy (ISO C11) mtx_init (ISO C11) mtx_lock (ISO C11) From d085592daa5f89ccc9f5b86b2ca26199e7516d61 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 25 Aug 2023 14:39:04 +0200 Subject: [PATCH 398/767] Cygwin: mknod: disable creating special files on NFS This simply doesn't work (yet?) but leaves unusable files behind. Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index e4b3dd2f3c..52b9c9a8be 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3294,6 +3294,12 @@ mknod (const char *path, mode_t mode, dev_t dev) __leave; } + if (w32path.fs_is_nfs ()) + { + set_errno (EPERM); + __leave; + } + return mknod_worker (w32path, mode, major, minor); } __except (EFAULT) From 384e572f41d0848f281a68dade2f02005fde50bd Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 25 Aug 2023 14:50:48 +0200 Subject: [PATCH 399/767] Cygwin: document disabling mknod/mkfifo on NFS Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.9 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/winsup/cygwin/release/3.4.9 b/winsup/cygwin/release/3.4.9 index d089e5a9aa..2f2da9e137 100644 --- a/winsup/cygwin/release/3.4.9 +++ b/winsup/cygwin/release/3.4.9 @@ -4,3 +4,7 @@ Bug Fixes - Fix a bug introduced in cygwin 3.4.0 that switch_to_nat_pipe flag is not cleared properly when non-cygwin app is terminated in the case where pseudo console is not activated. + +- For the time being, disable creating special files using mknod/mkfifo + on NFS. + Addresses: https://cygwin.com/pipermail/cygwin/2023-August/254266.html From a841911ea45272b1333134aa0d8bd9b3860a2c7f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 26 Aug 2023 17:59:58 +0200 Subject: [PATCH 400/767] Revert "Cygwin: select: workaround FD_WRITE network event handling" This reverts commit dedbbd74d0a8f3b7dfae6188321703a47bb8a2b3. Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 1 - winsup/cygwin/select.cc | 30 +++--------------------------- 2 files changed, 3 insertions(+), 28 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index 67149f8282..c9ad92530c 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -645,7 +645,6 @@ LoadDLLfunc (getsockname, ws2_32) LoadDLLfunc (getsockopt, ws2_32) LoadDLLfunc (ioctlsocket, ws2_32) LoadDLLfunc (listen, ws2_32) -LoadDLLfunc_pfx_only (select, ws2_32) LoadDLLfunc (setsockopt, ws2_32) LoadDLLfunc (shutdown, ws2_32) LoadDLLfunc (socket, ws2_32) diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 7b9473849e..bad4c37f3b 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1757,15 +1757,6 @@ fhandler_base::select_except (select_stuff *ss) return s; } -struct wfd_set -{ - u_int fd_count; - SOCKET fd_array[1]; -}; - -/* autoload exposes the Winsock select function only with a _win32_ prefix. */ -extern "C" int _win32_select(int, wfd_set *, wfd_set *, wfd_set *, TIMEVAL *); - static int peek_socket (select_record *me, bool) { @@ -1781,24 +1772,9 @@ peek_socket (select_record *me, bool) if (me->read_selected) me->read_ready |= ret || !!(events & (FD_READ | FD_ACCEPT | FD_CLOSE)); if (me->write_selected) - { - /* The FD_WRITE event is a false friend. It indicates ready to write - even if the next send fails with WSAEWOULDBLOCK. *After* the fact, - FD_WRITE will be cleared until sending is again possible. - For the time being, workaround that here by using the WinSock - select function. It indicates writability correctly. */ - if (events & FD_WRITE) - { - wfd_set w = { 1, { fh->get_socket () } }; - TIMEVAL t = { 0 }; - - if (_win32_select (0, NULL, &w, NULL, &t) == 0) - events &= ~FD_WRITE; - } - /* Don't check for FD_CLOSE here. Only an error case (ret == -1) - will set ready for writing. */ - me->write_ready |= ret || !!(events & (FD_WRITE | FD_CONNECT)); - } + /* Don't check for FD_CLOSE here. Only an error case (ret == -1) + will set ready for writing. */ + me->write_ready |= ret || !!(events & (FD_WRITE | FD_CONNECT)); if (me->except_selected) me->except_ready |= !!(events & FD_OOB); From eb1584b491384e072c949ecd78ec85de244661fe Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 26 Aug 2023 18:00:04 +0200 Subject: [PATCH 401/767] Revert "Cygwin: autoload: introduce LoadDLLfunc_pfx_only" This reverts commit 0e711d6cc9b5206335fe8562817b6d5e6cad876e. Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index c9ad92530c..c8909caff4 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -123,33 +123,6 @@ _win32_" #name ": \n\ .asciz \"" #name "\" \n\ .text \n\ "); - -/* Do not export function "foo" as "foo". Only export it as "_win32_foo". - That allows to autoload and use a Windows function having the same name - as a Cygwin function. Namely select. */ -#define LoadDLLfunc_pfx_only(name, dllname) \ - LoadDLLprime (dllname, dll_func_load, 0) \ - __asm__ (" \n\ - .section ." #dllname "_autoload_text,\"wx\" \n\ - .global _win32_" #name " \n\ - .align 16 \n\ -_win32_" #name ": \n\ - movq 3f(%rip),%rax \n\ - jmp *%rax \n\ -1:movq 2f(%rip),%rax \n\ - push %rbp # Keep 16 byte aligned \n\ - push %r9 \n\ - push %r8 \n\ - push %rdx \n\ - push %rcx \n\ - call *(%rax) \n\ -2:.quad ." #dllname "_info \n\ - .hword 0 \n\ - .hword 0 \n\ -3:.quad 1b \n\ - .asciz \"" #name "\" \n\ - .text \n\ -"); #else #error unimplemented for this target #endif From 50ff7901a5dbb2c57548d1bc125bbfbd17d37889 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 28 Aug 2023 17:38:52 +0900 Subject: [PATCH 402/767] Cygwin: termios: Refactor the function is_console_app(). Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/termios.cc | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/winsup/cygwin/fhandler/termios.cc b/winsup/cygwin/fhandler/termios.cc index 789ae0179f..d106955dcc 100644 --- a/winsup/cygwin/fhandler/termios.cc +++ b/winsup/cygwin/fhandler/termios.cc @@ -704,22 +704,20 @@ static bool is_console_app (const WCHAR *filename) { HANDLE h; - const int id_offset = 92; h = CreateFileW (filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); char buf[1024]; DWORD n; ReadFile (h, buf, sizeof (buf), &n, 0); CloseHandle (h); - char *p = (char *) memmem (buf, n, "PE\0\0", 4); - if (p && p + id_offset < buf + n) - return p[id_offset] == '\003'; /* 02: GUI, 03: console */ - else - { - wchar_t *e = wcsrchr (filename, L'.'); - if (e && (wcscasecmp (e, L".bat") == 0 || wcscasecmp (e, L".cmd") == 0)) - return true; - } + /* The offset of Subsystem is the same for both IMAGE_NT_HEADERS32 and + IMAGE_NT_HEADERS64, so only IMAGE_NT_HEADERS32 is used here. */ + IMAGE_NT_HEADERS32 *p = (IMAGE_NT_HEADERS32 *) memmem (buf, n, "PE\0\0", 4); + if (p && (char *) &p->OptionalHeader.DllCharacteristics <= buf + n) + return p->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI; + wchar_t *e = wcsrchr (filename, L'.'); + if (e && (wcscasecmp (e, L".bat") == 0 || wcscasecmp (e, L".cmd") == 0)) + return true; return false; } From 44f73c5a620689d6821c4bd0444051be57f8251a Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 28 Aug 2023 22:14:41 +0900 Subject: [PATCH 403/767] Cygwin: Fix segfalt when too many command line args are specified. Previously, the number of command line args was not checked for cygwin process. Due to this, segmentation fault was caused if too many command line args are specified. https://cygwin.com/pipermail/cygwin/2023-August/254333.html Since char *argv[argc + 1] is placed on the stack in dll_crt0_1(), STATUS_STACK_OVERFLOW occurs if the stack does not have enough space. With this patch, char *argv[] is placed in heap instead of stack and ARG_MAX is increased from 32000 to 2097152 which is default value of Linux. The argument length is also compared with ARG_MAX and spawnve() returns E2BIG if it is too long. Reported-by: Ed Morton Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/dcrt0.cc | 7 ++----- winsup/cygwin/local_includes/winsup.h | 4 ++++ winsup/cygwin/release/3.4.9 | 3 +++ winsup/cygwin/spawn.cc | 9 ++++++++- winsup/cygwin/sysconf.cc | 2 +- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 49b7a44aeb..1d88105463 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -978,11 +978,8 @@ dll_crt0_1 (void *) a change to an element of argv[] it does not affect Cygwin's argv. Changing the the contents of what argv[n] points to will still affect Cygwin. This is similar (but not exactly like) Linux. */ - char *newargv[__argc + 1]; - char **nav = newargv; - char **oav = __argv; - while ((*nav++ = *oav++) != NULL) - continue; + char **newargv = (char **) malloc ((__argc + 1) * sizeof (char *)); + memcpy (newargv, __argv, (__argc + 1) * sizeof (char *)); /* Handle any signals which may have arrived */ sig_dispatch_pending (false); _my_tls.call_signal_handler (); diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index c9788de8f0..57bd38c9ff 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -73,6 +73,10 @@ uint32_t cygwin_inet_addr (const char *cp); application provided path strings we handle. */ #define NT_MAX_PATH 32768 +/* CYG_ARG_MAX is the maximum total length of command line args. + The value 2097152 is the default ARG_MAX value in Linux. */ +#define CYG_ARG_MAX 2097152 + /* This definition allows to define wide char strings using macros as parameters. See the definition of __CONCAT in newlib's sys/cdefs.h and accompanying comment. */ diff --git a/winsup/cygwin/release/3.4.9 b/winsup/cygwin/release/3.4.9 index 2f2da9e137..53c4e5fc84 100644 --- a/winsup/cygwin/release/3.4.9 +++ b/winsup/cygwin/release/3.4.9 @@ -8,3 +8,6 @@ Bug Fixes - For the time being, disable creating special files using mknod/mkfifo on NFS. Addresses: https://cygwin.com/pipermail/cygwin/2023-August/254266.html + +- Fix segfault when too many command line args are specified. + Addresses: https://cygwin.com/pipermail/cygwin/2023-August/254333.html diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index c16fe269a3..c4f1167284 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -351,8 +351,9 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, We need to quote any argument that has whitespace or embedded "'s. */ int ac; + size_t arg_len = 0; for (ac = 0; argv[ac]; ac++) - /* nothing */; + arg_len += strlen (argv[ac]) + 1; int err; const char *ext; @@ -521,6 +522,12 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, __leave; } set (chtype, real_path.iscygexec ()); + if (iscygwin () && arg_len > (size_t) sysconf (_SC_ARG_MAX)) + { + set_errno (E2BIG); + res = -1; + __leave; + } __stdin = in__stdin; __stdout = in__stdout; record_children (); diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc index 2db92e4def..7cdfbdb9d4 100644 --- a/winsup/cygwin/sysconf.cc +++ b/winsup/cygwin/sysconf.cc @@ -485,7 +485,7 @@ static struct }; } sca[] = { - {cons, {c:ARG_MAX}}, /* 0, _SC_ARG_MAX */ + {cons, {c:CYG_ARG_MAX}}, /* 0, _SC_ARG_MAX */ {cons, {c:CHILD_MAX}}, /* 1, _SC_CHILD_MAX */ {cons, {c:CLOCKS_PER_SEC}}, /* 2, _SC_CLK_TCK */ {cons, {c:NGROUPS_MAX}}, /* 3, _SC_NGROUPS_MAX */ From 42eb6e5ddf49d81a17fffa1caaf61a668aab4692 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Mon, 28 Aug 2023 09:39:12 +0000 Subject: [PATCH 404/767] newlib: fix 'sed' for sys headers path prefix Precisely remove the prefix from the filepath. --- newlib/Makefile.am | 4 ++-- newlib/Makefile.in | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 126cf24c12..e29607ccd6 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -240,7 +240,7 @@ stmp-targ-include: config.status $(AM_V_at)s=machine/$(machine_dir)/include d= $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/include d= $(TARG_INCLUDE_CP_DIR) $(AM_V_at)for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ - f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ $(MKDIR_P) targ-include/`dirname $$f`; \ cp $$i targ-include/$$f; \ done @@ -334,7 +334,7 @@ install-data-local: install-toollibLIBRARIES install-multi $(INSTALL_DATA_LOCAL) else true; fi ; \ done ; \ for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ - f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ $(MKDIR_P) $(DESTDIR)$(tooldir)/`dirname $$f`; \ $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/`dirname $$f`; \ done ; \ diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 6c7a7aeea4..c3052acb93 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -50411,7 +50411,7 @@ stmp-targ-include: config.status $(AM_V_at)s=machine/$(machine_dir)/include d= $(TARG_INCLUDE_CP_DIR) $(AM_V_at)s=sys/$(sys_dir)/include d= $(TARG_INCLUDE_CP_DIR) $(AM_V_at)for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ - f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ $(MKDIR_P) targ-include/`dirname $$f`; \ cp $$i targ-include/$$f; \ done @@ -50500,7 +50500,7 @@ install-data-local: install-toollibLIBRARIES install-multi $(INSTALL_DATA_LOCAL) else true; fi ; \ done ; \ for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ - f=`echo $$i | sed s:$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ $(MKDIR_P) $(DESTDIR)$(tooldir)/`dirname $$f`; \ $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/`dirname $$f`; \ done ; \ From ca2a4ec243627b19f0ac2c7262703f81712f3be4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 29 Aug 2023 11:55:10 +0200 Subject: [PATCH 405/767] Cygwin: execve: drop argument size limit Before commit 44f73c5a6206 ("Cygwin: Fix segfalt when too many command line args are specified.") we had no actual argument size limit, except for the fact that the child process created another copy of the argv array on the stack, which could result in a stack overflow and a subsequent SEGV. Commit 44f73c5a6206 changed that by allocating the additional argv array via malloc, and it introduced a new SC_ARG_MAX limit along the lines of the typical Linux limit. However, this new limit is artificial. Cygwin allocates all argument and environment data on the cygheap. We only run out of ARG_MAX space if we're out of memory resources. Change argument size handling accordingly: - Drop the args size check from child_info_spawn::worker. - Return -1 from sysconf (SC_ARG_MAX), i. e., the argument size limit is undefined. - Change argv handling in class av, so that a failing cmalloc is not fatal. This allows the parent process to return E2BIG if it's out of cygheap resources. - In the child, add a check around the new malloc call, so that it doesn't result in a SEGV if the child process gets unexpectedly into an ENOMEM situation at this point. In this (unlikely) case, proceed with the original __argv array instead. Add comment to explain why. Fixes: 44f73c5a6206 ("Cygwin: Fix segfalt when too many command line args are specified.") Tested-by: Takashi Yano Signed-off-by: Corinna Vinschen --- winsup/cygwin/dcrt0.cc | 18 +++++++++++++++--- winsup/cygwin/kernel32.cc | 7 +++++-- winsup/cygwin/local_includes/winf.h | 13 +++++++++---- winsup/cygwin/local_includes/winsup.h | 4 ---- winsup/cygwin/spawn.cc | 18 ++++++++---------- winsup/cygwin/sysconf.cc | 2 +- 6 files changed, 38 insertions(+), 24 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 1d88105463..130d652aac 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -976,10 +976,22 @@ dll_crt0_1 (void *) { /* Create a copy of Cygwin's version of __argv so that, if the user makes a change to an element of argv[] it does not affect Cygwin's argv. - Changing the the contents of what argv[n] points to will still - affect Cygwin. This is similar (but not exactly like) Linux. */ + Changing the contents of what argv[n] points to will still affect + Cygwin. This is similar (but not exactly like) Linux. + + We used to allocate newargv on the stack, but all the rest of the + argument and environment handling does not depend on the stack, + as it does on Linux. In fact, everything is stored by the parent + in the cygheap, so the only reason this may fail is if we're out + of resources in a big way. If this malloc fails, we could either + fail the entire process execution, or we could proceed with the + original argv and potentially affect output of /proc/self/cmdline. + We opt for the latter here because it's the lesser evil. */ char **newargv = (char **) malloc ((__argc + 1) * sizeof (char *)); - memcpy (newargv, __argv, (__argc + 1) * sizeof (char *)); + if (newargv) + memcpy (newargv, __argv, (__argc + 1) * sizeof (char *)); + else + newargv = __argv; /* Handle any signals which may have arrived */ sig_dispatch_pending (false); _my_tls.call_signal_handler (); diff --git a/winsup/cygwin/kernel32.cc b/winsup/cygwin/kernel32.cc index 6248aefd51..36951f6a87 100644 --- a/winsup/cygwin/kernel32.cc +++ b/winsup/cygwin/kernel32.cc @@ -424,8 +424,11 @@ ucmd () linebuf cmd; path_conv real_path (__argv[0]); av newargv (__argc, __argv); - cmd.fromargv (newargv, real_path.get_win32 (), true); - RtlInitUnicodeString (&wcmd, cmd); + if (newargv.argc) + { + cmd.fromargv (newargv, real_path.get_win32 (), true); + RtlInitUnicodeString (&wcmd, cmd); + } } return &wcmd; } diff --git a/winsup/cygwin/local_includes/winf.h b/winsup/cygwin/local_includes/winf.h index 651f78ba28..b586934410 100644 --- a/winsup/cygwin/local_includes/winf.h +++ b/winsup/cygwin/local_includes/winf.h @@ -23,11 +23,16 @@ class av public: int argc; bool win16_exe; - av (): argv (NULL) {} - av (int ac_in, const char * const *av_in) : calloced (0), argc (ac_in), win16_exe (false) + av () : argv (NULL), argc (0) {} + av (int ac_in, const char * const *av_in) + : calloced (0), win16_exe (false) { - argv = (char **) cmalloc_abort (HEAP_1_ARGV, (argc + 5) * sizeof (char *)); - memcpy (argv, av_in, (argc + 1) * sizeof (char *)); + argv = (char **) cmalloc (HEAP_1_ARGV, (ac_in + 5) * sizeof (char *)); + if (argv) + { + argc = ac_in; + memcpy (argv, av_in, (argc + 1) * sizeof (char *)); + } } void *operator new (size_t, void *p) __attribute__ ((nothrow)) {return p;} ~av () diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index 57bd38c9ff..c9788de8f0 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -73,10 +73,6 @@ uint32_t cygwin_inet_addr (const char *cp); application provided path strings we handle. */ #define NT_MAX_PATH 32768 -/* CYG_ARG_MAX is the maximum total length of command line args. - The value 2097152 is the default ARG_MAX value in Linux. */ -#define CYG_ARG_MAX 2097152 - /* This definition allows to define wide char strings using macros as parameters. See the definition of __CONCAT in newlib's sys/cdefs.h and accompanying comment. */ diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index c4f1167284..dc1c4ac17c 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -351,9 +351,8 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, We need to quote any argument that has whitespace or embedded "'s. */ int ac; - size_t arg_len = 0; for (ac = 0; argv[ac]; ac++) - arg_len += strlen (argv[ac]) + 1; + ; int err; const char *ext; @@ -522,12 +521,6 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, __leave; } set (chtype, real_path.iscygexec ()); - if (iscygwin () && arg_len > (size_t) sysconf (_SC_ARG_MAX)) - { - set_errno (E2BIG); - res = -1; - __leave; - } __stdin = in__stdin; __stdout = in__stdout; record_children (); @@ -1130,11 +1123,16 @@ spawnvpe (int mode, const char *file, const char * const *argv, int av::setup (const char *prog_arg, path_conv& real_path, const char *ext, - int argc, const char *const *argv, bool p_type_exec) + int ac_in, const char *const *av_in, bool p_type_exec) { const char *p; bool exeext = ascii_strcasematch (ext, ".exe"); - new (this) av (argc, argv); + new (this) av (ac_in, av_in); + if (!argc) + { + set_errno (E2BIG); + return -1; + } if ((exeext && real_path.iscygexec ()) || ascii_strcasematch (ext, ".bat") || (!*ext && ((p = ext - 4) > real_path.get_win32 ()) && (ascii_strcasematch (p, ".bat") || ascii_strcasematch (p, ".cmd") diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc index 7cdfbdb9d4..6529731a51 100644 --- a/winsup/cygwin/sysconf.cc +++ b/winsup/cygwin/sysconf.cc @@ -485,7 +485,7 @@ static struct }; } sca[] = { - {cons, {c:CYG_ARG_MAX}}, /* 0, _SC_ARG_MAX */ + {cons, {c:-1L}}, /* 0, _SC_ARG_MAX */ {cons, {c:CHILD_MAX}}, /* 1, _SC_CHILD_MAX */ {cons, {c:CLOCKS_PER_SEC}}, /* 2, _SC_CLK_TCK */ {cons, {c:NGROUPS_MAX}}, /* 3, _SC_NGROUPS_MAX */ From 31eb43efa78f8bb67216eec1e7aa0be530360881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pekka=20Sepp=C3=A4nen?= Date: Mon, 28 Aug 2023 14:02:20 +0300 Subject: [PATCH 406/767] libc/stdlib/nano-mallocr.c, typo in variable name Nano malloc uses `size' in assertation whereas the correct variable would be `s'. Given this has existed ever since nano malloc support was added, based on the context ("returned payload area of desired size does not exceed the actual allocated chunk") I presume that indeed `s' (user input) and not `r->size' (computed) shall be used. --- newlib/libc/stdlib/nano-mallocr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/stdlib/nano-mallocr.c b/newlib/libc/stdlib/nano-mallocr.c index a2b50facc3..41e69abb0b 100644 --- a/newlib/libc/stdlib/nano-mallocr.c +++ b/newlib/libc/stdlib/nano-mallocr.c @@ -396,7 +396,7 @@ void * nano_malloc(RARG malloc_size_t s) *(long *)((char *)r + offset) = -offset; } - assert(align_ptr + size <= (char *)r + alloc_size); + assert(align_ptr + s <= (char *)r + alloc_size); return align_ptr; } #endif /* DEFINE_MALLOC */ From cc4ff714ff4b59d8ecac90ddc45196a0ea74e22b Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 1 Sep 2023 11:32:51 +0900 Subject: [PATCH 407/767] Cygwin: dsp: Fix a few trivial bugs. Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 4 ++-- winsup/cygwin/local_includes/fhandler.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 27f0a50ceb..8e51a51c59 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1060,7 +1060,7 @@ fhandler_dev_dsp::fixup_after_exec () int fhandler_dev_dsp::open (int flags, mode_t) { - int ret = 0, err = 0; + int ret = -1, err = 0; UINT num_in = 0, num_out = 0; set_flags ((flags & ~O_TEXT) | O_BINARY); // Work out initial sample format & frequency, /dev/dsp defaults @@ -1095,7 +1095,7 @@ fhandler_dev_dsp::open (int flags, mode_t) debug_printf ("ACCMODE=%y audio_in=%d audio_out=%d, err=%d, ret=%d", flags & O_ACCMODE, num_in, num_out, err, ret); - if (ret) + if (ret >= 0) being_closed = false; return ret; } diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 9af5f716cd..098b8dd19e 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2817,6 +2817,8 @@ class fhandler_dev_dsp: public fhandler_base void close_audio_in (); void close_audio_out (bool = false); + + public: bool use_archetype () const {return true;} fhandler_dev_dsp (void *) {} From d27e9fb29a92fc5984de51470d68d859783ab986 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 30 Aug 2023 11:32:02 +0200 Subject: [PATCH 408/767] Cygwin: sys/cpuset.h: add cpuset-specific external functions The latest incarnation of sys/cpuset.h broke building coreutils. The reason is the inclusion of stdlib.h and string.h and hence premature requests for datatypes not yet defined in the include chain. Avoid this by defining __cpuset_alloc and __cpuset_free as external functions, now defined in sched.cc. Linux is doing this too, just using different names for the functions. Redefine __cpuset_zero_s to use __builtin_memset only on compilers supporting it, otherwise using a simple loop. Drop the stdlib.h and string.h includes. Fixes: 3f2790e04439 ("Cygwin: Make gcc-specific code in compiler-agnostic") Reported-by: Denis Excoffier Signed-off-by: Corinna Vinschen --- winsup/cygwin/cygwin.din | 2 ++ winsup/cygwin/include/sys/cpuset.h | 25 +++++++++++-------------- winsup/cygwin/sched.cc | 12 ++++++++++++ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index ee646fddc8..3afadb7f3a 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -49,6 +49,8 @@ __b64_ntop NOSIGFE __b64_pton NOSIGFE __bsd_qsort_r NOSIGFE __chk_fail SIGFE +__cpuset_alloc SIGFE +__cpuset_free SIGFE __cxa_atexit = cygwin__cxa_atexit SIGFE __cxa_finalize SIGFE __dn_comp SIGFE diff --git a/winsup/cygwin/include/sys/cpuset.h b/winsup/cygwin/include/sys/cpuset.h index 95c777cfbc..2ab2b95f0d 100644 --- a/winsup/cygwin/include/sys/cpuset.h +++ b/winsup/cygwin/include/sys/cpuset.h @@ -9,8 +9,7 @@ details. */ #ifndef _SYS_CPUSET_H_ #define _SYS_CPUSET_H_ -#include -#include +#include #ifdef __cplusplus extern "C" { @@ -42,25 +41,23 @@ __cpuset_alloc_size (int num) } #define CPU_ALLOC(num) __cpuset_alloc (num) -static __inline cpu_set_t * -__cpuset_alloc (int num) -{ - return (cpu_set_t *) malloc (CPU_ALLOC_SIZE(num)); -} +extern cpu_set_t * __cpuset_alloc (int); #define CPU_FREE(set) __cpuset_free (set) -static __inline void -__cpuset_free (cpu_set_t *set) -{ - free (set); -} +void __cpuset_free (cpu_set_t *); /* These _S macros operate on dynamically-sized cpu sets of size 'siz' bytes */ #define CPU_ZERO_S(siz, set) __cpuset_zero_s (siz, set) -static __inline void +static __inline __cpuset_zero_s (size_t siz, cpu_set_t *set) { - (void) memset (set, 0, siz); +#if __GNUC_PREREQ (2, 91) + __builtin_memset (set, 0, siz); +#else + siz /= sizeof (__cpu_mask); + while (siz > 0) + set->_bits[--siz] = 0; +#endif } #define CPU_SET_S(cpu, siz, set) __cpuset_set_s (cpu, siz, set) diff --git a/winsup/cygwin/sched.cc b/winsup/cygwin/sched.cc index d7bad85276..845fcef570 100644 --- a/winsup/cygwin/sched.cc +++ b/winsup/cygwin/sched.cc @@ -684,4 +684,16 @@ sched_setaffinity (pid_t pid, size_t sizeof_set, const cpu_set_t *set) return 0; } +cpu_set_t * +__cpuset_alloc (int num) +{ + return (cpu_set_t *) malloc (CPU_ALLOC_SIZE(num)); +} + +void +__cpuset_free (cpu_set_t *set) +{ + free (set); +} + } /* extern C */ From ac4699fdf34f59a727621c9ac321eb1ec60b8d0c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 30 Aug 2023 21:11:42 +0200 Subject: [PATCH 409/767] Cygwin: sys/cpuset.h: use internal base types Use __size_t and __pid_t instead of size_t and pid_t to avoid further dependencies to external headers. Reported-by: Brian Inglis Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/sys/cpuset.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/winsup/cygwin/include/sys/cpuset.h b/winsup/cygwin/include/sys/cpuset.h index 2ab2b95f0d..a5a8fa81ef 100644 --- a/winsup/cygwin/include/sys/cpuset.h +++ b/winsup/cygwin/include/sys/cpuset.h @@ -29,15 +29,15 @@ typedef struct } cpu_set_t; #if __GNU_VISIBLE -int __sched_getaffinity_sys (pid_t, size_t, cpu_set_t *); +int __sched_getaffinity_sys (__pid_t, __size_t, cpu_set_t *); /* These macros alloc or free dynamically-sized cpu sets of size 'num' cpus. Allocations are padded such that full-word operations can be done easily. */ #define CPU_ALLOC_SIZE(num) __cpuset_alloc_size (num) -static __inline size_t +static __inline __size_t __cpuset_alloc_size (int num) { - return (size_t) (((num + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)); + return (__size_t) (((num + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask)); } #define CPU_ALLOC(num) __cpuset_alloc (num) @@ -49,7 +49,7 @@ void __cpuset_free (cpu_set_t *); /* These _S macros operate on dynamically-sized cpu sets of size 'siz' bytes */ #define CPU_ZERO_S(siz, set) __cpuset_zero_s (siz, set) static __inline -__cpuset_zero_s (size_t siz, cpu_set_t *set) +__cpuset_zero_s (__size_t siz, cpu_set_t *set) { #if __GNUC_PREREQ (2, 91) __builtin_memset (set, 0, siz); @@ -62,7 +62,7 @@ __cpuset_zero_s (size_t siz, cpu_set_t *set) #define CPU_SET_S(cpu, siz, set) __cpuset_set_s (cpu, siz, set) static __inline void -__cpuset_set_s (int cpu, size_t siz, cpu_set_t *set) +__cpuset_set_s (int cpu, __size_t siz, cpu_set_t *set) { if (cpu >= 0 && cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] |= __CPUMASK(cpu); @@ -70,7 +70,7 @@ __cpuset_set_s (int cpu, size_t siz, cpu_set_t *set) #define CPU_CLR_S(cpu, siz, set) __cpuset_clr_s (cpu, siz, set) static __inline void -__cpuset_clr_s (int cpu, size_t siz, cpu_set_t *set) +__cpuset_clr_s (int cpu, __size_t siz, cpu_set_t *set) { if (cpu >= 0 && cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] &= ~(__CPUMASK(cpu)); @@ -78,7 +78,7 @@ __cpuset_clr_s (int cpu, size_t siz, cpu_set_t *set) #define CPU_ISSET_S(cpu, siz, set) __cpuset_isset_s (cpu, siz, set) static __inline int -__cpuset_isset_s (int cpu, size_t siz, cpu_set_t *set) +__cpuset_isset_s (int cpu, __size_t siz, cpu_set_t *set) { int res = 0; if (cpu >= 0 && cpu < 8 * siz) @@ -88,7 +88,7 @@ __cpuset_isset_s (int cpu, size_t siz, cpu_set_t *set) #define CPU_COUNT_S(siz, set) __cpuset_count_s (siz, set) static __inline int -__cpuset_count_s (size_t siz, cpu_set_t *set) +__cpuset_count_s (__size_t siz, cpu_set_t *set) { int i, res = 0; for (i = 0; i < siz / sizeof (__cpu_mask); i++) @@ -98,7 +98,7 @@ __cpuset_count_s (size_t siz, cpu_set_t *set) #define CPU_AND_S(siz, dst, src1, src2) __cpuset_and_s (siz, dst, src1, src2) static __inline void -__cpuset_and_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) +__cpuset_and_s (__size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) { int i; for (i = 0; i < siz / sizeof (__cpu_mask); i++) @@ -107,7 +107,7 @@ __cpuset_and_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) #define CPU_OR_S(siz, dst, src1, src2) __cpuset_or_s (siz, dst, src1, src2) static __inline void -__cpuset_or_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) +__cpuset_or_s (__size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) { int i; for (i = 0; i < siz / sizeof (__cpu_mask); i++) @@ -116,7 +116,7 @@ __cpuset_or_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) #define CPU_XOR_S(siz, dst, src1, src2) __cpuset_xor_s (siz, dst, src1, src2) static __inline void -__cpuset_xor_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) +__cpuset_xor_s (__size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) { int i; for (i = 0; i < siz / sizeof (__cpu_mask); i++) @@ -125,7 +125,7 @@ __cpuset_xor_s (size_t siz, cpu_set_t *dst, cpu_set_t *src1, cpu_set_t *src2) #define CPU_EQUAL_S(siz, src1, src2) __cpuset_equal_s (siz, src1, src2) static __inline int -__cpuset_equal_s (size_t siz, cpu_set_t *src1, cpu_set_t *src2) +__cpuset_equal_s (__size_t siz, cpu_set_t *src1, cpu_set_t *src2) { int i, res = 1; for (i = 0; res && i < siz / sizeof (__cpu_mask); i++) From 3daedf267d5b4940355fd370538d3036016efeda Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 1 Sep 2023 12:41:43 +0200 Subject: [PATCH 410/767] Cygwin: document latest sys/cpuset.h fix Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.9 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.4.9 b/winsup/cygwin/release/3.4.9 index 53c4e5fc84..e2b0647464 100644 --- a/winsup/cygwin/release/3.4.9 +++ b/winsup/cygwin/release/3.4.9 @@ -11,3 +11,6 @@ Bug Fixes - Fix segfault when too many command line args are specified. Addresses: https://cygwin.com/pipermail/cygwin/2023-August/254333.html + +- Fix build problems in terms of sys/cpuset.h. + Addresses: https://cygwin.com/pipermail/cygwin/2023-August/254283.html From 2a4af36614705e5499683aa2f63dfe499edce6b7 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 1 Sep 2023 17:41:10 +0900 Subject: [PATCH 411/767] Cygwin: Implement sound mixer device. This patch adds implementation of OSS-based sound mixer device. This allows applications to change the sound playing volume. NOTE: Currently, the recording volume cannot be changed. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/Makefile.am | 1 + winsup/cygwin/devices.cc | 1390 ++++++++++++----------- winsup/cygwin/devices.in | 1 + winsup/cygwin/dtable.cc | 3 + winsup/cygwin/fhandler/mixer.cc | 152 +++ winsup/cygwin/local_includes/devices.h | 1 + winsup/cygwin/local_includes/fhandler.h | 29 + winsup/cygwin/release/3.5.0 | 2 + 8 files changed, 892 insertions(+), 687 deletions(-) create mode 100644 winsup/cygwin/fhandler/mixer.cc diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index bfb5ead103..9912b53996 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -89,6 +89,7 @@ FHANDLER_FILES= \ fhandler/dsp.cc \ fhandler/fifo.cc \ fhandler/floppy.cc \ + fhandler/mixer.cc \ fhandler/mqueue.cc \ fhandler/netdrive.cc \ fhandler/nodevice.cc \ diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 72c83d6e62..acdc544124 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -341,6 +341,7 @@ const _RDATA _device dev_storage[] = {"/dev/fd14", BRACK(FHDEV(DEV_FLOPPY_MAJOR, 14)), "\\Device\\Floppy14", exists_ntdev, S_IFBLK, true}, {"/dev/fd15", BRACK(FHDEV(DEV_FLOPPY_MAJOR, 15)), "\\Device\\Floppy15", exists_ntdev, S_IFBLK, true}, {"/dev/full", BRACK(FH_FULL), "\\Device\\Null", exists_ntdev, S_IFCHR, true}, + {"/dev/mixer", BRACK(FH_OSS_MIXER), "\\Device\\Null", exists_ntdev, S_IFCHR, true}, {"/dev/nst0", BRACK(FHDEV(DEV_TAPE_MAJOR, 128)), "\\Device\\Tape0", exists_ntdev, S_IFCHR, true}, {"/dev/nst1", BRACK(FHDEV(DEV_TAPE_MAJOR, 129)), "\\Device\\Tape1", exists_ntdev, S_IFCHR, true}, {"/dev/nst2", BRACK(FHDEV(DEV_TAPE_MAJOR, 130)), "\\Device\\Tape2", exists_ntdev, S_IFCHR, true}, @@ -1029,9 +1030,9 @@ const _RDATA _device dev_storage[] = const _device *cons_dev = dev_storage + 20; const _device *console_dev = dev_storage + 148; -const _device *ptym_dev = dev_storage + 724; -const _device *ptys_dev = dev_storage + 298; -const _device *urandom_dev = dev_storage + 719; +const _device *ptym_dev = dev_storage + 725; +const _device *ptys_dev = dev_storage + 299; +const _device *urandom_dev = dev_storage + 720; static KR_device_t KR_find_keyword (const char *KR_keyword, int KR_length) @@ -1061,7 +1062,7 @@ return NULL; if (strncmp (KR_keyword, ":pipe", 5) == 0) { { -return dev_storage + 723; +return dev_storage + 724; } } @@ -1076,7 +1077,7 @@ return NULL; if (strncmp (KR_keyword, ":fifo", 5) == 0) { { -return dev_storage + 722; +return dev_storage + 723; } } @@ -1100,7 +1101,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym9", 6) == 0) { { -return dev_storage + 733; +return dev_storage + 734; } } @@ -1115,7 +1116,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym8", 6) == 0) { { -return dev_storage + 732; +return dev_storage + 733; } } @@ -1130,7 +1131,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym7", 6) == 0) { { -return dev_storage + 731; +return dev_storage + 732; } } @@ -1145,7 +1146,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym6", 6) == 0) { { -return dev_storage + 730; +return dev_storage + 731; } } @@ -1160,7 +1161,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym5", 6) == 0) { { -return dev_storage + 729; +return dev_storage + 730; } } @@ -1175,7 +1176,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym4", 6) == 0) { { -return dev_storage + 728; +return dev_storage + 729; } } @@ -1190,7 +1191,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym3", 6) == 0) { { -return dev_storage + 727; +return dev_storage + 728; } } @@ -1205,7 +1206,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym2", 6) == 0) { { -return dev_storage + 726; +return dev_storage + 727; } } @@ -1220,7 +1221,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym1", 6) == 0) { { -return dev_storage + 725; +return dev_storage + 726; } } @@ -1235,7 +1236,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym0", 6) == 0) { { -return dev_storage + 724; +return dev_storage + 725; } } @@ -1277,7 +1278,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym99", 7) == 0) { { -return dev_storage + 823; +return dev_storage + 824; } } @@ -1292,7 +1293,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym98", 7) == 0) { { -return dev_storage + 822; +return dev_storage + 823; } } @@ -1307,7 +1308,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym97", 7) == 0) { { -return dev_storage + 821; +return dev_storage + 822; } } @@ -1322,7 +1323,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym96", 7) == 0) { { -return dev_storage + 820; +return dev_storage + 821; } } @@ -1337,7 +1338,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym95", 7) == 0) { { -return dev_storage + 819; +return dev_storage + 820; } } @@ -1352,7 +1353,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym94", 7) == 0) { { -return dev_storage + 818; +return dev_storage + 819; } } @@ -1367,7 +1368,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym93", 7) == 0) { { -return dev_storage + 817; +return dev_storage + 818; } } @@ -1382,7 +1383,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym92", 7) == 0) { { -return dev_storage + 816; +return dev_storage + 817; } } @@ -1397,7 +1398,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym91", 7) == 0) { { -return dev_storage + 815; +return dev_storage + 816; } } @@ -1412,7 +1413,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym90", 7) == 0) { { -return dev_storage + 814; +return dev_storage + 815; } } @@ -1436,7 +1437,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym89", 7) == 0) { { -return dev_storage + 813; +return dev_storage + 814; } } @@ -1451,7 +1452,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym88", 7) == 0) { { -return dev_storage + 812; +return dev_storage + 813; } } @@ -1466,7 +1467,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym87", 7) == 0) { { -return dev_storage + 811; +return dev_storage + 812; } } @@ -1481,7 +1482,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym86", 7) == 0) { { -return dev_storage + 810; +return dev_storage + 811; } } @@ -1496,7 +1497,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym85", 7) == 0) { { -return dev_storage + 809; +return dev_storage + 810; } } @@ -1511,7 +1512,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym84", 7) == 0) { { -return dev_storage + 808; +return dev_storage + 809; } } @@ -1526,7 +1527,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym83", 7) == 0) { { -return dev_storage + 807; +return dev_storage + 808; } } @@ -1541,7 +1542,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym82", 7) == 0) { { -return dev_storage + 806; +return dev_storage + 807; } } @@ -1556,7 +1557,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym81", 7) == 0) { { -return dev_storage + 805; +return dev_storage + 806; } } @@ -1571,7 +1572,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym80", 7) == 0) { { -return dev_storage + 804; +return dev_storage + 805; } } @@ -1595,7 +1596,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym79", 7) == 0) { { -return dev_storage + 803; +return dev_storage + 804; } } @@ -1610,7 +1611,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym78", 7) == 0) { { -return dev_storage + 802; +return dev_storage + 803; } } @@ -1625,7 +1626,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym77", 7) == 0) { { -return dev_storage + 801; +return dev_storage + 802; } } @@ -1640,7 +1641,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym76", 7) == 0) { { -return dev_storage + 800; +return dev_storage + 801; } } @@ -1655,7 +1656,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym75", 7) == 0) { { -return dev_storage + 799; +return dev_storage + 800; } } @@ -1670,7 +1671,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym74", 7) == 0) { { -return dev_storage + 798; +return dev_storage + 799; } } @@ -1685,7 +1686,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym73", 7) == 0) { { -return dev_storage + 797; +return dev_storage + 798; } } @@ -1700,7 +1701,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym72", 7) == 0) { { -return dev_storage + 796; +return dev_storage + 797; } } @@ -1715,7 +1716,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym71", 7) == 0) { { -return dev_storage + 795; +return dev_storage + 796; } } @@ -1730,7 +1731,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym70", 7) == 0) { { -return dev_storage + 794; +return dev_storage + 795; } } @@ -1754,7 +1755,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym69", 7) == 0) { { -return dev_storage + 793; +return dev_storage + 794; } } @@ -1769,7 +1770,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym68", 7) == 0) { { -return dev_storage + 792; +return dev_storage + 793; } } @@ -1784,7 +1785,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym67", 7) == 0) { { -return dev_storage + 791; +return dev_storage + 792; } } @@ -1799,7 +1800,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym66", 7) == 0) { { -return dev_storage + 790; +return dev_storage + 791; } } @@ -1814,7 +1815,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym65", 7) == 0) { { -return dev_storage + 789; +return dev_storage + 790; } } @@ -1829,7 +1830,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym64", 7) == 0) { { -return dev_storage + 788; +return dev_storage + 789; } } @@ -1844,7 +1845,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym63", 7) == 0) { { -return dev_storage + 787; +return dev_storage + 788; } } @@ -1859,7 +1860,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym62", 7) == 0) { { -return dev_storage + 786; +return dev_storage + 787; } } @@ -1874,7 +1875,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym61", 7) == 0) { { -return dev_storage + 785; +return dev_storage + 786; } } @@ -1889,7 +1890,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym60", 7) == 0) { { -return dev_storage + 784; +return dev_storage + 785; } } @@ -1913,7 +1914,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym59", 7) == 0) { { -return dev_storage + 783; +return dev_storage + 784; } } @@ -1928,7 +1929,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym58", 7) == 0) { { -return dev_storage + 782; +return dev_storage + 783; } } @@ -1943,7 +1944,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym57", 7) == 0) { { -return dev_storage + 781; +return dev_storage + 782; } } @@ -1958,7 +1959,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym56", 7) == 0) { { -return dev_storage + 780; +return dev_storage + 781; } } @@ -1973,7 +1974,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym55", 7) == 0) { { -return dev_storage + 779; +return dev_storage + 780; } } @@ -1988,7 +1989,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym54", 7) == 0) { { -return dev_storage + 778; +return dev_storage + 779; } } @@ -2003,7 +2004,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym53", 7) == 0) { { -return dev_storage + 777; +return dev_storage + 778; } } @@ -2018,7 +2019,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym52", 7) == 0) { { -return dev_storage + 776; +return dev_storage + 777; } } @@ -2033,7 +2034,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym51", 7) == 0) { { -return dev_storage + 775; +return dev_storage + 776; } } @@ -2048,7 +2049,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym50", 7) == 0) { { -return dev_storage + 774; +return dev_storage + 775; } } @@ -2072,7 +2073,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym49", 7) == 0) { { -return dev_storage + 773; +return dev_storage + 774; } } @@ -2087,7 +2088,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym48", 7) == 0) { { -return dev_storage + 772; +return dev_storage + 773; } } @@ -2102,7 +2103,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym47", 7) == 0) { { -return dev_storage + 771; +return dev_storage + 772; } } @@ -2117,7 +2118,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym46", 7) == 0) { { -return dev_storage + 770; +return dev_storage + 771; } } @@ -2132,7 +2133,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym45", 7) == 0) { { -return dev_storage + 769; +return dev_storage + 770; } } @@ -2147,7 +2148,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym44", 7) == 0) { { -return dev_storage + 768; +return dev_storage + 769; } } @@ -2162,7 +2163,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym43", 7) == 0) { { -return dev_storage + 767; +return dev_storage + 768; } } @@ -2177,7 +2178,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym42", 7) == 0) { { -return dev_storage + 766; +return dev_storage + 767; } } @@ -2192,7 +2193,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym41", 7) == 0) { { -return dev_storage + 765; +return dev_storage + 766; } } @@ -2207,7 +2208,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym40", 7) == 0) { { -return dev_storage + 764; +return dev_storage + 765; } } @@ -2231,7 +2232,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym39", 7) == 0) { { -return dev_storage + 763; +return dev_storage + 764; } } @@ -2246,7 +2247,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym38", 7) == 0) { { -return dev_storage + 762; +return dev_storage + 763; } } @@ -2261,7 +2262,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym37", 7) == 0) { { -return dev_storage + 761; +return dev_storage + 762; } } @@ -2276,7 +2277,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym36", 7) == 0) { { -return dev_storage + 760; +return dev_storage + 761; } } @@ -2291,7 +2292,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym35", 7) == 0) { { -return dev_storage + 759; +return dev_storage + 760; } } @@ -2306,7 +2307,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym34", 7) == 0) { { -return dev_storage + 758; +return dev_storage + 759; } } @@ -2321,7 +2322,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym33", 7) == 0) { { -return dev_storage + 757; +return dev_storage + 758; } } @@ -2336,7 +2337,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym32", 7) == 0) { { -return dev_storage + 756; +return dev_storage + 757; } } @@ -2351,7 +2352,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym31", 7) == 0) { { -return dev_storage + 755; +return dev_storage + 756; } } @@ -2366,7 +2367,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym30", 7) == 0) { { -return dev_storage + 754; +return dev_storage + 755; } } @@ -2390,7 +2391,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym29", 7) == 0) { { -return dev_storage + 753; +return dev_storage + 754; } } @@ -2405,7 +2406,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym28", 7) == 0) { { -return dev_storage + 752; +return dev_storage + 753; } } @@ -2420,7 +2421,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym27", 7) == 0) { { -return dev_storage + 751; +return dev_storage + 752; } } @@ -2435,7 +2436,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym26", 7) == 0) { { -return dev_storage + 750; +return dev_storage + 751; } } @@ -2450,7 +2451,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym25", 7) == 0) { { -return dev_storage + 749; +return dev_storage + 750; } } @@ -2465,7 +2466,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym24", 7) == 0) { { -return dev_storage + 748; +return dev_storage + 749; } } @@ -2480,7 +2481,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym23", 7) == 0) { { -return dev_storage + 747; +return dev_storage + 748; } } @@ -2495,7 +2496,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym22", 7) == 0) { { -return dev_storage + 746; +return dev_storage + 747; } } @@ -2510,7 +2511,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym21", 7) == 0) { { -return dev_storage + 745; +return dev_storage + 746; } } @@ -2525,7 +2526,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym20", 7) == 0) { { -return dev_storage + 744; +return dev_storage + 745; } } @@ -2549,7 +2550,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym19", 7) == 0) { { -return dev_storage + 743; +return dev_storage + 744; } } @@ -2564,7 +2565,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym18", 7) == 0) { { -return dev_storage + 742; +return dev_storage + 743; } } @@ -2579,7 +2580,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym17", 7) == 0) { { -return dev_storage + 741; +return dev_storage + 742; } } @@ -2594,7 +2595,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym16", 7) == 0) { { -return dev_storage + 740; +return dev_storage + 741; } } @@ -2609,7 +2610,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym15", 7) == 0) { { -return dev_storage + 739; +return dev_storage + 740; } } @@ -2624,7 +2625,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym14", 7) == 0) { { -return dev_storage + 738; +return dev_storage + 739; } } @@ -2639,7 +2640,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym13", 7) == 0) { { -return dev_storage + 737; +return dev_storage + 738; } } @@ -2654,7 +2655,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym12", 7) == 0) { { -return dev_storage + 736; +return dev_storage + 737; } } @@ -2669,7 +2670,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym11", 7) == 0) { { -return dev_storage + 735; +return dev_storage + 736; } } @@ -2684,7 +2685,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym10", 7) == 0) { { -return dev_storage + 734; +return dev_storage + 735; } } @@ -2714,7 +2715,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty", 8) == 0) { { -return dev_storage + 590; +return dev_storage + 591; } } @@ -2747,7 +2748,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st9", 8) == 0) { { -return dev_storage + 468; +return dev_storage + 469; } } @@ -2762,7 +2763,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr9", 8) == 0) { { -return dev_storage + 452; +return dev_storage + 453; } } @@ -2792,7 +2793,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym119", 8) == 0) { { -return dev_storage + 843; +return dev_storage + 844; } } @@ -2807,7 +2808,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym109", 8) == 0) { { -return dev_storage + 833; +return dev_storage + 834; } } @@ -2831,7 +2832,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st8", 8) == 0) { { -return dev_storage + 467; +return dev_storage + 468; } } @@ -2846,7 +2847,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr8", 8) == 0) { { -return dev_storage + 451; +return dev_storage + 452; } } @@ -2876,7 +2877,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym118", 8) == 0) { { -return dev_storage + 842; +return dev_storage + 843; } } @@ -2891,7 +2892,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym108", 8) == 0) { { -return dev_storage + 832; +return dev_storage + 833; } } @@ -2915,7 +2916,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st7", 8) == 0) { { -return dev_storage + 466; +return dev_storage + 467; } } @@ -2930,7 +2931,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr7", 8) == 0) { { -return dev_storage + 450; +return dev_storage + 451; } } @@ -2960,7 +2961,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym127", 8) == 0) { { -return dev_storage + 851; +return dev_storage + 852; } } @@ -2975,7 +2976,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym117", 8) == 0) { { -return dev_storage + 841; +return dev_storage + 842; } } @@ -2990,7 +2991,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym107", 8) == 0) { { -return dev_storage + 831; +return dev_storage + 832; } } @@ -3014,7 +3015,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st6", 8) == 0) { { -return dev_storage + 465; +return dev_storage + 466; } } @@ -3029,7 +3030,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr6", 8) == 0) { { -return dev_storage + 449; +return dev_storage + 450; } } @@ -3059,7 +3060,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym126", 8) == 0) { { -return dev_storage + 850; +return dev_storage + 851; } } @@ -3074,7 +3075,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym116", 8) == 0) { { -return dev_storage + 840; +return dev_storage + 841; } } @@ -3089,7 +3090,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym106", 8) == 0) { { -return dev_storage + 830; +return dev_storage + 831; } } @@ -3113,7 +3114,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st5", 8) == 0) { { -return dev_storage + 464; +return dev_storage + 465; } } @@ -3128,7 +3129,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr5", 8) == 0) { { -return dev_storage + 448; +return dev_storage + 449; } } @@ -3158,7 +3159,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym125", 8) == 0) { { -return dev_storage + 849; +return dev_storage + 850; } } @@ -3173,7 +3174,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym115", 8) == 0) { { -return dev_storage + 839; +return dev_storage + 840; } } @@ -3188,7 +3189,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym105", 8) == 0) { { -return dev_storage + 829; +return dev_storage + 830; } } @@ -3212,7 +3213,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st4", 8) == 0) { { -return dev_storage + 463; +return dev_storage + 464; } } @@ -3227,7 +3228,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr4", 8) == 0) { { -return dev_storage + 447; +return dev_storage + 448; } } @@ -3257,7 +3258,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym124", 8) == 0) { { -return dev_storage + 848; +return dev_storage + 849; } } @@ -3272,7 +3273,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym114", 8) == 0) { { -return dev_storage + 838; +return dev_storage + 839; } } @@ -3287,7 +3288,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym104", 8) == 0) { { -return dev_storage + 828; +return dev_storage + 829; } } @@ -3311,7 +3312,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st3", 8) == 0) { { -return dev_storage + 462; +return dev_storage + 463; } } @@ -3326,7 +3327,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr3", 8) == 0) { { -return dev_storage + 446; +return dev_storage + 447; } } @@ -3356,7 +3357,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym123", 8) == 0) { { -return dev_storage + 847; +return dev_storage + 848; } } @@ -3371,7 +3372,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym113", 8) == 0) { { -return dev_storage + 837; +return dev_storage + 838; } } @@ -3386,7 +3387,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym103", 8) == 0) { { -return dev_storage + 827; +return dev_storage + 828; } } @@ -3410,7 +3411,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st2", 8) == 0) { { -return dev_storage + 461; +return dev_storage + 462; } } @@ -3425,7 +3426,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr2", 8) == 0) { { -return dev_storage + 445; +return dev_storage + 446; } } @@ -3455,7 +3456,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym122", 8) == 0) { { -return dev_storage + 846; +return dev_storage + 847; } } @@ -3470,7 +3471,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym112", 8) == 0) { { -return dev_storage + 836; +return dev_storage + 837; } } @@ -3485,7 +3486,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym102", 8) == 0) { { -return dev_storage + 826; +return dev_storage + 827; } } @@ -3509,7 +3510,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st1", 8) == 0) { { -return dev_storage + 460; +return dev_storage + 461; } } @@ -3524,7 +3525,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr1", 8) == 0) { { -return dev_storage + 444; +return dev_storage + 445; } } @@ -3554,7 +3555,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym121", 8) == 0) { { -return dev_storage + 845; +return dev_storage + 846; } } @@ -3569,7 +3570,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym111", 8) == 0) { { -return dev_storage + 835; +return dev_storage + 836; } } @@ -3584,7 +3585,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym101", 8) == 0) { { -return dev_storage + 825; +return dev_storage + 826; } } @@ -3608,7 +3609,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st0", 8) == 0) { { -return dev_storage + 459; +return dev_storage + 460; } } @@ -3623,7 +3624,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr0", 8) == 0) { { -return dev_storage + 443; +return dev_storage + 444; } } @@ -3653,7 +3654,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym120", 8) == 0) { { -return dev_storage + 844; +return dev_storage + 845; } } @@ -3668,7 +3669,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym110", 8) == 0) { { -return dev_storage + 834; +return dev_storage + 835; } } @@ -3683,7 +3684,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym100", 8) == 0) { { -return dev_storage + 824; +return dev_storage + 825; } } @@ -3713,7 +3714,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ptmx", 9) == 0) { { -return dev_storage + 297; +return dev_storage + 298; } } @@ -3728,7 +3729,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/zero", 9) == 0) { { -return dev_storage + 721; +return dev_storage + 722; } } @@ -3746,7 +3747,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/null", 9) == 0) { { -return dev_storage + 296; +return dev_storage + 297; } } @@ -3785,7 +3786,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty9", 9) == 0) { { -return dev_storage + 307; +return dev_storage + 308; } } @@ -3800,7 +3801,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst9", 9) == 0) { { -return dev_storage + 177; +return dev_storage + 178; } } @@ -3830,7 +3831,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd9", 9) == 0) { { -return dev_storage + 436; +return dev_storage + 437; } } @@ -3845,7 +3846,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st99", 9) == 0) { { -return dev_storage + 558; +return dev_storage + 559; } } @@ -3860,7 +3861,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st89", 9) == 0) { { -return dev_storage + 548; +return dev_storage + 549; } } @@ -3875,7 +3876,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st79", 9) == 0) { { -return dev_storage + 538; +return dev_storage + 539; } } @@ -3890,7 +3891,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st69", 9) == 0) { { -return dev_storage + 528; +return dev_storage + 529; } } @@ -3905,7 +3906,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st59", 9) == 0) { { -return dev_storage + 518; +return dev_storage + 519; } } @@ -3920,7 +3921,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st49", 9) == 0) { { -return dev_storage + 508; +return dev_storage + 509; } } @@ -3935,7 +3936,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st39", 9) == 0) { { -return dev_storage + 498; +return dev_storage + 499; } } @@ -3950,7 +3951,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st29", 9) == 0) { { -return dev_storage + 488; +return dev_storage + 489; } } @@ -3965,7 +3966,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st19", 9) == 0) { { -return dev_storage + 478; +return dev_storage + 479; } } @@ -3989,7 +3990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty8", 9) == 0) { { -return dev_storage + 306; +return dev_storage + 307; } } @@ -4004,7 +4005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst8", 9) == 0) { { -return dev_storage + 176; +return dev_storage + 177; } } @@ -4034,7 +4035,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd8", 9) == 0) { { -return dev_storage + 435; +return dev_storage + 436; } } @@ -4049,7 +4050,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st98", 9) == 0) { { -return dev_storage + 557; +return dev_storage + 558; } } @@ -4064,7 +4065,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st88", 9) == 0) { { -return dev_storage + 547; +return dev_storage + 548; } } @@ -4079,7 +4080,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st78", 9) == 0) { { -return dev_storage + 537; +return dev_storage + 538; } } @@ -4094,7 +4095,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st68", 9) == 0) { { -return dev_storage + 527; +return dev_storage + 528; } } @@ -4109,7 +4110,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st58", 9) == 0) { { -return dev_storage + 517; +return dev_storage + 518; } } @@ -4124,7 +4125,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st48", 9) == 0) { { -return dev_storage + 507; +return dev_storage + 508; } } @@ -4139,7 +4140,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st38", 9) == 0) { { -return dev_storage + 497; +return dev_storage + 498; } } @@ -4154,7 +4155,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st28", 9) == 0) { { -return dev_storage + 487; +return dev_storage + 488; } } @@ -4169,7 +4170,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st18", 9) == 0) { { -return dev_storage + 477; +return dev_storage + 478; } } @@ -4193,7 +4194,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty7", 9) == 0) { { -return dev_storage + 305; +return dev_storage + 306; } } @@ -4208,7 +4209,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst7", 9) == 0) { { -return dev_storage + 175; +return dev_storage + 176; } } @@ -4238,7 +4239,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd7", 9) == 0) { { -return dev_storage + 434; +return dev_storage + 435; } } @@ -4253,7 +4254,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st97", 9) == 0) { { -return dev_storage + 556; +return dev_storage + 557; } } @@ -4268,7 +4269,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st87", 9) == 0) { { -return dev_storage + 546; +return dev_storage + 547; } } @@ -4283,7 +4284,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st77", 9) == 0) { { -return dev_storage + 536; +return dev_storage + 537; } } @@ -4298,7 +4299,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st67", 9) == 0) { { -return dev_storage + 526; +return dev_storage + 527; } } @@ -4313,7 +4314,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st57", 9) == 0) { { -return dev_storage + 516; +return dev_storage + 517; } } @@ -4328,7 +4329,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st47", 9) == 0) { { -return dev_storage + 506; +return dev_storage + 507; } } @@ -4343,7 +4344,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st37", 9) == 0) { { -return dev_storage + 496; +return dev_storage + 497; } } @@ -4358,7 +4359,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st27", 9) == 0) { { -return dev_storage + 486; +return dev_storage + 487; } } @@ -4373,7 +4374,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st17", 9) == 0) { { -return dev_storage + 476; +return dev_storage + 477; } } @@ -4397,7 +4398,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty6", 9) == 0) { { -return dev_storage + 304; +return dev_storage + 305; } } @@ -4412,7 +4413,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst6", 9) == 0) { { -return dev_storage + 174; +return dev_storage + 175; } } @@ -4442,7 +4443,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd6", 9) == 0) { { -return dev_storage + 433; +return dev_storage + 434; } } @@ -4457,7 +4458,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st96", 9) == 0) { { -return dev_storage + 555; +return dev_storage + 556; } } @@ -4472,7 +4473,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st86", 9) == 0) { { -return dev_storage + 545; +return dev_storage + 546; } } @@ -4487,7 +4488,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st76", 9) == 0) { { -return dev_storage + 535; +return dev_storage + 536; } } @@ -4502,7 +4503,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st66", 9) == 0) { { -return dev_storage + 525; +return dev_storage + 526; } } @@ -4517,7 +4518,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st56", 9) == 0) { { -return dev_storage + 515; +return dev_storage + 516; } } @@ -4532,7 +4533,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st46", 9) == 0) { { -return dev_storage + 505; +return dev_storage + 506; } } @@ -4547,7 +4548,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st36", 9) == 0) { { -return dev_storage + 495; +return dev_storage + 496; } } @@ -4562,7 +4563,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st26", 9) == 0) { { -return dev_storage + 485; +return dev_storage + 486; } } @@ -4577,7 +4578,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st16", 9) == 0) { { -return dev_storage + 475; +return dev_storage + 476; } } @@ -4601,7 +4602,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty5", 9) == 0) { { -return dev_storage + 303; +return dev_storage + 304; } } @@ -4616,7 +4617,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst5", 9) == 0) { { -return dev_storage + 173; +return dev_storage + 174; } } @@ -4646,7 +4647,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd5", 9) == 0) { { -return dev_storage + 432; +return dev_storage + 433; } } @@ -4661,7 +4662,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st95", 9) == 0) { { -return dev_storage + 554; +return dev_storage + 555; } } @@ -4676,7 +4677,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st85", 9) == 0) { { -return dev_storage + 544; +return dev_storage + 545; } } @@ -4691,7 +4692,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st75", 9) == 0) { { -return dev_storage + 534; +return dev_storage + 535; } } @@ -4706,7 +4707,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st65", 9) == 0) { { -return dev_storage + 524; +return dev_storage + 525; } } @@ -4721,7 +4722,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st55", 9) == 0) { { -return dev_storage + 514; +return dev_storage + 515; } } @@ -4736,7 +4737,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st45", 9) == 0) { { -return dev_storage + 504; +return dev_storage + 505; } } @@ -4751,7 +4752,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st35", 9) == 0) { { -return dev_storage + 494; +return dev_storage + 495; } } @@ -4766,7 +4767,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st25", 9) == 0) { { -return dev_storage + 484; +return dev_storage + 485; } } @@ -4784,7 +4785,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st15", 9) == 0) { { -return dev_storage + 474; +return dev_storage + 475; } } @@ -4799,7 +4800,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr15", 9) == 0) { { -return dev_storage + 458; +return dev_storage + 459; } } @@ -4844,7 +4845,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty4", 9) == 0) { { -return dev_storage + 302; +return dev_storage + 303; } } @@ -4859,7 +4860,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst4", 9) == 0) { { -return dev_storage + 172; +return dev_storage + 173; } } @@ -4889,7 +4890,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd4", 9) == 0) { { -return dev_storage + 431; +return dev_storage + 432; } } @@ -4904,7 +4905,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st94", 9) == 0) { { -return dev_storage + 553; +return dev_storage + 554; } } @@ -4919,7 +4920,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st84", 9) == 0) { { -return dev_storage + 543; +return dev_storage + 544; } } @@ -4934,7 +4935,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st74", 9) == 0) { { -return dev_storage + 533; +return dev_storage + 534; } } @@ -4949,7 +4950,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st64", 9) == 0) { { -return dev_storage + 523; +return dev_storage + 524; } } @@ -4964,7 +4965,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st54", 9) == 0) { { -return dev_storage + 513; +return dev_storage + 514; } } @@ -4979,7 +4980,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st44", 9) == 0) { { -return dev_storage + 503; +return dev_storage + 504; } } @@ -4994,7 +4995,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st34", 9) == 0) { { -return dev_storage + 493; +return dev_storage + 494; } } @@ -5009,7 +5010,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st24", 9) == 0) { { -return dev_storage + 483; +return dev_storage + 484; } } @@ -5027,7 +5028,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st14", 9) == 0) { { -return dev_storage + 473; +return dev_storage + 474; } } @@ -5042,7 +5043,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr14", 9) == 0) { { -return dev_storage + 457; +return dev_storage + 458; } } @@ -5087,7 +5088,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty3", 9) == 0) { { -return dev_storage + 301; +return dev_storage + 302; } } @@ -5102,7 +5103,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst3", 9) == 0) { { -return dev_storage + 171; +return dev_storage + 172; } } @@ -5132,7 +5133,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd3", 9) == 0) { { -return dev_storage + 430; +return dev_storage + 431; } } @@ -5147,7 +5148,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st93", 9) == 0) { { -return dev_storage + 552; +return dev_storage + 553; } } @@ -5162,7 +5163,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st83", 9) == 0) { { -return dev_storage + 542; +return dev_storage + 543; } } @@ -5177,7 +5178,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st73", 9) == 0) { { -return dev_storage + 532; +return dev_storage + 533; } } @@ -5192,7 +5193,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st63", 9) == 0) { { -return dev_storage + 522; +return dev_storage + 523; } } @@ -5207,7 +5208,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st53", 9) == 0) { { -return dev_storage + 512; +return dev_storage + 513; } } @@ -5222,7 +5223,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st43", 9) == 0) { { -return dev_storage + 502; +return dev_storage + 503; } } @@ -5237,7 +5238,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st33", 9) == 0) { { -return dev_storage + 492; +return dev_storage + 493; } } @@ -5252,7 +5253,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st23", 9) == 0) { { -return dev_storage + 482; +return dev_storage + 483; } } @@ -5270,7 +5271,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st13", 9) == 0) { { -return dev_storage + 472; +return dev_storage + 473; } } @@ -5285,7 +5286,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr13", 9) == 0) { { -return dev_storage + 456; +return dev_storage + 457; } } @@ -5330,7 +5331,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty2", 9) == 0) { { -return dev_storage + 300; +return dev_storage + 301; } } @@ -5345,7 +5346,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst2", 9) == 0) { { -return dev_storage + 170; +return dev_storage + 171; } } @@ -5375,7 +5376,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd2", 9) == 0) { { -return dev_storage + 429; +return dev_storage + 430; } } @@ -5390,7 +5391,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st92", 9) == 0) { { -return dev_storage + 551; +return dev_storage + 552; } } @@ -5405,7 +5406,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st82", 9) == 0) { { -return dev_storage + 541; +return dev_storage + 542; } } @@ -5420,7 +5421,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st72", 9) == 0) { { -return dev_storage + 531; +return dev_storage + 532; } } @@ -5435,7 +5436,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st62", 9) == 0) { { -return dev_storage + 521; +return dev_storage + 522; } } @@ -5450,7 +5451,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st52", 9) == 0) { { -return dev_storage + 511; +return dev_storage + 512; } } @@ -5465,7 +5466,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st42", 9) == 0) { { -return dev_storage + 501; +return dev_storage + 502; } } @@ -5480,7 +5481,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st32", 9) == 0) { { -return dev_storage + 491; +return dev_storage + 492; } } @@ -5495,7 +5496,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st22", 9) == 0) { { -return dev_storage + 481; +return dev_storage + 482; } } @@ -5513,7 +5514,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st12", 9) == 0) { { -return dev_storage + 471; +return dev_storage + 472; } } @@ -5528,7 +5529,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr12", 9) == 0) { { -return dev_storage + 455; +return dev_storage + 456; } } @@ -5573,7 +5574,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty1", 9) == 0) { { -return dev_storage + 299; +return dev_storage + 300; } } @@ -5588,7 +5589,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst1", 9) == 0) { { -return dev_storage + 169; +return dev_storage + 170; } } @@ -5618,7 +5619,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd1", 9) == 0) { { -return dev_storage + 428; +return dev_storage + 429; } } @@ -5633,7 +5634,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st91", 9) == 0) { { -return dev_storage + 550; +return dev_storage + 551; } } @@ -5648,7 +5649,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st81", 9) == 0) { { -return dev_storage + 540; +return dev_storage + 541; } } @@ -5663,7 +5664,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st71", 9) == 0) { { -return dev_storage + 530; +return dev_storage + 531; } } @@ -5678,7 +5679,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st61", 9) == 0) { { -return dev_storage + 520; +return dev_storage + 521; } } @@ -5693,7 +5694,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st51", 9) == 0) { { -return dev_storage + 510; +return dev_storage + 511; } } @@ -5708,7 +5709,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st41", 9) == 0) { { -return dev_storage + 500; +return dev_storage + 501; } } @@ -5723,7 +5724,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st31", 9) == 0) { { -return dev_storage + 490; +return dev_storage + 491; } } @@ -5738,7 +5739,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st21", 9) == 0) { { -return dev_storage + 480; +return dev_storage + 481; } } @@ -5756,7 +5757,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st11", 9) == 0) { { -return dev_storage + 470; +return dev_storage + 471; } } @@ -5771,7 +5772,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr11", 9) == 0) { { -return dev_storage + 454; +return dev_storage + 455; } } @@ -5816,7 +5817,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty0", 9) == 0) { { -return dev_storage + 298; +return dev_storage + 299; } } @@ -5831,7 +5832,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst0", 9) == 0) { { -return dev_storage + 168; +return dev_storage + 169; } } @@ -5846,7 +5847,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd0", 9) == 0) { { -return dev_storage + 427; +return dev_storage + 428; } } @@ -5861,7 +5862,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st90", 9) == 0) { { -return dev_storage + 549; +return dev_storage + 550; } } @@ -5876,7 +5877,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st80", 9) == 0) { { -return dev_storage + 539; +return dev_storage + 540; } } @@ -5891,7 +5892,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st70", 9) == 0) { { -return dev_storage + 529; +return dev_storage + 530; } } @@ -5906,7 +5907,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st60", 9) == 0) { { -return dev_storage + 519; +return dev_storage + 520; } } @@ -5921,7 +5922,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st50", 9) == 0) { { -return dev_storage + 509; +return dev_storage + 510; } } @@ -5936,7 +5937,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st40", 9) == 0) { { -return dev_storage + 499; +return dev_storage + 500; } } @@ -5951,7 +5952,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st30", 9) == 0) { { -return dev_storage + 489; +return dev_storage + 490; } } @@ -5966,7 +5967,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st20", 9) == 0) { { -return dev_storage + 479; +return dev_storage + 480; } } @@ -5984,7 +5985,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st10", 9) == 0) { { -return dev_storage + 469; +return dev_storage + 470; } } @@ -5999,7 +6000,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr10", 9) == 0) { { -return dev_storage + 453; +return dev_storage + 454; } } @@ -6212,7 +6213,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/stdin", 10) == 0) { { -return dev_storage + 588; +return dev_storage + 589; } } @@ -6242,6 +6243,21 @@ return NULL; { return NULL; +} + } + case 'e': + if (strncmp (KR_keyword, "/dev/mixer", 10) == 0) + { +{ +return dev_storage + 168; + +} + } + else + { +{ +return NULL; + } } case 'S': @@ -6251,7 +6267,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS9", 10) == 0) { { -return dev_storage + 600; +return dev_storage + 601; } } @@ -6266,7 +6282,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS8", 10) == 0) { { -return dev_storage + 599; +return dev_storage + 600; } } @@ -6281,7 +6297,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS7", 10) == 0) { { -return dev_storage + 598; +return dev_storage + 599; } } @@ -6296,7 +6312,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS6", 10) == 0) { { -return dev_storage + 597; +return dev_storage + 598; } } @@ -6311,7 +6327,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS5", 10) == 0) { { -return dev_storage + 596; +return dev_storage + 597; } } @@ -6326,7 +6342,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS4", 10) == 0) { { -return dev_storage + 595; +return dev_storage + 596; } } @@ -6341,7 +6357,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS3", 10) == 0) { { -return dev_storage + 594; +return dev_storage + 595; } } @@ -6356,7 +6372,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS2", 10) == 0) { { -return dev_storage + 593; +return dev_storage + 594; } } @@ -6371,7 +6387,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS1", 10) == 0) { { -return dev_storage + 592; +return dev_storage + 593; } } @@ -6386,7 +6402,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS0", 10) == 0) { { -return dev_storage + 591; +return dev_storage + 592; } } @@ -6413,7 +6429,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty99", 10) == 0) { { -return dev_storage + 397; +return dev_storage + 398; } } @@ -6428,7 +6444,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty98", 10) == 0) { { -return dev_storage + 396; +return dev_storage + 397; } } @@ -6443,7 +6459,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty97", 10) == 0) { { -return dev_storage + 395; +return dev_storage + 396; } } @@ -6458,7 +6474,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty96", 10) == 0) { { -return dev_storage + 394; +return dev_storage + 395; } } @@ -6473,7 +6489,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty95", 10) == 0) { { -return dev_storage + 393; +return dev_storage + 394; } } @@ -6488,7 +6504,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty94", 10) == 0) { { -return dev_storage + 392; +return dev_storage + 393; } } @@ -6503,7 +6519,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty93", 10) == 0) { { -return dev_storage + 391; +return dev_storage + 392; } } @@ -6518,7 +6534,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty92", 10) == 0) { { -return dev_storage + 390; +return dev_storage + 391; } } @@ -6533,7 +6549,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty91", 10) == 0) { { -return dev_storage + 389; +return dev_storage + 390; } } @@ -6548,7 +6564,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty90", 10) == 0) { { -return dev_storage + 388; +return dev_storage + 389; } } @@ -6572,7 +6588,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst99", 10) == 0) { { -return dev_storage + 267; +return dev_storage + 268; } } @@ -6587,7 +6603,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst98", 10) == 0) { { -return dev_storage + 266; +return dev_storage + 267; } } @@ -6602,7 +6618,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst97", 10) == 0) { { -return dev_storage + 265; +return dev_storage + 266; } } @@ -6617,7 +6633,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst96", 10) == 0) { { -return dev_storage + 264; +return dev_storage + 265; } } @@ -6632,7 +6648,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst95", 10) == 0) { { -return dev_storage + 263; +return dev_storage + 264; } } @@ -6647,7 +6663,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst94", 10) == 0) { { -return dev_storage + 262; +return dev_storage + 263; } } @@ -6662,7 +6678,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst93", 10) == 0) { { -return dev_storage + 261; +return dev_storage + 262; } } @@ -6677,7 +6693,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst92", 10) == 0) { { -return dev_storage + 260; +return dev_storage + 261; } } @@ -6692,7 +6708,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst91", 10) == 0) { { -return dev_storage + 259; +return dev_storage + 260; } } @@ -6707,7 +6723,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst90", 10) == 0) { { -return dev_storage + 258; +return dev_storage + 259; } } @@ -6740,7 +6756,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty89", 10) == 0) { { -return dev_storage + 387; +return dev_storage + 388; } } @@ -6755,7 +6771,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty88", 10) == 0) { { -return dev_storage + 386; +return dev_storage + 387; } } @@ -6770,7 +6786,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty87", 10) == 0) { { -return dev_storage + 385; +return dev_storage + 386; } } @@ -6785,7 +6801,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty86", 10) == 0) { { -return dev_storage + 384; +return dev_storage + 385; } } @@ -6800,7 +6816,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty85", 10) == 0) { { -return dev_storage + 383; +return dev_storage + 384; } } @@ -6815,7 +6831,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty84", 10) == 0) { { -return dev_storage + 382; +return dev_storage + 383; } } @@ -6830,7 +6846,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty83", 10) == 0) { { -return dev_storage + 381; +return dev_storage + 382; } } @@ -6845,7 +6861,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty82", 10) == 0) { { -return dev_storage + 380; +return dev_storage + 381; } } @@ -6860,7 +6876,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty81", 10) == 0) { { -return dev_storage + 379; +return dev_storage + 380; } } @@ -6875,7 +6891,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty80", 10) == 0) { { -return dev_storage + 378; +return dev_storage + 379; } } @@ -6899,7 +6915,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst89", 10) == 0) { { -return dev_storage + 257; +return dev_storage + 258; } } @@ -6914,7 +6930,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst88", 10) == 0) { { -return dev_storage + 256; +return dev_storage + 257; } } @@ -6929,7 +6945,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst87", 10) == 0) { { -return dev_storage + 255; +return dev_storage + 256; } } @@ -6944,7 +6960,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst86", 10) == 0) { { -return dev_storage + 254; +return dev_storage + 255; } } @@ -6959,7 +6975,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst85", 10) == 0) { { -return dev_storage + 253; +return dev_storage + 254; } } @@ -6974,7 +6990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst84", 10) == 0) { { -return dev_storage + 252; +return dev_storage + 253; } } @@ -6989,7 +7005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst83", 10) == 0) { { -return dev_storage + 251; +return dev_storage + 252; } } @@ -7004,7 +7020,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst82", 10) == 0) { { -return dev_storage + 250; +return dev_storage + 251; } } @@ -7019,7 +7035,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst81", 10) == 0) { { -return dev_storage + 249; +return dev_storage + 250; } } @@ -7034,7 +7050,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst80", 10) == 0) { { -return dev_storage + 248; +return dev_storage + 249; } } @@ -7067,7 +7083,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty79", 10) == 0) { { -return dev_storage + 377; +return dev_storage + 378; } } @@ -7082,7 +7098,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty78", 10) == 0) { { -return dev_storage + 376; +return dev_storage + 377; } } @@ -7097,7 +7113,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty77", 10) == 0) { { -return dev_storage + 375; +return dev_storage + 376; } } @@ -7112,7 +7128,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty76", 10) == 0) { { -return dev_storage + 374; +return dev_storage + 375; } } @@ -7127,7 +7143,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty75", 10) == 0) { { -return dev_storage + 373; +return dev_storage + 374; } } @@ -7142,7 +7158,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty74", 10) == 0) { { -return dev_storage + 372; +return dev_storage + 373; } } @@ -7157,7 +7173,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty73", 10) == 0) { { -return dev_storage + 371; +return dev_storage + 372; } } @@ -7172,7 +7188,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty72", 10) == 0) { { -return dev_storage + 370; +return dev_storage + 371; } } @@ -7187,7 +7203,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty71", 10) == 0) { { -return dev_storage + 369; +return dev_storage + 370; } } @@ -7202,7 +7218,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty70", 10) == 0) { { -return dev_storage + 368; +return dev_storage + 369; } } @@ -7226,7 +7242,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst79", 10) == 0) { { -return dev_storage + 247; +return dev_storage + 248; } } @@ -7241,7 +7257,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst78", 10) == 0) { { -return dev_storage + 246; +return dev_storage + 247; } } @@ -7256,7 +7272,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst77", 10) == 0) { { -return dev_storage + 245; +return dev_storage + 246; } } @@ -7271,7 +7287,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst76", 10) == 0) { { -return dev_storage + 244; +return dev_storage + 245; } } @@ -7286,7 +7302,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst75", 10) == 0) { { -return dev_storage + 243; +return dev_storage + 244; } } @@ -7301,7 +7317,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst74", 10) == 0) { { -return dev_storage + 242; +return dev_storage + 243; } } @@ -7316,7 +7332,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst73", 10) == 0) { { -return dev_storage + 241; +return dev_storage + 242; } } @@ -7331,7 +7347,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst72", 10) == 0) { { -return dev_storage + 240; +return dev_storage + 241; } } @@ -7346,7 +7362,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst71", 10) == 0) { { -return dev_storage + 239; +return dev_storage + 240; } } @@ -7361,7 +7377,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst70", 10) == 0) { { -return dev_storage + 238; +return dev_storage + 239; } } @@ -7394,7 +7410,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty69", 10) == 0) { { -return dev_storage + 367; +return dev_storage + 368; } } @@ -7409,7 +7425,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty68", 10) == 0) { { -return dev_storage + 366; +return dev_storage + 367; } } @@ -7424,7 +7440,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty67", 10) == 0) { { -return dev_storage + 365; +return dev_storage + 366; } } @@ -7439,7 +7455,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty66", 10) == 0) { { -return dev_storage + 364; +return dev_storage + 365; } } @@ -7454,7 +7470,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty65", 10) == 0) { { -return dev_storage + 363; +return dev_storage + 364; } } @@ -7469,7 +7485,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty64", 10) == 0) { { -return dev_storage + 362; +return dev_storage + 363; } } @@ -7484,7 +7500,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty63", 10) == 0) { { -return dev_storage + 361; +return dev_storage + 362; } } @@ -7499,7 +7515,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty62", 10) == 0) { { -return dev_storage + 360; +return dev_storage + 361; } } @@ -7514,7 +7530,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty61", 10) == 0) { { -return dev_storage + 359; +return dev_storage + 360; } } @@ -7529,7 +7545,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty60", 10) == 0) { { -return dev_storage + 358; +return dev_storage + 359; } } @@ -7553,7 +7569,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst69", 10) == 0) { { -return dev_storage + 237; +return dev_storage + 238; } } @@ -7568,7 +7584,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst68", 10) == 0) { { -return dev_storage + 236; +return dev_storage + 237; } } @@ -7583,7 +7599,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst67", 10) == 0) { { -return dev_storage + 235; +return dev_storage + 236; } } @@ -7598,7 +7614,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst66", 10) == 0) { { -return dev_storage + 234; +return dev_storage + 235; } } @@ -7613,7 +7629,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst65", 10) == 0) { { -return dev_storage + 233; +return dev_storage + 234; } } @@ -7628,7 +7644,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst64", 10) == 0) { { -return dev_storage + 232; +return dev_storage + 233; } } @@ -7643,7 +7659,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst63", 10) == 0) { { -return dev_storage + 231; +return dev_storage + 232; } } @@ -7658,7 +7674,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst62", 10) == 0) { { -return dev_storage + 230; +return dev_storage + 231; } } @@ -7673,7 +7689,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst61", 10) == 0) { { -return dev_storage + 229; +return dev_storage + 230; } } @@ -7688,7 +7704,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst60", 10) == 0) { { -return dev_storage + 228; +return dev_storage + 229; } } @@ -7721,7 +7737,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty59", 10) == 0) { { -return dev_storage + 357; +return dev_storage + 358; } } @@ -7736,7 +7752,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty58", 10) == 0) { { -return dev_storage + 356; +return dev_storage + 357; } } @@ -7751,7 +7767,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty57", 10) == 0) { { -return dev_storage + 355; +return dev_storage + 356; } } @@ -7766,7 +7782,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty56", 10) == 0) { { -return dev_storage + 354; +return dev_storage + 355; } } @@ -7781,7 +7797,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty55", 10) == 0) { { -return dev_storage + 353; +return dev_storage + 354; } } @@ -7796,7 +7812,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty54", 10) == 0) { { -return dev_storage + 352; +return dev_storage + 353; } } @@ -7811,7 +7827,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty53", 10) == 0) { { -return dev_storage + 351; +return dev_storage + 352; } } @@ -7826,7 +7842,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty52", 10) == 0) { { -return dev_storage + 350; +return dev_storage + 351; } } @@ -7841,7 +7857,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty51", 10) == 0) { { -return dev_storage + 349; +return dev_storage + 350; } } @@ -7856,7 +7872,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty50", 10) == 0) { { -return dev_storage + 348; +return dev_storage + 349; } } @@ -7880,7 +7896,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst59", 10) == 0) { { -return dev_storage + 227; +return dev_storage + 228; } } @@ -7895,7 +7911,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst58", 10) == 0) { { -return dev_storage + 226; +return dev_storage + 227; } } @@ -7910,7 +7926,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst57", 10) == 0) { { -return dev_storage + 225; +return dev_storage + 226; } } @@ -7925,7 +7941,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst56", 10) == 0) { { -return dev_storage + 224; +return dev_storage + 225; } } @@ -7940,7 +7956,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst55", 10) == 0) { { -return dev_storage + 223; +return dev_storage + 224; } } @@ -7955,7 +7971,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst54", 10) == 0) { { -return dev_storage + 222; +return dev_storage + 223; } } @@ -7970,7 +7986,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst53", 10) == 0) { { -return dev_storage + 221; +return dev_storage + 222; } } @@ -7985,7 +8001,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst52", 10) == 0) { { -return dev_storage + 220; +return dev_storage + 221; } } @@ -8000,7 +8016,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst51", 10) == 0) { { -return dev_storage + 219; +return dev_storage + 220; } } @@ -8015,7 +8031,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst50", 10) == 0) { { -return dev_storage + 218; +return dev_storage + 219; } } @@ -8048,7 +8064,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty49", 10) == 0) { { -return dev_storage + 347; +return dev_storage + 348; } } @@ -8063,7 +8079,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty48", 10) == 0) { { -return dev_storage + 346; +return dev_storage + 347; } } @@ -8078,7 +8094,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty47", 10) == 0) { { -return dev_storage + 345; +return dev_storage + 346; } } @@ -8093,7 +8109,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty46", 10) == 0) { { -return dev_storage + 344; +return dev_storage + 345; } } @@ -8108,7 +8124,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty45", 10) == 0) { { -return dev_storage + 343; +return dev_storage + 344; } } @@ -8123,7 +8139,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty44", 10) == 0) { { -return dev_storage + 342; +return dev_storage + 343; } } @@ -8138,7 +8154,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty43", 10) == 0) { { -return dev_storage + 341; +return dev_storage + 342; } } @@ -8153,7 +8169,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty42", 10) == 0) { { -return dev_storage + 340; +return dev_storage + 341; } } @@ -8168,7 +8184,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty41", 10) == 0) { { -return dev_storage + 339; +return dev_storage + 340; } } @@ -8183,7 +8199,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty40", 10) == 0) { { -return dev_storage + 338; +return dev_storage + 339; } } @@ -8207,7 +8223,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst49", 10) == 0) { { -return dev_storage + 217; +return dev_storage + 218; } } @@ -8222,7 +8238,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst48", 10) == 0) { { -return dev_storage + 216; +return dev_storage + 217; } } @@ -8237,7 +8253,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst47", 10) == 0) { { -return dev_storage + 215; +return dev_storage + 216; } } @@ -8252,7 +8268,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst46", 10) == 0) { { -return dev_storage + 214; +return dev_storage + 215; } } @@ -8267,7 +8283,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst45", 10) == 0) { { -return dev_storage + 213; +return dev_storage + 214; } } @@ -8282,7 +8298,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst44", 10) == 0) { { -return dev_storage + 212; +return dev_storage + 213; } } @@ -8297,7 +8313,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst43", 10) == 0) { { -return dev_storage + 211; +return dev_storage + 212; } } @@ -8312,7 +8328,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst42", 10) == 0) { { -return dev_storage + 210; +return dev_storage + 211; } } @@ -8327,7 +8343,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst41", 10) == 0) { { -return dev_storage + 209; +return dev_storage + 210; } } @@ -8342,7 +8358,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst40", 10) == 0) { { -return dev_storage + 208; +return dev_storage + 209; } } @@ -8375,7 +8391,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty39", 10) == 0) { { -return dev_storage + 337; +return dev_storage + 338; } } @@ -8390,7 +8406,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty38", 10) == 0) { { -return dev_storage + 336; +return dev_storage + 337; } } @@ -8405,7 +8421,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty37", 10) == 0) { { -return dev_storage + 335; +return dev_storage + 336; } } @@ -8420,7 +8436,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty36", 10) == 0) { { -return dev_storage + 334; +return dev_storage + 335; } } @@ -8435,7 +8451,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty35", 10) == 0) { { -return dev_storage + 333; +return dev_storage + 334; } } @@ -8450,7 +8466,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty34", 10) == 0) { { -return dev_storage + 332; +return dev_storage + 333; } } @@ -8465,7 +8481,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty33", 10) == 0) { { -return dev_storage + 331; +return dev_storage + 332; } } @@ -8480,7 +8496,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty32", 10) == 0) { { -return dev_storage + 330; +return dev_storage + 331; } } @@ -8495,7 +8511,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty31", 10) == 0) { { -return dev_storage + 329; +return dev_storage + 330; } } @@ -8510,7 +8526,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty30", 10) == 0) { { -return dev_storage + 328; +return dev_storage + 329; } } @@ -8534,7 +8550,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst39", 10) == 0) { { -return dev_storage + 207; +return dev_storage + 208; } } @@ -8549,7 +8565,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst38", 10) == 0) { { -return dev_storage + 206; +return dev_storage + 207; } } @@ -8564,7 +8580,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst37", 10) == 0) { { -return dev_storage + 205; +return dev_storage + 206; } } @@ -8579,7 +8595,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst36", 10) == 0) { { -return dev_storage + 204; +return dev_storage + 205; } } @@ -8594,7 +8610,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst35", 10) == 0) { { -return dev_storage + 203; +return dev_storage + 204; } } @@ -8609,7 +8625,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst34", 10) == 0) { { -return dev_storage + 202; +return dev_storage + 203; } } @@ -8624,7 +8640,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst33", 10) == 0) { { -return dev_storage + 201; +return dev_storage + 202; } } @@ -8639,7 +8655,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst32", 10) == 0) { { -return dev_storage + 200; +return dev_storage + 201; } } @@ -8654,7 +8670,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst31", 10) == 0) { { -return dev_storage + 199; +return dev_storage + 200; } } @@ -8669,7 +8685,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst30", 10) == 0) { { -return dev_storage + 198; +return dev_storage + 199; } } @@ -8702,7 +8718,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st127", 10) == 0) { { -return dev_storage + 586; +return dev_storage + 587; } } @@ -8717,7 +8733,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st126", 10) == 0) { { -return dev_storage + 585; +return dev_storage + 586; } } @@ -8732,7 +8748,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st125", 10) == 0) { { -return dev_storage + 584; +return dev_storage + 585; } } @@ -8747,7 +8763,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st124", 10) == 0) { { -return dev_storage + 583; +return dev_storage + 584; } } @@ -8762,7 +8778,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st123", 10) == 0) { { -return dev_storage + 582; +return dev_storage + 583; } } @@ -8777,7 +8793,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st122", 10) == 0) { { -return dev_storage + 581; +return dev_storage + 582; } } @@ -8792,7 +8808,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st121", 10) == 0) { { -return dev_storage + 580; +return dev_storage + 581; } } @@ -8807,7 +8823,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st120", 10) == 0) { { -return dev_storage + 579; +return dev_storage + 580; } } @@ -8831,7 +8847,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty29", 10) == 0) { { -return dev_storage + 327; +return dev_storage + 328; } } @@ -8846,7 +8862,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty28", 10) == 0) { { -return dev_storage + 326; +return dev_storage + 327; } } @@ -8861,7 +8877,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty27", 10) == 0) { { -return dev_storage + 325; +return dev_storage + 326; } } @@ -8876,7 +8892,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty26", 10) == 0) { { -return dev_storage + 324; +return dev_storage + 325; } } @@ -8891,7 +8907,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty25", 10) == 0) { { -return dev_storage + 323; +return dev_storage + 324; } } @@ -8906,7 +8922,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty24", 10) == 0) { { -return dev_storage + 322; +return dev_storage + 323; } } @@ -8921,7 +8937,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty23", 10) == 0) { { -return dev_storage + 321; +return dev_storage + 322; } } @@ -8936,7 +8952,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty22", 10) == 0) { { -return dev_storage + 320; +return dev_storage + 321; } } @@ -8951,7 +8967,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty21", 10) == 0) { { -return dev_storage + 319; +return dev_storage + 320; } } @@ -8966,7 +8982,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty20", 10) == 0) { { -return dev_storage + 318; +return dev_storage + 319; } } @@ -8990,7 +9006,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst29", 10) == 0) { { -return dev_storage + 197; +return dev_storage + 198; } } @@ -9005,7 +9021,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst28", 10) == 0) { { -return dev_storage + 196; +return dev_storage + 197; } } @@ -9020,7 +9036,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst27", 10) == 0) { { -return dev_storage + 195; +return dev_storage + 196; } } @@ -9035,7 +9051,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst26", 10) == 0) { { -return dev_storage + 194; +return dev_storage + 195; } } @@ -9050,7 +9066,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst25", 10) == 0) { { -return dev_storage + 193; +return dev_storage + 194; } } @@ -9065,7 +9081,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst24", 10) == 0) { { -return dev_storage + 192; +return dev_storage + 193; } } @@ -9080,7 +9096,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst23", 10) == 0) { { -return dev_storage + 191; +return dev_storage + 192; } } @@ -9095,7 +9111,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst22", 10) == 0) { { -return dev_storage + 190; +return dev_storage + 191; } } @@ -9110,7 +9126,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst21", 10) == 0) { { -return dev_storage + 189; +return dev_storage + 190; } } @@ -9125,7 +9141,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst20", 10) == 0) { { -return dev_storage + 188; +return dev_storage + 189; } } @@ -9158,7 +9174,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty19", 10) == 0) { { -return dev_storage + 317; +return dev_storage + 318; } } @@ -9173,7 +9189,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty18", 10) == 0) { { -return dev_storage + 316; +return dev_storage + 317; } } @@ -9188,7 +9204,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty17", 10) == 0) { { -return dev_storage + 315; +return dev_storage + 316; } } @@ -9203,7 +9219,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty16", 10) == 0) { { -return dev_storage + 314; +return dev_storage + 315; } } @@ -9218,7 +9234,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty15", 10) == 0) { { -return dev_storage + 313; +return dev_storage + 314; } } @@ -9233,7 +9249,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty14", 10) == 0) { { -return dev_storage + 312; +return dev_storage + 313; } } @@ -9248,7 +9264,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty13", 10) == 0) { { -return dev_storage + 311; +return dev_storage + 312; } } @@ -9263,7 +9279,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty12", 10) == 0) { { -return dev_storage + 310; +return dev_storage + 311; } } @@ -9278,7 +9294,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty11", 10) == 0) { { -return dev_storage + 309; +return dev_storage + 310; } } @@ -9293,7 +9309,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty10", 10) == 0) { { -return dev_storage + 308; +return dev_storage + 309; } } @@ -9317,7 +9333,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst19", 10) == 0) { { -return dev_storage + 187; +return dev_storage + 188; } } @@ -9332,7 +9348,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst18", 10) == 0) { { -return dev_storage + 186; +return dev_storage + 187; } } @@ -9347,7 +9363,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst17", 10) == 0) { { -return dev_storage + 185; +return dev_storage + 186; } } @@ -9362,7 +9378,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst16", 10) == 0) { { -return dev_storage + 184; +return dev_storage + 185; } } @@ -9377,7 +9393,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst15", 10) == 0) { { -return dev_storage + 183; +return dev_storage + 184; } } @@ -9392,7 +9408,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst14", 10) == 0) { { -return dev_storage + 182; +return dev_storage + 183; } } @@ -9407,7 +9423,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst13", 10) == 0) { { -return dev_storage + 181; +return dev_storage + 182; } } @@ -9422,7 +9438,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst12", 10) == 0) { { -return dev_storage + 180; +return dev_storage + 181; } } @@ -9437,7 +9453,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst11", 10) == 0) { { -return dev_storage + 179; +return dev_storage + 180; } } @@ -9452,7 +9468,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst10", 10) == 0) { { -return dev_storage + 178; +return dev_storage + 179; } } @@ -9590,7 +9606,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd15", 10) == 0) { { -return dev_storage + 442; +return dev_storage + 443; } } @@ -9605,7 +9621,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd14", 10) == 0) { { -return dev_storage + 441; +return dev_storage + 442; } } @@ -9620,7 +9636,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd13", 10) == 0) { { -return dev_storage + 440; +return dev_storage + 441; } } @@ -9635,7 +9651,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd12", 10) == 0) { { -return dev_storage + 439; +return dev_storage + 440; } } @@ -9650,7 +9666,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd11", 10) == 0) { { -return dev_storage + 438; +return dev_storage + 439; } } @@ -9665,7 +9681,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd10", 10) == 0) { { -return dev_storage + 437; +return dev_storage + 438; } } @@ -9689,7 +9705,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st119", 10) == 0) { { -return dev_storage + 578; +return dev_storage + 579; } } @@ -9704,7 +9720,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st118", 10) == 0) { { -return dev_storage + 577; +return dev_storage + 578; } } @@ -9719,7 +9735,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st117", 10) == 0) { { -return dev_storage + 576; +return dev_storage + 577; } } @@ -9734,7 +9750,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st116", 10) == 0) { { -return dev_storage + 575; +return dev_storage + 576; } } @@ -9749,7 +9765,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st115", 10) == 0) { { -return dev_storage + 574; +return dev_storage + 575; } } @@ -9764,7 +9780,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st114", 10) == 0) { { -return dev_storage + 573; +return dev_storage + 574; } } @@ -9779,7 +9795,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st113", 10) == 0) { { -return dev_storage + 572; +return dev_storage + 573; } } @@ -9794,7 +9810,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st112", 10) == 0) { { -return dev_storage + 571; +return dev_storage + 572; } } @@ -9809,7 +9825,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st111", 10) == 0) { { -return dev_storage + 570; +return dev_storage + 571; } } @@ -9824,7 +9840,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st110", 10) == 0) { { -return dev_storage + 569; +return dev_storage + 570; } } @@ -9854,7 +9870,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st109", 10) == 0) { { -return dev_storage + 568; +return dev_storage + 569; } } @@ -9869,7 +9885,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st108", 10) == 0) { { -return dev_storage + 567; +return dev_storage + 568; } } @@ -9884,7 +9900,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st107", 10) == 0) { { -return dev_storage + 566; +return dev_storage + 567; } } @@ -9899,7 +9915,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st106", 10) == 0) { { -return dev_storage + 565; +return dev_storage + 566; } } @@ -9914,7 +9930,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st105", 10) == 0) { { -return dev_storage + 564; +return dev_storage + 565; } } @@ -9929,7 +9945,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st104", 10) == 0) { { -return dev_storage + 563; +return dev_storage + 564; } } @@ -9944,7 +9960,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st103", 10) == 0) { { -return dev_storage + 562; +return dev_storage + 563; } } @@ -9959,7 +9975,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st102", 10) == 0) { { -return dev_storage + 561; +return dev_storage + 562; } } @@ -9974,7 +9990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st101", 10) == 0) { { -return dev_storage + 560; +return dev_storage + 561; } } @@ -9989,7 +10005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st100", 10) == 0) { { -return dev_storage + 559; +return dev_storage + 560; } } @@ -10022,7 +10038,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/stdout", 11) == 0) { { -return dev_storage + 589; +return dev_storage + 590; } } @@ -10058,7 +10074,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/stderr", 11) == 0) { { -return dev_storage + 587; +return dev_storage + 588; } } @@ -10073,7 +10089,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/random", 11) == 0) { { -return dev_storage + 426; +return dev_storage + 427; } } @@ -10094,7 +10110,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS99", 11) == 0) { { -return dev_storage + 690; +return dev_storage + 691; } } @@ -10109,7 +10125,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS98", 11) == 0) { { -return dev_storage + 689; +return dev_storage + 690; } } @@ -10124,7 +10140,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS97", 11) == 0) { { -return dev_storage + 688; +return dev_storage + 689; } } @@ -10139,7 +10155,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS96", 11) == 0) { { -return dev_storage + 687; +return dev_storage + 688; } } @@ -10154,7 +10170,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS95", 11) == 0) { { -return dev_storage + 686; +return dev_storage + 687; } } @@ -10169,7 +10185,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS94", 11) == 0) { { -return dev_storage + 685; +return dev_storage + 686; } } @@ -10184,7 +10200,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS93", 11) == 0) { { -return dev_storage + 684; +return dev_storage + 685; } } @@ -10199,7 +10215,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS92", 11) == 0) { { -return dev_storage + 683; +return dev_storage + 684; } } @@ -10214,7 +10230,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS91", 11) == 0) { { -return dev_storage + 682; +return dev_storage + 683; } } @@ -10229,7 +10245,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS90", 11) == 0) { { -return dev_storage + 681; +return dev_storage + 682; } } @@ -10421,7 +10437,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS89", 11) == 0) { { -return dev_storage + 680; +return dev_storage + 681; } } @@ -10436,7 +10452,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS88", 11) == 0) { { -return dev_storage + 679; +return dev_storage + 680; } } @@ -10451,7 +10467,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS87", 11) == 0) { { -return dev_storage + 678; +return dev_storage + 679; } } @@ -10466,7 +10482,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS86", 11) == 0) { { -return dev_storage + 677; +return dev_storage + 678; } } @@ -10481,7 +10497,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS85", 11) == 0) { { -return dev_storage + 676; +return dev_storage + 677; } } @@ -10496,7 +10512,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS84", 11) == 0) { { -return dev_storage + 675; +return dev_storage + 676; } } @@ -10511,7 +10527,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS83", 11) == 0) { { -return dev_storage + 674; +return dev_storage + 675; } } @@ -10526,7 +10542,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS82", 11) == 0) { { -return dev_storage + 673; +return dev_storage + 674; } } @@ -10541,7 +10557,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS81", 11) == 0) { { -return dev_storage + 672; +return dev_storage + 673; } } @@ -10556,7 +10572,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS80", 11) == 0) { { -return dev_storage + 671; +return dev_storage + 672; } } @@ -10748,7 +10764,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS79", 11) == 0) { { -return dev_storage + 670; +return dev_storage + 671; } } @@ -10763,7 +10779,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS78", 11) == 0) { { -return dev_storage + 669; +return dev_storage + 670; } } @@ -10778,7 +10794,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS77", 11) == 0) { { -return dev_storage + 668; +return dev_storage + 669; } } @@ -10793,7 +10809,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS76", 11) == 0) { { -return dev_storage + 667; +return dev_storage + 668; } } @@ -10808,7 +10824,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS75", 11) == 0) { { -return dev_storage + 666; +return dev_storage + 667; } } @@ -10823,7 +10839,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS74", 11) == 0) { { -return dev_storage + 665; +return dev_storage + 666; } } @@ -10838,7 +10854,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS73", 11) == 0) { { -return dev_storage + 664; +return dev_storage + 665; } } @@ -10853,7 +10869,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS72", 11) == 0) { { -return dev_storage + 663; +return dev_storage + 664; } } @@ -10868,7 +10884,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS71", 11) == 0) { { -return dev_storage + 662; +return dev_storage + 663; } } @@ -10883,7 +10899,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS70", 11) == 0) { { -return dev_storage + 661; +return dev_storage + 662; } } @@ -11075,7 +11091,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS69", 11) == 0) { { -return dev_storage + 660; +return dev_storage + 661; } } @@ -11090,7 +11106,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS68", 11) == 0) { { -return dev_storage + 659; +return dev_storage + 660; } } @@ -11105,7 +11121,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS67", 11) == 0) { { -return dev_storage + 658; +return dev_storage + 659; } } @@ -11120,7 +11136,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS66", 11) == 0) { { -return dev_storage + 657; +return dev_storage + 658; } } @@ -11135,7 +11151,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS65", 11) == 0) { { -return dev_storage + 656; +return dev_storage + 657; } } @@ -11150,7 +11166,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS64", 11) == 0) { { -return dev_storage + 655; +return dev_storage + 656; } } @@ -11165,7 +11181,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS63", 11) == 0) { { -return dev_storage + 654; +return dev_storage + 655; } } @@ -11180,7 +11196,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS62", 11) == 0) { { -return dev_storage + 653; +return dev_storage + 654; } } @@ -11195,7 +11211,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS61", 11) == 0) { { -return dev_storage + 652; +return dev_storage + 653; } } @@ -11210,7 +11226,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS60", 11) == 0) { { -return dev_storage + 651; +return dev_storage + 652; } } @@ -11402,7 +11418,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS59", 11) == 0) { { -return dev_storage + 650; +return dev_storage + 651; } } @@ -11417,7 +11433,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS58", 11) == 0) { { -return dev_storage + 649; +return dev_storage + 650; } } @@ -11432,7 +11448,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS57", 11) == 0) { { -return dev_storage + 648; +return dev_storage + 649; } } @@ -11447,7 +11463,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS56", 11) == 0) { { -return dev_storage + 647; +return dev_storage + 648; } } @@ -11462,7 +11478,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS55", 11) == 0) { { -return dev_storage + 646; +return dev_storage + 647; } } @@ -11477,7 +11493,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS54", 11) == 0) { { -return dev_storage + 645; +return dev_storage + 646; } } @@ -11492,7 +11508,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS53", 11) == 0) { { -return dev_storage + 644; +return dev_storage + 645; } } @@ -11507,7 +11523,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS52", 11) == 0) { { -return dev_storage + 643; +return dev_storage + 644; } } @@ -11522,7 +11538,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS51", 11) == 0) { { -return dev_storage + 642; +return dev_storage + 643; } } @@ -11537,7 +11553,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS50", 11) == 0) { { -return dev_storage + 641; +return dev_storage + 642; } } @@ -11729,7 +11745,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS49", 11) == 0) { { -return dev_storage + 640; +return dev_storage + 641; } } @@ -11744,7 +11760,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS48", 11) == 0) { { -return dev_storage + 639; +return dev_storage + 640; } } @@ -11759,7 +11775,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS47", 11) == 0) { { -return dev_storage + 638; +return dev_storage + 639; } } @@ -11774,7 +11790,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS46", 11) == 0) { { -return dev_storage + 637; +return dev_storage + 638; } } @@ -11789,7 +11805,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS45", 11) == 0) { { -return dev_storage + 636; +return dev_storage + 637; } } @@ -11804,7 +11820,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS44", 11) == 0) { { -return dev_storage + 635; +return dev_storage + 636; } } @@ -11819,7 +11835,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS43", 11) == 0) { { -return dev_storage + 634; +return dev_storage + 635; } } @@ -11834,7 +11850,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS42", 11) == 0) { { -return dev_storage + 633; +return dev_storage + 634; } } @@ -11849,7 +11865,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS41", 11) == 0) { { -return dev_storage + 632; +return dev_storage + 633; } } @@ -11864,7 +11880,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS40", 11) == 0) { { -return dev_storage + 631; +return dev_storage + 632; } } @@ -12056,7 +12072,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS39", 11) == 0) { { -return dev_storage + 630; +return dev_storage + 631; } } @@ -12071,7 +12087,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS38", 11) == 0) { { -return dev_storage + 629; +return dev_storage + 630; } } @@ -12086,7 +12102,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS37", 11) == 0) { { -return dev_storage + 628; +return dev_storage + 629; } } @@ -12101,7 +12117,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS36", 11) == 0) { { -return dev_storage + 627; +return dev_storage + 628; } } @@ -12116,7 +12132,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS35", 11) == 0) { { -return dev_storage + 626; +return dev_storage + 627; } } @@ -12131,7 +12147,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS34", 11) == 0) { { -return dev_storage + 625; +return dev_storage + 626; } } @@ -12146,7 +12162,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS33", 11) == 0) { { -return dev_storage + 624; +return dev_storage + 625; } } @@ -12161,7 +12177,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS32", 11) == 0) { { -return dev_storage + 623; +return dev_storage + 624; } } @@ -12176,7 +12192,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS31", 11) == 0) { { -return dev_storage + 622; +return dev_storage + 623; } } @@ -12191,7 +12207,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS30", 11) == 0) { { -return dev_storage + 621; +return dev_storage + 622; } } @@ -12383,7 +12399,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS29", 11) == 0) { { -return dev_storage + 620; +return dev_storage + 621; } } @@ -12398,7 +12414,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS28", 11) == 0) { { -return dev_storage + 619; +return dev_storage + 620; } } @@ -12413,7 +12429,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS27", 11) == 0) { { -return dev_storage + 618; +return dev_storage + 619; } } @@ -12428,7 +12444,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS26", 11) == 0) { { -return dev_storage + 617; +return dev_storage + 618; } } @@ -12443,7 +12459,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS25", 11) == 0) { { -return dev_storage + 616; +return dev_storage + 617; } } @@ -12458,7 +12474,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS24", 11) == 0) { { -return dev_storage + 615; +return dev_storage + 616; } } @@ -12473,7 +12489,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS23", 11) == 0) { { -return dev_storage + 614; +return dev_storage + 615; } } @@ -12488,7 +12504,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS22", 11) == 0) { { -return dev_storage + 613; +return dev_storage + 614; } } @@ -12503,7 +12519,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS21", 11) == 0) { { -return dev_storage + 612; +return dev_storage + 613; } } @@ -12518,7 +12534,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS20", 11) == 0) { { -return dev_storage + 611; +return dev_storage + 612; } } @@ -12542,7 +12558,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty127", 11) == 0) { { -return dev_storage + 425; +return dev_storage + 426; } } @@ -12557,7 +12573,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty126", 11) == 0) { { -return dev_storage + 424; +return dev_storage + 425; } } @@ -12572,7 +12588,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty125", 11) == 0) { { -return dev_storage + 423; +return dev_storage + 424; } } @@ -12587,7 +12603,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty124", 11) == 0) { { -return dev_storage + 422; +return dev_storage + 423; } } @@ -12602,7 +12618,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty123", 11) == 0) { { -return dev_storage + 421; +return dev_storage + 422; } } @@ -12617,7 +12633,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty122", 11) == 0) { { -return dev_storage + 420; +return dev_storage + 421; } } @@ -12632,7 +12648,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty121", 11) == 0) { { -return dev_storage + 419; +return dev_storage + 420; } } @@ -12647,7 +12663,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty120", 11) == 0) { { -return dev_storage + 418; +return dev_storage + 419; } } @@ -12671,7 +12687,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst127", 11) == 0) { { -return dev_storage + 295; +return dev_storage + 296; } } @@ -12686,7 +12702,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst126", 11) == 0) { { -return dev_storage + 294; +return dev_storage + 295; } } @@ -12701,7 +12717,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst125", 11) == 0) { { -return dev_storage + 293; +return dev_storage + 294; } } @@ -12716,7 +12732,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst124", 11) == 0) { { -return dev_storage + 292; +return dev_storage + 293; } } @@ -12731,7 +12747,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst123", 11) == 0) { { -return dev_storage + 291; +return dev_storage + 292; } } @@ -12746,7 +12762,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst122", 11) == 0) { { -return dev_storage + 290; +return dev_storage + 291; } } @@ -12761,7 +12777,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst121", 11) == 0) { { -return dev_storage + 289; +return dev_storage + 290; } } @@ -12776,7 +12792,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst120", 11) == 0) { { -return dev_storage + 288; +return dev_storage + 289; } } @@ -12968,7 +12984,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS19", 11) == 0) { { -return dev_storage + 610; +return dev_storage + 611; } } @@ -12983,7 +12999,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS18", 11) == 0) { { -return dev_storage + 609; +return dev_storage + 610; } } @@ -12998,7 +13014,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS17", 11) == 0) { { -return dev_storage + 608; +return dev_storage + 609; } } @@ -13013,7 +13029,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS16", 11) == 0) { { -return dev_storage + 607; +return dev_storage + 608; } } @@ -13028,7 +13044,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS15", 11) == 0) { { -return dev_storage + 606; +return dev_storage + 607; } } @@ -13043,7 +13059,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS14", 11) == 0) { { -return dev_storage + 605; +return dev_storage + 606; } } @@ -13058,7 +13074,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS13", 11) == 0) { { -return dev_storage + 604; +return dev_storage + 605; } } @@ -13073,7 +13089,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS12", 11) == 0) { { -return dev_storage + 603; +return dev_storage + 604; } } @@ -13088,7 +13104,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS11", 11) == 0) { { -return dev_storage + 602; +return dev_storage + 603; } } @@ -13103,7 +13119,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS10", 11) == 0) { { -return dev_storage + 601; +return dev_storage + 602; } } @@ -13127,7 +13143,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty119", 11) == 0) { { -return dev_storage + 417; +return dev_storage + 418; } } @@ -13142,7 +13158,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty118", 11) == 0) { { -return dev_storage + 416; +return dev_storage + 417; } } @@ -13157,7 +13173,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty117", 11) == 0) { { -return dev_storage + 415; +return dev_storage + 416; } } @@ -13172,7 +13188,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty116", 11) == 0) { { -return dev_storage + 414; +return dev_storage + 415; } } @@ -13187,7 +13203,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty115", 11) == 0) { { -return dev_storage + 413; +return dev_storage + 414; } } @@ -13202,7 +13218,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty114", 11) == 0) { { -return dev_storage + 412; +return dev_storage + 413; } } @@ -13217,7 +13233,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty113", 11) == 0) { { -return dev_storage + 411; +return dev_storage + 412; } } @@ -13232,7 +13248,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty112", 11) == 0) { { -return dev_storage + 410; +return dev_storage + 411; } } @@ -13247,7 +13263,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty111", 11) == 0) { { -return dev_storage + 409; +return dev_storage + 410; } } @@ -13262,7 +13278,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty110", 11) == 0) { { -return dev_storage + 408; +return dev_storage + 409; } } @@ -13286,7 +13302,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst119", 11) == 0) { { -return dev_storage + 287; +return dev_storage + 288; } } @@ -13301,7 +13317,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst118", 11) == 0) { { -return dev_storage + 286; +return dev_storage + 287; } } @@ -13316,7 +13332,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst117", 11) == 0) { { -return dev_storage + 285; +return dev_storage + 286; } } @@ -13331,7 +13347,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst116", 11) == 0) { { -return dev_storage + 284; +return dev_storage + 285; } } @@ -13346,7 +13362,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst115", 11) == 0) { { -return dev_storage + 283; +return dev_storage + 284; } } @@ -13361,7 +13377,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst114", 11) == 0) { { -return dev_storage + 282; +return dev_storage + 283; } } @@ -13376,7 +13392,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst113", 11) == 0) { { -return dev_storage + 281; +return dev_storage + 282; } } @@ -13391,7 +13407,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst112", 11) == 0) { { -return dev_storage + 280; +return dev_storage + 281; } } @@ -13406,7 +13422,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst111", 11) == 0) { { -return dev_storage + 279; +return dev_storage + 280; } } @@ -13421,7 +13437,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst110", 11) == 0) { { -return dev_storage + 278; +return dev_storage + 279; } } @@ -13613,7 +13629,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty109", 11) == 0) { { -return dev_storage + 407; +return dev_storage + 408; } } @@ -13628,7 +13644,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty108", 11) == 0) { { -return dev_storage + 406; +return dev_storage + 407; } } @@ -13643,7 +13659,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty107", 11) == 0) { { -return dev_storage + 405; +return dev_storage + 406; } } @@ -13658,7 +13674,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty106", 11) == 0) { { -return dev_storage + 404; +return dev_storage + 405; } } @@ -13673,7 +13689,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty105", 11) == 0) { { -return dev_storage + 403; +return dev_storage + 404; } } @@ -13688,7 +13704,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty104", 11) == 0) { { -return dev_storage + 402; +return dev_storage + 403; } } @@ -13703,7 +13719,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty103", 11) == 0) { { -return dev_storage + 401; +return dev_storage + 402; } } @@ -13718,7 +13734,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty102", 11) == 0) { { -return dev_storage + 400; +return dev_storage + 401; } } @@ -13733,7 +13749,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty101", 11) == 0) { { -return dev_storage + 399; +return dev_storage + 400; } } @@ -13748,7 +13764,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty100", 11) == 0) { { -return dev_storage + 398; +return dev_storage + 399; } } @@ -13772,7 +13788,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst109", 11) == 0) { { -return dev_storage + 277; +return dev_storage + 278; } } @@ -13787,7 +13803,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst108", 11) == 0) { { -return dev_storage + 276; +return dev_storage + 277; } } @@ -13802,7 +13818,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst107", 11) == 0) { { -return dev_storage + 275; +return dev_storage + 276; } } @@ -13817,7 +13833,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst106", 11) == 0) { { -return dev_storage + 274; +return dev_storage + 275; } } @@ -13832,7 +13848,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst105", 11) == 0) { { -return dev_storage + 273; +return dev_storage + 274; } } @@ -13847,7 +13863,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst104", 11) == 0) { { -return dev_storage + 272; +return dev_storage + 273; } } @@ -13862,7 +13878,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst103", 11) == 0) { { -return dev_storage + 271; +return dev_storage + 272; } } @@ -13877,7 +13893,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst102", 11) == 0) { { -return dev_storage + 270; +return dev_storage + 271; } } @@ -13892,7 +13908,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst101", 11) == 0) { { -return dev_storage + 269; +return dev_storage + 270; } } @@ -13907,7 +13923,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst100", 11) == 0) { { -return dev_storage + 268; +return dev_storage + 269; } } @@ -13943,7 +13959,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/windows", 12) == 0) { { -return dev_storage + 720; +return dev_storage + 721; } } @@ -13958,7 +13974,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/urandom", 12) == 0) { { -return dev_storage + 719; +return dev_storage + 720; } } @@ -13994,7 +14010,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS127", 12) == 0) { { -return dev_storage + 718; +return dev_storage + 719; } } @@ -14009,7 +14025,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS126", 12) == 0) { { -return dev_storage + 717; +return dev_storage + 718; } } @@ -14024,7 +14040,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS125", 12) == 0) { { -return dev_storage + 716; +return dev_storage + 717; } } @@ -14039,7 +14055,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS124", 12) == 0) { { -return dev_storage + 715; +return dev_storage + 716; } } @@ -14054,7 +14070,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS123", 12) == 0) { { -return dev_storage + 714; +return dev_storage + 715; } } @@ -14069,7 +14085,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS122", 12) == 0) { { -return dev_storage + 713; +return dev_storage + 714; } } @@ -14084,7 +14100,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS121", 12) == 0) { { -return dev_storage + 712; +return dev_storage + 713; } } @@ -14099,7 +14115,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS120", 12) == 0) { { -return dev_storage + 711; +return dev_storage + 712; } } @@ -14261,7 +14277,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS119", 12) == 0) { { -return dev_storage + 710; +return dev_storage + 711; } } @@ -14276,7 +14292,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS118", 12) == 0) { { -return dev_storage + 709; +return dev_storage + 710; } } @@ -14291,7 +14307,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS117", 12) == 0) { { -return dev_storage + 708; +return dev_storage + 709; } } @@ -14306,7 +14322,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS116", 12) == 0) { { -return dev_storage + 707; +return dev_storage + 708; } } @@ -14321,7 +14337,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS115", 12) == 0) { { -return dev_storage + 706; +return dev_storage + 707; } } @@ -14336,7 +14352,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS114", 12) == 0) { { -return dev_storage + 705; +return dev_storage + 706; } } @@ -14351,7 +14367,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS113", 12) == 0) { { -return dev_storage + 704; +return dev_storage + 705; } } @@ -14366,7 +14382,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS112", 12) == 0) { { -return dev_storage + 703; +return dev_storage + 704; } } @@ -14381,7 +14397,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS111", 12) == 0) { { -return dev_storage + 702; +return dev_storage + 703; } } @@ -14396,7 +14412,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS110", 12) == 0) { { -return dev_storage + 701; +return dev_storage + 702; } } @@ -14588,7 +14604,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS109", 12) == 0) { { -return dev_storage + 700; +return dev_storage + 701; } } @@ -14603,7 +14619,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS108", 12) == 0) { { -return dev_storage + 699; +return dev_storage + 700; } } @@ -14618,7 +14634,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS107", 12) == 0) { { -return dev_storage + 698; +return dev_storage + 699; } } @@ -14633,7 +14649,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS106", 12) == 0) { { -return dev_storage + 697; +return dev_storage + 698; } } @@ -14648,7 +14664,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS105", 12) == 0) { { -return dev_storage + 696; +return dev_storage + 697; } } @@ -14663,7 +14679,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS104", 12) == 0) { { -return dev_storage + 695; +return dev_storage + 696; } } @@ -14678,7 +14694,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS103", 12) == 0) { { -return dev_storage + 694; +return dev_storage + 695; } } @@ -14693,7 +14709,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS102", 12) == 0) { { -return dev_storage + 693; +return dev_storage + 694; } } @@ -14708,7 +14724,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS101", 12) == 0) { { -return dev_storage + 692; +return dev_storage + 693; } } @@ -14723,7 +14739,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS100", 12) == 0) { { -return dev_storage + 691; +return dev_storage + 692; } } diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 46568acbb2..2545dd85e2 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -180,6 +180,7 @@ const _device dev_error_storage = "/dev/console", BRACK(FH_CONSOLE), "/dev/console", exists_console, S_IFCHR, =console_dev "/dev/ptmx", BRACK(FH_PTMX), "/dev/ptmx", exists, S_IFCHR "/dev/windows", BRACK(FH_WINDOWS), "\\Device\\Null", exists_ntdev, S_IFCHR +"/dev/mixer", BRACK(FH_OSS_MIXER), "\\Device\\Null", exists_ntdev, S_IFCHR "/dev/dsp", BRACK(FH_OSS_DSP), "\\Device\\Null", exists_ntdev, S_IFCHR "/dev/conin", BRACK(FH_CONIN), "/dev/conin", exists_console, S_IFCHR "/dev/conout", BRACK(FH_CONOUT), "/dev/conout", exists_console, S_IFCHR diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 156445119c..21d5253896 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -552,6 +552,9 @@ fh_alloc (path_conv& pc) case FH_CLIPBOARD: fh = cnew (fhandler_dev_clipboard); break; + case FH_OSS_MIXER: + fh = cnew (fhandler_dev_mixer); + break; case FH_OSS_DSP: fh = cnew (fhandler_dev_dsp); break; diff --git a/winsup/cygwin/fhandler/mixer.cc b/winsup/cygwin/fhandler/mixer.cc new file mode 100644 index 0000000000..fabd397b74 --- /dev/null +++ b/winsup/cygwin/fhandler/mixer.cc @@ -0,0 +1,152 @@ +/* fhandler_dev_mixer: code to emulate OSS sound model /dev/mixer + + Written by Takashi Yano + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#include "winsup.h" +#include +#include "cygerrno.h" +#include "path.h" +#include "fhandler.h" +#include "dtable.h" +#include "cygheap.h" + +ssize_t +fhandler_dev_mixer::write (const void *ptr, size_t len) +{ + set_errno (EINVAL); + return -1; +} + +void +fhandler_dev_mixer::read (void *ptr, size_t& len) +{ + len = -1; + set_errno (EINVAL); +} + +int +fhandler_dev_mixer::open (int flags, mode_t) +{ + int ret = -1, err = 0; + switch (flags & O_ACCMODE) + { + case O_RDWR: + case O_WRONLY: + case O_RDONLY: + if (waveInGetNumDevs () == 0 && waveOutGetNumDevs () == 0) + err = ENXIO; + break; + default: + err = EINVAL; + } + + if (err) + set_errno (err); + else + { + ret = open_null (flags); + rec_source = SOUND_MIXER_MIC; + } + + return ret; +} + +static DWORD +volume_oss_to_winmm (int vol_oss) +{ + unsigned int vol_l, vol_r; + DWORD vol_winmm; + + vol_l = ((unsigned int) vol_oss) & 0xff; + vol_r = ((unsigned int) vol_oss) >> 8; + vol_l = min ((vol_l * 65535 + 50) / 100, 65535); + vol_r = min ((vol_r * 65535 + 50) / 100, 65535); + vol_winmm = (vol_r << 16) | vol_l; + + return vol_winmm; +} + +static int +volume_winmm_to_oss (DWORD vol_winmm) +{ + int vol_l, vol_r; + + vol_l = vol_winmm & 0xffff; + vol_r = vol_winmm >> 16; + vol_l = min ((vol_l * 100 + 32768) / 65535, 100); + vol_r = min ((vol_r * 100 + 32768) / 65535, 100); + return (vol_r << 8) | vol_l; +} + +int +fhandler_dev_mixer::ioctl (unsigned int cmd, void *buf) +{ + int ret = 0; + DWORD vol; + switch (cmd) + { + case SOUND_MIXER_READ_DEVMASK: + *(int *) buf = SOUND_MASK_VOLUME | SOUND_MASK_MIC | SOUND_MASK_LINE; + break; + case SOUND_MIXER_READ_RECMASK: + *(int *) buf = SOUND_MASK_MIC | SOUND_MASK_LINE; + break; + case SOUND_MIXER_READ_STEREODEVS: + *(int *) buf = SOUND_MASK_VOLUME | SOUND_MASK_LINE; + break; + case SOUND_MIXER_READ_CAPS: + *(int *) buf = SOUND_CAP_EXCL_INPUT; + break; + case MIXER_WRITE (SOUND_MIXER_RECSRC): + /* Dummy implementation */ + if (*(int *) buf == 0 || ((*(int *) buf) & SOUND_MASK_MIC)) + rec_source = SOUND_MIXER_MIC; + else if ((*(int *) buf) & SOUND_MASK_LINE) + rec_source = SOUND_MIXER_LINE; + break; + case MIXER_READ (SOUND_MIXER_RECSRC): + /* Dummy implementation */ + *(int *) buf = 1 << rec_source; + break; + case MIXER_WRITE (SOUND_MIXER_VOLUME): + vol = volume_oss_to_winmm (*(int *) buf); + if (waveOutSetVolume ((HWAVEOUT)WAVE_MAPPER, vol) != MMSYSERR_NOERROR) + { + set_errno (EINVAL); + ret = -1; + } + break; + case MIXER_READ (SOUND_MIXER_VOLUME): + DWORD vol; + if (waveOutGetVolume ((HWAVEOUT)WAVE_MAPPER, &vol) != MMSYSERR_NOERROR) + { + set_errno (EINVAL); + ret = -1; + break; + } + *(int *) buf = volume_winmm_to_oss (vol); + break; + default: + for (int i = 0; i < SOUND_MIXER_NRDEVICES; i++) + { + if (cmd == (unsigned int) MIXER_WRITE (i)) + goto out; + if (cmd == (unsigned int) MIXER_READ (i)) + { + *(int *) buf = 0; + goto out; + } + } + set_errno (EINVAL); + ret = -1; + break; + } +out: + return ret; +} diff --git a/winsup/cygwin/local_includes/devices.h b/winsup/cygwin/local_includes/devices.h index 8f718dd17a..10035263d5 100644 --- a/winsup/cygwin/local_includes/devices.h +++ b/winsup/cygwin/local_includes/devices.h @@ -242,6 +242,7 @@ enum fh_devices FH_URANDOM = FHDEV (DEV_MEM_MAJOR, 9), DEV_SOUND_MAJOR = 14, + FH_OSS_MIXER = FHDEV (DEV_SOUND_MAJOR, 0), FH_OSS_DSP = FHDEV (DEV_SOUND_MAJOR, 3), DEV_SOCK_MAJOR = 30, diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 098b8dd19e..f2658a2424 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2777,6 +2777,35 @@ class fhandler_windows: public fhandler_base } }; +class fhandler_dev_mixer: public fhandler_base +{ + private: + int rec_source; + public: + fhandler_dev_mixer () {} + int open (int, mode_t mode = 0); + ssize_t write (const void *, size_t); + void read (void *, size_t&); + int ioctl (unsigned int, void *); + + fhandler_dev_mixer (void *) {} + + void copy_from (fhandler_base *x) + { + pc.free_strings (); + *this = *reinterpret_cast (x); + _copy_from_reset_helper (); + } + + fhandler_dev_mixer *clone (cygheap_types malloc_type = HEAP_FHANDLER) + { + void *ptr = (void *) ccalloc (malloc_type, 1, sizeof (fhandler_dev_mixer)); + fhandler_dev_mixer *fh = new (ptr) fhandler_dev_mixer (ptr); + fh->copy_from (this); + return fh; + } +}; + class fhandler_dev_dsp: public fhandler_base { public: diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 91c470442a..cdb175797c 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -31,6 +31,8 @@ What's new: - New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. +- Implement OSS-based sound mixer device (/dev/mixer). + What changed: ------------- From c4aa56bbf26f297d4faf1bae80822c0d820a5d44 Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Fri, 1 Sep 2023 11:42:10 -0600 Subject: [PATCH 412/767] Cygwin: cpuinfo: Linux 6.5 additions add AMD 0x8000001f EAX 14 debug_swap SEV-ES full debug state swap Signed-off-by: Brian Inglis --- winsup/cygwin/fhandler/proc.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index cbc49a12a4..be107cb8ea 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -1652,7 +1652,7 @@ format_proc_cpuinfo (void *, char *&destbuf) /* ftcprint (features2, 11, "sev_64b");*//* SEV 64 bit host guest only */ /* ftcprint (features2, 12, "sev_rest_inj"); *//* SEV restricted injection */ /* ftcprint (features2, 13, "sev_alt_inj"); *//* SEV alternate injection */ -/* ftcprint (features2, 14, "sev_es_dbg_swap");*//* SEV-ES debug state swap */ + ftcprint (features2, 14, "debug_swap"); /* SEV-ES full debug state swap */ /* ftcprint (features2, 15, "no_host_ibs"); *//* host IBS unsupported */ /* ftcprint (features2, 16, "vte"); *//* virtual transparent encryption */ } From 1db6fb03e7b78c7201653e55e9eb27d4c2935967 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 22 Jul 2023 21:04:28 +0100 Subject: [PATCH 413/767] Cygwin: CI: Take note of the testsuite status --- .github/workflows/cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 378d1d14ad..9c6f352d2f 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -123,7 +123,7 @@ jobs: export MAKEFLAGS=-j$(nproc) && cd build && (export PATH=${{ matrix.target }}/winsup/testsuite/testinst/bin:${PATH} && cmd /c $(cygpath -wa ${{ matrix.target }}/winsup/cygserver/cygserver) &) && - (cd ${{ matrix.target }}/winsup; make check AM_COLOR_TESTS=always || true) + (cd ${{ matrix.target }}/winsup; make check AM_COLOR_TESTS=always) shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}' # upload test logs to facilitate investigation of problems From e94d3e168ba2e3f05bf75c1b29c2159bf382a6fd Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sat, 22 Jul 2023 14:00:17 +0100 Subject: [PATCH 414/767] Cygwin: CI: Simplify and reduce the number of steps in cross-build job --- .github/workflows/cygwin.yml | 42 ++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 9c6f352d2f..8c8e78a37a 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -22,33 +22,37 @@ jobs: - uses: actions/checkout@v3 # install build tools - - run: dnf install -y autoconf automake make patch perl - - run: dnf install -y mingw${{ matrix.pkgarch }}-gcc-c++ mingw${{ matrix.pkgarch }}-winpthreads-static mingw${{ matrix.pkgarch }}-zlib-static + - name: Install build tools + run: | + dnf install -y autoconf automake make patch perl mingw${{ matrix.pkgarch }}-gcc-c++ mingw${{ matrix.pkgarch }}-winpthreads-static mingw${{ matrix.pkgarch }}-zlib-static # enable 'dnf copr' - - run: dnf install -y dnf-plugins-core - - # cocom isn't packaged in Fedora, so we install from a copr - - run: dnf copr enable -y jturney/cocom - - run: dnf install -y cocom + - name: Enable 'dnf copr' + run: | + dnf install -y dnf-plugins-core # install cross-cygwin toolchain and libs from copr - - run: dnf copr enable -y yselkowitz/cygwin - - run: dnf install -y cygwin${{ matrix.pkgarch }}-gcc-c++ cygwin${{ matrix.pkgarch }}-gettext cygwin${{ matrix.pkgarch }}-libbfd cygwin${{ matrix.pkgarch }}-libiconv cygwin${{ matrix.pkgarch }}-zlib + - name: Install cross-cygwin toolchain and libs and cocom from copr + run: | + dnf copr enable -y yselkowitz/cygwin + dnf install -y cygwin${{ matrix.pkgarch }}-gcc-c++ cygwin${{ matrix.pkgarch }}-gettext cygwin${{ matrix.pkgarch }}-libbfd cygwin${{ matrix.pkgarch }}-libiconv cygwin${{ matrix.pkgarch }}-zlib cocom # install doc tools - - run: dnf install -y dblatex docbook2X docbook-xsl xmlto - - run: dnf install -y python3 python3-lxml python3-ply - - run: fmtutil-sys --byfmt pdflatex && texhash + - name: Install doc tools + run: | + dnf install -y dblatex docbook2X docbook-xsl xmlto python3 python3-lxml python3-ply + fmtutil-sys --byfmt pdflatex && texhash # build - - run: mkdir build install - - run: cd winsup && ./autogen.sh - - run: cd build && ../configure --target=${{ matrix.target }} --prefix=$(realpath $(pwd)/../install) - - run: make -C build - - run: make -C build/*/newlib info man - - run: make -C build install - - run: make -C build/*/newlib install-info install-man + - name: Configure, build and install + run: | + mkdir build install + (cd winsup && ./autogen.sh) + (cd build && ../configure --target=${{ matrix.target }} --prefix=$(realpath $(pwd)/../install) ) + make -C build + make -C build/*/newlib info man + make -C build install + make -C build/*/newlib install-info install-man windows-build: runs-on: windows-latest From 352f051cf9c14b1fac47a61f2f6e5a334ca1802f Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 10 Aug 2023 14:51:37 +0100 Subject: [PATCH 415/767] Cygwin: CI: Add documentation preview deploy step --- .github/workflows/cygwin.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 8c8e78a37a..e92054af80 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -18,6 +18,9 @@ jobs: pkgarch: 64 name: Fedora cross ${{ matrix.target }} + env: + HAS_SSH_KEY: ${{ secrets.SSH_KEY != '' }} + steps: - uses: actions/checkout@v3 @@ -40,7 +43,7 @@ jobs: # install doc tools - name: Install doc tools run: | - dnf install -y dblatex docbook2X docbook-xsl xmlto python3 python3-lxml python3-ply + dnf install -y dblatex docbook2X docbook-xsl xmlto python3 python3-lxml python3-ply openssh-clients fmtutil-sys --byfmt pdflatex && texhash # build @@ -54,6 +57,23 @@ jobs: make -C build install make -C build/*/newlib install-info install-man + # deploy documentation preview + - name: Deploy documentation preview + env: + SSH_AUTH_SOCK: /tmp/ssh_agent.sock + run: | + # unfuck github fuckery of HOME in a container + unset HOME + # add the hosts public key to known_hosts + mkdir -p ~/.ssh/ + echo "cygwin.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKoejTnTCbXaIIMYfbX7t4tYUOQ2bTxZC3e/td3BageF" >> ~/.ssh/known_hosts + # load the key (restricted to scp only) into ssh-agent + ssh-agent -a $SSH_AUTH_SOCK > /dev/null + ssh-add - <<< "${{ secrets.SSH_KEY }}" + # 'make install' doesn't install faq, so instead just deploy from build directory + scp -pr build/*/winsup/doc/{cygwin-api,cygwin-ug-net,faq} cygwin-admin@cygwin.com:/sourceware/www/sourceware/htdocs/cygwin/doc/preview/ + if: env.HAS_SSH_KEY == 'true' && github.ref == 'refs/heads/main' + windows-build: runs-on: windows-latest strategy: From 24b029ba8ea78cee7d94bc736ff4462eb8889f30 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 31 Aug 2023 20:21:56 +0100 Subject: [PATCH 416/767] Cygwin: CI: Also deploy documentation for release tags --- .github/workflows/cygwin.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index e92054af80..be377bb3b1 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -5,6 +5,8 @@ on: # since master is a symbolic reference to main, don't run for both branches-ignore: - 'master' + tags: + - '*' jobs: fedora-build: @@ -57,11 +59,25 @@ jobs: make -C build install make -C build/*/newlib install-info install-man - # deploy documentation preview - - name: Deploy documentation preview + # deploy documentation + - name: Deploy documentation env: SSH_AUTH_SOCK: /tmp/ssh_agent.sock run: | + # pushes to main are deployed as preview + # pushes to cygwin-n.n.n (but not 'cygwin-n.n.n.dev') tags are deployed as stable + # other references are ignored by this step + case "${{ github.ref }}" in + refs/heads/main) + DEST='preview' + ;; + refs/tags/cygwin-[0-9.]*) + DEST='stable' + ;; + *) + exit 0 + ;; + esac # unfuck github fuckery of HOME in a container unset HOME # add the hosts public key to known_hosts @@ -71,8 +87,8 @@ jobs: ssh-agent -a $SSH_AUTH_SOCK > /dev/null ssh-add - <<< "${{ secrets.SSH_KEY }}" # 'make install' doesn't install faq, so instead just deploy from build directory - scp -pr build/*/winsup/doc/{cygwin-api,cygwin-ug-net,faq} cygwin-admin@cygwin.com:/sourceware/www/sourceware/htdocs/cygwin/doc/preview/ - if: env.HAS_SSH_KEY == 'true' && github.ref == 'refs/heads/main' + scp -pr build/*/winsup/doc/{cygwin-api,cygwin-ug-net,faq} cygwin-admin@cygwin.com:/sourceware/www/sourceware/htdocs/cygwin/doc/${DEST}/ + if: env.HAS_SSH_KEY == 'true' windows-build: runs-on: windows-latest From 622fb0776ea333dd708ff312f08ec98311138fbe Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 26 Aug 2023 15:41:18 +0200 Subject: [PATCH 417/767] Cygwin: enable usage of FIFOs on NFS FIFOs on NFS were never recogized as such in path handling. stat(2) indicated native FIFOs as FIFOs but the path handling code didn't set the matching values in the inner symlink checking code, so the followup behaviour was wrong. Basically for the same reason, Cygwin-created FIFOs were just treated as symlinks with weird content by stat(2) as well as path handling. Add code to enable both types of FIFOs on NFS as Cygwin FIFOs. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 22 +++++++++++------ winsup/cygwin/path.cc | 38 ++++++++++++++++++++++++++--- 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 19c976aaae..94f7ef5667 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -210,13 +210,14 @@ fhandler_base::fstat_by_nfs_ea (struct stat *buf) cyg_ldap cldap; bool ldap_open = false; - if (get_handle ()) + /* NFS stumbles over its own caching. If you write to the file, + a subsequent fstat does not return the actual size of the file, + but the size at the time the handle has been opened. Unless + access through another handle invalidates the caching within the + NFS client. Skip this for Cygwin-created Symlinks playing FIFOs + (this sets the filler1 member to NF3FIFO). */ + if (get_handle () && nfs_attr->filler1 != NF3FIFO) { - /* NFS stumbles over its own caching. If you write to the file, - a subsequent fstat does not return the actual size of the file, - but the size at the time the handle has been opened. Unless - access through another handle invalidates the caching within the - NFS client. */ if (get_access () & GENERIC_WRITE) FlushFileBuffers (get_handle ()); pc.get_finfo (get_handle ()); @@ -357,8 +358,13 @@ fhandler_base::fstat_fs (struct stat *buf) if (get_stat_handle ()) { - if (!nohandle () && (!is_fs_special () || get_flags () & O_PATH)) - res = pc.fs_is_nfs () ? fstat_by_nfs_ea (buf) : fstat_by_handle (buf); + if (!nohandle ()) + { + if (pc.fs_is_nfs ()) + res = fstat_by_nfs_ea (buf); + else if (!is_fs_special () || get_flags () & O_PATH) + res = fstat_by_handle (buf); + } if (res) res = fstat_by_name (buf); return res; diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 37e46c08ba..c631fa8869 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3513,11 +3513,41 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, } /* If the file is on an NFS share and could be opened with extended - attributes, check if it's a symlink. Only files can be symlinks - (which can be symlinks to directories). */ - else if (fs.is_nfs () && (conv_hdl.nfsattr ()->type & 7) == NF3LNK) + attributes, check if it's a symlink or FIFO. */ + else if (fs.is_nfs ()) { - res = check_nfs_symlink (h); + /* Make sure filler1 is 0, so we can use it safely as a marker. */ + conv_hdl.nfsattr ()->filler1 = 0; + switch (conv_hdl.nfsattr ()->type & 7) + { + case NF3LNK: + res = check_nfs_symlink (h); + /* Enable Cygwin-created FIFOs to be recognized as FIFOs. + We have to overwrite the NFS fattr3 data, otherwise the + info returned by Cygwin's stat will still claim the file + is a symlink. */ + if (res && contents[0] == ':' && contents[1] == '\\' + && parse_device (contents) && major == _major (FH_FIFO)) + { + conv_hdl.nfsattr ()->type = NF3FIFO; + conv_hdl.nfsattr ()->mode = mode; + conv_hdl.nfsattr ()->size = 0; + /* Marker for fhandler_base::fstat_by_nfs_ea not to override + the cached fattr3 data with fresh data from the filesystem, + even if the handle is used for other purposes than stat. */ + conv_hdl.nfsattr ()->filler1 = NF3FIFO; + } + break; + case NF3FIFO: + /* Enable real FIFOs recognized as such. */ + major = _major (FH_FIFO); + minor = _minor (FH_FIFO); + mode = S_IFIFO | (conv_hdl.nfsattr ()->mode & ~S_IFMT); + isdevice = true; + break; + default: + break; + } if (res) break; } From 46e986f0e470939697f73a389e5e043a0a99425c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 26 Aug 2023 15:42:33 +0200 Subject: [PATCH 418/767] Revert "Cygwin: mknod: disable creating special files on NFS" This reverts commit d085592daa5f89ccc9f5b86b2ca26199e7516d61. This reenables creating Cygwin FIFOs on NFS. Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 6 ------ 1 file changed, 6 deletions(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 52b9c9a8be..e4b3dd2f3c 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3294,12 +3294,6 @@ mknod (const char *path, mode_t mode, dev_t dev) __leave; } - if (w32path.fs_is_nfs ()) - { - set_errno (EPERM); - __leave; - } - return mknod_worker (w32path, mode, major, minor); } __except (EFAULT) From 2ab2e73c2c9602de98e218525d30149f0fb109ee Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 26 Aug 2023 16:59:18 +0200 Subject: [PATCH 419/767] Cygwin: document FIFO over NFS change Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 2 ++ winsup/doc/new-features.xml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index cdb175797c..dbbf8009d4 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -39,3 +39,5 @@ What changed: - posix_spawnp no longer falls back to starting the shell for unrecognized files as execvp. For the reasoning, see https://www.austingroupbugs.net/view.php?id=1674 + +- FIFOs now also work over NFS. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 98ca7f595c..78b2dbafdc 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -58,6 +58,10 @@ posix_spawn_file_actions_addfchdir_np. New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. + +FIFOs now also work over NFS. + + From 2654a5ba76de97f5211aa033fb1c7223a127e1b9 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 5 Sep 2023 16:59:51 +0900 Subject: [PATCH 420/767] Cygwin: dps: Fix a bug that read() could not return -1 on error. --- winsup/cygwin/fhandler/dsp.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 8e51a51c59..e872aa08c0 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1192,7 +1192,9 @@ fhandler_dev_dsp::_read (void *ptr, size_t& len) return; } - audio_in_->read ((char *)ptr, (int&)len); + int res = len; + audio_in_->read ((char *)ptr, res); + len = (size_t)res; } void From 8b2b54b41da605e69a4f30919f24f7a7254d9314 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 5 Sep 2023 17:11:13 +0900 Subject: [PATCH 421/767] Cygwin: dsp: Reduce wait time for blocking read(). Previous wait time of 100msec is too long if application specifies smaller buffer. With this patch, the wait time is reduced to 1msec. --- winsup/cygwin/fhandler/dsp.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index e872aa08c0..00f2bab690 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -931,8 +931,8 @@ fhandler_dev_dsp::Audio_in::waitfordata () set_errno (EAGAIN); return false; } - debug_printf ("100ms"); - switch (cygwait (100)) + debug_printf ("1ms"); + switch (cygwait (1)) { case WAIT_SIGNALED: if (!_my_tls.call_signal_handler ()) From 7a43763d24ab693502b0d0b1323d8cba1123e59a Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 5 Sep 2023 17:12:59 +0900 Subject: [PATCH 422/767] Cygwin: dsp: Fix trivial editorial issue. --- winsup/cygwin/fhandler/dsp.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 00f2bab690..8614433525 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1029,7 +1029,7 @@ fhandler_dev_dsp::write (const void *ptr, size_t len) void fhandler_dev_dsp::read (void *ptr, size_t& len) { - return base ()->_read (ptr, len); + base ()->_read (ptr, len); } int From 2c06014f12b0231e40d4256ae5f0d16a4b21be48 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 6 Sep 2023 22:03:18 +0900 Subject: [PATCH 423/767] Cygwin: dsp: Implement select()/poll(). Previously, sound device /dev/dsp did not support select()/poll(). These have been implemented with this patch. Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 38 +++++++ winsup/cygwin/local_includes/fhandler.h | 11 ++ winsup/cygwin/local_includes/select.h | 9 +- winsup/cygwin/select.cc | 130 ++++++++++++++++++++++++ 4 files changed, 187 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 8614433525..f1634f7a88 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1483,3 +1483,41 @@ fhandler_dev_dsp::_fixup_after_exec () audio_out_ = NULL; } } + +bool +fhandler_dev_dsp::_write_ready () +{ + audio_buf_info info; + if (audio_out_) + { + audio_out_->buf_info (&info, audiofreq_, audiobits_, audiochannels_); + return info.bytes > 0; + } + else + return true; +} + +bool +fhandler_dev_dsp::_read_ready () +{ + audio_buf_info info; + if (audio_in_) + { + audio_in_->buf_info (&info, audiofreq_, audiobits_, audiochannels_); + return info.bytes > 0; + } + else + return true; +} + +bool +fhandler_dev_dsp::write_ready () +{ + return base ()->_write_ready (); +} + +bool +fhandler_dev_dsp::read_ready () +{ + return base ()->_read_ready (); +} diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index f2658a2424..d7dc02e89e 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2847,6 +2847,9 @@ class fhandler_dev_dsp: public fhandler_base void close_audio_in (); void close_audio_out (bool = false); + bool _read_ready(); + bool _write_ready(); + public: bool use_archetype () const {return true;} @@ -2866,6 +2869,14 @@ class fhandler_dev_dsp: public fhandler_base fh->copy_from (this); return fh; } + + /* select.cc */ + select_record *select_read (select_stuff *); + select_record *select_write (select_stuff *); + select_record *select_except (select_stuff *); + + bool read_ready(); + bool write_ready(); }; class fhandler_virtual : public fhandler_base diff --git a/winsup/cygwin/local_includes/select.h b/winsup/cygwin/local_includes/select.h index b794690b6c..4e202128fe 100644 --- a/winsup/cygwin/local_includes/select.h +++ b/winsup/cygwin/local_includes/select.h @@ -87,6 +87,11 @@ struct select_socket_info: public select_info select_socket_info (): select_info (), num_w4 (0), ser_num (0), w4 (NULL) {} }; +struct select_dsp_info: public select_info +{ + select_dsp_info (): select_info () {} +}; + class select_stuff { public: @@ -112,6 +117,7 @@ class select_stuff select_pipe_info *device_specific_ptys; select_fifo_info *device_specific_fifo; select_socket_info *device_specific_socket; + select_dsp_info *device_specific_dsp; bool test_and_set (int, fd_set *, fd_set *, fd_set *); int poll (fd_set *, fd_set *, fd_set *); @@ -125,7 +131,8 @@ class select_stuff device_specific_pipe (NULL), device_specific_ptys (NULL), device_specific_fifo (NULL), - device_specific_socket (NULL) + device_specific_socket (NULL), + device_specific_dsp (NULL) {} }; diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index bad4c37f3b..3ad12c2627 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -2255,3 +2255,133 @@ fhandler_timerfd::select_except (select_stuff *stuff) s->except_ready = false; return s; } + +static int +peek_dsp (select_record *s, bool from_select) +{ + int gotone = 0; + fhandler_dev_dsp *fh = (fhandler_dev_dsp *)(fhandler_base *) s->fh; + + if (s->read_selected) + if (s->read_ready || fh->read_ready ()) + gotone += s->read_ready = true; + if (s->write_selected) + if (s->write_ready || fh->write_ready ()) + gotone += s->write_ready = true; + return gotone; +} + +static int start_thread_dsp (select_record *me, select_stuff *stuff); + +static DWORD +thread_dsp (void *arg) +{ + select_dsp_info *di = (select_dsp_info *) arg; + DWORD sleep_time = 0; + bool looping = true; + + while (looping) + { + for (select_record *s = di->start; (s = s->next); ) + if (s->startup == start_thread_dsp) + { + if (peek_dsp (s, true)) + looping = false; + if (di->stop_thread) + { + select_printf ("stopping"); + looping = false; + break; + } + } + if (!looping) + break; + cygwait (sleep_time >> 3); + if (sleep_time < 80) + ++sleep_time; + if (di->stop_thread) + break; + } + return 0; +} + +static int +start_thread_dsp (select_record *me, select_stuff *stuff) +{ + select_dsp_info *di = stuff->device_specific_dsp; + if (di->start) + me->h = *((select_dsp_info *) stuff->device_specific_dsp)->thread; + else + { + di->start = &stuff->start; + di->stop_thread = false; + di->thread = new cygthread (thread_dsp, di, "dspsel"); + me->h = *di->thread; + if (!me->h) + return 0; + } + return 1; +} + +static void +dsp_cleanup (select_record *aaa, select_stuff *stuff) +{ + select_dsp_info *di = (select_dsp_info *) stuff->device_specific_dsp; + if (!di) + return; + if (di->thread) + { + di->stop_thread = true; + di->thread->detach (); + } + delete di; + stuff->device_specific_dsp = NULL; +} + +select_record * +fhandler_dev_dsp::select_read (select_stuff *stuff) +{ + if (!stuff->device_specific_dsp + && (stuff->device_specific_dsp = new select_dsp_info) == NULL) + return NULL; + select_record *s = stuff->start.next; + s->startup = start_thread_dsp; + s->peek = peek_dsp; + s->verify = verify_ok; + s->cleanup = dsp_cleanup; + s->read_selected = true; + s->read_ready = false; + return s; +} + +select_record * +fhandler_dev_dsp::select_write (select_stuff *stuff) +{ + if (!stuff->device_specific_dsp + && (stuff->device_specific_dsp = new select_dsp_info) == NULL) + return NULL; + select_record *s = stuff->start.next; + s->startup = start_thread_dsp; + s->peek = peek_dsp; + s->verify = verify_ok; + s->cleanup = dsp_cleanup; + s->write_selected = true; + s->write_ready = false; + return s; +} + +select_record * +fhandler_dev_dsp::select_except (select_stuff *stuff) +{ + if (!stuff->device_specific_dsp + && (stuff->device_specific_dsp = new select_dsp_info) == NULL) + return NULL; + select_record *s = stuff->start.next; + s->startup = start_thread_dsp; + s->peek = peek_dsp; + s->verify = verify_ok; + s->cleanup = dsp_cleanup; + s->except_selected = true; + s->except_ready = false; + return s; +} From 7ced682549ae718db29121013c84ce8057bc3509 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 7 Sep 2023 17:35:25 +0900 Subject: [PATCH 424/767] Cygwin: dsp: Improve response time of select()/poll(). With this patch, the response time of select()/poll() has been improved by utilizing semaphore (select_sem) just like pipe and fifo. In addition, notification of exceptional conditions has been added. Fixes: 2c06014f12b0 ("Cygwin: dsp: Implement select()/poll().") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 11 ++++++++++- winsup/cygwin/local_includes/fhandler.h | 5 +++-- winsup/cygwin/select.cc | 16 ++++++++++++++-- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index f1634f7a88..5f78821d4a 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -536,6 +536,8 @@ inline void fhandler_dev_dsp::Audio_out::callback_sampledone (WAVEHDR *pHdr) { Qisr2app_->send (pHdr); + ReleaseSemaphore (fh->get_select_sem (), + get_obj_handle_count (fh->get_select_sem ()) - 1, NULL); } bool @@ -994,6 +996,8 @@ inline void fhandler_dev_dsp::Audio_in::callback_blockfull (WAVEHDR *pHdr) { Qisr2app_->send (pHdr); + ReleaseSemaphore (fh->get_select_sem (), + get_obj_handle_count (fh->get_select_sem ()) - 1, NULL); } static void CALLBACK @@ -1058,7 +1062,7 @@ fhandler_dev_dsp::fixup_after_exec () int -fhandler_dev_dsp::open (int flags, mode_t) +fhandler_dev_dsp::open (int flags, mode_t mode) { int ret = -1, err = 0; UINT num_in = 0, num_out = 0; @@ -1093,6 +1097,8 @@ fhandler_dev_dsp::open (int flags, mode_t) else ret = open_null (flags); + select_sem = CreateSemaphore (sec_none_cloexec (mode), 0, INT32_MAX, NULL); + debug_printf ("ACCMODE=%y audio_in=%d audio_out=%d, err=%d, ret=%d", flags & O_ACCMODE, num_in, num_out, err, ret); if (ret >= 0) @@ -1226,6 +1232,9 @@ fhandler_dev_dsp::close () being_closed = true; close_audio_in (); close_audio_out (); + ReleaseSemaphore (select_sem, get_obj_handle_count (select_sem) - 1, NULL); + CloseHandle (select_sem); + select_sem = NULL; return fhandler_base::close (); } diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index d7dc02e89e..212c22344c 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2875,8 +2875,9 @@ class fhandler_dev_dsp: public fhandler_base select_record *select_write (select_stuff *); select_record *select_except (select_stuff *); - bool read_ready(); - bool write_ready(); + bool read_ready (); + bool write_ready (); + bool is_closed () { return being_closed; }; }; class fhandler_virtual : public fhandler_base diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 3ad12c2627..725aab90c7 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -2268,6 +2268,9 @@ peek_dsp (select_record *s, bool from_select) if (s->write_selected) if (s->write_ready || fh->write_ready ()) gotone += s->write_ready = true; + if (s->except_selected) + if (s->except_ready || fh->is_closed ()) + gotone += s->except_ready = true; return gotone; } @@ -2296,7 +2299,7 @@ thread_dsp (void *arg) } if (!looping) break; - cygwait (sleep_time >> 3); + cygwait (di->bye, sleep_time >> 3); if (sleep_time < 80) ++sleep_time; if (di->stop_thread) @@ -2313,6 +2316,13 @@ start_thread_dsp (select_record *me, select_stuff *stuff) me->h = *((select_dsp_info *) stuff->device_specific_dsp)->thread; else { + di->bye = me->fh->get_select_sem (); + if (di->bye) + DuplicateHandle (GetCurrentProcess (), di->bye, + GetCurrentProcess (), &di->bye, + 0, 0, DUPLICATE_SAME_ACCESS); + else + di->bye = CreateSemaphore (&sec_none_nih, 0, INT32_MAX, NULL); di->start = &stuff->start; di->stop_thread = false; di->thread = new cygthread (thread_dsp, di, "dspsel"); @@ -2324,7 +2334,7 @@ start_thread_dsp (select_record *me, select_stuff *stuff) } static void -dsp_cleanup (select_record *aaa, select_stuff *stuff) +dsp_cleanup (select_record *, select_stuff *stuff) { select_dsp_info *di = (select_dsp_info *) stuff->device_specific_dsp; if (!di) @@ -2332,7 +2342,9 @@ dsp_cleanup (select_record *aaa, select_stuff *stuff) if (di->thread) { di->stop_thread = true; + ReleaseSemaphore (di->bye, get_obj_handle_count (di->bye), NULL); di->thread->detach (); + CloseHandle (di->bye); } delete di; stuff->device_specific_dsp = NULL; From 53472e1803808d5fb91029f4c26c86989c62c82c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 8 Sep 2023 22:34:52 +0200 Subject: [PATCH 425/767] Cygwin: unlink_nt: declare in winsup.h unlink_nt is used more than once so declare it in a header. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 2 -- winsup/cygwin/forkable.cc | 4 ---- winsup/cygwin/local_includes/winsup.h | 2 ++ 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 94f7ef5667..d59cde78b5 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -1842,8 +1842,6 @@ fhandler_disk_file::mkdir (mode_t mode) int fhandler_disk_file::rmdir () { - extern NTSTATUS unlink_nt (path_conv &pc, bool sharable); - if (!pc.isdir ()) { set_errno (ENOTDIR); diff --git a/winsup/cygwin/forkable.cc b/winsup/cygwin/forkable.cc index c69c8bea9e..cd317a1ae0 100644 --- a/winsup/cygwin/forkable.cc +++ b/winsup/cygwin/forkable.cc @@ -27,10 +27,6 @@ details. */ #include #include -/* Allow concurrent processes to use the same dll or exe - * via their hardlink while we delete our hardlink. */ -extern NTSTATUS unlink_nt (path_conv &pc, bool sharable); - #define MUTEXSEP L"@" #define PATHSEP L"\\" diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index c9788de8f0..bf0a0bcc3f 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -225,6 +225,8 @@ class path_conv; int stat_worker (path_conv &pc, struct stat *buf); +NTSTATUS unlink_nt (path_conv &pc, bool sharable); + ino_t readdir_get_ino (const char *path, bool dot_dot); /* mmap functions. */ From bedefff9e25b6b2bdc13e0268a437f82dc4b4798 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 8 Sep 2023 22:38:53 +0200 Subject: [PATCH 426/767] Cygwin: fix chmod on native NFS FIFOs By handling native NFS FIFOs as actual FIFOs, chmod on a FIFO suddenly called fhandler_base::fchmod, which is insufficient to handle FIFO files on any filesystem. Note that this does not fix Cygwin FIFOs on NFS or AFS yet. Fixes: 622fb0776ea3 ("Cygwin: enable usage of FIFOs on NFS") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 10 ++++++++-- winsup/cygwin/fhandler/disk_file.cc | 5 ++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index 3d348b5159..6163df2914 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -613,7 +613,10 @@ fhandler_base::open (int flags, mode_t mode) options |= FILE_OPEN_REPARSE_POINT; } - if (get_device () == FH_FS) + /* If the file is a FIFO, open has been called for an operation on the file + constituting the FIFO, e. g., chmod or statvfs. Handle it like a normal + file. Eespecially the access flags have to be set correctly. */ + if (get_device () == FH_FS || get_device () == FH_FIFO) { /* O_TMPFILE files are created with delete-on-close semantics, as well as with FILE_ATTRIBUTE_TEMPORARY. The latter speeds up file access, @@ -1710,7 +1713,10 @@ int fhandler_base::fchmod (mode_t mode) { if (pc.is_fs_special ()) - return chmod_device (pc, mode); + { + fhandler_disk_file fh (pc); + return fh.fchmod (mode); + } /* By default, just succeeds. */ return 0; } diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index d59cde78b5..4f373637e5 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -715,7 +715,10 @@ fhandler_disk_file::fchmod (mode_t mode) NTSTATUS status; IO_STATUS_BLOCK io; - if (pc.is_fs_special ()) + if (pc.is_fs_special () + /* For NFS, only handle Cygwin FIFOs specially. Changing mode of + native FIFOs will work with the default code below. */ + && (!pc.fs_is_nfs () || pc.nfsattr ()->filler1 == NF3FIFO)) return chmod_device (pc, mode); if (!get_handle ()) From c5913771a641ec54308ef5054837198be2a6fd63 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 8 Sep 2023 22:41:21 +0200 Subject: [PATCH 427/767] Cygwin: fix an ugly cast fhandler_base::fchown casts any fhandler landing here to a fhandler_disk_file. That's ugly and dangerous. Duplicate the path_conv info into an explicitly create fhandler_disk_file instead and call fchmod on that. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index 6163df2914..cdef01a2da 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1725,7 +1725,10 @@ int fhandler_base::fchown (uid_t uid, gid_t gid) { if (pc.is_fs_special ()) - return ((fhandler_disk_file *) this)->fhandler_disk_file::fchown (uid, gid); + { + fhandler_disk_file fh (pc); + return fh.fchown (uid, gid); + } /* By default, just succeeds. */ return 0; } From 003fc339425b28283f86a05cdb9cbfb194167222 Mon Sep 17 00:00:00 2001 From: Mark Geisert Date: Thu, 7 Sep 2023 22:36:39 -0700 Subject: [PATCH 428/767] Cygwin: Fix __cpuset_zero_s prototype Add a missing "void" to the prototype for __cpuset_zero_s(). Reported-by: Marco Mason Addresses: https://cygwin.com/pipermail/cygwin/2023-September/254423.html Signed-off-by: Mark Geisert Fixes: c6cfc99648d6 (Cygwin: sys/cpuset.h: add cpuset-specific external functions) --- winsup/cygwin/include/sys/cpuset.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/sys/cpuset.h b/winsup/cygwin/include/sys/cpuset.h index a5a8fa81ef..3d0874880b 100644 --- a/winsup/cygwin/include/sys/cpuset.h +++ b/winsup/cygwin/include/sys/cpuset.h @@ -48,7 +48,7 @@ void __cpuset_free (cpu_set_t *); /* These _S macros operate on dynamically-sized cpu sets of size 'siz' bytes */ #define CPU_ZERO_S(siz, set) __cpuset_zero_s (siz, set) -static __inline +static __inline void __cpuset_zero_s (__size_t siz, cpu_set_t *set) { #if __GNUC_PREREQ (2, 91) From 27e8815535fc7e6a9ed204323682f22be02946a5 Mon Sep 17 00:00:00 2001 From: Mark Geisert Date: Fri, 8 Sep 2023 23:48:30 -0700 Subject: [PATCH 429/767] Cygwin: Add relnote to 3.4.10 release file Document the most recent update to include/sys/cpuset.h. --- winsup/cygwin/release/3.4.10 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 winsup/cygwin/release/3.4.10 diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 new file mode 100644 index 0000000000..f34b131b32 --- /dev/null +++ b/winsup/cygwin/release/3.4.10 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +- Fix missing term in __cpuset_zero_s() prototoype in sys/cpuset.h. + Addresses: https://cygwin.com/pipermail/cygwin/2023-September/254423.html From 5302638f77398978cd5403e00925d8f482442c84 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 9 Sep 2023 23:05:29 +0200 Subject: [PATCH 430/767] Cygwin: readdir: explain why we use FileNamesInformation on NFS Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 4f373637e5..0242cae2fd 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -2262,6 +2262,8 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de) goto go_ahead; } } + /* NFS must use FileNamesInformation! Any other information class + skips all symlinks. */ if (!(dir->__flags & dirent_get_d_ino)) status = NtQueryDirectoryFile (get_handle (), NULL, NULL, NULL, &io, d_cache (dir), DIR_BUF_SIZE, From 8a953be5ef761d4c5cc0572eab3da2cb34b0474b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 9 Sep 2023 23:10:43 +0200 Subject: [PATCH 431/767] Cygwin: NFS: fetch actual DOS attributes MSFT NFSv3 fakes DOS attributes based on file type and permissions. Rather than just faking FILE_ATTRIBUTE_DIRECTORY for dirs, fetch the "real" DOS attributes returned by NFS. This allows to handle the "R/O" attribute on shortcut files and thus reading and creating device shortcut files on NFS. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/path.h | 10 ++++++++-- winsup/cygwin/path.cc | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/local_includes/path.h b/winsup/cygwin/local_includes/path.h index 74f831e53f..c7f113f874 100644 --- a/winsup/cygwin/local_includes/path.h +++ b/winsup/cygwin/local_includes/path.h @@ -125,10 +125,16 @@ class path_conv_handle return nfs ? nfsattr ()->fileid : fai ()->InternalInformation.IndexNumber.QuadPart; } - inline DWORD get_dosattr (bool nfs) const + inline DWORD get_dosattr (HANDLE h, bool nfs) const { if (nfs) - return (nfsattr ()->type & 7) == NF3DIR ? FILE_ATTRIBUTE_DIRECTORY : 0; + { + IO_STATUS_BLOCK io; + FILE_BASIC_INFORMATION fbi; + + NtQueryInformationFile (h, &io, &fbi, sizeof fbi, FileBasicInformation); + return fbi.FileAttributes; + } return fai ()->BasicInformation.FileAttributes; } }; diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index c631fa8869..6cf6e02ca8 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3259,7 +3259,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, { status = conv_hdl.get_finfo (h, fs.is_nfs ()); if (NT_SUCCESS (status)) - fileattr = conv_hdl.get_dosattr (fs.is_nfs ()); + fileattr = conv_hdl.get_dosattr (h, fs.is_nfs ()); } if (!NT_SUCCESS (status)) { From c0aa6ac30ec483ad6da6af701625e7aea7536663 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 9 Sep 2023 23:23:52 +0200 Subject: [PATCH 432/767] Cygwin: NFS: create devices (especially FIFOs) as shortcut files Creating real NFS symlinks for device files has a major downside: The way we store device info requires to change the symlink target in case of calling chmod(2). This falls flat in two ways: - It requires to remove and recreate the symlink, so it doesn't exist for a short period of time, and - removing fails badly if there's another open handle to the symlink. Therefore, change this to create FIFOs as shortcut files, just as on most other filesystems. Make sure to recognize these new shortcuts on NFS (for devices only) in path handling and readdir. Fixes: 622fb0776ea3 ("Cygwin: enable usage of FIFOs on NFS") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 18 +++++++++++++++--- winsup/cygwin/path.cc | 12 +++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 0242cae2fd..245e9bb75d 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -2348,9 +2348,11 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de) And, since some filesystems choke on the EAs, we don't use them unconditionally. */ f_status = (dir->__flags & dirent_nfs_d_ino) - ? NtCreateFile (&hdl, READ_CONTROL, &attr, &io, - NULL, 0, FILE_SHARE_VALID_FLAGS, - FILE_OPEN, FILE_OPEN_FOR_BACKUP_INTENT, + ? NtCreateFile (&hdl, + READ_CONTROL | FILE_READ_ATTRIBUTES, + &attr, &io, NULL, 0, + FILE_SHARE_VALID_FLAGS, FILE_OPEN, + FILE_OPEN_FOR_BACKUP_INTENT, &nfs_aol_ffei, sizeof nfs_aol_ffei) : NtOpenFile (&hdl, READ_CONTROL, &attr, &io, FILE_SHARE_VALID_FLAGS, @@ -2364,6 +2366,16 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de) FILE_INTERNAL_INFORMATION fii; f_status = NtQueryInformationFile (hdl, &io, &fii, sizeof fii, FileInternalInformation); + /* On NFS fetch the (faked, but useful) DOS attribute. + We need it to recognize shortcut FIFOs. */ + if ((dir->__flags & dirent_nfs_d_ino)) + { + FILE_BASIC_INFORMATION fbi; + + if (NT_SUCCESS (NtQueryInformationFile (hdl, &io, &fbi, + sizeof fbi, FileBasicInformation))) + FileAttributes = fbi.FileAttributes; + } NtClose (hdl); if (NT_SUCCESS (f_status)) { diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 6cf6e02ca8..0c9d3921a0 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2005,7 +2005,7 @@ symlink_worker (const char *oldpath, path_conv &win32_newpath, bool isdevice) variable. Device files are always shortcuts. */ wsym_type = isdevice ? WSYM_lnk : allow_winsymlinks; /* NFS has its own, dedicated way to create symlinks. */ - if (win32_newpath.fs_is_nfs ()) + if (win32_newpath.fs_is_nfs () && !isdevice) wsym_type = WSYM_nfs; /* MVFS doesn't handle the SYSTEM DOS attribute, but it handles the R/O attribute. Therefore we create symlinks on MVFS always as shortcuts. */ @@ -3477,6 +3477,16 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, else if (contents[0] != ':' || contents[1] != '\\' || !parse_device (contents)) break; + if (fs.is_nfs () && major == _major (FH_FIFO)) + { + conv_hdl.nfsattr ()->type = NF3FIFO; + conv_hdl.nfsattr ()->mode = mode; + conv_hdl.nfsattr ()->size = 0; + /* Marker for fhandler_base::fstat_by_nfs_ea not to override + the cached fattr3 data with fresh data from the filesystem, + even if the handle is used for other purposes than stat. */ + conv_hdl.nfsattr ()->filler1 = NF3FIFO; + } } /* If searching for `foo' and then finding a `foo.lnk' which is From 5bbe0e56c617fbdf608d416592b6609af0e73211 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 9 Sep 2023 23:26:21 +0200 Subject: [PATCH 433/767] Cygwin: NFS: remove recognizing native symlinks as FIFOs Given the downsides of NFS symlinks as FIFOs, drop the code added to recognize them as such. Fixes: 622fb0776ea3 ("Cygwin: enable usage of FIFOs on NFS") Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 0c9d3921a0..1c3583d763 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3532,21 +3532,6 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, { case NF3LNK: res = check_nfs_symlink (h); - /* Enable Cygwin-created FIFOs to be recognized as FIFOs. - We have to overwrite the NFS fattr3 data, otherwise the - info returned by Cygwin's stat will still claim the file - is a symlink. */ - if (res && contents[0] == ':' && contents[1] == '\\' - && parse_device (contents) && major == _major (FH_FIFO)) - { - conv_hdl.nfsattr ()->type = NF3FIFO; - conv_hdl.nfsattr ()->mode = mode; - conv_hdl.nfsattr ()->size = 0; - /* Marker for fhandler_base::fstat_by_nfs_ea not to override - the cached fattr3 data with fresh data from the filesystem, - even if the handle is used for other purposes than stat. */ - conv_hdl.nfsattr ()->filler1 = NF3FIFO; - } break; case NF3FIFO: /* Enable real FIFOs recognized as such. */ From f5e37b93a02508e79fbeceaa7b45b1febd44b233 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Tue, 5 Sep 2023 18:32:49 +0200 Subject: [PATCH 434/767] Cygwin: Add initial support for SOURCE_DATE_EPOCH If specified, set version timestamp to this value. Enable deterministic archives for ar and ranlib. Set cygwin1.dll PE and export table header timestamps to zero. Signed-off-by: Christian Franke --- winsup/cygwin/Makefile.am | 6 ++++++ winsup/cygwin/scripts/mkimport | 6 +++++- winsup/cygwin/scripts/mkvers.sh | 4 ++-- winsup/cygwin/scripts/speclib | 6 +++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 9912b53996..64b252a226 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -572,6 +572,10 @@ toollib_DATA = \ libgmon_a_SOURCES = $(GMON_FILES) libgmon_a_LIBADD = +# Enable deterministic archives for reproducible builds. +ARFLAGS = cr$${SOURCE_DATE_EPOCH:+D} +override RANLIB := $(RANLIB)$${SOURCE_DATE_EPOCH:+ -D} + # cygserver library cygserver_blddir = ${target_builddir}/winsup/cygserver LIBSERVER = $(cygserver_blddir)/libcygserver.a @@ -589,12 +593,14 @@ $(LDSCRIPT): $(LDSCRIPT).in $(AM_V_GEN)$(CC) -E - -P < $^ -o $@ # cygwin dll +# Set PE and export table header timestamps to zero for reproducible builds. $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libm.a $(newlib_build)/libc.a $(AM_V_CXXLD)$(CXX) $(CXXFLAGS) \ -mno-use-libstdc-wrappers \ -Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) \ -Wl,--dynamicbase -static \ + $${SOURCE_DATE_EPOCH:+-Wl,--no-insert-timestamp} \ -Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \ -e @DLL_ENTRY@ $(DEF_FILE) \ -Wl,-whole-archive libdll.a -Wl,-no-whole-archive \ diff --git a/winsup/cygwin/scripts/mkimport b/winsup/cygwin/scripts/mkimport index 7684a8f0e6..9517c4e9e1 100755 --- a/winsup/cygwin/scripts/mkimport +++ b/winsup/cygwin/scripts/mkimport @@ -92,8 +92,12 @@ for my $f (keys %text) { } } +# Enable deterministic archives for reproducible builds. +my $opts = 'crs'; +$opts .= 'D' if ($ENV{'SOURCE_DATE_EPOCH'} != ''); + unlink $libdll; -system $ar, 'crus', $libdll, glob('*.o'), @ARGV; +system $ar, $opts, $libdll, glob('*.o'), @ARGV; unlink glob('*.o'); exit 1 if $?; diff --git a/winsup/cygwin/scripts/mkvers.sh b/winsup/cygwin/scripts/mkvers.sh index 96af936ec2..38f439cd0d 100755 --- a/winsup/cygwin/scripts/mkvers.sh +++ b/winsup/cygwin/scripts/mkvers.sh @@ -56,9 +56,9 @@ parse_preproc_flags $CC # -# Load the current date so we can work on individual fields +# Load the current date (or SOURCE_DATE_EPOCH) so we can work on individual fields # -set -$- $(date -u +"%m %d %Y %H:%M") +set -$- $(date ${SOURCE_DATE_EPOCH:+-d @}${SOURCE_DATE_EPOCH} -u +"%m %d %Y %H:%M") m=$1 d=$2 y=$3 hhmm=$4 # # Set date into YYYY-MM-DD HH:MM:SS format diff --git a/winsup/cygwin/scripts/speclib b/winsup/cygwin/scripts/speclib index e6d4d8e948..41a3a8e139 100755 --- a/winsup/cygwin/scripts/speclib +++ b/winsup/cygwin/scripts/speclib @@ -74,7 +74,11 @@ EOF close $as_fd or exit 1; system $objcopy, '-j', '.idata$7', $iname_o; -$res = system $ar, 'crus', $lib, sort keys %extract; +# Enable deterministic archives for reproducible builds. +my $opts = 'crs'; +$opts .= 'D' if ($ENV{'SOURCE_DATE_EPOCH'} != ''); + +$res = system $ar, $opts, $lib, sort keys %extract; unlink keys %extract; die "$0: ar creation of $lib exited with non-zero status\n" if $res; exit 0; From 766f1beb4de3d75f3b6d25dcc9b41dc8b4a002e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pekka=20Sepp=C3=A4nen?= Date: Wed, 30 Aug 2023 12:16:26 +0300 Subject: [PATCH 435/767] Reentrancy, use _REENT_ERRNO() Use _REENT_ERRNO() macro to access errno. This encapsulation is required, as errno might be either _errno member of struct _reent, _tls_errno or any such implementation detail. --- newlib/libc/locale/locale.c | 18 +++++++++--------- newlib/libc/locale/newlocale.c | 6 +++--- newlib/libc/stdlib/_mallocr.c | 2 +- newlib/libc/stdlib/nano-mallocr.c | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index 3772106e3c..b16ec15114 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -317,7 +317,7 @@ _setlocale_r (struct _reent *p, if (category < LC_ALL || category >= _LC_LAST) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } @@ -343,7 +343,7 @@ _setlocale_r (struct _reent *p, env = __get_locale_env (p, i); if (strlen (env) > ENCODING_LEN) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } strcpy (new_categories[i], env); @@ -354,7 +354,7 @@ _setlocale_r (struct _reent *p, env = __get_locale_env (p, category); if (strlen (env) > ENCODING_LEN) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } strcpy (new_categories[category], env); @@ -364,7 +364,7 @@ _setlocale_r (struct _reent *p, { if (strlen (locale) > ENCODING_LEN) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } strcpy (new_categories[category], locale); @@ -375,7 +375,7 @@ _setlocale_r (struct _reent *p, { if (strlen (locale) > ENCODING_LEN) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } for (i = 1; i < _LC_LAST; ++i) @@ -387,7 +387,7 @@ _setlocale_r (struct _reent *p, ; if (!r[1]) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; /* Hmm, just slashes... */ } do @@ -396,7 +396,7 @@ _setlocale_r (struct _reent *p, break; /* Too many slashes... */ if ((len = r - locale) > ENCODING_LEN) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } strlcpy (new_categories[i], locale, len + 1); @@ -429,7 +429,7 @@ _setlocale_r (struct _reent *p, strcpy (saved_categories[i], __get_global_locale ()->categories[i]); if (__loadlocale (__get_global_locale (), i, new_categories[i]) == NULL) { - saverr = p->_errno; + saverr = _REENT_ERRNO(p); for (j = 1; j < i; j++) { strcpy (new_categories[j], saved_categories[j]); @@ -440,7 +440,7 @@ _setlocale_r (struct _reent *p, __loadlocale (__get_global_locale (), j, new_categories[j]); } } - p->_errno = saverr; + _REENT_ERRNO(p) = saverr; return NULL; } } diff --git a/newlib/libc/locale/newlocale.c b/newlib/libc/locale/newlocale.c index 278f78ed24..92f9e0a9c4 100644 --- a/newlib/libc/locale/newlocale.c +++ b/newlib/libc/locale/newlocale.c @@ -103,7 +103,7 @@ _newlocale_r (struct _reent *p, int category_mask, const char *locale, /* Check for invalid mask values and valid locale ptr. */ if ((category_mask & ~LC_VALID_MASK) || !locale) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } /* If the new locale is supposed to be all default locale, just return @@ -125,7 +125,7 @@ _newlocale_r (struct _reent *p, int category_mask, const char *locale, : locale; if (strlen (cat) > ENCODING_LEN) { - p->_errno = EINVAL; + _REENT_ERRNO(p) = EINVAL; return NULL; } strcpy (new_categories[i], cat); @@ -172,7 +172,7 @@ _newlocale_r (struct _reent *p, int category_mask, const char *locale, /* Otherwise load locale data. */ else if (!__loadlocale (&tmp_locale, i, new_categories[i])) { - p->_errno = ENOENT; + _REENT_ERRNO(p) = ENOENT; goto error; } } diff --git a/newlib/libc/stdlib/_mallocr.c b/newlib/libc/stdlib/_mallocr.c index 1997b6db15..c73982c185 100644 --- a/newlib/libc/stdlib/_mallocr.c +++ b/newlib/libc/stdlib/_mallocr.c @@ -346,7 +346,7 @@ extern void __malloc_unlock(); #define RDECL struct _reent *reent_ptr; #endif -#define RERRNO reent_ptr->_errno +#define RERRNO _REENT_ERRNO(reent_ptr) #define RCALL reent_ptr, #define RONECALL reent_ptr diff --git a/newlib/libc/stdlib/nano-mallocr.c b/newlib/libc/stdlib/nano-mallocr.c index 41e69abb0b..030be44add 100644 --- a/newlib/libc/stdlib/nano-mallocr.c +++ b/newlib/libc/stdlib/nano-mallocr.c @@ -64,7 +64,7 @@ #define MALLOC_LOCK __malloc_lock(reent_ptr) #define MALLOC_UNLOCK __malloc_unlock(reent_ptr) -#define RERRNO reent_ptr->_errno +#define RERRNO _REENT_ERRNO(reent_ptr) #define nano_malloc _malloc_r #define nano_free _free_r From 7a1c717c8bba1d046c37c75c3d8c110aeba3cc09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pekka=20Sepp=C3=A4nen?= Date: Wed, 30 Aug 2023 12:16:32 +0300 Subject: [PATCH 436/767] Reentrancy, conditionally provide default __getreent() implementation Conditionally provide default __getreent() implementation only if _REENT_THREAD_LOCAL is not defined. If struct _reent is replaced by dedicated thread-local objects neither the structure nor _impure_ptr is available. --- newlib/libc/reent/getreent.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/newlib/libc/reent/getreent.c b/newlib/libc/reent/getreent.c index 5fa98e96bd..86bb04fb94 100644 --- a/newlib/libc/reent/getreent.c +++ b/newlib/libc/reent/getreent.c @@ -9,6 +9,8 @@ int _dummy_getreent; #include <_ansi.h> #include +#ifndef _REENT_THREAD_LOCAL + #ifdef __getreent #undef __getreent #endif @@ -19,4 +21,6 @@ __getreent (void) return _impure_ptr; } +#endif /* !_REENT_THREAD_LOCAL */ + #endif From c2d2bf34e6959615a3ba0edf4153d210501ba04f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pekka=20Sepp=C3=A4nen?= Date: Wed, 30 Aug 2023 12:16:36 +0300 Subject: [PATCH 437/767] Reentrancy, attempt to always provide _Thread_local in Attempt to always provide _Thread_local in by including . The C specific keyword _Thread_local is not available unless targetting a suitable C version. --- newlib/libc/include/sys/reent.h | 1 + 1 file changed, 1 insertion(+) diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index a6c923f1cf..a02e7c2bd9 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -12,6 +12,7 @@ extern "C" { #include <_ansi.h> #include +#include #include #define _NULL 0 From 8484773f47ccb14a24e3b40a5b5a329ae5768f82 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 17 Sep 2023 08:32:09 +0900 Subject: [PATCH 438/767] Cygwin: dsp: Fix a bug that app hangs if it killed during write(). If app is killed during blocking write(), it sometimes hangs. This patch fixes the issue. Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 5f78821d4a..03c812a9cb 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -590,7 +590,8 @@ fhandler_dev_dsp::Audio_out::waitforallsent () while (Qisr2app_->query () != fh->fragstotal_) { debug_printf ("%d blocks in Qisr2app", Qisr2app_->query ()); - Sleep (100); + cygwait (1); + sendcurrent (); } } From 322c7150b25ebd2c4c2bd4e3abbe0978f66f3737 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 17 Sep 2023 08:49:34 +0900 Subject: [PATCH 439/767] Cygwin: dsp: Avoid setting buffer that is too small. The buffer size that is too small causes choppy sound. That is not practical at all. With this patch, the minimum value of the buffer size (i.e. fragstotal * fragsize) is restricted to 16384 bytes. Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 03c812a9cb..97f3eaa277 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1430,6 +1430,8 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) int *p = (int *) buf; fragstotal_ = min (*p >> 16, MAX_BLOCKS); fragsize_ = 1 << (*p & 0xffff); + while (fragsize_ * fragstotal_ < 16384) + fragsize_ *= 2; fragment_has_been_set = true; return 0; } From 6e5676a915e70edfef1cda870ee00263ce7b3a57 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Tue, 12 Sep 2023 10:28:34 +0200 Subject: [PATCH 440/767] newlib: Fix header install --- newlib/Makefile.am | 2 +- newlib/Makefile.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/Makefile.am b/newlib/Makefile.am index e29607ccd6..47f0be2880 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -334,7 +334,7 @@ install-data-local: install-toollibLIBRARIES install-multi $(INSTALL_DATA_LOCAL) else true; fi ; \ done ; \ for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ - f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/::`; \ $(MKDIR_P) $(DESTDIR)$(tooldir)/`dirname $$f`; \ $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/`dirname $$f`; \ done ; \ diff --git a/newlib/Makefile.in b/newlib/Makefile.in index c3052acb93..5dc9dcc8dc 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -50500,7 +50500,7 @@ install-data-local: install-toollibLIBRARIES install-multi $(INSTALL_DATA_LOCAL) else true; fi ; \ done ; \ for i in $(call rwildcard,$(srcdir)/libc/sys/$(sys_dir)/include/,*.h); do \ - f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/include/::`; \ + f=`echo $$i | sed s:^$(srcdir)/libc/sys/$(sys_dir)/::`; \ $(MKDIR_P) $(DESTDIR)$(tooldir)/`dirname $$f`; \ $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/`dirname $$f`; \ done ; \ From 55485616ba2afedca05da40f5cde59ee336b9f28 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Mon, 18 Sep 2023 22:46:19 -0400 Subject: [PATCH 441/767] Bring back libsim.a for riscv --- libgloss/Makefile.in | 601 +++++++++++++++++++++++++++++++++++- libgloss/riscv/Makefile.inc | 4 + 2 files changed, 599 insertions(+), 6 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 611b42161f..6c5a12256c 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -186,7 +186,7 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_35 = riscv/libgloss.a \ +@CONFIG_RISCV_TRUE@am__append_35 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a @CONFIG_WINCE_TRUE@am__append_36 = $(gdbdir) @CONFIG_WINCE_TRUE@am__append_37 = wince/stub.exe @@ -542,15 +542,52 @@ riscv_libsemihost_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsemihost_a-semihost-sys_unlink.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsemihost_a-semihost-sys_write.$(OBJEXT) riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) +riscv_libsim_a_AR = $(AR) $(ARFLAGS) +riscv_libsim_a_LIBADD = +@CONFIG_RISCV_TRUE@am__objects_7 = \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chown.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_close.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_conv_stat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_execve.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_exit.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_faccessat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_fork.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_fstat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_fstatat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_ftime.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_getcwd.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_getpid.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_gettimeofday.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_isatty.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_kill.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_link.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_lseek.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_lstat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_open.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_openat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_read.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_sbrk.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_stat.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_sysconf.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_times.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_unlink.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ +@CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_7) +riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_7 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_8 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_8 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_9 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_7) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_8) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_8) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_9) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -623,7 +660,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ + $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) @@ -1113,6 +1151,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_RISCV_TRUE@ riscv/sys_wait.c \ @CONFIG_RISCV_TRUE@ riscv/sys_write.c +@CONFIG_RISCV_TRUE@riscv_libsim_a_CPPFLAGS = $(riscv_libgloss_a_CPPFLAGS) -DUSING_SIM_SPECS +@CONFIG_RISCV_TRUE@riscv_libsim_a_SOURCES = $(riscv_libgloss_a_SOURCES) @CONFIG_RISCV_TRUE@riscv_libsemihost_a_CPPFLAGS = -I$(srcdir)/riscv @CONFIG_RISCV_TRUE@riscv_libsemihost_a_SOURCES = \ @CONFIG_RISCV_TRUE@ riscv/nanosleep.c \ @@ -1856,6 +1896,75 @@ riscv/libsemihost.a: $(riscv_libsemihost_a_OBJECTS) $(riscv_libsemihost_a_DEPEND $(AM_V_at)-rm -f riscv/libsemihost.a $(AM_V_AR)$(riscv_libsemihost_a_AR) riscv/libsemihost.a $(riscv_libsemihost_a_OBJECTS) $(riscv_libsemihost_a_LIBADD) $(AM_V_at)$(RANLIB) riscv/libsemihost.a +riscv/riscv_libsim_a-sys_access.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_chdir.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_chmod.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_chown.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_close.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_conv_stat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_execve.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_exit.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_faccessat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_fork.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_fstat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_fstatat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_ftime.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_getcwd.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_getpid.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_gettimeofday.$(OBJEXT): \ + riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_isatty.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_kill.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_link.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_lseek.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_lstat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_open.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_openat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_read.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_sbrk.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_stat.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_sysconf.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_times.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_unlink.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_utime.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_wait.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/riscv_libsim_a-sys_write.$(OBJEXT): riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) + +riscv/libsim.a: $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_DEPENDENCIES) $(EXTRA_riscv_libsim_a_DEPENDENCIES) riscv/$(am__dirstamp) + $(AM_V_at)-rm -f riscv/libsim.a + $(AM_V_AR)$(riscv_libsim_a_AR) riscv/libsim.a $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) riscv/libsim.a xtensa/$(am__dirstamp): @$(MKDIR_P) xtensa @: > xtensa/$(am__dirstamp) @@ -2190,6 +2299,38 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsemihost_a-sys_kill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsemihost_a-sys_utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsemihost_a-sys_wait.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Po@am__quote@ @@ -3982,6 +4123,454 @@ riscv/riscv_libsemihost_a-semihost-sys_write.obj: riscv/semihost-sys_write.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsemihost_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsemihost_a-semihost-sys_write.obj `if test -f 'riscv/semihost-sys_write.c'; then $(CYGPATH_W) 'riscv/semihost-sys_write.c'; else $(CYGPATH_W) '$(srcdir)/riscv/semihost-sys_write.c'; fi` +riscv/riscv_libsim_a-sys_access.o: riscv/sys_access.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_access.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Tpo -c -o riscv/riscv_libsim_a-sys_access.o `test -f 'riscv/sys_access.c' || echo '$(srcdir)/'`riscv/sys_access.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_access.c' object='riscv/riscv_libsim_a-sys_access.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_access.o `test -f 'riscv/sys_access.c' || echo '$(srcdir)/'`riscv/sys_access.c + +riscv/riscv_libsim_a-sys_access.obj: riscv/sys_access.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_access.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Tpo -c -o riscv/riscv_libsim_a-sys_access.obj `if test -f 'riscv/sys_access.c'; then $(CYGPATH_W) 'riscv/sys_access.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_access.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_access.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_access.c' object='riscv/riscv_libsim_a-sys_access.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_access.obj `if test -f 'riscv/sys_access.c'; then $(CYGPATH_W) 'riscv/sys_access.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_access.c'; fi` + +riscv/riscv_libsim_a-sys_chdir.o: riscv/sys_chdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_chdir.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Tpo -c -o riscv/riscv_libsim_a-sys_chdir.o `test -f 'riscv/sys_chdir.c' || echo '$(srcdir)/'`riscv/sys_chdir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_chdir.c' object='riscv/riscv_libsim_a-sys_chdir.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_chdir.o `test -f 'riscv/sys_chdir.c' || echo '$(srcdir)/'`riscv/sys_chdir.c + +riscv/riscv_libsim_a-sys_chdir.obj: riscv/sys_chdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_chdir.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Tpo -c -o riscv/riscv_libsim_a-sys_chdir.obj `if test -f 'riscv/sys_chdir.c'; then $(CYGPATH_W) 'riscv/sys_chdir.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_chdir.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_chdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_chdir.c' object='riscv/riscv_libsim_a-sys_chdir.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_chdir.obj `if test -f 'riscv/sys_chdir.c'; then $(CYGPATH_W) 'riscv/sys_chdir.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_chdir.c'; fi` + +riscv/riscv_libsim_a-sys_chmod.o: riscv/sys_chmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_chmod.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Tpo -c -o riscv/riscv_libsim_a-sys_chmod.o `test -f 'riscv/sys_chmod.c' || echo '$(srcdir)/'`riscv/sys_chmod.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_chmod.c' object='riscv/riscv_libsim_a-sys_chmod.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_chmod.o `test -f 'riscv/sys_chmod.c' || echo '$(srcdir)/'`riscv/sys_chmod.c + +riscv/riscv_libsim_a-sys_chmod.obj: riscv/sys_chmod.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_chmod.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Tpo -c -o riscv/riscv_libsim_a-sys_chmod.obj `if test -f 'riscv/sys_chmod.c'; then $(CYGPATH_W) 'riscv/sys_chmod.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_chmod.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_chmod.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_chmod.c' object='riscv/riscv_libsim_a-sys_chmod.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_chmod.obj `if test -f 'riscv/sys_chmod.c'; then $(CYGPATH_W) 'riscv/sys_chmod.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_chmod.c'; fi` + +riscv/riscv_libsim_a-sys_chown.o: riscv/sys_chown.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_chown.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Tpo -c -o riscv/riscv_libsim_a-sys_chown.o `test -f 'riscv/sys_chown.c' || echo '$(srcdir)/'`riscv/sys_chown.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_chown.c' object='riscv/riscv_libsim_a-sys_chown.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_chown.o `test -f 'riscv/sys_chown.c' || echo '$(srcdir)/'`riscv/sys_chown.c + +riscv/riscv_libsim_a-sys_chown.obj: riscv/sys_chown.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_chown.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Tpo -c -o riscv/riscv_libsim_a-sys_chown.obj `if test -f 'riscv/sys_chown.c'; then $(CYGPATH_W) 'riscv/sys_chown.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_chown.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_chown.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_chown.c' object='riscv/riscv_libsim_a-sys_chown.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_chown.obj `if test -f 'riscv/sys_chown.c'; then $(CYGPATH_W) 'riscv/sys_chown.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_chown.c'; fi` + +riscv/riscv_libsim_a-sys_close.o: riscv/sys_close.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_close.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Tpo -c -o riscv/riscv_libsim_a-sys_close.o `test -f 'riscv/sys_close.c' || echo '$(srcdir)/'`riscv/sys_close.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_close.c' object='riscv/riscv_libsim_a-sys_close.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_close.o `test -f 'riscv/sys_close.c' || echo '$(srcdir)/'`riscv/sys_close.c + +riscv/riscv_libsim_a-sys_close.obj: riscv/sys_close.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_close.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Tpo -c -o riscv/riscv_libsim_a-sys_close.obj `if test -f 'riscv/sys_close.c'; then $(CYGPATH_W) 'riscv/sys_close.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_close.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_close.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_close.c' object='riscv/riscv_libsim_a-sys_close.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_close.obj `if test -f 'riscv/sys_close.c'; then $(CYGPATH_W) 'riscv/sys_close.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_close.c'; fi` + +riscv/riscv_libsim_a-sys_conv_stat.o: riscv/sys_conv_stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_conv_stat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Tpo -c -o riscv/riscv_libsim_a-sys_conv_stat.o `test -f 'riscv/sys_conv_stat.c' || echo '$(srcdir)/'`riscv/sys_conv_stat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_conv_stat.c' object='riscv/riscv_libsim_a-sys_conv_stat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_conv_stat.o `test -f 'riscv/sys_conv_stat.c' || echo '$(srcdir)/'`riscv/sys_conv_stat.c + +riscv/riscv_libsim_a-sys_conv_stat.obj: riscv/sys_conv_stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_conv_stat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Tpo -c -o riscv/riscv_libsim_a-sys_conv_stat.obj `if test -f 'riscv/sys_conv_stat.c'; then $(CYGPATH_W) 'riscv/sys_conv_stat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_conv_stat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_conv_stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_conv_stat.c' object='riscv/riscv_libsim_a-sys_conv_stat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_conv_stat.obj `if test -f 'riscv/sys_conv_stat.c'; then $(CYGPATH_W) 'riscv/sys_conv_stat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_conv_stat.c'; fi` + +riscv/riscv_libsim_a-sys_execve.o: riscv/sys_execve.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_execve.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Tpo -c -o riscv/riscv_libsim_a-sys_execve.o `test -f 'riscv/sys_execve.c' || echo '$(srcdir)/'`riscv/sys_execve.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_execve.c' object='riscv/riscv_libsim_a-sys_execve.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_execve.o `test -f 'riscv/sys_execve.c' || echo '$(srcdir)/'`riscv/sys_execve.c + +riscv/riscv_libsim_a-sys_execve.obj: riscv/sys_execve.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_execve.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Tpo -c -o riscv/riscv_libsim_a-sys_execve.obj `if test -f 'riscv/sys_execve.c'; then $(CYGPATH_W) 'riscv/sys_execve.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_execve.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_execve.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_execve.c' object='riscv/riscv_libsim_a-sys_execve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_execve.obj `if test -f 'riscv/sys_execve.c'; then $(CYGPATH_W) 'riscv/sys_execve.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_execve.c'; fi` + +riscv/riscv_libsim_a-sys_exit.o: riscv/sys_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_exit.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Tpo -c -o riscv/riscv_libsim_a-sys_exit.o `test -f 'riscv/sys_exit.c' || echo '$(srcdir)/'`riscv/sys_exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_exit.c' object='riscv/riscv_libsim_a-sys_exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_exit.o `test -f 'riscv/sys_exit.c' || echo '$(srcdir)/'`riscv/sys_exit.c + +riscv/riscv_libsim_a-sys_exit.obj: riscv/sys_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_exit.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Tpo -c -o riscv/riscv_libsim_a-sys_exit.obj `if test -f 'riscv/sys_exit.c'; then $(CYGPATH_W) 'riscv/sys_exit.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_exit.c' object='riscv/riscv_libsim_a-sys_exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_exit.obj `if test -f 'riscv/sys_exit.c'; then $(CYGPATH_W) 'riscv/sys_exit.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_exit.c'; fi` + +riscv/riscv_libsim_a-sys_faccessat.o: riscv/sys_faccessat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_faccessat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Tpo -c -o riscv/riscv_libsim_a-sys_faccessat.o `test -f 'riscv/sys_faccessat.c' || echo '$(srcdir)/'`riscv/sys_faccessat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_faccessat.c' object='riscv/riscv_libsim_a-sys_faccessat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_faccessat.o `test -f 'riscv/sys_faccessat.c' || echo '$(srcdir)/'`riscv/sys_faccessat.c + +riscv/riscv_libsim_a-sys_faccessat.obj: riscv/sys_faccessat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_faccessat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Tpo -c -o riscv/riscv_libsim_a-sys_faccessat.obj `if test -f 'riscv/sys_faccessat.c'; then $(CYGPATH_W) 'riscv/sys_faccessat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_faccessat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_faccessat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_faccessat.c' object='riscv/riscv_libsim_a-sys_faccessat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_faccessat.obj `if test -f 'riscv/sys_faccessat.c'; then $(CYGPATH_W) 'riscv/sys_faccessat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_faccessat.c'; fi` + +riscv/riscv_libsim_a-sys_fork.o: riscv/sys_fork.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_fork.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Tpo -c -o riscv/riscv_libsim_a-sys_fork.o `test -f 'riscv/sys_fork.c' || echo '$(srcdir)/'`riscv/sys_fork.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_fork.c' object='riscv/riscv_libsim_a-sys_fork.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_fork.o `test -f 'riscv/sys_fork.c' || echo '$(srcdir)/'`riscv/sys_fork.c + +riscv/riscv_libsim_a-sys_fork.obj: riscv/sys_fork.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_fork.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Tpo -c -o riscv/riscv_libsim_a-sys_fork.obj `if test -f 'riscv/sys_fork.c'; then $(CYGPATH_W) 'riscv/sys_fork.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_fork.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_fork.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_fork.c' object='riscv/riscv_libsim_a-sys_fork.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_fork.obj `if test -f 'riscv/sys_fork.c'; then $(CYGPATH_W) 'riscv/sys_fork.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_fork.c'; fi` + +riscv/riscv_libsim_a-sys_fstat.o: riscv/sys_fstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_fstat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Tpo -c -o riscv/riscv_libsim_a-sys_fstat.o `test -f 'riscv/sys_fstat.c' || echo '$(srcdir)/'`riscv/sys_fstat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_fstat.c' object='riscv/riscv_libsim_a-sys_fstat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_fstat.o `test -f 'riscv/sys_fstat.c' || echo '$(srcdir)/'`riscv/sys_fstat.c + +riscv/riscv_libsim_a-sys_fstat.obj: riscv/sys_fstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_fstat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Tpo -c -o riscv/riscv_libsim_a-sys_fstat.obj `if test -f 'riscv/sys_fstat.c'; then $(CYGPATH_W) 'riscv/sys_fstat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_fstat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_fstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_fstat.c' object='riscv/riscv_libsim_a-sys_fstat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_fstat.obj `if test -f 'riscv/sys_fstat.c'; then $(CYGPATH_W) 'riscv/sys_fstat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_fstat.c'; fi` + +riscv/riscv_libsim_a-sys_fstatat.o: riscv/sys_fstatat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_fstatat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Tpo -c -o riscv/riscv_libsim_a-sys_fstatat.o `test -f 'riscv/sys_fstatat.c' || echo '$(srcdir)/'`riscv/sys_fstatat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_fstatat.c' object='riscv/riscv_libsim_a-sys_fstatat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_fstatat.o `test -f 'riscv/sys_fstatat.c' || echo '$(srcdir)/'`riscv/sys_fstatat.c + +riscv/riscv_libsim_a-sys_fstatat.obj: riscv/sys_fstatat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_fstatat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Tpo -c -o riscv/riscv_libsim_a-sys_fstatat.obj `if test -f 'riscv/sys_fstatat.c'; then $(CYGPATH_W) 'riscv/sys_fstatat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_fstatat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_fstatat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_fstatat.c' object='riscv/riscv_libsim_a-sys_fstatat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_fstatat.obj `if test -f 'riscv/sys_fstatat.c'; then $(CYGPATH_W) 'riscv/sys_fstatat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_fstatat.c'; fi` + +riscv/riscv_libsim_a-sys_ftime.o: riscv/sys_ftime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_ftime.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Tpo -c -o riscv/riscv_libsim_a-sys_ftime.o `test -f 'riscv/sys_ftime.c' || echo '$(srcdir)/'`riscv/sys_ftime.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_ftime.c' object='riscv/riscv_libsim_a-sys_ftime.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_ftime.o `test -f 'riscv/sys_ftime.c' || echo '$(srcdir)/'`riscv/sys_ftime.c + +riscv/riscv_libsim_a-sys_ftime.obj: riscv/sys_ftime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_ftime.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Tpo -c -o riscv/riscv_libsim_a-sys_ftime.obj `if test -f 'riscv/sys_ftime.c'; then $(CYGPATH_W) 'riscv/sys_ftime.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_ftime.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_ftime.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_ftime.c' object='riscv/riscv_libsim_a-sys_ftime.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_ftime.obj `if test -f 'riscv/sys_ftime.c'; then $(CYGPATH_W) 'riscv/sys_ftime.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_ftime.c'; fi` + +riscv/riscv_libsim_a-sys_getcwd.o: riscv/sys_getcwd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_getcwd.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Tpo -c -o riscv/riscv_libsim_a-sys_getcwd.o `test -f 'riscv/sys_getcwd.c' || echo '$(srcdir)/'`riscv/sys_getcwd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_getcwd.c' object='riscv/riscv_libsim_a-sys_getcwd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_getcwd.o `test -f 'riscv/sys_getcwd.c' || echo '$(srcdir)/'`riscv/sys_getcwd.c + +riscv/riscv_libsim_a-sys_getcwd.obj: riscv/sys_getcwd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_getcwd.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Tpo -c -o riscv/riscv_libsim_a-sys_getcwd.obj `if test -f 'riscv/sys_getcwd.c'; then $(CYGPATH_W) 'riscv/sys_getcwd.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_getcwd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_getcwd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_getcwd.c' object='riscv/riscv_libsim_a-sys_getcwd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_getcwd.obj `if test -f 'riscv/sys_getcwd.c'; then $(CYGPATH_W) 'riscv/sys_getcwd.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_getcwd.c'; fi` + +riscv/riscv_libsim_a-sys_getpid.o: riscv/sys_getpid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_getpid.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Tpo -c -o riscv/riscv_libsim_a-sys_getpid.o `test -f 'riscv/sys_getpid.c' || echo '$(srcdir)/'`riscv/sys_getpid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_getpid.c' object='riscv/riscv_libsim_a-sys_getpid.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_getpid.o `test -f 'riscv/sys_getpid.c' || echo '$(srcdir)/'`riscv/sys_getpid.c + +riscv/riscv_libsim_a-sys_getpid.obj: riscv/sys_getpid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_getpid.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Tpo -c -o riscv/riscv_libsim_a-sys_getpid.obj `if test -f 'riscv/sys_getpid.c'; then $(CYGPATH_W) 'riscv/sys_getpid.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_getpid.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_getpid.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_getpid.c' object='riscv/riscv_libsim_a-sys_getpid.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_getpid.obj `if test -f 'riscv/sys_getpid.c'; then $(CYGPATH_W) 'riscv/sys_getpid.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_getpid.c'; fi` + +riscv/riscv_libsim_a-sys_gettimeofday.o: riscv/sys_gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_gettimeofday.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Tpo -c -o riscv/riscv_libsim_a-sys_gettimeofday.o `test -f 'riscv/sys_gettimeofday.c' || echo '$(srcdir)/'`riscv/sys_gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_gettimeofday.c' object='riscv/riscv_libsim_a-sys_gettimeofday.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_gettimeofday.o `test -f 'riscv/sys_gettimeofday.c' || echo '$(srcdir)/'`riscv/sys_gettimeofday.c + +riscv/riscv_libsim_a-sys_gettimeofday.obj: riscv/sys_gettimeofday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_gettimeofday.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Tpo -c -o riscv/riscv_libsim_a-sys_gettimeofday.obj `if test -f 'riscv/sys_gettimeofday.c'; then $(CYGPATH_W) 'riscv/sys_gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_gettimeofday.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_gettimeofday.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_gettimeofday.c' object='riscv/riscv_libsim_a-sys_gettimeofday.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_gettimeofday.obj `if test -f 'riscv/sys_gettimeofday.c'; then $(CYGPATH_W) 'riscv/sys_gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_gettimeofday.c'; fi` + +riscv/riscv_libsim_a-sys_isatty.o: riscv/sys_isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_isatty.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Tpo -c -o riscv/riscv_libsim_a-sys_isatty.o `test -f 'riscv/sys_isatty.c' || echo '$(srcdir)/'`riscv/sys_isatty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_isatty.c' object='riscv/riscv_libsim_a-sys_isatty.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_isatty.o `test -f 'riscv/sys_isatty.c' || echo '$(srcdir)/'`riscv/sys_isatty.c + +riscv/riscv_libsim_a-sys_isatty.obj: riscv/sys_isatty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_isatty.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Tpo -c -o riscv/riscv_libsim_a-sys_isatty.obj `if test -f 'riscv/sys_isatty.c'; then $(CYGPATH_W) 'riscv/sys_isatty.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_isatty.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_isatty.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_isatty.c' object='riscv/riscv_libsim_a-sys_isatty.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_isatty.obj `if test -f 'riscv/sys_isatty.c'; then $(CYGPATH_W) 'riscv/sys_isatty.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_isatty.c'; fi` + +riscv/riscv_libsim_a-sys_kill.o: riscv/sys_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_kill.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Tpo -c -o riscv/riscv_libsim_a-sys_kill.o `test -f 'riscv/sys_kill.c' || echo '$(srcdir)/'`riscv/sys_kill.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_kill.c' object='riscv/riscv_libsim_a-sys_kill.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_kill.o `test -f 'riscv/sys_kill.c' || echo '$(srcdir)/'`riscv/sys_kill.c + +riscv/riscv_libsim_a-sys_kill.obj: riscv/sys_kill.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_kill.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Tpo -c -o riscv/riscv_libsim_a-sys_kill.obj `if test -f 'riscv/sys_kill.c'; then $(CYGPATH_W) 'riscv/sys_kill.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_kill.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_kill.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_kill.c' object='riscv/riscv_libsim_a-sys_kill.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_kill.obj `if test -f 'riscv/sys_kill.c'; then $(CYGPATH_W) 'riscv/sys_kill.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_kill.c'; fi` + +riscv/riscv_libsim_a-sys_link.o: riscv/sys_link.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_link.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Tpo -c -o riscv/riscv_libsim_a-sys_link.o `test -f 'riscv/sys_link.c' || echo '$(srcdir)/'`riscv/sys_link.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_link.c' object='riscv/riscv_libsim_a-sys_link.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_link.o `test -f 'riscv/sys_link.c' || echo '$(srcdir)/'`riscv/sys_link.c + +riscv/riscv_libsim_a-sys_link.obj: riscv/sys_link.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_link.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Tpo -c -o riscv/riscv_libsim_a-sys_link.obj `if test -f 'riscv/sys_link.c'; then $(CYGPATH_W) 'riscv/sys_link.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_link.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_link.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_link.c' object='riscv/riscv_libsim_a-sys_link.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_link.obj `if test -f 'riscv/sys_link.c'; then $(CYGPATH_W) 'riscv/sys_link.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_link.c'; fi` + +riscv/riscv_libsim_a-sys_lseek.o: riscv/sys_lseek.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_lseek.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Tpo -c -o riscv/riscv_libsim_a-sys_lseek.o `test -f 'riscv/sys_lseek.c' || echo '$(srcdir)/'`riscv/sys_lseek.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_lseek.c' object='riscv/riscv_libsim_a-sys_lseek.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_lseek.o `test -f 'riscv/sys_lseek.c' || echo '$(srcdir)/'`riscv/sys_lseek.c + +riscv/riscv_libsim_a-sys_lseek.obj: riscv/sys_lseek.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_lseek.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Tpo -c -o riscv/riscv_libsim_a-sys_lseek.obj `if test -f 'riscv/sys_lseek.c'; then $(CYGPATH_W) 'riscv/sys_lseek.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_lseek.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_lseek.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_lseek.c' object='riscv/riscv_libsim_a-sys_lseek.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_lseek.obj `if test -f 'riscv/sys_lseek.c'; then $(CYGPATH_W) 'riscv/sys_lseek.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_lseek.c'; fi` + +riscv/riscv_libsim_a-sys_lstat.o: riscv/sys_lstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_lstat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Tpo -c -o riscv/riscv_libsim_a-sys_lstat.o `test -f 'riscv/sys_lstat.c' || echo '$(srcdir)/'`riscv/sys_lstat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_lstat.c' object='riscv/riscv_libsim_a-sys_lstat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_lstat.o `test -f 'riscv/sys_lstat.c' || echo '$(srcdir)/'`riscv/sys_lstat.c + +riscv/riscv_libsim_a-sys_lstat.obj: riscv/sys_lstat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_lstat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Tpo -c -o riscv/riscv_libsim_a-sys_lstat.obj `if test -f 'riscv/sys_lstat.c'; then $(CYGPATH_W) 'riscv/sys_lstat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_lstat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_lstat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_lstat.c' object='riscv/riscv_libsim_a-sys_lstat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_lstat.obj `if test -f 'riscv/sys_lstat.c'; then $(CYGPATH_W) 'riscv/sys_lstat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_lstat.c'; fi` + +riscv/riscv_libsim_a-sys_open.o: riscv/sys_open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_open.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Tpo -c -o riscv/riscv_libsim_a-sys_open.o `test -f 'riscv/sys_open.c' || echo '$(srcdir)/'`riscv/sys_open.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_open.c' object='riscv/riscv_libsim_a-sys_open.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_open.o `test -f 'riscv/sys_open.c' || echo '$(srcdir)/'`riscv/sys_open.c + +riscv/riscv_libsim_a-sys_open.obj: riscv/sys_open.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_open.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Tpo -c -o riscv/riscv_libsim_a-sys_open.obj `if test -f 'riscv/sys_open.c'; then $(CYGPATH_W) 'riscv/sys_open.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_open.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_open.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_open.c' object='riscv/riscv_libsim_a-sys_open.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_open.obj `if test -f 'riscv/sys_open.c'; then $(CYGPATH_W) 'riscv/sys_open.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_open.c'; fi` + +riscv/riscv_libsim_a-sys_openat.o: riscv/sys_openat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_openat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Tpo -c -o riscv/riscv_libsim_a-sys_openat.o `test -f 'riscv/sys_openat.c' || echo '$(srcdir)/'`riscv/sys_openat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_openat.c' object='riscv/riscv_libsim_a-sys_openat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_openat.o `test -f 'riscv/sys_openat.c' || echo '$(srcdir)/'`riscv/sys_openat.c + +riscv/riscv_libsim_a-sys_openat.obj: riscv/sys_openat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_openat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Tpo -c -o riscv/riscv_libsim_a-sys_openat.obj `if test -f 'riscv/sys_openat.c'; then $(CYGPATH_W) 'riscv/sys_openat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_openat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_openat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_openat.c' object='riscv/riscv_libsim_a-sys_openat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_openat.obj `if test -f 'riscv/sys_openat.c'; then $(CYGPATH_W) 'riscv/sys_openat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_openat.c'; fi` + +riscv/riscv_libsim_a-sys_read.o: riscv/sys_read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_read.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Tpo -c -o riscv/riscv_libsim_a-sys_read.o `test -f 'riscv/sys_read.c' || echo '$(srcdir)/'`riscv/sys_read.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_read.c' object='riscv/riscv_libsim_a-sys_read.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_read.o `test -f 'riscv/sys_read.c' || echo '$(srcdir)/'`riscv/sys_read.c + +riscv/riscv_libsim_a-sys_read.obj: riscv/sys_read.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_read.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Tpo -c -o riscv/riscv_libsim_a-sys_read.obj `if test -f 'riscv/sys_read.c'; then $(CYGPATH_W) 'riscv/sys_read.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_read.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_read.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_read.c' object='riscv/riscv_libsim_a-sys_read.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_read.obj `if test -f 'riscv/sys_read.c'; then $(CYGPATH_W) 'riscv/sys_read.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_read.c'; fi` + +riscv/riscv_libsim_a-sys_sbrk.o: riscv/sys_sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_sbrk.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Tpo -c -o riscv/riscv_libsim_a-sys_sbrk.o `test -f 'riscv/sys_sbrk.c' || echo '$(srcdir)/'`riscv/sys_sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_sbrk.c' object='riscv/riscv_libsim_a-sys_sbrk.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_sbrk.o `test -f 'riscv/sys_sbrk.c' || echo '$(srcdir)/'`riscv/sys_sbrk.c + +riscv/riscv_libsim_a-sys_sbrk.obj: riscv/sys_sbrk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_sbrk.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Tpo -c -o riscv/riscv_libsim_a-sys_sbrk.obj `if test -f 'riscv/sys_sbrk.c'; then $(CYGPATH_W) 'riscv/sys_sbrk.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_sbrk.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_sbrk.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_sbrk.c' object='riscv/riscv_libsim_a-sys_sbrk.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_sbrk.obj `if test -f 'riscv/sys_sbrk.c'; then $(CYGPATH_W) 'riscv/sys_sbrk.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_sbrk.c'; fi` + +riscv/riscv_libsim_a-sys_stat.o: riscv/sys_stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_stat.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Tpo -c -o riscv/riscv_libsim_a-sys_stat.o `test -f 'riscv/sys_stat.c' || echo '$(srcdir)/'`riscv/sys_stat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_stat.c' object='riscv/riscv_libsim_a-sys_stat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_stat.o `test -f 'riscv/sys_stat.c' || echo '$(srcdir)/'`riscv/sys_stat.c + +riscv/riscv_libsim_a-sys_stat.obj: riscv/sys_stat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_stat.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Tpo -c -o riscv/riscv_libsim_a-sys_stat.obj `if test -f 'riscv/sys_stat.c'; then $(CYGPATH_W) 'riscv/sys_stat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_stat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_stat.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_stat.c' object='riscv/riscv_libsim_a-sys_stat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_stat.obj `if test -f 'riscv/sys_stat.c'; then $(CYGPATH_W) 'riscv/sys_stat.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_stat.c'; fi` + +riscv/riscv_libsim_a-sys_sysconf.o: riscv/sys_sysconf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_sysconf.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Tpo -c -o riscv/riscv_libsim_a-sys_sysconf.o `test -f 'riscv/sys_sysconf.c' || echo '$(srcdir)/'`riscv/sys_sysconf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_sysconf.c' object='riscv/riscv_libsim_a-sys_sysconf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_sysconf.o `test -f 'riscv/sys_sysconf.c' || echo '$(srcdir)/'`riscv/sys_sysconf.c + +riscv/riscv_libsim_a-sys_sysconf.obj: riscv/sys_sysconf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_sysconf.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Tpo -c -o riscv/riscv_libsim_a-sys_sysconf.obj `if test -f 'riscv/sys_sysconf.c'; then $(CYGPATH_W) 'riscv/sys_sysconf.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_sysconf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_sysconf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_sysconf.c' object='riscv/riscv_libsim_a-sys_sysconf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_sysconf.obj `if test -f 'riscv/sys_sysconf.c'; then $(CYGPATH_W) 'riscv/sys_sysconf.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_sysconf.c'; fi` + +riscv/riscv_libsim_a-sys_times.o: riscv/sys_times.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_times.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Tpo -c -o riscv/riscv_libsim_a-sys_times.o `test -f 'riscv/sys_times.c' || echo '$(srcdir)/'`riscv/sys_times.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_times.c' object='riscv/riscv_libsim_a-sys_times.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_times.o `test -f 'riscv/sys_times.c' || echo '$(srcdir)/'`riscv/sys_times.c + +riscv/riscv_libsim_a-sys_times.obj: riscv/sys_times.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_times.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Tpo -c -o riscv/riscv_libsim_a-sys_times.obj `if test -f 'riscv/sys_times.c'; then $(CYGPATH_W) 'riscv/sys_times.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_times.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_times.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_times.c' object='riscv/riscv_libsim_a-sys_times.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_times.obj `if test -f 'riscv/sys_times.c'; then $(CYGPATH_W) 'riscv/sys_times.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_times.c'; fi` + +riscv/riscv_libsim_a-sys_unlink.o: riscv/sys_unlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_unlink.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Tpo -c -o riscv/riscv_libsim_a-sys_unlink.o `test -f 'riscv/sys_unlink.c' || echo '$(srcdir)/'`riscv/sys_unlink.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_unlink.c' object='riscv/riscv_libsim_a-sys_unlink.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_unlink.o `test -f 'riscv/sys_unlink.c' || echo '$(srcdir)/'`riscv/sys_unlink.c + +riscv/riscv_libsim_a-sys_unlink.obj: riscv/sys_unlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_unlink.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Tpo -c -o riscv/riscv_libsim_a-sys_unlink.obj `if test -f 'riscv/sys_unlink.c'; then $(CYGPATH_W) 'riscv/sys_unlink.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_unlink.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_unlink.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_unlink.c' object='riscv/riscv_libsim_a-sys_unlink.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_unlink.obj `if test -f 'riscv/sys_unlink.c'; then $(CYGPATH_W) 'riscv/sys_unlink.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_unlink.c'; fi` + +riscv/riscv_libsim_a-sys_utime.o: riscv/sys_utime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_utime.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Tpo -c -o riscv/riscv_libsim_a-sys_utime.o `test -f 'riscv/sys_utime.c' || echo '$(srcdir)/'`riscv/sys_utime.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_utime.c' object='riscv/riscv_libsim_a-sys_utime.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_utime.o `test -f 'riscv/sys_utime.c' || echo '$(srcdir)/'`riscv/sys_utime.c + +riscv/riscv_libsim_a-sys_utime.obj: riscv/sys_utime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_utime.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Tpo -c -o riscv/riscv_libsim_a-sys_utime.obj `if test -f 'riscv/sys_utime.c'; then $(CYGPATH_W) 'riscv/sys_utime.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_utime.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_utime.c' object='riscv/riscv_libsim_a-sys_utime.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_utime.obj `if test -f 'riscv/sys_utime.c'; then $(CYGPATH_W) 'riscv/sys_utime.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_utime.c'; fi` + +riscv/riscv_libsim_a-sys_wait.o: riscv/sys_wait.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_wait.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Tpo -c -o riscv/riscv_libsim_a-sys_wait.o `test -f 'riscv/sys_wait.c' || echo '$(srcdir)/'`riscv/sys_wait.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_wait.c' object='riscv/riscv_libsim_a-sys_wait.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_wait.o `test -f 'riscv/sys_wait.c' || echo '$(srcdir)/'`riscv/sys_wait.c + +riscv/riscv_libsim_a-sys_wait.obj: riscv/sys_wait.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_wait.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Tpo -c -o riscv/riscv_libsim_a-sys_wait.obj `if test -f 'riscv/sys_wait.c'; then $(CYGPATH_W) 'riscv/sys_wait.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_wait.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_wait.c' object='riscv/riscv_libsim_a-sys_wait.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_wait.obj `if test -f 'riscv/sys_wait.c'; then $(CYGPATH_W) 'riscv/sys_wait.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_wait.c'; fi` + +riscv/riscv_libsim_a-sys_write.o: riscv/sys_write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_write.o -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Tpo -c -o riscv/riscv_libsim_a-sys_write.o `test -f 'riscv/sys_write.c' || echo '$(srcdir)/'`riscv/sys_write.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_write.c' object='riscv/riscv_libsim_a-sys_write.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_write.o `test -f 'riscv/sys_write.c' || echo '$(srcdir)/'`riscv/sys_write.c + +riscv/riscv_libsim_a-sys_write.obj: riscv/sys_write.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT riscv/riscv_libsim_a-sys_write.obj -MD -MP -MF riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Tpo -c -o riscv/riscv_libsim_a-sys_write.obj `if test -f 'riscv/sys_write.c'; then $(CYGPATH_W) 'riscv/sys_write.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_write.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Tpo riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='riscv/sys_write.c' object='riscv/riscv_libsim_a-sys_write.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(riscv_libsim_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o riscv/riscv_libsim_a-sys_write.obj `if test -f 'riscv/sys_write.c'; then $(CYGPATH_W) 'riscv/sys_write.c'; else $(CYGPATH_W) '$(srcdir)/riscv/sys_write.c'; fi` + xtensa/xtensa_libgloss_a-syscalls.o: xtensa/syscalls.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(xtensa_libgloss_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xtensa/xtensa_libgloss_a-syscalls.o -MD -MP -MF xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Tpo -c -o xtensa/xtensa_libgloss_a-syscalls.o `test -f 'xtensa/syscalls.c' || echo '$(srcdir)/'`xtensa/syscalls.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Tpo xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Po diff --git a/libgloss/riscv/Makefile.inc b/libgloss/riscv/Makefile.inc index fafc743749..452b7da4de 100644 --- a/libgloss/riscv/Makefile.inc +++ b/libgloss/riscv/Makefile.inc @@ -40,6 +40,10 @@ multilibtool_LIBRARIES += %D%/libgloss.a %D%/sys_wait.c \ %D%/sys_write.c +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_CPPFLAGS = $(%C%_libgloss_a_CPPFLAGS) -DUSING_SIM_SPECS +%C%_libsim_a_SOURCES = $(%C%_libgloss_a_SOURCES) + multilibtool_LIBRARIES += %D%/libsemihost.a %C%_libsemihost_a_CPPFLAGS = -I$(srcdir)/%D% %C%_libsemihost_a_SOURCES = \ From a9e8e3d1cb8235f513f4d8434509acf287494fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20SVENSSON?= Date: Mon, 25 Sep 2023 20:37:45 +0200 Subject: [PATCH 442/767] newlib: Add missing prototype for _getentropy --- newlib/libc/include/sys/unistd.h | 1 + 1 file changed, 1 insertion(+) diff --git a/newlib/libc/include/sys/unistd.h b/newlib/libc/include/sys/unistd.h index 8074077003..25532251c5 100644 --- a/newlib/libc/include/sys/unistd.h +++ b/newlib/libc/include/sys/unistd.h @@ -262,6 +262,7 @@ void * _sbrk (ptrdiff_t __incr); int _unlink (const char *__path); _READ_WRITE_RETURN_TYPE _write (int __fd, const void *__buf, size_t __nbyte); int _execve (const char *__path, char * const __argv[], char * const __envp[]); +int _getentropy (void *, size_t); #endif #if !defined(__INSIDE_CYGWIN__) From 96ec8f868e1a0f5a75badfe4627a41f12cce742d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 12 Sep 2023 10:33:09 +0200 Subject: [PATCH 443/767] aarch64: Sync with ARM-software/optimized-routines Update AArch64 assembly string routines from: https://github.com/ARM-software/optimized-routines commit 0cf84f26b6b8dcad8287fe30a4dcc1fdabd06560 Author: Sebastian Huber Date: Thu Jul 27 17:14:57 2023 +0200 string: Fix corrupt GNU_PROPERTY_TYPE (5) size For ELF32 the notes alignment is 4 and not 8. Add license and copyright information to COPYING.NEWLIB as entry (56). --- COPYING.NEWLIB | 250 ++++++++++++++ newlib/libc/machine/aarch64/asmdefs.h | 106 ++++++ newlib/libc/machine/aarch64/memchr.S | 73 ++-- newlib/libc/machine/aarch64/memcmp.S | 311 +++++++++-------- newlib/libc/machine/aarch64/memcpy.S | 272 ++++++++------- newlib/libc/machine/aarch64/memset.S | 194 ++--------- newlib/libc/machine/aarch64/stpcpy.S | 36 +- newlib/libc/machine/aarch64/strchr.S | 107 ++---- newlib/libc/machine/aarch64/strchrnul.S | 90 ++--- newlib/libc/machine/aarch64/strcmp.S | 282 ++++++++------- newlib/libc/machine/aarch64/strcpy.S | 437 +++++++----------------- newlib/libc/machine/aarch64/strlen.S | 319 ++++++++--------- newlib/libc/machine/aarch64/strncmp.S | 323 ++++++++++-------- newlib/libc/machine/aarch64/strnlen.S | 256 +++++--------- newlib/libc/machine/aarch64/strrchr.S | 86 ++--- 15 files changed, 1476 insertions(+), 1666 deletions(-) create mode 100644 newlib/libc/machine/aarch64/asmdefs.h diff --git a/COPYING.NEWLIB b/COPYING.NEWLIB index ee14bb3497..176b3a4706 100644 --- a/COPYING.NEWLIB +++ b/COPYING.NEWLIB @@ -1291,3 +1291,253 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +(56) MIT OR Apache-2.0 WITH LLVM-exception (newlib/libc/machine/aarch64) + +SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + + +MIT License +----------- + +Copyright (c) 1999-2023, Arm Limited. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Apache-2.0 WITH LLVM-exception +------------------------------ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +--- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. diff --git a/newlib/libc/machine/aarch64/asmdefs.h b/newlib/libc/machine/aarch64/asmdefs.h new file mode 100644 index 0000000000..131b95e1fe --- /dev/null +++ b/newlib/libc/machine/aarch64/asmdefs.h @@ -0,0 +1,106 @@ +/* + * Macros for asm code. AArch64 version. + * + * Copyright (c) 2019-2023, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ + +#ifndef _ASMDEFS_H +#define _ASMDEFS_H + +/* Branch Target Identitication support. */ +#define BTI_C hint 34 +#define BTI_J hint 36 +/* Return address signing support (pac-ret). */ +#define PACIASP hint 25; .cfi_window_save +#define AUTIASP hint 29; .cfi_window_save + +/* GNU_PROPERTY_AARCH64_* macros from elf.h. */ +#define FEATURE_1_AND 0xc0000000 +#define FEATURE_1_BTI 1 +#define FEATURE_1_PAC 2 + +/* Add a NT_GNU_PROPERTY_TYPE_0 note. */ +#ifdef __ILP32__ +#define GNU_PROPERTY(type, value) \ + .section .note.gnu.property, "a"; \ + .p2align 2; \ + .word 4; \ + .word 12; \ + .word 5; \ + .asciz "GNU"; \ + .word type; \ + .word 4; \ + .word value; \ + .text +#else +#define GNU_PROPERTY(type, value) \ + .section .note.gnu.property, "a"; \ + .p2align 3; \ + .word 4; \ + .word 16; \ + .word 5; \ + .asciz "GNU"; \ + .word type; \ + .word 4; \ + .word value; \ + .word 0; \ + .text +#endif + +/* If set then the GNU Property Note section will be added to + mark objects to support BTI and PAC-RET. */ +#ifndef WANT_GNU_PROPERTY +#define WANT_GNU_PROPERTY 1 +#endif + +#if WANT_GNU_PROPERTY +/* Add property note with supported features to all asm files. */ +GNU_PROPERTY (FEATURE_1_AND, FEATURE_1_BTI|FEATURE_1_PAC) +#endif + +#define ENTRY_ALIGN(name, alignment) \ + .global name; \ + .type name,%function; \ + .align alignment; \ + name: \ + .cfi_startproc; \ + BTI_C; + +#define ENTRY(name) ENTRY_ALIGN(name, 6) + +#define ENTRY_ALIAS(name) \ + .global name; \ + .type name,%function; \ + name: + +#define END(name) \ + .cfi_endproc; \ + .size name, .-name; + +#define L(l) .L ## l + +#ifdef __ILP32__ + /* Sanitize padding bits of pointer arguments as per aapcs64 */ +#define PTR_ARG(n) mov w##n, w##n +#else +#define PTR_ARG(n) +#endif + +#ifdef __ILP32__ + /* Sanitize padding bits of size arguments as per aapcs64 */ +#define SIZE_ARG(n) mov w##n, w##n +#else +#define SIZE_ARG(n) +#endif + +/* Compiler supports SVE instructions */ +#ifndef HAVE_SVE +# if __aarch64__ && (__GNUC__ >= 8 || __clang_major__ >= 5) +# define HAVE_SVE 1 +# else +# define HAVE_SVE 0 +# endif +#endif + +#endif diff --git a/newlib/libc/machine/aarch64/memchr.S b/newlib/libc/machine/aarch64/memchr.S index 53f5d6bc0e..a0f305e0fc 100644 --- a/newlib/libc/machine/aarch64/memchr.S +++ b/newlib/libc/machine/aarch64/memchr.S @@ -1,31 +1,8 @@ /* * memchr - find a character in a memory zone * - * Copyright (c) 2014, ARM Limited - * All rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the company nor the names of its contributors - * may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Copyright (c) 2014-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) @@ -37,6 +14,8 @@ * Neon Available. */ +#include "asmdefs.h" + /* Arguments and results. */ #define srcin x0 #define chrin w1 @@ -70,17 +49,11 @@ * identify exactly which byte has matched. */ - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -def_fn memchr +ENTRY (memchr) + PTR_ARG (0) + SIZE_ARG (2) /* Do not dereference srcin if no bytes to compare. */ - cbz cntin, .Lzero_length + cbz cntin, L(zero_length) /* * Magic constant 0x40100401 allows us to identify which lane matches * the requested byte. @@ -93,7 +66,7 @@ def_fn memchr dup vrepmask.4s, wtmp2 ands soff, srcin, #31 and cntrem, cntin, #31 - b.eq .Lloop + b.eq L(loop) /* * Input string is not 32-byte aligned. We calculate the syndrome @@ -110,41 +83,41 @@ def_fn memchr and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b addp vend.16b, vhas_chr1.16b, vhas_chr2.16b /* 256->128 */ addp vend.16b, vend.16b, vend.16b /* 128->64 */ - mov synd, vend.2d[0] + mov synd, vend.d[0] /* Clear the soff*2 lower bits */ lsl tmp, soff, #1 lsr synd, synd, tmp lsl synd, synd, tmp /* The first block can also be the last */ - b.ls .Lmasklast + b.ls L(masklast) /* Have we found something already? */ - cbnz synd, .Ltail + cbnz synd, L(tail) -.Lloop: +L(loop): ld1 {vdata1.16b, vdata2.16b}, [src], #32 subs cntin, cntin, #32 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b /* If we're out of data we finish regardless of the result */ - b.ls .Lend + b.ls L(end) /* Use a fast check for the termination condition */ orr vend.16b, vhas_chr1.16b, vhas_chr2.16b addp vend.2d, vend.2d, vend.2d - mov synd, vend.2d[0] + mov synd, vend.d[0] /* We're not out of data, loop if we haven't found the character */ - cbz synd, .Lloop + cbz synd, L(loop) -.Lend: +L(end): /* Termination condition found, let's calculate the syndrome value */ and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b addp vend.16b, vhas_chr1.16b, vhas_chr2.16b /* 256->128 */ addp vend.16b, vend.16b, vend.16b /* 128->64 */ - mov synd, vend.2d[0] + mov synd, vend.d[0] /* Only do the clear for the last possible block */ - b.hi .Ltail + b.hs L(tail) -.Lmasklast: +L(masklast): /* Clear the (32 - ((cntrem + soff) % 32)) * 2 upper bits */ add tmp, cntrem, soff and tmp, tmp, #31 @@ -153,7 +126,7 @@ def_fn memchr lsl synd, synd, tmp lsr synd, synd, tmp -.Ltail: +L(tail): /* Count the trailing zeros using bit reversing */ rbit synd, synd /* Compensate the last post-increment */ @@ -168,9 +141,9 @@ def_fn memchr csel result, xzr, result, eq ret -.Lzero_length: +L(zero_length): mov result, #0 ret - .size memchr, . - memchr +END (memchr) #endif diff --git a/newlib/libc/machine/aarch64/memcmp.S b/newlib/libc/machine/aarch64/memcmp.S index 605d99365e..18874d3215 100644 --- a/newlib/libc/machine/aarch64/memcmp.S +++ b/newlib/libc/machine/aarch64/memcmp.S @@ -1,57 +1,7 @@ /* memcmp - compare memory - - Copyright (c) 2018 Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/* - * Copyright (c) 2017 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Copyright (c) 2013-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) @@ -60,103 +10,79 @@ /* Assumptions: * - * ARMv8-a, AArch64, unaligned accesses. + * ARMv8-a, AArch64, Advanced SIMD, unaligned accesses. */ -#define L(l) .L ## l - -/* Parameters and result. */ -#define src1 x0 -#define src2 x1 -#define limit x2 -#define result w0 - -/* Internal variables. */ -#define data1 x3 -#define data1w w3 -#define data1h x4 -#define data2 x5 -#define data2w w5 -#define data2h x6 -#define tmp1 x7 -#define tmp2 x8 - - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -def_fn memcmp p2align=6 - subs limit, limit, 8 - b.lo L(less8) - - ldr data1, [src1], 8 - ldr data2, [src2], 8 - cmp data1, data2 - b.ne L(return) - - subs limit, limit, 8 - b.gt L(more16) - - ldr data1, [src1, limit] - ldr data2, [src2, limit] - b L(return) - -L(more16): - ldr data1, [src1], 8 - ldr data2, [src2], 8 - cmp data1, data2 - bne L(return) - - /* Jump directly to comparing the last 16 bytes for 32 byte (or less) - strings. */ - subs limit, limit, 16 +#include "asmdefs.h" + +#define src1 x0 +#define src2 x1 +#define limit x2 +#define result w0 + +#define data1 x3 +#define data1w w3 +#define data2 x4 +#define data2w w4 +#define data3 x5 +#define data3w w5 +#define data4 x6 +#define data4w w6 +#define tmp x6 +#define src1end x7 +#define src2end x8 + + +ENTRY (memcmp) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) + + cmp limit, 16 + b.lo L(less16) + ldp data1, data3, [src1] + ldp data2, data4, [src2] + ccmp data1, data2, 0, ne + ccmp data3, data4, 0, eq + b.ne L(return2) + + add src1end, src1, limit + add src2end, src2, limit + cmp limit, 32 b.ls L(last_bytes) + cmp limit, 160 + b.hs L(loop_align) + sub limit, limit, 32 - /* We overlap loads between 0-32 bytes at either side of SRC1 when we - try to align, so limit it only to strings larger than 128 bytes. */ - cmp limit, 96 - b.ls L(loop16) - - /* Align src1 and adjust src2 with bytes not yet done. */ - and tmp1, src1, 15 - add limit, limit, tmp1 - sub src1, src1, tmp1 - sub src2, src2, tmp1 - - /* Loop performing 16 bytes per iteration using aligned src1. - Limit is pre-decremented by 16 and must be larger than zero. - Exit if <= 16 bytes left to do or if the data is not equal. */ .p2align 4 -L(loop16): - ldp data1, data1h, [src1], 16 - ldp data2, data2h, [src2], 16 - subs limit, limit, 16 - ccmp data1, data2, 0, hi - ccmp data1h, data2h, 0, eq - b.eq L(loop16) - +L(loop32): + ldp data1, data3, [src1, 16] + ldp data2, data4, [src2, 16] cmp data1, data2 - bne L(return) - mov data1, data1h - mov data2, data2h + ccmp data3, data4, 0, eq + b.ne L(return2) + cmp limit, 16 + b.ls L(last_bytes) + + ldp data1, data3, [src1, 32] + ldp data2, data4, [src2, 32] cmp data1, data2 - bne L(return) + ccmp data3, data4, 0, eq + b.ne L(return2) + add src1, src1, 32 + add src2, src2, 32 +L(last64): + subs limit, limit, 32 + b.hi L(loop32) /* Compare last 1-16 bytes using unaligned access. */ L(last_bytes): - add src1, src1, limit - add src2, src2, limit - ldp data1, data1h, [src1] - ldp data2, data2h, [src2] - cmp data1, data2 - bne L(return) - mov data1, data1h - mov data2, data2h + ldp data1, data3, [src1end, -16] + ldp data2, data4, [src2end, -16] +L(return2): cmp data1, data2 + csel data1, data1, data3, ne + csel data2, data2, data4, ne /* Compare data bytes and set return value to 0, -1 or 1. */ L(return): @@ -164,33 +90,106 @@ L(return): rev data1, data1 rev data2, data2 #endif - cmp data1, data2 -L(ret_eq): + cmp data1, data2 cset result, ne cneg result, result, lo ret .p2align 4 - /* Compare up to 8 bytes. Limit is [-8..-1]. */ +L(less16): + add src1end, src1, limit + add src2end, src2, limit + tbz limit, 3, L(less8) + ldr data1, [src1] + ldr data2, [src2] + ldr data3, [src1end, -8] + ldr data4, [src2end, -8] + b L(return2) + + .p2align 4 L(less8): - adds limit, limit, 4 - b.lo L(less4) - ldr data1w, [src1], 4 - ldr data2w, [src2], 4 + tbz limit, 2, L(less4) + ldr data1w, [src1] + ldr data2w, [src2] + ldr data3w, [src1end, -4] + ldr data4w, [src2end, -4] + b L(return2) + +L(less4): + tbz limit, 1, L(less2) + ldrh data1w, [src1] + ldrh data2w, [src2] cmp data1w, data2w b.ne L(return) - sub limit, limit, 4 -L(less4): - adds limit, limit, 4 - beq L(ret_eq) -L(byte_loop): - ldrb data1w, [src1], 1 - ldrb data2w, [src2], 1 - subs limit, limit, 1 - ccmp data1w, data2w, 0, ne /* NZCV = 0b0000. */ - b.eq L(byte_loop) +L(less2): + mov result, 0 + tbz limit, 0, L(return_zero) + ldrb data1w, [src1end, -1] + ldrb data2w, [src2end, -1] sub result, data1w, data2w +L(return_zero): + ret + +L(loop_align): + ldp data1, data3, [src1, 16] + ldp data2, data4, [src2, 16] + cmp data1, data2 + ccmp data3, data4, 0, eq + b.ne L(return2) + + /* Align src2 and adjust src1, src2 and limit. */ + and tmp, src2, 15 + sub tmp, tmp, 16 + sub src2, src2, tmp + add limit, limit, tmp + sub src1, src1, tmp + sub limit, limit, 64 + 16 + + .p2align 4 +L(loop64): + ldr q0, [src1, 16] + ldr q1, [src2, 16] + subs limit, limit, 64 + ldr q2, [src1, 32] + ldr q3, [src2, 32] + eor v0.16b, v0.16b, v1.16b + eor v1.16b, v2.16b, v3.16b + ldr q2, [src1, 48] + ldr q3, [src2, 48] + umaxp v0.16b, v0.16b, v1.16b + ldr q4, [src1, 64]! + ldr q5, [src2, 64]! + eor v1.16b, v2.16b, v3.16b + eor v2.16b, v4.16b, v5.16b + umaxp v1.16b, v1.16b, v2.16b + umaxp v0.16b, v0.16b, v1.16b + umaxp v0.16b, v0.16b, v0.16b + fmov tmp, d0 + ccmp tmp, 0, 0, hi + b.eq L(loop64) + + /* If equal, process last 1-64 bytes using scalar loop. */ + add limit, limit, 64 + 16 + cbz tmp, L(last64) + + /* Determine the 8-byte aligned offset of the first difference. */ +#ifdef __AARCH64EB__ + rev16 tmp, tmp +#endif + rev tmp, tmp + clz tmp, tmp + bic tmp, tmp, 7 + sub tmp, tmp, 48 + ldr data1, [src1, tmp] + ldr data2, [src2, tmp] +#ifndef __AARCH64EB__ + rev data1, data1 + rev data2, data2 +#endif + mov result, 1 + cmp data1, data2 + cneg result, result, lo ret - .size memcmp, . - memcmp +END (memcmp) #endif diff --git a/newlib/libc/machine/aarch64/memcpy.S b/newlib/libc/machine/aarch64/memcpy.S index 463bad0a18..248e7843a2 100644 --- a/newlib/libc/machine/aarch64/memcpy.S +++ b/newlib/libc/machine/aarch64/memcpy.S @@ -1,55 +1,8 @@ -/* Copyright (c) 2012-2013, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - /* - * Copyright (c) 2015 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. + * memcpy - copy memory area * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Copyright (c) 2012-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception */ /* Assumptions: @@ -61,6 +14,7 @@ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See memcpy-stub.c */ #else +#include "asmdefs.h" #define dstin x0 #define src x1 @@ -71,122 +25,139 @@ #define A_l x6 #define A_lw w6 #define A_h x7 -#define A_hw w7 #define B_l x8 #define B_lw w8 #define B_h x9 #define C_l x10 +#define C_lw w10 #define C_h x11 #define D_l x12 #define D_h x13 -#define E_l src -#define E_h count -#define F_l srcend -#define F_h dst -#define tmp1 x9 - -#define L(l) .L ## l - - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -/* Copies are split into 3 main cases: small copies of up to 16 bytes, - medium copies of 17..96 bytes which are fully unrolled. Large copies - of more than 96 bytes align the destination and use an unrolled loop - processing 64 bytes per iteration. - Small and medium copies read all data before writing, allowing any - kind of overlap, and memmove tailcalls memcpy for these cases as - well as non-overlapping copies. +#define E_l x14 +#define E_h x15 +#define F_l x16 +#define F_h x17 +#define G_l count +#define G_h dst +#define H_l src +#define H_h srcend +#define tmp1 x14 + +/* This implementation handles overlaps and supports both memcpy and memmove + from a single entry point. It uses unaligned accesses and branchless + sequences to keep the code small, simple and improve performance. + + Copies are split into 3 main cases: small copies of up to 32 bytes, medium + copies of up to 128 bytes, and large copies. The overhead of the overlap + check is negligible since it is only required for large copies. + + Large copies use a software pipelined loop processing 64 bytes per iteration. + The destination pointer is 16-byte aligned to minimize unaligned accesses. + The loop tail is handled by always copying 64 bytes from the end. */ -def_fn memcpy p2align=6 - prfm PLDL1KEEP, [src] +ENTRY_ALIAS (memmove) +ENTRY (memcpy) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) add srcend, src, count add dstend, dstin, count - cmp count, 16 - b.ls L(copy16) - cmp count, 96 + cmp count, 128 b.hi L(copy_long) + cmp count, 32 + b.hi L(copy32_128) - /* Medium copies: 17..96 bytes. */ - sub tmp1, count, 1 + /* Small copies: 0..32 bytes. */ + cmp count, 16 + b.lo L(copy16) ldp A_l, A_h, [src] - tbnz tmp1, 6, L(copy96) ldp D_l, D_h, [srcend, -16] - tbz tmp1, 5, 1f - ldp B_l, B_h, [src, 16] - ldp C_l, C_h, [srcend, -32] - stp B_l, B_h, [dstin, 16] - stp C_l, C_h, [dstend, -32] -1: stp A_l, A_h, [dstin] stp D_l, D_h, [dstend, -16] ret - .p2align 4 - /* Small copies: 0..16 bytes. */ + /* Copy 8-15 bytes. */ L(copy16): - cmp count, 8 - b.lo 1f + tbz count, 3, L(copy8) ldr A_l, [src] ldr A_h, [srcend, -8] str A_l, [dstin] str A_h, [dstend, -8] ret - .p2align 4 -1: - tbz count, 2, 1f + + .p2align 3 + /* Copy 4-7 bytes. */ +L(copy8): + tbz count, 2, L(copy4) ldr A_lw, [src] - ldr A_hw, [srcend, -4] + ldr B_lw, [srcend, -4] str A_lw, [dstin] - str A_hw, [dstend, -4] + str B_lw, [dstend, -4] ret - /* Copy 0..3 bytes. Use a branchless sequence that copies the same - byte 3 times if count==1, or the 2nd byte twice if count==2. */ -1: - cbz count, 2f + /* Copy 0..3 bytes using a branchless sequence. */ +L(copy4): + cbz count, L(copy0) lsr tmp1, count, 1 ldrb A_lw, [src] - ldrb A_hw, [srcend, -1] + ldrb C_lw, [srcend, -1] ldrb B_lw, [src, tmp1] strb A_lw, [dstin] strb B_lw, [dstin, tmp1] - strb A_hw, [dstend, -1] -2: ret + strb C_lw, [dstend, -1] +L(copy0): + ret .p2align 4 - /* Copy 64..96 bytes. Copy 64 bytes from the start and - 32 bytes from the end. */ -L(copy96): + /* Medium copies: 33..128 bytes. */ +L(copy32_128): + ldp A_l, A_h, [src] ldp B_l, B_h, [src, 16] - ldp C_l, C_h, [src, 32] - ldp D_l, D_h, [src, 48] - ldp E_l, E_h, [srcend, -32] - ldp F_l, F_h, [srcend, -16] + ldp C_l, C_h, [srcend, -32] + ldp D_l, D_h, [srcend, -16] + cmp count, 64 + b.hi L(copy128) stp A_l, A_h, [dstin] stp B_l, B_h, [dstin, 16] - stp C_l, C_h, [dstin, 32] - stp D_l, D_h, [dstin, 48] - stp E_l, E_h, [dstend, -32] - stp F_l, F_h, [dstend, -16] + stp C_l, C_h, [dstend, -32] + stp D_l, D_h, [dstend, -16] ret - /* Align DST to 16 byte alignment so that we don't cross cache line - boundaries on both loads and stores. There are at least 96 bytes - to copy, so copy 16 bytes unaligned and then align. The loop - copies 64 bytes per iteration and prefetches one iteration ahead. */ + .p2align 4 + /* Copy 65..128 bytes. */ +L(copy128): + ldp E_l, E_h, [src, 32] + ldp F_l, F_h, [src, 48] + cmp count, 96 + b.ls L(copy96) + ldp G_l, G_h, [srcend, -64] + ldp H_l, H_h, [srcend, -48] + stp G_l, G_h, [dstend, -64] + stp H_l, H_h, [dstend, -48] +L(copy96): + stp A_l, A_h, [dstin] + stp B_l, B_h, [dstin, 16] + stp E_l, E_h, [dstin, 32] + stp F_l, F_h, [dstin, 48] + stp C_l, C_h, [dstend, -32] + stp D_l, D_h, [dstend, -16] + ret .p2align 4 + /* Copy more than 128 bytes. */ L(copy_long): + /* Use backwards copy if there is an overlap. */ + sub tmp1, dstin, src + cbz tmp1, L(copy0) + cmp tmp1, count + b.lo L(copy_long_backwards) + + /* Copy 16 bytes and then align dst to 16-byte alignment. */ + + ldp D_l, D_h, [src] and tmp1, dstin, 15 bic dst, dstin, 15 - ldp D_l, D_h, [src] sub src, src, tmp1 add count, count, tmp1 /* Count is now 16 too large. */ ldp A_l, A_h, [src, 16] @@ -195,8 +166,9 @@ L(copy_long): ldp C_l, C_h, [src, 48] ldp D_l, D_h, [src, 64]! subs count, count, 128 + 16 /* Test and readjust count. */ - b.ls 2f -1: + b.ls L(copy64_from_end) + +L(loop64): stp A_l, A_h, [dst, 16] ldp A_l, A_h, [src, 16] stp B_l, B_h, [dst, 32] @@ -206,12 +178,10 @@ L(copy_long): stp D_l, D_h, [dst, 64]! ldp D_l, D_h, [src, 64]! subs count, count, 64 - b.hi 1b + b.hi L(loop64) - /* Write the last full set of 64 bytes. The remainder is at most 64 - bytes, so it is safe to always copy 64 bytes from the end even if - there is just 1 byte left. */ -2: + /* Write the last iteration and copy 64 bytes from the end. */ +L(copy64_from_end): ldp E_l, E_h, [srcend, -64] stp A_l, A_h, [dst, 16] ldp A_l, A_h, [srcend, -48] @@ -226,5 +196,51 @@ L(copy_long): stp C_l, C_h, [dstend, -16] ret - .size memcpy, . - memcpy + .p2align 4 + + /* Large backwards copy for overlapping copies. + Copy 16 bytes and then align dst to 16-byte alignment. */ +L(copy_long_backwards): + ldp D_l, D_h, [srcend, -16] + and tmp1, dstend, 15 + sub srcend, srcend, tmp1 + sub count, count, tmp1 + ldp A_l, A_h, [srcend, -16] + stp D_l, D_h, [dstend, -16] + ldp B_l, B_h, [srcend, -32] + ldp C_l, C_h, [srcend, -48] + ldp D_l, D_h, [srcend, -64]! + sub dstend, dstend, tmp1 + subs count, count, 128 + b.ls L(copy64_from_start) + +L(loop64_backwards): + stp A_l, A_h, [dstend, -16] + ldp A_l, A_h, [srcend, -16] + stp B_l, B_h, [dstend, -32] + ldp B_l, B_h, [srcend, -32] + stp C_l, C_h, [dstend, -48] + ldp C_l, C_h, [srcend, -48] + stp D_l, D_h, [dstend, -64]! + ldp D_l, D_h, [srcend, -64]! + subs count, count, 64 + b.hi L(loop64_backwards) + + /* Write the last iteration and copy 64 bytes from the start. */ +L(copy64_from_start): + ldp G_l, G_h, [src, 48] + stp A_l, A_h, [dstend, -16] + ldp A_l, A_h, [src, 32] + stp B_l, B_h, [dstend, -32] + ldp B_l, B_h, [src, 16] + stp C_l, C_h, [dstend, -48] + ldp C_l, C_h, [src] + stp D_l, D_h, [dstend, -64] + stp G_l, G_h, [dstin, 48] + stp A_l, A_h, [dstin, 32] + stp B_l, B_h, [dstin, 16] + stp C_l, C_h, [dstin] + ret + +END (memcpy) #endif diff --git a/newlib/libc/machine/aarch64/memset.S b/newlib/libc/machine/aarch64/memset.S index 103e3f8bb0..ca76439a91 100644 --- a/newlib/libc/machine/aarch64/memset.S +++ b/newlib/libc/machine/aarch64/memset.S @@ -1,66 +1,20 @@ -/* Copyright (c) 2012-2013, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - /* - * Copyright (c) 2015 ARM Ltd - * All rights reserved. + * memset - fill memory with a constant byte * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Copyright (c) 2012-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception */ /* Assumptions: * - * ARMv8-a, AArch64, unaligned accesses + * ARMv8-a, AArch64, Advanced SIMD, unaligned accesses. * */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See memset-stub.c */ #else +#include "asmdefs.h" #define dstin x0 #define val x1 @@ -68,24 +22,11 @@ #define count x2 #define dst x3 #define dstend x4 -#define tmp1 x5 -#define tmp1w w5 -#define tmp2 x6 -#define tmp2w w6 -#define zva_len x7 -#define zva_lenw w7 - -#define L(l) .L ## l +#define zva_val x5 - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -def_fn memset p2align=6 +ENTRY (memset) + PTR_ARG (0) + SIZE_ARG (2) dup v0.16B, valw add dstend, dstin, count @@ -101,7 +42,7 @@ def_fn memset p2align=6 str val, [dstin] str val, [dstend, -8] ret - nop + .p2align 4 1: tbz count, 2, 2f str valw, [dstin] str valw, [dstend, -4] @@ -131,110 +72,49 @@ L(set96): stp q0, q0, [dstend, -32] ret - .p2align 3 - nop + .p2align 4 L(set_long): and valw, valw, 255 bic dst, dstin, 15 str q0, [dstin] - cmp count, 256 - ccmp valw, 0, 0, cs - b.eq L(try_zva) -L(no_zva): - sub count, dstend, dst /* Count is 16 too large. */ - sub dst, dst, 16 /* Dst is biased by -32. */ - sub count, count, 64 + 16 /* Adjust count and bias for loop. */ -1: stp q0, q0, [dst, 32] - stp q0, q0, [dst, 64]! -L(tail64): - subs count, count, 64 - b.hi 1b -2: stp q0, q0, [dstend, -64] - stp q0, q0, [dstend, -32] - ret - - .p2align 3 -L(try_zva): - mrs tmp1, dczid_el0 - tbnz tmp1w, 4, L(no_zva) - and tmp1w, tmp1w, 15 - cmp tmp1w, 4 /* ZVA size is 64 bytes. */ - b.ne L(zva_128) - - /* Write the first and last 64 byte aligned block using stp rather - than using DC ZVA. This is faster on some cores. - */ -L(zva_64): + cmp count, 160 + ccmp valw, 0, 0, hs + b.ne L(no_zva) + +#ifndef SKIP_ZVA_CHECK + mrs zva_val, dczid_el0 + and zva_val, zva_val, 31 + cmp zva_val, 4 /* ZVA size is 64 bytes. */ + b.ne L(no_zva) +#endif str q0, [dst, 16] stp q0, q0, [dst, 32] bic dst, dst, 63 - stp q0, q0, [dst, 64] - stp q0, q0, [dst, 96] - sub count, dstend, dst /* Count is now 128 too large. */ - sub count, count, 128+64+64 /* Adjust count and bias for loop. */ - add dst, dst, 128 - nop -1: dc zva, dst + sub count, dstend, dst /* Count is now 64 too large. */ + sub count, count, 128 /* Adjust count and bias for loop. */ + + .p2align 4 +L(zva_loop): add dst, dst, 64 + dc zva, dst subs count, count, 64 - b.hi 1b - stp q0, q0, [dst, 0] - stp q0, q0, [dst, 32] + b.hi L(zva_loop) stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret - .p2align 3 -L(zva_128): - cmp tmp1w, 5 /* ZVA size is 128 bytes. */ - b.ne L(zva_other) - - str q0, [dst, 16] +L(no_zva): + sub count, dstend, dst /* Count is 16 too large. */ + sub dst, dst, 16 /* Dst is biased by -32. */ + sub count, count, 64 + 16 /* Adjust count and bias for loop. */ +L(no_zva_loop): stp q0, q0, [dst, 32] - stp q0, q0, [dst, 64] - stp q0, q0, [dst, 96] - bic dst, dst, 127 - sub count, dstend, dst /* Count is now 128 too large. */ - sub count, count, 128+128 /* Adjust count and bias for loop. */ - add dst, dst, 128 -1: dc zva, dst - add dst, dst, 128 - subs count, count, 128 - b.hi 1b - stp q0, q0, [dstend, -128] - stp q0, q0, [dstend, -96] + stp q0, q0, [dst, 64]! + subs count, count, 64 + b.hi L(no_zva_loop) stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret -L(zva_other): - mov tmp2w, 4 - lsl zva_lenw, tmp2w, tmp1w - add tmp1, zva_len, 64 /* Max alignment bytes written. */ - cmp count, tmp1 - blo L(no_zva) - - sub tmp2, zva_len, 1 - add tmp1, dst, zva_len - add dst, dst, 16 - subs count, tmp1, dst /* Actual alignment bytes to write. */ - bic tmp1, tmp1, tmp2 /* Aligned dc zva start address. */ - beq 2f -1: stp q0, q0, [dst], 64 - stp q0, q0, [dst, -32] - subs count, count, 64 - b.hi 1b -2: mov dst, tmp1 - sub count, dstend, tmp1 /* Remaining bytes to write. */ - subs count, count, zva_len - b.lo 4f -3: dc zva, dst - add dst, dst, zva_len - subs count, count, zva_len - b.hs 3b -4: add count, count, zva_len - sub dst, dst, 32 /* Bias dst for tail loop. */ - b L(tail64) - - .size memset, . - memset +END (memset) #endif diff --git a/newlib/libc/machine/aarch64/stpcpy.S b/newlib/libc/machine/aarch64/stpcpy.S index 696b45889f..155c68d75a 100644 --- a/newlib/libc/machine/aarch64/stpcpy.S +++ b/newlib/libc/machine/aarch64/stpcpy.S @@ -1,34 +1,10 @@ /* - stpcpy - copy a string returning pointer to end. + * stpcpy - copy a string returning pointer to end. + * + * Copyright (c) 2020, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ - Copyright (c) 2015 ARM Ltd. - All Rights Reserved. +#define BUILD_STPCPY 1 - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the company nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/* This is just a wrapper that uses strcpy code with appropriate - pre-defines. */ - -#define BUILD_STPCPY #include "strcpy.S" diff --git a/newlib/libc/machine/aarch64/strchr.S b/newlib/libc/machine/aarch64/strchr.S index 2448dbc7d5..500d9aff29 100644 --- a/newlib/libc/machine/aarch64/strchr.S +++ b/newlib/libc/machine/aarch64/strchr.S @@ -1,32 +1,9 @@ /* - strchr - find a character in a string - - Copyright (c) 2014, ARM Limited - All rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the company nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - + * strchr - find a character in a string + * + * Copyright (c) 2014-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strchr-stub.c */ #else @@ -37,6 +14,8 @@ * Neon Available. */ +#include "asmdefs.h" + /* Arguments and results. */ #define srcin x0 #define chrin w1 @@ -74,26 +53,19 @@ /* Locals and temporaries. */ - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -def_fn strchr - /* Magic constant 0x40100401 to allow us to identify which lane - matches the requested byte. Magic constant 0x80200802 used - similarly for NUL termination. */ - mov wtmp2, #0x0401 - movk wtmp2, #0x4010, lsl #16 +ENTRY (strchr) + PTR_ARG (0) + /* Magic constant 0xc0300c03 to allow us to identify which lane + matches the requested byte. Even bits are set if the character + matches, odd bits if either the char is NUL or matches. */ + mov wtmp2, 0x0c03 + movk wtmp2, 0xc030, lsl 16 dup vrepchr.16b, chrin bic src, srcin, #31 /* Work with aligned 32-byte hunks. */ dup vrepmask_c.4s, wtmp2 ands tmp1, srcin, #31 add vrepmask_0.4s, vrepmask_c.4s, vrepmask_c.4s /* equiv: lsl #1 */ - b.eq .Lloop + b.eq L(loop) /* Input string is not 32-byte aligned. Rather than forcing the padding bytes to a safe value, we calculate the syndrome @@ -105,49 +77,42 @@ def_fn strchr cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b - and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b - and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b - and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b - and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b - orr vend1.16b, vhas_nul1.16b, vhas_chr1.16b - orr vend2.16b, vhas_nul2.16b, vhas_chr2.16b + bif vhas_nul1.16b, vhas_chr1.16b, vrepmask_0.16b + bif vhas_nul2.16b, vhas_chr2.16b, vrepmask_0.16b + and vend1.16b, vhas_nul1.16b, vrepmask_c.16b + and vend2.16b, vhas_nul2.16b, vrepmask_c.16b lsl tmp1, tmp1, #1 addp vend1.16b, vend1.16b, vend2.16b // 256->128 mov tmp3, #~0 addp vend1.16b, vend1.16b, vend2.16b // 128->64 lsr tmp1, tmp3, tmp1 - mov tmp3, vend1.2d[0] + mov tmp3, vend1.d[0] bic tmp1, tmp3, tmp1 // Mask padding bits. - cbnz tmp1, .Ltail + cbnz tmp1, L(tail) -.Lloop: + .p2align 4 +L(loop): ld1 {vdata1.16b, vdata2.16b}, [src], #32 - cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b - cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b - /* Use a fast check for the termination condition. */ - orr vend1.16b, vhas_nul1.16b, vhas_chr1.16b - orr vend2.16b, vhas_nul2.16b, vhas_chr2.16b - orr vend1.16b, vend1.16b, vend2.16b - addp vend1.2d, vend1.2d, vend1.2d - mov tmp1, vend1.2d[0] - cbz tmp1, .Lloop + cmhs vhas_nul1.16b, vhas_chr1.16b, vdata1.16b + cmhs vhas_nul2.16b, vhas_chr2.16b, vdata2.16b + orr vend1.16b, vhas_nul1.16b, vhas_nul2.16b + umaxp vend1.16b, vend1.16b, vend1.16b + mov tmp1, vend1.d[0] + cbz tmp1, L(loop) /* Termination condition found. Now need to establish exactly why we terminated. */ - and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b - and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b - and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b - and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b - orr vend1.16b, vhas_nul1.16b, vhas_chr1.16b - orr vend2.16b, vhas_nul2.16b, vhas_chr2.16b + bif vhas_nul1.16b, vhas_chr1.16b, vrepmask_0.16b + bif vhas_nul2.16b, vhas_chr2.16b, vrepmask_0.16b + and vend1.16b, vhas_nul1.16b, vrepmask_c.16b + and vend2.16b, vhas_nul2.16b, vrepmask_c.16b addp vend1.16b, vend1.16b, vend2.16b // 256->128 addp vend1.16b, vend1.16b, vend2.16b // 128->64 - - mov tmp1, vend1.2d[0] -.Ltail: + mov tmp1, vend1.d[0] +L(tail): /* Count the trailing zeros, by bit reversing... */ rbit tmp1, tmp1 /* Re-bias source. */ @@ -160,5 +125,5 @@ def_fn strchr csel result, result, xzr, eq ret - .size strchr, . - strchr +END (strchr) #endif diff --git a/newlib/libc/machine/aarch64/strchrnul.S b/newlib/libc/machine/aarch64/strchrnul.S index a0ac13b7f4..ceaf4dca17 100644 --- a/newlib/libc/machine/aarch64/strchrnul.S +++ b/newlib/libc/machine/aarch64/strchrnul.S @@ -1,32 +1,9 @@ /* - strchrnul - find a character or nul in a string - - Copyright (c) 2014, ARM Limited - All rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the company nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - + * strchrnul - find a character or nul in a string + * + * Copyright (c) 2014-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strchrnul-stub.c */ #else @@ -37,6 +14,8 @@ * Neon Available. */ +#include "asmdefs.h" + /* Arguments and results. */ #define srcin x0 #define chrin w1 @@ -70,15 +49,8 @@ /* Locals and temporaries. */ - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -def_fn strchrnul +ENTRY (strchrnul) + PTR_ARG (0) /* Magic constant 0x40100401 to allow us to identify which lane matches the termination condition. */ mov wtmp2, #0x0401 @@ -87,7 +59,7 @@ def_fn strchrnul bic src, srcin, #31 /* Work with aligned 32-byte hunks. */ dup vrepmask.4s, wtmp2 ands tmp1, srcin, #31 - b.eq .Lloop + b.eq L(loop) /* Input string is not 32-byte aligned. Rather than forcing the padding bytes to a safe value, we calculate the syndrome @@ -95,47 +67,43 @@ def_fn strchrnul syndrome that are related to the padding. */ ld1 {vdata1.16b, vdata2.16b}, [src], #32 neg tmp1, tmp1 - cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b - cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b - orr vhas_chr1.16b, vhas_chr1.16b, vhas_nul1.16b - orr vhas_chr2.16b, vhas_chr2.16b, vhas_nul2.16b - and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b - and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b + cmhs vhas_nul1.16b, vhas_chr1.16b, vdata1.16b + cmhs vhas_nul2.16b, vhas_chr2.16b, vdata2.16b + and vhas_chr1.16b, vhas_nul1.16b, vrepmask.16b + and vhas_chr2.16b, vhas_nul2.16b, vrepmask.16b lsl tmp1, tmp1, #1 addp vend1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 mov tmp3, #~0 addp vend1.16b, vend1.16b, vend1.16b // 128->64 lsr tmp1, tmp3, tmp1 - mov tmp3, vend1.2d[0] + mov tmp3, vend1.d[0] bic tmp1, tmp3, tmp1 // Mask padding bits. - cbnz tmp1, .Ltail + cbnz tmp1, L(tail) -.Lloop: + .p2align 4 +L(loop): ld1 {vdata1.16b, vdata2.16b}, [src], #32 - cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b - cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b - /* Use a fast check for the termination condition. */ - orr vhas_chr1.16b, vhas_nul1.16b, vhas_chr1.16b - orr vhas_chr2.16b, vhas_nul2.16b, vhas_chr2.16b - orr vend1.16b, vhas_chr1.16b, vhas_chr2.16b - addp vend1.2d, vend1.2d, vend1.2d - mov tmp1, vend1.2d[0] - cbz tmp1, .Lloop + cmhs vhas_nul1.16b, vhas_chr1.16b, vdata1.16b + cmhs vhas_nul2.16b, vhas_chr2.16b, vdata2.16b + orr vend1.16b, vhas_nul1.16b, vhas_nul2.16b + umaxp vend1.16b, vend1.16b, vend1.16b + mov tmp1, vend1.d[0] + cbz tmp1, L(loop) /* Termination condition found. Now need to establish exactly why we terminated. */ - and vhas_chr1.16b, vhas_chr1.16b, vrepmask.16b - and vhas_chr2.16b, vhas_chr2.16b, vrepmask.16b + and vhas_chr1.16b, vhas_nul1.16b, vrepmask.16b + and vhas_chr2.16b, vhas_nul2.16b, vrepmask.16b addp vend1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 addp vend1.16b, vend1.16b, vend1.16b // 128->64 - mov tmp1, vend1.2d[0] -.Ltail: + mov tmp1, vend1.d[0] +L(tail): /* Count the trailing zeros, by bit reversing... */ rbit tmp1, tmp1 /* Re-bias source. */ @@ -145,5 +113,5 @@ def_fn strchrnul add result, src, tmp1, lsr #1 ret - .size strchrnul, . - strchrnul +END (strchrnul) #endif diff --git a/newlib/libc/machine/aarch64/strcmp.S b/newlib/libc/machine/aarch64/strcmp.S index e2bef2d49d..691a1760ee 100644 --- a/newlib/libc/machine/aarch64/strcmp.S +++ b/newlib/libc/machine/aarch64/strcmp.S @@ -1,202 +1,192 @@ -/* Copyright (c) 2012-2018, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/* Assumptions: +/* + * strcmp - compare two strings * - * ARMv8-a, AArch64 + * Copyright (c) 2012-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strcmp-stub.c */ #else - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm +/* Assumptions: + * + * ARMv8-a, AArch64. + * MTE compatible. + */ -#define L(label) .L ## label +#include "asmdefs.h" #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f -#define REP8_80 0x8080808080808080 -/* Parameters and result. */ #define src1 x0 #define src2 x1 #define result x0 -/* Internal variables. */ #define data1 x2 #define data1w w2 #define data2 x3 #define data2w w3 #define has_nul x4 #define diff x5 +#define off1 x5 #define syndrome x6 -#define tmp1 x7 -#define tmp2 x8 -#define tmp3 x9 -#define zeroones x10 -#define pos x11 - - /* Start of performance-critical section -- one 64B cache line. */ -def_fn strcmp p2align=6 - eor tmp1, src1, src2 - mov zeroones, #REP8_01 - tst tmp1, #7 +#define tmp x6 +#define data3 x7 +#define zeroones x8 +#define shift x9 +#define off2 x10 + +/* On big-endian early bytes are at MSB and on little-endian LSB. + LS_FW means shifting towards early bytes. */ +#ifdef __AARCH64EB__ +# define LS_FW lsl +#else +# define LS_FW lsr +#endif + +/* NUL detection works on the principle that (X - 1) & (~X) & 0x80 + (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and + can be done in parallel across the entire word. + Since carry propagation makes 0x1 bytes before a NUL byte appear + NUL too in big-endian, byte-reverse the data before the NUL check. */ + + +ENTRY (strcmp) + PTR_ARG (0) + PTR_ARG (1) + sub off2, src2, src1 + mov zeroones, REP8_01 + and tmp, src1, 7 + tst off2, 7 b.ne L(misaligned8) - ands tmp1, src1, #7 - b.ne L(mutual_align) - /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 - (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and - can be done in parallel across the entire word. */ + cbnz tmp, L(mutual_align) + + .p2align 4 + L(loop_aligned): - ldr data1, [src1], #8 - ldr data2, [src2], #8 + ldr data2, [src1, off2] + ldr data1, [src1], 8 L(start_realigned): - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - eor diff, data1, data2 /* Non-zero if differences found. */ - bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ +#ifdef __AARCH64EB__ + rev tmp, data1 + sub has_nul, tmp, zeroones + orr tmp, tmp, REP8_7f +#else + sub has_nul, data1, zeroones + orr tmp, data1, REP8_7f +#endif + bics has_nul, has_nul, tmp /* Non-zero if NUL terminator. */ + ccmp data1, data2, 0, eq + b.eq L(loop_aligned) +#ifdef __AARCH64EB__ + rev has_nul, has_nul +#endif + eor diff, data1, data2 orr syndrome, diff, has_nul - cbz syndrome, L(loop_aligned) - /* End of performance-critical section -- one 64B cache line. */ - L(end): -#ifndef __AARCH64EB__ +#ifndef __AARCH64EB__ rev syndrome, syndrome rev data1, data1 - /* The MS-non-zero bit of the syndrome marks either the first bit - that is different, or the top bit of the first zero byte. - Shifting left now will bring the critical information into the - top bits. */ - clz pos, syndrome rev data2, data2 - lsl data1, data1, pos - lsl data2, data2, pos - /* But we need to zero-extend (char is unsigned) the value and then - perform a signed 32-bit subtraction. */ - lsr data1, data1, #56 - sub result, data1, data2, lsr #56 - ret -#else - /* For big-endian we cannot use the trick with the syndrome value - as carry-propagation can corrupt the upper bits if the trailing - bytes in the string contain 0x01. */ - /* However, if there is no NUL byte in the dword, we can generate - the result directly. We can't just subtract the bytes as the - MSB might be significant. */ - cbnz has_nul, 1f - cmp data1, data2 - cset result, ne - cneg result, result, lo - ret -1: - /* Re-compute the NUL-byte detection, using a byte-reversed value. */ - rev tmp3, data1 - sub tmp1, tmp3, zeroones - orr tmp2, tmp3, #REP8_7f - bic has_nul, tmp1, tmp2 - rev has_nul, has_nul - orr syndrome, diff, has_nul - clz pos, syndrome - /* The MS-non-zero bit of the syndrome marks either the first bit - that is different, or the top bit of the first zero byte. +#endif + clz shift, syndrome + /* The most-significant-non-zero bit of the syndrome marks either the + first bit that is different, or the top bit of the first zero byte. Shifting left now will bring the critical information into the top bits. */ - lsl data1, data1, pos - lsl data2, data2, pos + lsl data1, data1, shift + lsl data2, data2, shift /* But we need to zero-extend (char is unsigned) the value and then perform a signed 32-bit subtraction. */ - lsr data1, data1, #56 - sub result, data1, data2, lsr #56 + lsr data1, data1, 56 + sub result, data1, data2, lsr 56 ret -#endif + + .p2align 4 L(mutual_align): /* Sources are mutually aligned, but are not currently at an alignment boundary. Round down the addresses and then mask off - the bytes that preceed the start point. */ - bic src1, src1, #7 - bic src2, src2, #7 - lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ - ldr data1, [src1], #8 - neg tmp1, tmp1 /* Bits to alignment -64. */ - ldr data2, [src2], #8 - mov tmp2, #~0 -#ifdef __AARCH64EB__ - /* Big-endian. Early bytes are at MSB. */ - lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ -#else - /* Little-endian. Early bytes are at LSB. */ - lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ -#endif - orr data1, data1, tmp2 - orr data2, data2, tmp2 + the bytes that precede the start point. */ + bic src1, src1, 7 + ldr data2, [src1, off2] + ldr data1, [src1], 8 + neg shift, src2, lsl 3 /* Bits to alignment -64. */ + mov tmp, -1 + LS_FW tmp, tmp, shift + orr data1, data1, tmp + orr data2, data2, tmp b L(start_realigned) L(misaligned8): /* Align SRC1 to 8 bytes and then compare 8 bytes at a time, always - checking to make sure that we don't access beyond page boundary in - SRC2. */ - tst src1, #7 - b.eq L(loop_misaligned) + checking to make sure that we don't access beyond the end of SRC2. */ + cbz tmp, L(src1_aligned) L(do_misaligned): - ldrb data1w, [src1], #1 - ldrb data2w, [src2], #1 - cmp data1w, #1 - ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ + ldrb data1w, [src1], 1 + ldrb data2w, [src2], 1 + cmp data1w, 0 + ccmp data1w, data2w, 0, ne /* NZCV = 0b0000. */ b.ne L(done) - tst src1, #7 + tst src1, 7 b.ne L(do_misaligned) -L(loop_misaligned): - /* Test if we are within the last dword of the end of a 4K page. If - yes then jump back to the misaligned loop to copy a byte at a time. */ - and tmp1, src2, #0xff8 - eor tmp1, tmp1, #0xff8 - cbz tmp1, L(do_misaligned) - ldr data1, [src1], #8 - ldr data2, [src2], #8 - - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - eor diff, data1, data2 /* Non-zero if differences found. */ - bic has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ +L(src1_aligned): + neg shift, src2, lsl 3 + bic src2, src2, 7 + ldr data3, [src2], 8 +#ifdef __AARCH64EB__ + rev data3, data3 +#endif + lsr tmp, zeroones, shift + orr data3, data3, tmp + sub has_nul, data3, zeroones + orr tmp, data3, REP8_7f + bics has_nul, has_nul, tmp + b.ne L(tail) + + sub off1, src2, src1 + + .p2align 4 + +L(loop_unaligned): + ldr data3, [src1, off1] + ldr data2, [src1, off2] +#ifdef __AARCH64EB__ + rev data3, data3 +#endif + sub has_nul, data3, zeroones + orr tmp, data3, REP8_7f + ldr data1, [src1], 8 + bics has_nul, has_nul, tmp + ccmp data1, data2, 0, eq + b.eq L(loop_unaligned) + + lsl tmp, has_nul, shift +#ifdef __AARCH64EB__ + rev tmp, tmp +#endif + eor diff, data1, data2 + orr syndrome, diff, tmp + cbnz syndrome, L(end) +L(tail): + ldr data1, [src1] + neg shift, shift + lsr data2, data3, shift + lsr has_nul, has_nul, shift +#ifdef __AARCH64EB__ + rev data2, data2 + rev has_nul, has_nul +#endif + eor diff, data1, data2 orr syndrome, diff, has_nul - cbz syndrome, L(loop_misaligned) b L(end) L(done): sub result, data1, data2 ret - .size strcmp, .-strcmp +END (strcmp) #endif diff --git a/newlib/libc/machine/aarch64/strcpy.S b/newlib/libc/machine/aarch64/strcpy.S index e5405f2535..57c46f3908 100644 --- a/newlib/libc/machine/aarch64/strcpy.S +++ b/newlib/libc/machine/aarch64/strcpy.S @@ -1,341 +1,160 @@ /* - strcpy/stpcpy - copy a string returning pointer to start/end. - - Copyright (c) 2013, 2014, 2015 ARM Ltd. - All Rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the company nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - + * strcpy/stpcpy - copy a string returning pointer to start/end. + * + * Copyright (c) 2020-2023, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strchr-stub.c */ #else /* Assumptions: * - * ARMv8-a, AArch64, unaligned accesses, min page size 4k. + * ARMv8-a, AArch64, Advanced SIMD. + * MTE compatible. */ -/* To build as stpcpy, define BUILD_STPCPY before compiling this file. +#include "asmdefs.h" - To test the page crossing code path more thoroughly, compile with - -DSTRCPY_TEST_PAGE_CROSS - this will force all copies through the slower - entry path. This option is not intended for production use. */ - -/* Arguments and results. */ #define dstin x0 #define srcin x1 +#define result x0 -/* Locals and temporaries. */ #define src x2 #define dst x3 -#define data1 x4 -#define data1w w4 -#define data2 x5 -#define data2w w5 -#define has_nul1 x6 -#define has_nul2 x7 -#define tmp1 x8 -#define tmp2 x9 -#define tmp3 x10 -#define tmp4 x11 -#define zeroones x12 -#define data1a x13 -#define data2a x14 -#define pos x15 -#define len x16 -#define to_align x17 +#define len x4 +#define synd x4 +#define tmp x5 +#define shift x5 +#define data1 x6 +#define dataw1 w6 +#define data2 x7 +#define dataw2 w7 + +#define dataq q0 +#define vdata v0 +#define vhas_nul v1 +#define vend v2 +#define dend d2 +#define dataq2 q1 #ifdef BUILD_STPCPY -#define STRCPY stpcpy +# define STRCPY stpcpy +# define IFSTPCPY(X,...) X,__VA_ARGS__ #else -#define STRCPY strcpy +# define STRCPY strcpy +# define IFSTPCPY(X,...) #endif - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - - /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 - (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and - can be done in parallel across the entire word. */ - -#define REP8_01 0x0101010101010101 -#define REP8_7f 0x7f7f7f7f7f7f7f7f -#define REP8_80 0x8080808080808080 - - /* AArch64 systems have a minimum page size of 4k. We can do a quick - page size check for crossing this boundary on entry and if we - do not, then we can short-circuit much of the entry code. We - expect early page-crossing strings to be rare (probability of - 16/MIN_PAGE_SIZE ~= 0.4%), so the branch should be quite - predictable, even with random strings. - - We don't bother checking for larger page sizes, the cost of setting - up the correct page size is just not worth the extra gain from - a small reduction in the cases taking the slow path. Note that - we only care about whether the first fetch, which may be - misaligned, crosses a page boundary - after that we move to aligned - fetches for the remainder of the string. */ - -#ifdef STRCPY_TEST_PAGE_CROSS - /* Make everything that isn't Qword aligned look like a page cross. */ -#define MIN_PAGE_P2 4 -#else -#define MIN_PAGE_P2 12 -#endif - -#define MIN_PAGE_SIZE (1 << MIN_PAGE_P2) - -def_fn STRCPY p2align=6 - /* For moderately short strings, the fastest way to do the copy is to - calculate the length of the string in the same way as strlen, then - essentially do a memcpy of the result. This avoids the need for - multiple byte copies and further means that by the time we - reach the bulk copy loop we know we can always use DWord - accesses. We expect strcpy to rarely be called repeatedly - with the same source string, so branch prediction is likely to - always be difficult - we mitigate against this by preferring - conditional select operations over branches whenever this is - feasible. */ - and tmp2, srcin, #(MIN_PAGE_SIZE - 1) - mov zeroones, #REP8_01 - and to_align, srcin, #15 - cmp tmp2, #(MIN_PAGE_SIZE - 16) - neg tmp1, to_align - /* The first fetch will straddle a (possible) page boundary iff - srcin + 15 causes bit[MIN_PAGE_P2] to change value. A 16-byte - aligned string will never fail the page align check, so will - always take the fast path. */ - b.gt .Lpage_cross - -.Lpage_cross_ok: - ldp data1, data2, [srcin] -#ifdef __AARCH64EB__ - /* Because we expect the end to be found within 16 characters - (profiling shows this is the most common case), it's worth - swapping the bytes now to save having to recalculate the - termination syndrome later. We preserve data1 and data2 - so that we can re-use the values later on. */ - rev tmp2, data1 - sub tmp1, tmp2, zeroones - orr tmp2, tmp2, #REP8_7f - bics has_nul1, tmp1, tmp2 - b.ne .Lfp_le8 - rev tmp4, data2 - sub tmp3, tmp4, zeroones - orr tmp4, tmp4, #REP8_7f -#else - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - bics has_nul1, tmp1, tmp2 - b.ne .Lfp_le8 - sub tmp3, data2, zeroones - orr tmp4, data2, #REP8_7f +/* + Core algorithm: + For each 16-byte chunk we calculate a 64-bit nibble mask value with four bits + per byte. We take 4 bits of every comparison byte with shift right and narrow + by 4 instruction. Since the bits in the nibble mask reflect the order in + which things occur in the original string, counting leading zeros identifies + exactly which byte matched. */ + +ENTRY (STRCPY) + PTR_ARG (0) + PTR_ARG (1) + bic src, srcin, 15 + ld1 {vdata.16b}, [src] + cmeq vhas_nul.16b, vdata.16b, 0 + lsl shift, srcin, 2 + shrn vend.8b, vhas_nul.8h, 4 + fmov synd, dend + lsr synd, synd, shift + cbnz synd, L(tail) + + ldr dataq, [src, 16]! + cmeq vhas_nul.16b, vdata.16b, 0 + shrn vend.8b, vhas_nul.8h, 4 + fmov synd, dend + cbz synd, L(start_loop) + +#ifndef __AARCH64EB__ + rbit synd, synd #endif - bics has_nul2, tmp3, tmp4 - b.eq .Lbulk_entry + sub tmp, src, srcin + clz len, synd + add len, tmp, len, lsr 2 + tbz len, 4, L(less16) + sub tmp, len, 15 + ldr dataq, [srcin] + ldr dataq2, [srcin, tmp] + str dataq, [dstin] + str dataq2, [dstin, tmp] + IFSTPCPY (add result, dstin, len) + ret - /* The string is short (<=16 bytes). We don't know exactly how - short though, yet. Work out the exact length so that we can - quickly select the optimal copy strategy. */ -.Lfp_gt8: - rev has_nul2, has_nul2 - clz pos, has_nul2 - mov tmp2, #56 - add dst, dstin, pos, lsr #3 /* Bits to bytes. */ - sub pos, tmp2, pos -#ifdef __AARCH64EB__ - lsr data2, data2, pos -#else - lsl data2, data2, pos -#endif - str data2, [dst, #1] +L(tail): + rbit synd, synd + clz len, synd + lsr len, len, 2 +L(less16): + tbz len, 3, L(less8) + sub tmp, len, 7 + ldr data1, [srcin] + ldr data2, [srcin, tmp] str data1, [dstin] -#ifdef BUILD_STPCPY - add dstin, dst, #8 -#endif + str data2, [dstin, tmp] + IFSTPCPY (add result, dstin, len) ret -.Lfp_le8: - rev has_nul1, has_nul1 - clz pos, has_nul1 - add dst, dstin, pos, lsr #3 /* Bits to bytes. */ - subs tmp2, pos, #24 /* Pos in bits. */ - b.lt .Lfp_lt4 -#ifdef __AARCH64EB__ - mov tmp2, #56 - sub pos, tmp2, pos - lsr data2, data1, pos - lsr data1, data1, #32 -#else - lsr data2, data1, tmp2 -#endif - /* 4->7 bytes to copy. */ - str data2w, [dst, #-3] - str data1w, [dstin] -#ifdef BUILD_STPCPY - mov dstin, dst -#endif - ret -.Lfp_lt4: - cbz pos, .Lfp_lt2 - /* 2->3 bytes to copy. */ -#ifdef __AARCH64EB__ - lsr data1, data1, #48 -#endif - strh data1w, [dstin] - /* Fall-through, one byte (max) to go. */ -.Lfp_lt2: - /* Null-terminated string. Last character must be zero! */ - strb wzr, [dst] -#ifdef BUILD_STPCPY - mov dstin, dst -#endif + .p2align 4 +L(less8): + subs tmp, len, 3 + b.lo L(less4) + ldr dataw1, [srcin] + ldr dataw2, [srcin, tmp] + str dataw1, [dstin] + str dataw2, [dstin, tmp] + IFSTPCPY (add result, dstin, len) ret - .p2align 6 - /* Aligning here ensures that the entry code and main loop all lies - within one 64-byte cache line. */ -.Lbulk_entry: - sub to_align, to_align, #16 - stp data1, data2, [dstin] - sub src, srcin, to_align - sub dst, dstin, to_align - b .Lentry_no_page_cross - - /* The inner loop deals with two Dwords at a time. This has a - slightly higher start-up cost, but we should win quite quickly, - especially on cores with a high number of issue slots per - cycle, as we get much better parallelism out of the operations. */ -.Lmain_loop: - stp data1, data2, [dst], #16 -.Lentry_no_page_cross: - ldp data1, data2, [src], #16 - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - sub tmp3, data2, zeroones - orr tmp4, data2, #REP8_7f - bic has_nul1, tmp1, tmp2 - bics has_nul2, tmp3, tmp4 - ccmp has_nul1, #0, #0, eq /* NZCV = 0000 */ - b.eq .Lmain_loop - - /* Since we know we are copying at least 16 bytes, the fastest way - to deal with the tail is to determine the location of the - trailing NUL, then (re)copy the 16 bytes leading up to that. */ - cmp has_nul1, #0 -#ifdef __AARCH64EB__ - /* For big-endian, carry propagation (if the final byte in the - string is 0x01) means we cannot use has_nul directly. The - easiest way to get the correct byte is to byte-swap the data - and calculate the syndrome a second time. */ - csel data1, data1, data2, ne - rev data1, data1 - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - bic has_nul1, tmp1, tmp2 -#else - csel has_nul1, has_nul1, has_nul2, ne -#endif - rev has_nul1, has_nul1 - clz pos, has_nul1 - add tmp1, pos, #72 - add pos, pos, #8 - csel pos, pos, tmp1, ne - add src, src, pos, lsr #3 - add dst, dst, pos, lsr #3 - ldp data1, data2, [src, #-32] - stp data1, data2, [dst, #-16] -#ifdef BUILD_STPCPY - sub dstin, dst, #1 -#endif +L(less4): + cbz len, L(zerobyte) + ldrh dataw1, [srcin] + strh dataw1, [dstin] +L(zerobyte): + strb wzr, [dstin, len] + IFSTPCPY (add result, dstin, len) ret -.Lpage_cross: - bic src, srcin, #15 - /* Start by loading two words at [srcin & ~15], then forcing the - bytes that precede srcin to 0xff. This means they never look - like termination bytes. */ - ldp data1, data2, [src] - lsl tmp1, tmp1, #3 /* Bytes beyond alignment -> bits. */ - tst to_align, #7 - csetm tmp2, ne -#ifdef __AARCH64EB__ - lsl tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ -#else - lsr tmp2, tmp2, tmp1 /* Shift (tmp1 & 63). */ + .p2align 4 +L(start_loop): + sub tmp, srcin, dstin + ldr dataq2, [srcin] + sub dst, src, tmp + str dataq2, [dstin] +L(loop): + str dataq, [dst], 32 + ldr dataq, [src, 16] + cmeq vhas_nul.16b, vdata.16b, 0 + umaxp vend.16b, vhas_nul.16b, vhas_nul.16b + fmov synd, dend + cbnz synd, L(loopend) + str dataq, [dst, -16] + ldr dataq, [src, 32]! + cmeq vhas_nul.16b, vdata.16b, 0 + umaxp vend.16b, vhas_nul.16b, vhas_nul.16b + fmov synd, dend + cbz synd, L(loop) + add dst, dst, 16 +L(loopend): + shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ + fmov synd, dend + sub dst, dst, 31 +#ifndef __AARCH64EB__ + rbit synd, synd #endif - orr data1, data1, tmp2 - orr data2a, data2, tmp2 - cmp to_align, #8 - csinv data1, data1, xzr, lt - csel data2, data2, data2a, lt - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - sub tmp3, data2, zeroones - orr tmp4, data2, #REP8_7f - bic has_nul1, tmp1, tmp2 - bics has_nul2, tmp3, tmp4 - ccmp has_nul1, #0, #0, eq /* NZCV = 0000 */ - b.eq .Lpage_cross_ok - /* We now need to make data1 and data2 look like they've been - loaded directly from srcin. Do a rotate on the 128-bit value. */ - lsl tmp1, to_align, #3 /* Bytes->bits. */ - neg tmp2, to_align, lsl #3 -#ifdef __AARCH64EB__ - lsl data1a, data1, tmp1 - lsr tmp4, data2, tmp2 - lsl data2, data2, tmp1 - orr tmp4, tmp4, data1a - cmp to_align, #8 - csel data1, tmp4, data2, lt - rev tmp2, data1 - rev tmp4, data2 - sub tmp1, tmp2, zeroones - orr tmp2, tmp2, #REP8_7f - sub tmp3, tmp4, zeroones - orr tmp4, tmp4, #REP8_7f -#else - lsr data1a, data1, tmp1 - lsl tmp4, data2, tmp2 - lsr data2, data2, tmp1 - orr tmp4, tmp4, data1a - cmp to_align, #8 - csel data1, tmp4, data2, lt - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - sub tmp3, data2, zeroones - orr tmp4, data2, #REP8_7f -#endif - bic has_nul1, tmp1, tmp2 - cbnz has_nul1, .Lfp_le8 - bic has_nul2, tmp3, tmp4 - b .Lfp_gt8 + clz len, synd + lsr len, len, 2 + add dst, dst, len + ldr dataq, [dst, tmp] + str dataq, [dst] + IFSTPCPY (add result, dst, 15) + ret - .size STRCPY, . - STRCPY +END (STRCPY) #endif diff --git a/newlib/libc/machine/aarch64/strlen.S b/newlib/libc/machine/aarch64/strlen.S index 872d136ef4..68a6f357cf 100644 --- a/newlib/libc/machine/aarch64/strlen.S +++ b/newlib/libc/machine/aarch64/strlen.S @@ -1,115 +1,92 @@ -/* Copyright (c) 2013-2015, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - +/* + * strlen - calculate the length of a string. + * + * Copyright (c) 2020-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strlen-stub.c */ #else /* Assumptions: * - * ARMv8-a, AArch64, unaligned accesses, min page size 4k. + * ARMv8-a, AArch64, Advanced SIMD, unaligned accesses. + * Not MTE compatible. */ -/* To test the page crossing code path more thoroughly, compile with - -DTEST_PAGE_CROSS - this will force all calls through the slower - entry path. This option is not intended for production use. */ - -/* Arguments and results. */ -#define srcin x0 -#define len x0 - -/* Locals and temporaries. */ -#define src x1 -#define data1 x2 -#define data2 x3 -#define has_nul1 x4 -#define has_nul2 x5 -#define tmp1 x4 -#define tmp2 x5 -#define tmp3 x6 -#define tmp4 x7 -#define zeroones x8 - -#define L(l) .L ## l - - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - - /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 - (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and - can be done in parallel across the entire word. A faster check - (X - 1) & 0x80 is zero for non-NUL ASCII characters, but gives - false hits for characters 129..255. */ +#include "asmdefs.h" + +#define srcin x0 +#define len x0 + +#define src x1 +#define data1 x2 +#define data2 x3 +#define has_nul1 x4 +#define has_nul2 x5 +#define tmp1 x4 +#define tmp2 x5 +#define tmp3 x6 +#define tmp4 x7 +#define zeroones x8 + +#define maskv v0 +#define maskd d0 +#define dataq1 q1 +#define dataq2 q2 +#define datav1 v1 +#define datav2 v2 +#define tmp x2 +#define tmpw w2 +#define synd x3 +#define syndw w3 +#define shift x4 + +/* For the first 32 bytes, NUL detection works on the principle that + (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero if a + byte is zero, and can be done in parallel across the entire word. */ #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f -#define REP8_80 0x8080808080808080 + +/* To test the page crossing code path more thoroughly, compile with + -DTEST_PAGE_CROSS - this will force all calls through the slower + entry path. This option is not intended for production use. */ #ifdef TEST_PAGE_CROSS -# define MIN_PAGE_SIZE 15 +# define MIN_PAGE_SIZE 32 #else # define MIN_PAGE_SIZE 4096 #endif - /* Since strings are short on average, we check the first 16 bytes - of the string for a NUL character. In order to do an unaligned ldp - safely we have to do a page cross check first. If there is a NUL - byte we calculate the length from the 2 8-byte words using - conditional select to reduce branch mispredictions (it is unlikely - strlen will be repeatedly called on strings with the same length). - - If the string is longer than 16 bytes, we align src so don't need - further page cross checks, and process 32 bytes per iteration - using the fast NUL check. If we encounter non-ASCII characters, - fallback to a second loop using the full NUL check. - - If the page cross check fails, we read 16 bytes from an aligned - address, remove any characters before the string, and continue - in the main loop using aligned loads. Since strings crossing a - page in the first 16 bytes are rare (probability of - 16/MIN_PAGE_SIZE ~= 0.4%), this case does not need to be optimized. - - AArch64 systems have a minimum page size of 4k. We don't bother - checking for larger page sizes - the cost of setting up the correct - page size is just not worth the extra gain from a small reduction in - the cases taking the slow path. Note that we only care about - whether the first fetch, which may be misaligned, crosses a page - boundary. */ - -def_fn strlen p2align=6 +/* Core algorithm: + + Since strings are short on average, we check the first 32 bytes of the + string for a NUL character without aligning the string. In order to use + unaligned loads safely we must do a page cross check first. + + If there is a NUL byte we calculate the length from the 2 8-byte words + using conditional select to reduce branch mispredictions (it is unlikely + strlen will be repeatedly called on strings with the same length). + + If the string is longer than 32 bytes, align src so we don't need further + page cross checks, and process 32 bytes per iteration using a fast SIMD + loop. + + If the page cross check fails, we read 32 bytes from an aligned address, + and ignore any characters before the string. If it contains a NUL + character, return the length, if not, continue in the main loop. */ + +ENTRY (strlen) + PTR_ARG (0) and tmp1, srcin, MIN_PAGE_SIZE - 1 - mov zeroones, REP8_01 - cmp tmp1, MIN_PAGE_SIZE - 16 - b.gt L(page_cross) + cmp tmp1, MIN_PAGE_SIZE - 32 + b.hi L(page_cross) + + /* Look for a NUL byte in the first 16 bytes. */ ldp data1, data2, [srcin] + mov zeroones, REP8_01 + #ifdef __AARCH64EB__ /* For big-endian, carry propagation (if the final byte in the string is 0x01) means we cannot use has_nul1/2 directly. @@ -125,114 +102,96 @@ def_fn strlen p2align=6 bics has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 ccmp has_nul2, 0, 0, eq - beq L(main_loop_entry) + b.eq L(bytes16_31) - /* Enter with C = has_nul1 == 0. */ + /* Find the exact offset of the first NUL byte in the first 16 bytes + from the string start. Enter with C = has_nul1 == 0. */ csel has_nul1, has_nul1, has_nul2, cc mov len, 8 rev has_nul1, has_nul1 - clz tmp1, has_nul1 csel len, xzr, len, cc + clz tmp1, has_nul1 add len, len, tmp1, lsr 3 ret - /* The inner loop processes 32 bytes per iteration and uses the fast - NUL check. If we encounter non-ASCII characters, use a second - loop with the accurate NUL check. */ - .p2align 4 -L(main_loop_entry): - bic src, srcin, 15 - sub src, src, 16 -L(main_loop): - ldp data1, data2, [src, 32]! -.Lpage_cross_entry: - sub tmp1, data1, zeroones - sub tmp3, data2, zeroones - orr tmp2, tmp1, tmp3 - tst tmp2, zeroones, lsl 7 - bne 1f - ldp data1, data2, [src, 16] + /* Look for a NUL byte at offset 16..31 in the string. */ +L(bytes16_31): + ldp data1, data2, [srcin, 16] +#ifdef __AARCH64EB__ + rev data1, data1 + rev data2, data2 +#endif sub tmp1, data1, zeroones - sub tmp3, data2, zeroones - orr tmp2, tmp1, tmp3 - tst tmp2, zeroones, lsl 7 - beq L(main_loop) - add src, src, 16 -1: - /* The fast check failed, so do the slower, accurate NUL check. */ orr tmp2, data1, REP8_7f + sub tmp3, data2, zeroones orr tmp4, data2, REP8_7f bics has_nul1, tmp1, tmp2 bic has_nul2, tmp3, tmp4 ccmp has_nul2, 0, 0, eq - beq L(nonascii_loop) + b.eq L(loop_entry) - /* Enter with C = has_nul1 == 0. */ -L(tail): -#ifdef __AARCH64EB__ - /* For big-endian, carry propagation (if the final byte in the - string is 0x01) means we cannot use has_nul1/2 directly. The - easiest way to get the correct byte is to byte-swap the data - and calculate the syndrome a second time. */ - csel data1, data1, data2, cc - rev data1, data1 - sub tmp1, data1, zeroones - orr tmp2, data1, REP8_7f - bic has_nul1, tmp1, tmp2 -#else + /* Find the exact offset of the first NUL byte at offset 16..31 from + the string start. Enter with C = has_nul1 == 0. */ csel has_nul1, has_nul1, has_nul2, cc -#endif - sub len, src, srcin + mov len, 24 rev has_nul1, has_nul1 - add tmp2, len, 8 + mov tmp3, 16 clz tmp1, has_nul1 - csel len, len, tmp2, cc + csel len, tmp3, len, cc add len, len, tmp1, lsr 3 ret -L(nonascii_loop): - ldp data1, data2, [src, 16]! - sub tmp1, data1, zeroones - orr tmp2, data1, REP8_7f - sub tmp3, data2, zeroones - orr tmp4, data2, REP8_7f - bics has_nul1, tmp1, tmp2 - bic has_nul2, tmp3, tmp4 - ccmp has_nul2, 0, 0, eq - bne L(tail) - ldp data1, data2, [src, 16]! - sub tmp1, data1, zeroones - orr tmp2, data1, REP8_7f - sub tmp3, data2, zeroones - orr tmp4, data2, REP8_7f - bics has_nul1, tmp1, tmp2 - bic has_nul2, tmp3, tmp4 - ccmp has_nul2, 0, 0, eq - beq L(nonascii_loop) - b L(tail) + nop +L(loop_entry): + bic src, srcin, 31 + + .p2align 5 +L(loop): + ldp dataq1, dataq2, [src, 32]! + uminp maskv.16b, datav1.16b, datav2.16b + uminp maskv.16b, maskv.16b, maskv.16b + cmeq maskv.8b, maskv.8b, 0 + fmov synd, maskd + cbz synd, L(loop) + + /* Low 32 bits of synd are non-zero if a NUL was found in datav1. */ + cmeq maskv.16b, datav1.16b, 0 + sub len, src, srcin + cbnz syndw, 1f + cmeq maskv.16b, datav2.16b, 0 + add len, len, 16 +1: + /* Generate a bitmask and compute correct byte offset. */ + shrn maskv.8b, maskv.8h, 4 + fmov synd, maskd +#ifndef __AARCH64EB__ + rbit synd, synd +#endif + clz tmp, synd + add len, len, tmp, lsr 2 + ret - /* Load 16 bytes from [srcin & ~15] and force the bytes that precede - srcin to 0x7f, so we ignore any NUL bytes before the string. - Then continue in the aligned loop. */ L(page_cross): - bic src, srcin, 15 - ldp data1, data2, [src] - lsl tmp1, srcin, 3 - mov tmp4, -1 -#ifdef __AARCH64EB__ - /* Big-endian. Early bytes are at MSB. */ - lsr tmp1, tmp4, tmp1 /* Shift (tmp1 & 63). */ -#else - /* Little-endian. Early bytes are at LSB. */ - lsl tmp1, tmp4, tmp1 /* Shift (tmp1 & 63). */ -#endif - orr tmp1, tmp1, REP8_80 - orn data1, data1, tmp1 - orn tmp2, data2, tmp1 - tst srcin, 8 - csel data1, data1, tmp4, eq - csel data2, data2, tmp2, eq - b L(page_cross_entry) - - .size strlen, . - strlen + bic src, srcin, 31 + mov tmpw, 0x0c03 + movk tmpw, 0xc030, lsl 16 + ld1 {datav1.16b, datav2.16b}, [src] + dup maskv.4s, tmpw + cmeq datav1.16b, datav1.16b, 0 + cmeq datav2.16b, datav2.16b, 0 + and datav1.16b, datav1.16b, maskv.16b + and datav2.16b, datav2.16b, maskv.16b + addp maskv.16b, datav1.16b, datav2.16b + addp maskv.16b, maskv.16b, maskv.16b + fmov synd, maskd + lsl shift, srcin, 1 + lsr synd, synd, shift + cbz synd, L(loop) + + rbit synd, synd + clz len, synd + lsr len, len, 1 + ret + +END (strlen) #endif diff --git a/newlib/libc/machine/aarch64/strncmp.S b/newlib/libc/machine/aarch64/strncmp.S index ffdabc2607..373695503d 100644 --- a/newlib/libc/machine/aarch64/strncmp.S +++ b/newlib/libc/machine/aarch64/strncmp.S @@ -1,49 +1,23 @@ -/* Copyright (c) 2013, 2018, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - +/* + * strncmp - compare two strings + * + * Copyright (c) 2013-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strcmp-stub.c */ #else /* Assumptions: * - * ARMv8-a, AArch64 + * ARMv8-a, AArch64. + * MTE compatible. */ - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm +#include "asmdefs.h" #define REP8_01 0x0101010101010101 #define REP8_7f 0x7f7f7f7f7f7f7f7f -#define REP8_80 0x8080808080808080 /* Parameters and result. */ #define src1 x0 @@ -64,86 +38,91 @@ #define tmp3 x10 #define zeroones x11 #define pos x12 -#define limit_wd x13 -#define mask x14 -#define endloop x15 +#define mask x13 +#define endloop x14 #define count mask +#define offset pos +#define neg_offset x15 + +/* Define endian dependent shift operations. + On big-endian early bytes are at MSB and on little-endian LSB. + LS_FW means shifting towards early bytes. + LS_BK means shifting towards later bytes. + */ +#ifdef __AARCH64EB__ +#define LS_FW lsl +#define LS_BK lsr +#else +#define LS_FW lsr +#define LS_BK lsl +#endif - .text - .p2align 6 - .rep 7 - nop /* Pad so that the loop below fits a cache line. */ - .endr -def_fn strncmp - cbz limit, .Lret0 +ENTRY (strncmp) + PTR_ARG (0) + PTR_ARG (1) + SIZE_ARG (2) + cbz limit, L(ret0) eor tmp1, src1, src2 mov zeroones, #REP8_01 tst tmp1, #7 and count, src1, #7 - b.ne .Lmisaligned8 - cbnz count, .Lmutual_align - /* Calculate the number of full and partial words -1. */ - sub limit_wd, limit, #1 /* limit != 0, so no underflow. */ - lsr limit_wd, limit_wd, #3 /* Convert to Dwords. */ + b.ne L(misaligned8) + cbnz count, L(mutual_align) /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and can be done in parallel across the entire word. */ - /* Start of performance-critical section -- one 64B cache line. */ -.Lloop_aligned: + .p2align 4 +L(loop_aligned): ldr data1, [src1], #8 ldr data2, [src2], #8 -.Lstart_realigned: - subs limit_wd, limit_wd, #1 +L(start_realigned): + subs limit, limit, #8 sub tmp1, data1, zeroones orr tmp2, data1, #REP8_7f eor diff, data1, data2 /* Non-zero if differences found. */ - csinv endloop, diff, xzr, pl /* Last Dword or differences. */ + csinv endloop, diff, xzr, hi /* Last Dword or differences. */ bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ ccmp endloop, #0, #0, eq - b.eq .Lloop_aligned - /* End of performance-critical section -- one 64B cache line. */ + b.eq L(loop_aligned) + /* End of main loop */ - /* Not reached the limit, must have found the end or a diff. */ - tbz limit_wd, #63, .Lnot_limit - - /* Limit % 8 == 0 => all bytes significant. */ - ands limit, limit, #7 - b.eq .Lnot_limit - - lsl limit, limit, #3 /* Bits -> bytes. */ - mov mask, #~0 -#ifdef __AARCH64EB__ - lsr mask, mask, limit -#else - lsl mask, mask, limit -#endif - bic data1, data1, mask - bic data2, data2, mask - - /* Make sure that the NUL byte is marked in the syndrome. */ - orr has_nul, has_nul, mask - -.Lnot_limit: +L(full_check): +#ifndef __AARCH64EB__ orr syndrome, diff, has_nul - -#ifndef __AARCH64EB__ + add limit, limit, 8 /* Rewind limit to before last subs. */ +L(syndrome_check): + /* Limit was reached. Check if the NUL byte or the difference + is before the limit. */ rev syndrome, syndrome rev data1, data1 - /* The MS-non-zero bit of the syndrome marks either the first bit - that is different, or the top bit of the first zero byte. - Shifting left now will bring the critical information into the - top bits. */ clz pos, syndrome rev data2, data2 lsl data1, data1, pos + cmp limit, pos, lsr #3 lsl data2, data2, pos /* But we need to zero-extend (char is unsigned) the value and then perform a signed 32-bit subtraction. */ lsr data1, data1, #56 sub result, data1, data2, lsr #56 + csel result, result, xzr, hi ret #else + /* Not reached the limit, must have found the end or a diff. */ + tbz limit, #63, L(not_limit) + add tmp1, limit, 8 + cbz limit, L(not_limit) + + lsl limit, tmp1, #3 /* Bits -> bytes. */ + mov mask, #~0 + lsr mask, mask, limit + bic data1, data1, mask + bic data2, data2, mask + + /* Make sure that the NUL byte is marked in the syndrome. */ + orr has_nul, has_nul, mask + +L(not_limit): /* For big-endian we cannot use the trick with the syndrome value as carry-propagation can corrupt the upper bits if the trailing bytes in the string contain 0x01. */ @@ -164,10 +143,11 @@ def_fn strncmp rev has_nul, has_nul orr syndrome, diff, has_nul clz pos, syndrome - /* The MS-non-zero bit of the syndrome marks either the first bit - that is different, or the top bit of the first zero byte. + /* The most-significant-non-zero bit of the syndrome marks either the + first bit that is different, or the top bit of the first zero byte. Shifting left now will bring the critical information into the top bits. */ +L(end_quick): lsl data1, data1, pos lsl data2, data2, pos /* But we need to zero-extend (char is unsigned) the value and then @@ -177,7 +157,7 @@ def_fn strncmp ret #endif -.Lmutual_align: +L(mutual_align): /* Sources are mutually aligned, but are not currently at an alignment boundary. Round down the addresses and then mask off the bytes that precede the start point. @@ -189,102 +169,143 @@ def_fn strncmp neg tmp3, count, lsl #3 /* 64 - bits(bytes beyond align). */ ldr data2, [src2], #8 mov tmp2, #~0 - sub limit_wd, limit, #1 /* limit != 0, so no underflow. */ -#ifdef __AARCH64EB__ - /* Big-endian. Early bytes are at MSB. */ - lsl tmp2, tmp2, tmp3 /* Shift (count & 63). */ -#else - /* Little-endian. Early bytes are at LSB. */ - lsr tmp2, tmp2, tmp3 /* Shift (count & 63). */ -#endif - and tmp3, limit_wd, #7 - lsr limit_wd, limit_wd, #3 - /* Adjust the limit. Only low 3 bits used, so overflow irrelevant. */ - add limit, limit, count - add tmp3, tmp3, count + LS_FW tmp2, tmp2, tmp3 /* Shift (count & 63). */ + /* Adjust the limit and ensure it doesn't overflow. */ + adds limit, limit, count + csinv limit, limit, xzr, lo orr data1, data1, tmp2 orr data2, data2, tmp2 - add limit_wd, limit_wd, tmp3, lsr #3 - b .Lstart_realigned + b L(start_realigned) - .p2align 6 + .p2align 4 /* Don't bother with dwords for up to 16 bytes. */ -.Lmisaligned8: +L(misaligned8): cmp limit, #16 - b.hs .Ltry_misaligned_words + b.hs L(try_misaligned_words) -.Lbyte_loop: +L(byte_loop): /* Perhaps we can do better than this. */ ldrb data1w, [src1], #1 ldrb data2w, [src2], #1 subs limit, limit, #1 ccmp data1w, #1, #0, hi /* NZCV = 0b0000. */ ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ - b.eq .Lbyte_loop -.Ldone: + b.eq L(byte_loop) +L(done): sub result, data1, data2 ret /* Align the SRC1 to a dword by doing a bytewise compare and then do the dword loop. */ -.Ltry_misaligned_words: - lsr limit_wd, limit, #3 - cbz count, .Ldo_misaligned +L(try_misaligned_words): + cbz count, L(src1_aligned) neg count, count and count, count, #7 sub limit, limit, count - lsr limit_wd, limit, #3 -.Lpage_end_loop: +L(page_end_loop): ldrb data1w, [src1], #1 ldrb data2w, [src2], #1 cmp data1w, #1 ccmp data1w, data2w, #0, cs /* NZCV = 0b0000. */ - b.ne .Ldone + b.ne L(done) subs count, count, #1 - b.hi .Lpage_end_loop + b.hi L(page_end_loop) + + /* The following diagram explains the comparison of misaligned strings. + The bytes are shown in natural order. For little-endian, it is + reversed in the registers. The "x" bytes are before the string. + The "|" separates data that is loaded at one time. + src1 | a a a a a a a a | b b b c c c c c | . . . + src2 | x x x x x a a a a a a a a b b b | c c c c c . . . -.Ldo_misaligned: - /* Prepare ourselves for the next page crossing. Unlike the aligned - loop, we fetch 1 less dword because we risk crossing bounds on - SRC2. */ - mov count, #8 - subs limit_wd, limit_wd, #1 - b.lo .Ldone_loop -.Lloop_misaligned: - and tmp2, src2, #0xff8 - eor tmp2, tmp2, #0xff8 - cbz tmp2, .Lpage_end_loop + After shifting in each step, the data looks like this: + STEP_A STEP_B STEP_C + data1 a a a a a a a a b b b c c c c c b b b c c c c c + data2 a a a a a a a a b b b 0 0 0 0 0 0 0 0 c c c c c + The bytes with "0" are eliminated from the syndrome via mask. + + Align SRC2 down to 16 bytes. This way we can read 16 bytes at a + time from SRC2. The comparison happens in 3 steps. After each step + the loop can exit, or read from SRC1 or SRC2. */ +L(src1_aligned): + /* Calculate offset from 8 byte alignment to string start in bits. No + need to mask offset since shifts are ignoring upper bits. */ + lsl offset, src2, #3 + bic src2, src2, #0xf + mov mask, -1 + neg neg_offset, offset ldr data1, [src1], #8 - ldr data2, [src2], #8 - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - eor diff, data1, data2 /* Non-zero if differences found. */ - bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ - ccmp diff, #0, #0, eq - b.ne .Lnot_limit - subs limit_wd, limit_wd, #1 - b.pl .Lloop_misaligned + ldp tmp1, tmp2, [src2], #16 + LS_BK mask, mask, neg_offset + and neg_offset, neg_offset, #63 /* Need actual value for cmp later. */ + /* Skip the first compare if data in tmp1 is irrelevant. */ + tbnz offset, 6, L(misaligned_mid_loop) -.Ldone_loop: - /* We found a difference or a NULL before the limit was reached. */ - and limit, limit, #7 - cbz limit, .Lnot_limit - /* Read the last word. */ - sub src1, src1, 8 - sub src2, src2, 8 - ldr data1, [src1, limit] - ldr data2, [src2, limit] - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f +L(loop_misaligned): + /* STEP_A: Compare full 8 bytes when there is enough data from SRC2.*/ + LS_FW data2, tmp1, offset + LS_BK tmp1, tmp2, neg_offset + subs limit, limit, #8 + orr data2, data2, tmp1 /* 8 bytes from SRC2 combined from two regs.*/ + sub has_nul, data1, zeroones eor diff, data1, data2 /* Non-zero if differences found. */ - bics has_nul, tmp1, tmp2 /* Non-zero if NUL terminator. */ - ccmp diff, #0, #0, eq - b.ne .Lnot_limit + orr tmp3, data1, #REP8_7f + csinv endloop, diff, xzr, hi /* If limit, set to all ones. */ + bic has_nul, has_nul, tmp3 /* Non-zero if NUL byte found in SRC1. */ + orr tmp3, endloop, has_nul + cbnz tmp3, L(full_check) + + ldr data1, [src1], #8 +L(misaligned_mid_loop): + /* STEP_B: Compare first part of data1 to second part of tmp2. */ + LS_FW data2, tmp2, offset +#ifdef __AARCH64EB__ + /* For big-endian we do a byte reverse to avoid carry-propagation + problem described above. This way we can reuse the has_nul in the + next step and also use syndrome value trick at the end. */ + rev tmp3, data1 + #define data1_fixed tmp3 +#else + #define data1_fixed data1 +#endif + sub has_nul, data1_fixed, zeroones + orr tmp3, data1_fixed, #REP8_7f + eor diff, data2, data1 /* Non-zero if differences found. */ + bic has_nul, has_nul, tmp3 /* Non-zero if NUL terminator. */ +#ifdef __AARCH64EB__ + rev has_nul, has_nul +#endif + cmp limit, neg_offset, lsr #3 + orr syndrome, diff, has_nul + bic syndrome, syndrome, mask /* Ignore later bytes. */ + csinv tmp3, syndrome, xzr, hi /* If limit, set to all ones. */ + cbnz tmp3, L(syndrome_check) + + /* STEP_C: Compare second part of data1 to first part of tmp1. */ + ldp tmp1, tmp2, [src2], #16 + cmp limit, #8 + LS_BK data2, tmp1, neg_offset + eor diff, data2, data1 /* Non-zero if differences found. */ + orr syndrome, diff, has_nul + and syndrome, syndrome, mask /* Ignore earlier bytes. */ + csinv tmp3, syndrome, xzr, hi /* If limit, set to all ones. */ + cbnz tmp3, L(syndrome_check) + + ldr data1, [src1], #8 + sub limit, limit, #8 + b L(loop_misaligned) + +#ifdef __AARCH64EB__ +L(syndrome_check): + clz pos, syndrome + cmp pos, limit, lsl #3 + b.lo L(end_quick) +#endif -.Lret0: +L(ret0): mov result, #0 ret - .size strncmp, . - strncmp +END(strncmp) #endif diff --git a/newlib/libc/machine/aarch64/strnlen.S b/newlib/libc/machine/aarch64/strnlen.S index c255c3f7c6..091002e0b0 100644 --- a/newlib/libc/machine/aarch64/strnlen.S +++ b/newlib/libc/machine/aarch64/strnlen.S @@ -1,187 +1,105 @@ -/* strnlen - calculate the length of a string with limit. - - Copyright (c) 2013, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - +/* + * strnlen - calculate the length of a string with limit. + * + * Copyright (c) 2020-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strlen-stub.c */ #else /* Assumptions: * - * ARMv8-a, AArch64 + * ARMv8-a, AArch64, Advanced SIMD. + * MTE compatible. */ -/* Arguments and results. */ +#include "asmdefs.h" + #define srcin x0 -#define len x0 -#define limit x1 +#define cntin x1 +#define result x0 -/* Locals and temporaries. */ #define src x2 -#define data1 x3 -#define data2 x4 -#define data2a x5 -#define has_nul1 x6 -#define has_nul2 x7 -#define tmp1 x8 -#define tmp2 x9 -#define tmp3 x10 -#define tmp4 x11 -#define zeroones x12 -#define pos x13 -#define limit_wd x14 - - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -#define REP8_01 0x0101010101010101 -#define REP8_7f 0x7f7f7f7f7f7f7f7f -#define REP8_80 0x8080808080808080 - - .text - .p2align 6 -.Lstart: - /* Pre-pad to ensure critical loop begins an icache line. */ - .rep 7 - nop - .endr - /* Put this code here to avoid wasting more space with pre-padding. */ -.Lhit_limit: - mov len, limit +#define synd x3 +#define shift x4 +#define tmp x4 +#define cntrem x5 + +#define qdata q0 +#define vdata v0 +#define vhas_chr v1 +#define vend v2 +#define dend d2 + +/* + Core algorithm: + Process the string in 16-byte aligned chunks. Compute a 64-bit mask with + four bits per byte using the shrn instruction. A count trailing zeros then + identifies the first zero byte. */ + +ENTRY (strnlen) + PTR_ARG (0) + SIZE_ARG (1) + bic src, srcin, 15 + cbz cntin, L(nomatch) + ld1 {vdata.16b}, [src] + cmeq vhas_chr.16b, vdata.16b, 0 + lsl shift, srcin, 2 + shrn vend.8b, vhas_chr.8h, 4 /* 128->64 */ + fmov synd, dend + lsr synd, synd, shift + cbz synd, L(start_loop) +L(finish): + rbit synd, synd + clz synd, synd + lsr result, synd, 2 + cmp cntin, result + csel result, cntin, result, ls ret -def_fn strnlen - cbz limit, .Lhit_limit - mov zeroones, #REP8_01 - bic src, srcin, #15 - ands tmp1, srcin, #15 - b.ne .Lmisaligned - /* Calculate the number of full and partial words -1. */ - sub limit_wd, limit, #1 /* Limit != 0, so no underflow. */ - lsr limit_wd, limit_wd, #4 /* Convert to Qwords. */ - - /* NUL detection works on the principle that (X - 1) & (~X) & 0x80 - (=> (X - 1) & ~(X | 0x7f)) is non-zero iff a byte is zero, and - can be done in parallel across the entire word. */ - /* The inner loop deals with two Dwords at a time. This has a - slightly higher start-up cost, but we should win quite quickly, - especially on cores with a high number of issue slots per - cycle, as we get much better parallelism out of the operations. */ - - /* Start of critial section -- keep to one 64Byte cache line. */ -.Lloop: - ldp data1, data2, [src], #16 -.Lrealigned: - sub tmp1, data1, zeroones - orr tmp2, data1, #REP8_7f - sub tmp3, data2, zeroones - orr tmp4, data2, #REP8_7f - bic has_nul1, tmp1, tmp2 - bic has_nul2, tmp3, tmp4 - subs limit_wd, limit_wd, #1 - orr tmp1, has_nul1, has_nul2 - ccmp tmp1, #0, #0, pl /* NZCV = 0000 */ - b.eq .Lloop - /* End of critical section -- keep to one 64Byte cache line. */ - - orr tmp1, has_nul1, has_nul2 - cbz tmp1, .Lhit_limit /* No null in final Qword. */ - - /* We know there's a null in the final Qword. The easiest thing - to do now is work out the length of the string and return - MIN (len, limit). */ - - sub len, src, srcin - cbz has_nul1, .Lnul_in_data2 -#ifdef __AARCH64EB__ - mov data2, data1 -#endif - sub len, len, #8 - mov has_nul2, has_nul1 -.Lnul_in_data2: -#ifdef __AARCH64EB__ - /* For big-endian, carry propagation (if the final byte in the - string is 0x01) means we cannot use has_nul directly. The - easiest way to get the correct byte is to byte-swap the data - and calculate the syndrome a second time. */ - rev data2, data2 - sub tmp1, data2, zeroones - orr tmp2, data2, #REP8_7f - bic has_nul2, tmp1, tmp2 -#endif - sub len, len, #8 - rev has_nul2, has_nul2 - clz pos, has_nul2 - add len, len, pos, lsr #3 /* Bits to bytes. */ - cmp len, limit - csel len, len, limit, ls /* Return the lower value. */ +L(nomatch): + mov result, cntin ret -.Lmisaligned: - /* Deal with a partial first word. - We're doing two things in parallel here; - 1) Calculate the number of words (but avoiding overflow if - limit is near ULONG_MAX) - to do this we need to work out - limit + tmp1 - 1 as a 65-bit value before shifting it; - 2) Load and mask the initial data words - we force the bytes - before the ones we are interested in to 0xff - this ensures - early bytes will not hit any zero detection. */ - sub limit_wd, limit, #1 - neg tmp4, tmp1 - cmp tmp1, #8 - - and tmp3, limit_wd, #15 - lsr limit_wd, limit_wd, #4 - mov tmp2, #~0 - - ldp data1, data2, [src], #16 - lsl tmp4, tmp4, #3 /* Bytes beyond alignment -> bits. */ - add tmp3, tmp3, tmp1 - -#ifdef __AARCH64EB__ - /* Big-endian. Early bytes are at MSB. */ - lsl tmp2, tmp2, tmp4 /* Shift (tmp1 & 63). */ -#else - /* Little-endian. Early bytes are at LSB. */ - lsr tmp2, tmp2, tmp4 /* Shift (tmp1 & 63). */ +L(start_loop): + sub tmp, src, srcin + add tmp, tmp, 17 + subs cntrem, cntin, tmp + b.lo L(nomatch) + + /* Make sure that it won't overread by a 16-byte chunk */ + tbz cntrem, 4, L(loop32_2) + sub src, src, 16 + .p2align 5 +L(loop32): + ldr qdata, [src, 32]! + cmeq vhas_chr.16b, vdata.16b, 0 + umaxp vend.16b, vhas_chr.16b, vhas_chr.16b /* 128->64 */ + fmov synd, dend + cbnz synd, L(end) +L(loop32_2): + ldr qdata, [src, 16] + subs cntrem, cntrem, 32 + cmeq vhas_chr.16b, vdata.16b, 0 + b.lo L(end_2) + umaxp vend.16b, vhas_chr.16b, vhas_chr.16b /* 128->64 */ + fmov synd, dend + cbz synd, L(loop32) +L(end_2): + add src, src, 16 +L(end): + shrn vend.8b, vhas_chr.8h, 4 /* 128->64 */ + sub result, src, srcin + fmov synd, dend +#ifndef __AARCH64EB__ + rbit synd, synd #endif - add limit_wd, limit_wd, tmp3, lsr #4 - - orr data1, data1, tmp2 - orr data2a, data2, tmp2 - - csinv data1, data1, xzr, le - csel data2, data2, data2a, le - b .Lrealigned - .size strnlen, . - .Lstart /* Include pre-padding in size. */ + clz synd, synd + add result, result, synd, lsr 2 + cmp cntin, result + csel result, cntin, result, ls + ret +END (strnlen) #endif diff --git a/newlib/libc/machine/aarch64/strrchr.S b/newlib/libc/machine/aarch64/strrchr.S index d64fc09b1a..b0574228b6 100644 --- a/newlib/libc/machine/aarch64/strrchr.S +++ b/newlib/libc/machine/aarch64/strrchr.S @@ -1,32 +1,9 @@ /* - strrchr - find last instance of a character in a string - - Copyright (c) 2014, ARM Limited - All rights Reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the company nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - + * strrchr - find last position of a character in a string. + * + * Copyright (c) 2014-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) /* See strchr-stub.c */ #else @@ -37,6 +14,8 @@ * Neon Available. */ +#include "asmdefs.h" + /* Arguments and results. */ #define srcin x0 #define chrin w1 @@ -78,17 +57,8 @@ in the original string a count_trailing_zeros() operation will identify exactly which byte is causing the termination, and why. */ -/* Locals and temporaries. */ - - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -def_fn strrchr +ENTRY (strrchr) + PTR_ARG (0) /* Magic constant 0x40100401 to allow us to identify which lane matches the requested byte. Magic constant 0x80200802 used similarly for NUL termination. */ @@ -100,7 +70,7 @@ def_fn strrchr mov src_offset, #0 ands tmp1, srcin, #31 add vrepmask_0.4s, vrepmask_c.4s, vrepmask_c.4s /* equiv: lsl #1 */ - b.eq .Laligned + b.eq L(aligned) /* Input string is not 32-byte aligned. Rather than forcing the padding bytes to a safe value, we calculate the syndrome @@ -118,45 +88,45 @@ def_fn strrchr and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul2.16b // 256->128 addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 - addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul1.16b // 128->64 - addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr1.16b // 128->64 - mov nul_match, vhas_nul1.2d[0] + addp vend1.16b, vhas_nul1.16b, vhas_chr1.16b // 128->64 + mov nul_match, vend1.d[0] lsl tmp1, tmp1, #1 mov const_m1, #~0 - mov chr_match, vhas_chr1.2d[0] lsr tmp3, const_m1, tmp1 + mov chr_match, vend1.d[1] bic nul_match, nul_match, tmp3 // Mask padding bits. bic chr_match, chr_match, tmp3 // Mask padding bits. - cbnz nul_match, .Ltail + cbnz nul_match, L(tail) -.Lloop: + .p2align 4 +L(loop): cmp chr_match, #0 csel src_match, src, src_match, ne csel src_offset, chr_match, src_offset, ne -.Laligned: +L(aligned): ld1 {vdata1.16b, vdata2.16b}, [src], #32 - cmeq vhas_nul1.16b, vdata1.16b, #0 cmeq vhas_chr1.16b, vdata1.16b, vrepchr.16b - cmeq vhas_nul2.16b, vdata2.16b, #0 cmeq vhas_chr2.16b, vdata2.16b, vrepchr.16b - addp vend1.16b, vhas_nul1.16b, vhas_nul2.16b // 256->128 + uminp vend1.16b, vdata1.16b, vdata2.16b and vhas_chr1.16b, vhas_chr1.16b, vrepmask_c.16b and vhas_chr2.16b, vhas_chr2.16b, vrepmask_c.16b + cmeq vend1.16b, vend1.16b, 0 addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr2.16b // 256->128 - addp vend1.16b, vend1.16b, vend1.16b // 128->64 - addp vhas_chr1.16b, vhas_chr1.16b, vhas_chr1.16b // 128->64 - mov nul_match, vend1.2d[0] - mov chr_match, vhas_chr1.2d[0] - cbz nul_match, .Lloop + addp vend1.16b, vend1.16b, vhas_chr1.16b // 128->64 + mov nul_match, vend1.d[0] + mov chr_match, vend1.d[1] + cbz nul_match, L(loop) + cmeq vhas_nul1.16b, vdata1.16b, #0 + cmeq vhas_nul2.16b, vdata2.16b, #0 and vhas_nul1.16b, vhas_nul1.16b, vrepmask_0.16b and vhas_nul2.16b, vhas_nul2.16b, vrepmask_0.16b addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul2.16b addp vhas_nul1.16b, vhas_nul1.16b, vhas_nul1.16b - mov nul_match, vhas_nul1.2d[0] + mov nul_match, vhas_nul1.d[0] -.Ltail: +L(tail): /* Work out exactly where the string ends. */ sub tmp4, nul_match, #1 eor tmp4, tmp4, nul_match @@ -178,5 +148,5 @@ def_fn strrchr ret - .size strrchr, . - strrchr +END (strrchr) #endif From fe5886a500e66cddf0f57eea3049d25d5f8765e9 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 12 Sep 2023 10:33:14 +0200 Subject: [PATCH 444/767] aarch64: Import memrchr.S Import memrchr.S for AArch64 from: https://github.com/ARM-software/optimized-routines commit 0cf84f26b6b8dcad8287fe30a4dcc1fdabd06560 Author: Sebastian Huber Date: Thu Jul 27 17:14:57 2023 +0200 string: Fix corrupt GNU_PROPERTY_TYPE (5) size For ELF32 the notes alignment is 4 and not 8. --- newlib/Makefile.in | 40 +++++++ newlib/libc/machine/aarch64/Makefile.inc | 2 + newlib/libc/machine/aarch64/memrchr-stub.c | 11 ++ newlib/libc/machine/aarch64/memrchr.S | 115 +++++++++++++++++++++ 4 files changed, 168 insertions(+) create mode 100644 newlib/libc/machine/aarch64/memrchr-stub.c create mode 100644 newlib/libc/machine/aarch64/memrchr.S diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 5dc9dcc8dc..4cb3534cc4 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -596,6 +596,8 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.S \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr-stub.c \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memset-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memset.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/rawmemchr.S \ @@ -1847,6 +1849,8 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr-stub.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memset-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memset.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-rawmemchr.$(OBJEXT) \ @@ -8024,6 +8028,12 @@ libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT): \ libc/machine/aarch64/libc_a-memmove.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) +libc/machine/aarch64/libc_a-memrchr-stub.$(OBJEXT): \ + libc/machine/aarch64/$(am__dirstamp) \ + libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) +libc/machine/aarch64/libc_a-memrchr.$(OBJEXT): \ + libc/machine/aarch64/$(am__dirstamp) \ + libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) libc/machine/aarch64/libc_a-memset-stub.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) @@ -12730,6 +12740,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memcpy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memset-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-rawmemchr-stub.Po@am__quote@ @@ -16711,6 +16723,20 @@ libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine/aarch64/memmove.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.S'; fi` +libc/machine/aarch64/libc_a-memrchr.o: libc/machine/aarch64/memrchr.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/aarch64/libc_a-memrchr.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Tpo -c -o libc/machine/aarch64/libc_a-memrchr.o `test -f 'libc/machine/aarch64/memrchr.S' || echo '$(srcdir)/'`libc/machine/aarch64/memrchr.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/aarch64/memrchr.S' object='libc/machine/aarch64/libc_a-memrchr.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memrchr.o `test -f 'libc/machine/aarch64/memrchr.S' || echo '$(srcdir)/'`libc/machine/aarch64/memrchr.S + +libc/machine/aarch64/libc_a-memrchr.obj: libc/machine/aarch64/memrchr.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/aarch64/libc_a-memrchr.obj -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Tpo -c -o libc/machine/aarch64/libc_a-memrchr.obj `if test -f 'libc/machine/aarch64/memrchr.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memrchr.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memrchr.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/aarch64/memrchr.S' object='libc/machine/aarch64/libc_a-memrchr.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memrchr.obj `if test -f 'libc/machine/aarch64/memrchr.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memrchr.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memrchr.S'; fi` + libc/machine/aarch64/libc_a-memset.o: libc/machine/aarch64/memset.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/aarch64/libc_a-memset.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memset.Tpo -c -o libc/machine/aarch64/libc_a-memset.o `test -f 'libc/machine/aarch64/memset.S' || echo '$(srcdir)/'`libc/machine/aarch64/memset.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memset.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memset.Po @@ -32981,6 +33007,20 @@ libc/machine/aarch64/libc_a-memmove-stub.obj: libc/machine/aarch64/memmove-stub. @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove-stub.obj `if test -f 'libc/machine/aarch64/memmove-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove-stub.c'; fi` +libc/machine/aarch64/libc_a-memrchr-stub.o: libc/machine/aarch64/memrchr-stub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memrchr-stub.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Tpo -c -o libc/machine/aarch64/libc_a-memrchr-stub.o `test -f 'libc/machine/aarch64/memrchr-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memrchr-stub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/aarch64/memrchr-stub.c' object='libc/machine/aarch64/libc_a-memrchr-stub.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memrchr-stub.o `test -f 'libc/machine/aarch64/memrchr-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memrchr-stub.c + +libc/machine/aarch64/libc_a-memrchr-stub.obj: libc/machine/aarch64/memrchr-stub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memrchr-stub.obj -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Tpo -c -o libc/machine/aarch64/libc_a-memrchr-stub.obj `if test -f 'libc/machine/aarch64/memrchr-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memrchr-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memrchr-stub.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/aarch64/memrchr-stub.c' object='libc/machine/aarch64/libc_a-memrchr-stub.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memrchr-stub.obj `if test -f 'libc/machine/aarch64/memrchr-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memrchr-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memrchr-stub.c'; fi` + libc/machine/aarch64/libc_a-memset-stub.o: libc/machine/aarch64/memset-stub.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memset-stub.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memset-stub.Tpo -c -o libc/machine/aarch64/libc_a-memset-stub.o `test -f 'libc/machine/aarch64/memset-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memset-stub.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memset-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memset-stub.Po diff --git a/newlib/libc/machine/aarch64/Makefile.inc b/newlib/libc/machine/aarch64/Makefile.inc index 063a2a84ae..c749b0d575 100644 --- a/newlib/libc/machine/aarch64/Makefile.inc +++ b/newlib/libc/machine/aarch64/Makefile.inc @@ -7,6 +7,8 @@ libc_a_SOURCES += \ %D%/memcpy.S \ %D%/memmove-stub.c \ %D%/memmove.S \ + %D%/memrchr-stub.c \ + %D%/memrchr.S \ %D%/memset-stub.c \ %D%/memset.S \ %D%/rawmemchr.S \ diff --git a/newlib/libc/machine/aarch64/memrchr-stub.c b/newlib/libc/machine/aarch64/memrchr-stub.c new file mode 100644 index 0000000000..48f13bedc8 --- /dev/null +++ b/newlib/libc/machine/aarch64/memrchr-stub.c @@ -0,0 +1,11 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (C) 2023 embedded brains GmbH & Co. KG + */ + +#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) +#include "../../string/memrchr.c" +#else +/* See memrchr.S */ +#endif diff --git a/newlib/libc/machine/aarch64/memrchr.S b/newlib/libc/machine/aarch64/memrchr.S new file mode 100644 index 0000000000..ba9915cc3d --- /dev/null +++ b/newlib/libc/machine/aarch64/memrchr.S @@ -0,0 +1,115 @@ +/* + * memrchr - find last character in a memory zone. + * + * Copyright (c) 2020-2022, Arm Limited. + * SPDX-License-Identifier: MIT OR Apache-2.0 WITH LLVM-exception + */ + +/* Assumptions: + * + * ARMv8-a, AArch64, Advanced SIMD. + * MTE compatible. + */ + +#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) +/* See memrchr-stub.c */ +#else +#include "asmdefs.h" + +#define srcin x0 +#define chrin w1 +#define cntin x2 +#define result x0 + +#define src x3 +#define cntrem x4 +#define synd x5 +#define shift x6 +#define tmp x7 +#define end x8 +#define endm1 x9 + +#define vrepchr v0 +#define qdata q1 +#define vdata v1 +#define vhas_chr v2 +#define vend v3 +#define dend d3 + +/* + Core algorithm: + For each 16-byte chunk we calculate a 64-bit nibble mask value with four bits + per byte. We take 4 bits of every comparison byte with shift right and narrow + by 4 instruction. Since the bits in the nibble mask reflect the order in + which things occur in the original string, counting leading zeros identifies + exactly which byte matched. */ + +ENTRY (memrchr) + PTR_ARG (0) + add end, srcin, cntin + sub endm1, end, 1 + bic src, endm1, 15 + cbz cntin, L(nomatch) + ld1 {vdata.16b}, [src] + dup vrepchr.16b, chrin + cmeq vhas_chr.16b, vdata.16b, vrepchr.16b + neg shift, end, lsl 2 + shrn vend.8b, vhas_chr.8h, 4 /* 128->64 */ + fmov synd, dend + lsl synd, synd, shift + cbz synd, L(start_loop) + + clz synd, synd + sub result, endm1, synd, lsr 2 + cmp cntin, synd, lsr 2 + csel result, result, xzr, hi + ret + + nop +L(start_loop): + subs cntrem, src, srcin + b.ls L(nomatch) + + /* Make sure that it won't overread by a 16-byte chunk */ + sub cntrem, cntrem, 1 + tbz cntrem, 4, L(loop32_2) + add src, src, 16 + + .p2align 5 +L(loop32): + ldr qdata, [src, -32]! + cmeq vhas_chr.16b, vdata.16b, vrepchr.16b + umaxp vend.16b, vhas_chr.16b, vhas_chr.16b /* 128->64 */ + fmov synd, dend + cbnz synd, L(end) + +L(loop32_2): + ldr qdata, [src, -16] + subs cntrem, cntrem, 32 + cmeq vhas_chr.16b, vdata.16b, vrepchr.16b + b.lo L(end_2) + umaxp vend.16b, vhas_chr.16b, vhas_chr.16b /* 128->64 */ + fmov synd, dend + cbz synd, L(loop32) +L(end_2): + sub src, src, 16 +L(end): + shrn vend.8b, vhas_chr.8h, 4 /* 128->64 */ + fmov synd, dend + + add tmp, src, 15 +#ifdef __AARCH64EB__ + rbit synd, synd +#endif + clz synd, synd + sub tmp, tmp, synd, lsr 2 + cmp tmp, srcin + csel result, tmp, xzr, hs + ret + +L(nomatch): + mov result, 0 + ret + +END (memrchr) +#endif From dcb2b7d7b8456827d4cd82b5798526e7cd483e36 Mon Sep 17 00:00:00 2001 From: Joseph Faulls Date: Tue, 10 Oct 2023 15:12:00 -0400 Subject: [PATCH 445/767] Delete check in catan, catanf, and catanl functions. The check incorrectly results in catan returning nan + inf i when real part is +/- 1 and imaginary part is 0. The same occurs for real 0.8 and imaginary 0.6. The change ends up matching glibc behaviour. --- newlib/libm/complex/catan.c | 2 -- newlib/libm/complex/catanf.c | 2 -- newlib/libm/complex/catanl.c | 2 -- 3 files changed, 6 deletions(-) diff --git a/newlib/libm/complex/catan.c b/newlib/libm/complex/catan.c index 77510ec2f5..34d75b8499 100644 --- a/newlib/libm/complex/catan.c +++ b/newlib/libm/complex/catan.c @@ -105,8 +105,6 @@ catan(double complex z) x2 = x * x; a = 1.0 - x2 - (y * y); - if (a == 0.0) - goto ovrf; t = 0.5 * atan2(2.0 * x, a); w = _redupi(t); diff --git a/newlib/libm/complex/catanf.c b/newlib/libm/complex/catanf.c index ac1a65c08c..9dc2fb23f1 100644 --- a/newlib/libm/complex/catanf.c +++ b/newlib/libm/complex/catanf.c @@ -54,8 +54,6 @@ catanf(float complex z) x2 = x * x; a = 1.0f - x2 - (y * y); - if (a == 0.0f) - goto ovrf; t = 0.5f * atan2f(2.0f * x, a); w = _redupif(t); diff --git a/newlib/libm/complex/catanl.c b/newlib/libm/complex/catanl.c index ee2a259307..13839ac73b 100644 --- a/newlib/libm/complex/catanl.c +++ b/newlib/libm/complex/catanl.c @@ -51,8 +51,6 @@ catanl(long double complex z) x2 = x * x; a = 1.0L - x2 - (y * y); - if (a == 0.0) - goto ovrf; t = 0.5L * atan2l(2.0L * x, a); w = _redupil(t); From 696c282cf32b478b4e11bd8af23663aa99156cb3 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 12 Oct 2023 11:59:32 +0200 Subject: [PATCH 446/767] riscv: Fix fenv.h support Use the same C preprocessor expressions to define FE_RMODE_MASK and __RISCV_HARD_FLOAT. The problem was noticed on GCC 10 which does not define __riscv_f. --- newlib/libc/machine/riscv/sys/fenv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/machine/riscv/sys/fenv.h b/newlib/libc/machine/riscv/sys/fenv.h index 1d577d527b..98387d2205 100644 --- a/newlib/libc/machine/riscv/sys/fenv.h +++ b/newlib/libc/machine/riscv/sys/fenv.h @@ -14,7 +14,7 @@ #include -#if defined(__riscv_f) || defined(__riscv_zfinx) +#if defined(__riscv_flen) || defined(__riscv_zfinx) /* Per "The RISC-V Instruction Set Manual: Volume I: User-Level ISA: * Version 2.1", Section 8.2, "Floating-Point Control and Status From fbc5496e40eeb6d0d2ae2a3bf90182e2a9cd74f0 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 6 Oct 2023 07:29:05 +0200 Subject: [PATCH 447/767] sparc: Improve setjmp() Flush the windows in setjmp(). This helps if the stack is changed after the setjmp() and we want to jump back to the original stack using longjmp(). --- newlib/libc/machine/sparc/setjmp.S | 2 ++ 1 file changed, 2 insertions(+) diff --git a/newlib/libc/machine/sparc/setjmp.S b/newlib/libc/machine/sparc/setjmp.S index 613df2ba20..d7185be4c8 100644 --- a/newlib/libc/machine/sparc/setjmp.S +++ b/newlib/libc/machine/sparc/setjmp.S @@ -110,6 +110,8 @@ ENTRY(setjmp) ENTRY(_setjmp) + ta 0x03 /* Flush registers, just in case another stack + is used after the setjmp(). */ st %sp, [%o0] /* caller's stack pointer */ st %i7, [%o0+4] /* caller's return pc */ st %fp, [%o0+8] /* store caller's frame pointer */ From 39f734a857e2692224715b03b99fc7bd83e94a0f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 15 Oct 2023 15:10:52 +0545 Subject: [PATCH 448/767] newlib: fix AC_DEFINE quoting style with version macros configure.ac files use [] for quoting by default, not "", which means the "" are passed through as literals. We don't want that for these comments, so change the "..." to [...]. --- newlib/configure.ac | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/newlib/configure.ac b/newlib/configure.ac index 97549ba32d..94242c082d 100644 --- a/newlib/configure.ac +++ b/newlib/configure.ac @@ -410,10 +410,10 @@ EOF fi AC_SUBST(EXEEXT_FOR_BUILD) -AC_DEFINE(_NEWLIB_VERSION,"NEWLIB_VERSION","The newlib version in string format.") -AC_DEFINE(__NEWLIB__,NEWLIB_MAJOR_VERSION,"The newlib major version number.") -AC_DEFINE(__NEWLIB_MINOR__,NEWLIB_MINOR_VERSION,"The newlib minor version number.") -AC_DEFINE(__NEWLIB_PATCHLEVEL__,NEWLIB_PATCHLEVEL_VERSION,"The newlib patch level.") +AC_DEFINE(_NEWLIB_VERSION, "NEWLIB_VERSION", [The newlib version in string format.]) +AC_DEFINE(__NEWLIB__, NEWLIB_MAJOR_VERSION, [The newlib major version number.]) +AC_DEFINE(__NEWLIB_MINOR__, NEWLIB_MINOR_VERSION, [The newlib minor version number.]) +AC_DEFINE(__NEWLIB_PATCHLEVEL__, NEWLIB_PATCHLEVEL_VERSION, [The newlib patch level.]) if test "${newlib_elix_level}" -gt "0"; then AC_DEFINE_UNQUOTED(_ELIX_LEVEL, ${newlib_elix_level}, [EL/IX level]) From d56d58ace27b00e6b11f25d8a02b6deab3db272b Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 5 Oct 2023 21:52:59 +0900 Subject: [PATCH 449/767] Cygwin: dsp: Improve minimum buffser size estimation. The commit 322c7150b25e restricts buffer size with a fixed length, however, the minimum buffer size should be varied by the sample rate. With this patch, it is estimated using sample rate, sample width and number of channels so that the buffer length is not less than 80 msec which is almost the minimum value of Win MME to work. Fixes: 322c7150b25e ("Cygwin: dsp: Avoid setting buffer that is too small.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 60 +++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 97f3eaa277..59c11ac230 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -65,7 +65,7 @@ class fhandler_dev_dsp::Audio void convert_S16LE_S16BE (unsigned char *buffer, int size_bytes); void fillFormat (WAVEFORMATEX * format, int rate, int bits, int channels); - static unsigned blockSize (int rate, int bits, int channels); + static unsigned blockSize (double ms, int rate, int bits, int channels); void (fhandler_dev_dsp::Audio::*convert_) (unsigned char *buffer, int size_bytes); @@ -352,10 +352,10 @@ fhandler_dev_dsp::Audio::fillFormat (WAVEFORMATEX * format, // calculate a good block size unsigned -fhandler_dev_dsp::Audio::blockSize (int rate, int bits, int channels) +fhandler_dev_dsp::Audio::blockSize (double ms, int rate, int bits, int channels) { unsigned blockSize; - blockSize = ((bits / 8) * channels * rate) / 8; // approx 125ms per block + blockSize = ms * ((bits / 8) * channels * rate) / 1000; // round up to multiple of 64 blockSize += 0x3f; blockSize &= ~0x3f; @@ -525,7 +525,7 @@ void fhandler_dev_dsp::Audio_out::default_buf_info (audio_buf_info *p, int rate, int bits, int channels) { p->fragstotal = DEFAULT_BLOCKS; - p->fragsize = blockSize (rate, bits, channels); + p->fragsize = blockSize (125, rate, bits, channels); p->fragments = p->fragstotal; p->bytes = p->fragsize * p->fragments; } @@ -537,7 +537,7 @@ fhandler_dev_dsp::Audio_out::callback_sampledone (WAVEHDR *pHdr) { Qisr2app_->send (pHdr); ReleaseSemaphore (fh->get_select_sem (), - get_obj_handle_count (fh->get_select_sem ()) - 1, NULL); + get_obj_handle_count (fh->get_select_sem ()), NULL); } bool @@ -555,8 +555,7 @@ fhandler_dev_dsp::Audio_out::waitforspace () set_errno (EAGAIN); return false; } - debug_printf ("1ms"); - switch (cygwait (1)) + switch (cygwait (fh->get_select_sem (), 10)) { case WAIT_SIGNALED: if (!_my_tls.call_signal_handler ()) @@ -934,8 +933,7 @@ fhandler_dev_dsp::Audio_in::waitfordata () set_errno (EAGAIN); return false; } - debug_printf ("1ms"); - switch (cygwait (1)) + switch (cygwait (fh->get_select_sem (), 10)) { case WAIT_SIGNALED: if (!_my_tls.call_signal_handler ()) @@ -967,7 +965,7 @@ void fhandler_dev_dsp::Audio_in::default_buf_info (audio_buf_info *p, int rate, int bits, int channels) { p->fragstotal = DEFAULT_BLOCKS; - p->fragsize = blockSize (rate, bits, channels); + p->fragsize = blockSize (125, rate, bits, channels); p->fragments = 0; p->bytes = 0; } @@ -998,7 +996,7 @@ fhandler_dev_dsp::Audio_in::callback_blockfull (WAVEHDR *pHdr) { Qisr2app_->send (pHdr); ReleaseSemaphore (fh->get_select_sem (), - get_obj_handle_count (fh->get_select_sem ()) - 1, NULL); + get_obj_handle_count (fh->get_select_sem ()), NULL); } static void CALLBACK @@ -1127,8 +1125,13 @@ fhandler_dev_dsp::_write (const void *ptr, size_t len) /* nothing to do */; else if (IS_WRITE ()) { - if (!fragment_has_been_set) - fragsize_ = Audio::blockSize (audiofreq_, audiobits_, audiochannels_); + if (fragment_has_been_set) + fragsize_ = max (Audio::blockSize (80.0 / fragstotal_, audiofreq_, + audiobits_, audiochannels_), + fragsize_); + else + fragsize_ = Audio::blockSize (125, audiofreq_, audiobits_, + audiochannels_); debug_printf ("Allocating"); if (!(audio_out_ = new Audio_out (this))) return -1; @@ -1174,7 +1177,8 @@ fhandler_dev_dsp::_read (void *ptr, size_t& len) else if (IS_READ ()) { if (!fragment_has_been_set) - fragsize_ = Audio::blockSize (audiofreq_, audiobits_, audiochannels_); + fragsize_ = Audio::blockSize (125, audiofreq_, audiobits_, + audiochannels_); debug_printf ("Allocating"); if (!(audio_in_ = new Audio_in (this))) { @@ -1233,7 +1237,7 @@ fhandler_dev_dsp::close () being_closed = true; close_audio_in (); close_audio_out (); - ReleaseSemaphore (select_sem, get_obj_handle_count (select_sem) - 1, NULL); + ReleaseSemaphore (select_sem, get_obj_handle_count (select_sem), NULL); CloseHandle (select_sem); select_sem = NULL; return fhandler_base::close (); @@ -1255,9 +1259,13 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) break; CASE (SNDCTL_DSP_GETBLKSIZE) - if (!fragment_has_been_set) - fragsize_ = Audio::blockSize (audiofreq_, audiobits_, audiochannels_); - *intbuf = fragsize_; + if (fragment_has_been_set) + *intbuf = max (Audio::blockSize (80.0 / fragstotal_, audiofreq_, + audiobits_, audiochannels_), + fragsize_); + else + *intbuf = Audio::blockSize (125, audiofreq_, audiobits_, + audiochannels_); return 0; CASE (SNDCTL_DSP_SETFMT) @@ -1387,8 +1395,11 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) audio_out_->buf_info (p, audiofreq_, audiobits_, audiochannels_); else if (fragment_has_been_set) { - p->bytes = fragsize_ * fragstotal_; - p->fragsize = fragsize_; + p->fragsize = max (Audio::blockSize (80.0 / fragstotal_, + audiofreq_, audiobits_, + audiochannels_), + fragsize_); + p->bytes = p->fragsize * fragstotal_; p->fragstotal = fragstotal_; p->fragments = fragstotal_; } @@ -1412,7 +1423,10 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) else if (fragment_has_been_set) { p->bytes = 0; - p->fragsize = fragsize_; + p->fragsize = max (Audio::blockSize (80.0 / fragstotal_, + audiofreq_, audiobits_, + audiochannels_), + fragsize_); p->fragstotal = fragstotal_; p->fragments = 0; } @@ -1430,8 +1444,8 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) int *p = (int *) buf; fragstotal_ = min (*p >> 16, MAX_BLOCKS); fragsize_ = 1 << (*p & 0xffff); - while (fragsize_ * fragstotal_ < 16384) - fragsize_ *= 2; + if (fragstotal_ < 2) + fragstotal_ = 2; fragment_has_been_set = true; return 0; } From 60d1eeac6c6185ac77b181929c773015a2772fe8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 30 Oct 2023 19:40:31 +0100 Subject: [PATCH 450/767] Cygwin: cwd: avoid releasing the cwdstuff SRW Lock twice cwdstuff::set has a code snippet handling the case where a process can't create a handle to a directory, e. g., due to permissions. Commit 88443b0a22589 ("cwdstuff: Don't leave from setting the CWD prematurely on init") introduced a special case to handle this situation at process initialization. It also introduces an early mutex release, which is not required, but ok, because we're in the init phase. Releasing the mutex twice is no problem since the mutexes are recursive. Fast forward to commit 0819679a7a210 ("Cygwin: cwd: use SRWLOCK instead of muto"). The mechanical change from a recursive mutex to a non-recursive SRWLOCK failed to notice that this very specific situation will release the SRWLOCK twice. Remove the superfluous release action. While at it, don't set dir to NULL, but h, since dir will get the value of h anyway later on. Setting h to NULL may not be necessary, but better safe than sorry. Reported-by: tryandbuy >tryandbuy@proton.me> Fixes: 88443b0a22589 ("cwdstuff: Don't leave from setting the CWD prematurely on init") Fixes: 0819679a7a210 ("Cygwin: cwd: use SRWLOCK instead of muto") Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 3 +-- winsup/cygwin/release/3.4.10 | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 1c3583d763..c3f84f7f80 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -4868,10 +4868,9 @@ cwdstuff::set (path_conv *nat_cwd, const char *posix_cwd) peb.ProcessParameters->CurrentDirectoryHandle, GetCurrentProcess (), &h, 0, TRUE, 0)) { - release_write (); if (peb.ProcessParameters->CurrentDirectoryHandle) debug_printf ("...and DuplicateHandle failed with %E."); - dir = NULL; + h = NULL; } } } diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index f34b131b32..c752839914 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -3,3 +3,6 @@ Bug Fixes - Fix missing term in __cpuset_zero_s() prototoype in sys/cpuset.h. Addresses: https://cygwin.com/pipermail/cygwin/2023-September/254423.html + +- Fix hang in process initialization if cwd is unreadable. + Addresses: https://cygwin.com/pipermail/cygwin/2023-October/254604.html From 2ef627c46eb2b7cbc359088e5619be74637e9b90 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 31 Oct 2023 13:07:36 +0100 Subject: [PATCH 451/767] Cygwin: let feraiseexcept actually raise an exception The exception handling inside of Cygwin functions marked as SIGFE covers exceptions and lets the library code handle them gracefully. If these functions want to raise an exception, they have to send a signal explicitely via raise(3). That's not what we want in feraiseexcept(). It triggers a floating point exception explicitely by calling the i387 op "fwait". Being marked as SIGFE, this exception will be suppressed and the normal exception handling won't kick in. Fix this by moving feraiseexcept into the NOSIGFE realm. Fixes: 0f81b5d4bcaa ("* Makefile.in (DLL_OFILES): Add new fenv.o module.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/cygwin.din | 2 +- winsup/cygwin/release/3.4.10 | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index 3afadb7f3a..d5e8f8c05e 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -534,7 +534,7 @@ fegetround NOSIGFE feholdexcept SIGFE feof SIGFE feof_unlocked SIGFE -feraiseexcept SIGFE +feraiseexcept NOSIGFE ferror SIGFE ferror_unlocked SIGFE fesetenv SIGFE diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index c752839914..ec28cdf7e7 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -6,3 +6,6 @@ Bug Fixes - Fix hang in process initialization if cwd is unreadable. Addresses: https://cygwin.com/pipermail/cygwin/2023-October/254604.html + +- Let feraiseexcept actually raise an exception. + Addresses: https://cygwin.com/pipermail/cygwin/2023-October/254667.html From 12e3bac3ce562007e83c3c67243c85fcb5ee70a4 Mon Sep 17 00:00:00 2001 From: Andrew Stubbs Date: Fri, 20 Oct 2023 12:54:17 +0100 Subject: [PATCH 452/767] amdgcn: remove unnecessary scalar cache flush The exit code isn't actually written via the scalar cache so the cache flush is not actually needed. --- newlib/libc/machine/amdgcn/exit-value.h | 1 - 1 file changed, 1 deletion(-) diff --git a/newlib/libc/machine/amdgcn/exit-value.h b/newlib/libc/machine/amdgcn/exit-value.h index 7aa2508bbd..6b9d2411b7 100644 --- a/newlib/libc/machine/amdgcn/exit-value.h +++ b/newlib/libc/machine/amdgcn/exit-value.h @@ -32,7 +32,6 @@ exit_with_int (int val) *return_value = val; /* Terminate the current kernel. */ - asm ("s_dcache_wb"); asm ("s_endpgm"); __builtin_unreachable (); } From c8cf1933ba04edf40181545b4c258be059d66f87 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Sun, 5 Nov 2023 15:54:23 +0100 Subject: [PATCH 453/767] Cygwin: Add /dev/disk/by-id symlinks The new directory '/dev/disk/by-id' provides symlinks for each disk and its partitions: 'BUSTYPE-[VENDOR_]PRODUCT_SERIAL[-partN]' -> '../../sdX[N]'. This is based on strings provided by STORAGE_DEVICE_DESCRIPTOR. If this information is too short, a 128-bit hash of the STORAGE_DEVICE_UNIQUE_IDENTIFIER raw data is added. Administrator privileges are not required. Signed-off-by: Christian Franke --- winsup/cygwin/Makefile.am | 1 + winsup/cygwin/devices.cc | 1433 ++++++++++++----------- winsup/cygwin/devices.in | 4 + winsup/cygwin/dtable.cc | 3 + winsup/cygwin/fhandler/dev_disk.cc | 621 ++++++++++ winsup/cygwin/local_includes/devices.h | 6 +- winsup/cygwin/local_includes/fhandler.h | 47 + winsup/cygwin/mount.cc | 10 + 8 files changed, 1417 insertions(+), 708 deletions(-) create mode 100644 winsup/cygwin/fhandler/dev_disk.cc diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 64b252a226..376c79fc3c 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -84,6 +84,7 @@ FHANDLER_FILES= \ fhandler/console.cc \ fhandler/cygdrive.cc \ fhandler/dev.cc \ + fhandler/dev_disk.cc \ fhandler/dev_fd.cc \ fhandler/disk_file.cc \ fhandler/dsp.cc \ diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index acdc544124..167b0e4b4c 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -119,6 +119,9 @@ const _device dev_cygdrive_storage = const _device dev_fs_storage = {"", {FH_FS}, "", exists}; +const _device dev_dev_disk_storage = + {"", {FH_DEV_DISK}, "", exists}; + const _device dev_proc_storage = {"", {FH_PROC}, "", exists}; @@ -322,6 +325,7 @@ const _RDATA _device dev_storage[] = {"/dev/cons126", BRACK(FHDEV(DEV_CONS_MAJOR, 126)), "/dev/cons126", exists_console, S_IFCHR, true}, {"/dev/cons127", BRACK(FHDEV(DEV_CONS_MAJOR, 127)), "/dev/cons127", exists_console, S_IFCHR, true}, {"/dev/console", BRACK(FH_CONSOLE), "/dev/console", exists_console, S_IFCHR, true}, + {"/dev/disk", BRACK(FH_DEV_DISK), "", exists, S_IFDIR, true}, {"/dev/dsp", BRACK(FH_OSS_DSP), "\\Device\\Null", exists_ntdev, S_IFCHR, true}, {"/dev/fd", BRACK(FH_DEV_FD), "/proc/self/fd", exists, S_IFLNK, true}, {"/dev/fd0", BRACK(FHDEV(DEV_FLOPPY_MAJOR, 0)), "\\Device\\Floppy0", exists_ntdev, S_IFBLK, true}, @@ -1030,9 +1034,9 @@ const _RDATA _device dev_storage[] = const _device *cons_dev = dev_storage + 20; const _device *console_dev = dev_storage + 148; -const _device *ptym_dev = dev_storage + 725; -const _device *ptys_dev = dev_storage + 299; -const _device *urandom_dev = dev_storage + 720; +const _device *ptym_dev = dev_storage + 726; +const _device *ptys_dev = dev_storage + 300; +const _device *urandom_dev = dev_storage + 721; static KR_device_t KR_find_keyword (const char *KR_keyword, int KR_length) @@ -1062,7 +1066,7 @@ return NULL; if (strncmp (KR_keyword, ":pipe", 5) == 0) { { -return dev_storage + 724; +return dev_storage + 725; } } @@ -1077,7 +1081,7 @@ return NULL; if (strncmp (KR_keyword, ":fifo", 5) == 0) { { -return dev_storage + 723; +return dev_storage + 724; } } @@ -1101,7 +1105,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym9", 6) == 0) { { -return dev_storage + 734; +return dev_storage + 735; } } @@ -1116,7 +1120,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym8", 6) == 0) { { -return dev_storage + 733; +return dev_storage + 734; } } @@ -1131,7 +1135,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym7", 6) == 0) { { -return dev_storage + 732; +return dev_storage + 733; } } @@ -1146,7 +1150,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym6", 6) == 0) { { -return dev_storage + 731; +return dev_storage + 732; } } @@ -1161,7 +1165,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym5", 6) == 0) { { -return dev_storage + 730; +return dev_storage + 731; } } @@ -1176,7 +1180,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym4", 6) == 0) { { -return dev_storage + 729; +return dev_storage + 730; } } @@ -1191,7 +1195,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym3", 6) == 0) { { -return dev_storage + 728; +return dev_storage + 729; } } @@ -1206,7 +1210,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym2", 6) == 0) { { -return dev_storage + 727; +return dev_storage + 728; } } @@ -1221,7 +1225,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym1", 6) == 0) { { -return dev_storage + 726; +return dev_storage + 727; } } @@ -1236,7 +1240,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym0", 6) == 0) { { -return dev_storage + 725; +return dev_storage + 726; } } @@ -1260,7 +1264,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd", 7) == 0) { { -return dev_storage + 150; +return dev_storage + 151; } } @@ -1278,7 +1282,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym99", 7) == 0) { { -return dev_storage + 824; +return dev_storage + 825; } } @@ -1293,7 +1297,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym98", 7) == 0) { { -return dev_storage + 823; +return dev_storage + 824; } } @@ -1308,7 +1312,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym97", 7) == 0) { { -return dev_storage + 822; +return dev_storage + 823; } } @@ -1323,7 +1327,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym96", 7) == 0) { { -return dev_storage + 821; +return dev_storage + 822; } } @@ -1338,7 +1342,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym95", 7) == 0) { { -return dev_storage + 820; +return dev_storage + 821; } } @@ -1353,7 +1357,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym94", 7) == 0) { { -return dev_storage + 819; +return dev_storage + 820; } } @@ -1368,7 +1372,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym93", 7) == 0) { { -return dev_storage + 818; +return dev_storage + 819; } } @@ -1383,7 +1387,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym92", 7) == 0) { { -return dev_storage + 817; +return dev_storage + 818; } } @@ -1398,7 +1402,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym91", 7) == 0) { { -return dev_storage + 816; +return dev_storage + 817; } } @@ -1413,7 +1417,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym90", 7) == 0) { { -return dev_storage + 815; +return dev_storage + 816; } } @@ -1437,7 +1441,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym89", 7) == 0) { { -return dev_storage + 814; +return dev_storage + 815; } } @@ -1452,7 +1456,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym88", 7) == 0) { { -return dev_storage + 813; +return dev_storage + 814; } } @@ -1467,7 +1471,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym87", 7) == 0) { { -return dev_storage + 812; +return dev_storage + 813; } } @@ -1482,7 +1486,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym86", 7) == 0) { { -return dev_storage + 811; +return dev_storage + 812; } } @@ -1497,7 +1501,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym85", 7) == 0) { { -return dev_storage + 810; +return dev_storage + 811; } } @@ -1512,7 +1516,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym84", 7) == 0) { { -return dev_storage + 809; +return dev_storage + 810; } } @@ -1527,7 +1531,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym83", 7) == 0) { { -return dev_storage + 808; +return dev_storage + 809; } } @@ -1542,7 +1546,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym82", 7) == 0) { { -return dev_storage + 807; +return dev_storage + 808; } } @@ -1557,7 +1561,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym81", 7) == 0) { { -return dev_storage + 806; +return dev_storage + 807; } } @@ -1572,7 +1576,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym80", 7) == 0) { { -return dev_storage + 805; +return dev_storage + 806; } } @@ -1596,7 +1600,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym79", 7) == 0) { { -return dev_storage + 804; +return dev_storage + 805; } } @@ -1611,7 +1615,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym78", 7) == 0) { { -return dev_storage + 803; +return dev_storage + 804; } } @@ -1626,7 +1630,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym77", 7) == 0) { { -return dev_storage + 802; +return dev_storage + 803; } } @@ -1641,7 +1645,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym76", 7) == 0) { { -return dev_storage + 801; +return dev_storage + 802; } } @@ -1656,7 +1660,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym75", 7) == 0) { { -return dev_storage + 800; +return dev_storage + 801; } } @@ -1671,7 +1675,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym74", 7) == 0) { { -return dev_storage + 799; +return dev_storage + 800; } } @@ -1686,7 +1690,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym73", 7) == 0) { { -return dev_storage + 798; +return dev_storage + 799; } } @@ -1701,7 +1705,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym72", 7) == 0) { { -return dev_storage + 797; +return dev_storage + 798; } } @@ -1716,7 +1720,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym71", 7) == 0) { { -return dev_storage + 796; +return dev_storage + 797; } } @@ -1731,7 +1735,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym70", 7) == 0) { { -return dev_storage + 795; +return dev_storage + 796; } } @@ -1755,7 +1759,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym69", 7) == 0) { { -return dev_storage + 794; +return dev_storage + 795; } } @@ -1770,7 +1774,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym68", 7) == 0) { { -return dev_storage + 793; +return dev_storage + 794; } } @@ -1785,7 +1789,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym67", 7) == 0) { { -return dev_storage + 792; +return dev_storage + 793; } } @@ -1800,7 +1804,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym66", 7) == 0) { { -return dev_storage + 791; +return dev_storage + 792; } } @@ -1815,7 +1819,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym65", 7) == 0) { { -return dev_storage + 790; +return dev_storage + 791; } } @@ -1830,7 +1834,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym64", 7) == 0) { { -return dev_storage + 789; +return dev_storage + 790; } } @@ -1845,7 +1849,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym63", 7) == 0) { { -return dev_storage + 788; +return dev_storage + 789; } } @@ -1860,7 +1864,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym62", 7) == 0) { { -return dev_storage + 787; +return dev_storage + 788; } } @@ -1875,7 +1879,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym61", 7) == 0) { { -return dev_storage + 786; +return dev_storage + 787; } } @@ -1890,7 +1894,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym60", 7) == 0) { { -return dev_storage + 785; +return dev_storage + 786; } } @@ -1914,7 +1918,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym59", 7) == 0) { { -return dev_storage + 784; +return dev_storage + 785; } } @@ -1929,7 +1933,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym58", 7) == 0) { { -return dev_storage + 783; +return dev_storage + 784; } } @@ -1944,7 +1948,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym57", 7) == 0) { { -return dev_storage + 782; +return dev_storage + 783; } } @@ -1959,7 +1963,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym56", 7) == 0) { { -return dev_storage + 781; +return dev_storage + 782; } } @@ -1974,7 +1978,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym55", 7) == 0) { { -return dev_storage + 780; +return dev_storage + 781; } } @@ -1989,7 +1993,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym54", 7) == 0) { { -return dev_storage + 779; +return dev_storage + 780; } } @@ -2004,7 +2008,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym53", 7) == 0) { { -return dev_storage + 778; +return dev_storage + 779; } } @@ -2019,7 +2023,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym52", 7) == 0) { { -return dev_storage + 777; +return dev_storage + 778; } } @@ -2034,7 +2038,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym51", 7) == 0) { { -return dev_storage + 776; +return dev_storage + 777; } } @@ -2049,7 +2053,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym50", 7) == 0) { { -return dev_storage + 775; +return dev_storage + 776; } } @@ -2073,7 +2077,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym49", 7) == 0) { { -return dev_storage + 774; +return dev_storage + 775; } } @@ -2088,7 +2092,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym48", 7) == 0) { { -return dev_storage + 773; +return dev_storage + 774; } } @@ -2103,7 +2107,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym47", 7) == 0) { { -return dev_storage + 772; +return dev_storage + 773; } } @@ -2118,7 +2122,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym46", 7) == 0) { { -return dev_storage + 771; +return dev_storage + 772; } } @@ -2133,7 +2137,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym45", 7) == 0) { { -return dev_storage + 770; +return dev_storage + 771; } } @@ -2148,7 +2152,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym44", 7) == 0) { { -return dev_storage + 769; +return dev_storage + 770; } } @@ -2163,7 +2167,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym43", 7) == 0) { { -return dev_storage + 768; +return dev_storage + 769; } } @@ -2178,7 +2182,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym42", 7) == 0) { { -return dev_storage + 767; +return dev_storage + 768; } } @@ -2193,7 +2197,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym41", 7) == 0) { { -return dev_storage + 766; +return dev_storage + 767; } } @@ -2208,7 +2212,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym40", 7) == 0) { { -return dev_storage + 765; +return dev_storage + 766; } } @@ -2232,7 +2236,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym39", 7) == 0) { { -return dev_storage + 764; +return dev_storage + 765; } } @@ -2247,7 +2251,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym38", 7) == 0) { { -return dev_storage + 763; +return dev_storage + 764; } } @@ -2262,7 +2266,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym37", 7) == 0) { { -return dev_storage + 762; +return dev_storage + 763; } } @@ -2277,7 +2281,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym36", 7) == 0) { { -return dev_storage + 761; +return dev_storage + 762; } } @@ -2292,7 +2296,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym35", 7) == 0) { { -return dev_storage + 760; +return dev_storage + 761; } } @@ -2307,7 +2311,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym34", 7) == 0) { { -return dev_storage + 759; +return dev_storage + 760; } } @@ -2322,7 +2326,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym33", 7) == 0) { { -return dev_storage + 758; +return dev_storage + 759; } } @@ -2337,7 +2341,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym32", 7) == 0) { { -return dev_storage + 757; +return dev_storage + 758; } } @@ -2352,7 +2356,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym31", 7) == 0) { { -return dev_storage + 756; +return dev_storage + 757; } } @@ -2367,7 +2371,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym30", 7) == 0) { { -return dev_storage + 755; +return dev_storage + 756; } } @@ -2391,7 +2395,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym29", 7) == 0) { { -return dev_storage + 754; +return dev_storage + 755; } } @@ -2406,7 +2410,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym28", 7) == 0) { { -return dev_storage + 753; +return dev_storage + 754; } } @@ -2421,7 +2425,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym27", 7) == 0) { { -return dev_storage + 752; +return dev_storage + 753; } } @@ -2436,7 +2440,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym26", 7) == 0) { { -return dev_storage + 751; +return dev_storage + 752; } } @@ -2451,7 +2455,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym25", 7) == 0) { { -return dev_storage + 750; +return dev_storage + 751; } } @@ -2466,7 +2470,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym24", 7) == 0) { { -return dev_storage + 749; +return dev_storage + 750; } } @@ -2481,7 +2485,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym23", 7) == 0) { { -return dev_storage + 748; +return dev_storage + 749; } } @@ -2496,7 +2500,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym22", 7) == 0) { { -return dev_storage + 747; +return dev_storage + 748; } } @@ -2511,7 +2515,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym21", 7) == 0) { { -return dev_storage + 746; +return dev_storage + 747; } } @@ -2526,7 +2530,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym20", 7) == 0) { { -return dev_storage + 745; +return dev_storage + 746; } } @@ -2550,7 +2554,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym19", 7) == 0) { { -return dev_storage + 744; +return dev_storage + 745; } } @@ -2565,7 +2569,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym18", 7) == 0) { { -return dev_storage + 743; +return dev_storage + 744; } } @@ -2580,7 +2584,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym17", 7) == 0) { { -return dev_storage + 742; +return dev_storage + 743; } } @@ -2595,7 +2599,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym16", 7) == 0) { { -return dev_storage + 741; +return dev_storage + 742; } } @@ -2610,7 +2614,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym15", 7) == 0) { { -return dev_storage + 740; +return dev_storage + 741; } } @@ -2625,7 +2629,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym14", 7) == 0) { { -return dev_storage + 739; +return dev_storage + 740; } } @@ -2640,7 +2644,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym13", 7) == 0) { { -return dev_storage + 738; +return dev_storage + 739; } } @@ -2655,7 +2659,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym12", 7) == 0) { { -return dev_storage + 737; +return dev_storage + 738; } } @@ -2670,7 +2674,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym11", 7) == 0) { { -return dev_storage + 736; +return dev_storage + 737; } } @@ -2685,7 +2689,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym10", 7) == 0) { { -return dev_storage + 735; +return dev_storage + 736; } } @@ -2715,7 +2719,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty", 8) == 0) { { -return dev_storage + 591; +return dev_storage + 592; } } @@ -2730,7 +2734,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/dsp", 8) == 0) { { -return dev_storage + 149; +return dev_storage + 150; } } @@ -2748,7 +2752,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st9", 8) == 0) { { -return dev_storage + 469; +return dev_storage + 470; } } @@ -2763,7 +2767,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr9", 8) == 0) { { -return dev_storage + 453; +return dev_storage + 454; } } @@ -2778,7 +2782,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd9", 8) == 0) { { -return dev_storage + 160; +return dev_storage + 161; } } @@ -2793,7 +2797,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym119", 8) == 0) { { -return dev_storage + 844; +return dev_storage + 845; } } @@ -2808,7 +2812,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym109", 8) == 0) { { -return dev_storage + 834; +return dev_storage + 835; } } @@ -2832,7 +2836,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st8", 8) == 0) { { -return dev_storage + 468; +return dev_storage + 469; } } @@ -2847,7 +2851,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr8", 8) == 0) { { -return dev_storage + 452; +return dev_storage + 453; } } @@ -2862,7 +2866,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd8", 8) == 0) { { -return dev_storage + 159; +return dev_storage + 160; } } @@ -2877,7 +2881,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym118", 8) == 0) { { -return dev_storage + 843; +return dev_storage + 844; } } @@ -2892,7 +2896,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym108", 8) == 0) { { -return dev_storage + 833; +return dev_storage + 834; } } @@ -2916,7 +2920,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st7", 8) == 0) { { -return dev_storage + 467; +return dev_storage + 468; } } @@ -2931,7 +2935,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr7", 8) == 0) { { -return dev_storage + 451; +return dev_storage + 452; } } @@ -2946,7 +2950,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd7", 8) == 0) { { -return dev_storage + 158; +return dev_storage + 159; } } @@ -2961,7 +2965,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym127", 8) == 0) { { -return dev_storage + 852; +return dev_storage + 853; } } @@ -2976,7 +2980,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym117", 8) == 0) { { -return dev_storage + 842; +return dev_storage + 843; } } @@ -2991,7 +2995,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym107", 8) == 0) { { -return dev_storage + 832; +return dev_storage + 833; } } @@ -3015,7 +3019,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st6", 8) == 0) { { -return dev_storage + 466; +return dev_storage + 467; } } @@ -3030,7 +3034,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr6", 8) == 0) { { -return dev_storage + 450; +return dev_storage + 451; } } @@ -3045,7 +3049,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd6", 8) == 0) { { -return dev_storage + 157; +return dev_storage + 158; } } @@ -3060,7 +3064,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym126", 8) == 0) { { -return dev_storage + 851; +return dev_storage + 852; } } @@ -3075,7 +3079,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym116", 8) == 0) { { -return dev_storage + 841; +return dev_storage + 842; } } @@ -3090,7 +3094,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym106", 8) == 0) { { -return dev_storage + 831; +return dev_storage + 832; } } @@ -3114,7 +3118,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st5", 8) == 0) { { -return dev_storage + 465; +return dev_storage + 466; } } @@ -3129,7 +3133,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr5", 8) == 0) { { -return dev_storage + 449; +return dev_storage + 450; } } @@ -3144,7 +3148,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd5", 8) == 0) { { -return dev_storage + 156; +return dev_storage + 157; } } @@ -3159,7 +3163,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym125", 8) == 0) { { -return dev_storage + 850; +return dev_storage + 851; } } @@ -3174,7 +3178,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym115", 8) == 0) { { -return dev_storage + 840; +return dev_storage + 841; } } @@ -3189,7 +3193,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym105", 8) == 0) { { -return dev_storage + 830; +return dev_storage + 831; } } @@ -3213,7 +3217,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st4", 8) == 0) { { -return dev_storage + 464; +return dev_storage + 465; } } @@ -3228,7 +3232,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr4", 8) == 0) { { -return dev_storage + 448; +return dev_storage + 449; } } @@ -3243,7 +3247,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd4", 8) == 0) { { -return dev_storage + 155; +return dev_storage + 156; } } @@ -3258,7 +3262,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym124", 8) == 0) { { -return dev_storage + 849; +return dev_storage + 850; } } @@ -3273,7 +3277,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym114", 8) == 0) { { -return dev_storage + 839; +return dev_storage + 840; } } @@ -3288,7 +3292,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym104", 8) == 0) { { -return dev_storage + 829; +return dev_storage + 830; } } @@ -3312,7 +3316,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st3", 8) == 0) { { -return dev_storage + 463; +return dev_storage + 464; } } @@ -3327,7 +3331,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr3", 8) == 0) { { -return dev_storage + 447; +return dev_storage + 448; } } @@ -3342,7 +3346,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd3", 8) == 0) { { -return dev_storage + 154; +return dev_storage + 155; } } @@ -3357,7 +3361,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym123", 8) == 0) { { -return dev_storage + 848; +return dev_storage + 849; } } @@ -3372,7 +3376,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym113", 8) == 0) { { -return dev_storage + 838; +return dev_storage + 839; } } @@ -3387,7 +3391,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym103", 8) == 0) { { -return dev_storage + 828; +return dev_storage + 829; } } @@ -3411,7 +3415,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st2", 8) == 0) { { -return dev_storage + 462; +return dev_storage + 463; } } @@ -3426,7 +3430,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr2", 8) == 0) { { -return dev_storage + 446; +return dev_storage + 447; } } @@ -3441,7 +3445,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd2", 8) == 0) { { -return dev_storage + 153; +return dev_storage + 154; } } @@ -3456,7 +3460,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym122", 8) == 0) { { -return dev_storage + 847; +return dev_storage + 848; } } @@ -3471,7 +3475,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym112", 8) == 0) { { -return dev_storage + 837; +return dev_storage + 838; } } @@ -3486,7 +3490,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym102", 8) == 0) { { -return dev_storage + 827; +return dev_storage + 828; } } @@ -3510,7 +3514,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st1", 8) == 0) { { -return dev_storage + 461; +return dev_storage + 462; } } @@ -3525,7 +3529,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr1", 8) == 0) { { -return dev_storage + 445; +return dev_storage + 446; } } @@ -3540,7 +3544,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd1", 8) == 0) { { -return dev_storage + 152; +return dev_storage + 153; } } @@ -3555,7 +3559,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym121", 8) == 0) { { -return dev_storage + 846; +return dev_storage + 847; } } @@ -3570,7 +3574,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym111", 8) == 0) { { -return dev_storage + 836; +return dev_storage + 837; } } @@ -3585,7 +3589,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym101", 8) == 0) { { -return dev_storage + 826; +return dev_storage + 827; } } @@ -3609,7 +3613,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st0", 8) == 0) { { -return dev_storage + 460; +return dev_storage + 461; } } @@ -3624,7 +3628,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr0", 8) == 0) { { -return dev_storage + 444; +return dev_storage + 445; } } @@ -3639,7 +3643,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd0", 8) == 0) { { -return dev_storage + 151; +return dev_storage + 152; } } @@ -3654,7 +3658,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym120", 8) == 0) { { -return dev_storage + 845; +return dev_storage + 846; } } @@ -3669,7 +3673,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym110", 8) == 0) { { -return dev_storage + 835; +return dev_storage + 836; } } @@ -3684,7 +3688,7 @@ return NULL; if (strncmp (KR_keyword, ":ptym100", 8) == 0) { { -return dev_storage + 825; +return dev_storage + 826; } } @@ -3714,7 +3718,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ptmx", 9) == 0) { { -return dev_storage + 298; +return dev_storage + 299; } } @@ -3729,7 +3733,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/zero", 9) == 0) { { -return dev_storage + 722; +return dev_storage + 723; } } @@ -3747,7 +3751,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/null", 9) == 0) { { -return dev_storage + 297; +return dev_storage + 298; } } @@ -3762,7 +3766,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/full", 9) == 0) { { -return dev_storage + 167; +return dev_storage + 168; } } @@ -3777,6 +3781,21 @@ return NULL; { return NULL; +} + } + case 'k': + if (strncmp (KR_keyword, "/dev/disk", 9) == 0) + { +{ +return dev_storage + 149; + +} + } + else + { +{ +return NULL; + } } case '9': @@ -3786,7 +3805,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty9", 9) == 0) { { -return dev_storage + 308; +return dev_storage + 309; } } @@ -3801,7 +3820,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst9", 9) == 0) { { -return dev_storage + 178; +return dev_storage + 179; } } @@ -3831,7 +3850,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd9", 9) == 0) { { -return dev_storage + 437; +return dev_storage + 438; } } @@ -3846,7 +3865,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st99", 9) == 0) { { -return dev_storage + 559; +return dev_storage + 560; } } @@ -3861,7 +3880,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st89", 9) == 0) { { -return dev_storage + 549; +return dev_storage + 550; } } @@ -3876,7 +3895,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st79", 9) == 0) { { -return dev_storage + 539; +return dev_storage + 540; } } @@ -3891,7 +3910,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st69", 9) == 0) { { -return dev_storage + 529; +return dev_storage + 530; } } @@ -3906,7 +3925,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st59", 9) == 0) { { -return dev_storage + 519; +return dev_storage + 520; } } @@ -3921,7 +3940,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st49", 9) == 0) { { -return dev_storage + 509; +return dev_storage + 510; } } @@ -3936,7 +3955,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st39", 9) == 0) { { -return dev_storage + 499; +return dev_storage + 500; } } @@ -3951,7 +3970,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st29", 9) == 0) { { -return dev_storage + 489; +return dev_storage + 490; } } @@ -3966,7 +3985,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st19", 9) == 0) { { -return dev_storage + 479; +return dev_storage + 480; } } @@ -3990,7 +4009,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty8", 9) == 0) { { -return dev_storage + 307; +return dev_storage + 308; } } @@ -4005,7 +4024,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst8", 9) == 0) { { -return dev_storage + 177; +return dev_storage + 178; } } @@ -4035,7 +4054,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd8", 9) == 0) { { -return dev_storage + 436; +return dev_storage + 437; } } @@ -4050,7 +4069,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st98", 9) == 0) { { -return dev_storage + 558; +return dev_storage + 559; } } @@ -4065,7 +4084,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st88", 9) == 0) { { -return dev_storage + 548; +return dev_storage + 549; } } @@ -4080,7 +4099,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st78", 9) == 0) { { -return dev_storage + 538; +return dev_storage + 539; } } @@ -4095,7 +4114,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st68", 9) == 0) { { -return dev_storage + 528; +return dev_storage + 529; } } @@ -4110,7 +4129,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st58", 9) == 0) { { -return dev_storage + 518; +return dev_storage + 519; } } @@ -4125,7 +4144,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st48", 9) == 0) { { -return dev_storage + 508; +return dev_storage + 509; } } @@ -4140,7 +4159,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st38", 9) == 0) { { -return dev_storage + 498; +return dev_storage + 499; } } @@ -4155,7 +4174,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st28", 9) == 0) { { -return dev_storage + 488; +return dev_storage + 489; } } @@ -4170,7 +4189,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st18", 9) == 0) { { -return dev_storage + 478; +return dev_storage + 479; } } @@ -4194,7 +4213,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty7", 9) == 0) { { -return dev_storage + 306; +return dev_storage + 307; } } @@ -4209,7 +4228,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst7", 9) == 0) { { -return dev_storage + 176; +return dev_storage + 177; } } @@ -4239,7 +4258,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd7", 9) == 0) { { -return dev_storage + 435; +return dev_storage + 436; } } @@ -4254,7 +4273,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st97", 9) == 0) { { -return dev_storage + 557; +return dev_storage + 558; } } @@ -4269,7 +4288,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st87", 9) == 0) { { -return dev_storage + 547; +return dev_storage + 548; } } @@ -4284,7 +4303,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st77", 9) == 0) { { -return dev_storage + 537; +return dev_storage + 538; } } @@ -4299,7 +4318,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st67", 9) == 0) { { -return dev_storage + 527; +return dev_storage + 528; } } @@ -4314,7 +4333,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st57", 9) == 0) { { -return dev_storage + 517; +return dev_storage + 518; } } @@ -4329,7 +4348,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st47", 9) == 0) { { -return dev_storage + 507; +return dev_storage + 508; } } @@ -4344,7 +4363,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st37", 9) == 0) { { -return dev_storage + 497; +return dev_storage + 498; } } @@ -4359,7 +4378,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st27", 9) == 0) { { -return dev_storage + 487; +return dev_storage + 488; } } @@ -4374,7 +4393,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st17", 9) == 0) { { -return dev_storage + 477; +return dev_storage + 478; } } @@ -4398,7 +4417,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty6", 9) == 0) { { -return dev_storage + 305; +return dev_storage + 306; } } @@ -4413,7 +4432,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst6", 9) == 0) { { -return dev_storage + 175; +return dev_storage + 176; } } @@ -4443,7 +4462,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd6", 9) == 0) { { -return dev_storage + 434; +return dev_storage + 435; } } @@ -4458,7 +4477,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st96", 9) == 0) { { -return dev_storage + 556; +return dev_storage + 557; } } @@ -4473,7 +4492,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st86", 9) == 0) { { -return dev_storage + 546; +return dev_storage + 547; } } @@ -4488,7 +4507,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st76", 9) == 0) { { -return dev_storage + 536; +return dev_storage + 537; } } @@ -4503,7 +4522,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st66", 9) == 0) { { -return dev_storage + 526; +return dev_storage + 527; } } @@ -4518,7 +4537,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st56", 9) == 0) { { -return dev_storage + 516; +return dev_storage + 517; } } @@ -4533,7 +4552,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st46", 9) == 0) { { -return dev_storage + 506; +return dev_storage + 507; } } @@ -4548,7 +4567,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st36", 9) == 0) { { -return dev_storage + 496; +return dev_storage + 497; } } @@ -4563,7 +4582,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st26", 9) == 0) { { -return dev_storage + 486; +return dev_storage + 487; } } @@ -4578,7 +4597,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st16", 9) == 0) { { -return dev_storage + 476; +return dev_storage + 477; } } @@ -4602,7 +4621,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty5", 9) == 0) { { -return dev_storage + 304; +return dev_storage + 305; } } @@ -4617,7 +4636,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst5", 9) == 0) { { -return dev_storage + 174; +return dev_storage + 175; } } @@ -4647,7 +4666,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd5", 9) == 0) { { -return dev_storage + 433; +return dev_storage + 434; } } @@ -4662,7 +4681,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st95", 9) == 0) { { -return dev_storage + 555; +return dev_storage + 556; } } @@ -4677,7 +4696,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st85", 9) == 0) { { -return dev_storage + 545; +return dev_storage + 546; } } @@ -4692,7 +4711,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st75", 9) == 0) { { -return dev_storage + 535; +return dev_storage + 536; } } @@ -4707,7 +4726,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st65", 9) == 0) { { -return dev_storage + 525; +return dev_storage + 526; } } @@ -4722,7 +4741,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st55", 9) == 0) { { -return dev_storage + 515; +return dev_storage + 516; } } @@ -4737,7 +4756,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st45", 9) == 0) { { -return dev_storage + 505; +return dev_storage + 506; } } @@ -4752,7 +4771,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st35", 9) == 0) { { -return dev_storage + 495; +return dev_storage + 496; } } @@ -4767,7 +4786,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st25", 9) == 0) { { -return dev_storage + 485; +return dev_storage + 486; } } @@ -4785,7 +4804,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st15", 9) == 0) { { -return dev_storage + 475; +return dev_storage + 476; } } @@ -4800,7 +4819,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr15", 9) == 0) { { -return dev_storage + 459; +return dev_storage + 460; } } @@ -4815,7 +4834,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd15", 9) == 0) { { -return dev_storage + 166; +return dev_storage + 167; } } @@ -4845,7 +4864,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty4", 9) == 0) { { -return dev_storage + 303; +return dev_storage + 304; } } @@ -4860,7 +4879,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst4", 9) == 0) { { -return dev_storage + 173; +return dev_storage + 174; } } @@ -4890,7 +4909,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd4", 9) == 0) { { -return dev_storage + 432; +return dev_storage + 433; } } @@ -4905,7 +4924,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st94", 9) == 0) { { -return dev_storage + 554; +return dev_storage + 555; } } @@ -4920,7 +4939,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st84", 9) == 0) { { -return dev_storage + 544; +return dev_storage + 545; } } @@ -4935,7 +4954,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st74", 9) == 0) { { -return dev_storage + 534; +return dev_storage + 535; } } @@ -4950,7 +4969,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st64", 9) == 0) { { -return dev_storage + 524; +return dev_storage + 525; } } @@ -4965,7 +4984,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st54", 9) == 0) { { -return dev_storage + 514; +return dev_storage + 515; } } @@ -4980,7 +4999,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st44", 9) == 0) { { -return dev_storage + 504; +return dev_storage + 505; } } @@ -4995,7 +5014,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st34", 9) == 0) { { -return dev_storage + 494; +return dev_storage + 495; } } @@ -5010,7 +5029,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st24", 9) == 0) { { -return dev_storage + 484; +return dev_storage + 485; } } @@ -5028,7 +5047,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st14", 9) == 0) { { -return dev_storage + 474; +return dev_storage + 475; } } @@ -5043,7 +5062,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr14", 9) == 0) { { -return dev_storage + 458; +return dev_storage + 459; } } @@ -5058,7 +5077,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd14", 9) == 0) { { -return dev_storage + 165; +return dev_storage + 166; } } @@ -5088,7 +5107,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty3", 9) == 0) { { -return dev_storage + 302; +return dev_storage + 303; } } @@ -5103,7 +5122,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst3", 9) == 0) { { -return dev_storage + 172; +return dev_storage + 173; } } @@ -5133,7 +5152,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd3", 9) == 0) { { -return dev_storage + 431; +return dev_storage + 432; } } @@ -5148,7 +5167,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st93", 9) == 0) { { -return dev_storage + 553; +return dev_storage + 554; } } @@ -5163,7 +5182,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st83", 9) == 0) { { -return dev_storage + 543; +return dev_storage + 544; } } @@ -5178,7 +5197,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st73", 9) == 0) { { -return dev_storage + 533; +return dev_storage + 534; } } @@ -5193,7 +5212,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st63", 9) == 0) { { -return dev_storage + 523; +return dev_storage + 524; } } @@ -5208,7 +5227,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st53", 9) == 0) { { -return dev_storage + 513; +return dev_storage + 514; } } @@ -5223,7 +5242,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st43", 9) == 0) { { -return dev_storage + 503; +return dev_storage + 504; } } @@ -5238,7 +5257,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st33", 9) == 0) { { -return dev_storage + 493; +return dev_storage + 494; } } @@ -5253,7 +5272,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st23", 9) == 0) { { -return dev_storage + 483; +return dev_storage + 484; } } @@ -5271,7 +5290,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st13", 9) == 0) { { -return dev_storage + 473; +return dev_storage + 474; } } @@ -5286,7 +5305,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr13", 9) == 0) { { -return dev_storage + 457; +return dev_storage + 458; } } @@ -5301,7 +5320,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd13", 9) == 0) { { -return dev_storage + 164; +return dev_storage + 165; } } @@ -5331,7 +5350,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty2", 9) == 0) { { -return dev_storage + 301; +return dev_storage + 302; } } @@ -5346,7 +5365,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst2", 9) == 0) { { -return dev_storage + 171; +return dev_storage + 172; } } @@ -5376,7 +5395,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd2", 9) == 0) { { -return dev_storage + 430; +return dev_storage + 431; } } @@ -5391,7 +5410,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st92", 9) == 0) { { -return dev_storage + 552; +return dev_storage + 553; } } @@ -5406,7 +5425,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st82", 9) == 0) { { -return dev_storage + 542; +return dev_storage + 543; } } @@ -5421,7 +5440,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st72", 9) == 0) { { -return dev_storage + 532; +return dev_storage + 533; } } @@ -5436,7 +5455,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st62", 9) == 0) { { -return dev_storage + 522; +return dev_storage + 523; } } @@ -5451,7 +5470,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st52", 9) == 0) { { -return dev_storage + 512; +return dev_storage + 513; } } @@ -5466,7 +5485,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st42", 9) == 0) { { -return dev_storage + 502; +return dev_storage + 503; } } @@ -5481,7 +5500,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st32", 9) == 0) { { -return dev_storage + 492; +return dev_storage + 493; } } @@ -5496,7 +5515,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st22", 9) == 0) { { -return dev_storage + 482; +return dev_storage + 483; } } @@ -5514,7 +5533,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st12", 9) == 0) { { -return dev_storage + 472; +return dev_storage + 473; } } @@ -5529,7 +5548,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr12", 9) == 0) { { -return dev_storage + 456; +return dev_storage + 457; } } @@ -5544,7 +5563,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd12", 9) == 0) { { -return dev_storage + 163; +return dev_storage + 164; } } @@ -5574,7 +5593,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty1", 9) == 0) { { -return dev_storage + 300; +return dev_storage + 301; } } @@ -5589,7 +5608,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst1", 9) == 0) { { -return dev_storage + 170; +return dev_storage + 171; } } @@ -5619,7 +5638,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd1", 9) == 0) { { -return dev_storage + 429; +return dev_storage + 430; } } @@ -5634,7 +5653,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st91", 9) == 0) { { -return dev_storage + 551; +return dev_storage + 552; } } @@ -5649,7 +5668,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st81", 9) == 0) { { -return dev_storage + 541; +return dev_storage + 542; } } @@ -5664,7 +5683,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st71", 9) == 0) { { -return dev_storage + 531; +return dev_storage + 532; } } @@ -5679,7 +5698,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st61", 9) == 0) { { -return dev_storage + 521; +return dev_storage + 522; } } @@ -5694,7 +5713,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st51", 9) == 0) { { -return dev_storage + 511; +return dev_storage + 512; } } @@ -5709,7 +5728,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st41", 9) == 0) { { -return dev_storage + 501; +return dev_storage + 502; } } @@ -5724,7 +5743,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st31", 9) == 0) { { -return dev_storage + 491; +return dev_storage + 492; } } @@ -5739,7 +5758,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st21", 9) == 0) { { -return dev_storage + 481; +return dev_storage + 482; } } @@ -5757,7 +5776,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st11", 9) == 0) { { -return dev_storage + 471; +return dev_storage + 472; } } @@ -5772,7 +5791,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr11", 9) == 0) { { -return dev_storage + 455; +return dev_storage + 456; } } @@ -5787,7 +5806,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd11", 9) == 0) { { -return dev_storage + 162; +return dev_storage + 163; } } @@ -5817,7 +5836,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty0", 9) == 0) { { -return dev_storage + 299; +return dev_storage + 300; } } @@ -5832,7 +5851,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst0", 9) == 0) { { -return dev_storage + 169; +return dev_storage + 170; } } @@ -5847,7 +5866,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd0", 9) == 0) { { -return dev_storage + 428; +return dev_storage + 429; } } @@ -5862,7 +5881,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st90", 9) == 0) { { -return dev_storage + 550; +return dev_storage + 551; } } @@ -5877,7 +5896,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st80", 9) == 0) { { -return dev_storage + 540; +return dev_storage + 541; } } @@ -5892,7 +5911,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st70", 9) == 0) { { -return dev_storage + 530; +return dev_storage + 531; } } @@ -5907,7 +5926,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st60", 9) == 0) { { -return dev_storage + 520; +return dev_storage + 521; } } @@ -5922,7 +5941,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st50", 9) == 0) { { -return dev_storage + 510; +return dev_storage + 511; } } @@ -5937,7 +5956,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st40", 9) == 0) { { -return dev_storage + 500; +return dev_storage + 501; } } @@ -5952,7 +5971,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st30", 9) == 0) { { -return dev_storage + 490; +return dev_storage + 491; } } @@ -5967,7 +5986,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st20", 9) == 0) { { -return dev_storage + 480; +return dev_storage + 481; } } @@ -5985,7 +6004,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st10", 9) == 0) { { -return dev_storage + 470; +return dev_storage + 471; } } @@ -6000,7 +6019,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr10", 9) == 0) { { -return dev_storage + 454; +return dev_storage + 455; } } @@ -6015,7 +6034,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/fd10", 9) == 0) { { -return dev_storage + 161; +return dev_storage + 162; } } @@ -6213,7 +6232,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/stdin", 10) == 0) { { -return dev_storage + 589; +return dev_storage + 590; } } @@ -6249,7 +6268,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/mixer", 10) == 0) { { -return dev_storage + 168; +return dev_storage + 169; } } @@ -6267,7 +6286,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS9", 10) == 0) { { -return dev_storage + 601; +return dev_storage + 602; } } @@ -6282,7 +6301,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS8", 10) == 0) { { -return dev_storage + 600; +return dev_storage + 601; } } @@ -6297,7 +6316,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS7", 10) == 0) { { -return dev_storage + 599; +return dev_storage + 600; } } @@ -6312,7 +6331,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS6", 10) == 0) { { -return dev_storage + 598; +return dev_storage + 599; } } @@ -6327,7 +6346,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS5", 10) == 0) { { -return dev_storage + 597; +return dev_storage + 598; } } @@ -6342,7 +6361,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS4", 10) == 0) { { -return dev_storage + 596; +return dev_storage + 597; } } @@ -6357,7 +6376,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS3", 10) == 0) { { -return dev_storage + 595; +return dev_storage + 596; } } @@ -6372,7 +6391,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS2", 10) == 0) { { -return dev_storage + 594; +return dev_storage + 595; } } @@ -6387,7 +6406,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS1", 10) == 0) { { -return dev_storage + 593; +return dev_storage + 594; } } @@ -6402,7 +6421,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS0", 10) == 0) { { -return dev_storage + 592; +return dev_storage + 593; } } @@ -6429,7 +6448,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty99", 10) == 0) { { -return dev_storage + 398; +return dev_storage + 399; } } @@ -6444,7 +6463,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty98", 10) == 0) { { -return dev_storage + 397; +return dev_storage + 398; } } @@ -6459,7 +6478,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty97", 10) == 0) { { -return dev_storage + 396; +return dev_storage + 397; } } @@ -6474,7 +6493,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty96", 10) == 0) { { -return dev_storage + 395; +return dev_storage + 396; } } @@ -6489,7 +6508,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty95", 10) == 0) { { -return dev_storage + 394; +return dev_storage + 395; } } @@ -6504,7 +6523,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty94", 10) == 0) { { -return dev_storage + 393; +return dev_storage + 394; } } @@ -6519,7 +6538,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty93", 10) == 0) { { -return dev_storage + 392; +return dev_storage + 393; } } @@ -6534,7 +6553,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty92", 10) == 0) { { -return dev_storage + 391; +return dev_storage + 392; } } @@ -6549,7 +6568,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty91", 10) == 0) { { -return dev_storage + 390; +return dev_storage + 391; } } @@ -6564,7 +6583,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty90", 10) == 0) { { -return dev_storage + 389; +return dev_storage + 390; } } @@ -6588,7 +6607,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst99", 10) == 0) { { -return dev_storage + 268; +return dev_storage + 269; } } @@ -6603,7 +6622,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst98", 10) == 0) { { -return dev_storage + 267; +return dev_storage + 268; } } @@ -6618,7 +6637,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst97", 10) == 0) { { -return dev_storage + 266; +return dev_storage + 267; } } @@ -6633,7 +6652,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst96", 10) == 0) { { -return dev_storage + 265; +return dev_storage + 266; } } @@ -6648,7 +6667,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst95", 10) == 0) { { -return dev_storage + 264; +return dev_storage + 265; } } @@ -6663,7 +6682,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst94", 10) == 0) { { -return dev_storage + 263; +return dev_storage + 264; } } @@ -6678,7 +6697,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst93", 10) == 0) { { -return dev_storage + 262; +return dev_storage + 263; } } @@ -6693,7 +6712,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst92", 10) == 0) { { -return dev_storage + 261; +return dev_storage + 262; } } @@ -6708,7 +6727,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst91", 10) == 0) { { -return dev_storage + 260; +return dev_storage + 261; } } @@ -6723,7 +6742,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst90", 10) == 0) { { -return dev_storage + 259; +return dev_storage + 260; } } @@ -6756,7 +6775,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty89", 10) == 0) { { -return dev_storage + 388; +return dev_storage + 389; } } @@ -6771,7 +6790,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty88", 10) == 0) { { -return dev_storage + 387; +return dev_storage + 388; } } @@ -6786,7 +6805,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty87", 10) == 0) { { -return dev_storage + 386; +return dev_storage + 387; } } @@ -6801,7 +6820,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty86", 10) == 0) { { -return dev_storage + 385; +return dev_storage + 386; } } @@ -6816,7 +6835,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty85", 10) == 0) { { -return dev_storage + 384; +return dev_storage + 385; } } @@ -6831,7 +6850,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty84", 10) == 0) { { -return dev_storage + 383; +return dev_storage + 384; } } @@ -6846,7 +6865,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty83", 10) == 0) { { -return dev_storage + 382; +return dev_storage + 383; } } @@ -6861,7 +6880,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty82", 10) == 0) { { -return dev_storage + 381; +return dev_storage + 382; } } @@ -6876,7 +6895,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty81", 10) == 0) { { -return dev_storage + 380; +return dev_storage + 381; } } @@ -6891,7 +6910,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty80", 10) == 0) { { -return dev_storage + 379; +return dev_storage + 380; } } @@ -6915,7 +6934,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst89", 10) == 0) { { -return dev_storage + 258; +return dev_storage + 259; } } @@ -6930,7 +6949,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst88", 10) == 0) { { -return dev_storage + 257; +return dev_storage + 258; } } @@ -6945,7 +6964,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst87", 10) == 0) { { -return dev_storage + 256; +return dev_storage + 257; } } @@ -6960,7 +6979,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst86", 10) == 0) { { -return dev_storage + 255; +return dev_storage + 256; } } @@ -6975,7 +6994,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst85", 10) == 0) { { -return dev_storage + 254; +return dev_storage + 255; } } @@ -6990,7 +7009,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst84", 10) == 0) { { -return dev_storage + 253; +return dev_storage + 254; } } @@ -7005,7 +7024,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst83", 10) == 0) { { -return dev_storage + 252; +return dev_storage + 253; } } @@ -7020,7 +7039,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst82", 10) == 0) { { -return dev_storage + 251; +return dev_storage + 252; } } @@ -7035,7 +7054,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst81", 10) == 0) { { -return dev_storage + 250; +return dev_storage + 251; } } @@ -7050,7 +7069,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst80", 10) == 0) { { -return dev_storage + 249; +return dev_storage + 250; } } @@ -7083,7 +7102,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty79", 10) == 0) { { -return dev_storage + 378; +return dev_storage + 379; } } @@ -7098,7 +7117,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty78", 10) == 0) { { -return dev_storage + 377; +return dev_storage + 378; } } @@ -7113,7 +7132,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty77", 10) == 0) { { -return dev_storage + 376; +return dev_storage + 377; } } @@ -7128,7 +7147,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty76", 10) == 0) { { -return dev_storage + 375; +return dev_storage + 376; } } @@ -7143,7 +7162,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty75", 10) == 0) { { -return dev_storage + 374; +return dev_storage + 375; } } @@ -7158,7 +7177,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty74", 10) == 0) { { -return dev_storage + 373; +return dev_storage + 374; } } @@ -7173,7 +7192,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty73", 10) == 0) { { -return dev_storage + 372; +return dev_storage + 373; } } @@ -7188,7 +7207,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty72", 10) == 0) { { -return dev_storage + 371; +return dev_storage + 372; } } @@ -7203,7 +7222,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty71", 10) == 0) { { -return dev_storage + 370; +return dev_storage + 371; } } @@ -7218,7 +7237,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty70", 10) == 0) { { -return dev_storage + 369; +return dev_storage + 370; } } @@ -7242,7 +7261,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst79", 10) == 0) { { -return dev_storage + 248; +return dev_storage + 249; } } @@ -7257,7 +7276,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst78", 10) == 0) { { -return dev_storage + 247; +return dev_storage + 248; } } @@ -7272,7 +7291,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst77", 10) == 0) { { -return dev_storage + 246; +return dev_storage + 247; } } @@ -7287,7 +7306,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst76", 10) == 0) { { -return dev_storage + 245; +return dev_storage + 246; } } @@ -7302,7 +7321,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst75", 10) == 0) { { -return dev_storage + 244; +return dev_storage + 245; } } @@ -7317,7 +7336,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst74", 10) == 0) { { -return dev_storage + 243; +return dev_storage + 244; } } @@ -7332,7 +7351,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst73", 10) == 0) { { -return dev_storage + 242; +return dev_storage + 243; } } @@ -7347,7 +7366,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst72", 10) == 0) { { -return dev_storage + 241; +return dev_storage + 242; } } @@ -7362,7 +7381,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst71", 10) == 0) { { -return dev_storage + 240; +return dev_storage + 241; } } @@ -7377,7 +7396,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst70", 10) == 0) { { -return dev_storage + 239; +return dev_storage + 240; } } @@ -7410,7 +7429,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty69", 10) == 0) { { -return dev_storage + 368; +return dev_storage + 369; } } @@ -7425,7 +7444,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty68", 10) == 0) { { -return dev_storage + 367; +return dev_storage + 368; } } @@ -7440,7 +7459,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty67", 10) == 0) { { -return dev_storage + 366; +return dev_storage + 367; } } @@ -7455,7 +7474,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty66", 10) == 0) { { -return dev_storage + 365; +return dev_storage + 366; } } @@ -7470,7 +7489,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty65", 10) == 0) { { -return dev_storage + 364; +return dev_storage + 365; } } @@ -7485,7 +7504,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty64", 10) == 0) { { -return dev_storage + 363; +return dev_storage + 364; } } @@ -7500,7 +7519,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty63", 10) == 0) { { -return dev_storage + 362; +return dev_storage + 363; } } @@ -7515,7 +7534,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty62", 10) == 0) { { -return dev_storage + 361; +return dev_storage + 362; } } @@ -7530,7 +7549,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty61", 10) == 0) { { -return dev_storage + 360; +return dev_storage + 361; } } @@ -7545,7 +7564,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty60", 10) == 0) { { -return dev_storage + 359; +return dev_storage + 360; } } @@ -7569,7 +7588,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst69", 10) == 0) { { -return dev_storage + 238; +return dev_storage + 239; } } @@ -7584,7 +7603,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst68", 10) == 0) { { -return dev_storage + 237; +return dev_storage + 238; } } @@ -7599,7 +7618,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst67", 10) == 0) { { -return dev_storage + 236; +return dev_storage + 237; } } @@ -7614,7 +7633,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst66", 10) == 0) { { -return dev_storage + 235; +return dev_storage + 236; } } @@ -7629,7 +7648,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst65", 10) == 0) { { -return dev_storage + 234; +return dev_storage + 235; } } @@ -7644,7 +7663,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst64", 10) == 0) { { -return dev_storage + 233; +return dev_storage + 234; } } @@ -7659,7 +7678,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst63", 10) == 0) { { -return dev_storage + 232; +return dev_storage + 233; } } @@ -7674,7 +7693,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst62", 10) == 0) { { -return dev_storage + 231; +return dev_storage + 232; } } @@ -7689,7 +7708,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst61", 10) == 0) { { -return dev_storage + 230; +return dev_storage + 231; } } @@ -7704,7 +7723,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst60", 10) == 0) { { -return dev_storage + 229; +return dev_storage + 230; } } @@ -7737,7 +7756,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty59", 10) == 0) { { -return dev_storage + 358; +return dev_storage + 359; } } @@ -7752,7 +7771,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty58", 10) == 0) { { -return dev_storage + 357; +return dev_storage + 358; } } @@ -7767,7 +7786,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty57", 10) == 0) { { -return dev_storage + 356; +return dev_storage + 357; } } @@ -7782,7 +7801,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty56", 10) == 0) { { -return dev_storage + 355; +return dev_storage + 356; } } @@ -7797,7 +7816,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty55", 10) == 0) { { -return dev_storage + 354; +return dev_storage + 355; } } @@ -7812,7 +7831,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty54", 10) == 0) { { -return dev_storage + 353; +return dev_storage + 354; } } @@ -7827,7 +7846,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty53", 10) == 0) { { -return dev_storage + 352; +return dev_storage + 353; } } @@ -7842,7 +7861,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty52", 10) == 0) { { -return dev_storage + 351; +return dev_storage + 352; } } @@ -7857,7 +7876,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty51", 10) == 0) { { -return dev_storage + 350; +return dev_storage + 351; } } @@ -7872,7 +7891,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty50", 10) == 0) { { -return dev_storage + 349; +return dev_storage + 350; } } @@ -7896,7 +7915,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst59", 10) == 0) { { -return dev_storage + 228; +return dev_storage + 229; } } @@ -7911,7 +7930,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst58", 10) == 0) { { -return dev_storage + 227; +return dev_storage + 228; } } @@ -7926,7 +7945,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst57", 10) == 0) { { -return dev_storage + 226; +return dev_storage + 227; } } @@ -7941,7 +7960,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst56", 10) == 0) { { -return dev_storage + 225; +return dev_storage + 226; } } @@ -7956,7 +7975,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst55", 10) == 0) { { -return dev_storage + 224; +return dev_storage + 225; } } @@ -7971,7 +7990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst54", 10) == 0) { { -return dev_storage + 223; +return dev_storage + 224; } } @@ -7986,7 +8005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst53", 10) == 0) { { -return dev_storage + 222; +return dev_storage + 223; } } @@ -8001,7 +8020,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst52", 10) == 0) { { -return dev_storage + 221; +return dev_storage + 222; } } @@ -8016,7 +8035,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst51", 10) == 0) { { -return dev_storage + 220; +return dev_storage + 221; } } @@ -8031,7 +8050,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst50", 10) == 0) { { -return dev_storage + 219; +return dev_storage + 220; } } @@ -8064,7 +8083,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty49", 10) == 0) { { -return dev_storage + 348; +return dev_storage + 349; } } @@ -8079,7 +8098,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty48", 10) == 0) { { -return dev_storage + 347; +return dev_storage + 348; } } @@ -8094,7 +8113,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty47", 10) == 0) { { -return dev_storage + 346; +return dev_storage + 347; } } @@ -8109,7 +8128,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty46", 10) == 0) { { -return dev_storage + 345; +return dev_storage + 346; } } @@ -8124,7 +8143,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty45", 10) == 0) { { -return dev_storage + 344; +return dev_storage + 345; } } @@ -8139,7 +8158,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty44", 10) == 0) { { -return dev_storage + 343; +return dev_storage + 344; } } @@ -8154,7 +8173,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty43", 10) == 0) { { -return dev_storage + 342; +return dev_storage + 343; } } @@ -8169,7 +8188,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty42", 10) == 0) { { -return dev_storage + 341; +return dev_storage + 342; } } @@ -8184,7 +8203,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty41", 10) == 0) { { -return dev_storage + 340; +return dev_storage + 341; } } @@ -8199,7 +8218,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty40", 10) == 0) { { -return dev_storage + 339; +return dev_storage + 340; } } @@ -8223,7 +8242,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst49", 10) == 0) { { -return dev_storage + 218; +return dev_storage + 219; } } @@ -8238,7 +8257,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst48", 10) == 0) { { -return dev_storage + 217; +return dev_storage + 218; } } @@ -8253,7 +8272,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst47", 10) == 0) { { -return dev_storage + 216; +return dev_storage + 217; } } @@ -8268,7 +8287,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst46", 10) == 0) { { -return dev_storage + 215; +return dev_storage + 216; } } @@ -8283,7 +8302,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst45", 10) == 0) { { -return dev_storage + 214; +return dev_storage + 215; } } @@ -8298,7 +8317,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst44", 10) == 0) { { -return dev_storage + 213; +return dev_storage + 214; } } @@ -8313,7 +8332,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst43", 10) == 0) { { -return dev_storage + 212; +return dev_storage + 213; } } @@ -8328,7 +8347,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst42", 10) == 0) { { -return dev_storage + 211; +return dev_storage + 212; } } @@ -8343,7 +8362,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst41", 10) == 0) { { -return dev_storage + 210; +return dev_storage + 211; } } @@ -8358,7 +8377,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst40", 10) == 0) { { -return dev_storage + 209; +return dev_storage + 210; } } @@ -8391,7 +8410,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty39", 10) == 0) { { -return dev_storage + 338; +return dev_storage + 339; } } @@ -8406,7 +8425,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty38", 10) == 0) { { -return dev_storage + 337; +return dev_storage + 338; } } @@ -8421,7 +8440,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty37", 10) == 0) { { -return dev_storage + 336; +return dev_storage + 337; } } @@ -8436,7 +8455,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty36", 10) == 0) { { -return dev_storage + 335; +return dev_storage + 336; } } @@ -8451,7 +8470,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty35", 10) == 0) { { -return dev_storage + 334; +return dev_storage + 335; } } @@ -8466,7 +8485,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty34", 10) == 0) { { -return dev_storage + 333; +return dev_storage + 334; } } @@ -8481,7 +8500,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty33", 10) == 0) { { -return dev_storage + 332; +return dev_storage + 333; } } @@ -8496,7 +8515,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty32", 10) == 0) { { -return dev_storage + 331; +return dev_storage + 332; } } @@ -8511,7 +8530,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty31", 10) == 0) { { -return dev_storage + 330; +return dev_storage + 331; } } @@ -8526,7 +8545,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty30", 10) == 0) { { -return dev_storage + 329; +return dev_storage + 330; } } @@ -8550,7 +8569,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst39", 10) == 0) { { -return dev_storage + 208; +return dev_storage + 209; } } @@ -8565,7 +8584,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst38", 10) == 0) { { -return dev_storage + 207; +return dev_storage + 208; } } @@ -8580,7 +8599,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst37", 10) == 0) { { -return dev_storage + 206; +return dev_storage + 207; } } @@ -8595,7 +8614,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst36", 10) == 0) { { -return dev_storage + 205; +return dev_storage + 206; } } @@ -8610,7 +8629,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst35", 10) == 0) { { -return dev_storage + 204; +return dev_storage + 205; } } @@ -8625,7 +8644,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst34", 10) == 0) { { -return dev_storage + 203; +return dev_storage + 204; } } @@ -8640,7 +8659,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst33", 10) == 0) { { -return dev_storage + 202; +return dev_storage + 203; } } @@ -8655,7 +8674,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst32", 10) == 0) { { -return dev_storage + 201; +return dev_storage + 202; } } @@ -8670,7 +8689,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst31", 10) == 0) { { -return dev_storage + 200; +return dev_storage + 201; } } @@ -8685,7 +8704,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst30", 10) == 0) { { -return dev_storage + 199; +return dev_storage + 200; } } @@ -8718,7 +8737,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st127", 10) == 0) { { -return dev_storage + 587; +return dev_storage + 588; } } @@ -8733,7 +8752,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st126", 10) == 0) { { -return dev_storage + 586; +return dev_storage + 587; } } @@ -8748,7 +8767,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st125", 10) == 0) { { -return dev_storage + 585; +return dev_storage + 586; } } @@ -8763,7 +8782,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st124", 10) == 0) { { -return dev_storage + 584; +return dev_storage + 585; } } @@ -8778,7 +8797,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st123", 10) == 0) { { -return dev_storage + 583; +return dev_storage + 584; } } @@ -8793,7 +8812,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st122", 10) == 0) { { -return dev_storage + 582; +return dev_storage + 583; } } @@ -8808,7 +8827,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st121", 10) == 0) { { -return dev_storage + 581; +return dev_storage + 582; } } @@ -8823,7 +8842,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st120", 10) == 0) { { -return dev_storage + 580; +return dev_storage + 581; } } @@ -8847,7 +8866,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty29", 10) == 0) { { -return dev_storage + 328; +return dev_storage + 329; } } @@ -8862,7 +8881,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty28", 10) == 0) { { -return dev_storage + 327; +return dev_storage + 328; } } @@ -8877,7 +8896,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty27", 10) == 0) { { -return dev_storage + 326; +return dev_storage + 327; } } @@ -8892,7 +8911,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty26", 10) == 0) { { -return dev_storage + 325; +return dev_storage + 326; } } @@ -8907,7 +8926,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty25", 10) == 0) { { -return dev_storage + 324; +return dev_storage + 325; } } @@ -8922,7 +8941,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty24", 10) == 0) { { -return dev_storage + 323; +return dev_storage + 324; } } @@ -8937,7 +8956,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty23", 10) == 0) { { -return dev_storage + 322; +return dev_storage + 323; } } @@ -8952,7 +8971,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty22", 10) == 0) { { -return dev_storage + 321; +return dev_storage + 322; } } @@ -8967,7 +8986,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty21", 10) == 0) { { -return dev_storage + 320; +return dev_storage + 321; } } @@ -8982,7 +9001,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty20", 10) == 0) { { -return dev_storage + 319; +return dev_storage + 320; } } @@ -9006,7 +9025,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst29", 10) == 0) { { -return dev_storage + 198; +return dev_storage + 199; } } @@ -9021,7 +9040,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst28", 10) == 0) { { -return dev_storage + 197; +return dev_storage + 198; } } @@ -9036,7 +9055,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst27", 10) == 0) { { -return dev_storage + 196; +return dev_storage + 197; } } @@ -9051,7 +9070,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst26", 10) == 0) { { -return dev_storage + 195; +return dev_storage + 196; } } @@ -9066,7 +9085,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst25", 10) == 0) { { -return dev_storage + 194; +return dev_storage + 195; } } @@ -9081,7 +9100,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst24", 10) == 0) { { -return dev_storage + 193; +return dev_storage + 194; } } @@ -9096,7 +9115,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst23", 10) == 0) { { -return dev_storage + 192; +return dev_storage + 193; } } @@ -9111,7 +9130,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst22", 10) == 0) { { -return dev_storage + 191; +return dev_storage + 192; } } @@ -9126,7 +9145,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst21", 10) == 0) { { -return dev_storage + 190; +return dev_storage + 191; } } @@ -9141,7 +9160,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst20", 10) == 0) { { -return dev_storage + 189; +return dev_storage + 190; } } @@ -9174,7 +9193,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty19", 10) == 0) { { -return dev_storage + 318; +return dev_storage + 319; } } @@ -9189,7 +9208,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty18", 10) == 0) { { -return dev_storage + 317; +return dev_storage + 318; } } @@ -9204,7 +9223,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty17", 10) == 0) { { -return dev_storage + 316; +return dev_storage + 317; } } @@ -9219,7 +9238,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty16", 10) == 0) { { -return dev_storage + 315; +return dev_storage + 316; } } @@ -9234,7 +9253,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty15", 10) == 0) { { -return dev_storage + 314; +return dev_storage + 315; } } @@ -9249,7 +9268,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty14", 10) == 0) { { -return dev_storage + 313; +return dev_storage + 314; } } @@ -9264,7 +9283,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty13", 10) == 0) { { -return dev_storage + 312; +return dev_storage + 313; } } @@ -9279,7 +9298,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty12", 10) == 0) { { -return dev_storage + 311; +return dev_storage + 312; } } @@ -9294,7 +9313,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty11", 10) == 0) { { -return dev_storage + 310; +return dev_storage + 311; } } @@ -9309,7 +9328,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty10", 10) == 0) { { -return dev_storage + 309; +return dev_storage + 310; } } @@ -9333,7 +9352,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst19", 10) == 0) { { -return dev_storage + 188; +return dev_storage + 189; } } @@ -9348,7 +9367,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst18", 10) == 0) { { -return dev_storage + 187; +return dev_storage + 188; } } @@ -9363,7 +9382,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst17", 10) == 0) { { -return dev_storage + 186; +return dev_storage + 187; } } @@ -9378,7 +9397,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst16", 10) == 0) { { -return dev_storage + 185; +return dev_storage + 186; } } @@ -9393,7 +9412,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst15", 10) == 0) { { -return dev_storage + 184; +return dev_storage + 185; } } @@ -9408,7 +9427,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst14", 10) == 0) { { -return dev_storage + 183; +return dev_storage + 184; } } @@ -9423,7 +9442,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst13", 10) == 0) { { -return dev_storage + 182; +return dev_storage + 183; } } @@ -9438,7 +9457,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst12", 10) == 0) { { -return dev_storage + 181; +return dev_storage + 182; } } @@ -9453,7 +9472,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst11", 10) == 0) { { -return dev_storage + 180; +return dev_storage + 181; } } @@ -9468,7 +9487,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst10", 10) == 0) { { -return dev_storage + 179; +return dev_storage + 180; } } @@ -9606,7 +9625,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd15", 10) == 0) { { -return dev_storage + 443; +return dev_storage + 444; } } @@ -9621,7 +9640,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd14", 10) == 0) { { -return dev_storage + 442; +return dev_storage + 443; } } @@ -9636,7 +9655,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd13", 10) == 0) { { -return dev_storage + 441; +return dev_storage + 442; } } @@ -9651,7 +9670,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd12", 10) == 0) { { -return dev_storage + 440; +return dev_storage + 441; } } @@ -9666,7 +9685,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd11", 10) == 0) { { -return dev_storage + 439; +return dev_storage + 440; } } @@ -9681,7 +9700,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd10", 10) == 0) { { -return dev_storage + 438; +return dev_storage + 439; } } @@ -9705,7 +9724,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st119", 10) == 0) { { -return dev_storage + 579; +return dev_storage + 580; } } @@ -9720,7 +9739,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st118", 10) == 0) { { -return dev_storage + 578; +return dev_storage + 579; } } @@ -9735,7 +9754,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st117", 10) == 0) { { -return dev_storage + 577; +return dev_storage + 578; } } @@ -9750,7 +9769,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st116", 10) == 0) { { -return dev_storage + 576; +return dev_storage + 577; } } @@ -9765,7 +9784,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st115", 10) == 0) { { -return dev_storage + 575; +return dev_storage + 576; } } @@ -9780,7 +9799,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st114", 10) == 0) { { -return dev_storage + 574; +return dev_storage + 575; } } @@ -9795,7 +9814,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st113", 10) == 0) { { -return dev_storage + 573; +return dev_storage + 574; } } @@ -9810,7 +9829,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st112", 10) == 0) { { -return dev_storage + 572; +return dev_storage + 573; } } @@ -9825,7 +9844,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st111", 10) == 0) { { -return dev_storage + 571; +return dev_storage + 572; } } @@ -9840,7 +9859,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st110", 10) == 0) { { -return dev_storage + 570; +return dev_storage + 571; } } @@ -9870,7 +9889,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st109", 10) == 0) { { -return dev_storage + 569; +return dev_storage + 570; } } @@ -9885,7 +9904,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st108", 10) == 0) { { -return dev_storage + 568; +return dev_storage + 569; } } @@ -9900,7 +9919,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st107", 10) == 0) { { -return dev_storage + 567; +return dev_storage + 568; } } @@ -9915,7 +9934,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st106", 10) == 0) { { -return dev_storage + 566; +return dev_storage + 567; } } @@ -9930,7 +9949,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st105", 10) == 0) { { -return dev_storage + 565; +return dev_storage + 566; } } @@ -9945,7 +9964,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st104", 10) == 0) { { -return dev_storage + 564; +return dev_storage + 565; } } @@ -9960,7 +9979,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st103", 10) == 0) { { -return dev_storage + 563; +return dev_storage + 564; } } @@ -9975,7 +9994,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st102", 10) == 0) { { -return dev_storage + 562; +return dev_storage + 563; } } @@ -9990,7 +10009,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st101", 10) == 0) { { -return dev_storage + 561; +return dev_storage + 562; } } @@ -10005,7 +10024,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st100", 10) == 0) { { -return dev_storage + 560; +return dev_storage + 561; } } @@ -10038,7 +10057,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/stdout", 11) == 0) { { -return dev_storage + 590; +return dev_storage + 591; } } @@ -10074,7 +10093,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/stderr", 11) == 0) { { -return dev_storage + 588; +return dev_storage + 589; } } @@ -10089,7 +10108,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/random", 11) == 0) { { -return dev_storage + 427; +return dev_storage + 428; } } @@ -10110,7 +10129,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS99", 11) == 0) { { -return dev_storage + 691; +return dev_storage + 692; } } @@ -10125,7 +10144,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS98", 11) == 0) { { -return dev_storage + 690; +return dev_storage + 691; } } @@ -10140,7 +10159,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS97", 11) == 0) { { -return dev_storage + 689; +return dev_storage + 690; } } @@ -10155,7 +10174,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS96", 11) == 0) { { -return dev_storage + 688; +return dev_storage + 689; } } @@ -10170,7 +10189,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS95", 11) == 0) { { -return dev_storage + 687; +return dev_storage + 688; } } @@ -10185,7 +10204,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS94", 11) == 0) { { -return dev_storage + 686; +return dev_storage + 687; } } @@ -10200,7 +10219,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS93", 11) == 0) { { -return dev_storage + 685; +return dev_storage + 686; } } @@ -10215,7 +10234,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS92", 11) == 0) { { -return dev_storage + 684; +return dev_storage + 685; } } @@ -10230,7 +10249,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS91", 11) == 0) { { -return dev_storage + 683; +return dev_storage + 684; } } @@ -10245,7 +10264,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS90", 11) == 0) { { -return dev_storage + 682; +return dev_storage + 683; } } @@ -10437,7 +10456,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS89", 11) == 0) { { -return dev_storage + 681; +return dev_storage + 682; } } @@ -10452,7 +10471,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS88", 11) == 0) { { -return dev_storage + 680; +return dev_storage + 681; } } @@ -10467,7 +10486,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS87", 11) == 0) { { -return dev_storage + 679; +return dev_storage + 680; } } @@ -10482,7 +10501,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS86", 11) == 0) { { -return dev_storage + 678; +return dev_storage + 679; } } @@ -10497,7 +10516,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS85", 11) == 0) { { -return dev_storage + 677; +return dev_storage + 678; } } @@ -10512,7 +10531,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS84", 11) == 0) { { -return dev_storage + 676; +return dev_storage + 677; } } @@ -10527,7 +10546,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS83", 11) == 0) { { -return dev_storage + 675; +return dev_storage + 676; } } @@ -10542,7 +10561,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS82", 11) == 0) { { -return dev_storage + 674; +return dev_storage + 675; } } @@ -10557,7 +10576,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS81", 11) == 0) { { -return dev_storage + 673; +return dev_storage + 674; } } @@ -10572,7 +10591,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS80", 11) == 0) { { -return dev_storage + 672; +return dev_storage + 673; } } @@ -10764,7 +10783,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS79", 11) == 0) { { -return dev_storage + 671; +return dev_storage + 672; } } @@ -10779,7 +10798,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS78", 11) == 0) { { -return dev_storage + 670; +return dev_storage + 671; } } @@ -10794,7 +10813,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS77", 11) == 0) { { -return dev_storage + 669; +return dev_storage + 670; } } @@ -10809,7 +10828,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS76", 11) == 0) { { -return dev_storage + 668; +return dev_storage + 669; } } @@ -10824,7 +10843,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS75", 11) == 0) { { -return dev_storage + 667; +return dev_storage + 668; } } @@ -10839,7 +10858,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS74", 11) == 0) { { -return dev_storage + 666; +return dev_storage + 667; } } @@ -10854,7 +10873,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS73", 11) == 0) { { -return dev_storage + 665; +return dev_storage + 666; } } @@ -10869,7 +10888,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS72", 11) == 0) { { -return dev_storage + 664; +return dev_storage + 665; } } @@ -10884,7 +10903,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS71", 11) == 0) { { -return dev_storage + 663; +return dev_storage + 664; } } @@ -10899,7 +10918,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS70", 11) == 0) { { -return dev_storage + 662; +return dev_storage + 663; } } @@ -11091,7 +11110,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS69", 11) == 0) { { -return dev_storage + 661; +return dev_storage + 662; } } @@ -11106,7 +11125,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS68", 11) == 0) { { -return dev_storage + 660; +return dev_storage + 661; } } @@ -11121,7 +11140,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS67", 11) == 0) { { -return dev_storage + 659; +return dev_storage + 660; } } @@ -11136,7 +11155,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS66", 11) == 0) { { -return dev_storage + 658; +return dev_storage + 659; } } @@ -11151,7 +11170,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS65", 11) == 0) { { -return dev_storage + 657; +return dev_storage + 658; } } @@ -11166,7 +11185,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS64", 11) == 0) { { -return dev_storage + 656; +return dev_storage + 657; } } @@ -11181,7 +11200,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS63", 11) == 0) { { -return dev_storage + 655; +return dev_storage + 656; } } @@ -11196,7 +11215,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS62", 11) == 0) { { -return dev_storage + 654; +return dev_storage + 655; } } @@ -11211,7 +11230,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS61", 11) == 0) { { -return dev_storage + 653; +return dev_storage + 654; } } @@ -11226,7 +11245,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS60", 11) == 0) { { -return dev_storage + 652; +return dev_storage + 653; } } @@ -11418,7 +11437,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS59", 11) == 0) { { -return dev_storage + 651; +return dev_storage + 652; } } @@ -11433,7 +11452,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS58", 11) == 0) { { -return dev_storage + 650; +return dev_storage + 651; } } @@ -11448,7 +11467,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS57", 11) == 0) { { -return dev_storage + 649; +return dev_storage + 650; } } @@ -11463,7 +11482,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS56", 11) == 0) { { -return dev_storage + 648; +return dev_storage + 649; } } @@ -11478,7 +11497,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS55", 11) == 0) { { -return dev_storage + 647; +return dev_storage + 648; } } @@ -11493,7 +11512,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS54", 11) == 0) { { -return dev_storage + 646; +return dev_storage + 647; } } @@ -11508,7 +11527,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS53", 11) == 0) { { -return dev_storage + 645; +return dev_storage + 646; } } @@ -11523,7 +11542,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS52", 11) == 0) { { -return dev_storage + 644; +return dev_storage + 645; } } @@ -11538,7 +11557,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS51", 11) == 0) { { -return dev_storage + 643; +return dev_storage + 644; } } @@ -11553,7 +11572,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS50", 11) == 0) { { -return dev_storage + 642; +return dev_storage + 643; } } @@ -11745,7 +11764,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS49", 11) == 0) { { -return dev_storage + 641; +return dev_storage + 642; } } @@ -11760,7 +11779,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS48", 11) == 0) { { -return dev_storage + 640; +return dev_storage + 641; } } @@ -11775,7 +11794,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS47", 11) == 0) { { -return dev_storage + 639; +return dev_storage + 640; } } @@ -11790,7 +11809,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS46", 11) == 0) { { -return dev_storage + 638; +return dev_storage + 639; } } @@ -11805,7 +11824,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS45", 11) == 0) { { -return dev_storage + 637; +return dev_storage + 638; } } @@ -11820,7 +11839,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS44", 11) == 0) { { -return dev_storage + 636; +return dev_storage + 637; } } @@ -11835,7 +11854,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS43", 11) == 0) { { -return dev_storage + 635; +return dev_storage + 636; } } @@ -11850,7 +11869,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS42", 11) == 0) { { -return dev_storage + 634; +return dev_storage + 635; } } @@ -11865,7 +11884,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS41", 11) == 0) { { -return dev_storage + 633; +return dev_storage + 634; } } @@ -11880,7 +11899,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS40", 11) == 0) { { -return dev_storage + 632; +return dev_storage + 633; } } @@ -12072,7 +12091,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS39", 11) == 0) { { -return dev_storage + 631; +return dev_storage + 632; } } @@ -12087,7 +12106,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS38", 11) == 0) { { -return dev_storage + 630; +return dev_storage + 631; } } @@ -12102,7 +12121,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS37", 11) == 0) { { -return dev_storage + 629; +return dev_storage + 630; } } @@ -12117,7 +12136,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS36", 11) == 0) { { -return dev_storage + 628; +return dev_storage + 629; } } @@ -12132,7 +12151,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS35", 11) == 0) { { -return dev_storage + 627; +return dev_storage + 628; } } @@ -12147,7 +12166,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS34", 11) == 0) { { -return dev_storage + 626; +return dev_storage + 627; } } @@ -12162,7 +12181,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS33", 11) == 0) { { -return dev_storage + 625; +return dev_storage + 626; } } @@ -12177,7 +12196,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS32", 11) == 0) { { -return dev_storage + 624; +return dev_storage + 625; } } @@ -12192,7 +12211,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS31", 11) == 0) { { -return dev_storage + 623; +return dev_storage + 624; } } @@ -12207,7 +12226,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS30", 11) == 0) { { -return dev_storage + 622; +return dev_storage + 623; } } @@ -12399,7 +12418,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS29", 11) == 0) { { -return dev_storage + 621; +return dev_storage + 622; } } @@ -12414,7 +12433,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS28", 11) == 0) { { -return dev_storage + 620; +return dev_storage + 621; } } @@ -12429,7 +12448,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS27", 11) == 0) { { -return dev_storage + 619; +return dev_storage + 620; } } @@ -12444,7 +12463,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS26", 11) == 0) { { -return dev_storage + 618; +return dev_storage + 619; } } @@ -12459,7 +12478,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS25", 11) == 0) { { -return dev_storage + 617; +return dev_storage + 618; } } @@ -12474,7 +12493,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS24", 11) == 0) { { -return dev_storage + 616; +return dev_storage + 617; } } @@ -12489,7 +12508,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS23", 11) == 0) { { -return dev_storage + 615; +return dev_storage + 616; } } @@ -12504,7 +12523,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS22", 11) == 0) { { -return dev_storage + 614; +return dev_storage + 615; } } @@ -12519,7 +12538,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS21", 11) == 0) { { -return dev_storage + 613; +return dev_storage + 614; } } @@ -12534,7 +12553,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS20", 11) == 0) { { -return dev_storage + 612; +return dev_storage + 613; } } @@ -12558,7 +12577,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty127", 11) == 0) { { -return dev_storage + 426; +return dev_storage + 427; } } @@ -12573,7 +12592,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty126", 11) == 0) { { -return dev_storage + 425; +return dev_storage + 426; } } @@ -12588,7 +12607,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty125", 11) == 0) { { -return dev_storage + 424; +return dev_storage + 425; } } @@ -12603,7 +12622,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty124", 11) == 0) { { -return dev_storage + 423; +return dev_storage + 424; } } @@ -12618,7 +12637,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty123", 11) == 0) { { -return dev_storage + 422; +return dev_storage + 423; } } @@ -12633,7 +12652,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty122", 11) == 0) { { -return dev_storage + 421; +return dev_storage + 422; } } @@ -12648,7 +12667,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty121", 11) == 0) { { -return dev_storage + 420; +return dev_storage + 421; } } @@ -12663,7 +12682,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty120", 11) == 0) { { -return dev_storage + 419; +return dev_storage + 420; } } @@ -12687,7 +12706,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst127", 11) == 0) { { -return dev_storage + 296; +return dev_storage + 297; } } @@ -12702,7 +12721,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst126", 11) == 0) { { -return dev_storage + 295; +return dev_storage + 296; } } @@ -12717,7 +12736,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst125", 11) == 0) { { -return dev_storage + 294; +return dev_storage + 295; } } @@ -12732,7 +12751,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst124", 11) == 0) { { -return dev_storage + 293; +return dev_storage + 294; } } @@ -12747,7 +12766,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst123", 11) == 0) { { -return dev_storage + 292; +return dev_storage + 293; } } @@ -12762,7 +12781,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst122", 11) == 0) { { -return dev_storage + 291; +return dev_storage + 292; } } @@ -12777,7 +12796,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst121", 11) == 0) { { -return dev_storage + 290; +return dev_storage + 291; } } @@ -12792,7 +12811,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst120", 11) == 0) { { -return dev_storage + 289; +return dev_storage + 290; } } @@ -12984,7 +13003,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS19", 11) == 0) { { -return dev_storage + 611; +return dev_storage + 612; } } @@ -12999,7 +13018,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS18", 11) == 0) { { -return dev_storage + 610; +return dev_storage + 611; } } @@ -13014,7 +13033,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS17", 11) == 0) { { -return dev_storage + 609; +return dev_storage + 610; } } @@ -13029,7 +13048,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS16", 11) == 0) { { -return dev_storage + 608; +return dev_storage + 609; } } @@ -13044,7 +13063,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS15", 11) == 0) { { -return dev_storage + 607; +return dev_storage + 608; } } @@ -13059,7 +13078,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS14", 11) == 0) { { -return dev_storage + 606; +return dev_storage + 607; } } @@ -13074,7 +13093,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS13", 11) == 0) { { -return dev_storage + 605; +return dev_storage + 606; } } @@ -13089,7 +13108,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS12", 11) == 0) { { -return dev_storage + 604; +return dev_storage + 605; } } @@ -13104,7 +13123,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS11", 11) == 0) { { -return dev_storage + 603; +return dev_storage + 604; } } @@ -13119,7 +13138,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS10", 11) == 0) { { -return dev_storage + 602; +return dev_storage + 603; } } @@ -13143,7 +13162,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty119", 11) == 0) { { -return dev_storage + 418; +return dev_storage + 419; } } @@ -13158,7 +13177,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty118", 11) == 0) { { -return dev_storage + 417; +return dev_storage + 418; } } @@ -13173,7 +13192,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty117", 11) == 0) { { -return dev_storage + 416; +return dev_storage + 417; } } @@ -13188,7 +13207,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty116", 11) == 0) { { -return dev_storage + 415; +return dev_storage + 416; } } @@ -13203,7 +13222,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty115", 11) == 0) { { -return dev_storage + 414; +return dev_storage + 415; } } @@ -13218,7 +13237,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty114", 11) == 0) { { -return dev_storage + 413; +return dev_storage + 414; } } @@ -13233,7 +13252,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty113", 11) == 0) { { -return dev_storage + 412; +return dev_storage + 413; } } @@ -13248,7 +13267,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty112", 11) == 0) { { -return dev_storage + 411; +return dev_storage + 412; } } @@ -13263,7 +13282,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty111", 11) == 0) { { -return dev_storage + 410; +return dev_storage + 411; } } @@ -13278,7 +13297,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty110", 11) == 0) { { -return dev_storage + 409; +return dev_storage + 410; } } @@ -13302,7 +13321,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst119", 11) == 0) { { -return dev_storage + 288; +return dev_storage + 289; } } @@ -13317,7 +13336,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst118", 11) == 0) { { -return dev_storage + 287; +return dev_storage + 288; } } @@ -13332,7 +13351,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst117", 11) == 0) { { -return dev_storage + 286; +return dev_storage + 287; } } @@ -13347,7 +13366,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst116", 11) == 0) { { -return dev_storage + 285; +return dev_storage + 286; } } @@ -13362,7 +13381,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst115", 11) == 0) { { -return dev_storage + 284; +return dev_storage + 285; } } @@ -13377,7 +13396,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst114", 11) == 0) { { -return dev_storage + 283; +return dev_storage + 284; } } @@ -13392,7 +13411,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst113", 11) == 0) { { -return dev_storage + 282; +return dev_storage + 283; } } @@ -13407,7 +13426,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst112", 11) == 0) { { -return dev_storage + 281; +return dev_storage + 282; } } @@ -13422,7 +13441,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst111", 11) == 0) { { -return dev_storage + 280; +return dev_storage + 281; } } @@ -13437,7 +13456,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst110", 11) == 0) { { -return dev_storage + 279; +return dev_storage + 280; } } @@ -13629,7 +13648,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty109", 11) == 0) { { -return dev_storage + 408; +return dev_storage + 409; } } @@ -13644,7 +13663,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty108", 11) == 0) { { -return dev_storage + 407; +return dev_storage + 408; } } @@ -13659,7 +13678,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty107", 11) == 0) { { -return dev_storage + 406; +return dev_storage + 407; } } @@ -13674,7 +13693,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty106", 11) == 0) { { -return dev_storage + 405; +return dev_storage + 406; } } @@ -13689,7 +13708,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty105", 11) == 0) { { -return dev_storage + 404; +return dev_storage + 405; } } @@ -13704,7 +13723,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty104", 11) == 0) { { -return dev_storage + 403; +return dev_storage + 404; } } @@ -13719,7 +13738,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty103", 11) == 0) { { -return dev_storage + 402; +return dev_storage + 403; } } @@ -13734,7 +13753,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty102", 11) == 0) { { -return dev_storage + 401; +return dev_storage + 402; } } @@ -13749,7 +13768,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty101", 11) == 0) { { -return dev_storage + 400; +return dev_storage + 401; } } @@ -13764,7 +13783,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pty100", 11) == 0) { { -return dev_storage + 399; +return dev_storage + 400; } } @@ -13788,7 +13807,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst109", 11) == 0) { { -return dev_storage + 278; +return dev_storage + 279; } } @@ -13803,7 +13822,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst108", 11) == 0) { { -return dev_storage + 277; +return dev_storage + 278; } } @@ -13818,7 +13837,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst107", 11) == 0) { { -return dev_storage + 276; +return dev_storage + 277; } } @@ -13833,7 +13852,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst106", 11) == 0) { { -return dev_storage + 275; +return dev_storage + 276; } } @@ -13848,7 +13867,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst105", 11) == 0) { { -return dev_storage + 274; +return dev_storage + 275; } } @@ -13863,7 +13882,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst104", 11) == 0) { { -return dev_storage + 273; +return dev_storage + 274; } } @@ -13878,7 +13897,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst103", 11) == 0) { { -return dev_storage + 272; +return dev_storage + 273; } } @@ -13893,7 +13912,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst102", 11) == 0) { { -return dev_storage + 271; +return dev_storage + 272; } } @@ -13908,7 +13927,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst101", 11) == 0) { { -return dev_storage + 270; +return dev_storage + 271; } } @@ -13923,7 +13942,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst100", 11) == 0) { { -return dev_storage + 269; +return dev_storage + 270; } } @@ -13959,7 +13978,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/windows", 12) == 0) { { -return dev_storage + 721; +return dev_storage + 722; } } @@ -13974,7 +13993,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/urandom", 12) == 0) { { -return dev_storage + 720; +return dev_storage + 721; } } @@ -14010,7 +14029,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS127", 12) == 0) { { -return dev_storage + 719; +return dev_storage + 720; } } @@ -14025,7 +14044,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS126", 12) == 0) { { -return dev_storage + 718; +return dev_storage + 719; } } @@ -14040,7 +14059,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS125", 12) == 0) { { -return dev_storage + 717; +return dev_storage + 718; } } @@ -14055,7 +14074,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS124", 12) == 0) { { -return dev_storage + 716; +return dev_storage + 717; } } @@ -14070,7 +14089,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS123", 12) == 0) { { -return dev_storage + 715; +return dev_storage + 716; } } @@ -14085,7 +14104,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS122", 12) == 0) { { -return dev_storage + 714; +return dev_storage + 715; } } @@ -14100,7 +14119,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS121", 12) == 0) { { -return dev_storage + 713; +return dev_storage + 714; } } @@ -14115,7 +14134,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS120", 12) == 0) { { -return dev_storage + 712; +return dev_storage + 713; } } @@ -14277,7 +14296,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS119", 12) == 0) { { -return dev_storage + 711; +return dev_storage + 712; } } @@ -14292,7 +14311,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS118", 12) == 0) { { -return dev_storage + 710; +return dev_storage + 711; } } @@ -14307,7 +14326,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS117", 12) == 0) { { -return dev_storage + 709; +return dev_storage + 710; } } @@ -14322,7 +14341,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS116", 12) == 0) { { -return dev_storage + 708; +return dev_storage + 709; } } @@ -14337,7 +14356,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS115", 12) == 0) { { -return dev_storage + 707; +return dev_storage + 708; } } @@ -14352,7 +14371,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS114", 12) == 0) { { -return dev_storage + 706; +return dev_storage + 707; } } @@ -14367,7 +14386,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS113", 12) == 0) { { -return dev_storage + 705; +return dev_storage + 706; } } @@ -14382,7 +14401,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS112", 12) == 0) { { -return dev_storage + 704; +return dev_storage + 705; } } @@ -14397,7 +14416,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS111", 12) == 0) { { -return dev_storage + 703; +return dev_storage + 704; } } @@ -14412,7 +14431,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS110", 12) == 0) { { -return dev_storage + 702; +return dev_storage + 703; } } @@ -14604,7 +14623,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS109", 12) == 0) { { -return dev_storage + 701; +return dev_storage + 702; } } @@ -14619,7 +14638,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS108", 12) == 0) { { -return dev_storage + 700; +return dev_storage + 701; } } @@ -14634,7 +14653,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS107", 12) == 0) { { -return dev_storage + 699; +return dev_storage + 700; } } @@ -14649,7 +14668,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS106", 12) == 0) { { -return dev_storage + 698; +return dev_storage + 699; } } @@ -14664,7 +14683,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS105", 12) == 0) { { -return dev_storage + 697; +return dev_storage + 698; } } @@ -14679,7 +14698,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS104", 12) == 0) { { -return dev_storage + 696; +return dev_storage + 697; } } @@ -14694,7 +14713,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS103", 12) == 0) { { -return dev_storage + 695; +return dev_storage + 696; } } @@ -14709,7 +14728,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS102", 12) == 0) { { -return dev_storage + 694; +return dev_storage + 695; } } @@ -14724,7 +14743,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS101", 12) == 0) { { -return dev_storage + 693; +return dev_storage + 694; } } @@ -14739,7 +14758,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS100", 12) == 0) { { -return dev_storage + 692; +return dev_storage + 693; } } diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 2545dd85e2..48d3843fee 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -115,6 +115,9 @@ const _device dev_cygdrive_storage = const _device dev_fs_storage = {"", {FH_FS}, "", exists}; +const _device dev_dev_disk_storage = + {"", {FH_DEV_DISK}, "", exists}; + const _device dev_proc_storage = {"", {FH_PROC}, "", exists}; @@ -173,6 +176,7 @@ const _device dev_error_storage = the POSIX namespace. */ %% "/dev", BRACK(FH_DEV), "", exists, S_IFDIR +"/dev/disk", BRACK(FH_DEV_DISK), "", exists, S_IFDIR "/dev/tty", BRACK(FH_TTY), "/dev/tty", exists, S_IFCHR "/dev/pty%(0-127)d", BRACK(FHDEV(DEV_PTYS_MAJOR, {$1})), "/dev/pty{$1}", exists_pty, S_IFCHR, =ptys_dev ":ptym%(0-127)d", BRACK(FHDEV(DEV_PTYM_MAJOR, {$1})), "/dev/ptym{$1}", exists_internal, S_IFCHR, =ptym_dev diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 21d5253896..9508f3e0bb 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -585,6 +585,9 @@ fh_alloc (path_conv& pc) case FH_DEV: fh = cnew (fhandler_dev); break; + case FH_DEV_DISK: + fh = cnew (fhandler_dev_disk); + break; case FH_DEV_FD: fh = cnew (fhandler_dev_fd); break; diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc new file mode 100644 index 0000000000..9a1cae5eb9 --- /dev/null +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -0,0 +1,621 @@ +/* fhandler/dev_disk.cc: fhandler for the /dev/disk/by-id/... symlinks. + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#include "winsup.h" +#include "path.h" +#include "fhandler.h" +#include "tls_pbuf.h" +#include +#include +#include + +/* Replace non-printing and unexpected characters, remove trailing spaces, + return remaining string length. */ +static int +sanitize_id_string (char *s) +{ + int lastspace = -1, i; + for (i = 0; s[i]; i++) + { + char c = s[i]; + if (c != ' ') + lastspace = -1; + else if (lastspace < 0) + lastspace = i; + if (('0' <= c && c <= '9') || c == '.' || c == '-' + || ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) + continue; + s[i] = '_'; + } + if (lastspace >= 0) + s[(i = lastspace)] = '\0'; + return i; +} + +/* Fetch storage properties and create the ID string. + returns: 1: success, 0: device ignored, -1: IoControl error. */ +static int +storprop_to_id_name (HANDLE devhdl, const UNICODE_STRING *upath, + char *ioctl_buf, char (& name)[NAME_MAX + 1]) +{ + DWORD bytes_read; + STORAGE_PROPERTY_QUERY descquery = + { StorageDeviceProperty, PropertyStandardQuery, { 0 } }; + if (!DeviceIoControl (devhdl, IOCTL_STORAGE_QUERY_PROPERTY, + &descquery, sizeof (descquery), + ioctl_buf, NT_MAX_PATH, + &bytes_read, nullptr)) + { + __seterrno_from_win_error (GetLastError ()); + debug_printf ("DeviceIoControl (%S, IOCTL_STORAGE_QUERY_PROPERTY," + " {StorageDeviceProperty}): %E", upath); + return -1; + } + + const STORAGE_DEVICE_DESCRIPTOR *desc = + reinterpret_cast(ioctl_buf); + int vendor_len = 0, product_len = 0, serial_len = 0; + if (desc->VendorIdOffset) + vendor_len = sanitize_id_string (ioctl_buf + desc->VendorIdOffset); + if (desc->ProductIdOffset) + product_len = sanitize_id_string (ioctl_buf + desc->ProductIdOffset); + if (desc->SerialNumberOffset) + serial_len = sanitize_id_string (ioctl_buf + desc->SerialNumberOffset); + + /* Ignore drive if information is empty or too long (should not happen). */ + if (!((vendor_len || product_len) && (20/*bustype*/ + vendor_len + 1 + + product_len + 1 + serial_len + 1 + 34/*hash*/ + 1 + 10/*partN*/ + < (int) sizeof (name)))) + return 0; + + /* Translate bus types. */ + const char *bus; + switch (desc->BusType) + { + case BusTypeAta: bus = "ata-"; break; + case BusTypeFibre: bus = "fibre-"; break; + case BusTypeNvme: bus = "nvme-"; break; + case BusTypeRAID: bus = "raid-"; break; + case BusTypeSas: bus = "sas-"; break; + case BusTypeSata: bus = "sata-"; break; + case BusTypeScsi: bus = "scsi-"; break; + case BusTypeUsb: bus = "usb-"; break; + case BusTypeVirtual: bus = "virtual-"; break; + default: bus = nullptr; break; + } + + /* Create "BUSTYPE-[VENDOR_]PRODUCT[_SERIAL]" string. */ + char * cp = name; + if (bus) + cp = stpcpy (cp, bus); + else + cp += __small_sprintf (cp, "bustype%02_y-", desc->BusType); + + if (vendor_len) + cp = stpcpy (cp, ioctl_buf + desc->VendorIdOffset); + if (product_len) + { + if (vendor_len) + cp = stpcpy (cp, "_"); + cp = stpcpy (cp, ioctl_buf + desc->ProductIdOffset); + } + if (serial_len) + { + cp = stpcpy (cp, "_"); + cp = stpcpy (cp, ioctl_buf + desc->SerialNumberOffset); + } + + /* Add hash if information is too short (e.g. missing serial number). */ + bool add_hash = !(4 <= vendor_len + product_len && 4 <= serial_len); + debug_printf ("%S: bustype: %02_y, add_hash: %d, id: '%s' '%s' '%s' ", + upath, (unsigned) desc->BusType, (int) add_hash, + (vendor_len ? ioctl_buf + desc->VendorIdOffset : ""), + (product_len ? ioctl_buf + desc->ProductIdOffset : ""), + (serial_len ? ioctl_buf + desc->SerialNumberOffset : "")); + if (!add_hash) + return 1; + + /* The call below also returns the STORAGE_DEVICE_DESCRIPTOR used above. + MSDN documentation for STORAGE_DEVICE_UNIQUE_IDENTIFIER says: + "The device descriptor contains IDs that are extracted from non-VPD + inquiry data." This may mean that the serial number (part of + SCSI/SAS VPD data) may not always be provided. Therefore a separate + call to retrieve STORAGE_DEVICE_DESCRIPTOR only is done above. */ + STORAGE_PROPERTY_QUERY idquery = + { StorageDeviceUniqueIdProperty, PropertyStandardQuery, { 0 } }; + if (!DeviceIoControl (devhdl, IOCTL_STORAGE_QUERY_PROPERTY, + &idquery, sizeof (idquery), + ioctl_buf, NT_MAX_PATH, + &bytes_read, nullptr)) + { + __seterrno_from_win_error (GetLastError ()); + debug_printf ("DeviceIoControl (%S, IOCTL_STORAGE_QUERY_PROPERTY," + " {StorageDeviceUniqueIdProperty}): %E", upath); + return -1; + } + + /* Utilize the DUID as defined by MSDN to generate a hash. */ + const STORAGE_DEVICE_UNIQUE_IDENTIFIER *id = + reinterpret_cast(ioctl_buf); + debug_printf ("STORAGE_DEVICE_UNIQUE_IDENTIFIER.Size: %u", id->Size); + + __int128 hash = 0; + for (ULONG i = 0; i < id->Size; i++) + hash = ioctl_buf[i] + (hash << 6) + (hash << 16) - hash; + __small_sprintf (cp, "_%016_Y%016_X", (unsigned long long) (hash >> 64), + (unsigned long long) hash); + return 1; +} + +struct by_id_entry +{ + char name[NAME_MAX + 1]; + u_int8_t drive; + u_int8_t part; +}; + +static int +by_id_compare_name (const void *a, const void *b) +{ + const by_id_entry *ap = reinterpret_cast(a); + const by_id_entry *bp = reinterpret_cast(b); + return strcmp (ap->name, bp->name); +} + +static by_id_entry * +by_id_realloc (by_id_entry *p, size_t n) +{ + void *p2 = realloc (p, n * sizeof (*p)); + if (!p2) + free (p); + return reinterpret_cast(p2); +} + +/* Create sorted name -> drive mapping table. Must be freed by caller. */ +static int +get_by_id_table (by_id_entry * &table) +{ + table = nullptr; + + /* Open \Device object directory. */ + wchar_t wpath[MAX_PATH] = L"\\Device"; + UNICODE_STRING upath = {14, 16, wpath}; + OBJECT_ATTRIBUTES attr; + InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE, nullptr, nullptr); + HANDLE dirhdl; + NTSTATUS status = NtOpenDirectoryObject (&dirhdl, DIRECTORY_QUERY, &attr); + if (!NT_SUCCESS (status)) + { + debug_printf ("NtOpenDirectoryObject, status %y", status); + __seterrno_from_nt_status (status); + return -1; + } + + /* Limit disk and partition numbers like fhandler_dev::readdir (). */ + const unsigned max_drive_num = 127, max_part_num = 63; + + unsigned alloc_size = 0, table_size = 0; + tmp_pathbuf tp; + char *ioctl_buf = tp.c_get (); + DIRECTORY_BASIC_INFORMATION *dbi_buf = + reinterpret_cast(tp.w_get ()); + + /* Traverse \Device directory ... */ + bool errno_set = false; + HANDLE devhdl = nullptr; + BOOLEAN restart = TRUE; + bool last_run = false; + ULONG context = 0; + while (!last_run) + { + if (devhdl) + { + /* Close handle from previous run. */ + NtClose(devhdl); + devhdl = nullptr; + } + + status = NtQueryDirectoryObject (dirhdl, dbi_buf, 65536, FALSE, restart, + &context, nullptr); + if (!NT_SUCCESS (status)) + { + __seterrno_from_nt_status (status); + errno_set = true; + debug_printf ("NtQueryDirectoryObject, status %y", status); + break; + } + if (status != STATUS_MORE_ENTRIES) + last_run = true; + restart = FALSE; + for (const DIRECTORY_BASIC_INFORMATION *dbi = dbi_buf; + dbi->ObjectName.Length > 0; + dbi++) + { + /* ... and check for a "Harddisk[0-9]*" entry. */ + if (dbi->ObjectName.Length < 9 * sizeof (WCHAR) + || wcsncasecmp (dbi->ObjectName.Buffer, L"Harddisk", 8) != 0 + || !iswdigit (dbi->ObjectName.Buffer[8])) + continue; + /* Got it. Now construct the path to the entire disk, which is + "\\Device\\HarddiskX\\Partition0", and open the disk with + minimum permissions. */ + unsigned long drive_num = wcstoul (dbi->ObjectName.Buffer + 8, + nullptr, 10); + if (drive_num > max_drive_num) + continue; + wcscpy (wpath, dbi->ObjectName.Buffer); + PWCHAR wpart = wpath + dbi->ObjectName.Length / sizeof (WCHAR); + wcpcpy (wpart, L"\\Partition0"); + upath.Length = dbi->ObjectName.Length + 22; + upath.MaximumLength = upath.Length + sizeof (WCHAR); + InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE, + dirhdl, nullptr); + /* SYNCHRONIZE access is required for IOCTL_STORAGE_QUERY_PROPERTY + for drives behind some drivers (nvmestor.sys). */ + IO_STATUS_BLOCK io; + status = NtOpenFile (&devhdl, READ_CONTROL | SYNCHRONIZE, &attr, &io, + FILE_SHARE_VALID_FLAGS, 0); + if (!NT_SUCCESS (status)) + { + devhdl = nullptr; + __seterrno_from_nt_status (status); + errno_set = true; + debug_printf ("NtOpenFile(%S), status %y", &upath, status); + continue; + } + + /* Add table space for drive, partitions and end marker. */ + if (alloc_size <= table_size + max_part_num) + { + alloc_size = table_size + max_part_num + 8; + table = by_id_realloc (table, alloc_size); + if (!table) + { + NtClose (devhdl); + NtClose (dirhdl); + return -1; + } + } + + /* Fetch storage properties and create the ID string. */ + int rc = storprop_to_id_name (devhdl, &upath, ioctl_buf, + table[table_size].name); + if (rc <= 0) + { + if (rc < 0) + errno_set = true; + continue; + } + int drive_index = table_size++; + size_t drive_len = strlen(table[drive_index].name); + table[drive_index].drive = drive_num; + table[drive_index].part = 0; + + /* Fetch drive layout info to get size of all partitions on disk. */ + DWORD bytes_read; + if (!DeviceIoControl (devhdl, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, nullptr, 0, + ioctl_buf, NT_MAX_PATH, &bytes_read, nullptr)) + { + debug_printf ("DeviceIoControl(%S, " + "IOCTL_DISK_GET_DRIVE_LAYOUT_EX): %E", &upath); + continue; + } + + /* Loop over partitions. */ + const DRIVE_LAYOUT_INFORMATION_EX *dlix = + reinterpret_cast(ioctl_buf); + for (DWORD i = 0; i < dlix->PartitionCount; i++) + { + DWORD part_num = dlix->PartitionEntry[i].PartitionNumber; + /* A partition number of 0 denotes an extended partition or a + filler entry as described in + fhandler_dev_floppy::lock_partition. Just skip. */ + if (part_num == 0) + continue; + if (part_num > max_part_num) + break; + table[table_size] = table[drive_index]; + __small_sprintf(table[table_size].name + drive_len, "-part%u", + part_num); + table[table_size].part = part_num; + table_size++; + } + } + } + if (devhdl) + NtClose(devhdl); + NtClose (dirhdl); + + if (!table_size && table) + { + free (table); + table = nullptr; + } + if (!table) + return (errno_set ? -1 : 0); + + /* Sort by name and remove duplicates. */ + qsort (table, table_size, sizeof (*table), by_id_compare_name); + for (unsigned i = 0; i < table_size; i++) + { + unsigned j = i + 1; + while (j < table_size && !strcmp (table[i].name, table[j].name)) + j++; + if (j == i + 1) + continue; + /* Duplicate(s) found, remove all entries with this name. */ + debug_printf ("removing duplicates %d-%d: '%s'", i, j - 1, table[i].name); + if (j < table_size) + memmove (table + i, table + j, (table_size - j) * sizeof (*table)); + table_size -= j - i; + i--; + } + + debug_printf ("table_size: %d", table_size); + return table_size; +} + +const char dev_disk[] = "/dev/disk"; +const size_t dev_disk_len = sizeof (dev_disk) - 1; + +fhandler_dev_disk::fhandler_dev_disk (): + fhandler_virtual (), + loc (unknown_loc), + drive_from_id (-1), + part_from_id (0) +{ +} + +void +fhandler_dev_disk::init_dev_disk () +{ + if (loc != unknown_loc) + return; + + static const char by_id[] = "/by-id"; + const size_t by_id_len = sizeof(by_id) - 1; + + /* Determine location. */ + const char *path = get_name (); + if (!path_prefix_p (dev_disk, path, dev_disk_len, false)) + loc = invalid_loc; // should not happen + else if (!path[dev_disk_len]) + loc = disk_dir; // "/dev/disk" + else if (!path_prefix_p (by_id, path + dev_disk_len, by_id_len, false)) + loc = invalid_loc; // "/dev/disk/invalid" + else if (!path[dev_disk_len + by_id_len]) + loc = by_id_dir; // "/dev/disk/by-id" + else if (strchr (path + dev_disk_len + by_id_len + 1, '/')) + loc = invalid_loc; // "/dev/disk/by-id/dir/invalid" + else + loc = by_id_link; // possible "/dev/disk/by-id/LINK" + debug_printf ("'%s': loc %d", path, (int)loc); + + /* Done if "/dev/disk", "/dev/disk/by_id" or invalid. */ + if (loc != by_id_link) + return; + + /* Check whether "/dev/disk/by_id/LINK" exists. */ + by_id_entry *table; + int table_size = get_by_id_table (table); + if (!table) + { + loc = invalid_loc; + return; + } + + by_id_entry key; + strcpy (key.name, path + dev_disk_len + by_id_len + 1); + const void *found = bsearch (&key, table, table_size, sizeof (*table), + by_id_compare_name); + if (found) + { + /* Preserve drive and partition numbers for fillbuf (). */ + const by_id_entry *e = reinterpret_cast(found); + drive_from_id = e->drive; + part_from_id = e->part; + } + else + loc = invalid_loc; + free (table); +} + +virtual_ftype_t +fhandler_dev_disk::exists () +{ + debug_printf ("exists (%s)", get_name ()); + ensure_inited (); + switch (loc) + { + case disk_dir: + case by_id_dir: + return virt_directory; + case by_id_link: + return virt_symlink; + default: + return virt_none; + } +} + +int +fhandler_dev_disk::fstat (struct stat *buf) +{ + debug_printf ("fstat (%s)", get_name ()); + ensure_inited (); + if (loc == invalid_loc) + { + set_errno (ENOENT); + return -1; + } + + fhandler_base::fstat (buf); + buf->st_mode = (loc == by_id_link ? S_IFLNK | S_IWUSR | S_IWGRP | S_IWOTH + : S_IFDIR) | STD_RBITS | STD_XBITS; + buf->st_ino = get_ino (); + return 0; +} + +static inline by_id_entry ** +dir_id_table (DIR *dir) +{ + return reinterpret_cast(&dir->__d_internal); +} + +DIR * +fhandler_dev_disk::opendir (int fd) +{ + ensure_inited (); + if (!(loc == disk_dir || loc == by_id_dir)) + { + set_errno (ENOTDIR); + return nullptr; + } + + by_id_entry *table = nullptr; + if (loc == by_id_dir) + { + int table_size = get_by_id_table (table); + if (table_size < 0) + return nullptr; /* errno is set. */ + if (table) + { + /* Shrink to required table_size. */ + table = by_id_realloc (table, table_size + 1); + if (!table) + return nullptr; /* Should not happen. */ + /* Mark end of table for readdir (). */ + table[table_size].name[0] = '\0'; + } + } + + DIR *dir = fhandler_virtual::opendir (fd); + if (!dir) + { + free (table); + return nullptr; + } + dir->__flags = dirent_saw_dot | dirent_saw_dot_dot; + *dir_id_table (dir) = table; + return dir; +} + +int +fhandler_dev_disk::closedir (DIR *dir) +{ + free (*dir_id_table (dir)); + return fhandler_virtual::closedir (dir); +} + +int +fhandler_dev_disk::readdir (DIR *dir, dirent *de) +{ + int res; + if (dir->__d_position < 2) + { + de->d_name[0] = '.'; + de->d_name[1] = (dir->__d_position ? '.' : '\0'); + de->d_name[2] = '\0'; + de->d_type = DT_DIR; + dir->__d_position++; + res = 0; + } + else if (loc == disk_dir && dir->__d_position == 2) + { + strcpy (de->d_name, "by-id"); + de->d_type = DT_DIR; + dir->__d_position++; + res = 0; + } + else if (loc == by_id_dir && *dir_id_table (dir)) + { + const char *name = (*dir_id_table (dir))[dir->__d_position - 2].name; + if (name[0]) + { + strcpy (de->d_name, name); + de->d_type = DT_LNK; + dir->__d_position++; + res = 0; + } + else + res = ENMFILE; + } + else + res = ENMFILE; + + syscall_printf ("%d = readdir(%p, %p) (%s)", res, dir, de, + (!res ? de->d_name : "")); + return res; +} + +int +fhandler_dev_disk::open (int flags, mode_t mode) +{ + ensure_inited (); + int err = 0; + if (!fhandler_virtual::open (flags, mode)) + err = -1; + else if (loc == disk_dir || loc == by_id_dir) + { + if ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) + err = EEXIST; + else if (flags & O_WRONLY) + err = EISDIR; + else + diropen = true; + } + /* else if (loc == by_id_link) { } */ /* should not happen */ + else /* (loc == invalid_loc) */ + { + if (flags & O_CREAT) + err = EROFS; + else + err = ENOENT; + } + + int res; + if (!err) + { + nohandle (true); + set_open_status (); + res = 1; + } + else + { + if (err > 0) + set_errno (err); + res = 0; + } + + syscall_printf ("%d = fhandler_dev_disk::open(%y, 0%o)", res, flags, mode); + return res; +} + +bool +fhandler_dev_disk::fill_filebuf () +{ + debug_printf ("fill_filebuf (%s)", get_name ()); + ensure_inited (); + if (!(loc == by_id_link && drive_from_id >= 0)) + return false; + + char buf[32]; + int len; + if (drive_from_id + 'a' <= 'z') + len = __small_sprintf (buf, "../../sd%c", drive_from_id + 'a'); + else + len = __small_sprintf (buf, "../../sd%c%c", + drive_from_id / ('z' - 'a' + 1) - 1 + 'a', + drive_from_id % ('z' - 'a' + 1) + 'a'); + if (part_from_id) + __small_sprintf (buf + len, "%d", part_from_id); + + if (filebuf) + cfree (filebuf); + filebuf = cstrdup (buf); + return true; +} diff --git a/winsup/cygwin/local_includes/devices.h b/winsup/cygwin/local_includes/devices.h index 10035263d5..1e035f9d6a 100644 --- a/winsup/cygwin/local_includes/devices.h +++ b/winsup/cygwin/local_includes/devices.h @@ -71,6 +71,7 @@ enum fh_devices FH_DEV = FHDEV (DEV_VIRTFS_MAJOR, 193), FH_CYGDRIVE= FHDEV (DEV_VIRTFS_MAJOR, 192), FH_DEV_FD = FHDEV (DEV_VIRTFS_MAJOR, 191), + FH_DEV_DISK= FHDEV (DEV_VIRTFS_MAJOR, 190), FH_SIGNALFD= FHDEV (DEV_VIRTFS_MAJOR, 13), FH_TIMERFD = FHDEV (DEV_VIRTFS_MAJOR, 14), @@ -415,6 +416,8 @@ extern const _device dev_piper_storage; #define piper_dev ((device *) &dev_piper_storage) extern const _device dev_pipew_storage; #define pipew_dev ((device *) &dev_pipew_storage) +extern const _device dev_dev_disk_storage; +#define dev_disk_dev ((device *) &dev_dev_disk_storage) extern const _device dev_proc_storage; #define proc_dev ((device *) &dev_proc_storage) extern const _device dev_dev_storage; @@ -439,7 +442,8 @@ extern const _device dev_fs_storage; #define isprocsys_dev(devn) (devn == FH_PROCSYS) #define isvirtual_dev(devn) \ - (isproc_dev (devn) || devn == FH_CYGDRIVE || devn == FH_NETDRIVE || devn == FH_DEV_FD) + (isproc_dev (devn) || devn == FH_CYGDRIVE || devn == FH_NETDRIVE \ + || devn == FH_DEV_FD || devn == FH_DEV_DISK) #define iscons_dev(n) \ ((device::major ((dev_t) (n)) == DEV_CONS_MAJOR) \ diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 212c22344c..cd61aadf83 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -40,6 +40,8 @@ details. */ extern const char *windows_device_names[]; extern struct __cygwin_perfile *perfile_table; #define __fmode (*(user_data->fmode_ptr)) +extern const char dev_disk[]; +extern const size_t dev_disk_len; extern const char proc[]; extern const size_t proc_len; extern const char procsys[]; @@ -3190,6 +3192,50 @@ class fhandler_procnet: public fhandler_proc } }; +class fhandler_dev_disk: public fhandler_virtual +{ + enum dev_disk_location { + unknown_loc, invalid_loc, disk_dir, by_id_dir, by_id_link + }; + dev_disk_location loc; + + void init_dev_disk (); + void ensure_inited () + { + if (loc == unknown_loc) + init_dev_disk (); + } + + int drive_from_id; + int part_from_id; + + public: + fhandler_dev_disk (); + fhandler_dev_disk (void *) {} + virtual_ftype_t exists(); + DIR *opendir (int fd); + int closedir (DIR *); + int readdir (DIR *, dirent *); + int open (int flags, mode_t mode = 0); + int fstat (struct stat *buf); + bool fill_filebuf (); + + void copy_from (fhandler_base *x) + { + pc.free_strings (); + *this = *reinterpret_cast (x); + _copy_from_reset_helper (); + } + + fhandler_dev_disk *clone (cygheap_types malloc_type = HEAP_FHANDLER) + { + void *ptr = (void *) ccalloc (malloc_type, 1, sizeof (fhandler_dev_disk)); + fhandler_dev_disk *fh = new (ptr) fhandler_dev_disk (ptr); + fh->copy_from (this); + return fh; + } +}; + class fhandler_dev_fd: public fhandler_virtual { public: @@ -3416,6 +3462,7 @@ typedef union char __dev_raw[sizeof (fhandler_dev_raw)]; char __dev_tape[sizeof (fhandler_dev_tape)]; char __dev_zero[sizeof (fhandler_dev_zero)]; + char __dev_disk[sizeof (fhandler_dev_disk)]; char __dev_fd[sizeof (fhandler_dev_fd)]; char __disk_file[sizeof (fhandler_disk_file)]; char __fifo[sizeof (fhandler_fifo)]; diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 36ab042a72..13ace62504 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -35,6 +35,9 @@ details. */ (path[mount_table->cygdrive_len + 1] == '/' || \ !path[mount_table->cygdrive_len + 1])) +#define isdev_disk(path) \ + (path_prefix_p (dev_disk, (path), dev_disk_len, false)) + #define isproc(path) \ (path_prefix_p (proc, (path), proc_len, false)) @@ -685,6 +688,13 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, device& dev, /* Go through chroot check */ goto out; } + if (isdev_disk (src_path)) + { + dev = *dev_disk_dev; + *flags = 0; + strcpy (dst, src_path); + goto out; + } if (isproc (src_path)) { dev = *proc_dev; From 1ebef73c596cda6da23dec094e5b22add43a86e4 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Tue, 7 Nov 2023 10:57:15 +0100 Subject: [PATCH 454/767] Cygwin: Add /dev/disk/by-partuuid symlinks The new directory '/dev/disk/by-partuuid' provides symlinks for each MBR or GPT disk partition: 'MBR_SERIAL-OFFSET' -> '../../sdXN' 'GPT_GUID' -> '../../sdXN' Signed-off-by: Christian Franke --- winsup/cygwin/fhandler/dev_disk.cc | 173 ++++++++++++++++-------- winsup/cygwin/local_includes/fhandler.h | 7 +- 2 files changed, 125 insertions(+), 55 deletions(-) diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc index 9a1cae5eb9..fcd0de651b 100644 --- a/winsup/cygwin/fhandler/dev_disk.cc +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -176,9 +176,38 @@ by_id_realloc (by_id_entry *p, size_t n) return reinterpret_cast(p2); } +static bool +format_partuuid (char *name, const PARTITION_INFORMATION_EX *pix) +{ + const GUID *guid; + switch (pix->PartitionStyle) + { + case PARTITION_STYLE_MBR: guid = &pix->Mbr.PartitionId; break; + case PARTITION_STYLE_GPT: guid = &pix->Gpt.PartitionId; break; + default: return false; + } + + if (pix->PartitionStyle == PARTITION_STYLE_MBR && !guid->Data2 + && !guid->Data3 && !guid->Data4[6] && !guid->Data4[7]) + /* MBR "GUID": SERIAL-0000-0000-00NN-NNNNNNN00000 + Byte offset in LE order -----^^^^-^^^^^^^ + Print as: SERIAL-OFFSET */ + __small_sprintf(name, + "%08_x-%02_x%02_x%02_x%02_x%02_x%02_x", + guid->Data1, guid->Data4[5], guid->Data4[4], guid->Data4[3], + guid->Data4[2], guid->Data4[1], guid->Data4[0]); + else + __small_sprintf(name, + "%08_x-%04_x-%04_x-%02_x%02_x-%02_x%02_x%02_x%02_x%02_x%02_x", + guid->Data1, guid->Data2, guid->Data3, + guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], + guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); + return true; +} + /* Create sorted name -> drive mapping table. Must be freed by caller. */ static int -get_by_id_table (by_id_entry * &table) +get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) { table = nullptr; @@ -282,25 +311,31 @@ get_by_id_table (by_id_entry * &table) } } - /* Fetch storage properties and create the ID string. */ - int rc = storprop_to_id_name (devhdl, &upath, ioctl_buf, - table[table_size].name); - if (rc <= 0) + const char *drive_name = ""; + if (loc == fhandler_dev_disk::disk_by_id) { - if (rc < 0) - errno_set = true; - continue; + /* Fetch storage properties and create the ID string. */ + int rc = storprop_to_id_name (devhdl, &upath, ioctl_buf, + table[table_size].name); + if (rc <= 0) + { + if (rc < 0) + errno_set = true; + continue; + } + drive_name = table[table_size].name; + table[table_size].drive = drive_num; + table[table_size].part = 0; + table_size++; } - int drive_index = table_size++; - size_t drive_len = strlen(table[drive_index].name); - table[drive_index].drive = drive_num; - table[drive_index].part = 0; - /* Fetch drive layout info to get size of all partitions on disk. */ + /* Fetch drive layout info to information of all partitions on disk. */ DWORD bytes_read; if (!DeviceIoControl (devhdl, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, nullptr, 0, ioctl_buf, NT_MAX_PATH, &bytes_read, nullptr)) { + __seterrno_from_win_error (GetLastError ()); + errno_set = true; debug_printf ("DeviceIoControl(%S, " "IOCTL_DISK_GET_DRIVE_LAYOUT_EX): %E", &upath); continue; @@ -311,7 +346,8 @@ get_by_id_table (by_id_entry * &table) reinterpret_cast(ioctl_buf); for (DWORD i = 0; i < dlix->PartitionCount; i++) { - DWORD part_num = dlix->PartitionEntry[i].PartitionNumber; + const PARTITION_INFORMATION_EX *pix = &dlix->PartitionEntry[i]; + DWORD part_num = pix->PartitionNumber; /* A partition number of 0 denotes an extended partition or a filler entry as described in fhandler_dev_floppy::lock_partition. Just skip. */ @@ -319,9 +355,22 @@ get_by_id_table (by_id_entry * &table) continue; if (part_num > max_part_num) break; - table[table_size] = table[drive_index]; - __small_sprintf(table[table_size].name + drive_len, "-part%u", - part_num); + + char *name = table[table_size].name; + switch (loc) + { + case fhandler_dev_disk::disk_by_id: + __small_sprintf (name, "%s-part%u", drive_name, part_num); + break; + + case fhandler_dev_disk::disk_by_partuuid: + if (!format_partuuid (name, pix)) + continue; + break; + + default: continue; /* Should not happen. */ + } + table[table_size].drive = drive_num; table[table_size].part = part_num; table_size++; } @@ -362,10 +411,15 @@ get_by_id_table (by_id_entry * &table) const char dev_disk[] = "/dev/disk"; const size_t dev_disk_len = sizeof (dev_disk) - 1; +static const char by_id[] = "/by-id"; +const size_t by_id_len = sizeof(by_id) - 1; +static const char by_partuuid[] = "/by-partuuid"; +const size_t by_partuuid_len = sizeof(by_partuuid) - 1; fhandler_dev_disk::fhandler_dev_disk (): fhandler_virtual (), loc (unknown_loc), + loc_is_link (false), drive_from_id (-1), part_from_id (0) { @@ -377,32 +431,46 @@ fhandler_dev_disk::init_dev_disk () if (loc != unknown_loc) return; - static const char by_id[] = "/by-id"; - const size_t by_id_len = sizeof(by_id) - 1; - /* Determine location. */ const char *path = get_name (); + size_t dirlen = 0; if (!path_prefix_p (dev_disk, path, dev_disk_len, false)) loc = invalid_loc; // should not happen else if (!path[dev_disk_len]) loc = disk_dir; // "/dev/disk" - else if (!path_prefix_p (by_id, path + dev_disk_len, by_id_len, false)) - loc = invalid_loc; // "/dev/disk/invalid" - else if (!path[dev_disk_len + by_id_len]) - loc = by_id_dir; // "/dev/disk/by-id" - else if (strchr (path + dev_disk_len + by_id_len + 1, '/')) - loc = invalid_loc; // "/dev/disk/by-id/dir/invalid" + else if (path_prefix_p (by_id, path + dev_disk_len, by_id_len, false)) + { + loc = disk_by_id; // "/dev/disk/by-id.." + dirlen = dev_disk_len + by_id_len; + } + else if (path_prefix_p (by_partuuid, path + dev_disk_len, by_partuuid_len, false)) + { + loc = disk_by_partuuid; // "/dev/disk/by-partuuid..." + dirlen = dev_disk_len + by_partuuid_len; + } else - loc = by_id_link; // possible "/dev/disk/by-id/LINK" - debug_printf ("'%s': loc %d", path, (int)loc); + loc = invalid_loc; // "/dev/disk/invalid" + + loc_is_link = false; + if (dirlen) + { + if (!path[dirlen]) + ; // "/dev/disk/by-..." + else if (!strchr (path + dirlen + 1, '/')) + loc_is_link = true; // "/dev/disk/by-.../LINK" + else + loc = invalid_loc; // "/dev/disk/by-.../dir/invalid" + } - /* Done if "/dev/disk", "/dev/disk/by_id" or invalid. */ - if (loc != by_id_link) + debug_printf ("%s: loc %d, loc_is_link %d", path, (int) loc, (int) loc_is_link); + + /* Done if directory or invalid. */ + if (!loc_is_link) return; - /* Check whether "/dev/disk/by_id/LINK" exists. */ + /* Check whether "/dev/disk/by-.../LINK" exists. */ by_id_entry *table; - int table_size = get_by_id_table (table); + int table_size = get_by_id_table (table, loc); if (!table) { loc = invalid_loc; @@ -410,7 +478,7 @@ fhandler_dev_disk::init_dev_disk () } by_id_entry key; - strcpy (key.name, path + dev_disk_len + by_id_len + 1); + strcpy (key.name, path + dirlen + 1); const void *found = bsearch (&key, table, table_size, sizeof (*table), by_id_compare_name); if (found) @@ -430,16 +498,12 @@ fhandler_dev_disk::exists () { debug_printf ("exists (%s)", get_name ()); ensure_inited (); - switch (loc) - { - case disk_dir: - case by_id_dir: - return virt_directory; - case by_id_link: - return virt_symlink; - default: - return virt_none; - } + if (loc == invalid_loc) + return virt_none; + else if (loc_is_link) + return virt_symlink; + else + return virt_directory; } int @@ -454,7 +518,7 @@ fhandler_dev_disk::fstat (struct stat *buf) } fhandler_base::fstat (buf); - buf->st_mode = (loc == by_id_link ? S_IFLNK | S_IWUSR | S_IWGRP | S_IWOTH + buf->st_mode = (loc_is_link ? S_IFLNK | S_IWUSR | S_IWGRP | S_IWOTH : S_IFDIR) | STD_RBITS | STD_XBITS; buf->st_ino = get_ino (); return 0; @@ -470,16 +534,16 @@ DIR * fhandler_dev_disk::opendir (int fd) { ensure_inited (); - if (!(loc == disk_dir || loc == by_id_dir)) + if (loc_is_link) { set_errno (ENOTDIR); return nullptr; } by_id_entry *table = nullptr; - if (loc == by_id_dir) + if (loc != disk_dir) { - int table_size = get_by_id_table (table); + int table_size = get_by_id_table (table, loc); if (table_size < 0) return nullptr; /* errno is set. */ if (table) @@ -524,14 +588,15 @@ fhandler_dev_disk::readdir (DIR *dir, dirent *de) dir->__d_position++; res = 0; } - else if (loc == disk_dir && dir->__d_position == 2) + else if (loc == disk_dir && dir->__d_position < 2 + 2) { - strcpy (de->d_name, "by-id"); + static const char * const names[2] {by_id, by_partuuid}; + strcpy (de->d_name, names[dir->__d_position - 2] + 1); de->d_type = DT_DIR; dir->__d_position++; res = 0; } - else if (loc == by_id_dir && *dir_id_table (dir)) + else if (*dir_id_table (dir)) { const char *name = (*dir_id_table (dir))[dir->__d_position - 2].name; if (name[0]) @@ -559,7 +624,8 @@ fhandler_dev_disk::open (int flags, mode_t mode) int err = 0; if (!fhandler_virtual::open (flags, mode)) err = -1; - else if (loc == disk_dir || loc == by_id_dir) + /* else if (loc_is_link) {} */ /* should not happen. */ + else if (loc != invalid_loc) { if ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) err = EEXIST; @@ -568,8 +634,7 @@ fhandler_dev_disk::open (int flags, mode_t mode) else diropen = true; } - /* else if (loc == by_id_link) { } */ /* should not happen */ - else /* (loc == invalid_loc) */ + else { if (flags & O_CREAT) err = EROFS; @@ -600,7 +665,7 @@ fhandler_dev_disk::fill_filebuf () { debug_printf ("fill_filebuf (%s)", get_name ()); ensure_inited (); - if (!(loc == by_id_link && drive_from_id >= 0)) + if (!(loc_is_link && drive_from_id >= 0)) return false; char buf[32]; diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index cd61aadf83..6013496d5d 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -3194,10 +3194,15 @@ class fhandler_procnet: public fhandler_proc class fhandler_dev_disk: public fhandler_virtual { +public: enum dev_disk_location { - unknown_loc, invalid_loc, disk_dir, by_id_dir, by_id_link + unknown_loc, invalid_loc, disk_dir, + disk_by_id, disk_by_partuuid }; + +private: dev_disk_location loc; + bool loc_is_link; void init_dev_disk (); void ensure_inited () From 7236f22f713a923759ec7a98b4572c1910beb730 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Tue, 7 Nov 2023 15:25:54 +0100 Subject: [PATCH 455/767] Cygwin: Document /dev/disk/by-id and /dev/disk/by-partuuid Signed-off-by: Christian Franke --- winsup/cygwin/release/3.5.0 | 6 ++++++ winsup/doc/new-features.xml | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index dbbf8009d4..2d59818b58 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -17,6 +17,12 @@ What's new: class expressions, and collating symbols in the search pattern, i.e., [:alnum:], [=a=], [.aa.]. +- Introduce /dev/disk directory with subdirectories by-id and by-partuuid. + The by-id directory provides symlinks for each disk and its partitions: + BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|HASH][-partN] -> ../../sdX[N]. + The by-partuuid directory provides symlinks for each MBR and GPT disk + partition: MBR_SERIAL-OFFSET -> ../../sdXN, GPT_GUID -> ../../sdXN. + - Introduce /proc/codesets and /proc/locales with information on supported codesets and locales for all interested parties. Locale(1) opens these files and uses the info for printing locale info like any diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 78b2dbafdc..a8e8a7991f 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -34,6 +34,20 @@ class expressions, and collating symbols in the search pattern, i.e., [:alnum:], [=a=], [.aa.]. + +Introduce /dev/disk directory with subdirectories by-id and by-partuuid. +The by-id directory provides symlinks for each disk and its partitions: + + BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|0xHASH][-partN] -> ../../sdX[N] + +The by-partuuid directory provides symlinks for each MBR and GPT disk +partition: + + MBR_SERIAL-OFFSET -> ../../sdXN + GPT_GUID -> ../../sdXN + + + Introduce /proc/codesets and /proc/locales with information on supported codesets and locales for all interested parties. Locale(1) opens these From 7863c07a9282b7aed358c5783976296adfa63505 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Wed, 8 Nov 2023 17:03:57 +0100 Subject: [PATCH 456/767] Cygwin: /dev/disk/by-id: Remove leading spaces from identify fields Various drives align the serial number to the right of the fixed length field. Signed-off-by: Christian Franke --- winsup/cygwin/fhandler/dev_disk.cc | 34 ++++++++++++++++++------------ 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc index fcd0de651b..11b24042f5 100644 --- a/winsup/cygwin/fhandler/dev_disk.cc +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -14,27 +14,33 @@ details. */ #include #include -/* Replace non-printing and unexpected characters, remove trailing spaces, - return remaining string length. */ +/* Replace spaces, non-printing and unexpected characters. Remove + leading and trailing spaces. Return remaining string length. */ static int sanitize_id_string (char *s) { - int lastspace = -1, i; - for (i = 0; s[i]; i++) + int first = 0; + while (s[first] == ' ') + first++; + int last = -1, i; + for (i = 0; s[first + i]; i++) { - char c = s[i]; + char c = s[first + i]; if (c != ' ') - lastspace = -1; - else if (lastspace < 0) - lastspace = i; - if (('0' <= c && c <= '9') || c == '.' || c == '-' - || ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) + last = -1; + else if (last < 0) + last = i; + if (!(('0' <= c && c <= '9') || c == '.' || c == '-' + || ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))) + c = '_'; + else if (!first) continue; - s[i] = '_'; + s[i] = c; } - if (lastspace >= 0) - s[(i = lastspace)] = '\0'; - return i; + if (last < 0) + last = i; + s[last] = '\0'; + return last; } /* Fetch storage properties and create the ID string. From 3d94e07c49b50caecf836eea34e03dddde8c29c1 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 6 Oct 2023 00:04:49 +0900 Subject: [PATCH 457/767] newlib: libc: Fix crash on fprintf to a wide-oriented stream. Previously, fprintf() on a wide-oriented stream crashes or outputs garbage. This is because a narrow char string which can be odd bytes in length is cast into a wide char string which should be even bytes in length in __sprint_r/__sfputs_r based on the __SWID flag. As a result, if the length is odd bytes, the reading buffer runs over the buffer length, which causes a crash. If the length is even bytes, garbage is printed. With this patch, any output to the stream which is set to different orientation fails with error just like glibc. Note that it behaves differently from other libc implementations such as BSD, musl and Solaris. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- newlib/libc/stdio/fgetwc.c | 6 ++++-- newlib/libc/stdio/fgetwc_u.c | 3 ++- newlib/libc/stdio/fgetws.c | 3 ++- newlib/libc/stdio/fputs.c | 9 ++++++--- newlib/libc/stdio/fputwc.c | 6 ++++-- newlib/libc/stdio/fputwc_u.c | 3 ++- newlib/libc/stdio/fputws.c | 6 ++++-- newlib/libc/stdio/fread.c | 7 ++++++- newlib/libc/stdio/fwrite.c | 9 +++++++-- newlib/libc/stdio/local.h | 31 +++++++++++++++++-------------- newlib/libc/stdio/putc.c | 4 ++++ newlib/libc/stdio/puts.c | 9 ++++++--- newlib/libc/stdio/refill.c | 3 ++- newlib/libc/stdio/ungetc.c | 6 +++++- newlib/libc/stdio/ungetwc.c | 5 +++-- newlib/libc/stdio/vfprintf.c | 5 ++++- newlib/libc/stdio/vfscanf.c | 6 +++++- newlib/libc/stdio/vfwprintf.c | 5 ++++- newlib/libc/stdio/vfwscanf.c | 6 +++++- 19 files changed, 92 insertions(+), 40 deletions(-) diff --git a/newlib/libc/stdio/fgetwc.c b/newlib/libc/stdio/fgetwc.c index 522697e9b0..38e2db8977 100644 --- a/newlib/libc/stdio/fgetwc.c +++ b/newlib/libc/stdio/fgetwc.c @@ -177,8 +177,10 @@ _fgetwc_r (struct _reent *ptr, wint_t r; _newlib_flockfile_start (fp); - ORIENT(fp, 1); - r = __fgetwc (ptr, fp); + if (ORIENT(fp, 1) != 1) + r = WEOF; + else + r = __fgetwc (ptr, fp); _newlib_flockfile_end (fp); return r; } diff --git a/newlib/libc/stdio/fgetwc_u.c b/newlib/libc/stdio/fgetwc_u.c index cbb97360b2..007f9c8445 100644 --- a/newlib/libc/stdio/fgetwc_u.c +++ b/newlib/libc/stdio/fgetwc_u.c @@ -33,7 +33,8 @@ wint_t _fgetwc_unlocked_r (struct _reent *ptr, register FILE *fp) { - ORIENT(fp, 1); + if (ORIENT(fp, 1) != 1) + return WEOF; return __fgetwc (ptr, fp); } diff --git a/newlib/libc/stdio/fgetws.c b/newlib/libc/stdio/fgetws.c index c942806c68..3b7fa95165 100644 --- a/newlib/libc/stdio/fgetws.c +++ b/newlib/libc/stdio/fgetws.c @@ -110,7 +110,8 @@ _fgetws_r (struct _reent *ptr, unsigned char *nl; _newlib_flockfile_start (fp); - ORIENT (fp, 1); + if (ORIENT (fp, 1) != 1) + goto error; if (n <= 0) { diff --git a/newlib/libc/stdio/fputs.c b/newlib/libc/stdio/fputs.c index 4e9cb75475..a4f18df2af 100644 --- a/newlib/libc/stdio/fputs.c +++ b/newlib/libc/stdio/fputs.c @@ -103,8 +103,10 @@ _fputs_r (struct _reent * ptr, CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); - result = __sfvwrite_r (ptr, fp, &uio); + if (ORIENT (fp, -1) != -1) + result = EOF; + else + result = __sfvwrite_r (ptr, fp, &uio); _newlib_flockfile_end (fp); return result; #else @@ -113,7 +115,8 @@ _fputs_r (struct _reent * ptr, CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + goto error; /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto error; diff --git a/newlib/libc/stdio/fputwc.c b/newlib/libc/stdio/fputwc.c index 9a4e80d527..ef2be10483 100644 --- a/newlib/libc/stdio/fputwc.c +++ b/newlib/libc/stdio/fputwc.c @@ -169,8 +169,10 @@ _fputwc_r (struct _reent *ptr, wint_t r; _newlib_flockfile_start (fp); - ORIENT(fp, 1); - r = __fputwc(ptr, wc, fp); + if (ORIENT(fp, 1) != 1) + r = WEOF; + else + r = __fputwc(ptr, wc, fp); _newlib_flockfile_end (fp); return r; } diff --git a/newlib/libc/stdio/fputwc_u.c b/newlib/libc/stdio/fputwc_u.c index d4e51532a8..a5cc9a5d58 100644 --- a/newlib/libc/stdio/fputwc_u.c +++ b/newlib/libc/stdio/fputwc_u.c @@ -34,7 +34,8 @@ _fputwc_unlocked_r (struct _reent *ptr, wchar_t wc, FILE *fp) { - ORIENT(fp, 1); + if (ORIENT(fp, 1) != 1) + return WEOF; return __fputwc(ptr, wc, fp); } diff --git a/newlib/libc/stdio/fputws.c b/newlib/libc/stdio/fputws.c index 92f2cbf6a7..a9ac9d6d72 100644 --- a/newlib/libc/stdio/fputws.c +++ b/newlib/libc/stdio/fputws.c @@ -105,7 +105,8 @@ _fputws_r (struct _reent *ptr, struct __siov iov; _newlib_flockfile_start (fp); - ORIENT (fp, 1); + if (ORIENT (fp, 1) != 1) + goto error; if (cantwrite (ptr, fp) != 0) goto error; uio.uio_iov = &iov; @@ -129,7 +130,8 @@ _fputws_r (struct _reent *ptr, return (-1); #else _newlib_flockfile_start (fp); - ORIENT (fp, 1); + if (ORIENT (fp, 1) != 1) + goto error; if (cantwrite (ptr, fp) != 0) goto error; diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c index df8321461e..8664dc3e5e 100644 --- a/newlib/libc/stdio/fread.c +++ b/newlib/libc/stdio/fread.c @@ -158,7 +158,11 @@ _fread_r (struct _reent * ptr, CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + { + count = 0; + goto ret; + } if (fp->_r < 0) fp->_r = 0; total = resid; @@ -252,6 +256,7 @@ _fread_r (struct _reent * ptr, return crlf_r(ptr, fp, buf, total, 0) / size; } #endif +ret: _newlib_flockfile_end (fp); return count; } diff --git a/newlib/libc/stdio/fwrite.c b/newlib/libc/stdio/fwrite.c index d499f6f599..2d9749693b 100644 --- a/newlib/libc/stdio/fwrite.c +++ b/newlib/libc/stdio/fwrite.c @@ -133,7 +133,11 @@ _fwrite_r (struct _reent * ptr, CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + { + _newlib_flockfile_exit (fp); + return 0; + } if (__sfvwrite_r (ptr, fp, &uio) == 0) { _newlib_flockfile_exit (fp); @@ -148,7 +152,8 @@ _fwrite_r (struct _reent * ptr, CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + goto ret; /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto ret; diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h index b34c7c9d82..3b86cf19aa 100644 --- a/newlib/libc/stdio/local.h +++ b/newlib/libc/stdio/local.h @@ -231,21 +231,24 @@ extern _READ_WRITE_RETURN_TYPE __swrite64 (struct _reent *, void *, * Set the orientation for a stream. If o > 0, the stream has wide- * orientation. If o < 0, the stream has byte-orientation. */ -#define ORIENT(fp,ori) \ - do \ - { \ - if (!((fp)->_flags & __SORD)) \ - { \ - (fp)->_flags |= __SORD; \ - if (ori > 0) \ - (fp)->_flags2 |= __SWID; \ - else \ - (fp)->_flags2 &= ~__SWID; \ - } \ - } \ - while (0) +#define ORIENT(fp,ori) \ + ( \ + ( \ + ((fp)->_flags & __SORD) ? \ + 0 \ + : \ + ( \ + ((fp)->_flags |= __SORD), \ + (ori > 0) ? \ + ((fp)->_flags2 |= __SWID) \ + : \ + ((fp)->_flags2 &= ~__SWID) \ + ) \ + ), \ + ((fp)->_flags2 & __SWID) ? 1 : -1 \ + ) #else -#define ORIENT(fp,ori) +#define ORIENT(fp,ori) (-1) #endif /* WARNING: _dcvt is defined in the stdlib directory, not here! */ diff --git a/newlib/libc/stdio/putc.c b/newlib/libc/stdio/putc.c index 6a410e216d..925341939f 100644 --- a/newlib/libc/stdio/putc.c +++ b/newlib/libc/stdio/putc.c @@ -84,6 +84,8 @@ _putc_r (struct _reent *ptr, { int result; CHECK_INIT (ptr, fp); + if (ORIENT (fp, -1) != -1) + return EOF; _newlib_flockfile_start (fp); result = __sputc_r (ptr, c, fp); _newlib_flockfile_end (fp); @@ -100,6 +102,8 @@ putc (int c, struct _reent *reent = _REENT; CHECK_INIT (reent, fp); + if (ORIENT (fp, -1) != -1) + return EOF; _newlib_flockfile_start (fp); result = __sputc_r (reent, c, fp); _newlib_flockfile_end (fp); diff --git a/newlib/libc/stdio/puts.c b/newlib/libc/stdio/puts.c index d4d7b7ffb0..20d889b81e 100644 --- a/newlib/libc/stdio/puts.c +++ b/newlib/libc/stdio/puts.c @@ -87,8 +87,10 @@ _puts_r (struct _reent *ptr, fp = _stdout_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); - result = (__sfvwrite_r (ptr, fp, &uio) ? EOF : '\n'); + if (ORIENT (fp, -1) != -1) + result = EOF; + else + result = (__sfvwrite_r (ptr, fp, &uio) ? EOF : '\n'); _newlib_flockfile_end (fp); return result; #else @@ -100,7 +102,8 @@ _puts_r (struct _reent *ptr, fp = _stdout_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + goto err; /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto err; diff --git a/newlib/libc/stdio/refill.c b/newlib/libc/stdio/refill.c index 7bd38806ca..c1ef7e120b 100644 --- a/newlib/libc/stdio/refill.c +++ b/newlib/libc/stdio/refill.c @@ -43,7 +43,8 @@ __srefill_r (struct _reent * ptr, CHECK_INIT (ptr, fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + return EOF; fp->_r = 0; /* largely a convenience for callers */ diff --git a/newlib/libc/stdio/ungetc.c b/newlib/libc/stdio/ungetc.c index 533c28eac4..79914af080 100644 --- a/newlib/libc/stdio/ungetc.c +++ b/newlib/libc/stdio/ungetc.c @@ -125,7 +125,11 @@ _ungetc_r (struct _reent *rptr, _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + { + _newlib_flockfile_exit (fp); + return EOF; + } /* After ungetc, we won't be at eof anymore */ fp->_flags &= ~__SEOF; diff --git a/newlib/libc/stdio/ungetwc.c b/newlib/libc/stdio/ungetwc.c index 16d37f2d17..18636d773e 100644 --- a/newlib/libc/stdio/ungetwc.c +++ b/newlib/libc/stdio/ungetwc.c @@ -82,8 +82,9 @@ _ungetwc_r (struct _reent *ptr, size_t len; _newlib_flockfile_start (fp); - ORIENT (fp, 1); - if (wc == WEOF) + if (ORIENT (fp, 1) != 1) + wc = WEOF; + else if (wc == WEOF) wc = WEOF; else if ((len = _wcrtomb_r(ptr, buf, wc, &fp->_mbstate)) == (size_t)-1) { diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c index 6a198e2c65..42272abe44 100644 --- a/newlib/libc/stdio/vfprintf.c +++ b/newlib/libc/stdio/vfprintf.c @@ -845,7 +845,10 @@ _VFPRINTF_R (struct _reent *data, CHECK_INIT (data, fp); _newlib_flockfile_start (fp); - ORIENT(fp, -1); + if (ORIENT(fp, -1) != -1) { + _newlib_flockfile_exit (fp); + return (EOF); + } /* sorry, fprintf(read_only_file, "") returns EOF, not 0 */ if (cantwrite (data, fp)) { diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c index cfeea98762..71e2c3e222 100644 --- a/newlib/libc/stdio/vfscanf.c +++ b/newlib/libc/stdio/vfscanf.c @@ -589,7 +589,11 @@ __SVFSCANF_R (struct _reent *rptr, _newlib_flockfile_start (fp); - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + { + nassigned = EOF; + goto all_done; + } nassigned = 0; nread = 0; diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c index 7807a1229a..bbabbdaee8 100644 --- a/newlib/libc/stdio/vfwprintf.c +++ b/newlib/libc/stdio/vfwprintf.c @@ -588,7 +588,10 @@ _VFWPRINTF_R (struct _reent *data, CHECK_INIT (data, fp); _newlib_flockfile_start (fp); - ORIENT(fp, 1); + if (ORIENT(fp, 1) != 1) { + _newlib_flockfile_exit (fp); + return (EOF); + } /* sorry, fwprintf(read_only_file, "") returns EOF, not 0 */ if (cantwrite (data, fp)) { diff --git a/newlib/libc/stdio/vfwscanf.c b/newlib/libc/stdio/vfwscanf.c index df966f9292..d2f91dde2b 100644 --- a/newlib/libc/stdio/vfwscanf.c +++ b/newlib/libc/stdio/vfwscanf.c @@ -516,7 +516,11 @@ __SVFWSCANF_R (struct _reent *rptr, _newlib_flockfile_start (fp); - ORIENT (fp, 1); + if (ORIENT (fp, 1) != 1) + { + nassigned = EOF; + goto all_done; + } nassigned = 0; nread = 0; From 06e463223b95ea409543bf945a0eec6249ecaf25 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 13 Nov 2023 19:41:08 +0100 Subject: [PATCH 458/767] Cygwin: random: make random(3) functions thread-safe Add locking to the random(3) family of functions to gain thread-safety per POSIX. Use NetBSD version of the file as role-model. Reported-by: Bruno Haible Signed-off-by: Corinna Vinschen --- winsup/cygwin/random.cc | 47 +++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/random.cc b/winsup/cygwin/random.cc index 6dd7e1d8de..3c8682e9ad 100644 --- a/winsup/cygwin/random.cc +++ b/winsup/cygwin/random.cc @@ -29,6 +29,14 @@ #define __INSIDE_CYGWIN__ +#include "winsup.h" + +SRWLOCK NO_COPY rndlock = SRWLOCK_INIT; +# define __random_lock() { if (__isthreaded) \ + AcquireSRWLockExclusive (&rndlock); } +# define __random_unlock() { if (__isthreaded) \ + ReleaseSRWLockExclusive (&rndlock); } + extern "C" { #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95"; @@ -248,6 +256,8 @@ static inline uint32_t good_rand (int32_t x) #endif /* !USE_WEAK_SEEDING */ } +static long __random_unlocked(); + /* * srandom: * @@ -260,8 +270,8 @@ static inline uint32_t good_rand (int32_t x) * introduced by the L.C.R.N.G. Note that the initialization of randtbl[] * for default usage relies on values produced by this routine. */ -void -srandom(unsigned x) +static void +__srandom_unlocked(unsigned x) { int i, lim; @@ -276,7 +286,15 @@ srandom(unsigned x) lim = 10 * rand_deg; } for (i = 0; i < lim; i++) - (void)random(); + (void)__random_unlocked(); +} + +void +srandom(unsigned x) +{ + __random_lock(); + __srandom_unlocked(x); + __random_unlock(); } /* @@ -351,6 +369,7 @@ initstate(unsigned seed, /* seed for R.N.G. */ char *ostate = (char *)(&state[-1]); uint32_t *int_arg_state = (uint32_t *)arg_state; + __random_lock(); if (rand_type == TYPE_0) state[-1] = rand_type; else @@ -359,6 +378,7 @@ initstate(unsigned seed, /* seed for R.N.G. */ (void)fprintf(stderr, "random: not enough state (%lu bytes); ignored.\n", (unsigned long) n); + __random_unlock(); return(0); } if (n < BREAK_1) { @@ -384,11 +404,12 @@ initstate(unsigned seed, /* seed for R.N.G. */ } state = int_arg_state + 1; /* first location */ end_ptr = &state[rand_deg]; /* must set end_ptr before srandom */ - srandom(seed); + __srandom_unlocked(seed); if (rand_type == TYPE_0) int_arg_state[0] = rand_type; else int_arg_state[0] = MAX_TYPES * (rptr - state) + rand_type; + __random_unlock(); return(ostate); } @@ -419,6 +440,7 @@ setstate(char *arg_state /* pointer to state array */) uint32_t rear = new_state[0] / MAX_TYPES; char *ostate = (char *)(&state[-1]); + __random_lock(); if (rand_type == TYPE_0) state[-1] = rand_type; else @@ -443,6 +465,7 @@ setstate(char *arg_state /* pointer to state array */) fptr = &state[(rear + rand_sep) % rand_deg]; } end_ptr = &state[rand_deg]; /* set end_ptr too */ + __random_unlock(); return(ostate); } @@ -463,8 +486,8 @@ setstate(char *arg_state /* pointer to state array */) * * Returns a 31-bit random number. */ -long -random() +static long +__random_unlocked() { uint32_t i; uint32_t *f, *r; @@ -491,4 +514,16 @@ random() } return((long)i); } + +long +random() +{ + long r; + + __random_lock(); + r = __random_unlocked(); + __random_unlock(); + return (r); +} + } From e9c4a281e56518a5c62a727068fda02a364d3a52 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 13 Nov 2023 19:37:56 +0100 Subject: [PATCH 459/767] Cygwin: random: drop unused function srandomdev() Also drop includes only required for srandomdev(). Signed-off-by: Corinna Vinschen --- winsup/cygwin/random.cc | 45 ----------------------------------------- 1 file changed, 45 deletions(-) diff --git a/winsup/cygwin/random.cc b/winsup/cygwin/random.cc index 3c8682e9ad..51f5a6e963 100644 --- a/winsup/cygwin/random.cc +++ b/winsup/cygwin/random.cc @@ -44,11 +44,7 @@ static char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95"; #include __FBSDID("$FreeBSD: src/lib/libc/stdlib/random.c,v 1.25 2007/01/09 00:28:10 imp Exp $"); -#include /* for srandomdev() */ -#include /* for srandomdev() */ #include -#include -#include /* for srandomdev() */ /* * random.c: @@ -297,47 +293,6 @@ srandom(unsigned x) __random_unlock(); } -/* - * srandomdev: - * - * Many programs choose the seed value in a totally predictable manner. - * This often causes problems. We seed the generator using the much more - * secure random(4) interface. Note that this particular seeding - * procedure can generate states which are impossible to reproduce by - * calling srandom() with any value, since the succeeding terms in the - * state buffer are no longer derived from the LC algorithm applied to - * a fixed seed. - */ -void -srandomdev() -{ - size_t len; - - if (rand_type == TYPE_0) - len = sizeof state[0]; - else - len = rand_deg * sizeof state[0]; - - if (getentropy ((void *) state, len)) { - struct timeval tv; - unsigned long junk; - - gettimeofday(&tv, NULL); - /* Avoid a compiler warning when we really want to get at the - junk in an uninitialized variable. */ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" - srandom((getpid() << 16) ^ tv.tv_sec ^ tv.tv_usec ^ junk); -#pragma GCC diagnostic pop - return; - } - - if (rand_type != TYPE_0) { - fptr = &state[rand_sep]; - rptr = &state[0]; - } -} - /* * initstate: * From d223f095905a100633a0a8af0d6f645e07db15d4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 13 Nov 2023 20:01:36 +0100 Subject: [PATCH 460/767] Add release text for random(3) fix Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.4.10 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index ec28cdf7e7..bcc516427a 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -9,3 +9,6 @@ Bug Fixes - Let feraiseexcept actually raise an exception. Addresses: https://cygwin.com/pipermail/cygwin/2023-October/254667.html + +- Make random(3) family of functions thread-safe. + Addresses: https://cygwin.com/pipermail/cygwin/2023-November/254734.html From c4008b8bc066ee101c3dc6463db7516edb7dc666 Mon Sep 17 00:00:00 2001 From: Mark Geisert Date: Tue, 14 Nov 2023 00:58:33 -0800 Subject: [PATCH 461/767] Fix profiler error() definition and usage Minor updates to profiler and gmondump, which share some code: - fix operation of error() so it actually works as intended - resize 4K-size auto buffer reservations to BUFSIZ (==1K) - remove trailing '\n' from 2nd arg on error() calls everywhere - provide consistent annotation of Windows error number displays Fixes: 9887fb27f6126 ("Cygwin: New tool: profiler") Fixes: 087a3d76d7335 ("Cygwin: New tool: gmondump") Signed-off-by: Mark Geisert --- winsup/cygwin/release/3.4.10 | 3 +++ winsup/utils/gmondump.c | 8 ++++--- winsup/utils/profiler.cc | 46 +++++++++++++++++++----------------- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index bcc516427a..3bbbca3813 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -12,3 +12,6 @@ Bug Fixes - Make random(3) family of functions thread-safe. Addresses: https://cygwin.com/pipermail/cygwin/2023-November/254734.html + +- Updates to profiler and gmondump: error display mechanics, buffer sizing, + and output formatting. diff --git a/winsup/utils/gmondump.c b/winsup/utils/gmondump.c index 16b99594ae..3472a147ed 100644 --- a/winsup/utils/gmondump.c +++ b/winsup/utils/gmondump.c @@ -58,7 +58,7 @@ void note (const char *fmt, ...) { va_list args; - char buf[4096]; + char buf[BUFSIZ]; va_start (args, fmt); vsprintf (buf, fmt, args); @@ -72,7 +72,7 @@ void warn (int geterrno, const char *fmt, ...) { va_list args; - char buf[4096]; + char buf[BUFSIZ]; va_start (args, fmt); sprintf (buf, "%s: ", pgm); @@ -92,10 +92,12 @@ void __attribute__ ((noreturn)) error (int geterrno, const char *fmt, ...) { va_list args; + char buf[BUFSIZ]; va_start (args, fmt); - warn (geterrno, fmt, args); + vsprintf (buf, fmt, args); va_end (args); + warn (geterrno, "%s", buf); exit (1); } diff --git a/winsup/utils/profiler.cc b/winsup/utils/profiler.cc index 520e29d127..b5ce16cf22 100644 --- a/winsup/utils/profiler.cc +++ b/winsup/utils/profiler.cc @@ -130,7 +130,7 @@ void note (const char *fmt, ...) { va_list args; - char buf[4096]; + char buf[BUFSIZ]; va_start (args, fmt); vsprintf (buf, fmt, args); @@ -144,7 +144,7 @@ void warn (int geterrno, const char *fmt, ...) { va_list args; - char buf[4096]; + char buf[BUFSIZ]; va_start (args, fmt); sprintf (buf, "%s: ", pgm); @@ -164,10 +164,12 @@ void __attribute__ ((noreturn)) error (int geterrno, const char *fmt, ...) { va_list args; + char buf[BUFSIZ]; va_start (args, fmt); - warn (geterrno, fmt, args); + vsprintf (buf, fmt, args); va_end (args); + warn (geterrno, "%s", buf); exit (1); } @@ -263,15 +265,15 @@ start_profiler (child *c) note ("*** start profiler thread on pid %lu\n", (ulong) c->pid); c->context = (CONTEXT *) calloc (1, sizeof (CONTEXT)); if (!c->context) - error (0, "unable to allocate CONTEXT buffer\n"); + error (0, "unable to allocate CONTEXT buffer"); c->context->ContextFlags = CONTEXT_CONTROL; c->hquitevt = CreateEvent (NULL, TRUE, FALSE, NULL); if (!c->hquitevt) - error (0, "unable to create quit event\n"); + error (0, "unable to create quit event"); c->profiling = 1; c->hprofthr = CreateThread (NULL, 0, profiler, (void *) c, 0, &tid); if (!c->hprofthr) - error (0, "unable to create profiling thread\n"); + error (0, "unable to create profiling thread"); /* There is a temptation to raise the execution priority of the profiling * threads. Don't do this, or at least don't do it this way. Testing @@ -321,7 +323,7 @@ dump_profile_data (child *c) fd = open (filename, O_CREAT | O_TRUNC | O_WRONLY | O_BINARY); if (fd < 0) - error (0, "dump_profile_data: unable to create %s\n", filename); + error (0, "dump_profile_data: unable to create %s", filename); memset (&hdr, 0, sizeof (hdr)); hdr.lpc = s->textlo; @@ -427,7 +429,7 @@ add_thread (DWORD pid, DWORD tid, HANDLE h, WCHAR *name) child *c = get_child (pid); if (!c) - error (0, "add_thread: pid %lu not found\n", (ulong) pid); + error (0, "add_thread: pid %lu not found", (ulong) pid); thread_list *t = (thread_list *) calloc (1, sizeof (thread_list)); t->tid = tid; @@ -444,7 +446,7 @@ remove_thread (DWORD pid, DWORD tid) child *c = get_child (pid); if (!c) - error (0, "remove_thread: pid %lu not found\n", (ulong) pid); + error (0, "remove_thread: pid %lu not found", (ulong) pid); thread_list *t = c->threads; while (t) @@ -463,7 +465,7 @@ remove_thread (DWORD pid, DWORD tid) t = t->next; } - error (0, "remove_thread: pid %lu tid %lu not found\n", + error (0, "remove_thread: pid %lu tid %lu not found", (ulong) pid, (ulong) tid); } @@ -475,9 +477,9 @@ read_child (void *buf, SIZE_T size, void *addr, HANDLE h) if (debugging) note ("read %d bytes at %p from handle %d\n", size, addr, h); if (0 == ReadProcessMemory (h, addr, buf, size, &len)) - error (0, "read_child: failed\n"); + error (0, "read_child: failed"); if (len != size) - error (0, "read_child: asked for %d bytes but got %d\n", size, len); + error (0, "read_child: asked for %d bytes but got %d", size, len); } IMAGE_SECTION_HEADER * @@ -497,7 +499,7 @@ find_text_section (LPVOID base, HANDLE h) IMAGE_NT_HEADERS *inth = (IMAGE_NT_HEADERS *) ptr; read_child ((void *) &ntsig, sizeof (ntsig), &inth->Signature, h); if (ntsig != IMAGE_NT_SIGNATURE) - error (0, "find_text_section: NT signature not found\n"); + error (0, "find_text_section: NT signature not found"); read_child ((void *) &machine, sizeof (machine), &inth->FileHeader.Machine, h); @@ -506,7 +508,7 @@ find_text_section (LPVOID base, HANDLE h) #else #error unimplemented for this target #endif - error (0, "target program was built for different machine architecture\n"); + error (0, "target program was built for different machine architecture"); read_child ((void *) &nsects, sizeof (nsects), &inth->FileHeader.NumberOfSections, h); @@ -521,7 +523,7 @@ find_text_section (LPVOID base, HANDLE h) ish++; } - error (0, ".text section not found\n"); + error (0, ".text section not found"); } //TODO Extend add_span to add all executable sections of this exe/dll @@ -531,7 +533,7 @@ add_span (DWORD pid, WCHAR *name, LPVOID base, HANDLE h) child *c = get_child (pid); if (!c) - error (0, "add_span: pid %lu not found\n", (ulong) pid); + error (0, "add_span: pid %lu not found", (ulong) pid); IMAGE_SECTION_HEADER *sect = find_text_section (base, c->hproc); span_list *s = (span_list *) calloc (1, sizeof (span_list)); @@ -650,7 +652,7 @@ ctrl_c (DWORD) static int tic = 1; if ((tic ^= 1) && !GenerateConsoleCtrlEvent (CTRL_C_EVENT, 0)) - error (0, "couldn't send CTRL-C to child, win32 error %d\n", + error (0, "couldn't send CTRL-C to child, Windows error %u", GetLastError ()); return TRUE; } @@ -734,7 +736,7 @@ create_child (char **argv) NULL, /* current directory */ &si, &pi); if (!ret) - error (0, "error creating process %s, (error %d)", *argv, + error (0, "error creating process %s, Windows error %u", *argv, GetLastError ()); CloseHandle (pi.hThread); @@ -750,15 +752,15 @@ handle_output_debug_string (DWORD pid, OUTPUT_DEBUG_STRING_INFO *ev) child *c = get_child (pid); if (!c) - error (0, "handle_output_debug_string: pid %lu not found\n", (ulong) pid); + error (0, "handle_output_debug_string: pid %lu not found", (ulong) pid); read_child (buf, ev->nDebugStringLength, ev->lpDebugStringData, c->hproc); if (strncmp (buf, "cYg", 3)) { // string is not from Cygwin, it's from the target app; just display it if (ev->fUnicode) - note ("%ls", buf); + note ("%ls\n", buf); else - note ("%s", buf); + note ("%s\n", buf); } //else TODO Possibly decode and display Cygwin-internal debug string } @@ -941,7 +943,7 @@ profile1 (FILE *ofile, pid_t pid) } if (!debug_event) - error (0, "couldn't continue debug event, windows error %d", + error (0, "couldn't continue debug event, Windows error %u", GetLastError ()); if (!numprocesses) break; From 324ace778f70e3e89d16c5460d2f9b4454acddb2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 14 Nov 2023 17:52:48 +0100 Subject: [PATCH 462/767] Cygwin: rand(3): implement in terms of random(3) This makes rand(3) ISO C compliant and adds locking to avoid race conditions. Reported-by: Bruno Haible Fixes: 8a0efa53e4491 ("import newlib-2000-02-17 snapshot") Signed-off-by: Corinna Vinschen --- winsup/cygwin/random.cc | 8 ++++++++ winsup/cygwin/release/3.4.10 | 3 +++ 2 files changed, 11 insertions(+) diff --git a/winsup/cygwin/random.cc b/winsup/cygwin/random.cc index 51f5a6e963..ddba6fb944 100644 --- a/winsup/cygwin/random.cc +++ b/winsup/cygwin/random.cc @@ -293,6 +293,8 @@ srandom(unsigned x) __random_unlock(); } +EXPORT_ALIAS (srandom, srand) + /* * initstate: * @@ -481,4 +483,10 @@ random() return (r); } +int +rand() +{ + return ((int) random()); +} + } diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index 3bbbca3813..758a6e071c 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -15,3 +15,6 @@ Bug Fixes - Updates to profiler and gmondump: error display mechanics, buffer sizing, and output formatting. + +- Align behaviour of rand(3) to ISO C. + Adresses: https://cygwin.com/pipermail/cygwin/2023-November/254735.html From 2cc109be1d332a0e8e488f35b8b1e112f3b7b284 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Thu, 16 Nov 2023 17:51:08 +0100 Subject: [PATCH 463/767] Cygwin: Add /dev/disk/by-drive and /dev/disk/by-voluuid symlinks The new directory '/dev/disk/by-drive' provides symlinks for each disk related drive letter: 'x' -> '../../sdXN' The new directory '/dev/disk/by-voluuid' provides symlinks for each disk related storage volume: 'MBR_SERIAL-OFFSET' -> '../../sdXN' 'VOLUME_GUID' -> '../../sdXN' Both directories provide Windows specific information and do not exist on Linux. Signed-off-by: Christian Franke --- winsup/cygwin/fhandler/dev_disk.cc | 143 ++++++++++++++++++++---- winsup/cygwin/local_includes/fhandler.h | 3 +- 2 files changed, 126 insertions(+), 20 deletions(-) diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc index 11b24042f5..5f79ab5e9f 100644 --- a/winsup/cygwin/fhandler/dev_disk.cc +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -158,6 +158,92 @@ storprop_to_id_name (HANDLE devhdl, const UNICODE_STRING *upath, return 1; } +/* ("HarddiskN", PART_NUM) -> "\\\\?\\Volume{GUID}\\" */ +static bool +partition_to_volpath (const UNICODE_STRING *drive_uname, DWORD part_num, + WCHAR (& volpath)[MAX_PATH]) +{ + WCHAR gpath[MAX_PATH]; + __small_swprintf (gpath, L"\\\\?\\GLOBALROOT\\Device\\%S\\Partition%u\\", + drive_uname, part_num); + if (!GetVolumeNameForVolumeMountPointW (gpath, volpath, sizeof(volpath))) + { + debug_printf ("GetVolumeNameForVolumeMountPointW(%W): %E", gpath); + return false; + } + debug_printf ("%W -> %W", gpath, volpath); + return true; +} + +/* ("HarddiskN", PART_NUM) -> "x" */ +static bool +partition_to_drive(const UNICODE_STRING *drive_uname, DWORD part_num, + WCHAR *w_buf, char *name) +{ + WCHAR volpath[MAX_PATH]; + if (!partition_to_volpath (drive_uname, part_num, volpath)) + return false; + + DWORD len; + if (!GetVolumePathNamesForVolumeNameW (volpath, w_buf, NT_MAX_PATH, &len)) + { + debug_printf ("GetVolumePathNamesForVolumeNameW(%W): %E", volpath); + return false; + } + debug_printf ("%W -> '%W'%s", volpath, w_buf, + (w_buf[0] && wcschr (w_buf, L'\0')[1] ? ", ..." : "")); + + /* Find first "X:\\", skip if not found. + FIXME: Support multiple drive letters. */ + WCHAR *p; + for (p = w_buf; ; p = wcschr (p, L'\0') + 1) + { + if (!*p) + return false; + if (L'A' <= p[0] && p[0] <= L'Z' && p[1] == L':' && p[2] == L'\\' && !p[3]) + break; + } + name[0] = (p[0] - L'A') + 'a'; + name[1] = '\0'; + return true; +} + +/* ("HarddiskN", PART_NUM) -> "VOLUME_GUID" */ +static bool +partition_to_voluuid(const UNICODE_STRING *drive_uname, DWORD part_num, + char *name) +{ + WCHAR volpath[MAX_PATH]; + if (!partition_to_volpath (drive_uname, part_num, volpath)) + return false; + + /* Skip if not "\\\\?\\Volume{GUID}...". */ + static const WCHAR prefix[] = L"\\\\?\\Volume{"; + const size_t prefix_len = sizeof (prefix) / sizeof(WCHAR) - 1, uuid_len = 36; + if (!(!wcsncmp (volpath, prefix, prefix_len) + && volpath[prefix_len + uuid_len] == L'}')) + return false; + + /* Extract GUID. */ + volpath[prefix_len + uuid_len] = 0; + __small_sprintf (name, "%W", volpath + prefix_len); + + if (!strncmp (name + 9, "0000-0000-00", 12) && !strcmp (name + 32, "0000")) + { + /* MBR "GUID": Use same SERIAL-OFFSET format as in by-partuuid directory. + SERIAL-0000-0000-009a-785634120000 -> SERIAL-123456789a00 */ + for (int i = 9, j = 30; i < 19; i += 2, j -= 2) + { + if (j == 22) // name[j + 1] == '-' + j--; + name[i] = name[j]; + name[i + 1] = name[j + 1]; + } + name[21] = '\0'; + } + return true; +} + struct by_id_entry { char name[NAME_MAX + 1]; @@ -208,6 +294,7 @@ format_partuuid (char *name, const PARTITION_INFORMATION_EX *pix) guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]); + return true; } @@ -237,6 +324,7 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) unsigned alloc_size = 0, table_size = 0; tmp_pathbuf tp; char *ioctl_buf = tp.c_get (); + WCHAR *w_buf = tp.w_get (); DIRECTORY_BASIC_INFORMATION *dbi_buf = reinterpret_cast(tp.w_get ()); @@ -365,6 +453,11 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) char *name = table[table_size].name; switch (loc) { + case fhandler_dev_disk::disk_by_drive: + if (!partition_to_drive (&dbi->ObjectName, part_num, w_buf, name)) + continue; + break; + case fhandler_dev_disk::disk_by_id: __small_sprintf (name, "%s-part%u", drive_name, part_num); break; @@ -374,6 +467,11 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) continue; break; + case fhandler_dev_disk::disk_by_voluuid: + if (!partition_to_voluuid (&dbi->ObjectName, part_num, name)) + continue; + break; + default: continue; /* Should not happen. */ } table[table_size].drive = drive_num; @@ -417,10 +515,17 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) const char dev_disk[] = "/dev/disk"; const size_t dev_disk_len = sizeof (dev_disk) - 1; -static const char by_id[] = "/by-id"; -const size_t by_id_len = sizeof(by_id) - 1; -static const char by_partuuid[] = "/by-partuuid"; -const size_t by_partuuid_len = sizeof(by_partuuid) - 1; +static const char by_drive[] = "/by-drive"; +const size_t by_drive_len = sizeof(by_drive) - 1; + +/* Keep this in sync with enum fhandler_dev_disk::dev_disk_location starting + at disk_by_drive. */ +static const char * const by_dir_names[] { + "/by-drive", "/by-id", "/by-partuuid", "/by-voluuid" +}; +const size_t by_dir_names_size = sizeof(by_dir_names) / sizeof(by_dir_names[0]); +static_assert((size_t) fhandler_dev_disk::disk_by_drive + by_dir_names_size - 1 + == (size_t) fhandler_dev_disk::disk_by_voluuid); fhandler_dev_disk::fhandler_dev_disk (): fhandler_virtual (), @@ -440,22 +545,23 @@ fhandler_dev_disk::init_dev_disk () /* Determine location. */ const char *path = get_name (); size_t dirlen = 0; + loc = invalid_loc; // "/dev/disk/invalid" if (!path_prefix_p (dev_disk, path, dev_disk_len, false)) - loc = invalid_loc; // should not happen + ; // should not happen else if (!path[dev_disk_len]) loc = disk_dir; // "/dev/disk" - else if (path_prefix_p (by_id, path + dev_disk_len, by_id_len, false)) - { - loc = disk_by_id; // "/dev/disk/by-id.." - dirlen = dev_disk_len + by_id_len; - } - else if (path_prefix_p (by_partuuid, path + dev_disk_len, by_partuuid_len, false)) - { - loc = disk_by_partuuid; // "/dev/disk/by-partuuid..." - dirlen = dev_disk_len + by_partuuid_len; - } else - loc = invalid_loc; // "/dev/disk/invalid" + for (size_t i = 0; i < by_dir_names_size; i++) + { + const char *dir = by_dir_names[i]; + size_t len = strlen(dir); + if (path_prefix_p (dir, path + dev_disk_len, len, false)) + { + loc = (dev_disk_location) (disk_by_drive + i); // "/dev/disk/by-..." + dirlen = dev_disk_len + len; + break; + } + } loc_is_link = false; if (dirlen) @@ -594,10 +700,9 @@ fhandler_dev_disk::readdir (DIR *dir, dirent *de) dir->__d_position++; res = 0; } - else if (loc == disk_dir && dir->__d_position < 2 + 2) + else if (loc == disk_dir && dir->__d_position < 2 + (int) by_dir_names_size) { - static const char * const names[2] {by_id, by_partuuid}; - strcpy (de->d_name, names[dir->__d_position - 2] + 1); + strcpy (de->d_name, by_dir_names[dir->__d_position - 2] + 1); de->d_type = DT_DIR; dir->__d_position++; res = 0; diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 6013496d5d..86c7b20a26 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -3197,7 +3197,8 @@ class fhandler_dev_disk: public fhandler_virtual public: enum dev_disk_location { unknown_loc, invalid_loc, disk_dir, - disk_by_id, disk_by_partuuid + /* Keep these in sync with dev_disk.cc:by_dir_names array: */ + disk_by_drive, disk_by_id, disk_by_partuuid, disk_by_voluuid }; private: From 7e4840bc459d5105a9d6290df1323ba1360ba081 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 16 Nov 2023 20:06:19 +0100 Subject: [PATCH 464/767] newlib.hin: regenerate The last two patches to configure.ac missed regeneration of newlib.hin. Fixes: 64a11fded15b ("Fix problem with _newlib_version.h not being filled in correctly") Fixes: 39f734a857e2 ("newlib: fix AC_DEFINE quoting style with version macros") Signed-off-by: Corinna Vinschen --- newlib/newlib.hin | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/newlib/newlib.hin b/newlib/newlib.hin index e87a5eabbb..8318469400 100644 --- a/newlib/newlib.hin +++ b/newlib/newlib.hin @@ -375,6 +375,9 @@ /* nano version of malloc is used. */ #undef _NANO_MALLOC +/* The newlib version in string format. */ +#undef _NEWLIB_VERSION + /* Verify _REENT_CHECK macros allocate memory successfully. */ #undef _REENT_CHECK_VERIFY @@ -422,4 +425,13 @@ /* Define if wide char orientation is supported. */ #undef _WIDE_ORIENT +/* The newlib minor version number. */ +#undef __NEWLIB_MINOR__ + +/* The newlib patch level. */ +#undef __NEWLIB_PATCHLEVEL__ + +/* The newlib major version number. */ +#undef __NEWLIB__ + #endif /* !__NEWLIB_H__ */ From 61ccd3f94f92bcfc0940f0595ea5b3b72bce3c6d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 16 Nov 2023 20:34:55 +0100 Subject: [PATCH 465/767] v{fs}printf/v{fs}wprintf: create external output helpers So far, the printf family of functions has two output helper functions called __sprint_r and __sfputs_r. Both are called from all variants of vfprintf as well as vfwprintf. There are also analogue helper functions for the string-creating functions vsprintf/vswprintf called __ssprint_r and __ssputs_r. However, the helpers are built once when building vfprintf/vsprintf with the INTEGER_ONLY flag, and then they are part of the vfiprintf.c and vsiprintf.c files. The problem is this: Even if a process only calls vfwprintf or the non-INTEGER_ONLY vfprintf it will always have to include the INTEGER_ONLY vfiprintf. Otherwise the helper functions are undefined. Analogue for the string-creating functions. That's a useless waste of space by including one (or two) big, unused function, if newlib is linked in statically. Create new files to define the printf output helpers separately and split them into byte-oriented and wide-char-oriented functions. This allows to link only the required functions. Also, simplify the string output helpers and fix a potential (but unlikely) buffer overflow in __ssprint_r. Fixes: 8a0efa53e449 ("import newlib-2000-02-17 snapshot") Fixes: 6121968b198d ("* libc/include/stdio.h (__VALIST): Guard against multiple definition.") Signed-off-by: Corinna Vinschen --- newlib/Makefile.in | 157 +++++++++++++++++++- newlib/libc/stdio/Makefile.inc | 10 +- newlib/libc/stdio/sfputs_r.c | 23 +++ newlib/libc/stdio/sfputws_r.c | 24 +++ newlib/libc/stdio/sprint_r.c | 30 ++++ newlib/libc/stdio/ssprint_r.c | 36 +++++ newlib/libc/stdio/ssputs_r.c | 69 +++++++++ newlib/libc/stdio/ssputws_r.c | 21 +++ newlib/libc/stdio/sswprint_r.c | 38 +++++ newlib/libc/stdio/swprint_r.c | 46 ++++++ newlib/libc/stdio/vfprintf.c | 262 +-------------------------------- newlib/libc/stdio/vfwprintf.c | 16 +- 12 files changed, 467 insertions(+), 265 deletions(-) create mode 100644 newlib/libc/stdio/sfputs_r.c create mode 100644 newlib/libc/stdio/sfputws_r.c create mode 100644 newlib/libc/stdio/sprint_r.c create mode 100644 newlib/libc/stdio/ssprint_r.c create mode 100644 newlib/libc/stdio/ssputs_r.c create mode 100644 newlib/libc/stdio/ssputws_r.c create mode 100644 newlib/libc/stdio/sswprint_r.c create mode 100644 newlib/libc/stdio/swprint_r.c diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 4cb3534cc4..ff2f88ff75 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -237,7 +237,15 @@ check_PROGRAMS = @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/viscanf.c \ @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/vsiprintf.c \ @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/vsiscanf.c \ -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/vsniprintf.c +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/vsniprintf.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/sfputs_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/sfputws_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/sprint_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/swprint_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/ssputs_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/ssputws_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/ssprint_r.c \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/sswprint_r.c @HAVE_STDIO_DIR_TRUE@am__append_12 = libc/stdio/clearerr.c \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/fclose.c libc/stdio/fdopen.c \ @@ -1172,7 +1180,15 @@ am__objects_5 = libc/stdlib/libc_a-rpmatch.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-viscanf.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-vsiprintf.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-vsiscanf.$(OBJEXT) \ -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-vsniprintf.$(OBJEXT) +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-vsniprintf.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-sfputs_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-sfputws_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-sprint_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-swprint_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-ssputs_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-ssputws_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-ssprint_r.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-sswprint_r.$(OBJEXT) @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@am__objects_12 = libc/stdio/libc_a-asiprintf.$(OBJEXT) \ @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/libc_a-vasiprintf.$(OBJEXT) @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@am__objects_13 = libc/stdio/libc_a-asprintf.$(OBJEXT) \ @@ -3907,6 +3923,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ shared_machine_dir = @shared_machine_dir@ sharedstatedir = @sharedstatedir@ @@ -5949,6 +5966,22 @@ libc/stdio/libc_a-vsiscanf.$(OBJEXT): libc/stdio/$(am__dirstamp) \ libc/stdio/$(DEPDIR)/$(am__dirstamp) libc/stdio/libc_a-vsniprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \ libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-sfputs_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-sfputws_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-sprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-swprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-ssputs_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-ssputws_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-ssprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-sswprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) libc/stdio/libc_a-clearerr.$(OBJEXT): libc/stdio/$(am__dirstamp) \ libc/stdio/$(DEPDIR)/$(am__dirstamp) libc/stdio/libc_a-fclose.$(OBJEXT): libc/stdio/$(am__dirstamp) \ @@ -13417,12 +13450,19 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-setbuffer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-setlinebuf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-setvbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-siprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-siscanf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sniprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-snprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sprint_r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sscanf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-stdio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-stdio_ext.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-svfiprintf.Po@am__quote@ @@ -13433,6 +13473,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-svfscanf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-svfwprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-svfwscanf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-swprint_r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-swprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-swscanf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-tmpfile.Po@am__quote@ @@ -23963,6 +24004,118 @@ libc/stdio/libc_a-vsniprintf.obj: libc/stdio/vsniprintf.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-vsniprintf.obj `if test -f 'libc/stdio/vsniprintf.c'; then $(CYGPATH_W) 'libc/stdio/vsniprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/vsniprintf.c'; fi` +libc/stdio/libc_a-sfputs_r.o: libc/stdio/sfputs_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sfputs_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Tpo -c -o libc/stdio/libc_a-sfputs_r.o `test -f 'libc/stdio/sfputs_r.c' || echo '$(srcdir)/'`libc/stdio/sfputs_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sfputs_r.c' object='libc/stdio/libc_a-sfputs_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sfputs_r.o `test -f 'libc/stdio/sfputs_r.c' || echo '$(srcdir)/'`libc/stdio/sfputs_r.c + +libc/stdio/libc_a-sfputs_r.obj: libc/stdio/sfputs_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sfputs_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Tpo -c -o libc/stdio/libc_a-sfputs_r.obj `if test -f 'libc/stdio/sfputs_r.c'; then $(CYGPATH_W) 'libc/stdio/sfputs_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sfputs_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sfputs_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sfputs_r.c' object='libc/stdio/libc_a-sfputs_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sfputs_r.obj `if test -f 'libc/stdio/sfputs_r.c'; then $(CYGPATH_W) 'libc/stdio/sfputs_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sfputs_r.c'; fi` + +libc/stdio/libc_a-sfputws_r.o: libc/stdio/sfputws_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sfputws_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Tpo -c -o libc/stdio/libc_a-sfputws_r.o `test -f 'libc/stdio/sfputws_r.c' || echo '$(srcdir)/'`libc/stdio/sfputws_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sfputws_r.c' object='libc/stdio/libc_a-sfputws_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sfputws_r.o `test -f 'libc/stdio/sfputws_r.c' || echo '$(srcdir)/'`libc/stdio/sfputws_r.c + +libc/stdio/libc_a-sfputws_r.obj: libc/stdio/sfputws_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sfputws_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Tpo -c -o libc/stdio/libc_a-sfputws_r.obj `if test -f 'libc/stdio/sfputws_r.c'; then $(CYGPATH_W) 'libc/stdio/sfputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sfputws_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sfputws_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sfputws_r.c' object='libc/stdio/libc_a-sfputws_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sfputws_r.obj `if test -f 'libc/stdio/sfputws_r.c'; then $(CYGPATH_W) 'libc/stdio/sfputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sfputws_r.c'; fi` + +libc/stdio/libc_a-sprint_r.o: libc/stdio/sprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sprint_r.Tpo -c -o libc/stdio/libc_a-sprint_r.o `test -f 'libc/stdio/sprint_r.c' || echo '$(srcdir)/'`libc/stdio/sprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sprint_r.c' object='libc/stdio/libc_a-sprint_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sprint_r.o `test -f 'libc/stdio/sprint_r.c' || echo '$(srcdir)/'`libc/stdio/sprint_r.c + +libc/stdio/libc_a-sprint_r.obj: libc/stdio/sprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sprint_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sprint_r.Tpo -c -o libc/stdio/libc_a-sprint_r.obj `if test -f 'libc/stdio/sprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sprint_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sprint_r.c' object='libc/stdio/libc_a-sprint_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sprint_r.obj `if test -f 'libc/stdio/sprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sprint_r.c'; fi` + +libc/stdio/libc_a-swprint_r.o: libc/stdio/swprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-swprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-swprint_r.Tpo -c -o libc/stdio/libc_a-swprint_r.o `test -f 'libc/stdio/swprint_r.c' || echo '$(srcdir)/'`libc/stdio/swprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-swprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-swprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/swprint_r.c' object='libc/stdio/libc_a-swprint_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-swprint_r.o `test -f 'libc/stdio/swprint_r.c' || echo '$(srcdir)/'`libc/stdio/swprint_r.c + +libc/stdio/libc_a-swprint_r.obj: libc/stdio/swprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-swprint_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-swprint_r.Tpo -c -o libc/stdio/libc_a-swprint_r.obj `if test -f 'libc/stdio/swprint_r.c'; then $(CYGPATH_W) 'libc/stdio/swprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/swprint_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-swprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-swprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/swprint_r.c' object='libc/stdio/libc_a-swprint_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-swprint_r.obj `if test -f 'libc/stdio/swprint_r.c'; then $(CYGPATH_W) 'libc/stdio/swprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/swprint_r.c'; fi` + +libc/stdio/libc_a-ssputs_r.o: libc/stdio/ssputs_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputs_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Tpo -c -o libc/stdio/libc_a-ssputs_r.o `test -f 'libc/stdio/ssputs_r.c' || echo '$(srcdir)/'`libc/stdio/ssputs_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/ssputs_r.c' object='libc/stdio/libc_a-ssputs_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputs_r.o `test -f 'libc/stdio/ssputs_r.c' || echo '$(srcdir)/'`libc/stdio/ssputs_r.c + +libc/stdio/libc_a-ssputs_r.obj: libc/stdio/ssputs_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputs_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Tpo -c -o libc/stdio/libc_a-ssputs_r.obj `if test -f 'libc/stdio/ssputs_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputs_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputs_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputs_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/ssputs_r.c' object='libc/stdio/libc_a-ssputs_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputs_r.obj `if test -f 'libc/stdio/ssputs_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputs_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputs_r.c'; fi` + +libc/stdio/libc_a-ssputws_r.o: libc/stdio/ssputws_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputws_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo -c -o libc/stdio/libc_a-ssputws_r.o `test -f 'libc/stdio/ssputws_r.c' || echo '$(srcdir)/'`libc/stdio/ssputws_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/ssputws_r.c' object='libc/stdio/libc_a-ssputws_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputws_r.o `test -f 'libc/stdio/ssputws_r.c' || echo '$(srcdir)/'`libc/stdio/ssputws_r.c + +libc/stdio/libc_a-ssputws_r.obj: libc/stdio/ssputws_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputws_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo -c -o libc/stdio/libc_a-ssputws_r.obj `if test -f 'libc/stdio/ssputws_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputws_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/ssputws_r.c' object='libc/stdio/libc_a-ssputws_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputws_r.obj `if test -f 'libc/stdio/ssputws_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputws_r.c'; fi` + +libc/stdio/libc_a-ssprint_r.o: libc/stdio/ssprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Tpo -c -o libc/stdio/libc_a-ssprint_r.o `test -f 'libc/stdio/ssprint_r.c' || echo '$(srcdir)/'`libc/stdio/ssprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/ssprint_r.c' object='libc/stdio/libc_a-ssprint_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssprint_r.o `test -f 'libc/stdio/ssprint_r.c' || echo '$(srcdir)/'`libc/stdio/ssprint_r.c + +libc/stdio/libc_a-ssprint_r.obj: libc/stdio/ssprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssprint_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Tpo -c -o libc/stdio/libc_a-ssprint_r.obj `if test -f 'libc/stdio/ssprint_r.c'; then $(CYGPATH_W) 'libc/stdio/ssprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssprint_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/ssprint_r.c' object='libc/stdio/libc_a-ssprint_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssprint_r.obj `if test -f 'libc/stdio/ssprint_r.c'; then $(CYGPATH_W) 'libc/stdio/ssprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssprint_r.c'; fi` + +libc/stdio/libc_a-sswprint_r.o: libc/stdio/sswprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sswprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo -c -o libc/stdio/libc_a-sswprint_r.o `test -f 'libc/stdio/sswprint_r.c' || echo '$(srcdir)/'`libc/stdio/sswprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sswprint_r.c' object='libc/stdio/libc_a-sswprint_r.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sswprint_r.o `test -f 'libc/stdio/sswprint_r.c' || echo '$(srcdir)/'`libc/stdio/sswprint_r.c + +libc/stdio/libc_a-sswprint_r.obj: libc/stdio/sswprint_r.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sswprint_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo -c -o libc/stdio/libc_a-sswprint_r.obj `if test -f 'libc/stdio/sswprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sswprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sswprint_r.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/sswprint_r.c' object='libc/stdio/libc_a-sswprint_r.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sswprint_r.obj `if test -f 'libc/stdio/sswprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sswprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sswprint_r.c'; fi` + libc/stdio/libc_a-clearerr.o: libc/stdio/clearerr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-clearerr.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-clearerr.Tpo -c -o libc/stdio/libc_a-clearerr.o `test -f 'libc/stdio/clearerr.c' || echo '$(srcdir)/'`libc/stdio/clearerr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-clearerr.Tpo libc/stdio/$(DEPDIR)/libc_a-clearerr.Po diff --git a/newlib/libc/stdio/Makefile.inc b/newlib/libc/stdio/Makefile.inc index 2126ceaf59..0780e5c602 100644 --- a/newlib/libc/stdio/Makefile.inc +++ b/newlib/libc/stdio/Makefile.inc @@ -33,7 +33,15 @@ libc_a_SOURCES += \ %D%/viscanf.c \ %D%/vsiprintf.c \ %D%/vsiscanf.c \ - %D%/vsniprintf.c + %D%/vsniprintf.c \ + %D%/sfputs_r.c \ + %D%/sfputws_r.c \ + %D%/sprint_r.c \ + %D%/swprint_r.c \ + %D%/ssputs_r.c \ + %D%/ssputws_r.c \ + %D%/ssprint_r.c \ + %D%/sswprint_r.c endif libc_a_SOURCES += \ diff --git a/newlib/libc/stdio/sfputs_r.c b/newlib/libc/stdio/sfputs_r.c new file mode 100644 index 0000000000..8e5fc067f3 --- /dev/null +++ b/newlib/libc/stdio/sfputs_r.c @@ -0,0 +1,23 @@ +#include + +#ifndef _FVWRITE_IN_STREAMIO + +#include +#include + +int +__sfputs_r (struct _reent *ptr, + FILE *fp, + const char *buf, + size_t len) +{ + register int i; + + for (i = 0; i < len; i++) { + if (_fputc_r (ptr, buf[i], fp) == EOF) + return -1; + } + return (0); +} + +#endif diff --git a/newlib/libc/stdio/sfputws_r.c b/newlib/libc/stdio/sfputws_r.c new file mode 100644 index 0000000000..94b04348ed --- /dev/null +++ b/newlib/libc/stdio/sfputws_r.c @@ -0,0 +1,24 @@ +#include + +#ifndef _FVWRITE_IN_STREAMIO + +#include +#include +#include + +int +__sfputws_r (struct _reent *ptr, + FILE *fp, + const wchar_t *buf, + size_t len) +{ + register int i; + + for (i = 0; i < len; i++) { + if (_fputwc_r (ptr, buf[i], fp) == WEOF) + return -1; + } + return (0); +} + +#endif diff --git a/newlib/libc/stdio/sprint_r.c b/newlib/libc/stdio/sprint_r.c new file mode 100644 index 0000000000..81c7b7f236 --- /dev/null +++ b/newlib/libc/stdio/sprint_r.c @@ -0,0 +1,30 @@ +#include + +#ifdef _FVWRITE_IN_STREAMIO + +#include +#include +#include "fvwrite.h" + +/* + * Flush out all the vectors defined by the given uio, + * then reset it so that it can be reused. + */ +int +__sprint_r (struct _reent *ptr, + FILE *fp, + register struct __suio *uio) +{ + register int err = 0; + + if (uio->uio_resid == 0) { + uio->uio_iovcnt = 0; + return (0); + } + err = __sfvwrite_r(ptr, fp, uio); + uio->uio_resid = 0; + uio->uio_iovcnt = 0; + return (err); +} + +#endif diff --git a/newlib/libc/stdio/ssprint_r.c b/newlib/libc/stdio/ssprint_r.c new file mode 100644 index 0000000000..eedbd6a939 --- /dev/null +++ b/newlib/libc/stdio/ssprint_r.c @@ -0,0 +1,36 @@ +#include + +#ifdef _FVWRITE_IN_STREAMIO + +#include +#include +#include "fvwrite.h" + +extern int __ssputs_r (struct _reent *ptr, FILE *fp, const char *buf, + size_t len); + +int +__ssprint_r (struct _reent *ptr, + FILE *fp, + register struct __suio *uio) +{ + register struct __siov *iov = uio->uio_iov; + register size_t len; + int ret = 0; + + while (uio->uio_resid > 0 && uio->uio_iovcnt-- > 0) { + if ((len = iov->iov_len) > 0) { + if (__ssputs_r (ptr, fp, iov->iov_base, len) == EOF) { + ret = EOF; + break; + } + uio->uio_resid -= len; /* pretend we copied all */ + } + iov++; + } + uio->uio_resid = 0; + uio->uio_iovcnt = 0; + return ret; +} + +#endif diff --git a/newlib/libc/stdio/ssputs_r.c b/newlib/libc/stdio/ssputs_r.c new file mode 100644 index 0000000000..abd18ef4bf --- /dev/null +++ b/newlib/libc/stdio/ssputs_r.c @@ -0,0 +1,69 @@ +#include + +#include +#include +#include +#include +#include + +int +__ssputs_r (struct _reent *ptr, + FILE *fp, + const char *buf, + size_t len) +{ + register int w; + + w = fp->_w; + if (len >= w && fp->_flags & (__SMBF | __SOPT)) { + /* must be asprintf family */ + unsigned char *str; + int curpos = (fp->_p - fp->_bf._base); + /* Choose a geometric growth factor to avoid + * quadratic realloc behavior, but use a rate less + * than (1+sqrt(5))/2 to accomodate malloc + * overhead. asprintf EXPECTS us to overallocate, so + * that it can add a trailing \0 without + * reallocating. The new allocation should thus be + * max(prev_size*1.5, curpos+len+1). */ + int newsize = fp->_bf._size * 3 / 2; + if (newsize < curpos + len + 1) + newsize = curpos + len + 1; + if (fp->_flags & __SOPT) + { + /* asnprintf leaves original buffer alone. */ + str = (unsigned char *)_malloc_r (ptr, newsize); + if (!str) + goto err; + memcpy (str, fp->_bf._base, curpos); + fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; + } + else + { + str = (unsigned char *)_realloc_r (ptr, fp->_bf._base, + newsize); + if (!str) { + /* Free unneeded buffer. */ + _free_r (ptr, fp->_bf._base); + goto err; + } + } + fp->_bf._base = str; + fp->_p = str + curpos; + fp->_bf._size = newsize; + w = len; + fp->_w = newsize - curpos; + } + if (len < w) + w = len; + memmove ((void *) fp->_p, (void *) buf, (size_t) (w)); + fp->_w -= w; + fp->_p += w; + + return 0; + +err: + _REENT_ERRNO(ptr) = ENOMEM; + fp->_flags |= __SERR; + return EOF; +} diff --git a/newlib/libc/stdio/ssputws_r.c b/newlib/libc/stdio/ssputws_r.c new file mode 100644 index 0000000000..07ceba800e --- /dev/null +++ b/newlib/libc/stdio/ssputws_r.c @@ -0,0 +1,21 @@ +#include + +#ifndef _FVWRITE_IN_STREAMIO + +#include +#include +#include + +extern int __ssputs_r (struct _reent *ptr, FILE *fp, const char *buf, + size_t len); + +int +__ssputws_r (struct _reent *ptr, + FILE *fp, + const wchar_t *buf, + size_t len) +{ + return __ssputs_r (ptr, fp, (const char *) buf, len * sizeof (wchar_t)); +} + +#endif diff --git a/newlib/libc/stdio/sswprint_r.c b/newlib/libc/stdio/sswprint_r.c new file mode 100644 index 0000000000..963e31df38 --- /dev/null +++ b/newlib/libc/stdio/sswprint_r.c @@ -0,0 +1,38 @@ +#include + +#ifdef _FVWRITE_IN_STREAMIO + +#include +#include +#include +#include "fvwrite.h" + +extern int __ssputs_r (struct _reent *ptr, FILE *fp, const char *buf, + size_t len); + +int +__sswprint_r (struct _reent *ptr, + FILE *fp, + register struct __suio *uio) +{ + register struct __siov *iov = uio->uio_iov; + register size_t len; + int ret = 0; + + while (uio->uio_resid > 0 && uio->uio_iovcnt-- > 0) { + if ((len = iov->iov_len) > 0) { + if (__ssputs_r (ptr, fp, iov->iov_base, + len * sizeof (wchar_t)) == EOF) { + ret = -1; + break; + } + uio->uio_resid -= len; /* pretend we copied all */ + } + iov++; + } + uio->uio_resid = 0; + uio->uio_iovcnt = 0; + return ret; +} + +#endif diff --git a/newlib/libc/stdio/swprint_r.c b/newlib/libc/stdio/swprint_r.c new file mode 100644 index 0000000000..e4be0c839a --- /dev/null +++ b/newlib/libc/stdio/swprint_r.c @@ -0,0 +1,46 @@ +#include + +#ifdef _FVWRITE_IN_STREAMIO + +#include +#include +#include +#include "fvwrite.h" + +/* + * Flush out all the vectors defined by the given uio, + * then reset it so that it can be reused. + */ +int +__swprint_r (struct _reent *ptr, + FILE *fp, + register struct __suio *uio) +{ + register int err = 0; + struct __siov *iov; + wchar_t *p; + int i, len; + + if (uio->uio_resid == 0) { + uio->uio_iovcnt = 0; + return (0); + } + iov = uio->uio_iov; + for (; uio->uio_resid != 0; + uio->uio_resid -= len, iov++) { + p = (wchar_t *) iov->iov_base; + len = iov->iov_len; + for (i = 0; i < len; i++) { + if (_fputwc_r (ptr, p[i], fp) == WEOF) { + err = -1; + goto out; + } + } + } +out: + uio->uio_resid = 0; + uio->uio_iovcnt = 0; + return (err); +} + +#endif diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c index 42272abe44..feb1fab560 100644 --- a/newlib/libc/stdio/vfprintf.c +++ b/newlib/libc/stdio/vfprintf.c @@ -174,270 +174,24 @@ static char *rcsid = "$Id$"; #endif #ifdef STRING_ONLY + # ifdef _FVWRITE_IN_STREAMIO # define __SPRINT __ssprint_r + int __ssprint_r (struct _reent *, FILE *, register struct __suio *); # else # define __SPRINT __ssputs_r + int __ssputs_r (struct _reent *, FILE *, const char *, size_t); # endif -#else + +#else /* !STRING_ONLY */ + # ifdef _FVWRITE_IN_STREAMIO # define __SPRINT __sprint_r + int __sprint_r (struct _reent *, FILE *, register struct __suio *); # else # define __SPRINT __sfputs_r + int __sfputs_r (struct _reent *, FILE *, const char *buf, size_t); # endif -#endif - -/* The __sprint_r/__ssprint_r functions are shared between all versions of - vfprintf and vfwprintf. They must only be defined once, which we do in - the INTEGER_ONLY versions here. */ -#ifdef STRING_ONLY -#ifdef INTEGER_ONLY -#ifndef _FVWRITE_IN_STREAMIO -int -__ssputs_r (struct _reent *ptr, - FILE *fp, - const char *buf, - size_t len) -{ - register int w; - - w = fp->_w; - if (len >= w && fp->_flags & (__SMBF | __SOPT)) { - /* must be asprintf family */ - unsigned char *str; - int curpos = (fp->_p - fp->_bf._base); - /* Choose a geometric growth factor to avoid - * quadratic realloc behavior, but use a rate less - * than (1+sqrt(5))/2 to accomodate malloc - * overhead. asprintf EXPECTS us to overallocate, so - * that it can add a trailing \0 without - * reallocating. The new allocation should thus be - * max(prev_size*1.5, curpos+len+1). */ - int newsize = fp->_bf._size * 3 / 2; - if (newsize < curpos + len + 1) - newsize = curpos + len + 1; - if (fp->_flags & __SOPT) - { - /* asnprintf leaves original buffer alone. */ - str = (unsigned char *)_malloc_r (ptr, newsize); - if (!str) - { - _REENT_ERRNO(ptr) = ENOMEM; - goto err; - } - memcpy (str, fp->_bf._base, curpos); - fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; - } - else - { - str = (unsigned char *)_realloc_r (ptr, fp->_bf._base, - newsize); - if (!str) { - /* Free unneeded buffer. */ - _free_r (ptr, fp->_bf._base); - /* Ensure correct errno, even if free - * changed it. */ - _REENT_ERRNO(ptr) = ENOMEM; - goto err; - } - } - fp->_bf._base = str; - fp->_p = str + curpos; - fp->_bf._size = newsize; - w = len; - fp->_w = newsize - curpos; - } - if (len < w) - w = len; - (void)memmove ((void *) fp->_p, (void *) buf, (size_t) (w)); - fp->_w -= w; - fp->_p += w; - - return 0; - -err: - fp->_flags |= __SERR; - return EOF; -} -#endif - -int -__ssprint_r (struct _reent *ptr, - FILE *fp, - register struct __suio *uio) -{ - register size_t len; - register int w; - register struct __siov *iov; - register const char *p = NULL; - - iov = uio->uio_iov; - len = 0; - - if (uio->uio_resid == 0) { - uio->uio_iovcnt = 0; - return (0); - } - - do { - while (len == 0) { - p = iov->iov_base; - len = iov->iov_len; - iov++; - } - w = fp->_w; - if (len >= w && fp->_flags & (__SMBF | __SOPT)) { - /* must be asprintf family */ - unsigned char *str; - int curpos = (fp->_p - fp->_bf._base); - /* Choose a geometric growth factor to avoid - * quadratic realloc behavior, but use a rate less - * than (1+sqrt(5))/2 to accomodate malloc - * overhead. asprintf EXPECTS us to overallocate, so - * that it can add a trailing \0 without - * reallocating. The new allocation should thus be - * max(prev_size*1.5, curpos+len+1). */ - int newsize = fp->_bf._size * 3 / 2; - if (newsize < curpos + len + 1) - newsize = curpos + len + 1; - if (fp->_flags & __SOPT) - { - /* asnprintf leaves original buffer alone. */ - str = (unsigned char *)_malloc_r (ptr, newsize); - if (!str) - { - _REENT_ERRNO(ptr) = ENOMEM; - goto err; - } - memcpy (str, fp->_bf._base, curpos); - fp->_flags = (fp->_flags & ~__SOPT) | __SMBF; - } - else - { - str = (unsigned char *)_realloc_r (ptr, fp->_bf._base, - newsize); - if (!str) { - /* Free unneeded buffer. */ - _free_r (ptr, fp->_bf._base); - /* Ensure correct errno, even if free - * changed it. */ - _REENT_ERRNO(ptr) = ENOMEM; - goto err; - } - } - fp->_bf._base = str; - fp->_p = str + curpos; - fp->_bf._size = newsize; - w = len; - fp->_w = newsize - curpos; - } - if (len < w) - w = len; - (void)memmove ((void *) fp->_p, (void *) p, (size_t) (w)); - fp->_w -= w; - fp->_p += w; - w = len; /* pretend we copied all */ - p += w; - len -= w; - } while ((uio->uio_resid -= w) != 0); - - uio->uio_resid = 0; - uio->uio_iovcnt = 0; - return 0; - -err: - fp->_flags |= __SERR; - uio->uio_resid = 0; - uio->uio_iovcnt = 0; - return EOF; -} -#else /* !INTEGER_ONLY */ -#ifndef _FVWRITE_IN_STREAMIO -int __ssputs_r (struct _reent *, FILE *, const char *, size_t); -#endif -int __ssprint_r (struct _reent *, FILE *, register struct __suio *); -#endif /* !INTEGER_ONLY */ - -#else /* !STRING_ONLY */ -#ifdef INTEGER_ONLY - -#ifndef _FVWRITE_IN_STREAMIO -int -__sfputs_r (struct _reent *ptr, - FILE *fp, - const char *buf, - size_t len) -{ - register int i; - -#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 4) - if (fp->_flags2 & __SWID) { - wchar_t *p; - - p = (wchar_t *) buf; - for (i = 0; i < (len / sizeof (wchar_t)); i++) { - if (_fputwc_r (ptr, p[i], fp) == WEOF) - return -1; - } - } else { -#else - { -#endif - for (i = 0; i < len; i++) { - if (_fputc_r (ptr, buf[i], fp) == EOF) - return -1; - } - } - return (0); -} -#endif -/* - * Flush out all the vectors defined by the given uio, - * then reset it so that it can be reused. - */ -int -__sprint_r (struct _reent *ptr, - FILE *fp, - register struct __suio *uio) -{ - register int err = 0; - - if (uio->uio_resid == 0) { - uio->uio_iovcnt = 0; - return (0); - } -#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 4) - if (fp->_flags2 & __SWID) { - struct __siov *iov; - wchar_t *p; - int i, len; - - iov = uio->uio_iov; - for (; uio->uio_resid != 0; - uio->uio_resid -= len * sizeof (wchar_t), iov++) { - p = (wchar_t *) iov->iov_base; - len = iov->iov_len / sizeof (wchar_t); - for (i = 0; i < len; i++) { - if (_fputwc_r (ptr, p[i], fp) == WEOF) { - err = -1; - goto out; - } - } - } - } else -#endif - err = __sfvwrite_r(ptr, fp, uio); -out: - uio->uio_resid = 0; - uio->uio_iovcnt = 0; - return (err); -} -#else /* !INTEGER_ONLY */ -#ifndef _FVWRITE_IN_STREAMIO -int __sfputs_r (struct _reent *, FILE *, const char *buf, size_t); -#endif -int __sprint_r (struct _reent *, FILE *, register struct __suio *); -#endif /* !INTEGER_ONLY */ #ifdef _UNBUF_STREAM_OPT /* diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c index bbabbdaee8..5a5c368298 100644 --- a/newlib/libc/stdio/vfwprintf.c +++ b/newlib/libc/stdio/vfwprintf.c @@ -153,18 +153,18 @@ int _VFWPRINTF_R (struct _reent *, FILE *, const wchar_t *, va_list); /* Defined in vfprintf.c. */ #ifdef _FVWRITE_IN_STREAMIO # ifdef STRING_ONLY -# define __SPRINT __ssprint_r +# define __SPRINT __sswprint_r # else -# define __SPRINT __sprint_r +# define __SPRINT __swprint_r # endif int __SPRINT (struct _reent *, FILE *, register struct __suio *); #else # ifdef STRING_ONLY -# define __SPRINT __ssputs_r +# define __SPRINT __ssputws_r # else -# define __SPRINT __sfputs_r +# define __SPRINT __sfputws_r # endif -int __SPRINT (struct _reent *, FILE *, const char *, size_t); +int __SPRINT (struct _reent *, FILE *, const wchar_t *, size_t); #endif #ifndef STRING_ONLY #ifdef _UNBUF_STREAM_OPT @@ -479,8 +479,8 @@ _VFWPRINTF_R (struct _reent *data, #ifdef _FVWRITE_IN_STREAMIO #define PRINT(ptr, len) { \ iovp->iov_base = (char *) (ptr); \ - iovp->iov_len = (len) * sizeof (wchar_t); \ - uio.uio_resid += (len) * sizeof (wchar_t); \ + iovp->iov_len = (len); \ + uio.uio_resid += iovp->iov_len; \ iovp++; \ if (++uio.uio_iovcnt >= NIOV) { \ if (__SPRINT(data, fp, &uio)) \ @@ -513,7 +513,7 @@ _VFWPRINTF_R (struct _reent *data, } #else #define PRINT(ptr, len) { \ - if (__SPRINT (data, fp, (const char *)(ptr), (len) * sizeof (wchar_t)) == EOF) \ + if (__SPRINT (data, fp, (ptr), (len)) == EOF) \ goto error; \ } #define PAD(howmany, with) { \ From 6ccbfe6a3d8a2aedb2c6f80bcc03bf946acc1b6c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 17 Nov 2023 17:00:54 +0100 Subject: [PATCH 466/767] __sfvwrite_r: call __sputc_r rather than putc in __SCLE case __sfvwrite_r is called under lock. There's no reason to call putc, locking the file recursively. Add a comment that locking is required when calling __sfvwrite_r. Fixes: 49d64538cd20 ("* libc/include/stdio.h (FILE): define __SCLE for "convert line endings" for Cygwin.") Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/fvwrite.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/newlib/libc/stdio/fvwrite.c b/newlib/libc/stdio/fvwrite.c index 34361cb8d1..fc79951032 100644 --- a/newlib/libc/stdio/fvwrite.c +++ b/newlib/libc/stdio/fvwrite.c @@ -40,6 +40,9 @@ /* * Write some memory regions. Return zero on success, EOF on error. * + * On systems supporting threads, this function *must* be called under + * _newlib_flockfile_start locking. + * * This routine is large and unsightly, but most of the ugliness due * to the three different kinds of output buffering is handled here. */ @@ -74,7 +77,7 @@ __sfvwrite_r (struct _reent *ptr, GETIOV (;); while (len > 0) { - if (putc (*p, fp) == EOF) + if (__sputc_r (ptr, *p, fp) == EOF) return EOF; p++; len--; From 41e13e4d9d73f00259eeb61936a1ca880fc949e6 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Fri, 17 Nov 2023 15:22:52 +0100 Subject: [PATCH 467/767] Cygwin: Add /dev/disk/by-label and /dev/disk/by-uuid symlinks The new directories '/dev/disk/by-label' and '/dev/disk/by-uuid' provide symlinks for each disk related volume label and serial number: 'VOLUME_LABEL' -> '../../sdXN' 'VOLUME_SERIAL' -> '../../sdXN' Signed-off-by: Christian Franke --- winsup/cygwin/fhandler/dev_disk.cc | 159 +++++++++++++++++++++--- winsup/cygwin/local_includes/fhandler.h | 3 +- 2 files changed, 141 insertions(+), 21 deletions(-) diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc index 5f79ab5e9f..016b4c7bc2 100644 --- a/winsup/cygwin/fhandler/dev_disk.cc +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -14,33 +14,62 @@ details. */ #include #include -/* Replace spaces, non-printing and unexpected characters. Remove - leading and trailing spaces. Return remaining string length. */ +/* Replace invalid characters. Optionally remove leading and trailing + characters. Return remaining string length. */ +template static int -sanitize_id_string (char *s) +sanitize_string (char_type *s, char_type leading, char_type trailing, + char_type replace, func_type valid) { int first = 0; - while (s[first] == ' ') - first++; - int last = -1, i; + if (leading) + while (s[first] == leading) + first++; + int len = -1, i; for (i = 0; s[first + i]; i++) { - char c = s[first + i]; - if (c != ' ') - last = -1; - else if (last < 0) - last = i; - if (!(('0' <= c && c <= '9') || c == '.' || c == '-' - || ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))) - c = '_'; + char_type c = s[first + i]; + if (c != trailing) + len = -1; + else if (len < 0) + len = i; + if (!valid (c)) + c = replace; else if (!first) continue; s[i] = c; } - if (last < 0) - last = i; - s[last] = '\0'; - return last; + if (len < 0) + len = i; + s[len] = (char_type) 0; + return len; +} + +/* Variant for device identify strings. */ +static int +sanitize_id_string (char *s) +{ + return sanitize_string (s, ' ', ' ', '_', [] (char c) -> bool + { + return (('0' <= c && c <= '9') || c == '.' || c == '-' + || ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')); + } + ); +} + +/* Variant for volume labels. */ +static int +sanitize_label_string (WCHAR *s) +{ + /* Linux does not skip leading spaces. */ + return sanitize_string (s, L'\0', L' ', L'_', [] (WCHAR c) -> bool + { + /* Labels may contain characters not allowed in filenames. + Linux replaces spaces with \x20 which is not an option here. */ + return !((0 <= c && c <= L' ') || c == L':' || c == L'/' || c == L'\\' + || c == L'"'); + } + ); } /* Fetch storage properties and create the ID string. @@ -244,6 +273,79 @@ partition_to_voluuid(const UNICODE_STRING *drive_uname, DWORD part_num, return true; } +/* ("HarddiskN", PART_NUM) -> "VOLUME_LABEL" or "VOLUME_SERIAL" */ +static bool +partition_to_label_or_uuid(bool uuid, const UNICODE_STRING *drive_uname, + DWORD part_num, char *ioctl_buf, char *name) +{ + WCHAR wpath[MAX_PATH]; + /* Trailing backslash is required. */ + size_t len = __small_swprintf (wpath, L"\\Device\\%S\\Partition%u\\", + drive_uname, part_num); + len *= sizeof (WCHAR); + UNICODE_STRING upath = {(USHORT) len, (USHORT) (len + 1), wpath}; + OBJECT_ATTRIBUTES attr; + InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE, nullptr, + nullptr); + IO_STATUS_BLOCK io; + HANDLE volhdl; + NTSTATUS status = NtOpenFile (&volhdl, READ_CONTROL, &attr, &io, + FILE_SHARE_VALID_FLAGS, 0); + if (!NT_SUCCESS (status)) + { + /* Fails with STATUS_UNRECOGNIZED_VOLUME (0xC000014F) if the + partition/filesystem type is unsupported. */ + debug_printf ("NtOpenFile(%S), status %y", upath, status); + return false; + } + + /* Check for possible 64-bit NTFS serial number first. */ + DWORD bytes_read; + const NTFS_VOLUME_DATA_BUFFER *nvdb = + reinterpret_cast(ioctl_buf); + if (uuid && DeviceIoControl (volhdl, FSCTL_GET_NTFS_VOLUME_DATA, nullptr, 0, + ioctl_buf, NT_MAX_PATH, &bytes_read, nullptr) + && nvdb->VolumeSerialNumber.QuadPart) + { + /* Print without any separator as on Linux. */ + __small_sprintf (name, "%16X", nvdb->VolumeSerialNumber.QuadPart); + NtClose(volhdl); + return true; + } + + /* Get label and 32-bit serial number. */ + status = NtQueryVolumeInformationFile (volhdl, &io, ioctl_buf, + NT_MAX_PATH, FileFsVolumeInformation); + NtClose(volhdl); + if (!NT_SUCCESS (status)) + { + debug_printf ("NtQueryVolumeInformationFile(%S), status %y", upath, + status); + return false; + } + + FILE_FS_VOLUME_INFORMATION *ffvi = + reinterpret_cast(ioctl_buf); + if (uuid) + { + if (!ffvi->VolumeSerialNumber) + return false; + /* Print with separator as on Linux. */ + __small_sprintf (name, "%04x-%04x", ffvi->VolumeSerialNumber >> 16, + ffvi->VolumeSerialNumber & 0xffff); + } + else + { + /* Label is not null terminated. */ + ffvi->VolumeLabel[ffvi->VolumeLabelLength / sizeof(WCHAR)] = L'\0'; + int len = sanitize_label_string (ffvi->VolumeLabel); + if (!len) + return false; + __small_sprintf (name, "%W", ffvi->VolumeLabel); + } + return true; +} + struct by_id_entry { char name[NAME_MAX + 1]; @@ -324,7 +426,11 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) unsigned alloc_size = 0, table_size = 0; tmp_pathbuf tp; char *ioctl_buf = tp.c_get (); - WCHAR *w_buf = tp.w_get (); + char *ioctl_buf2 = (loc == fhandler_dev_disk::disk_by_label + || loc == fhandler_dev_disk::disk_by_uuid ? + tp.c_get () : nullptr); + WCHAR *w_buf = (loc == fhandler_dev_disk::disk_by_drive ? + tp.w_get () : nullptr); DIRECTORY_BASIC_INFORMATION *dbi_buf = reinterpret_cast(tp.w_get ()); @@ -462,11 +568,23 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) __small_sprintf (name, "%s-part%u", drive_name, part_num); break; + case fhandler_dev_disk::disk_by_label: + if (!partition_to_label_or_uuid (false, &dbi->ObjectName, + part_num, ioctl_buf2, name)) + continue; + break; + case fhandler_dev_disk::disk_by_partuuid: if (!format_partuuid (name, pix)) continue; break; + case fhandler_dev_disk::disk_by_uuid: + if (!partition_to_label_or_uuid (true, &dbi->ObjectName, + part_num, ioctl_buf2, name)) + continue; + break; + case fhandler_dev_disk::disk_by_voluuid: if (!partition_to_voluuid (&dbi->ObjectName, part_num, name)) continue; @@ -521,7 +639,8 @@ const size_t by_drive_len = sizeof(by_drive) - 1; /* Keep this in sync with enum fhandler_dev_disk::dev_disk_location starting at disk_by_drive. */ static const char * const by_dir_names[] { - "/by-drive", "/by-id", "/by-partuuid", "/by-voluuid" + "/by-drive", "/by-id", "/by-label", + "/by-partuuid", "/by-uuid", "/by-voluuid" }; const size_t by_dir_names_size = sizeof(by_dir_names) / sizeof(by_dir_names[0]); static_assert((size_t) fhandler_dev_disk::disk_by_drive + by_dir_names_size - 1 diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 86c7b20a26..ca685a6276 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -3198,7 +3198,8 @@ class fhandler_dev_disk: public fhandler_virtual enum dev_disk_location { unknown_loc, invalid_loc, disk_dir, /* Keep these in sync with dev_disk.cc:by_dir_names array: */ - disk_by_drive, disk_by_id, disk_by_partuuid, disk_by_voluuid + disk_by_drive, disk_by_id, disk_by_label, + disk_by_partuuid, disk_by_uuid, disk_by_voluuid }; private: From 643275ed18b7ddab73bc7dcb0d971b7d4b1db392 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Fri, 17 Nov 2023 18:41:08 +0100 Subject: [PATCH 468/767] Cygwin: Document /dev/disk/by-* subdirectories Signed-off-by: Christian Franke --- winsup/cygwin/release/3.5.0 | 16 +++++++++++----- winsup/doc/new-features.xml | 20 +++++++++++--------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 2d59818b58..aee21c972f 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -17,11 +17,17 @@ What's new: class expressions, and collating symbols in the search pattern, i.e., [:alnum:], [=a=], [.aa.]. -- Introduce /dev/disk directory with subdirectories by-id and by-partuuid. - The by-id directory provides symlinks for each disk and its partitions: - BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|HASH][-partN] -> ../../sdX[N]. - The by-partuuid directory provides symlinks for each MBR and GPT disk - partition: MBR_SERIAL-OFFSET -> ../../sdXN, GPT_GUID -> ../../sdXN. +- Introduce /dev/disk directory with various by-* subdirectories which + provide symlinks to disk and partition raw devices: + by-drive/DRIVE_LETTER -> ../../sdXN + by-label/VOLUME_LABEL -> ../../sdXN + by-id/BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|0xHASH][-partN] -> ../../sdX[N] + by-partuuid/MBR_SERIAL-OFFSET -> ../../sdXN + by-partuuid/GPT_GUID -> ../../sdXN + by-uuid/VOLUME_SERIAL -> ../../sdXN + by-voluuid/MBR_SERIAL-OFFSET -> ../../sdXN + by-voluuid/VOLUME_GUID -> ../../sdXN + The subdirectories by-drive and by-voluuid are Cygwin specific. - Introduce /proc/codesets and /proc/locales with information on supported codesets and locales for all interested parties. Locale(1) diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index a8e8a7991f..2c31a4accd 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -35,17 +35,19 @@ class expressions, and collating symbols in the search pattern, i.e., -Introduce /dev/disk directory with subdirectories by-id and by-partuuid. -The by-id directory provides symlinks for each disk and its partitions: +Introduce /dev/disk directory with various by-* subdirectories which +provide symlinks to disk and partition raw devices: - BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|0xHASH][-partN] -> ../../sdX[N] - -The by-partuuid directory provides symlinks for each MBR and GPT disk -partition: - - MBR_SERIAL-OFFSET -> ../../sdXN - GPT_GUID -> ../../sdXN + by-drive/DRIVE_LETTER -> ../../sdXN + by-label/VOLUME_LABEL -> ../../sdXN + by-id/BUSTYPE-[VENDOR_]PRODUCT_[SERIAL|0xHASH][-partN] -> ../../sdX[N] + by-partuuid/MBR_SERIAL-OFFSET -> ../../sdXN + by-partuuid/GPT_GUID -> ../../sdXN + by-uuid/VOLUME_SERIAL -> ../../sdXN + by-voluuid/MBR_SERIAL-OFFSET -> ../../sdXN + by-voluuid/VOLUME_GUID -> ../../sdXN +The subdirectories by-drive and by-voluuid are Cygwin specific. From 37e67d15950a52b096601e98081abc2b17bd3a2b Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Mon, 20 Nov 2023 12:04:58 +1100 Subject: [PATCH 469/767] Reclaim _REENT_MP_P5S in _reclaim_reent The _REENT_MP_P5S blocks are allocated using Balloc via i2b and linked in the pow5mult call. As a result these blocks are not on the freelist managed by the Bfree call. This change fixes a memory leak in threads that clean up using _reclaim_reent. RTEMS: Closes #4967 --- newlib/libc/reent/reent.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/newlib/libc/reent/reent.c b/newlib/libc/reent/reent.c index db80ca06e3..74503fa592 100644 --- a/newlib/libc/reent/reent.c +++ b/newlib/libc/reent/reent.c @@ -59,6 +59,17 @@ _reclaim_reent (struct _reent *ptr) } if (_REENT_MP_RESULT(ptr)) _free_r (ptr, _REENT_MP_RESULT(ptr)); + if (_REENT_MP_P5S(ptr)) + { + struct _Bigint *thisone, *nextone; + nextone = _REENT_MP_P5S(ptr); + while (nextone) + { + thisone = nextone; + nextone = nextone->_next; + _free_r (ptr, thisone); + } + } #ifdef _REENT_SMALL } #endif From d36b4f3f069881b2613b2754d6492d596c9e6ab9 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Mon, 20 Nov 2023 15:40:42 +0100 Subject: [PATCH 470/767] Cygwin: /dev/disk/by-uuid: Fix NTFS serial number print format Signed-off-by: Christian Franke --- winsup/cygwin/fhandler/dev_disk.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc index 016b4c7bc2..c5d72816f0 100644 --- a/winsup/cygwin/fhandler/dev_disk.cc +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -308,7 +308,7 @@ partition_to_label_or_uuid(bool uuid, const UNICODE_STRING *drive_uname, && nvdb->VolumeSerialNumber.QuadPart) { /* Print without any separator as on Linux. */ - __small_sprintf (name, "%16X", nvdb->VolumeSerialNumber.QuadPart); + __small_sprintf (name, "%016X", nvdb->VolumeSerialNumber.QuadPart); NtClose(volhdl); return true; } From bc986b7ff668aa98372fc4e885307339e7ab3f51 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 11 Nov 2023 01:09:47 +0900 Subject: [PATCH 471/767] stdio: Fix bugs in commit 3d94e07c49b5 The commit 3d94e07c49b5 has a few bugs which cause testsuite failure in libstdc++. This is due to excess orientation check in __srefill_r() and _ungetc_r(). Further, sscanf() family also calls ssvfscanf() family with fp->_file == -1. This causes undesired orientation set/check for sscanf() family. This patch fixes these problems. Also, as in GLibC, do not set orientation in ungetc, and only set, but do not check orientation in ungetwc. Fixes: 3d94e07c49b5 ("newlib: libc: Fix crash on fprintf to a wide-oriented stream.") Reported-by: Christophe Lyon Reported-by: Joel Sherrill Co-developed-by: Corinna Vinschen Signed-off-by: Takashi Yano Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/asiprintf.c | 2 ++ newlib/libc/stdio/asniprintf.c | 2 ++ newlib/libc/stdio/asnprintf.c | 2 ++ newlib/libc/stdio/asprintf.c | 2 ++ newlib/libc/stdio/getc.c | 6 ++++++ newlib/libc/stdio/refill.c | 3 --- newlib/libc/stdio/siprintf.c | 2 ++ newlib/libc/stdio/siscanf.c | 2 ++ newlib/libc/stdio/sniprintf.c | 2 ++ newlib/libc/stdio/snprintf.c | 2 ++ newlib/libc/stdio/sprintf.c | 2 ++ newlib/libc/stdio/sscanf.c | 2 ++ newlib/libc/stdio/swprintf.c | 2 ++ newlib/libc/stdio/swscanf.c | 2 ++ newlib/libc/stdio/ungetc.c | 6 ------ newlib/libc/stdio/ungetwc.c | 5 ++--- newlib/libc/stdio/vasiprintf.c | 1 + newlib/libc/stdio/vasniprintf.c | 1 + newlib/libc/stdio/vasnprintf.c | 1 + newlib/libc/stdio/vasprintf.c | 1 + newlib/libc/stdio/vsiprintf.c | 1 + newlib/libc/stdio/vsiscanf.c | 1 + newlib/libc/stdio/vsniprintf.c | 1 + newlib/libc/stdio/vsnprintf.c | 1 + newlib/libc/stdio/vsprintf.c | 1 + newlib/libc/stdio/vsscanf.c | 1 + newlib/libc/stdio/vswprintf.c | 1 + 27 files changed, 43 insertions(+), 12 deletions(-) diff --git a/newlib/libc/stdio/asiprintf.c b/newlib/libc/stdio/asiprintf.c index af25e9a57a..dedb7fbfab 100644 --- a/newlib/libc/stdio/asiprintf.c +++ b/newlib/libc/stdio/asiprintf.c @@ -35,6 +35,7 @@ _asiprintf_r (struct _reent *ptr, /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; + f._flags2 = 0; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ @@ -61,6 +62,7 @@ asiprintf (char **strp, /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; + f._flags2 = 0; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/asniprintf.c b/newlib/libc/stdio/asniprintf.c index 97e77748e7..e930c8d69f 100644 --- a/newlib/libc/stdio/asniprintf.c +++ b/newlib/libc/stdio/asniprintf.c @@ -36,6 +36,7 @@ _asniprintf_r (struct _reent *ptr, len = 0; buf = NULL; } + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t @@ -82,6 +83,7 @@ asniprintf (char *buf, len = 0; buf = NULL; } + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t diff --git a/newlib/libc/stdio/asnprintf.c b/newlib/libc/stdio/asnprintf.c index f82556143e..4c9ad58602 100644 --- a/newlib/libc/stdio/asnprintf.c +++ b/newlib/libc/stdio/asnprintf.c @@ -36,6 +36,7 @@ _asnprintf_r (struct _reent *__restrict ptr, len = 0; buf = NULL; } + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t @@ -88,6 +89,7 @@ asnprintf (char *__restrict buf, len = 0; buf = NULL; } + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t diff --git a/newlib/libc/stdio/asprintf.c b/newlib/libc/stdio/asprintf.c index 542e70e4c3..511d0e0f3f 100644 --- a/newlib/libc/stdio/asprintf.c +++ b/newlib/libc/stdio/asprintf.c @@ -35,6 +35,7 @@ _asprintf_r (struct _reent *ptr, /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; + f._flags2 = 0; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ @@ -67,6 +68,7 @@ asprintf (char **__restrict strp, /* mark a zero-length reallocatable buffer */ f._flags = __SWR | __SSTR | __SMBF; + f._flags2 = 0; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/getc.c b/newlib/libc/stdio/getc.c index c8781320e6..12bffaf8f7 100644 --- a/newlib/libc/stdio/getc.c +++ b/newlib/libc/stdio/getc.c @@ -81,6 +81,9 @@ _getc_r (struct _reent *ptr, { int result; CHECK_INIT (ptr, fp); + if (ORIENT (fp, -1) != -1) + return EOF; + _newlib_flockfile_start (fp); result = __sgetc_r (ptr, fp); _newlib_flockfile_end (fp); @@ -96,6 +99,9 @@ getc (register FILE *fp) struct _reent *reent = _REENT; CHECK_INIT (reent, fp); + if (ORIENT (fp, -1) != -1) + return EOF; + _newlib_flockfile_start (fp); result = __sgetc_r (reent, fp); _newlib_flockfile_end (fp); diff --git a/newlib/libc/stdio/refill.c b/newlib/libc/stdio/refill.c index c1ef7e120b..cd71ed1529 100644 --- a/newlib/libc/stdio/refill.c +++ b/newlib/libc/stdio/refill.c @@ -43,9 +43,6 @@ __srefill_r (struct _reent * ptr, CHECK_INIT (ptr, fp); - if (ORIENT (fp, -1) != -1) - return EOF; - fp->_r = 0; /* largely a convenience for callers */ /* SysV does not make this test; take it out for compatibility */ diff --git a/newlib/libc/stdio/siprintf.c b/newlib/libc/stdio/siprintf.c index bd29edd881..b337925979 100644 --- a/newlib/libc/stdio/siprintf.c +++ b/newlib/libc/stdio/siprintf.c @@ -108,6 +108,7 @@ _siprintf_r (struct _reent *ptr, FILE f; f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ @@ -129,6 +130,7 @@ siprintf (char *str, FILE f; f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/siscanf.c b/newlib/libc/stdio/siscanf.c index b88b810888..4c1363d0a7 100644 --- a/newlib/libc/stdio/siscanf.c +++ b/newlib/libc/stdio/siscanf.c @@ -90,6 +90,7 @@ siscanf (const char *str, FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; @@ -114,6 +115,7 @@ _siscanf_r (struct _reent *ptr, FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; diff --git a/newlib/libc/stdio/sniprintf.c b/newlib/libc/stdio/sniprintf.c index b05ffcb12d..852713f1ff 100644 --- a/newlib/libc/stdio/sniprintf.c +++ b/newlib/libc/stdio/sniprintf.c @@ -42,6 +42,7 @@ _sniprintf_r (struct _reent *ptr, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ @@ -73,6 +74,7 @@ sniprintf (char *str, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/snprintf.c b/newlib/libc/stdio/snprintf.c index 4a3084beac..b6130b9983 100644 --- a/newlib/libc/stdio/snprintf.c +++ b/newlib/libc/stdio/snprintf.c @@ -41,6 +41,7 @@ _snprintf_r (struct _reent *ptr, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ @@ -78,6 +79,7 @@ snprintf (char *__restrict str, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/sprintf.c b/newlib/libc/stdio/sprintf.c index be66ec6f5d..92cae46189 100644 --- a/newlib/libc/stdio/sprintf.c +++ b/newlib/libc/stdio/sprintf.c @@ -584,6 +584,7 @@ _sprintf_r (struct _reent *ptr, FILE f; f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ @@ -611,6 +612,7 @@ sprintf (char *__restrict str, FILE f; f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/sscanf.c b/newlib/libc/stdio/sscanf.c index 9c50361bc0..52145fc46c 100644 --- a/newlib/libc/stdio/sscanf.c +++ b/newlib/libc/stdio/sscanf.c @@ -429,6 +429,7 @@ sscanf (const char *__restrict str, FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; @@ -459,6 +460,7 @@ _sscanf_r (struct _reent *ptr, FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; diff --git a/newlib/libc/stdio/swprintf.c b/newlib/libc/stdio/swprintf.c index 634b22beb9..e590b522ce 100644 --- a/newlib/libc/stdio/swprintf.c +++ b/newlib/libc/stdio/swprintf.c @@ -568,6 +568,7 @@ _swprintf_r (struct _reent *ptr, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? (size - 1) * sizeof (wchar_t) : 0); f._file = -1; /* No file. */ @@ -608,6 +609,7 @@ swprintf (wchar_t *__restrict str, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? (size - 1) * sizeof (wchar_t) : 0); f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/swscanf.c b/newlib/libc/stdio/swscanf.c index 578ac3c93f..0ef4d0ebde 100644 --- a/newlib/libc/stdio/swscanf.c +++ b/newlib/libc/stdio/swscanf.c @@ -422,6 +422,7 @@ swscanf (const wchar_t *__restrict str, const wchar_t *__restrict fmt, ...) FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = wcslen (str) * sizeof (wchar_t); f._read = __seofread; @@ -446,6 +447,7 @@ _swscanf_r (struct _reent *ptr, const wchar_t *str, const wchar_t *fmt, ...) FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = wcslen (str) * sizeof (wchar_t); f._read = __seofread; diff --git a/newlib/libc/stdio/ungetc.c b/newlib/libc/stdio/ungetc.c index 79914af080..8b10c82186 100644 --- a/newlib/libc/stdio/ungetc.c +++ b/newlib/libc/stdio/ungetc.c @@ -125,12 +125,6 @@ _ungetc_r (struct _reent *rptr, _newlib_flockfile_start (fp); - if (ORIENT (fp, -1) != -1) - { - _newlib_flockfile_exit (fp); - return EOF; - } - /* After ungetc, we won't be at eof anymore */ fp->_flags &= ~__SEOF; diff --git a/newlib/libc/stdio/ungetwc.c b/newlib/libc/stdio/ungetwc.c index 18636d773e..16d37f2d17 100644 --- a/newlib/libc/stdio/ungetwc.c +++ b/newlib/libc/stdio/ungetwc.c @@ -82,9 +82,8 @@ _ungetwc_r (struct _reent *ptr, size_t len; _newlib_flockfile_start (fp); - if (ORIENT (fp, 1) != 1) - wc = WEOF; - else if (wc == WEOF) + ORIENT (fp, 1); + if (wc == WEOF) wc = WEOF; else if ((len = _wcrtomb_r(ptr, buf, wc, &fp->_mbstate)) == (size_t)-1) { diff --git a/newlib/libc/stdio/vasiprintf.c b/newlib/libc/stdio/vasiprintf.c index 1deb2dbcf3..d9c11eaf50 100644 --- a/newlib/libc/stdio/vasiprintf.c +++ b/newlib/libc/stdio/vasiprintf.c @@ -50,6 +50,7 @@ _vasiprintf_r (struct _reent *ptr, FILE f; f._flags = __SWR | __SSTR | __SMBF ; + f._flags2 = 0; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/vasniprintf.c b/newlib/libc/stdio/vasniprintf.c index b24cd96fb6..c85ca06e8c 100644 --- a/newlib/libc/stdio/vasniprintf.c +++ b/newlib/libc/stdio/vasniprintf.c @@ -36,6 +36,7 @@ _vasniprintf_r (struct _reent *ptr, len = 0; buf = NULL; } + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t diff --git a/newlib/libc/stdio/vasnprintf.c b/newlib/libc/stdio/vasnprintf.c index b3787ec7a1..02f55caa9a 100644 --- a/newlib/libc/stdio/vasnprintf.c +++ b/newlib/libc/stdio/vasnprintf.c @@ -36,6 +36,7 @@ _vasnprintf_r (struct _reent *ptr, len = 0; buf = NULL; } + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) buf; /* For now, inherit the 32-bit signed limit of FILE._bf._size. FIXME - it would be nice to rewrite sys/reent.h to support size_t diff --git a/newlib/libc/stdio/vasprintf.c b/newlib/libc/stdio/vasprintf.c index d7ec9c8400..b466936bd9 100644 --- a/newlib/libc/stdio/vasprintf.c +++ b/newlib/libc/stdio/vasprintf.c @@ -56,6 +56,7 @@ _vasprintf_r (struct _reent *ptr, FILE f; f._flags = __SWR | __SSTR | __SMBF ; + f._flags2 = 0; f._bf._base = f._p = NULL; f._bf._size = f._w = 0; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/vsiprintf.c b/newlib/libc/stdio/vsiprintf.c index 8128cb7726..af07ad85e8 100644 --- a/newlib/libc/stdio/vsiprintf.c +++ b/newlib/libc/stdio/vsiprintf.c @@ -50,6 +50,7 @@ _vsiprintf_r (struct _reent *ptr, FILE f; f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/vsiscanf.c b/newlib/libc/stdio/vsiscanf.c index d7135ef712..4e28d10793 100644 --- a/newlib/libc/stdio/vsiscanf.c +++ b/newlib/libc/stdio/vsiscanf.c @@ -49,6 +49,7 @@ _vsiscanf_r (struct _reent *ptr, FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; diff --git a/newlib/libc/stdio/vsniprintf.c b/newlib/libc/stdio/vsniprintf.c index e7625ffd53..a50a0a9931 100644 --- a/newlib/libc/stdio/vsniprintf.c +++ b/newlib/libc/stdio/vsniprintf.c @@ -58,6 +58,7 @@ _vsniprintf_r (struct _reent *ptr, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/vsnprintf.c b/newlib/libc/stdio/vsnprintf.c index ecf82eaeff..d9c72b526b 100644 --- a/newlib/libc/stdio/vsnprintf.c +++ b/newlib/libc/stdio/vsnprintf.c @@ -64,6 +64,7 @@ _vsnprintf_r (struct _reent *ptr, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? size - 1 : 0); f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/vsprintf.c b/newlib/libc/stdio/vsprintf.c index 4d51fd0dc0..4d4619fd03 100644 --- a/newlib/libc/stdio/vsprintf.c +++ b/newlib/libc/stdio/vsprintf.c @@ -56,6 +56,7 @@ _vsprintf_r (struct _reent *ptr, FILE f; f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = INT_MAX; f._file = -1; /* No file. */ diff --git a/newlib/libc/stdio/vsscanf.c b/newlib/libc/stdio/vsscanf.c index e9e84088f7..6150f541bb 100644 --- a/newlib/libc/stdio/vsscanf.c +++ b/newlib/libc/stdio/vsscanf.c @@ -55,6 +55,7 @@ _vsscanf_r (struct _reent *ptr, FILE f; f._flags = __SRD | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._r = strlen (str); f._read = __seofread; diff --git a/newlib/libc/stdio/vswprintf.c b/newlib/libc/stdio/vswprintf.c index 08a8545bae..ab2e52ff49 100644 --- a/newlib/libc/stdio/vswprintf.c +++ b/newlib/libc/stdio/vswprintf.c @@ -46,6 +46,7 @@ _vswprintf_r (struct _reent *ptr, return EOF; } f._flags = __SWR | __SSTR; + f._flags2 = 0; f._bf._base = f._p = (unsigned char *) str; f._bf._size = f._w = (size > 0 ? (size - 1) * sizeof (wchar_t) : 0); f._file = -1; /* No file. */ From 09119463a1445be498f8a6ce3834d462361c7dd3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 20 Nov 2023 20:46:14 +0100 Subject: [PATCH 472/767] stdio: split byte- and wide-char-oriented low-level output functions Introduce function __swbufw_r and macros/inline-functions called __swputc_r. Call these functions/macros exclusively from wide-char functions. This allows to set and test the stream orientation correctly even if output is only performed using byte-oriented macros from stdio.h. Signed-off-by: Corinna Vinschen --- newlib/Makefile.in | 20 ++++++++++- newlib/libc/stdio/Makefile.inc | 1 + newlib/libc/stdio/fputwc.c | 7 ++-- newlib/libc/stdio/fputws.c | 2 +- newlib/libc/stdio/fvwrite.c | 48 ++++++++++++++++++------- newlib/libc/stdio/local.h | 33 +++++++++++++++++ newlib/libc/stdio/wbuf.c | 3 +- newlib/libc/stdio/wbufw.c | 66 ++++++++++++++++++++++++++++++++++ 8 files changed, 159 insertions(+), 21 deletions(-) create mode 100644 newlib/libc/stdio/wbufw.c diff --git a/newlib/Makefile.in b/newlib/Makefile.in index ff2f88ff75..644e595c90 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -292,7 +292,7 @@ check_PROGRAMS = @HAVE_STDIO_DIR_TRUE@ libc/stdio/vsnprintf.c \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/vsprintf.c \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/vsscanf.c libc/stdio/wbuf.c \ -@HAVE_STDIO_DIR_TRUE@ libc/stdio/wsetup.c \ +@HAVE_STDIO_DIR_TRUE@ libc/stdio/wbufw.c libc/stdio/wsetup.c \ @HAVE_STDIO_DIR_TRUE@ $(libc_stdio_ELIX_2_SOURCES) \ @HAVE_STDIO_DIR_TRUE@ $(libc_stdio_ELIX_4_SOURCES) @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@am__append_13 = \ @@ -1330,6 +1330,7 @@ am__objects_5 = libc/stdlib/libc_a-rpmatch.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/libc_a-vsprintf.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/libc_a-vsscanf.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/libc_a-wbuf.$(OBJEXT) \ +@HAVE_STDIO_DIR_TRUE@ libc/stdio/libc_a-wbufw.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@ libc/stdio/libc_a-wsetup.$(OBJEXT) \ @HAVE_STDIO_DIR_TRUE@ $(am__objects_13) $(am__objects_15) @ELIX_LEVEL_1_FALSE@@HAVE_STDIO64_DIR_TRUE@am__objects_17 = libc/stdio64/libc_a-fdopen64.$(OBJEXT) \ @@ -6126,6 +6127,8 @@ libc/stdio/libc_a-vsscanf.$(OBJEXT): libc/stdio/$(am__dirstamp) \ libc/stdio/$(DEPDIR)/$(am__dirstamp) libc/stdio/libc_a-wbuf.$(OBJEXT): libc/stdio/$(am__dirstamp) \ libc/stdio/$(DEPDIR)/$(am__dirstamp) +libc/stdio/libc_a-wbufw.$(OBJEXT): libc/stdio/$(am__dirstamp) \ + libc/stdio/$(DEPDIR)/$(am__dirstamp) libc/stdio/libc_a-wsetup.$(OBJEXT): libc/stdio/$(am__dirstamp) \ libc/stdio/$(DEPDIR)/$(am__dirstamp) libc/stdio/libc_a-asprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \ @@ -13509,6 +13512,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-vwprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-vwscanf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-wbuf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-wbufw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-wprintf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-wscanf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/stdio/$(DEPDIR)/libc_a-wsetup.Po@am__quote@ @@ -25124,6 +25128,20 @@ libc/stdio/libc_a-wbuf.obj: libc/stdio/wbuf.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-wbuf.obj `if test -f 'libc/stdio/wbuf.c'; then $(CYGPATH_W) 'libc/stdio/wbuf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/wbuf.c'; fi` +libc/stdio/libc_a-wbufw.o: libc/stdio/wbufw.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-wbufw.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-wbufw.Tpo -c -o libc/stdio/libc_a-wbufw.o `test -f 'libc/stdio/wbufw.c' || echo '$(srcdir)/'`libc/stdio/wbufw.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-wbufw.Tpo libc/stdio/$(DEPDIR)/libc_a-wbufw.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/wbufw.c' object='libc/stdio/libc_a-wbufw.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-wbufw.o `test -f 'libc/stdio/wbufw.c' || echo '$(srcdir)/'`libc/stdio/wbufw.c + +libc/stdio/libc_a-wbufw.obj: libc/stdio/wbufw.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-wbufw.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-wbufw.Tpo -c -o libc/stdio/libc_a-wbufw.obj `if test -f 'libc/stdio/wbufw.c'; then $(CYGPATH_W) 'libc/stdio/wbufw.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/wbufw.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-wbufw.Tpo libc/stdio/$(DEPDIR)/libc_a-wbufw.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/stdio/wbufw.c' object='libc/stdio/libc_a-wbufw.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-wbufw.obj `if test -f 'libc/stdio/wbufw.c'; then $(CYGPATH_W) 'libc/stdio/wbufw.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/wbufw.c'; fi` + libc/stdio/libc_a-wsetup.o: libc/stdio/wsetup.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-wsetup.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-wsetup.Tpo -c -o libc/stdio/libc_a-wsetup.o `test -f 'libc/stdio/wsetup.c' || echo '$(srcdir)/'`libc/stdio/wsetup.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-wsetup.Tpo libc/stdio/$(DEPDIR)/libc_a-wsetup.Po diff --git a/newlib/libc/stdio/Makefile.inc b/newlib/libc/stdio/Makefile.inc index 0780e5c602..e25680212a 100644 --- a/newlib/libc/stdio/Makefile.inc +++ b/newlib/libc/stdio/Makefile.inc @@ -117,6 +117,7 @@ libc_a_SOURCES += \ %D%/vsprintf.c \ %D%/vsscanf.c \ %D%/wbuf.c \ + %D%/wbufw.c \ %D%/wsetup.c ## The following are EL/IX level 2 interfaces diff --git a/newlib/libc/stdio/fputwc.c b/newlib/libc/stdio/fputwc.c index ef2be10483..8430446dea 100644 --- a/newlib/libc/stdio/fputwc.c +++ b/newlib/libc/stdio/fputwc.c @@ -155,7 +155,7 @@ __fputwc (struct _reent *ptr, } for (i = 0; i < len; i++) - if (__sputc_r (ptr, (unsigned char) buf[i], fp) == EOF) + if (__swputc_r (ptr, (unsigned char) buf[i], fp) == EOF) return WEOF; return (wint_t) wc; @@ -169,10 +169,7 @@ _fputwc_r (struct _reent *ptr, wint_t r; _newlib_flockfile_start (fp); - if (ORIENT(fp, 1) != 1) - r = WEOF; - else - r = __fputwc(ptr, wc, fp); + __fputwc(ptr, wc, fp); _newlib_flockfile_end (fp); return r; } diff --git a/newlib/libc/stdio/fputws.c b/newlib/libc/stdio/fputws.c index a9ac9d6d72..d6963837b4 100644 --- a/newlib/libc/stdio/fputws.c +++ b/newlib/libc/stdio/fputws.c @@ -143,7 +143,7 @@ _fputws_r (struct _reent *ptr, goto error; while (i < nbytes) { - if (__sputc_r (ptr, buf[i], fp) == EOF) + if (__swputc_r (ptr, buf[i], fp) == EOF) goto error; i++; } diff --git a/newlib/libc/stdio/fvwrite.c b/newlib/libc/stdio/fvwrite.c index fc79951032..add48ba99c 100644 --- a/newlib/libc/stdio/fvwrite.c +++ b/newlib/libc/stdio/fvwrite.c @@ -70,21 +70,43 @@ __sfvwrite_r (struct _reent *ptr, len = 0; #ifdef __SCLE + /* This only affects Cygwin, so calling __sputc_r *and* __swputc_r + * from here doesn't matter. + */ if (fp->_flags & __SCLE) /* text mode */ { - do - { - GETIOV (;); - while (len > 0) - { - if (__sputc_r (ptr, *p, fp) == EOF) - return EOF; - p++; - len--; - uio->uio_resid--; - } - } - while (uio->uio_resid > 0); + if (fp->_flags2 & __SWID) + { + do + { + GETIOV (;); + while (len > 0) + { + if (__swputc_r (ptr, *p, fp) == EOF) + return EOF; + p++; + len--; + uio->uio_resid--; + } + } + while (uio->uio_resid > 0); + } + else + { + do + { + GETIOV (;); + while (len > 0) + { + if (__sputc_r (ptr, *p, fp) == EOF) + return EOF; + p++; + len--; + uio->uio_resid--; + } + } + while (uio->uio_resid > 0); + } return 0; } #endif diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h index 3b86cf19aa..63c0618f1b 100644 --- a/newlib/libc/stdio/local.h +++ b/newlib/libc/stdio/local.h @@ -251,6 +251,39 @@ extern _READ_WRITE_RETURN_TYPE __swrite64 (struct _reent *, void *, #define ORIENT(fp,ori) (-1) #endif +/* Same thing as the functions in stdio.h, but these are to be called + from inside the wide-char functions. */ +int __swbufw_r (struct _reent *, int, FILE *); +#ifdef __GNUC__ +_ELIDABLE_INLINE int __swputc_r(struct _reent *_ptr, int _c, FILE *_p) { +#ifdef __SCLE + if ((_p->_flags & __SCLE) && _c == '\n') + __swputc_r (_ptr, '\r', _p); +#endif + if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) + return (*_p->_p++ = _c); + else + return (__swbufw_r(_ptr, _c, _p)); +} +#else +#define __swputc_raw_r(__ptr, __c, __p) \ + (--(__p)->_w < 0 ? \ + (__p)->_w >= (__p)->_lbfsize ? \ + (*(__p)->_p = (__c)), *(__p)->_p != '\n' ? \ + (int)*(__p)->_p++ : \ + __swbufw_r(__ptr, '\n', __p) : \ + __swbufw_r(__ptr, (int)(__c), __p) : \ + (*(__p)->_p = (__c), (int)*(__p)->_p++)) +#ifdef __SCLE +#define __swputc_r(__ptr, __c, __p) \ + ((((__p)->_flags & __SCLE) && ((__c) == '\n')) \ + ? __swputc_raw_r(__ptr, '\r', (__p)) : 0 , \ + __swputc_raw_r((__ptr), (__c), (__p))) +#else +#define __swputc_r(__ptr, __c, __p) __swputc_raw_r(__ptr, __c, __p) +#endif +#endif + /* WARNING: _dcvt is defined in the stdlib directory, not here! */ char *_dcvt (struct _reent *, char *, double, int, int, char, int); diff --git a/newlib/libc/stdio/wbuf.c b/newlib/libc/stdio/wbuf.c index 2474903037..2e742e255b 100644 --- a/newlib/libc/stdio/wbuf.c +++ b/newlib/libc/stdio/wbuf.c @@ -56,7 +56,8 @@ __swbuf_r (struct _reent *ptr, return EOF; c = (unsigned char) c; - ORIENT (fp, -1); + if (ORIENT (fp, -1) != -1) + return EOF; /* * If it is completely full, flush it out. Then, in any case, diff --git a/newlib/libc/stdio/wbufw.c b/newlib/libc/stdio/wbufw.c new file mode 100644 index 0000000000..01639df696 --- /dev/null +++ b/newlib/libc/stdio/wbufw.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * and/or other materials related to such + * distribution and use acknowledge that the software was developed + * by the University of California, Berkeley. The name of the + * University may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ +/* No user fns here. Pesch 15apr92. */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "%W% (Berkeley) %G%"; +#endif /* LIBC_SCCS and not lint */ + +#include <_ansi.h> +#include +#include +#include "local.h" +#include "fvwrite.h" + +/* + * Note that this is the same function as __swbuf_r, just to be called + * from wide-char functions! + * + * The only difference is that we set and test the orientation differently. + */ + +int +__swbufw_r (struct _reent *ptr, + register int c, + register FILE *fp) +{ + register int n; + + CHECK_INIT (ptr, fp); + + fp->_w = fp->_lbfsize; + if (cantwrite (ptr, fp)) + return EOF; + c = (unsigned char) c; + + if (ORIENT (fp, 1) != 1) + return EOF; + + n = fp->_p - fp->_bf._base; + if (n >= fp->_bf._size) + { + if (_fflush_r (ptr, fp)) + return EOF; + n = 0; + } + fp->_w--; + *fp->_p++ = c; + if (++n == fp->_bf._size || (fp->_flags & __SLBF && c == '\n')) + if (_fflush_r (ptr, fp)) + return EOF; + return c; +} From c190063f9658153988d735a333a7a3c7aeadc001 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 20 Nov 2023 20:47:52 +0100 Subject: [PATCH 473/767] stdio: set and test stream orientation in low-level input function __srget_r This allows to set and test orientation correctly if input is only using macros from stdio.h. Wide-char-oriented functions must call __srefill_r directly. Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/rget.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/newlib/libc/stdio/rget.c b/newlib/libc/stdio/rget.c index a9a0d2f2f2..38e8b5dd19 100644 --- a/newlib/libc/stdio/rget.c +++ b/newlib/libc/stdio/rget.c @@ -39,6 +39,11 @@ __srget_r (struct _reent *ptr, we call __srefill_r so we may access the true read buffer. */ CHECK_INIT(ptr, fp); + /* Have to set and check orientation here, otherwise the macros in + stdio.h never set it. */ + if (ORIENT (fp, -1) != -1) + return EOF; + if (__srefill_r (ptr, fp) == 0) { fp->_r--; From 61e52c4d60c57f520cd19de310260395add5ce97 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 20 Nov 2023 20:49:53 +0100 Subject: [PATCH 474/767] stdio: drop unnecessary calls to ORIENT Now that the low-level functions set and test stream orientation, a few calls in API functions are redundant. Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/fputs.c | 2 -- newlib/libc/stdio/fputwc_u.c | 2 -- newlib/libc/stdio/fputws.c | 2 -- newlib/libc/stdio/fwrite.c | 2 -- newlib/libc/stdio/getc.c | 6 ------ newlib/libc/stdio/putc.c | 4 ---- newlib/libc/stdio/puts.c | 2 -- 7 files changed, 20 deletions(-) diff --git a/newlib/libc/stdio/fputs.c b/newlib/libc/stdio/fputs.c index a4f18df2af..7437949433 100644 --- a/newlib/libc/stdio/fputs.c +++ b/newlib/libc/stdio/fputs.c @@ -115,8 +115,6 @@ _fputs_r (struct _reent * ptr, CHECK_INIT(ptr, fp); _newlib_flockfile_start (fp); - if (ORIENT (fp, -1) != -1) - goto error; /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto error; diff --git a/newlib/libc/stdio/fputwc_u.c b/newlib/libc/stdio/fputwc_u.c index a5cc9a5d58..7e7403b998 100644 --- a/newlib/libc/stdio/fputwc_u.c +++ b/newlib/libc/stdio/fputwc_u.c @@ -34,8 +34,6 @@ _fputwc_unlocked_r (struct _reent *ptr, wchar_t wc, FILE *fp) { - if (ORIENT(fp, 1) != 1) - return WEOF; return __fputwc(ptr, wc, fp); } diff --git a/newlib/libc/stdio/fputws.c b/newlib/libc/stdio/fputws.c index d6963837b4..f9fe4a4b32 100644 --- a/newlib/libc/stdio/fputws.c +++ b/newlib/libc/stdio/fputws.c @@ -130,8 +130,6 @@ _fputws_r (struct _reent *ptr, return (-1); #else _newlib_flockfile_start (fp); - if (ORIENT (fp, 1) != 1) - goto error; if (cantwrite (ptr, fp) != 0) goto error; diff --git a/newlib/libc/stdio/fwrite.c b/newlib/libc/stdio/fwrite.c index 2d9749693b..9241ea2cd9 100644 --- a/newlib/libc/stdio/fwrite.c +++ b/newlib/libc/stdio/fwrite.c @@ -152,8 +152,6 @@ _fwrite_r (struct _reent * ptr, CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); - if (ORIENT (fp, -1) != -1) - goto ret; /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto ret; diff --git a/newlib/libc/stdio/getc.c b/newlib/libc/stdio/getc.c index 12bffaf8f7..c8781320e6 100644 --- a/newlib/libc/stdio/getc.c +++ b/newlib/libc/stdio/getc.c @@ -81,9 +81,6 @@ _getc_r (struct _reent *ptr, { int result; CHECK_INIT (ptr, fp); - if (ORIENT (fp, -1) != -1) - return EOF; - _newlib_flockfile_start (fp); result = __sgetc_r (ptr, fp); _newlib_flockfile_end (fp); @@ -99,9 +96,6 @@ getc (register FILE *fp) struct _reent *reent = _REENT; CHECK_INIT (reent, fp); - if (ORIENT (fp, -1) != -1) - return EOF; - _newlib_flockfile_start (fp); result = __sgetc_r (reent, fp); _newlib_flockfile_end (fp); diff --git a/newlib/libc/stdio/putc.c b/newlib/libc/stdio/putc.c index 925341939f..6a410e216d 100644 --- a/newlib/libc/stdio/putc.c +++ b/newlib/libc/stdio/putc.c @@ -84,8 +84,6 @@ _putc_r (struct _reent *ptr, { int result; CHECK_INIT (ptr, fp); - if (ORIENT (fp, -1) != -1) - return EOF; _newlib_flockfile_start (fp); result = __sputc_r (ptr, c, fp); _newlib_flockfile_end (fp); @@ -102,8 +100,6 @@ putc (int c, struct _reent *reent = _REENT; CHECK_INIT (reent, fp); - if (ORIENT (fp, -1) != -1) - return EOF; _newlib_flockfile_start (fp); result = __sputc_r (reent, c, fp); _newlib_flockfile_end (fp); diff --git a/newlib/libc/stdio/puts.c b/newlib/libc/stdio/puts.c index 20d889b81e..d24022b4b3 100644 --- a/newlib/libc/stdio/puts.c +++ b/newlib/libc/stdio/puts.c @@ -102,8 +102,6 @@ _puts_r (struct _reent *ptr, fp = _stdout_r (ptr); CHECK_INIT (ptr, fp); _newlib_flockfile_start (fp); - if (ORIENT (fp, -1) != -1) - goto err; /* Make sure we can write. */ if (cantwrite (ptr, fp)) goto err; From 3cacedbbac5b2ab651fddcad1d5ce2acd1979b93 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 27 Oct 2023 18:25:35 +0200 Subject: [PATCH 475/767] aarch64: Remove duplicated optimized memmove() The optimized aarch64/memcpy.S already provides a memmove() implementation. --- newlib/Makefile.in | 42 ++--- newlib/libc/machine/aarch64/Makefile.inc | 3 +- newlib/libc/machine/aarch64/memmove.S | 155 ------------------ .../aarch64/{memmove-stub.c => memmove.c} | 2 +- 4 files changed, 13 insertions(+), 189 deletions(-) delete mode 100644 newlib/libc/machine/aarch64/memmove.S rename newlib/libc/machine/aarch64/{memmove-stub.c => memmove.c} (98%) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 644e595c90..9cbb4254ec 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -602,8 +602,7 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcmp.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memcpy.S \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove-stub.c \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.S \ +@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memmove.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr-stub.c \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memrchr.S \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/memset-stub.c \ @@ -1864,7 +1863,6 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcmp.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memcpy.$(OBJEXT) \ -@HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memmove.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-memrchr.$(OBJEXT) \ @@ -8058,9 +8056,6 @@ libc/machine/aarch64/libc_a-memcpy-stub.$(OBJEXT): \ libc/machine/aarch64/libc_a-memcpy.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) -libc/machine/aarch64/libc_a-memmove-stub.$(OBJEXT): \ - libc/machine/aarch64/$(am__dirstamp) \ - libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) libc/machine/aarch64/libc_a-memmove.$(OBJEXT): \ libc/machine/aarch64/$(am__dirstamp) \ libc/machine/aarch64/$(DEPDIR)/$(am__dirstamp) @@ -12774,7 +12769,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memcmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memcpy-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memcpy.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po@am__quote@ @@ -16754,20 +16748,6 @@ libc/machine/aarch64/libc_a-memcpy.obj: libc/machine/aarch64/memcpy.S @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memcpy.obj `if test -f 'libc/machine/aarch64/memcpy.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memcpy.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memcpy.S'; fi` -libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/aarch64/libc_a-memmove.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machine/aarch64/memmove.S' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/aarch64/memmove.S' object='libc/machine/aarch64/libc_a-memmove.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machine/aarch64/memmove.S' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.S - -libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/aarch64/libc_a-memmove.obj -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine/aarch64/memmove.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.S'; fi` -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='libc/machine/aarch64/memmove.S' object='libc/machine/aarch64/libc_a-memmove.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine/aarch64/memmove.S'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.S'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.S'; fi` - libc/machine/aarch64/libc_a-memrchr.o: libc/machine/aarch64/memrchr.S @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CCASFLAGS) $(CCASFLAGS) -MT libc/machine/aarch64/libc_a-memrchr.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Tpo -c -o libc/machine/aarch64/libc_a-memrchr.o `test -f 'libc/machine/aarch64/memrchr.S' || echo '$(srcdir)/'`libc/machine/aarch64/memrchr.S @am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr.Po @@ -33164,19 +33144,19 @@ libc/machine/aarch64/libc_a-memcpy-stub.obj: libc/machine/aarch64/memcpy-stub.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memcpy-stub.obj `if test -f 'libc/machine/aarch64/memcpy-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memcpy-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memcpy-stub.c'; fi` -libc/machine/aarch64/libc_a-memmove-stub.o: libc/machine/aarch64/memmove-stub.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memmove-stub.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Tpo -c -o libc/machine/aarch64/libc_a-memmove-stub.o `test -f 'libc/machine/aarch64/memmove-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove-stub.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/aarch64/memmove-stub.c' object='libc/machine/aarch64/libc_a-memmove-stub.o' libtool=no @AMDEPBACKSLASH@ +libc/machine/aarch64/libc_a-memmove.o: libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memmove.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machine/aarch64/memmove.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/aarch64/memmove.c' object='libc/machine/aarch64/libc_a-memmove.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove-stub.o `test -f 'libc/machine/aarch64/memmove-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove-stub.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.o `test -f 'libc/machine/aarch64/memmove.c' || echo '$(srcdir)/'`libc/machine/aarch64/memmove.c -libc/machine/aarch64/libc_a-memmove-stub.obj: libc/machine/aarch64/memmove-stub.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memmove-stub.obj -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Tpo -c -o libc/machine/aarch64/libc_a-memmove-stub.obj `if test -f 'libc/machine/aarch64/memmove-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove-stub.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove-stub.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/aarch64/memmove-stub.c' object='libc/machine/aarch64/libc_a-memmove-stub.obj' libtool=no @AMDEPBACKSLASH@ +libc/machine/aarch64/libc_a-memmove.obj: libc/machine/aarch64/memmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memmove.obj -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine/aarch64/memmove.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Tpo libc/machine/aarch64/$(DEPDIR)/libc_a-memmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/aarch64/memmove.c' object='libc/machine/aarch64/libc_a-memmove.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove-stub.obj `if test -f 'libc/machine/aarch64/memmove-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove-stub.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-memmove.obj `if test -f 'libc/machine/aarch64/memmove.c'; then $(CYGPATH_W) 'libc/machine/aarch64/memmove.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/memmove.c'; fi` libc/machine/aarch64/libc_a-memrchr-stub.o: libc/machine/aarch64/memrchr-stub.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/aarch64/libc_a-memrchr-stub.o -MD -MP -MF libc/machine/aarch64/$(DEPDIR)/libc_a-memrchr-stub.Tpo -c -o libc/machine/aarch64/libc_a-memrchr-stub.o `test -f 'libc/machine/aarch64/memrchr-stub.c' || echo '$(srcdir)/'`libc/machine/aarch64/memrchr-stub.c diff --git a/newlib/libc/machine/aarch64/Makefile.inc b/newlib/libc/machine/aarch64/Makefile.inc index c749b0d575..1068d88ce8 100644 --- a/newlib/libc/machine/aarch64/Makefile.inc +++ b/newlib/libc/machine/aarch64/Makefile.inc @@ -5,8 +5,7 @@ libc_a_SOURCES += \ %D%/memcmp.S \ %D%/memcpy-stub.c \ %D%/memcpy.S \ - %D%/memmove-stub.c \ - %D%/memmove.S \ + %D%/memmove.c \ %D%/memrchr-stub.c \ %D%/memrchr.S \ %D%/memset-stub.c \ diff --git a/newlib/libc/machine/aarch64/memmove.S b/newlib/libc/machine/aarch64/memmove.S deleted file mode 100644 index 597a8c8e9e..0000000000 --- a/newlib/libc/machine/aarch64/memmove.S +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright (c) 2013, Linaro Limited - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Linaro nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/* - * Copyright (c) 2015 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* Assumptions: - * - * ARMv8-a, AArch64, unaligned accesses - */ - -#if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) -/* See memmove-stub.c */ -#else - - .macro def_fn f p2align=0 - .text - .p2align \p2align - .global \f - .type \f, %function -\f: - .endm - -/* Parameters and result. */ -#define dstin x0 -#define src x1 -#define count x2 -#define srcend x3 -#define dstend x4 -#define tmp1 x5 -#define A_l x6 -#define A_h x7 -#define B_l x8 -#define B_h x9 -#define C_l x10 -#define C_h x11 -#define D_l x12 -#define D_h x13 -#define E_l count -#define E_h tmp1 - -/* All memmoves up to 96 bytes are done by memcpy as it supports overlaps. - Larger backwards copies are also handled by memcpy. The only remaining - case is forward large copies. The destination is aligned, and an - unrolled loop processes 64 bytes per iteration. -*/ - -def_fn memmove, 6 - sub tmp1, dstin, src - cmp count, 96 - ccmp tmp1, count, 2, hi - b.hs memcpy - - cbz tmp1, 3f - add dstend, dstin, count - add srcend, src, count - - /* Align dstend to 16 byte alignment so that we don't cross cache line - boundaries on both loads and stores. There are at least 96 bytes - to copy, so copy 16 bytes unaligned and then align. The loop - copies 64 bytes per iteration and prefetches one iteration ahead. */ - - and tmp1, dstend, 15 - ldp D_l, D_h, [srcend, -16] - sub srcend, srcend, tmp1 - sub count, count, tmp1 - ldp A_l, A_h, [srcend, -16] - stp D_l, D_h, [dstend, -16] - ldp B_l, B_h, [srcend, -32] - ldp C_l, C_h, [srcend, -48] - ldp D_l, D_h, [srcend, -64]! - sub dstend, dstend, tmp1 - subs count, count, 128 - b.ls 2f - nop -1: - stp A_l, A_h, [dstend, -16] - ldp A_l, A_h, [srcend, -16] - stp B_l, B_h, [dstend, -32] - ldp B_l, B_h, [srcend, -32] - stp C_l, C_h, [dstend, -48] - ldp C_l, C_h, [srcend, -48] - stp D_l, D_h, [dstend, -64]! - ldp D_l, D_h, [srcend, -64]! - subs count, count, 64 - b.hi 1b - - /* Write the last full set of 64 bytes. The remainder is at most 64 - bytes, so it is safe to always copy 64 bytes from the start even if - there is just 1 byte left. */ -2: - ldp E_l, E_h, [src, 48] - stp A_l, A_h, [dstend, -16] - ldp A_l, A_h, [src, 32] - stp B_l, B_h, [dstend, -32] - ldp B_l, B_h, [src, 16] - stp C_l, C_h, [dstend, -48] - ldp C_l, C_h, [src] - stp D_l, D_h, [dstend, -64] - stp E_l, E_h, [dstin, 48] - stp A_l, A_h, [dstin, 32] - stp B_l, B_h, [dstin, 16] - stp C_l, C_h, [dstin] -3: ret - - .size memmove, . - memmove -#endif diff --git a/newlib/libc/machine/aarch64/memmove-stub.c b/newlib/libc/machine/aarch64/memmove.c similarity index 98% rename from newlib/libc/machine/aarch64/memmove-stub.c rename to newlib/libc/machine/aarch64/memmove.c index 8fa4ab9387..bc8255fb8b 100644 --- a/newlib/libc/machine/aarch64/memmove-stub.c +++ b/newlib/libc/machine/aarch64/memmove.c @@ -27,5 +27,5 @@ #if (defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)) # include "../../string/memmove.c" #else -/* See memmove.S */ +/* See memcpy.S */ #endif From 3ef4bb186196b23f7a349a0614294b7ee1e0c4dc Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Tue, 21 Nov 2023 19:28:02 +0100 Subject: [PATCH 476/767] Cygwin: /dev/disk: Append '#N' if the same name appears more than once No longer drop ranges of identical link names. Append '#0, #1, ...' to each name instead. Enhance charset allowed in label names. No longer ignore null volume serial numbers. Signed-off-by: Christian Franke --- winsup/cygwin/fhandler/dev_disk.cc | 54 ++++++++++++++++++------------ 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/winsup/cygwin/fhandler/dev_disk.cc b/winsup/cygwin/fhandler/dev_disk.cc index c5d72816f0..29af9de95a 100644 --- a/winsup/cygwin/fhandler/dev_disk.cc +++ b/winsup/cygwin/fhandler/dev_disk.cc @@ -64,10 +64,11 @@ sanitize_label_string (WCHAR *s) /* Linux does not skip leading spaces. */ return sanitize_string (s, L'\0', L' ', L'_', [] (WCHAR c) -> bool { - /* Labels may contain characters not allowed in filenames. - Linux replaces spaces with \x20 which is not an option here. */ - return !((0 <= c && c <= L' ') || c == L':' || c == L'/' || c == L'\\' - || c == L'"'); + /* Labels may contain characters not allowed in filenames. Also + replace '#' to avoid that duplicate markers introduce new + duplicates. Linux replaces spaces with \x20 which is not an + option here. */ + return !(c == L'/' || c == L'\\' || c == L'#'); } ); } @@ -304,8 +305,7 @@ partition_to_label_or_uuid(bool uuid, const UNICODE_STRING *drive_uname, const NTFS_VOLUME_DATA_BUFFER *nvdb = reinterpret_cast(ioctl_buf); if (uuid && DeviceIoControl (volhdl, FSCTL_GET_NTFS_VOLUME_DATA, nullptr, 0, - ioctl_buf, NT_MAX_PATH, &bytes_read, nullptr) - && nvdb->VolumeSerialNumber.QuadPart) + ioctl_buf, NT_MAX_PATH, &bytes_read, nullptr)) { /* Print without any separator as on Linux. */ __small_sprintf (name, "%016X", nvdb->VolumeSerialNumber.QuadPart); @@ -327,13 +327,9 @@ partition_to_label_or_uuid(bool uuid, const UNICODE_STRING *drive_uname, FILE_FS_VOLUME_INFORMATION *ffvi = reinterpret_cast(ioctl_buf); if (uuid) - { - if (!ffvi->VolumeSerialNumber) - return false; - /* Print with separator as on Linux. */ - __small_sprintf (name, "%04x-%04x", ffvi->VolumeSerialNumber >> 16, - ffvi->VolumeSerialNumber & 0xffff); - } + /* Print with separator as on Linux. */ + __small_sprintf (name, "%04x-%04x", ffvi->VolumeSerialNumber >> 16, + ffvi->VolumeSerialNumber & 0xffff); else { /* Label is not null terminated. */ @@ -361,6 +357,20 @@ by_id_compare_name (const void *a, const void *b) return strcmp (ap->name, bp->name); } +static int +by_id_compare_name_drive_part (const void *a, const void *b) +{ + const by_id_entry *ap = reinterpret_cast(a); + const by_id_entry *bp = reinterpret_cast(b); + int cmp = strcmp (ap->name, bp->name); + if (cmp) + return cmp; + cmp = ap->drive - bp->drive; + if (cmp) + return cmp; + return ap->part - bp->part; +} + static by_id_entry * by_id_realloc (by_id_entry *p, size_t n) { @@ -610,8 +620,9 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) if (!table) return (errno_set ? -1 : 0); - /* Sort by name and remove duplicates. */ - qsort (table, table_size, sizeof (*table), by_id_compare_name); + /* Sort by {name, drive, part} to ensure stable sort order. */ + qsort (table, table_size, sizeof (*table), by_id_compare_name_drive_part); + /* Mark duplicate names. */ for (unsigned i = 0; i < table_size; i++) { unsigned j = i + 1; @@ -619,12 +630,13 @@ get_by_id_table (by_id_entry * &table, fhandler_dev_disk::dev_disk_location loc) j++; if (j == i + 1) continue; - /* Duplicate(s) found, remove all entries with this name. */ - debug_printf ("removing duplicates %d-%d: '%s'", i, j - 1, table[i].name); - if (j < table_size) - memmove (table + i, table + j, (table_size - j) * sizeof (*table)); - table_size -= j - i; - i--; + /* Duplicate(s) found, append "#N" to all entries. This never + introduces new duplicates because '#' never occurs in the + original names. */ + debug_printf ("mark duplicates %u-%u of '%s'", i, j - 1, table[i].name); + size_t len = strlen (table[i].name); + for (unsigned k = i; k < j; k++) + __small_sprintf (table[k].name + len, "#%u", k - i); } debug_printf ("table_size: %d", table_size); From 0e961f582a315fd6f13b8e924f58af6057558348 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Thu, 23 Nov 2023 20:00:55 +0900 Subject: [PATCH 477/767] newlib: nl_langinfo: Fix a bug of time stuff. Previously, e.g. nl_langinfo(_NL_TIME_WMONTH_1) returns "February" due to the bug. Similarly, nl_langinfo(_NL_TIME_WWDAY_1) returns "Mon". This occurs because wide char month and weekday arrays are pointed off-by-one (e.g. the array wmon[12] is reffered as wmon[1-12] rather than wmon[0-11]). This patch fixes that. Fixes: d47d5b850bed ("Extend locale support to maintain wide char values of native strings") Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- newlib/libc/locale/nl_langinfo.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/newlib/libc/locale/nl_langinfo.c b/newlib/libc/locale/nl_langinfo.c index aaa1aef864..c34a7d1313 100644 --- a/newlib/libc/locale/nl_langinfo.c +++ b/newlib/libc/locale/nl_langinfo.c @@ -78,6 +78,7 @@ static struct _nl_item_t _NLITEM (ctype, woutdigits[8]), _NLITEM (ctype, woutdigits[9]), _NLITEM (time, codeset), + _NLITEM (time, wmon[0]), _NLITEM (time, wmon[1]), _NLITEM (time, wmon[2]), _NLITEM (time, wmon[3]), @@ -89,7 +90,7 @@ static struct _nl_item_t _NLITEM (time, wmon[9]), _NLITEM (time, wmon[10]), _NLITEM (time, wmon[11]), - _NLITEM (time, wmon[12]), + _NLITEM (time, wmonth[0]), _NLITEM (time, wmonth[1]), _NLITEM (time, wmonth[2]), _NLITEM (time, wmonth[3]), @@ -101,21 +102,20 @@ static struct _nl_item_t _NLITEM (time, wmonth[9]), _NLITEM (time, wmonth[10]), _NLITEM (time, wmonth[11]), - _NLITEM (time, wmonth[12]), + _NLITEM (time, wwday[0]), _NLITEM (time, wwday[1]), _NLITEM (time, wwday[2]), _NLITEM (time, wwday[3]), _NLITEM (time, wwday[4]), _NLITEM (time, wwday[5]), _NLITEM (time, wwday[6]), - _NLITEM (time, wwday[7]), + _NLITEM (time, wweekday[0]), _NLITEM (time, wweekday[1]), _NLITEM (time, wweekday[2]), _NLITEM (time, wweekday[3]), _NLITEM (time, wweekday[4]), _NLITEM (time, wweekday[5]), _NLITEM (time, wweekday[6]), - _NLITEM (time, wweekday[7]), _NLITEM (time, wX_fmt), _NLITEM (time, wx_fmt), _NLITEM (time, wc_fmt), From d5dcb484c705a214b30826c82b9fd8bf83772093 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 25 Nov 2023 18:07:10 +0100 Subject: [PATCH 478/767] Cygwin: lseek: check for file sparseness, not for mount point sparseness The code introducing the lseek(2) code for the GNU extensions SEEK_DATA and SEEK_HOLE accidentally checks if the mount point has the "sparse" flag set and, if not, emulates SEEK_DATA/SEEK_HOLE per the Linux specs. However, the mount point "sparse" flag only determines whether files should be made sparse or not. Files may be sparse independently of that, obviously. Fix that by checking for the FILE_ATTRIBUTE_SPARSE_FILE attribute instead. Fixes: edfa581d3c5a ("Cygwin: lseek: implement SEEK_DATA and SEEK_HOLE for files") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index cdef01a2da..a57ffcb864 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1140,7 +1140,7 @@ fhandler_base::lseek (off_t offset, int whence) set_errno (ENXIO); return -1; } - if (!pc.support_sparse ()) + if (!has_attribute (FILE_ATTRIBUTE_SPARSE_FILE)) { /* Default behaviour if sparse files are not supported: SEEK_DATA: seek to offset From fedd7fae77303ee3caf7c87510a03a9157deb06f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 25 Nov 2023 20:56:52 +0100 Subject: [PATCH 479/767] Cygwin: posix_fallocate: return ENODEV The fhandler method ftruncate returns either EISDIR if it has been called on directories, or EINVAL if called on files other than regular files. This matches what ftruncate(2) is supposed to return, but it doesn't match posix_fallocate(3), which is supposed to return ENODEV in both cases. To accomplish that, return ENODEV from fhandler_base::ftruncate() and convert it to EINVAL in ftruncate(2). In posix_fallocate(3), convert EISDIR to ENODEV. Fixes: 7636b58590621 ("* autoload.cc (NtSetInformationFile): Define.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 2 +- winsup/cygwin/release/3.4.10 | 3 +++ winsup/cygwin/syscalls.cc | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index a57ffcb864..3f0dc5f698 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1797,7 +1797,7 @@ fhandler_base::fadvise (off_t offset, off_t length, int advice) int fhandler_base::ftruncate (off_t length, bool allow_truncate) { - return EINVAL; + return ENODEV; } int diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index 758a6e071c..02f6885837 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -18,3 +18,6 @@ Bug Fixes - Align behaviour of rand(3) to ISO C. Adresses: https://cygwin.com/pipermail/cygwin/2023-November/254735.html + +- Fix posix_fallocate(3) return value in case of being called on + other than regular files. diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index e4b3dd2f3c..c3c17d604a 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3000,6 +3000,8 @@ posix_fallocate (int fd, off_t offset, off_t len) res = cfd->ftruncate (offset + len, false); else res = EBADF; + if (res == EISDIR) + res = ENODEV; } syscall_printf ("%R = posix_fallocate(%d, %D, %D)", res, fd, offset, len); return res; @@ -3015,6 +3017,8 @@ ftruncate (int fd, off_t length) res = cfd->ftruncate (length, true); if (res) { + if (res == ENODEV) + res = EINVAL; set_errno (res); res = -1; } From f3554bf8905bfca5fbe54e57a452196bd9499cea Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 26 Nov 2023 12:50:38 +0100 Subject: [PATCH 480/767] Cygwin: fhandler: rename ftruncate method to fallocate also, take mode flags parameter instead of just a bool. Introduce __FALLOC_FL_TRUNCATE mode flag as internal flag to indictae being called from ftruncate(2). This is in preparation of an upcoming change introducing the Linx-specific fallocate(2) call. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 2 +- winsup/cygwin/fhandler/disk_file.cc | 16 +++++++++------- winsup/cygwin/fhandler/pipe.cc | 4 ++-- winsup/cygwin/include/fcntl.h | 3 +++ winsup/cygwin/local_includes/fhandler.h | 8 ++++---- winsup/cygwin/syscalls.cc | 4 ++-- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index 3f0dc5f698..d859870cb4 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1795,7 +1795,7 @@ fhandler_base::fadvise (off_t offset, off_t length, int advice) } int -fhandler_base::ftruncate (off_t length, bool allow_truncate) +fhandler_base::fallocate (int mode, off_t offset, off_t length) { return ENODEV; } diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 245e9bb75d..51602f30f1 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -25,6 +25,7 @@ details. */ #include "devices.h" #include "ldap.h" #include +#include #include #define _LIBC @@ -1130,7 +1131,7 @@ fhandler_disk_file::fadvise (off_t offset, off_t length, int advice) } int -fhandler_disk_file::ftruncate (off_t length, bool allow_truncate) +fhandler_disk_file::fallocate (int mode, off_t offset, off_t length) { int res = 0; @@ -1152,17 +1153,18 @@ fhandler_disk_file::ftruncate (off_t length, bool allow_truncate) if (!NT_SUCCESS (status)) return geterrno_from_nt_status (status); - /* If called through posix_fallocate, silently succeed if length - is less than the file's actual length. */ - if (!allow_truncate && length < fsi.EndOfFile.QuadPart) + /* If called through posix_fallocate, silently succeed if + offset + length is less than the file's actual length. */ + if (mode == 0 && offset + length < fsi.EndOfFile.QuadPart) return 0; - feofi.EndOfFile.QuadPart = length; + feofi.EndOfFile.QuadPart = offset + length; /* Create sparse files only when called through ftruncate, not when called through posix_fallocate. */ - if (allow_truncate && pc.support_sparse () + if ((mode & __FALLOC_FL_TRUNCATE) && !has_attribute (FILE_ATTRIBUTE_SPARSE_FILE) - && length >= fsi.EndOfFile.QuadPart + (128 * 1024)) + && pc.support_sparse () + && offset + length >= fsi.EndOfFile.QuadPart + (128 * 1024)) { status = NtFsControlFile (get_handle (), NULL, NULL, NULL, &io, FSCTL_SET_SPARSE, NULL, 0, NULL, 0); diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index e72ee65ca8..1a97108b5d 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -247,9 +247,9 @@ fhandler_pipe::fadvise (off_t offset, off_t length, int advice) } int -fhandler_pipe::ftruncate (off_t length, bool allow_truncate) +fhandler_pipe::fallocate (int mode, off_t offset, off_t length) { - return allow_truncate ? EINVAL : ESPIPE; + return (mode & __FALLOC_FL_TRUNCATE) ? EINVAL : ESPIPE; } char * diff --git a/winsup/cygwin/include/fcntl.h b/winsup/cygwin/include/fcntl.h index ed396eab64..de64d4f7c0 100644 --- a/winsup/cygwin/include/fcntl.h +++ b/winsup/cygwin/include/fcntl.h @@ -40,9 +40,12 @@ details. */ #define POSIX_FADV_DONTNEED 4 #define POSIX_FADV_NOREUSE 5 +#define __FALLOC_FL_TRUNCATE 0x0001 /* internal */ + #ifdef __cplusplus extern "C" { #endif + extern int posix_fadvise (int, off_t, off_t, int); extern int posix_fallocate (int, off_t, off_t); #ifdef __cplusplus diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index ca685a6276..54e0c6e804 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -389,7 +389,7 @@ class fhandler_base virtual ssize_t fgetxattr (const char *, void *, size_t); virtual int fsetxattr (const char *, const void *, size_t, int); virtual int fadvise (off_t, off_t, int); - virtual int ftruncate (off_t, bool); + virtual int fallocate (int, off_t, off_t); virtual int link (const char *); virtual int utimens (const struct timespec *); virtual int fsync (); @@ -1222,7 +1222,7 @@ class fhandler_pipe: public fhandler_pipe_fifo int fstat (struct stat *buf); int fstatvfs (struct statvfs *buf); int fadvise (off_t, off_t, int); - int ftruncate (off_t, bool); + int fallocate (int, off_t, off_t); int init (HANDLE, DWORD, mode_t, int64_t); static int create (fhandler_pipe *[2], unsigned, int); static DWORD create (LPSECURITY_ATTRIBUTES, HANDLE *, HANDLE *, DWORD, @@ -1727,7 +1727,7 @@ class fhandler_disk_file: public fhandler_base ssize_t fgetxattr (const char *, void *, size_t); int fsetxattr (const char *, const void *, size_t, int); int fadvise (off_t, off_t, int); - int ftruncate (off_t, bool); + int fallocate (int, off_t, off_t); int link (const char *); int utimens (const struct timespec *); int fstatvfs (struct statvfs *buf); @@ -3413,7 +3413,7 @@ class fhandler_mqueue: public fhandler_disk_file ssize_t fgetxattr (const char *, void *, size_t) NO_IMPL; int fsetxattr (const char *, const void *, size_t, int) NO_IMPL; int fadvise (off_t, off_t, int) NO_IMPL; - int ftruncate (off_t, bool) NO_IMPL; + int fallocate (int, off_t, off_t) NO_IMPL; int link (const char *) NO_IMPL; int mkdir (mode_t) NO_IMPL; ssize_t pread (void *, size_t, off_t, void *aio = NULL) NO_IMPL; diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index c3c17d604a..b2e6ba16ca 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -2997,7 +2997,7 @@ posix_fallocate (int fd, off_t offset, off_t len) { cygheap_fdget cfd (fd); if (cfd >= 0) - res = cfd->ftruncate (offset + len, false); + res = cfd->fallocate (0, offset, len); else res = EBADF; if (res == EISDIR) @@ -3014,7 +3014,7 @@ ftruncate (int fd, off_t length) cygheap_fdget cfd (fd); if (cfd >= 0) { - res = cfd->ftruncate (length, true); + res = cfd->fallocate (__FALLOC_FL_TRUNCATE, 0, length); if (res) { if (res == ENODEV) From 23e9b5cf3c4ff4507eff8fb9fcf8d5cb15afc694 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 26 Nov 2023 15:41:41 +0100 Subject: [PATCH 481/767] Cygwin: fcntl.h: Use cdefs.h macros Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/fcntl.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/include/fcntl.h b/winsup/cygwin/include/fcntl.h index de64d4f7c0..1ef51e50c5 100644 --- a/winsup/cygwin/include/fcntl.h +++ b/winsup/cygwin/include/fcntl.h @@ -9,7 +9,9 @@ details. */ #ifndef _FCNTL_H #define _FCNTL_H +#include #include + #define O_NDELAY _FNDELAY /* F_LCK_MANDATORY: Request mandatory locks for this file descriptor. @@ -42,14 +44,11 @@ details. */ #define __FALLOC_FL_TRUNCATE 0x0001 /* internal */ -#ifdef __cplusplus -extern "C" { -#endif +__BEGIN_DECLS extern int posix_fadvise (int, off_t, off_t, int); extern int posix_fallocate (int, off_t, off_t); -#ifdef __cplusplus -} -#endif + +__END_DECLS #endif /* _FCNTL_H */ From e01c50c7b0a6c5d2a25feb02958d57902c25c141 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 26 Nov 2023 21:05:07 +0100 Subject: [PATCH 482/767] Cygwin: introduce fallocate(2) First cut of the new, Linux-specific fallocate(2) function. Do not add any functionality yet, except of basic handling of FALLOC_FL_KEEP_SIZE. Signed-off-by: Corinna Vinschen --- winsup/cygwin/cygwin.din | 1 + winsup/cygwin/fhandler/disk_file.cc | 41 ++++++++++++++++++++++---- winsup/cygwin/include/cygwin/version.h | 3 +- winsup/cygwin/include/fcntl.h | 14 ++++++++- winsup/cygwin/release/3.5.0 | 2 ++ winsup/cygwin/syscalls.cc | 34 +++++++++++++++++++++ winsup/doc/new-features.xml | 4 +++ 7 files changed, 92 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index d5e8f8c05e..9b76ce67a9 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -506,6 +506,7 @@ fabsf NOSIGFE fabsl NOSIGFE faccessat SIGFE facl SIGFE +fallocate SIGFE fchdir SIGFE fchmod SIGFE fchmodat SIGFE diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 51602f30f1..b49b25c71a 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -1153,15 +1153,46 @@ fhandler_disk_file::fallocate (int mode, off_t offset, off_t length) if (!NT_SUCCESS (status)) return geterrno_from_nt_status (status); - /* If called through posix_fallocate, silently succeed if - offset + length is less than the file's actual length. */ - if (mode == 0 && offset + length < fsi.EndOfFile.QuadPart) - return 0; + /* Never change file size if FALLOC_FL_KEEP_SIZE is specified. */ + if ((mode & FALLOC_FL_KEEP_SIZE) + && offset + length > fsi.EndOfFile.QuadPart) + { + if (offset > fsi.EndOfFile.QuadPart) /* no-op */ + return 0; + length = fsi.EndOfFile.QuadPart - offset; + } + mode &= ~FALLOC_FL_KEEP_SIZE; + + switch (mode) + { + case 0: + case __FALLOC_FL_TRUNCATE: + break; + case FALLOC_FL_PUNCH_HOLE: /* TODO */ + return EOPNOTSUPP; + break; + case FALLOC_FL_ZERO_RANGE: /* TODO */ + return EOPNOTSUPP; + break; + default: + return EINVAL; + } + + if (mode == 0) + { + /* If called through posix_fallocate, silently succeed if + offset + length is less than the file's actual length. */ + + /* TODO: If the file is sparse, POSIX requires to allocate + the holes within offset and offset + length. */ + if (offset + length < fsi.EndOfFile.QuadPart) + return 0; + } feofi.EndOfFile.QuadPart = offset + length; /* Create sparse files only when called through ftruncate, not when called through posix_fallocate. */ - if ((mode & __FALLOC_FL_TRUNCATE) + if (mode == __FALLOC_FL_TRUNCATE && !has_attribute (FILE_ATTRIBUTE_SPARSE_FILE) && pc.support_sparse () && offset + length >= fsi.EndOfFile.QuadPart + (128 * 1024)) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 833de646c5..c8177c2b17 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -483,12 +483,13 @@ details. */ posix_spawn_file_actions_addfchdir_np. 347: Add c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. 348: Add c8rtomb, mbrtoc. + 349: Add fallocate. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 348 +#define CYGWIN_VERSION_API_MINOR 349 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible changes are made to the shared diff --git a/winsup/cygwin/include/fcntl.h b/winsup/cygwin/include/fcntl.h index 1ef51e50c5..b38dfa50bc 100644 --- a/winsup/cygwin/include/fcntl.h +++ b/winsup/cygwin/include/fcntl.h @@ -42,12 +42,24 @@ details. */ #define POSIX_FADV_DONTNEED 4 #define POSIX_FADV_NOREUSE 5 -#define __FALLOC_FL_TRUNCATE 0x0001 /* internal */ +#if __GNU_VISIBLE +#define FALLOC_FL_PUNCH_HOLE 0x0001 +#define FALLOC_FL_ZERO_RANGE 0x0002 +#define FALLOC_FL_UNSHARE_RANGE 0x0004 +#define FALLOC_FL_COLLAPSE_RANGE 0x0008 +#define FALLOC_FL_INSERT_RANGE 0x0010 +#define FALLOC_FL_KEEP_SIZE 0x1000 +/* Internal flags */ +#define __FALLOC_FL_TRUNCATE 0x2000 +#endif __BEGIN_DECLS extern int posix_fadvise (int, off_t, off_t, int); extern int posix_fallocate (int, off_t, off_t); +#if __GNU_VISIBLE +extern int fallocate (int, int, off_t, off_t); +#endif __END_DECLS diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index aee21c972f..3b6df951d4 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -43,6 +43,8 @@ What's new: - New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. +- New API call: fallocate (Linux-specific). + - Implement OSS-based sound mixer device (/dev/mixer). What changed: diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index b2e6ba16ca..0e4c54bcfa 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -2987,6 +2987,40 @@ posix_fadvise (int fd, off_t offset, off_t len, int advice) return res; } +extern "C" int +fallocate (int fd, int mode, off_t offset, off_t len) +{ + int res = 0; + + /* First check mask of allowed flags */ + if (mode & ~(FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE + | FALLOC_FL_UNSHARE_RANGE | FALLOC_FL_COLLAPSE_RANGE + | FALLOC_FL_INSERT_RANGE | FALLOC_FL_KEEP_SIZE)) + res = EOPNOTSUPP; + /* Either FALLOC_FL_PUNCH_HOLE or FALLOC_FL_ZERO_RANGE, never both */ + else if ((mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) + == (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) + res = EOPNOTSUPP; + /* FALLOC_FL_PUNCH_HOLE must be ORed with FALLOC_FL_KEEP_SIZE */ + else if ((mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE)) + == FALLOC_FL_PUNCH_HOLE) + res = EOPNOTSUPP; + else if (offset < 0 || len == 0) + res = EINVAL; + else + { + cygheap_fdget cfd (fd); + if (cfd >= 0) + res = cfd->fallocate (mode, offset, len); + else + res = EBADF; + if (res == EISDIR) + res = ENODEV; + } + syscall_printf ("%R = posix_fallocate(%d, %D, %D)", res, fd, offset, len); + return 0; +} + extern "C" int posix_fallocate (int fd, off_t offset, off_t len) { diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 2c31a4accd..c5e6cdd7f2 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -74,6 +74,10 @@ posix_spawn_file_actions_addfchdir_np. New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. + +New API call: fallocate (Linux-specific). + + FIFOs now also work over NFS. From 7f9caa4a3698827010d9b478407d21dd58b8bca5 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 27 Nov 2023 21:14:49 +0100 Subject: [PATCH 483/767] Cygwin: open(2): reset sparseness on O_TRUNCated files open(2) implements O_TRUNC by just reducing the size of the file to 0, to make sure EAs stay available. Turns out, file sparseness is not removed this way either, so add code to do just that. Fixes: 603ef545bdbd ("* fhandler.cc (fhandler_base::open): Never open files with FILE_OVERWITE/FILE_OVERWRITE_IF.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 9 +++++++++ winsup/cygwin/release/3.4.10 | 3 +++ 2 files changed, 12 insertions(+) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index d859870cb4..b933662541 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -776,6 +776,15 @@ fhandler_base::open (int flags, mode_t mode) NtClose (fh); goto done; } + /* Drop sparseness */ + if (pc.file_attributes () & FILE_ATTRIBUTE_SPARSE_FILE) + { + FILE_SET_SPARSE_BUFFER fssb = { SetSparse: FALSE }; + status = NtFsControlFile (fh, NULL, NULL, NULL, &io, + FSCTL_SET_SPARSE, &fssb, sizeof fssb, NULL, 0); + if (NT_SUCCESS (status)) + pc.file_attributes (pc.file_attributes () & ~FILE_ATTRIBUTE_SPARSE_FILE); + } } set_handle (fh); diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index 02f6885837..632ffcd394 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -21,3 +21,6 @@ Bug Fixes - Fix posix_fallocate(3) return value in case of being called on other than regular files. + +- Reset sparseness in case open(2) has been called with O_CREAT|O_TRUNC on + sparse files. From 114f89caff7b9b62b0b12bc2c6d143daf47b8042 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 27 Nov 2023 21:17:12 +0100 Subject: [PATCH 484/767] Cygwin: fallocate(2): fix evaluating return value fallocate is not supposed to return an errno code, it has to return -1 and set errno. Fixes: dd90ede40510 ("Cygwin: introduce fallocate(2)") Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 0e4c54bcfa..b73391d8f8 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3017,8 +3017,13 @@ fallocate (int fd, int mode, off_t offset, off_t len) if (res == EISDIR) res = ENODEV; } + if (res) + { + set_errno (res); + res = -1; + } syscall_printf ("%R = posix_fallocate(%d, %D, %D)", res, fd, offset, len); - return 0; + return res; } extern "C" int From f64f3eced8e0f51753bc199f3ba96fab06a54848 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 27 Nov 2023 22:48:50 +0100 Subject: [PATCH 485/767] Cygwin: pwrite(2): sparsify file write(2) sparsifies a file after an lseek far enough beyond EOF. Let pwrite(2) sparsify as well if offset is far enough beyond EOF. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index b49b25c71a..c70afed49f 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -1724,6 +1724,7 @@ fhandler_disk_file::pwrite (void *buf, size_t count, off_t offset, void *aio) { NTSTATUS status; IO_STATUS_BLOCK io; + FILE_STANDARD_INFORMATION fsi; LARGE_INTEGER off = { QuadPart:offset }; HANDLE evt = aio ? (HANDLE) aiocb->aio_wincb.event : NULL; PIO_STATUS_BLOCK pio = aio ? (PIO_STATUS_BLOCK) &aiocb->aio_wincb : &io; @@ -1732,6 +1733,25 @@ fhandler_disk_file::pwrite (void *buf, size_t count, off_t offset, void *aio) if (prw_handle && (prw_handle_isasync != !!aio)) NtClose (prw_handle), prw_handle = NULL; + /* If the file system supports sparse files and the application is + writing beyond EOF spanning more than one sparsifiable chunk, + convert the file to a sparse file. */ + if (pc.support_sparse () + && !has_attribute (FILE_ATTRIBUTE_SPARSE_FILE) + && NT_SUCCESS (NtQueryInformationFile (get_handle (), + &io, &fsi, sizeof fsi, + FileStandardInformation)) + && offset >= fsi.EndOfFile.QuadPart + (128 * 1024)) + { + NTSTATUS status; + status = NtFsControlFile (get_handle (), NULL, NULL, NULL, + &io, FSCTL_SET_SPARSE, NULL, 0, NULL, 0); + if (NT_SUCCESS (status)) + pc.file_attributes (pc.file_attributes () + | FILE_ATTRIBUTE_SPARSE_FILE); + debug_printf ("%y = NtFsControlFile(%S, FSCTL_SET_SPARSE)", + status, pc.get_nt_native_path ()); + } if (!prw_handle && prw_open (true, aio)) goto non_atomic; status = NtWriteFile (prw_handle, evt, NULL, NULL, pio, buf, count, From 65831f88d6c4cd943969b5ee531bc6162c7b0f60 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 28 Nov 2023 10:42:52 +0100 Subject: [PATCH 486/767] Cygwin: fallocate(2): handle FALLOC_FL_PUNCH_HOLE and FALLOC_FL_ZERO_RANGE Split fhandler_disk_file::fallocate into multiple methods, each implementing a different aspect of fallocate(2), thus adding FALLOC_FL_PUNCH_HOLE and FALLOC_FL_ZERO_RANGE handling. For more correctly implementing posix_fallocate(3) semantics, make sure to re-allocate holes in the given range if the file is sparse. While at it, change the way checking when to make a file sparse. The rule is now, make file sparse if the hole created by the action spans at least one sparse block, taking the allocation granularity of sparse files into account. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/base.cc | 10 +- winsup/cygwin/fhandler/disk_file.cc | 337 +++++++++++++++++++----- winsup/cygwin/include/fcntl.h | 1 + winsup/cygwin/local_includes/fhandler.h | 14 + winsup/cygwin/local_includes/ntdll.h | 8 + 5 files changed, 302 insertions(+), 68 deletions(-) diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index b933662541..f1ad375228 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -896,6 +896,9 @@ fhandler_base::write (const void *ptr, size_t len) did_lseek (false); /* don't do it again */ + /* If the file system supports sparse files and the application is + writing after a long seek beyond EOF spanning more than one + sparsifiable chunk, convert the file to a sparse file. */ if (!(get_flags () & O_APPEND) && !has_attribute (FILE_ATTRIBUTE_SPARSE_FILE) && NT_SUCCESS (NtQueryInformationFile (get_output_handle (), @@ -904,12 +907,9 @@ fhandler_base::write (const void *ptr, size_t len) && NT_SUCCESS (NtQueryInformationFile (get_output_handle (), &io, &fpi, sizeof fpi, FilePositionInformation)) - && fpi.CurrentByteOffset.QuadPart - >= fsi.EndOfFile.QuadPart + (128 * 1024)) + && span_sparse_chunk (fpi.CurrentByteOffset.QuadPart, + fsi.EndOfFile.QuadPart)) { - /* If the file system supports sparse files and the application - is writing after a long seek beyond EOF, convert the file to - a sparse file. */ NTSTATUS status; status = NtFsControlFile (get_output_handle (), NULL, NULL, NULL, &io, FSCTL_SET_SPARSE, NULL, 0, NULL, 0); diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index c70afed49f..ce15e41a4e 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -1131,89 +1131,300 @@ fhandler_disk_file::fadvise (off_t offset, off_t length, int advice) } int -fhandler_disk_file::fallocate (int mode, off_t offset, off_t length) +fhandler_disk_file::falloc_allocate (int mode, off_t offset, off_t length) { - int res = 0; - - if (length < 0 || !get_handle ()) - res = EINVAL; - else if (pc.isdir ()) - res = EISDIR; - else if (!(get_access () & GENERIC_WRITE)) - res = EBADF; - else - { - NTSTATUS status; - IO_STATUS_BLOCK io; - FILE_STANDARD_INFORMATION fsi; - FILE_END_OF_FILE_INFORMATION feofi; - - status = NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, - FileStandardInformation); - if (!NT_SUCCESS (status)) - return geterrno_from_nt_status (status); - - /* Never change file size if FALLOC_FL_KEEP_SIZE is specified. */ - if ((mode & FALLOC_FL_KEEP_SIZE) - && offset + length > fsi.EndOfFile.QuadPart) - { - if (offset > fsi.EndOfFile.QuadPart) /* no-op */ - return 0; - length = fsi.EndOfFile.QuadPart - offset; - } - mode &= ~FALLOC_FL_KEEP_SIZE; - - switch (mode) - { - case 0: - case __FALLOC_FL_TRUNCATE: - break; - case FALLOC_FL_PUNCH_HOLE: /* TODO */ - return EOPNOTSUPP; - break; - case FALLOC_FL_ZERO_RANGE: /* TODO */ - return EOPNOTSUPP; - break; - default: - return EINVAL; - } + NTSTATUS status; + IO_STATUS_BLOCK io; + FILE_STANDARD_INFORMATION fsi; + FILE_END_OF_FILE_INFORMATION feofi; + FILE_ALLOCATION_INFORMATION fai = { 0 }; - if (mode == 0) + /* Fetch EOF */ + status = NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, + FileStandardInformation); + if (!NT_SUCCESS (status)) + return geterrno_from_nt_status (status); + + switch (mode) + { + case 0: + /* For posix_fallocate(3), truncating the file is a no-op. However, + for sparse files we still have to allocate the blocks within + offset and offset + length which are currently in holes, due to + the following POSIX requirement: + "If posix_fallocate() returns successfully, subsequent writes to + the specified file data shall not fail due to the lack of free + space on the file system storage media." */ + if (offset + length <= fsi.EndOfFile.QuadPart) { - /* If called through posix_fallocate, silently succeed if - offset + length is less than the file's actual length. */ - - /* TODO: If the file is sparse, POSIX requires to allocate - the holes within offset and offset + length. */ - if (offset + length < fsi.EndOfFile.QuadPart) + if (!has_attribute (FILE_ATTRIBUTE_SPARSE_FILE)) return 0; + feofi.EndOfFile.QuadPart = fsi.EndOfFile.QuadPart; } + else + feofi.EndOfFile.QuadPart = offset + length; + break; + case __FALLOC_FL_TRUNCATE: + /* For ftruncate(2), offset is 0. Just use length as is. */ + feofi.EndOfFile.QuadPart = length; - feofi.EndOfFile.QuadPart = offset + length; - /* Create sparse files only when called through ftruncate, not when - called through posix_fallocate. */ - if (mode == __FALLOC_FL_TRUNCATE + /* Make file sparse only when called through ftruncate and the mount + mode supports sparse files. Also, make sure that the new region + actually spans over at least one sparsifiable chunk. */ + if (pc.support_sparse () && !has_attribute (FILE_ATTRIBUTE_SPARSE_FILE) - && pc.support_sparse () - && offset + length >= fsi.EndOfFile.QuadPart + (128 * 1024)) + && span_sparse_chunk (feofi.EndOfFile.QuadPart, + fsi.EndOfFile.QuadPart)) { status = NtFsControlFile (get_handle (), NULL, NULL, NULL, &io, FSCTL_SET_SPARSE, NULL, 0, NULL, 0); if (NT_SUCCESS (status)) pc.file_attributes (pc.file_attributes () - | FILE_ATTRIBUTE_SPARSE_FILE); - syscall_printf ("%y = NtFsControlFile(%S, FSCTL_SET_SPARSE)", - status, pc.get_nt_native_path ()); + | FILE_ATTRIBUTE_SPARSE_FILE); + debug_printf ("%y = NtFsControlFile(%S, FSCTL_SET_SPARSE)", + status, pc.get_nt_native_path ()); } + break; + case FALLOC_FL_KEEP_SIZE: + /* Keep track of the allocation size for overallocation below. + Note that overallocation in Windows is only temporary! + As soon as the last open handle to the file is closed, the + overallocation gets removed by the system. Also, overallocation + for sparse files fails silently, so just don't bother. */ + if (offset + length > fsi.EndOfFile.QuadPart + && !has_attribute (FILE_ATTRIBUTE_SPARSE_FILE)) + fai.AllocationSize.QuadPart = offset + length; + + feofi.EndOfFile.QuadPart = fsi.EndOfFile.QuadPart; + break; + } + + /* Now set the new EOF */ + if (feofi.EndOfFile.QuadPart != fsi.EndOfFile.QuadPart) + { status = NtSetInformationFile (get_handle (), &io, &feofi, sizeof feofi, FileEndOfFileInformation); if (!NT_SUCCESS (status)) - res = geterrno_from_nt_status (status); + return geterrno_from_nt_status (status); + } + + /* If called via fallocate(2) or posix_fallocate(3), allocate blocks in + sparse file holes. */ + if (mode != __FALLOC_FL_TRUNCATE + && length + && has_attribute (FILE_ATTRIBUTE_SPARSE_FILE)) + { + int res = falloc_zero_range (mode | __FALLOC_FL_ZERO_HOLES, + offset, length); + if (res) + return res; + } + + /* Last but not least, set the new allocation size, if any */ + if (fai.AllocationSize.QuadPart) + { + /* This is not fatal. Just note a failure in the debug output. */ + status = NtSetInformationFile (get_handle (), &io, + &fai, sizeof fai, + FileAllocationInformation); + if (!NT_SUCCESS (status)) + debug_printf ("%y = NtSetInformationFile(%S, " + "FileAllocationInformation)", + status, pc.get_nt_native_path ()); + } + + return 0; +} + +int +fhandler_disk_file::falloc_punch_hole (off_t offset, off_t length) +{ + NTSTATUS status; + IO_STATUS_BLOCK io; + FILE_STANDARD_INFORMATION fsi; + FILE_ZERO_DATA_INFORMATION fzi; + + /* Fetch EOF */ + status = NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, + FileStandardInformation); + if (!NT_SUCCESS (status)) + return geterrno_from_nt_status (status); + + if (offset > fsi.EndOfFile.QuadPart) /* no-op */ + return 0; + + if (offset + length > fsi.EndOfFile.QuadPart) + length = fsi.EndOfFile.QuadPart - offset; + + /* If the file isn't sparse yet, make it so. */ + if (!has_attribute (FILE_ATTRIBUTE_SPARSE_FILE)) + { + status = NtFsControlFile (get_handle (), NULL, NULL, NULL, &io, + FSCTL_SET_SPARSE, NULL, 0, NULL, 0); + debug_printf ("%y = NtFsControlFile(%S, FSCTL_SET_SPARSE)", + status, pc.get_nt_native_path ()); + if (!NT_SUCCESS (status)) + return geterrno_from_nt_status (status); + pc.file_attributes (pc.file_attributes () | FILE_ATTRIBUTE_SPARSE_FILE); + } + + /* Now punch a hole. For once, FSCTL_SET_ZERO_DATA does it exactly as per + fallocate(FALLOC_FL_PUNCH_HOLE) specs. */ + fzi.FileOffset.QuadPart = offset; + fzi.BeyondFinalZero.QuadPart = offset + length; + status = NtFsControlFile (get_handle (), NULL, NULL, NULL, &io, + FSCTL_SET_ZERO_DATA, &fzi, sizeof fzi, NULL, 0); + if (!NT_SUCCESS (status)) + return geterrno_from_nt_status (status); + + return 0; +} + +int +fhandler_disk_file::falloc_zero_range (int mode, off_t offset, off_t length) +{ + NTSTATUS status; + IO_STATUS_BLOCK io; + FILE_STANDARD_INFORMATION fsi; + FILE_ALLOCATED_RANGE_BUFFER inp, *out = NULL; + OBJECT_ATTRIBUTES attr; + HANDLE zo_handle; + tmp_pathbuf tp; + size_t data_chunk_count = 0; + + /* Fetch EOF */ + status = NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, + FileStandardInformation); + if (!NT_SUCCESS (status)) + return geterrno_from_nt_status (status); + + /* offset and length must not exceed EOF with FALLOC_FL_KEEP_SIZE */ + if (mode & FALLOC_FL_KEEP_SIZE) + { + if (offset > fsi.EndOfFile.QuadPart) /* no-op */ + return 0; + + if (offset + length > fsi.EndOfFile.QuadPart) + length = fsi.EndOfFile.QuadPart - offset; + } + + /* If the file is sparse, fetch the data ranges within the file + to be able to recognize holes. */ + if (has_attribute (FILE_ATTRIBUTE_SPARSE_FILE)) + { + inp.FileOffset.QuadPart = offset; + inp.Length.QuadPart = length; + out = (FILE_ALLOCATED_RANGE_BUFFER *) tp.t_get (); + status = NtFsControlFile (get_handle (), NULL, NULL, NULL, + &io, FSCTL_QUERY_ALLOCATED_RANGES, + &inp, sizeof inp, out, 2 * NT_MAX_PATH); + if (NT_ERROR (status)) + out = NULL; + else + data_chunk_count = io.Information / sizeof *out; + } + + /* Re-open the file and use this handle ever after, so as not to + move the file pointer of the original file object. */ + status = NtOpenFile (&zo_handle, SYNCHRONIZE | GENERIC_WRITE, + pc.init_reopen_attr (attr, get_handle ()), &io, + FILE_SHARE_VALID_FLAGS, get_options ()); + if (!NT_SUCCESS (status)) + return geterrno_from_nt_status (status); + + /* FILE_SPARSE_GRANULARITY == 2 * NT_MAX_PATH ==> fits exactly */ + char *nullbuf = tp.t_get (); + memset (nullbuf, 0, FILE_SPARSE_GRANULARITY); + int res = 0; + + /* Split range into chunks of size FILE_SPARSE_GRANULARITY and handle + them according to being data or hole */ + LARGE_INTEGER off = { QuadPart:offset }; + size_t start_idx = 0; + while (length > 0) + { + off_t chunk_len; + bool in_data = true; + + if (off.QuadPart % FILE_SPARSE_GRANULARITY) /* First block */ + chunk_len = roundup2 (off.QuadPart, FILE_SPARSE_GRANULARITY) - off.QuadPart; + else + chunk_len = FILE_SPARSE_GRANULARITY; + if (chunk_len > length) /* First or last block */ + chunk_len = length; + + /* Check if the current chunk is within data or hole */ + if (has_attribute (FILE_ATTRIBUTE_SPARSE_FILE) + && off.QuadPart < fsi.EndOfFile.QuadPart) + { + in_data = false; + for (size_t idx = start_idx; idx < data_chunk_count; ++idx) + if (off.QuadPart >= out[idx].FileOffset.QuadPart) + { + /* Skip entries with lower start address next time. */ + start_idx = idx; + if (off.QuadPart < out[idx].FileOffset.QuadPart + + out[idx].Length.QuadPart) + { + in_data = true; + break; + } + } + } + + /* Eventually, write zeros into the block. Completely zero out data + blocks, just write a single zero to former holes in sparse files. + If __FALLOC_FL_ZERO_HOLES has been specified, only write to holes. */ + if (!(mode & __FALLOC_FL_ZERO_HOLES) || !in_data) + { + status = NtWriteFile (zo_handle, NULL, NULL, NULL, &io, nullbuf, + in_data ? chunk_len : 1, &off, NULL); + if (!NT_SUCCESS (status)) + { + res = geterrno_from_nt_status (status); + break; + } + } + + off.QuadPart += chunk_len; + length -= chunk_len; } + + NtClose (zo_handle); return res; } +int +fhandler_disk_file::fallocate (int mode, off_t offset, off_t length) +{ + if (length < 0 || !get_handle ()) + return EINVAL; + if (pc.isdir ()) + return EISDIR; + if (!(get_access () & GENERIC_WRITE)) + return EBADF; + + switch (mode) + { + case 0: + case __FALLOC_FL_TRUNCATE: + case FALLOC_FL_KEEP_SIZE: + return falloc_allocate (mode, offset, length); + case FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE: + /* Only if the filesystem supports it... */ + if (!(pc.fs_flags () & FILE_SUPPORTS_SPARSE_FILES)) + return EOPNOTSUPP; + return falloc_punch_hole (offset, length); + case FALLOC_FL_ZERO_RANGE: + case FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE: + return falloc_zero_range (mode, offset, length); + default: + break; + } + return EINVAL; +} + int fhandler_disk_file::link (const char *newpath) { @@ -1741,7 +1952,7 @@ fhandler_disk_file::pwrite (void *buf, size_t count, off_t offset, void *aio) && NT_SUCCESS (NtQueryInformationFile (get_handle (), &io, &fsi, sizeof fsi, FileStandardInformation)) - && offset >= fsi.EndOfFile.QuadPart + (128 * 1024)) + && span_sparse_chunk (offset, fsi.EndOfFile.QuadPart)) { NTSTATUS status; status = NtFsControlFile (get_handle (), NULL, NULL, NULL, diff --git a/winsup/cygwin/include/fcntl.h b/winsup/cygwin/include/fcntl.h index b38dfa50bc..340aed4402 100644 --- a/winsup/cygwin/include/fcntl.h +++ b/winsup/cygwin/include/fcntl.h @@ -51,6 +51,7 @@ details. */ #define FALLOC_FL_KEEP_SIZE 0x1000 /* Internal flags */ #define __FALLOC_FL_TRUNCATE 0x2000 +#define __FALLOC_FL_ZERO_HOLES 0x4000 #endif __BEGIN_DECLS diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 54e0c6e804..1dc02608ba 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -14,6 +14,7 @@ details. */ #include #include #include +#include /* It appears that 64K is the block size used for buffered I/O on NT. Using this blocksize in read/write calls in the application results @@ -37,6 +38,15 @@ details. */ ERROR_NOT_ENOUGH_MEMORY occurs in win7 if this value is used. */ #define INREC_SIZE 2048 +/* Helper function to allow checking if some offset in a file is so far + beyond EOF, that at least one sparse chunk fits into the span. */ +inline bool +span_sparse_chunk (off_t new_pos, off_t old_eof) +{ + return roundup2 (old_eof, FILE_SPARSE_GRANULARITY) + FILE_SPARSE_GRANULARITY + <= rounddown (new_pos, FILE_SPARSE_GRANULARITY); +} + extern const char *windows_device_names[]; extern struct __cygwin_perfile *perfile_table; #define __fmode (*(user_data->fmode_ptr)) @@ -1708,6 +1718,10 @@ class fhandler_disk_file: public fhandler_base uint64_t fs_ioc_getflags (); int fs_ioc_setflags (uint64_t); + falloc_allocate (int, off_t, off_t); + falloc_punch_hole (off_t, off_t); + falloc_zero_range (int, off_t, off_t); + public: fhandler_disk_file (); fhandler_disk_file (path_conv &pc); diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index a1a9f7f8d1..a9ccd16a92 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -45,6 +45,9 @@ extern GUID __cygwin_socket_guid; #define FILE_WRITE_TO_END_OF_FILE (-1LL) #define FILE_USE_FILE_POINTER_POSITION (-2LL) +/* Sparsification granularity on NTFS. */ +#define FILE_SPARSE_GRANULARITY (64 * 1024) + /* Device Characteristics. */ #define FILE_REMOVABLE_MEDIA 0x00000001 #define FILE_READ_ONLY_DEVICE 0x00000002 @@ -390,6 +393,11 @@ typedef struct _FILE_ALL_INFORMATION { // 18 FILE_NAME_INFORMATION NameInformation; } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION; +typedef struct _FILE_ALLOCATION_INFORMATION // 19 +{ + LARGE_INTEGER AllocationSize; +} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION; + typedef struct _FILE_END_OF_FILE_INFORMATION // 20 { LARGE_INTEGER EndOfFile; From dab15f6740ff73e8b17b7ddddcbb678895a916a2 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 15 Oct 2023 15:14:13 +0545 Subject: [PATCH 487/767] newlib: filter out versions from newlib.h to simplify autoreconf We've been manually editing newlib.hin after generating it with autoheader to drop the version defines that we keep in the separate _newlib_version.h header. This is confusing for people, and is an easy source of mistakes/errors. Since we're already running sed on newlib.h during configure to filter out defines we don't want to expose, add the version macros there too. This way we don't have to manually edit newlib.hin. This simplifies the autoreconf step in exchange for a slightly more complicated configure+sed step, but seems worth the trade-off. --- newlib/configure | 2 +- newlib/configure.ac | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/newlib/configure b/newlib/configure index 0585e0ee8b..b21d9bf458 100755 --- a/newlib/configure +++ b/newlib/configure @@ -9269,7 +9269,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in - "newlib.h":H) sed -i.tmp -e '/^#define [^_]/d' -e '/^\/\* #undef [^_]/d' newlib.h && rm -f newlib.h.tmp ;; + "newlib.h":H) sed -i.tmp -E -e '/^#define [^_]/d' -e '/^\/\* #undef [^_]/d' -e '/_NEWLIB_VERSION|__NEWLIB_(MINOR|PATCHLEVEL)__|__NEWLIB__/d' newlib.h && rm -f newlib.h.tmp ;; "default-1":C) # Only add multilib support code if we just rebuilt the top-level # Makefile. diff --git a/newlib/configure.ac b/newlib/configure.ac index 94242c082d..55e5a94468 100644 --- a/newlib/configure.ac +++ b/newlib/configure.ac @@ -8,8 +8,11 @@ dnl Since we can't control what defines autoheader picks up (various autoconf dnl macros will add their own), filter out all the ones w/out a _ prefix. All dnl the ones we want to export use a _ prefix, and all the rest we don't want dnl to export as it'll pollute the namespace of newlib users. +dnl We also filter out version defines that we want in _newlib_version.h. dnl NB: newlib.h must be the first AC_CONFIG_HEADERS call for autoheader. -AC_CONFIG_HEADERS([newlib.h:newlib.hin], [sed -i.tmp -e '/^#define [^_]/d' -e '/^\/\* #undef [^_]/d' newlib.h && rm -f newlib.h.tmp]) +AC_CONFIG_HEADERS( + [newlib.h:newlib.hin], + [sed -i.tmp -E -e '/^#define [^_]/d' -e '/^\/\* #undef [^_]/d' -e '/_NEWLIB_VERSION|__NEWLIB_(MINOR|PATCHLEVEL)__|__NEWLIB__/d' newlib.h && rm -f newlib.h.tmp]) AH_TOP([/* NB: The contents are filtered before being installed. */ #ifndef __NEWLIB_H__ From 5f15d7c5817b07a6b18cbab17342c95cb7b42be4 Mon Sep 17 00:00:00 2001 From: Kuan-Wei Chiu Date: Wed, 29 Nov 2023 11:57:14 +0800 Subject: [PATCH 488/767] RISC-V: Fix timeval conversion in _gettimeofday() Replace multiplication with division for microseconds calculation from nanoseconds in _gettimeofday function. Signed-off-by: Kuan-Wei Chiu --- libgloss/riscv/sys_gettimeofday.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libgloss/riscv/sys_gettimeofday.c b/libgloss/riscv/sys_gettimeofday.c index 81bea8e556..5379a89634 100644 --- a/libgloss/riscv/sys_gettimeofday.c +++ b/libgloss/riscv/sys_gettimeofday.c @@ -23,7 +23,7 @@ _gettimeofday(struct timeval *tp, void *tzp) int rv; rv = syscall_errno (SYS_clock_gettime64, 2, 0, (long)&ts64, 0, 0, 0, 0); tp->tv_sec = ts64.tv_sec; - tp->tv_usec = ts64.tv_nsec * 1000; + tp->tv_usec = ts64.tv_nsec / 1000; return rv; #else return syscall_errno (SYS_gettimeofday, 1, tp, 0, 0, 0, 0, 0); From 127166f7070f67a3b322e72119df8a547fd1f85d Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 24 Nov 2023 16:17:05 +0000 Subject: [PATCH 489/767] Cygwin: Add '--names-only' flag to cygcheck Add '--names-only' flag to cygcheck, to output just the bare package names. --- winsup/doc/utils.xml | 11 +++++++---- winsup/utils/mingw/cygcheck.cc | 18 +++++++++++++----- winsup/utils/mingw/dump_setup.cc | 17 +++++++++++------ 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 0390db20fd..ad17c97966 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -135,6 +135,7 @@ cygcheck -c -d + -n PACKAGE @@ -201,7 +202,8 @@ At least one command option or a PROGRAM is required, as shown above. PROGRAM list library (DLL) dependencies of PROGRAM -c, --check-setup show installed version of PACKAGE and verify integrity (or for all installed packages if none specified) - -d, --dump-only just list packages, do not verify (with -c) + -d, --dump-only do not verify packages (with -c) + -n, --names-only just list package names (implies -c -d) -s, --sysinfo produce diagnostic system information (implies -c -d) -r, --registry also scan registry for Cygwin settings (with -s) -k, --keycheck perform a keyboard check session (must be run from a @@ -251,7 +253,7 @@ Notes: dealing with Cygwin programs. If you are familiar with dpkg or rpm, cygcheck is similar in many ways. (The major - difference is that setup.exe handles installing and + difference is that setup handles installing and uninstalling packages; see for more information.) The -c option checks the version and status of @@ -260,11 +262,12 @@ Notes: with no arguments it lists all packages. A package will be marked Incomplete if files originally installed are no longer present. The best thing to do in that situation is reinstall the package - with setup.exe. To see which files are missing, use + with setup. To see which files are missing, use the -v option. If you do not need to know the status of each package and want cygcheck to run faster, add the -d option and cygcheck will - only output the name and version for each package. + only output the name and version for each package. Add the + -n option to output only the names of packages. If you list one or more programs on the command line, cygcheck will diagnose the runtime environment of that program or programs, providing the names of DLL files on which the diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 9d6f192037..1dde2ecbab 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -55,6 +55,7 @@ int givehelp = 0; int keycheck = 0; int check_setup = 0; int dump_only = 0; +int names_only = 0; int find_package = 0; int list_package = 0; int grep_packages = 0; @@ -84,7 +85,7 @@ typedef __int64 longlong; #endif /* In dump_setup.cc */ -void dump_setup (int, char **, bool); +void dump_setup (int, char **, bool, bool); void package_find (int, char **); void package_list (int, char **); /* In bloda.cc */ @@ -2913,7 +2914,8 @@ At least one command option or a PROGRAM is required, as shown above.\n\ PROGRAM list library (DLL) dependencies of PROGRAM\n\ -c, --check-setup show installed version of PACKAGE and verify integrity\n\ (or for all installed packages if none specified)\n\ - -d, --dump-only just list packages, do not verify (with -c)\n\ + -d, --dump-only do not verify packages (with -c)\n\ + -n, --names-only just list package names (implies -c -d)\n\ -s, --sysinfo produce diagnostic system information (implies -c)\n\ -r, --registry also scan registry for Cygwin settings (with -s)\n\ -k, --keycheck perform a keyboard check session (must be run from a\n\ @@ -2962,6 +2964,7 @@ Notes:\n\ struct option longopts[] = { {"check-setup", no_argument, NULL, 'c'}, {"dump-only", no_argument, NULL, 'd'}, + {"names-only", no_argument, NULL, 'n'}, {"sysinfo", no_argument, NULL, 's'}, {"registry", no_argument, NULL, 'r'}, {"verbose", no_argument, NULL, 'v'}, @@ -2985,7 +2988,7 @@ struct option longopts[] = { {0, no_argument, NULL, 0} }; -static char opts[] = "cdsrvkfliephV"; +static char opts[] = "cdnsrvkfliephV"; static void print_version () @@ -3093,6 +3096,11 @@ main (int argc, char **argv) case 'd': dump_only = 1; break; + case 'n': + check_setup = 1; + dump_only = 1; + names_only = 1; + break; case 'r': registry = 1; break; @@ -3205,7 +3213,7 @@ main (int argc, char **argv) } if (check_setup) - dump_setup (verbose, argv, !dump_only); + dump_setup (verbose, argv, !dump_only, names_only); else if (find_package) package_find (verbose, argv); else if (list_package) @@ -3224,7 +3232,7 @@ main (int argc, char **argv) if (!check_setup) { puts (""); - dump_setup (verbose, NULL, !dump_only); + dump_setup (verbose, NULL, !dump_only, FALSE); } if (!givehelp) diff --git a/winsup/utils/mingw/dump_setup.cc b/winsup/utils/mingw/dump_setup.cc index 06aa06f812..050679a0d3 100644 --- a/winsup/utils/mingw/dump_setup.cc +++ b/winsup/utils/mingw/dump_setup.cc @@ -466,11 +466,13 @@ get_installed_packages (char **argv, size_t *count) } void -dump_setup (int verbose, char **argv, bool check_files) +dump_setup (int verbose, char **argv, bool check_files, bool names_only) { pkgver *packages = get_installed_packages (argv); - puts ("Cygwin Package Information"); + if (!names_only) + puts ("Cygwin Package Information"); + if (packages == NULL) { puts ("No setup information found"); @@ -484,12 +486,15 @@ dump_setup (int verbose, char **argv, bool check_files) puts (""); } - printf ("%-*s %-*s%s\n", package_len, "Package", - check_files ? version_len : 7, "Version", - check_files ? " Status" : ""); + if (!names_only) + printf ("%-*s %-*s%s\n", package_len, "Package", + check_files ? version_len : 7, "Version", + check_files ? " Status" : ""); for (int i = 0; packages[i].name; i++) { - if (check_files) + if (names_only) + printf ("%s\n", packages[i].name); + else if (check_files) printf ("%-*s %-*s%s\n", package_len, packages[i].name, version_len, packages[i].ver, check_package_files (verbose, packages[i].name) From 013de6b097feb94b58386a2a51c32ecab5e80db7 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 30 Nov 2023 21:14:48 +0100 Subject: [PATCH 490/767] Cygwin: revert autoloading of DiscardVirtualMemory Commit a3ae2a734892 ("Cygwin: don't autoload some kernel32 functions") erroneously removed DiscardVirtualMemory from the list of autloaded functions. DiscardVirtualMemory is not available on Windows 8.1. Fixes: a3ae2a734892 ("Cygwin: don't autoload some kernel32 functions") Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index c8909caff4..c1a124c1d1 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -465,6 +465,7 @@ LoadDLLfunc (GetUdpTable, iphlpapi) LoadDLLfunc (if_indextoname, iphlpapi) LoadDLLfunc (if_nametoindex, iphlpapi) +LoadDLLfuncEx2 (DiscardVirtualMemory, kernel32, 1, 127) LoadDLLfuncEx (ClosePseudoConsole, kernel32, 1) LoadDLLfuncEx (CreatePseudoConsole, kernel32, 1) LoadDLLfuncEx (IsWow64Process2, kernel32, 1) From f816787c57b340da0964d6d4209ad18cd8795e14 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 30 Nov 2023 22:11:26 +0100 Subject: [PATCH 491/767] Cygwin: ntdll.h: add missing POBJECT_NAME_INFORMATION Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/ntdll.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index a9ccd16a92..484523bbbc 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -1244,7 +1244,7 @@ typedef struct _OBJECT_BASIC_INFORMATION typedef struct _OBJECT_NAME_INFORMATION { UNICODE_STRING Name; -} OBJECT_NAME_INFORMATION; +} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; typedef struct _DIRECTORY_BASIC_INFORMATION { From 61f49ada90b2541925d56183e91e7d57aad1547a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 30 Nov 2023 22:12:13 +0100 Subject: [PATCH 492/767] Cygwin: ntdll.h: add missing NtQueryVolumeInformationFile definitions In preparation of using the FileFsSectorSizeInformation info class, add a couple of missing definitions. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/ntdll.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index 484523bbbc..9605784e32 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -59,6 +59,13 @@ extern GUID __cygwin_socket_guid; #define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080 #define FILE_DEVICE_SECURE_OPEN 0x00000100 +/* Sector Size Information Flags */ +#define SSINFO_FLAGS_ALIGNED_DEVICE 0x00000001 +#define SSINFO_FLAGS_PARTITION_ALIGNED_ON_DEVICE 0x00000002 +#define SSINFO_FLAGS_NO_SEEK_PENALTY 0x00000004 +#define SSINFO_FLAGS_TRIM_ENABLED 0x00000008 +#define SSINFO_FLAGS_BYTE_ADDRESSABLE 0x00000010 + /* Lock type in NtLockVirtualMemory/NtUnlockVirtualMemory call. */ #define MAP_PROCESS 1 #define MAP_SYSTEM 2 @@ -1205,6 +1212,21 @@ typedef struct _FILE_FS_OBJECTID_INFORMATION UCHAR ExtendedInfo[48]; } FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION; +typedef struct _FILE_FS_SECTOR_SIZE_INFORMATION +{ + ULONG LogicalBytesPerSector; + ULONG PhysicalBytesPerSectorForAtomicity; + ULONG PhysicalBytesPerSectorForPerformance; + ULONG FileSystemEffectivePhysicalBytesPerSectorForAtomicity; + ULONG Flags; + ULONG ByteOffsetForSectorAlignment; + ULONG ByteOffsetForPartitionAlignment; +} FILE_FS_SECTOR_SIZE_INFORMATION, *PFILE_FS_SECTOR_SIZE_INFORMATION; + +typedef struct _FILE_FS_VOLUME_FLAGS_INFORMATION { + ULONG Flags; +} FILE_FS_VOLUME_FLAGS_INFORMATION, *PFILE_FS_VOLUME_FLAGS_INFORMATION; + typedef enum _FSINFOCLASS { FileFsVolumeInformation = 1, FileFsLabelInformation, @@ -1215,6 +1237,11 @@ typedef enum _FSINFOCLASS { FileFsFullSizeInformation, FileFsObjectIdInformation, FileFsDriverPathInformation, + FileFsVolumeFlagsInformation, + FileFsSectorSizeInformation, + FileFsDataCopyInformation, + FileFsMetadataSizeInformation, + FileFsFullSizeInformationEx, FileFsMaximumInformation } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; From 8b01c5d6903fbcbb14c52db45c12494b53493c5a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 30 Nov 2023 22:13:49 +0100 Subject: [PATCH 493/767] Cygwin: fs_info: check for SSD During fs_info::update, check for the file being on an SSD. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/mount.h | 4 ++++ winsup/cygwin/mount.cc | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/winsup/cygwin/local_includes/mount.h b/winsup/cygwin/local_includes/mount.h index 5bb84b9769..57c89e0101 100644 --- a/winsup/cygwin/local_includes/mount.h +++ b/winsup/cygwin/local_includes/mount.h @@ -69,6 +69,7 @@ class fs_info ULONG name_len; /* MaximumComponentNameLength */ fs_info_type fs_type; /* Filesystem type */ unsigned is_remote_drive : 1; + unsigned is_ssd : 1; unsigned has_acls : 1; unsigned hasgood_inode : 1; unsigned caseinsensitive : 1; @@ -80,6 +81,8 @@ class fs_info ULONG sernum; /* Volume Serial Number */ char fsn[80]; /* Windows filesystem name */ + void check_ssd (HANDLE); + public: void clear () { @@ -93,6 +96,7 @@ class fs_info IMPLEMENT_STATUS_FLAG (ULONG, samba_version) IMPLEMENT_STATUS_FLAG (ULONG, name_len) IMPLEMENT_STATUS_FLAG (bool, is_remote_drive) + IMPLEMENT_STATUS_FLAG (bool, is_ssd) IMPLEMENT_STATUS_FLAG (bool, has_acls) IMPLEMENT_STATUS_FLAG (bool, hasgood_inode) IMPLEMENT_STATUS_FLAG (bool, caseinsensitive) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 13ace62504..9545d22e07 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -523,8 +523,22 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) caseinsensitive ((!(flags () & FILE_CASE_SENSITIVE_SEARCH) || is_samba ()) && !is_nfs ()); + /* Check for being an SSD */ + if (!is_remote_drive () && !is_cdrom ()) + { + /* Theoretically FileFsVolumeFlagsInformation would be sufficient, + but apparently it's not exposed into userspace. */ + FILE_FS_SECTOR_SIZE_INFORMATION ffssi; + + status = NtQueryVolumeInformationFile (vol, &io, &ffssi, sizeof ffssi, + FileFsSectorSizeInformation); + if (NT_SUCCESS (status)) + is_ssd (!!(ffssi.Flags & SSINFO_FLAGS_NO_SEEK_PENALTY)); + } + if (!in_vol) NtClose (vol); + fsi_cache.add (hash, this); return true; } From 832e91422c4ae9b2dcd0c307779f3dd53ee9c0ac Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 30 Nov 2023 22:36:35 +0100 Subject: [PATCH 494/767] Cygwin: sparse support: enable automatic sparsifying of files on SSDs Given that SSDs don't have a seek penalty, we can enable automatic sparsifying of files on SSDs, even if the "sparse" mount option is not set. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/path.h | 4 ++-- winsup/cygwin/release/3.5.0 | 3 +++ winsup/doc/new-features.xml | 5 +++++ winsup/doc/utils.xml | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/local_includes/path.h b/winsup/cygwin/local_includes/path.h index c7f113f874..d19721e0cd 100644 --- a/winsup/cygwin/local_includes/path.h +++ b/winsup/cygwin/local_includes/path.h @@ -174,8 +174,8 @@ class path_conv bool isgood_inode (ino_t ino) const; bool support_sparse () const { - return (mount_flags & MOUNT_SPARSE) - && (fs_flags () & FILE_SUPPORTS_SPARSE_FILES); + return (fs_flags () & FILE_SUPPORTS_SPARSE_FILES) + && (fs.is_ssd () || (mount_flags & MOUNT_SPARSE)); } int has_dos_filenames_only () const {return mount_flags & MOUNT_DOS;} int has_buggy_reopen () const {return fs.has_buggy_reopen ();} diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 3b6df951d4..d0a6c2fc83 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -55,3 +55,6 @@ What changed: https://www.austingroupbugs.net/view.php?id=1674 - FIFOs now also work over NFS. + +- Enable automatic sparsifying of files on SSDs, independent of the + "sparse" mount mode. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index c5e6cdd7f2..56509bdc38 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -82,6 +82,11 @@ New API call: fallocate (Linux-specific). FIFOs now also work over NFS. + +Enable automatic sparsifying of files on SSDs, independent of the +"sparse" mount mode. + + diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index ad17c97966..f79a928df2 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -1933,6 +1933,7 @@ D: on /d type fat (binary,user,noumount) (default). sparse - Switch on support for sparse files. This option only makes sense on NTFS and then only if you really need sparse files. + This flag is always silently enabled on SSD drives. text - Files default to CRLF text mode line endings. From cb21f8bc56c20f57ade4ba94f2b09a457acb8b2d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 30 Nov 2023 22:38:59 +0100 Subject: [PATCH 495/767] Cygwin: doc: add missing change to posix_spawnp Signed-off-by: Corinna Vinschen --- winsup/doc/new-features.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 56509bdc38..bd856525e3 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -78,6 +78,12 @@ New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. New API call: fallocate (Linux-specific). + +posix_spawnp no longer falls back to starting the shell for unrecognized +files as execvp. For the reasoning, see +https://www.austingroupbugs.net/view.php?id=1674 + + FIFOs now also work over NFS. From 10da64688016c0146e049eef3533a35ff19e6b6e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 1 Dec 2023 09:55:33 +0100 Subject: [PATCH 496/767] Cygwin: drop stray fs_info::check_ssd declaration This is just a leftover from development Fixes: 8b01c5d6903f ("Cygwin: fs_info: check for SSD") Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/mount.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/winsup/cygwin/local_includes/mount.h b/winsup/cygwin/local_includes/mount.h index 57c89e0101..b2acdf08b4 100644 --- a/winsup/cygwin/local_includes/mount.h +++ b/winsup/cygwin/local_includes/mount.h @@ -81,8 +81,6 @@ class fs_info ULONG sernum; /* Volume Serial Number */ char fsn[80]; /* Windows filesystem name */ - void check_ssd (HANDLE); - public: void clear () { From 65f7ab0bb928162f6a6ea60e2803d6b9e5d95e8b Mon Sep 17 00:00:00 2001 From: Kuan-Wei Chiu Date: Sat, 2 Dec 2023 00:13:21 +0800 Subject: [PATCH 497/767] newlib: libc: Fix memory leak in computematchjumps() In cases where malloc fails for the 'g->matchjump' allocation, the code path does not handle the failure gracefully, potentially leading to a memory leak. This fix ensures proper cleanup by freeing the allocated memory for 'pmatches' before returning. Signed-off-by: Kuan-Wei Chiu --- newlib/libc/posix/regcomp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/newlib/libc/posix/regcomp.c b/newlib/libc/posix/regcomp.c index 002f978cd0..e71bc005c9 100644 --- a/newlib/libc/posix/regcomp.c +++ b/newlib/libc/posix/regcomp.c @@ -2001,8 +2001,10 @@ struct re_guts *g; } g->matchjump = (int*) malloc(g->mlen * sizeof(unsigned int)); - if (g->matchjump == NULL) /* Not a fatal error */ - return; + if (g->matchjump == NULL) { /* Not a fatal error */ + free(pmatches); + return; + } /* Set maximum possible jump for each character in the pattern */ for (mindex = 0; mindex < g->mlen; mindex++) From b64d0d53af230c74201ffbff323b61b57fc74cc1 Mon Sep 17 00:00:00 2001 From: Kuan-Wei Chiu Date: Sat, 2 Dec 2023 12:21:07 +0800 Subject: [PATCH 498/767] newlib: libc: Fix indentation Signed-off-by: Kuan-Wei Chiu --- newlib/libc/posix/regcomp.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/newlib/libc/posix/regcomp.c b/newlib/libc/posix/regcomp.c index e71bc005c9..c789746755 100644 --- a/newlib/libc/posix/regcomp.c +++ b/newlib/libc/posix/regcomp.c @@ -2001,10 +2001,10 @@ struct re_guts *g; } g->matchjump = (int*) malloc(g->mlen * sizeof(unsigned int)); - if (g->matchjump == NULL) { /* Not a fatal error */ - free(pmatches); - return; - } + if (g->matchjump == NULL) { /* Not a fatal error */ + free(pmatches); + return; + } /* Set maximum possible jump for each character in the pattern */ for (mindex = 0; mindex < g->mlen; mindex++) @@ -2037,16 +2037,16 @@ struct re_guts *g; g->matchjump[mindex] = MIN(g->matchjump[mindex], g->mlen + suffix - mindex); - ssuffix = pmatches[suffix]; - while (suffix < g->mlen) { - while (suffix <= ssuffix && suffix < g->mlen) { - g->matchjump[suffix] = MIN(g->matchjump[suffix], + ssuffix = pmatches[suffix]; + while (suffix < g->mlen) { + while (suffix <= ssuffix && suffix < g->mlen) { + g->matchjump[suffix] = MIN(g->matchjump[suffix], g->mlen + ssuffix - suffix); - suffix++; - } + suffix++; + } if (suffix < g->mlen) - ssuffix = pmatches[ssuffix]; - } + ssuffix = pmatches[ssuffix]; + } free(pmatches); } From 97b1f4db067cc98a0e059c3a4952a1f1f64d984e Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 24 Nov 2023 13:17:32 +0000 Subject: [PATCH 499/767] Cygwin: CI: drop IRC notification from AppVeyor via notifico Drop IRC status notification from AppVeyor via notifico, as we no longer run tests there. --- .appveyor.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 9f20f6d835..527c96a92d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -67,12 +67,3 @@ build_script: >- test: off deploy: off - -# irc notification via notifico -notifications: -- provider: Webhook - url: http://n.tkte.ch/h/4848/0nqixIBiOFzf-S_N2PY83dGB - method: GET - on_build_success: false - on_build_failure: false - on_build_status_changed: true From c0d2f3874207e870ffb8a181b0a49637d77e5fdc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 2 Dec 2023 14:38:28 +0100 Subject: [PATCH 500/767] Cygwin: fallocate(2): drop useless zeroing pointer The out pointer is only used if data_chunk_count is > 0, so there's no reason to set it to NULL in the error case. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index ce15e41a4e..d08fe9160d 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -1319,9 +1319,7 @@ fhandler_disk_file::falloc_zero_range (int mode, off_t offset, off_t length) status = NtFsControlFile (get_handle (), NULL, NULL, NULL, &io, FSCTL_QUERY_ALLOCATED_RANGES, &inp, sizeof inp, out, 2 * NT_MAX_PATH); - if (NT_ERROR (status)) - out = NULL; - else + if (!NT_ERROR (status)) data_chunk_count = io.Information / sizeof *out; } From bcd1883560b79b67f06fa1df6dea60d18fdd00c7 Mon Sep 17 00:00:00 2001 From: Kito Cheng Date: Mon, 4 Dec 2023 15:41:28 +0800 Subject: [PATCH 501/767] RISC-V: Fix -Wint-conversion warning Upstream GCC has change this warning into error by default, so...we need to explicitly convert the type from pointer from/to integer, generally it's unsafe, but we know what we are doing here. However it's not safe for ilp32 on RV64, but we didn't support that yet, so I think this fix is good enough now :) --- libgloss/riscv/internal_syscall.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libgloss/riscv/internal_syscall.h b/libgloss/riscv/internal_syscall.h index 1f1f42f5d6..080c8c847e 100644 --- a/libgloss/riscv/internal_syscall.h +++ b/libgloss/riscv/internal_syscall.h @@ -63,7 +63,7 @@ __internal_syscall(long n, int argc, long _a0, long _a1, long _a2, long _a3, lon } static inline long -syscall_errno(long n, int argc, long _a0, long _a1, long _a2, long _a3, long _a4, long _a5) +_syscall_errno(long n, int argc, long _a0, long _a1, long _a2, long _a3, long _a4, long _a5) { long a0 = __internal_syscall (n, argc, _a0, _a1, _a2, _a3, _a4, _a5); @@ -73,4 +73,8 @@ syscall_errno(long n, int argc, long _a0, long _a1, long _a2, long _a3, long _a4 return a0; } +#define syscall_errno(N, ARGC, A0, A1, A2, A3, A4, A5) \ + _syscall_errno(N, ARGC, (long)A0, (long)A1, (long)A2, \ + (long)A3, (long)A4, (long)A5) + #endif From 04798b7bb69571452d2cfc7e0b052a9bbd3b619d Mon Sep 17 00:00:00 2001 From: Kito Cheng Date: Mon, 4 Dec 2023 15:41:39 +0800 Subject: [PATCH 502/767] RISC-V: Support long double math Long double for RISC-V is using 128 bit IEEE 754 format like Aarch64, so we reference AArch64 to support that. --- newlib/Makefile.in | 63 +++++++++++++------- newlib/libc/include/math.h | 3 +- newlib/libc/machine/riscv/machine/_fpmath.h | 64 +++++++++++++++++++++ newlib/libm/Makefile.inc | 1 + 4 files changed, 110 insertions(+), 21 deletions(-) create mode 100644 newlib/libc/machine/riscv/machine/_fpmath.h diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 9cbb4254ec..3cba156d3f 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -947,14 +947,17 @@ check_PROGRAMS = @HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_159 = $(libm_machine_sparc_src) @HAVE_LIBM_MACHINE_SPU_TRUE@am__append_160 = $(libm_machine_spu_src) @HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_161 = $(libm_machine_riscv_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_162 = $(libm_machine_x86_64_src) -@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_163 = $(libm_ld80_lsrc) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_164 = -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_165 = -@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__append_166 = \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_162 = $(libm_ld128_lsrc) +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_163 = +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_164 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_165 = $(libm_machine_x86_64_src) +@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_166 = $(libm_ld80_lsrc) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_167 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_168 = +@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__append_169 = \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@ libm/machine/xtensa/ef_sqrt.c -@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__append_167 = $(libm_machine_xtensa_src) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__append_170 = $(libm_machine_xtensa_src) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -3198,6 +3201,16 @@ am__objects_159 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/machine/aarch64/libm_a-feupdateenv.$(OBJEXT) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_161 = $(am__objects_160) +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_162 = libm/ld128/libm_a-e_powl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-s_erfl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-s_exp2l.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-s_expl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-s_logl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-b_tgammal.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-invtrig.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-e_lgammal_r.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-k_cosl.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_AARCH64_FALSE@@HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/ld128/libm_a-k_sinl.$(OBJEXT) @HAVE_LIBM_MACHINE_AARCH64_TRUE@am__objects_162 = libm/ld128/libm_a-e_powl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_erfl.$(OBJEXT) \ @HAVE_LIBM_MACHINE_AARCH64_TRUE@ libm/ld128/libm_a-s_exp2l.$(OBJEXT) \ @@ -3615,7 +3628,8 @@ am__objects_159 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-s_llround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_RISCV_TRUE@ libm/machine/riscv/libm_a-sf_llround.$(OBJEXT) @HAVE_LIBM_MACHINE_RISCV_TRUE@am__objects_187 = $(am__objects_186) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_188 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_RISCV_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_188 = $(am__objects_162) +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_189 = libm/machine/x86_64/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetexceptflag.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fegetround.$(OBJEXT) \ @@ -3627,10 +3641,10 @@ am__objects_159 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fesetround.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_X86_64_TRUE@ libm/machine/x86_64/libm_a-feupdateenv.$(OBJEXT) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_189 = $(am__objects_188) -@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_190 = $(am__objects_170) -@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__objects_191 = libm/machine/xtensa/libm_a-ef_sqrt.$(OBJEXT) -@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__objects_192 = libm/machine/xtensa/libm_a-feclearexcept.$(OBJEXT) \ +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__objects_190 = $(am__objects_189) +@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__objects_191 = $(am__objects_170) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__objects_192 = libm/machine/xtensa/libm_a-ef_sqrt.$(OBJEXT) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__objects_193 = libm/machine/xtensa/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetenv.$(OBJEXT) \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fegetexceptflag.$(OBJEXT) \ @@ -3639,8 +3653,8 @@ am__objects_159 = libm/fenv/libm_a-feclearexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-feraiseexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-fetestexcept.$(OBJEXT) \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@ libm/machine/xtensa/libm_a-feupdateenv.$(OBJEXT) \ -@HAVE_LIBM_MACHINE_XTENSA_TRUE@ $(am__objects_191) -@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__objects_193 = $(am__objects_192) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@ $(am__objects_192) +@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__objects_194 = $(am__objects_193) am_libm_a_OBJECTS = $(am__objects_145) $(am__objects_149) \ $(am__objects_150) $(am__objects_151) $(am__objects_153) \ $(am__objects_155) $(am__objects_156) $(am__objects_157) \ @@ -3649,7 +3663,8 @@ am_libm_a_OBJECTS = $(am__objects_145) $(am__objects_149) \ $(am__objects_169) $(am__objects_171) $(am__objects_173) \ $(am__objects_177) $(am__objects_179) $(am__objects_181) \ $(am__objects_183) $(am__objects_185) $(am__objects_187) \ - $(am__objects_189) $(am__objects_190) $(am__objects_193) + $(am__objects_188) $(am__objects_190) $(am__objects_191) \ + $(am__objects_194) libm_a_OBJECTS = $(am_libm_a_OBJECTS) am_libm_test_test_OBJECTS = libm/test/test.$(OBJEXT) \ libm/test/string.$(OBJEXT) libm/test/convert.$(OBJEXT) \ @@ -4209,7 +4224,8 @@ libm_a_SOURCES = $(am__append_133) $(am__append_136) \ $(am__append_149) $(am__append_150) $(am__append_153) \ $(am__append_156) $(am__append_157) $(am__append_158) \ $(am__append_159) $(am__append_160) $(am__append_161) \ - $(am__append_162) $(am__append_163) $(am__append_167) + $(am__append_162) $(am__append_165) $(am__append_166) \ + $(am__append_170) libm_a_CFLAGS = $(AM_CFLAGS) $(libm_a_CFLAGS_$(subst /,_,$(@D))) $(libm_a_CFLAGS_$(subst /,_,$(@D)_$( + * Copyright (2) 2014 The FreeBSD Foundation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Change unsigned int/long used by FreeBSD to fixed width types because + * ilp32 has a different size for unsigned long. --joel (20 Aug 2022) + */ +#include + +union IEEEl2bits { + long double e; + struct { + uint64_t manl :64; + uint64_t manh :48; + uint32_t exp :15; + uint32_t sign :1; + } bits; + /* TODO andrew: Check the packing here */ + struct { + uint64_t manl :64; + uint64_t manh :48; + uint32_t expsign :16; + } xbits; +}; + +#define LDBL_NBIT 0 +#define LDBL_IMPLICIT_NBIT +#define mask_nbit_l(u) ((void)0) + +#define LDBL_MANH_SIZE 48 +#define LDBL_MANL_SIZE 64 + +#define LDBL_TO_ARRAY32(u, a) do { \ + (a)[0] = (uint32_t)(u).bits.manl; \ + (a)[1] = (uint32_t)((u).bits.manl >> 32); \ + (a)[2] = (uint32_t)(u).bits.manh; \ + (a)[3] = (uint32_t)((u).bits.manh >> 32); \ +} while(0) diff --git a/newlib/libm/Makefile.inc b/newlib/libm/Makefile.inc index 28b84bfe2e..bf31b1be78 100644 --- a/newlib/libm/Makefile.inc +++ b/newlib/libm/Makefile.inc @@ -87,6 +87,7 @@ include %D%/machine/spu/Makefile.inc endif if HAVE_LIBM_MACHINE_RISCV include %D%/machine/riscv/Makefile.inc +include %D%/ld128/Makefile.inc endif if HAVE_LIBM_MACHINE_X86_64 include %D%/machine/x86_64/Makefile.inc From 14d786873c7db25d37b74d8c47ad8f3cbbe1883b Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Mon, 4 Dec 2023 17:42:42 +0200 Subject: [PATCH 503/767] pru: libm: Fix incorrect function name Upstream GCC changed -Wimplicit-function-declaration warning into an error. The build break about missing fpclassifyf function prototype exposed a bug in the PRU port of libm. The fix is to use the fpclassify macro for both double and float types. Signed-off-by: Dimitar Dimitrov --- newlib/libm/machine/pru/fpclassifyf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libm/machine/pru/fpclassifyf.c b/newlib/libm/machine/pru/fpclassifyf.c index f4dd201d97..6d82ea7777 100644 --- a/newlib/libm/machine/pru/fpclassifyf.c +++ b/newlib/libm/machine/pru/fpclassifyf.c @@ -32,5 +32,5 @@ by TI ABI. */ int __pruabi_fpclassifyf(float a) { - return fpclassifyf(a); + return fpclassify(a); } From 295bef07d6bd18cd58746e46b400faadfb54b712 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 5 Dec 2023 22:08:01 +0100 Subject: [PATCH 504/767] Cygwin: posix_fallocate(3): fix offset and length sanity check - len must not be <= 0 - offset + len must not exceed off_t (max. file size) Fixes: 7636b5859062 ("* autoload.cc (NtSetInformationFile): Define.") Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index b73391d8f8..3edb55bc60 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3030,8 +3030,10 @@ extern "C" int posix_fallocate (int fd, off_t offset, off_t len) { int res = 0; - if (offset < 0 || len == 0) + if (offset < 0 || len <= 0) res = EINVAL; + else if (INT64_MAX - len < offset) + res = EFBIG; else { cygheap_fdget cfd (fd); From 7f88c8e0b316e7832e58ff878cffb62460b2902f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 5 Dec 2023 22:08:42 +0100 Subject: [PATCH 505/767] Cygwin: fallocate(2): fix offset and length sanity check - len must not be <= 0 - offset + len must not exceed off_t (max. file size) Fixes: e01c50c7b0a6 ("Cygwin: introduce fallocate(2)") Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3edb55bc60..b6aeb47c86 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3005,8 +3005,10 @@ fallocate (int fd, int mode, off_t offset, off_t len) else if ((mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE)) == FALLOC_FL_PUNCH_HOLE) res = EOPNOTSUPP; - else if (offset < 0 || len == 0) + else if (offset < 0 || len <= 0) res = EINVAL; + else if (INT64_MAX - len < offset) + res = EFBIG; else { cygheap_fdget cfd (fd); From 0737bda6ff5a104963c49f389ec102eaf8c5dd24 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 5 Dec 2023 22:11:18 +0100 Subject: [PATCH 506/767] Cygwin: fallocate(2): fix debug output Fixes: e01c50c7b0a6 ("Cygwin: introduce fallocate(2)") Signed-off-by: Corinna Vinschen --- winsup/cygwin/syscalls.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index b6aeb47c86..486db1db67 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -3024,7 +3024,7 @@ fallocate (int fd, int mode, off_t offset, off_t len) set_errno (res); res = -1; } - syscall_printf ("%R = posix_fallocate(%d, %D, %D)", res, fd, offset, len); + syscall_printf ("%R = fallocate(%d, %y, %D, %D)", res, fd, mode, offset, len); return res; } From 7cce4cdd6e53abb1e89a871fc7511f0d8563d483 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 4 Dec 2023 18:00:26 +0100 Subject: [PATCH 507/767] libgloss/cris: Make C declarations present and match them This is the libgloss part. Recently, there was a change in gcc such that implicit function declarations and type mismatches are now errors, no longer just warnings. Fix by adding and correcting declarations warned about; including the right header or adding a declaration (for "main" in lcrt0.c) and adjust to those types as necessary. --- libgloss/cris/gensyscalls | 15 ++++++++------- libgloss/cris/lcrt0.c | 4 +++- libgloss/cris/linunistd.h | 7 +++++-- libgloss/cris/outbyte.c | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/libgloss/cris/gensyscalls b/libgloss/cris/gensyscalls index c36f284887..0b5b0731a7 100644 --- a/libgloss/cris/gensyscalls +++ b/libgloss/cris/gensyscalls @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2005, 2018 Axis Communications. +# Copyright (C) 2005, 2018, 2023 Axis Communications. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -40,13 +40,14 @@ lu='/* -*- buffer-read-only: t -*- #define R(x) return (x); } ' lui="$lu int" +lul="$lu long int" r=") { R (_Sys_" cat > close.c < execve.c < exit.c < link.c < lseek.c < open.c < read.c < rename.c < wait.c < write.c < #ifdef _HAVE_INITFINI_ARRAY #define _init __libc_init_array @@ -99,6 +100,7 @@ extern void _Libdtors (void); extern void __init__start (void) __attribute ((weak)); extern void __aout__ctors (void) __attribute ((weak)); +extern int main (int argc, char **argv, char **env); static void start1 () __asm__ ("__start1") __attribute ((__used__)); static void diff --git a/libgloss/cris/linunistd.h b/libgloss/cris/linunistd.h index 3a6f318a37..b627670f5b 100644 --- a/libgloss/cris/linunistd.h +++ b/libgloss/cris/linunistd.h @@ -1,5 +1,5 @@ /* Support for syscalls for cris*-axis-linux-gnu and simulators - Copyright (C) 1998-2005, 2018 Axis Communications. + Copyright (C) 1998-2005, 2018, 2023 Axis Communications. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -32,10 +32,13 @@ #ifndef _ASM_ELINUX_UNISTD_H_ #define _ASM_ELINUX_UNISTD_H_ +#define _LIBC + /* Our callers might want to use link_warning, so provide it from here. */ #include "../config.h" #include "libnosys/warning.h" +#include #include /* @@ -357,7 +360,7 @@ static inline _syscall0(int,setup) static inline _syscall0(int,sync) static inline _syscall3(int,write,int,fd,const char *,buf,unsigned,count) static inline _syscall1(int,dup,int,fd) -static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) +static inline _syscall3(int,execve,const char *,file,char *const *,argv,char *const *,envp) static inline _syscall3(int,open,const char *,file,int,flag,int,mode) static inline _syscall1(int,close,int,fd) static inline _syscall1(int,_exit,int,exitcode) diff --git a/libgloss/cris/outbyte.c b/libgloss/cris/outbyte.c index 1cb686b968..210339f8ef 100644 --- a/libgloss/cris/outbyte.c +++ b/libgloss/cris/outbyte.c @@ -1,7 +1,7 @@ /* Low-level kind-of-support for CRIS. Mostly used as a placeholder function. Too small and obvious to warrant a copyright notice. */ -#include +#include void outbyte (int ch) { From 3bafe2fae7a0878598a82777c623edb2faa70b74 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Sat, 2 Dec 2023 02:20:17 +0100 Subject: [PATCH 508/767] newlib cris: Fix compilation warnings that recent gcc treats as errors For the newlib part, warnings are all from lack of sync between libc/machine/cris/sys/signal.h and libc/include/sys/signal.h. This commit gets them sufficiently in sync again, functionality-wise and declaration-wise. Still, nothing is declared that isn't supported at the system level (i.e. in libgloss system calls and handled by the CRIS simulator in the gdb project). --- newlib/libc/machine/cris/sys/signal.h | 43 +++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/newlib/libc/machine/cris/sys/signal.h b/newlib/libc/machine/cris/sys/signal.h index 9cb7ba5303..7b6f3fa9bc 100644 --- a/newlib/libc/machine/cris/sys/signal.h +++ b/newlib/libc/machine/cris/sys/signal.h @@ -12,6 +12,8 @@ extern "C" { #endif #include "_ansi.h" +#include +#include typedef unsigned long sigset_t; @@ -32,21 +34,50 @@ struct sigaction { /* Adjusted to glibc; other values. */ #define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */ + +#if __POSIX_VISIBLE #define SIG_SETMASK 2 /* set mask with sigprocmask() */ #define SIG_BLOCK 0 /* set of signals to block */ #define SIG_UNBLOCK 1 /* set of signals to, well, unblock */ +int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b); +#endif /* __POSIX_VISIBLE */ + +#ifdef _LIBC +int _kill (pid_t, int); +#endif + +#if __POSIX_VISIBLE + +int kill (pid_t, int); +int sigaddset (sigset_t *, const int); +int sigdelset (sigset_t *, const int); +int sigismember (const sigset_t *, int); +int sigfillset (sigset_t *); +int sigemptyset (sigset_t *); + /* These depend upon the type of sigset_t, which right now is always a long.. They're in the POSIX namespace, but are not ANSI. */ -#define sigaddset(what,sig) (*(what) |= (1<<(sig))) -#define sigemptyset(what) (*(what) = 0) +#define sigaddset(what,sig) (*(what) |= (1<<(sig)), 0) +#define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0) +#define sigemptyset(what) (*(what) = 0, 0) +#define sigfillset(what) (*(what) = ~(0), 0) +#define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0) -int sigprocmask (int __how, const sigset_t *__a, sigset_t *__b); +#endif /* __POSIX_VISIBLE */ + +/* Using __MISC_VISIBLE until POSIX Issue 8 is officially released */ +#if __MISC_VISIBLE + +/* POSIX Issue 8 adds sig2str() and str2sig() */ + +#define SIG2STR_MAX 17 /* (sizeof("RTMAX+") + sizeof("4294967295") - 1) */ + +int sig2str(int, char *); +int str2sig(const char *__restrict, int *__restrict); -/* The first argument is really a pid_t, but that's just a typedef'd - int, so let's avoid requiring sys/types only for this declaration. */ -int kill (int, int); +#endif /* __MISC_VISIBLE */ #define SIGHUP 1 #define SIGINT 2 From 17a6aff334a20f63cb7f428a36dad0c8ebbdab5d Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 14 Dec 2023 10:30:13 -0700 Subject: [PATCH 509/767] Fix fr30 libgloss build gcc-14 will default to c99 and as a result a fair amount of old code in newlib (particularly libgloss) is failing to build. I don't offhand know how many patches will be necessary to fix the various failures. I'll just pick them off one by one from my tree. This particular patch works around the return-mismatch problem syscalls.c for fr30. That file is a bit odd in that most functions are declared as returning an integer, but the implementations look like: > int > _read (file, ptr, len) > int file; > char * ptr; > int len; > { > asm ("ldi:8 %0, r0" :: "i" (SYS_read) : "r0"); > asm ("int #10"); > > return; > } Note the lack of a value on the "return" statement. The assumption is that the interrupt handler implementing syscalls will put the return value into the proper register, so falling off the end of the C function or returning with no value works in the expected way. It's not good code, but it probably works. Working from that assumption I decided to just use a pragma to disable the upgraded diagnostic from GCC -- essentially preserving existing behavior. This is the only fr30 specific issue that needs to be resolved and the only issue (so far) I've seen of this specific nature. --- libgloss/fr30/syscalls.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libgloss/fr30/syscalls.c b/libgloss/fr30/syscalls.c index 2558556b65..36702b03d6 100644 --- a/libgloss/fr30/syscalls.c +++ b/libgloss/fr30/syscalls.c @@ -5,6 +5,8 @@ #include #include "../syscall.h" +#pragma GCC diagnostic ignored "-Wreturn-mismatch" + int _read (file, ptr, len) int file; From 57e311e0deb23492edc94518c78cc57a224dbad9 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sat, 16 Dec 2023 21:11:10 -0700 Subject: [PATCH 510/767] Re: Fix moxie libgloss issues with c99 Two libgloss issues specific to moxie-elf that show up build with GCC trunk. First, putnum.c uses "print" without a prototype. So I added one based on the function's definition in print.c. Second sim-inbyte.c uses read, which comes from unistd.h, so this adds a suitable #include. --- libgloss/moxie/putnum.c | 2 ++ libgloss/moxie/sim-inbyte.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/libgloss/moxie/putnum.c b/libgloss/moxie/putnum.c index 0f7e894534..9af5b4d4c5 100644 --- a/libgloss/moxie/putnum.c +++ b/libgloss/moxie/putnum.c @@ -14,6 +14,8 @@ */ #include "glue.h" +void print (char *); + /* * putnum -- print a 32 bit number in hex */ diff --git a/libgloss/moxie/sim-inbyte.c b/libgloss/moxie/sim-inbyte.c index 1e7466a8d2..4cda6604a8 100644 --- a/libgloss/moxie/sim-inbyte.c +++ b/libgloss/moxie/sim-inbyte.c @@ -14,6 +14,10 @@ * they apply. */ +#include + +#include + int inbyte () { From c2c9f05a0542a0b299edacc916191ed051bf4f1e Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Mon, 18 Dec 2023 21:29:12 -0700 Subject: [PATCH 511/767] libgloss fix for bfin port gcc-14 will complain loudly both for calling a function without an in-scope prototype or when the in scope prototype differs from the known signature. "main" happens to be one of the functions the compiler knows about. So not only do we need to prototype it, we need to make sure the prototype matches what GCC thinks it should be. This fixes the bfin libgloss port to do the right thing for bfin-elf. --- libgloss/bfin/syscalls.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libgloss/bfin/syscalls.c b/libgloss/bfin/syscalls.c index 7bd0bede18..0497d1d987 100644 --- a/libgloss/bfin/syscalls.c +++ b/libgloss/bfin/syscalls.c @@ -27,6 +27,8 @@ #include #include +extern int main (int, char **, char **); + register char *stack_ptr asm ("SP"); static inline int @@ -254,7 +256,7 @@ __setup_argv_for_main (int argc) do_syscall (SYS_argn, (void *)block); } - return main (argc, argv); + return main (argc, argv, NULL); } int @@ -263,7 +265,7 @@ __setup_argv_and_call_main () int argc = do_syscall (SYS_argc, 0); if (argc <= 0) - return main (argc, NULL); + return main (argc, NULL, NULL); else return __setup_argv_for_main (argc); } From 60c6397133b741a532579670929dbf47e25fbd31 Mon Sep 17 00:00:00 2001 From: Freddie Chopin Date: Sun, 17 Dec 2023 10:01:45 +0100 Subject: [PATCH 512/767] Remove curly braces in `@author` tag in .texi files Curly braces cause documentation build failure with texinfo 7.1 (works fine up to 7.0.3): --- newlib/libc/libc.texi | 8 ++++---- newlib/libm/libm.texi | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi index acb6afb5b5..a5f24b15a2 100644 --- a/newlib/libc/libc.texi +++ b/newlib/libc/libc.texi @@ -71,10 +71,10 @@ into another language, under the above conditions for modified versions. @sp 1 @subtitle @code{libc} 4.3.0 @subtitle January 2023 -@author {Steve Chamberlain} -@author {Roland Pesch} -@author {Red Hat Support} -@author {Jeff Johnston} +@author Steve Chamberlain +@author Roland Pesch +@author Red Hat Support +@author Jeff Johnston @page @tex diff --git a/newlib/libm/libm.texi b/newlib/libm/libm.texi index d3ca9ae3c4..bf8a07255a 100644 --- a/newlib/libm/libm.texi +++ b/newlib/libm/libm.texi @@ -48,10 +48,10 @@ into another language, under the above conditions for modified versions. @sp 1 @subtitle @code{libm} 4.3.0 @subtitle January 2023 -@author {Steve Chamberlain} -@author {Roland Pesch} -@author {Red Hat Support} -@author {Jeff Johnston} +@author Steve Chamberlain +@author Roland Pesch +@author Red Hat Support +@author Jeff Johnston @page @tex From b67114d7d826194d20a002869ac3f2ef2db47b8f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 4 Dec 2023 02:03:06 -0500 Subject: [PATCH 513/767] Revert "Fix libgloss/newlib build to conditionally use top include dir" This reverts commit 17ac400c11bab30ac2c0bef12cbf7788f0b6f954. The build failures were due to incorrectly using $(INCLUDES) when running $(AS). Let's roll this back and drop $(INCLUDES) from the $(AS) invocations. --- libgloss/Makefile.am | 4 ---- libgloss/config/arm.mh | 34 ---------------------------------- libgloss/config/default.mh | 2 +- libgloss/configure.ac | 4 ---- newlib/Makefile.am | 4 ---- 5 files changed, 1 insertion(+), 47 deletions(-) delete mode 100644 libgloss/config/arm.mh diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index f440ad23a1..0d4460b580 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -24,11 +24,7 @@ includetool_DATA = includesystooldir = $(tooldir)/include/sys includesystool_DATA = -if NEED_TOP_INCLUDE_DIR AM_CPPFLAGS = -idirafter $(srcroot)/include -else -AM_CPPFLAGS = -endif # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). diff --git a/libgloss/config/arm.mh b/libgloss/config/arm.mh deleted file mode 100644 index 81f0920f97..0000000000 --- a/libgloss/config/arm.mh +++ /dev/null @@ -1,34 +0,0 @@ -NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` -NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` - -INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include -# Note that when building the library, ${MULTILIB} is not the way multilib -# options are passed; they're passed in $(CFLAGS). -CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} -LDFLAGS_FOR_TARGET = ${MULTILIB} ${NEWLIB_LDFLAGS} -AR_FLAGS = rc - -.c.o: - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< - -.C.o: - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< -.s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< - -# -# GCC knows to run the preprocessor on .S files before it assembles them. -# -.S.o: - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - -# -# this is a bogus target that'll produce an assembler from the -# C source with the right compiler options. this is so we can -# track down code generation or debug symbol bugs. -# -.c.s: - $(CC) $(CFLAGS_FOR_TARGET) -S $(INCLUDES) $(CFLAGS) $< - -# We don't build docs in subdirs, so stub out the rules. -.PHONY: doc docs dvi html install-html info install-info clean-info pdf install-pdf diff --git a/libgloss/config/default.mh b/libgloss/config/default.mh index 4e7f106f93..81f0920f97 100644 --- a/libgloss/config/default.mh +++ b/libgloss/config/default.mh @@ -1,7 +1,7 @@ NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` -INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. +INCLUDES = -I. -I$(srcdir)/.. -I$(objdir)/.. -idirafter $(srcroot)/include # Note that when building the library, ${MULTILIB} is not the way multilib # options are passed; they're passed in $(CFLAGS). CFLAGS_FOR_TARGET = -O2 -g ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 47854eab31..19bdf9b3a6 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -217,7 +217,6 @@ case "${target}" in ;; arm*-*-elf | arm*-*-coff | arm*-*-*) config_arm=true - host_makefile_frag=${srcdir}/config/arm.mh ;; spu-*-elf) AC_CONFIG_FILES([spu/Makefile]) @@ -256,9 +255,6 @@ m4_foreach_w([SUBDIR], [ AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) -dnl arm platforms have a special header file found in the main include directory -AM_CONDITIONAL([NEED_TOP_INCLUDE_DIR], [[test x$config_arm] = xtrue]) - dnl For now, don't bother configuring testsuite dnl dnl if test "${config_testsuite}" = "true"; diff --git a/newlib/Makefile.am b/newlib/Makefile.am index 47f0be2880..4ab36b8d84 100644 --- a/newlib/Makefile.am +++ b/newlib/Makefile.am @@ -70,11 +70,7 @@ toollibdir = $(tooldir)/lib$(MULTISUBDIR) # These are useful for standalone object files like crt0.o. AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$( Date: Tue, 19 Dec 2023 13:58:12 -0500 Subject: [PATCH 514/767] Add generated files for Revert patch --- libgloss/configure | 16 ---------------- newlib/Makefile.in | 12 +++++------- 2 files changed, 5 insertions(+), 23 deletions(-) diff --git a/libgloss/configure b/libgloss/configure index 3c0db81218..28b45289ef 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -637,8 +637,6 @@ CPPFLAGS LDFLAGS CFLAGS CC -NEED_TOP_INCLUDE_DIR_FALSE -NEED_TOP_INCLUDE_DIR_TRUE CONFIG_XTENSA_FALSE CONFIG_XTENSA_TRUE CONFIG_WINCE_FALSE @@ -2963,7 +2961,6 @@ case "${target}" in ;; arm*-*-elf | arm*-*-coff | arm*-*-*) config_arm=true - host_makefile_frag=${srcdir}/config/arm.mh ;; spu-*-elf) ac_config_files="$ac_config_files spu/Makefile" @@ -3104,15 +3101,6 @@ fi - if test x$config_arm = xtrue; then - NEED_TOP_INCLUDE_DIR_TRUE= - NEED_TOP_INCLUDE_DIR_FALSE='#' -else - NEED_TOP_INCLUDE_DIR_TRUE='#' - NEED_TOP_INCLUDE_DIR_FALSE= -fi - - ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -5411,10 +5399,6 @@ if test -z "${CONFIG_XTENSA_TRUE}" && test -z "${CONFIG_XTENSA_FALSE}"; then as_fn_error $? "conditional \"CONFIG_XTENSA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${NEED_TOP_INCLUDE_DIR_TRUE}" && test -z "${NEED_TOP_INCLUDE_DIR_FALSE}"; then - as_fn_error $? "conditional \"NEED_TOP_INCLUDE_DIR\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 3cba156d3f..99a29465ac 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -948,12 +948,12 @@ check_PROGRAMS = @HAVE_LIBM_MACHINE_SPU_TRUE@am__append_160 = $(libm_machine_spu_src) @HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_161 = $(libm_machine_riscv_src) @HAVE_LIBM_MACHINE_RISCV_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_162 = $(libm_ld128_lsrc) -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_163 = -@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_164 = +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_163 = +@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_164 = @HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_165 = $(libm_machine_x86_64_src) @HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_166 = $(libm_ld80_lsrc) -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_167 = -@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_168 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_167 = +@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_168 = @HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__append_169 = \ @HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@ libm/machine/xtensa/ef_sqrt.c @@ -3937,7 +3937,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ shared_machine_dir = @shared_machine_dir@ sharedstatedir = @sharedstatedir@ @@ -4018,8 +4017,7 @@ toollibdir = $(tooldir)/lib$(MULTISUBDIR) # These are useful for standalone object files like crt0.o. AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$( Date: Mon, 4 Dec 2023 02:03:07 -0500 Subject: [PATCH 515/767] libgloss: drop $(INCLUDES) when using $(AS) Since $(AS) is the assembler, passing it a list of preprocessor include flags doesn't make much sense. The files aren't preprocessed which means `#include` lines aren't respected, and while it would affect `.include` usage, we never use that, and it's extremely unlikely to change. Plus, it's extremely unlikely we'd have .s files in common places to include vs contained entirely within a specific arch dir, and at that point, it can be included directly (with no flags), or the arch can add the unique set of include paths that it needs for itself. --- libgloss/config/default.mh | 2 +- libgloss/config/ppc.mh | 2 +- libgloss/epiphany/Makefile.in | 2 +- libgloss/hp74x/Makefile.in | 2 +- libgloss/pru/Makefile.in | 2 +- libgloss/spu/Makefile.in | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libgloss/config/default.mh b/libgloss/config/default.mh index 81f0920f97..64dc02f05c 100644 --- a/libgloss/config/default.mh +++ b/libgloss/config/default.mh @@ -14,7 +14,7 @@ AR_FLAGS = rc .C.o: $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< .s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< # # GCC knows to run the preprocessor on .S files before it assembles them. diff --git a/libgloss/config/ppc.mh b/libgloss/config/ppc.mh index a3d157bb8f..d1bfd7588e 100644 --- a/libgloss/config/ppc.mh +++ b/libgloss/config/ppc.mh @@ -18,7 +18,7 @@ AR_FLAGS = qc .C.o: $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS_MRELOCATABLE) -O2 $(INCLUDES) -c $(CFLAGS) $< .s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< # # GCC knows to run the preprocessor on .S files before it assembles them. diff --git a/libgloss/epiphany/Makefile.in b/libgloss/epiphany/Makefile.in index 6cf55e25e6..6670b79a08 100644 --- a/libgloss/epiphany/Makefile.in +++ b/libgloss/epiphany/Makefile.in @@ -105,7 +105,7 @@ AR_FLAGS = qc .S.o: $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $(CFLAGS) $< .s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< # # GCC knows to run the preprocessor on .S files before it assembles them. diff --git a/libgloss/hp74x/Makefile.in b/libgloss/hp74x/Makefile.in index 12c51bf3be..0167e1c62e 100644 --- a/libgloss/hp74x/Makefile.in +++ b/libgloss/hp74x/Makefile.in @@ -117,7 +117,7 @@ install: .s.o: $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $< -# $(AS) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $< +# $(AS) $(CFLAGS_FOR_TARGET) -c $< .SUFFIXES: .S .c .o .s .lif # diff --git a/libgloss/pru/Makefile.in b/libgloss/pru/Makefile.in index 7a2f290a82..fc5905a5ea 100644 --- a/libgloss/pru/Makefile.in +++ b/libgloss/pru/Makefile.in @@ -89,7 +89,7 @@ LDFLAGS_FOR_TARGET = ${MULTILIB} .C.o: $(CC) $(CFLAGS_FOR_TARGET) -Os $(INCLUDES) -c $(CFLAGS) $< .s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< # # GCC knows to run the preprocessor on .S files before it assembles them. diff --git a/libgloss/spu/Makefile.in b/libgloss/spu/Makefile.in index bc8768baf1..4be0783b98 100644 --- a/libgloss/spu/Makefile.in +++ b/libgloss/spu/Makefile.in @@ -95,7 +95,7 @@ AR_FLAGS = qc .C.o: $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< .s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< # # GCC knows to run the preprocessor on .S files before it assembles them. From 30c469f2e83023b9f77b1771f539006267c632a9 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 15 Oct 2023 14:07:06 +0545 Subject: [PATCH 516/767] libgloss: doc: generate single page & split html manuals By default, only split node html manuals are generated. Change the default to single page, and add an extra rule to also generate the split page manual. --- libgloss/Makefile.in | 11 +++++++++-- libgloss/doc/Makefile.inc | 7 +++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 6c5a12256c..7c7ad68dc4 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -937,6 +937,7 @@ MULTISUBDIR = MULTIDO = true MULTICLEAN = true TEXINFO_TEX = ../texinfo/texinfo.tex +@HAVE_DOC_TRUE@AM_MAKEINFOFLAGS = --no-split @CONFIG_AARCH64_TRUE@aarch64_librdimon_a_SOURCES = \ @CONFIG_AARCH64_TRUE@ aarch64/_exit.c \ @CONFIG_AARCH64_TRUE@ aarch64/_kill.c \ @@ -5097,6 +5098,7 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." +@HAVE_DOC_FALSE@html-local: clean: clean-recursive clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ @@ -5116,7 +5118,7 @@ dvi-am: $(DVIS) html: html-recursive -html-am: $(HTMLS) +html-am: $(HTMLS) html-local info: info-recursive @@ -5283,7 +5285,7 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ clean-noinstLIBRARIES cscope cscopelist-am ctags ctags-am \ dist-info distclean distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags dvi dvi-am html \ - html-am info info-am install \ + html-am html-local info info-am install \ install-aarch64_cpu_initcpuinitDATA install-am \ install-arm_cpu_initcpuinitDATA install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ @@ -5336,6 +5338,11 @@ clean-local: clean-multi distclean-local: distclean-multi maintainer-clean-local: maintainer-clean-multi +@HAVE_DOC_TRUE@html-local: doc/porting/index.html +@HAVE_DOC_TRUE@doc/porting/index.html: doc/porting.texi doc/$(am__dirstamp) +@HAVE_DOC_TRUE@ $(AM_V_GEN)$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \ +@HAVE_DOC_TRUE@ --split=node $< -o $(@D) + @CONFIG_AARCH64_TRUE@aarch64/crt0.$(OBJEXT): aarch64/crt0.S @CONFIG_AARCH64_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) -DSEMIHOST_V2 -o $@ -c $< @CONFIG_AARCH64_TRUE@aarch64/rdimon-crt0.$(OBJEXT): aarch64/crt0.S diff --git a/libgloss/doc/Makefile.inc b/libgloss/doc/Makefile.inc index fa5e30fbf2..6f9050fc87 100644 --- a/libgloss/doc/Makefile.inc +++ b/libgloss/doc/Makefile.inc @@ -1 +1,8 @@ +AM_MAKEINFOFLAGS = --no-split + info_TEXINFOS += %D%/porting.texi + +html-local: %D%/porting/index.html +%D%/porting/index.html: %D%/porting.texi %D%/$(am__dirstamp) + $(AM_V_GEN)$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \ + --split=node $< -o $(@D) From c1a61029fedbad16bfd6978be13d62412bdede49 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Tue, 19 Dec 2023 20:54:37 -0700 Subject: [PATCH 517/767] Fix various v850 problems These fixes fall into a few different buckets. First c99 doesn't allow a parameter without a type. So in cases where the type had previously been an implicit int, make it an explicit int. Second, for return values, don't allow them to be implicit ints either, make them explicit. In a few cases change c89 function definitions to c99 function definitions. Lastly include in sbrk.c to get the prototype for abort () which we call when we detect a heap/stack collision. --- newlib/libc/sys/sysnecv850/_exit.c | 2 +- newlib/libc/sys/sysnecv850/getpid.c | 3 ++- newlib/libc/sys/sysnecv850/isatty.c | 4 ++-- newlib/libc/sys/sysnecv850/kill.c | 5 ++--- newlib/libc/sys/sysnecv850/read.c | 1 + newlib/libc/sys/sysnecv850/sbrk.c | 2 ++ 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/newlib/libc/sys/sysnecv850/_exit.c b/newlib/libc/sys/sysnecv850/_exit.c index 44d4132bd7..7e1b09262e 100644 --- a/newlib/libc/sys/sysnecv850/_exit.c +++ b/newlib/libc/sys/sysnecv850/_exit.c @@ -23,7 +23,7 @@ static void _do_dtors() } -void _exit (n) +void _exit (int n) { /* Destructors should be done earlier because they need to be done before the files are closed, but here is better than nowhere (and this balances the diff --git a/newlib/libc/sys/sysnecv850/getpid.c b/newlib/libc/sys/sysnecv850/getpid.c index 32ac7fbfb8..f0fc4d8951 100644 --- a/newlib/libc/sys/sysnecv850/getpid.c +++ b/newlib/libc/sys/sysnecv850/getpid.c @@ -9,7 +9,8 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) -_getpid (n) +int +_getpid (int n) { return 1; } diff --git a/newlib/libc/sys/sysnecv850/isatty.c b/newlib/libc/sys/sysnecv850/isatty.c index 248ab5248f..6e4f205f0f 100644 --- a/newlib/libc/sys/sysnecv850/isatty.c +++ b/newlib/libc/sys/sysnecv850/isatty.c @@ -9,8 +9,8 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) -_isatty (fd) - int fd; +int +_isatty (int fd) { return 1; } diff --git a/newlib/libc/sys/sysnecv850/kill.c b/newlib/libc/sys/sysnecv850/kill.c index 34e5db793c..562eaf6c70 100644 --- a/newlib/libc/sys/sysnecv850/kill.c +++ b/newlib/libc/sys/sysnecv850/kill.c @@ -10,9 +10,8 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) -_kill (pid, sig) - pid_t pid; - int sig; +int +_kill (pid_t pid, int sig) { return TRAP0 (SYS_exit, 0xdead0000 | sig, 0, 0); } diff --git a/newlib/libc/sys/sysnecv850/read.c b/newlib/libc/sys/sysnecv850/read.c index b55d1cb9e7..5ae2c97998 100644 --- a/newlib/libc/sys/sysnecv850/read.c +++ b/newlib/libc/sys/sysnecv850/read.c @@ -9,6 +9,7 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) +int _read (int file, char *ptr, int len) diff --git a/newlib/libc/sys/sysnecv850/sbrk.c b/newlib/libc/sys/sysnecv850/sbrk.c index 2893c322fd..b5673d467d 100644 --- a/newlib/libc/sys/sysnecv850/sbrk.c +++ b/newlib/libc/sys/sysnecv850/sbrk.c @@ -2,7 +2,9 @@ #include #include #include "sys/syscall.h" +#include +extern int _write (int, char *, int); caddr_t _sbrk (int incr) { From b639245932726602394ddf91f60883184191a643 Mon Sep 17 00:00:00 2001 From: Xiao Zeng Date: Fri, 15 Dec 2023 16:31:01 +0800 Subject: [PATCH 518/767] newlib: libc: Improved the readability of strcspn with minor optimization Signed-off-by: Xiao Zeng --- newlib/libc/string/strcspn.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/newlib/libc/string/strcspn.c b/newlib/libc/string/strcspn.c index abaa93ad67..8ac0bf10cf 100644 --- a/newlib/libc/string/strcspn.c +++ b/newlib/libc/string/strcspn.c @@ -37,12 +37,10 @@ strcspn (const char *s1, for (c = s2; *c; c++) { if (*s1 == *c) - break; + goto end; } - if (*c) - break; s1++; } - +end: return s1 - s; } From 73bce6597c3de790750b80c2b705bf20172516d4 Mon Sep 17 00:00:00 2001 From: Craig Blackmore Date: Wed, 20 Dec 2023 20:32:24 +0000 Subject: [PATCH 519/767] newlib: Fix long double for unsupported rounding modes and exceptions RISC-V newlib fails to build for soft float multilibs since long double support was enabled in: commit 04798b7bb69571452d2cfc7e0b052a9bbd3b619d Author: Kito Cheng Date: Mon Dec 4 15:41:39 2023 +0800 RISC-V: Support long double math Long double for RISC-V is using 128 bit IEEE 754 format like Aarch64, so we reference AArch64 to support that. The RISC-V soft floating point environment only supports the FE_TONEAREST rounding mode and does not support exceptions. Guard long double rounding and exception support with ifdefs based on the presence of the relevant rounding modes and exceptions. Tested on gcc/g++ testsuite using RISC-V GNU Newlib Toolchain built by riscv-gnu-toolchain with multilibs: riscv-sim/-march=rv32i/-mabi=ilp32/-mcmodel=medlow riscv-sim/-march=rv32iac/-mabi=ilp32/-mcmodel=medlow riscv-sim/-march=rv32im/-mabi=ilp32/-mcmodel=medlow riscv-sim/-march=rv32imac/-mabi=ilp32/-mcmodel=medlow riscv-sim/-march=rv32imafc/-mabi=ilp32f/-mcmodel=medlow riscv-sim/-march=rv64imac/-mabi=lp64/-mcmodel=medlow Co-authored-by: Simon Cook --- newlib/libm/ld/s_fmal.c | 14 ++++++++++++-- newlib/libm/ld/s_lrint.c | 2 ++ newlib/libm/ld/s_lround.c | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/newlib/libm/ld/s_fmal.c b/newlib/libm/ld/s_fmal.c index a379346c17..281dd685b3 100644 --- a/newlib/libm/ld/s_fmal.c +++ b/newlib/libm/ld/s_fmal.c @@ -199,27 +199,37 @@ fmal(long double x, long double y, long double z) * modes other than FE_TONEAREST are painful. */ if (spread < -LDBL_MANT_DIG) { +#ifdef FE_INEXACT feraiseexcept(FE_INEXACT); +#endif +#ifdef FE_UNDERFLOW if (!isnormal(z)) feraiseexcept(FE_UNDERFLOW); +#endif switch (oround) { - case FE_TONEAREST: + default: /* FE_TONEAREST */ return (z); +#ifdef FE_TOWARDZERO case FE_TOWARDZERO: if (x > 0.0 ^ y < 0.0 ^ z < 0.0) return (z); else return (nextafterl(z, 0)); +#endif +#ifdef FE_DOWNWARD case FE_DOWNWARD: if (x > 0.0 ^ y < 0.0) return (z); else return (nextafterl(z, -INFINITY)); - default: /* FE_UPWARD */ +#endif +#ifdef FE_UPWARD + case FE_UPWARD: if (x > 0.0 ^ y < 0.0) return (nextafterl(z, INFINITY)); else return (z); +#endif } } if (spread <= LDBL_MANT_DIG * 2) diff --git a/newlib/libm/ld/s_lrint.c b/newlib/libm/ld/s_lrint.c index ad9b978fa8..dde3cc4346 100644 --- a/newlib/libm/ld/s_lrint.c +++ b/newlib/libm/ld/s_lrint.c @@ -53,8 +53,10 @@ fn(type x) feholdexcept(&env); d = (dtype)roundit(x); +#if defined(FE_INVALID) && defined(FE_INEXACT) if (fetestexcept(FE_INVALID)) feclearexcept(FE_INEXACT); +#endif feupdateenv(&env); return (d); } diff --git a/newlib/libm/ld/s_lround.c b/newlib/libm/ld/s_lround.c index f67f9fbeb5..fefafa877d 100644 --- a/newlib/libm/ld/s_lround.c +++ b/newlib/libm/ld/s_lround.c @@ -64,7 +64,9 @@ fn(type x) x = roundit(x); return ((dtype)x); } else { +#ifdef FE_INVALID feraiseexcept(FE_INVALID); +#endif return (DTYPE_MAX); } } From 5fa3b84da08f8dc03ee55c58cfc63e9b4450285a Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 20 Dec 2023 17:13:18 -0500 Subject: [PATCH 520/767] Regenarate libgloss/Makefile.in --- libgloss/Makefile.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 7c7ad68dc4..c35f260ee6 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -899,8 +899,7 @@ includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) -@NEED_TOP_INCLUDE_DIR_FALSE@AM_CPPFLAGS = -@NEED_TOP_INCLUDE_DIR_TRUE@AM_CPPFLAGS = -idirafter $(srcroot)/include +AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). From 7a45daad9184e30c336f27b3e54b9c5bcc2d3f77 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 21 Dec 2023 00:01:54 -0700 Subject: [PATCH 521/767] Re: libgloss c99 fixes for mn10300-elf Very similar to other patches in this space. Avoid implicit int types and add missing #includes so that this code works with gcc-14. --- libgloss/mn10300/_exit.c | 2 +- libgloss/mn10300/getpid.c | 3 ++- libgloss/mn10300/isatty.c | 4 ++-- libgloss/mn10300/kill.c | 3 ++- libgloss/mn10300/read.c | 1 + libgloss/mn10300/sbrk.c | 3 +++ libgloss/mn10300/test.c | 2 ++ 7 files changed, 13 insertions(+), 5 deletions(-) diff --git a/libgloss/mn10300/_exit.c b/libgloss/mn10300/_exit.c index ec51d40884..2b548e82e3 100644 --- a/libgloss/mn10300/_exit.c +++ b/libgloss/mn10300/_exit.c @@ -18,7 +18,7 @@ static void _do_dtors() } -void _exit (n) +void _exit (int n) { /* Destructors should be done earlier because they need to be done before the files are closed, but here is better than nowhere (and this balances the diff --git a/libgloss/mn10300/getpid.c b/libgloss/mn10300/getpid.c index 20ab1866eb..fea57daff1 100644 --- a/libgloss/mn10300/getpid.c +++ b/libgloss/mn10300/getpid.c @@ -4,7 +4,8 @@ #include "trap.h" -_getpid (n) +int +_getpid (int n) { return 1; } diff --git a/libgloss/mn10300/isatty.c b/libgloss/mn10300/isatty.c index 7e63a8c7c0..3d8eb19101 100644 --- a/libgloss/mn10300/isatty.c +++ b/libgloss/mn10300/isatty.c @@ -4,8 +4,8 @@ #include "trap.h" -_isatty (fd) - int fd; +int +_isatty (int fd) { return 1; } diff --git a/libgloss/mn10300/kill.c b/libgloss/mn10300/kill.c index 40afa6a2c2..d63a2f82cd 100644 --- a/libgloss/mn10300/kill.c +++ b/libgloss/mn10300/kill.c @@ -4,7 +4,8 @@ #include "trap.h" -_kill (n, m) +int +_kill (int n, int m) { return TRAP0 (SYS_exit, 0xdead, 0, 0); } diff --git a/libgloss/mn10300/read.c b/libgloss/mn10300/read.c index 31d24cce94..2f1878c062 100644 --- a/libgloss/mn10300/read.c +++ b/libgloss/mn10300/read.c @@ -4,6 +4,7 @@ #include "trap.h" +int _read (int file, char *ptr, size_t len) diff --git a/libgloss/mn10300/sbrk.c b/libgloss/mn10300/sbrk.c index 376fd3285a..78945e77ae 100644 --- a/libgloss/mn10300/sbrk.c +++ b/libgloss/mn10300/sbrk.c @@ -1,8 +1,11 @@ #include <_ansi.h> #include #include +#include #include "trap.h" +extern int _write (int, char *, size_t); + caddr_t _sbrk (size_t incr) diff --git a/libgloss/mn10300/test.c b/libgloss/mn10300/test.c index 9ea873adff..a61dbb797a 100644 --- a/libgloss/mn10300/test.c +++ b/libgloss/mn10300/test.c @@ -1,4 +1,6 @@ #include +#include +#include static void send_msg1 (void) From 188ca64934e610666bd05186395429bb2407c264 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 21 Dec 2023 14:04:31 -0500 Subject: [PATCH 522/767] Optimize strpbrk.c --- newlib/libc/string/strpbrk.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/newlib/libc/string/strpbrk.c b/newlib/libc/string/strpbrk.c index 774db1e6d8..d984745643 100644 --- a/newlib/libc/string/strpbrk.c +++ b/newlib/libc/string/strpbrk.c @@ -29,23 +29,16 @@ strpbrk (const char *s1, const char *s2) { const char *c = s2; - if (!*s1) - return (char *) NULL; while (*s1) { for (c = s2; *c; c++) { if (*s1 == *c) - break; + return (char *) s1; } - if (*c) - break; s1++; } - if (*c == '\0') - s1 = NULL; - - return (char *) s1; + return (char *) NULL; } From bdcfea3a2473b378306aa7f008f2fbcb36ee00e5 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 21 Dec 2023 12:43:27 -0700 Subject: [PATCH 523/767] Fix iq2000 libgloss for c99/gcc-14 Similar to the others in this space. Make implicit ints explicit ints. Add prototype for _write in sbrk.c. --- libgloss/iq2000/getpid.c | 3 ++- libgloss/iq2000/isatty.c | 4 ++-- libgloss/iq2000/kill.c | 3 ++- libgloss/iq2000/read.c | 1 + libgloss/iq2000/sbrk.c | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/libgloss/iq2000/getpid.c b/libgloss/iq2000/getpid.c index 20ab1866eb..fea57daff1 100644 --- a/libgloss/iq2000/getpid.c +++ b/libgloss/iq2000/getpid.c @@ -4,7 +4,8 @@ #include "trap.h" -_getpid (n) +int +_getpid (int n) { return 1; } diff --git a/libgloss/iq2000/isatty.c b/libgloss/iq2000/isatty.c index 7e63a8c7c0..3d8eb19101 100644 --- a/libgloss/iq2000/isatty.c +++ b/libgloss/iq2000/isatty.c @@ -4,8 +4,8 @@ #include "trap.h" -_isatty (fd) - int fd; +int +_isatty (int fd) { return 1; } diff --git a/libgloss/iq2000/kill.c b/libgloss/iq2000/kill.c index 40afa6a2c2..d63a2f82cd 100644 --- a/libgloss/iq2000/kill.c +++ b/libgloss/iq2000/kill.c @@ -4,7 +4,8 @@ #include "trap.h" -_kill (n, m) +int +_kill (int n, int m) { return TRAP0 (SYS_exit, 0xdead, 0, 0); } diff --git a/libgloss/iq2000/read.c b/libgloss/iq2000/read.c index 31d24cce94..2f1878c062 100644 --- a/libgloss/iq2000/read.c +++ b/libgloss/iq2000/read.c @@ -4,6 +4,7 @@ #include "trap.h" +int _read (int file, char *ptr, size_t len) diff --git a/libgloss/iq2000/sbrk.c b/libgloss/iq2000/sbrk.c index 6dfd93b023..15bd8c8b9d 100644 --- a/libgloss/iq2000/sbrk.c +++ b/libgloss/iq2000/sbrk.c @@ -4,6 +4,7 @@ #include #include "trap.h" +int _write (int, char *, size_t); caddr_t _sbrk (size_t incr) From 7382f54405aa81ca4420a58bb805ab21ef1e0b6b Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 20:19:58 -0700 Subject: [PATCH 524/767] Fix v850 libgloss for c99/gcc-14 So the prior patch for sysnecv850 was in newlib. This time we're fixing v850 bits in libgloss. Like other patches submitted recently, this converts implicit ints to explicit ints, adds a missing prototype and header includes. --- libgloss/v850/_exit.c | 2 +- libgloss/v850/getpid.c | 3 ++- libgloss/v850/isatty.c | 4 ++-- libgloss/v850/kill.c | 1 + libgloss/v850/read.c | 1 + libgloss/v850/sbrk.c | 3 +++ 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libgloss/v850/_exit.c b/libgloss/v850/_exit.c index 44d4132bd7..7e1b09262e 100644 --- a/libgloss/v850/_exit.c +++ b/libgloss/v850/_exit.c @@ -23,7 +23,7 @@ static void _do_dtors() } -void _exit (n) +void _exit (int n) { /* Destructors should be done earlier because they need to be done before the files are closed, but here is better than nowhere (and this balances the diff --git a/libgloss/v850/getpid.c b/libgloss/v850/getpid.c index 32ac7fbfb8..f0fc4d8951 100644 --- a/libgloss/v850/getpid.c +++ b/libgloss/v850/getpid.c @@ -9,7 +9,8 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) -_getpid (n) +int +_getpid (int n) { return 1; } diff --git a/libgloss/v850/isatty.c b/libgloss/v850/isatty.c index 248ab5248f..6e4f205f0f 100644 --- a/libgloss/v850/isatty.c +++ b/libgloss/v850/isatty.c @@ -9,8 +9,8 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) -_isatty (fd) - int fd; +int +_isatty (int fd) { return 1; } diff --git a/libgloss/v850/kill.c b/libgloss/v850/kill.c index 34e5db793c..704aa9acc5 100644 --- a/libgloss/v850/kill.c +++ b/libgloss/v850/kill.c @@ -10,6 +10,7 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) +int _kill (pid, sig) pid_t pid; int sig; diff --git a/libgloss/v850/read.c b/libgloss/v850/read.c index b55d1cb9e7..5ae2c97998 100644 --- a/libgloss/v850/read.c +++ b/libgloss/v850/read.c @@ -9,6 +9,7 @@ int __trap0 (int function, int p1, int p2, int p3); #define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3)) +int _read (int file, char *ptr, int len) diff --git a/libgloss/v850/sbrk.c b/libgloss/v850/sbrk.c index 248a092b6d..65114b0b78 100644 --- a/libgloss/v850/sbrk.c +++ b/libgloss/v850/sbrk.c @@ -2,6 +2,9 @@ #include #include #include "sys/syscall.h" +#include + +extern int _write (int, char *, int); caddr_t _sbrk (int incr) From dc7ee581321c4023f9ffe0c9f609071354ba1512 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 20:25:10 -0700 Subject: [PATCH 525/767] Fix newlib H8/300 bits for C99/gcc-14 Similar to other patches. This adds a missing prototype and #include to some H8/300 specific code in newlib. Pushed to the trunk given Jeff J's pre-approval for these kinds of changes. --- newlib/libc/sys/h8300hms/sbrk.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/newlib/libc/sys/h8300hms/sbrk.c b/newlib/libc/sys/h8300hms/sbrk.c index 1456a67eb8..a99ae29048 100644 --- a/newlib/libc/sys/h8300hms/sbrk.c +++ b/newlib/libc/sys/h8300hms/sbrk.c @@ -1,8 +1,10 @@ #include <_ansi.h> #include #include +#include register char *stack_ptr asm ("sp"); +extern int _write (int, char *, int); caddr_t _sbrk(incr) From 9f3e8ba3b25e162a3c1f383a4c7a84b96fa81cd6 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 20:40:21 -0700 Subject: [PATCH 526/767] Fix frv libgloss bits for c99/gcc-14\ Same as we've seen elsewhere. Add missing prototype and header include. --- libgloss/frv/putnum.c | 2 ++ libgloss/frv/sim-inbyte.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libgloss/frv/putnum.c b/libgloss/frv/putnum.c index a07315e138..b2b2c4435b 100644 --- a/libgloss/frv/putnum.c +++ b/libgloss/frv/putnum.c @@ -14,6 +14,8 @@ */ #include "glue.h" +extern void print (char *ptr); + /* * putnum -- print a 32 bit number in hex */ diff --git a/libgloss/frv/sim-inbyte.c b/libgloss/frv/sim-inbyte.c index 9d39751b37..f5f49b9b32 100644 --- a/libgloss/frv/sim-inbyte.c +++ b/libgloss/frv/sim-inbyte.c @@ -14,6 +14,8 @@ * they apply. */ +#include + int inbyte () { From 886eadb78e94d77cf8f3f401158247fa695cf95b Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 20:48:21 -0700 Subject: [PATCH 527/767] Fix ft32 libgloss for c99/gcc-14 Just one missing header for this libgloss port. --- libgloss/ft32/sim-inbyte.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libgloss/ft32/sim-inbyte.c b/libgloss/ft32/sim-inbyte.c index 9df0e1fe47..f56890dcc8 100644 --- a/libgloss/ft32/sim-inbyte.c +++ b/libgloss/ft32/sim-inbyte.c @@ -13,6 +13,7 @@ * the new terms are clearly indicated on the first page of each file where * they apply. */ +#include int inbyte () From f7d5bd9bbf5e85f1448676dc98a2c5550419e51d Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 20:57:47 -0700 Subject: [PATCH 528/767] Fix c6x libgloss port for c99/gcc-14 Just one missing header in this case... --- libgloss/tic6x/kill.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libgloss/tic6x/kill.c b/libgloss/tic6x/kill.c index 98cd3c40ea..af0afa7610 100644 --- a/libgloss/tic6x/kill.c +++ b/libgloss/tic6x/kill.c @@ -15,6 +15,8 @@ #include <_ansi.h> #define __MYPID 1 +#include + /* * kill -- go out via exit... */ From a1a21442bc938681913584d0941dd1c8b3c98fef Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 21:00:35 -0700 Subject: [PATCH 529/767] Fix rl78 libgloss port for c99/gcc-14 Needed a prototype for SYS_write and the prototype for write was incorrect (returns an int, not a char *). --- libgloss/rl78/write.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libgloss/rl78/write.c b/libgloss/rl78/write.c index 849470c947..4bc74ae3e9 100644 --- a/libgloss/rl78/write.c +++ b/libgloss/rl78/write.c @@ -57,6 +57,7 @@ typedef unsigned int UHI __attribute__((mode(HI))); static int initted = 0; +int _SYS_write (int, char *, int); static void init_uart0 () { @@ -108,4 +109,4 @@ _write(int fd, char *ptr, int len) return rv; } -char * write (int) __attribute__((weak, alias ("_write"))); +int write (int, char *, int) __attribute__((weak, alias ("_write"))); From 73ba2873383da9028360052563945f37830f833a Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 21:17:36 -0700 Subject: [PATCH 530/767] Fix mcore libgloss port for c99/gcc-14 Missing headers and prototypes, much like other ports. --- libgloss/mcore/kill.c | 2 ++ libgloss/mcore/putnum.c | 2 ++ libgloss/mcore/raise.c | 3 +++ libgloss/mcore/sbrk.c | 2 ++ 4 files changed, 9 insertions(+) diff --git a/libgloss/mcore/kill.c b/libgloss/mcore/kill.c index 833fe89d73..5cdd4d1fc5 100644 --- a/libgloss/mcore/kill.c +++ b/libgloss/mcore/kill.c @@ -14,6 +14,8 @@ */ #include "glue.h" +#include + /* * kill -- go out via exit... */ diff --git a/libgloss/mcore/putnum.c b/libgloss/mcore/putnum.c index 10e298b950..f7e508b87f 100644 --- a/libgloss/mcore/putnum.c +++ b/libgloss/mcore/putnum.c @@ -14,6 +14,8 @@ */ #include "glue.h" +extern void print (char *ptr); + /* * putnum -- print a 32 bit number in hex */ diff --git a/libgloss/mcore/raise.c b/libgloss/mcore/raise.c index e392077922..6286d0eecb 100644 --- a/libgloss/mcore/raise.c +++ b/libgloss/mcore/raise.c @@ -14,6 +14,9 @@ */ #include "glue.h" +extern int _kill (int, int); +extern int _getpid (void); + int _raise (int sig) { diff --git a/libgloss/mcore/sbrk.c b/libgloss/mcore/sbrk.c index 8449589843..1eb8047fcd 100644 --- a/libgloss/mcore/sbrk.c +++ b/libgloss/mcore/sbrk.c @@ -16,6 +16,8 @@ #include #include "glue.h" +extern int _write (int, char *, int); + caddr_t _sbrk (size_t incr) { From 5e79655f380488eb99dd9cc39c30d7c2927fd998 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 21:21:52 -0700 Subject: [PATCH 531/767] Fix most of m32r libgloss for c99/gcc-14 Make implicit its explicit, add missing prototypes and header includes. This does not fix m32r-stub.c which needs more than the trivial work that Jeff J has pre-approved. --- libgloss/m32r/exit.c | 2 +- libgloss/m32r/kill.c | 3 ++- libgloss/m32r/raise.c | 3 ++- libgloss/m32r/sbrk.c | 4 ++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libgloss/m32r/exit.c b/libgloss/m32r/exit.c index 5251f0d625..63a64b718c 100644 --- a/libgloss/m32r/exit.c +++ b/libgloss/m32r/exit.c @@ -4,7 +4,7 @@ #include "eit.h" void -_exit (n) +_exit (int n) { TRAP0 (SYS_exit, n, 0, 0); } diff --git a/libgloss/m32r/kill.c b/libgloss/m32r/kill.c index d7aaee9ab2..48eb0fb18d 100644 --- a/libgloss/m32r/kill.c +++ b/libgloss/m32r/kill.c @@ -3,7 +3,8 @@ #include "syscall.h" #include "eit.h" -_kill (n, m) +int +_kill (int n, int m) { return TRAP0 (SYS_exit, 0xdead, 0, 0); } diff --git a/libgloss/m32r/raise.c b/libgloss/m32r/raise.c index b2dc2f65df..be79df21f9 100644 --- a/libgloss/m32r/raise.c +++ b/libgloss/m32r/raise.c @@ -1,5 +1,6 @@ /* ??? Needed? */ -_raise () +int +_raise (void) { } diff --git a/libgloss/m32r/sbrk.c b/libgloss/m32r/sbrk.c index bc82091041..92a9b60a1b 100644 --- a/libgloss/m32r/sbrk.c +++ b/libgloss/m32r/sbrk.c @@ -2,6 +2,10 @@ #include #include "syscall.h" #include "eit.h" +#include + + +extern int _write (int, char *, int); caddr_t _sbrk (int incr) From 1df8f9f09b0999e04bc0bbd7170ac7dbfa278213 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 22 Dec 2023 21:29:56 -0700 Subject: [PATCH 532/767] Fix epiphany libgloss for c99/gcc-14 So in this case we mostly need to include an internal header (epiphany-syscalls.h). In a few cases an explicit prototype is added. We've also got a return with no value in a function with a non-void return type. Finally the asm_syscall interface expects a pointer as its first argument. In a few cases we've actually got an int (file descriptor) which we just cast to a void *. It's slightly more than Jeff J's pre-approval, but I think still reasonable. --- libgloss/epiphany/_isatty.c | 1 + libgloss/epiphany/epiphany-syscalls.c | 2 +- libgloss/epiphany/epiphany-syscalls.h | 2 ++ libgloss/epiphany/fstat.c | 3 ++- libgloss/epiphany/gettimeofday.c | 1 + libgloss/epiphany/link.c | 1 + libgloss/epiphany/lseek.c | 3 ++- libgloss/epiphany/stat.c | 1 + libgloss/epiphany/unlink.c | 1 + 9 files changed, 12 insertions(+), 3 deletions(-) diff --git a/libgloss/epiphany/_isatty.c b/libgloss/epiphany/_isatty.c index cfb1bf6e42..f05aba3c32 100644 --- a/libgloss/epiphany/_isatty.c +++ b/libgloss/epiphany/_isatty.c @@ -18,6 +18,7 @@ #include #include +#include "epiphany-syscalls.h" int _isatty (int fd) diff --git a/libgloss/epiphany/epiphany-syscalls.c b/libgloss/epiphany/epiphany-syscalls.c index e6ebcee24a..4c03fe2917 100644 --- a/libgloss/epiphany/epiphany-syscalls.c +++ b/libgloss/epiphany/epiphany-syscalls.c @@ -253,7 +253,7 @@ int __attribute__ ((section ("libgloss_epiphany"))) e_raise(int signum) { __asm__ __volatile__ ("wand"); //ilatst = 1 << WAND_IVT_N; //break; - return; + return 0; case SIG_USR1: ilatst = 1 << USR_SOFT_IVT_N; diff --git a/libgloss/epiphany/epiphany-syscalls.h b/libgloss/epiphany/epiphany-syscalls.h index 3af1c6f7be..b465875735 100644 --- a/libgloss/epiphany/epiphany-syscalls.h +++ b/libgloss/epiphany/epiphany-syscalls.h @@ -35,5 +35,7 @@ int asm_open(const char* FILE, int FLAGS, int MODE); void asm_exit(int STATUS); int asm_close(int CHAN); int asm_syscall(void *P1, void *P2, void *P3, int SUBFUN); +int _fstat (int, struct stat *st); + #endif diff --git a/libgloss/epiphany/fstat.c b/libgloss/epiphany/fstat.c index 5a20b57f3f..d126c2de86 100644 --- a/libgloss/epiphany/fstat.c +++ b/libgloss/epiphany/fstat.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ @@ -44,6 +45,6 @@ int __attribute__ ((section ("libgloss_epiphany"))) _fstat (int fildes, struct stat *st) { - return asm_syscall (fildes, st, NULL, SYS_fstat); + return asm_syscall ((void *)fildes, st, NULL, SYS_fstat); } /* _fstat () */ diff --git a/libgloss/epiphany/gettimeofday.c b/libgloss/epiphany/gettimeofday.c index e169385ea4..36f17b8b0f 100644 --- a/libgloss/epiphany/gettimeofday.c +++ b/libgloss/epiphany/gettimeofday.c @@ -31,6 +31,7 @@ #include #include #include "syscall.h" +#include "epiphany-syscalls.h" int _gettimeofday (struct timeval *tp, void *tzp) diff --git a/libgloss/epiphany/link.c b/libgloss/epiphany/link.c index d87637e39a..fd0d8b9cb5 100644 --- a/libgloss/epiphany/link.c +++ b/libgloss/epiphany/link.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ diff --git a/libgloss/epiphany/lseek.c b/libgloss/epiphany/lseek.c index 64ffcdd288..65d7e52dad 100644 --- a/libgloss/epiphany/lseek.c +++ b/libgloss/epiphany/lseek.c @@ -30,6 +30,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ /*!Set a position in a file @@ -43,5 +44,5 @@ off_t __attribute__ ((section ("libgloss_epiphany"))) _lseek (int fildes, off_t offset, int whence) { - return asm_syscall (fildes, offset, whence, SYS_lseek); + return asm_syscall ((void *)fildes, (void *)offset, (void *)whence, SYS_lseek); } /* _lseek () */ diff --git a/libgloss/epiphany/stat.c b/libgloss/epiphany/stat.c index 988f28dba7..f9a3872a80 100644 --- a/libgloss/epiphany/stat.c +++ b/libgloss/epiphany/stat.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ diff --git a/libgloss/epiphany/unlink.c b/libgloss/epiphany/unlink.c index c78af284d2..653f24b951 100644 --- a/libgloss/epiphany/unlink.c +++ b/libgloss/epiphany/unlink.c @@ -31,6 +31,7 @@ #include #include +#include "epiphany-syscalls.h" /* ------------------------------------------------------------------------- */ From 1a177610d8e181d09206a5a8ce2d873822751657 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 6 Nov 2023 16:48:20 +0100 Subject: [PATCH 533/767] GCN: Implement '_exit' instead of 'exit' ... so that all of 'exit', '_exit', '_Exit' work. 'exit' thus becomes the standard 'newlib/libc/stdlib/exit.c'. (Getting 'atexit' functional needs further work elsewhere.) See also commit 5841b2f6a4208682264d03e3edfa0a09881932a6 "nvptx: Implement '_exit' instead of 'exit'". --- newlib/Makefile.in | 40 +++++++++---------- newlib/libc/machine/amdgcn/Makefile.inc | 2 +- .../libc/machine/amdgcn/{exit.c => _exit.c} | 4 +- newlib/libc/machine/amdgcn/atexit.c | 3 +- 4 files changed, 24 insertions(+), 25 deletions(-) rename newlib/libc/machine/amdgcn/{exit.c => _exit.c} (95%) diff --git a/newlib/Makefile.in b/newlib/Makefile.in index 99a29465ac..9a32646abe 100644 --- a/newlib/Makefile.in +++ b/newlib/Makefile.in @@ -630,8 +630,8 @@ check_PROGRAMS = @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/strrchr.S @HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__append_67 = \ +@HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/_exit.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/abort.c \ -@HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/exit.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/atexit.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/mlock.c \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/getreent.c \ @@ -1892,8 +1892,8 @@ am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-strnlen.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-strrchr-stub.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AARCH64_TRUE@ libc/machine/aarch64/libc_a-strrchr.$(OBJEXT) -@HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__objects_78 = libc/machine/amdgcn/libc_a-abort.$(OBJEXT) \ -@HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-exit.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_AMDGCN_TRUE@am__objects_78 = libc/machine/amdgcn/libc_a-_exit.$(OBJEXT) \ +@HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-abort.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-atexit.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-mlock.$(OBJEXT) \ @HAVE_LIBC_MACHINE_AMDGCN_TRUE@ libc/machine/amdgcn/libc_a-getreent.$(OBJEXT) \ @@ -8161,10 +8161,10 @@ libc/machine/amdgcn/$(am__dirstamp): libc/machine/amdgcn/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) libc/machine/amdgcn/$(DEPDIR) @: > libc/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libc/machine/amdgcn/libc_a-abort.$(OBJEXT): \ +libc/machine/amdgcn/libc_a-_exit.$(OBJEXT): \ libc/machine/amdgcn/$(am__dirstamp) \ libc/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) -libc/machine/amdgcn/libc_a-exit.$(OBJEXT): \ +libc/machine/amdgcn/libc_a-abort.$(OBJEXT): \ libc/machine/amdgcn/$(am__dirstamp) \ libc/machine/amdgcn/$(DEPDIR)/$(am__dirstamp) libc/machine/amdgcn/libc_a-atexit.$(OBJEXT): \ @@ -12816,9 +12816,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-strnlen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-strrchr-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/aarch64/$(DEPDIR)/libc_a-strrchr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-abort.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-atexit.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-getreent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-mlock.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libc/machine/amdgcn/$(DEPDIR)/libc_a-signal.Po@am__quote@ @@ -33347,6 +33347,20 @@ libc/machine/aarch64/libc_a-strrchr-stub.obj: libc/machine/aarch64/strrchr-stub. @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/aarch64/libc_a-strrchr-stub.obj `if test -f 'libc/machine/aarch64/strrchr-stub.c'; then $(CYGPATH_W) 'libc/machine/aarch64/strrchr-stub.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/aarch64/strrchr-stub.c'; fi` +libc/machine/amdgcn/libc_a-_exit.o: libc/machine/amdgcn/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/amdgcn/libc_a-_exit.o -MD -MP -MF libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Tpo -c -o libc/machine/amdgcn/libc_a-_exit.o `test -f 'libc/machine/amdgcn/_exit.c' || echo '$(srcdir)/'`libc/machine/amdgcn/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Tpo libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/amdgcn/_exit.c' object='libc/machine/amdgcn/libc_a-_exit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/amdgcn/libc_a-_exit.o `test -f 'libc/machine/amdgcn/_exit.c' || echo '$(srcdir)/'`libc/machine/amdgcn/_exit.c + +libc/machine/amdgcn/libc_a-_exit.obj: libc/machine/amdgcn/_exit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/amdgcn/libc_a-_exit.obj -MD -MP -MF libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Tpo -c -o libc/machine/amdgcn/libc_a-_exit.obj `if test -f 'libc/machine/amdgcn/_exit.c'; then $(CYGPATH_W) 'libc/machine/amdgcn/_exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/amdgcn/_exit.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Tpo libc/machine/amdgcn/$(DEPDIR)/libc_a-_exit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/amdgcn/_exit.c' object='libc/machine/amdgcn/libc_a-_exit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/amdgcn/libc_a-_exit.obj `if test -f 'libc/machine/amdgcn/_exit.c'; then $(CYGPATH_W) 'libc/machine/amdgcn/_exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/amdgcn/_exit.c'; fi` + libc/machine/amdgcn/libc_a-abort.o: libc/machine/amdgcn/abort.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/amdgcn/libc_a-abort.o -MD -MP -MF libc/machine/amdgcn/$(DEPDIR)/libc_a-abort.Tpo -c -o libc/machine/amdgcn/libc_a-abort.o `test -f 'libc/machine/amdgcn/abort.c' || echo '$(srcdir)/'`libc/machine/amdgcn/abort.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/amdgcn/$(DEPDIR)/libc_a-abort.Tpo libc/machine/amdgcn/$(DEPDIR)/libc_a-abort.Po @@ -33361,20 +33375,6 @@ libc/machine/amdgcn/libc_a-abort.obj: libc/machine/amdgcn/abort.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/amdgcn/libc_a-abort.obj `if test -f 'libc/machine/amdgcn/abort.c'; then $(CYGPATH_W) 'libc/machine/amdgcn/abort.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/amdgcn/abort.c'; fi` -libc/machine/amdgcn/libc_a-exit.o: libc/machine/amdgcn/exit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/amdgcn/libc_a-exit.o -MD -MP -MF libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Tpo -c -o libc/machine/amdgcn/libc_a-exit.o `test -f 'libc/machine/amdgcn/exit.c' || echo '$(srcdir)/'`libc/machine/amdgcn/exit.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Tpo libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/amdgcn/exit.c' object='libc/machine/amdgcn/libc_a-exit.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/amdgcn/libc_a-exit.o `test -f 'libc/machine/amdgcn/exit.c' || echo '$(srcdir)/'`libc/machine/amdgcn/exit.c - -libc/machine/amdgcn/libc_a-exit.obj: libc/machine/amdgcn/exit.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/amdgcn/libc_a-exit.obj -MD -MP -MF libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Tpo -c -o libc/machine/amdgcn/libc_a-exit.obj `if test -f 'libc/machine/amdgcn/exit.c'; then $(CYGPATH_W) 'libc/machine/amdgcn/exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/amdgcn/exit.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Tpo libc/machine/amdgcn/$(DEPDIR)/libc_a-exit.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libc/machine/amdgcn/exit.c' object='libc/machine/amdgcn/libc_a-exit.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/machine/amdgcn/libc_a-exit.obj `if test -f 'libc/machine/amdgcn/exit.c'; then $(CYGPATH_W) 'libc/machine/amdgcn/exit.c'; else $(CYGPATH_W) '$(srcdir)/libc/machine/amdgcn/exit.c'; fi` - libc/machine/amdgcn/libc_a-atexit.o: libc/machine/amdgcn/atexit.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/amdgcn/libc_a-atexit.o -MD -MP -MF libc/machine/amdgcn/$(DEPDIR)/libc_a-atexit.Tpo -c -o libc/machine/amdgcn/libc_a-atexit.o `test -f 'libc/machine/amdgcn/atexit.c' || echo '$(srcdir)/'`libc/machine/amdgcn/atexit.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/amdgcn/$(DEPDIR)/libc_a-atexit.Tpo libc/machine/amdgcn/$(DEPDIR)/libc_a-atexit.Po diff --git a/newlib/libc/machine/amdgcn/Makefile.inc b/newlib/libc/machine/amdgcn/Makefile.inc index d26603aa8d..e1fc5ae4d9 100644 --- a/newlib/libc/machine/amdgcn/Makefile.inc +++ b/newlib/libc/machine/amdgcn/Makefile.inc @@ -1,6 +1,6 @@ libc_a_SOURCES += \ + %D%/_exit.c \ %D%/abort.c \ - %D%/exit.c \ %D%/atexit.c \ %D%/mlock.c \ %D%/getreent.c \ diff --git a/newlib/libc/machine/amdgcn/exit.c b/newlib/libc/machine/amdgcn/_exit.c similarity index 95% rename from newlib/libc/machine/amdgcn/exit.c rename to newlib/libc/machine/amdgcn/_exit.c index bdd532edd7..82171aff98 100644 --- a/newlib/libc/machine/amdgcn/exit.c +++ b/newlib/libc/machine/amdgcn/_exit.c @@ -13,11 +13,11 @@ * they apply. */ -#include +#include #include "exit-value.h" void __attribute__((noreturn)) -exit (int val) +_exit (int val) { exit_with_status_and_signal (val, 0); } diff --git a/newlib/libc/machine/amdgcn/atexit.c b/newlib/libc/machine/amdgcn/atexit.c index 674571435c..8ddd92cfaf 100644 --- a/newlib/libc/machine/amdgcn/atexit.c +++ b/newlib/libc/machine/amdgcn/atexit.c @@ -18,8 +18,7 @@ int atexit (void (*function)(void)) { - /* Our current implementation of exit does not run functions registered with - atexit, so fail here. */ + /* Fail here. */ abort (); return 1; } From ddb614993a78bf2cdf2ed269617f7f552490e76f Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Thu, 28 Dec 2023 04:31:19 +0100 Subject: [PATCH 534/767] newlib MMIX: Fix compilation warnings that recent gcc treats as errors Without this, when building with recent gcc, we'll see errors when compiling for --target mmix the first being: CC libc/sys/mmixware/libc_a-chmod.o In file included from /x/newlib/libc/sys/mmixware/chmod.c:17: /x/newlib/libc/sys/mmixware/chmod.c: In function 'chmod': /x/newlib/libc/sys/mmixware/sys/syscall.h:139:6: error: implicit declaration \ of function 'sprintf' [-Wimplicit-function-declaration] 139 | sprintf (buf, "UNIMPLEMENTED %s in %s\n", __FUNCTION__, __FILE__); \ Other warnings also quelled. * libc/sys/mmixware/sys/syscall.h: Include stdio.h, string.h and unistd.h. * libc/sys/mmixware/_exit.c: Call __unreachable after simulator exit. * libc/sys/mmixware/chown.c (chown): Match declaration in unistd.h. * libc/sys/mmixware/getpid.c (_getpid): Ditto. * libc/sys/mmixware/kill.c (_kill): Ditto. * libc/sys/mmixware/link.c (_link): Ditto. * libc/sys/mmixware/read.c (_read): Ditto. * libc/sys/mmixware/sbrk.c (_sbrk): Ditto. * libc/sys/mmixware/unlink.c (_unlink): Ditto. * libc/sys/mmixware/write.c (_write): Ditto. --- newlib/libc/sys/mmixware/_exit.c | 3 ++- newlib/libc/sys/mmixware/chown.c | 4 ++-- newlib/libc/sys/mmixware/getpid.c | 5 +++-- newlib/libc/sys/mmixware/kill.c | 5 +++-- newlib/libc/sys/mmixware/link.c | 4 ++-- newlib/libc/sys/mmixware/read.c | 4 ++-- newlib/libc/sys/mmixware/sbrk.c | 10 +++++----- newlib/libc/sys/mmixware/sys/syscall.h | 8 +++++++- newlib/libc/sys/mmixware/unlink.c | 4 ++-- newlib/libc/sys/mmixware/write.c | 4 ++-- 10 files changed, 30 insertions(+), 21 deletions(-) diff --git a/newlib/libc/sys/mmixware/_exit.c b/newlib/libc/sys/mmixware/_exit.c index 2f70154f29..9ac62c743a 100644 --- a/newlib/libc/sys/mmixware/_exit.c +++ b/newlib/libc/sys/mmixware/_exit.c @@ -1,6 +1,6 @@ /* _exit for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -27,4 +27,5 @@ void _exit (int n) : /* No outputs. */ : "r" (n) : "memory"); + __unreachable (); } diff --git a/newlib/libc/sys/mmixware/chown.c b/newlib/libc/sys/mmixware/chown.c index f4fc49cac9..646504b32a 100644 --- a/newlib/libc/sys/mmixware/chown.c +++ b/newlib/libc/sys/mmixware/chown.c @@ -1,6 +1,6 @@ /* chown stub for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -18,7 +18,7 @@ #include int -chown (const char *path, short owner, short group) +chown (const char *path, uid_t owner, gid_t group) { UNIMPLEMENTED (("path: %s, owner: %d, group: %d", path, owner, group)); errno = ENOSYS; diff --git a/newlib/libc/sys/mmixware/getpid.c b/newlib/libc/sys/mmixware/getpid.c index 5190726bf5..723317f17d 100644 --- a/newlib/libc/sys/mmixware/getpid.c +++ b/newlib/libc/sys/mmixware/getpid.c @@ -1,6 +1,6 @@ /* getpid stub for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -16,7 +16,8 @@ #include #include "sys/syscall.h" -_getpid (n) +pid_t +_getpid (void) { return 1; } diff --git a/newlib/libc/sys/mmixware/kill.c b/newlib/libc/sys/mmixware/kill.c index c01f53c81a..ed9d92bb10 100644 --- a/newlib/libc/sys/mmixware/kill.c +++ b/newlib/libc/sys/mmixware/kill.c @@ -1,6 +1,6 @@ /* kill for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -17,7 +17,8 @@ #include "sys/syscall.h" #include -_kill (n, m) +int +_kill (pid_t n, int m __unused) { if (n == 1) return TRAP1i (SYS_halt, 0); diff --git a/newlib/libc/sys/mmixware/link.c b/newlib/libc/sys/mmixware/link.c index 0629163b38..cbcf7ee448 100644 --- a/newlib/libc/sys/mmixware/link.c +++ b/newlib/libc/sys/mmixware/link.c @@ -1,6 +1,6 @@ /* link stub for MMIXware. - Copyright (C) 2002 Hans-Peter Nilsson + Copyright (C) 2002, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -18,7 +18,7 @@ #include int -_link () +_link (const char *p1 __unused, const char *p2 __unused) { errno = EMLINK; return -1; diff --git a/newlib/libc/sys/mmixware/read.c b/newlib/libc/sys/mmixware/read.c index f0f5e22f97..3f34ca4876 100644 --- a/newlib/libc/sys/mmixware/read.c +++ b/newlib/libc/sys/mmixware/read.c @@ -1,6 +1,6 @@ /* read for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -19,7 +19,7 @@ int _read (int file, - char *ptr, + void *ptr, size_t len) { long ret; diff --git a/newlib/libc/sys/mmixware/sbrk.c b/newlib/libc/sys/mmixware/sbrk.c index f50886df86..621169fc8a 100644 --- a/newlib/libc/sys/mmixware/sbrk.c +++ b/newlib/libc/sys/mmixware/sbrk.c @@ -1,6 +1,6 @@ /* sbrk for MMIXware. - Copyright (C) 2001, 2012 Hans-Peter Nilsson + Copyright (C) 2001, 2012, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -31,10 +31,10 @@ __asm__ (" .global _Sbrk_high\n" "_Sbrk_high IS Pool_Segment\n" "Pool_Segment IS 0x40<<56"); -caddr_t -_sbrk (size_t incr) +void * +_sbrk (ptrdiff_t incr) { - char *prev_heap_end; + void *prev_heap_end; prev_heap_end = _Sbrk_high; @@ -55,5 +55,5 @@ _sbrk (size_t incr) } _Sbrk_high += incr; - return (caddr_t) prev_heap_end; + return prev_heap_end; } diff --git a/newlib/libc/sys/mmixware/sys/syscall.h b/newlib/libc/sys/mmixware/sys/syscall.h index 4b4419cc0e..b5e40cc12b 100644 --- a/newlib/libc/sys/mmixware/sys/syscall.h +++ b/newlib/libc/sys/mmixware/sys/syscall.h @@ -1,6 +1,6 @@ /* syscall defines for MMIXware. - Copyright (C) 2001, 2002, 2007 Hans-Peter Nilsson + Copyright (C) 2001, 2002, 2007, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -11,6 +11,12 @@ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ +/* The standard-library calls in UNIMPLEMENTED, defined below, need to + be declared. Don't push the #include requirements to the caller. */ +#include +#include +#include + /* These are the mmixware simulator calls that are of use in newlib. */ #define SYS_halt 0 diff --git a/newlib/libc/sys/mmixware/unlink.c b/newlib/libc/sys/mmixware/unlink.c index b70df2dc3f..dfc92c6223 100644 --- a/newlib/libc/sys/mmixware/unlink.c +++ b/newlib/libc/sys/mmixware/unlink.c @@ -1,6 +1,6 @@ /* unlink stub for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -17,7 +17,7 @@ #include "sys/syscall.h" int -_unlink () +_unlink (const char *p __unused) { return -1; } diff --git a/newlib/libc/sys/mmixware/write.c b/newlib/libc/sys/mmixware/write.c index 74d5fcaa71..89247895ea 100644 --- a/newlib/libc/sys/mmixware/write.c +++ b/newlib/libc/sys/mmixware/write.c @@ -1,6 +1,6 @@ /* write for MMIXware. - Copyright (C) 2001 Hans-Peter Nilsson + Copyright (C) 2001, 2023 Hans-Peter Nilsson Permission to use, copy, modify, and distribute this software is freely granted, provided that the above copyright notice, this notice @@ -19,7 +19,7 @@ int _write ( int file, - char *ptr, + const void *ptr, size_t len) { long ret; From 98230b7db1bab77e5fce817ed8c81dd7c577372c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 02:37:30 -0500 Subject: [PATCH 535/767] libgloss: xtensa: fix crt0.o rule Don't hardcode a custom rule for this -- reuse libobjs_a_SOURCES which was designed for this exact scenario. --- libgloss/Makefile.in | 82 +++++++++++++++++++++--------------- libgloss/xtensa/Makefile.inc | 7 +-- 2 files changed, 52 insertions(+), 37 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index c35f260ee6..429e48ac76 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -200,22 +200,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_40 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_41 = \ +@CONFIG_XTENSA_TRUE@am__append_40 = \ +@CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ +@CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ +@CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S + +@CONFIG_XTENSA_TRUE@am__append_41 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_42 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_42 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_43 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_43 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_44 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_45 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_44 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_45 = xtensa/boards/esp32/board.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_46 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_47 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_48 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_47 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_48 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = xtensa/boards/esp32s3/board.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_51 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -446,8 +451,11 @@ libobjs_a_LIBADD = @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) @CONFIG_IQ2000_TRUE@am__objects_5 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_6 = lm32/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_7 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ - $(am__objects_5) $(am__objects_6) + $(am__objects_5) $(am__objects_6) $(am__objects_7) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -544,7 +552,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_7 = \ +@CONFIG_RISCV_TRUE@am__objects_8 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -577,17 +585,17 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_7) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_8) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_8 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_9 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_9 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_10 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_8) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_9) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_9) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_10) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -888,13 +896,13 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_27) $(am__append_29) $(am__append_32) \ - $(am__append_34) $(am__append_39) $(am__append_41) \ - $(am__append_43) $(am__append_47) + $(am__append_34) $(am__append_39) $(am__append_42) \ + $(am__append_44) $(am__append_48) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_24) $(am__append_28) \ $(am__append_30) $(am__append_33) $(am__append_35) \ - $(am__append_40) $(am__append_42) + $(am__append_41) $(am__append_43) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -905,7 +913,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ - $(am__append_31) + $(am__append_31) $(am__append_40) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1191,19 +1199,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_44) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_48) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_45) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_49) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_46) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_50) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_46) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_50) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_47) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_51) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1699,6 +1707,18 @@ lm32/$(DEPDIR)/$(am__dirstamp): @: > lm32/$(DEPDIR)/$(am__dirstamp) lm32/crt0.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/$(DEPDIR)/$(am__dirstamp) +xtensa/$(am__dirstamp): + @$(MKDIR_P) xtensa + @: > xtensa/$(am__dirstamp) +xtensa/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) xtensa/$(DEPDIR) + @: > xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/crt0.$(OBJEXT): xtensa/$(am__dirstamp) \ + xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/crt1-sim.$(OBJEXT): xtensa/$(am__dirstamp) \ + xtensa/$(DEPDIR)/$(am__dirstamp) +xtensa/crt1-boards.$(OBJEXT): xtensa/$(am__dirstamp) \ + xtensa/$(DEPDIR)/$(am__dirstamp) libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPENDENCIES) $(AM_V_at)-rm -f libobjs.a @@ -1965,12 +1985,6 @@ riscv/libsim.a: $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f riscv/libsim.a $(AM_V_AR)$(riscv_libsim_a_AR) riscv/libsim.a $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) riscv/libsim.a -xtensa/$(am__dirstamp): - @$(MKDIR_P) xtensa - @: > xtensa/$(am__dirstamp) -xtensa/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) xtensa/$(DEPDIR) - @: > xtensa/$(DEPDIR)/$(am__dirstamp) xtensa/xtensa_libgloss_a-sleep.$(OBJEXT): xtensa/$(am__dirstamp) \ xtensa/$(DEPDIR)/$(am__dirstamp) xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT): xtensa/$(am__dirstamp) \ @@ -2331,6 +2345,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt1-boards.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt1-sim.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-sleep.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/xtensa_libgloss_a-window-vectors.Po@am__quote@ @@ -5403,9 +5420,6 @@ maintainer-clean-local: maintainer-clean-multi @CONFIG_BFIN_TRUE@bfin/basiccrt60xc1.$(OBJEXT): bfin/basiccrt.S @CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ -@CONFIG_XTENSA_TRUE@xtensa/crt0.$(OBJEXT): xtensa/crt0.S -@CONFIG_XTENSA_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(CPPFLAGS) -o $@ -c $< - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/libgloss/xtensa/Makefile.inc b/libgloss/xtensa/Makefile.inc index 02308e4f34..3ce02c190e 100644 --- a/libgloss/xtensa/Makefile.inc +++ b/libgloss/xtensa/Makefile.inc @@ -8,6 +8,10 @@ multilibtool_DATA += \ %D%/sys.qemu.specs \ %D%/sys.openocd.specs \ %D%/crt0.o +libobjs_a_SOURCES += \ + %D%/crt0.S \ + %D%/crt1-sim.S \ + %D%/crt1-boards.S multilibtool_LIBRARIES += %D%/libgloss.a @@ -50,6 +54,3 @@ multilibtool_DATA += %D%/boards/esp32s3/memory.elf.ld %C%_libsys_openocd_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32s3/include endif endif - -%D%/crt0.$(OBJEXT): %D%/crt0.S - $(AM_V_CPPAS)$(CPPASCOMPILE) $(CPPFLAGS) -o $@ -c $< From a84860f4882c4d3c743c66a4861b5213799e6405 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 00:33:05 -0500 Subject: [PATCH 536/767] libgloss: sparc: add missing m4 include Commit 8d758283785042589e95c93d7899cecf28ef00ea ("libgloss: merge sparc configure script up a level") missed including the sparc acinclude.m4 file which meant none of the sparc-specific vars were propagating to the sub-makefile. --- libgloss/Makefile.in | 8 +++++++- libgloss/configure | 20 ++++++++++++++++++++ libgloss/configure.ac | 1 + libgloss/sparc/Makefile.in | 2 +- libgloss/sparc/acinclude.m4 | 6 +++--- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 429e48ac76..fd845cf5f3 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -235,6 +235,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/mips/acinclude.m4 \ $(top_srcdir)/mn10300/acinclude.m4 \ $(top_srcdir)/moxie/acinclude.m4 \ + $(top_srcdir)/sparc/acinclude.m4 \ $(top_srcdir)/xtensa/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -253,7 +254,8 @@ CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ moxie/Makefile microblaze/Makefile mt/Makefile v850/Makefile \ visium/Makefile xc16x/Makefile xstormy16/Makefile \ m32c/Makefile msp430/Makefile rl78/Makefile rx/Makefile \ - spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile + spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -822,6 +824,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ +SPARC_CPU = @SPARC_CPU@ +SPARC_CYGMONLDSCRIPTTEMPL = @SPARC_CYGMONLDSCRIPTTEMPL@ STRIP = @STRIP@ VERSION = @VERSION@ XTENSA_BOARD_ESP = @XTENSA_BOARD_ESP@ @@ -1345,6 +1349,8 @@ or1k/Makefile: $(top_builddir)/config.status $(top_srcdir)/or1k/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ pru/Makefile: $(top_builddir)/config.status $(top_srcdir)/pru/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ +sparc/libsys/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc/libsys/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ install-multilibtoolLIBRARIES: $(multilibtool_LIBRARIES) @$(NORMAL_INSTALL) @list='$(multilibtool_LIBRARIES)'; test -n "$(multilibtooldir)" || list=; \ diff --git a/libgloss/configure b/libgloss/configure index 28b45289ef..5f6bc58418 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -596,6 +596,8 @@ HAVE_XTENSA_BOARD_ESP32S3_TRUE HAVE_XTENSA_BOARD_ESP32_FALSE HAVE_XTENSA_BOARD_ESP32_TRUE XTENSA_BOARD_ESP +SPARC_CYGMONLDSCRIPTTEMPL +SPARC_CPU MOXIE_BUILD_CRT0_FALSE MOXIE_BUILD_CRT0_TRUE MN10300_BSP_LIST @@ -5108,6 +5110,23 @@ esac +SPARC_CPU=SPARC +case ${target_cpu} in +sparclite*) SPARC_CPU=SLITE ;; +sparclet*) SPARC_CPU=SPLET ;; +sparc64*) SPARC_CPU=SPARC64 ;; +sparc86x*) SPARC_CPU=SLITE ;; +esac + + +SPARC_CYGMONLDSCRIPTTEMPL=cygmon.ld.src +case ${target_cpu} in +sparc64*) SPARC_CYGMONLDSCRIPTTEMPL=cygmon-sparc64-ld.src ;; +sparclet-*-aout*) SPARC_CYGMONLDSCRIPTTEMPL=cygmon.ld.src; ac_config_files="$ac_config_files sparc/libsys/Makefile" + ;; +esac + + XTENSA_BOARD_ESP=`echo $CC | sed 's/.*-mdynconfig=xtensa_\(.*\)\.so.*/\1/;s/.*-mcpu=\(^ *\).*/\1/;s/.* .*/unknown/'` if test x$XTENSA_BOARD_ESP = xesp32; then @@ -6069,6 +6088,7 @@ do "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; "pru/Makefile") CONFIG_FILES="$CONFIG_FILES pru/Makefile" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "sparc/libsys/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/libsys/Makefile" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 19bdf9b3a6..268d86c518 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -351,6 +351,7 @@ m4_include([mcore/acinclude.m4]) m4_include([mips/acinclude.m4]) m4_include([mn10300/acinclude.m4]) m4_include([moxie/acinclude.m4]) +m4_include([sparc/acinclude.m4]) m4_include([xtensa/acinclude.m4]) AC_CACHE_CHECK([for compiler search settings], libc_cv_compiler_isystem, [dnl diff --git a/libgloss/sparc/Makefile.in b/libgloss/sparc/Makefile.in index 4f22cf41c1..c99d92a63b 100644 --- a/libgloss/sparc/Makefile.in +++ b/libgloss/sparc/Makefile.in @@ -170,7 +170,7 @@ sparcl-stub.o: $(srcdir)/sparcl-stub.c $(srcdir)/../debug.h $(srcdir)/../debug.c erc32-stub.o: $(srcdir)/erc32-stub.c $(srcdir)/../debug.h $(srcdir)/../debug.c fixctors.o : $(srcdir)/fixctors.c -$(objdir)/cygmon.ld: @SPARC_CYGMONLDSCRIPTTEMPL@ +$(objdir)/cygmon.ld: $(srcdir)/@SPARC_CYGMONLDSCRIPTTEMPL@ sed 's/TARGET_OBJ_FORMAT/$($(CPU)_OBJ_FORMAT)/g;s/TARGET_RAM_START/$($(CPU)_RAM_START)/g;' < $(<) > $(objdir)/cygmon.ld install: $($(CPU)_INSTALL) diff --git a/libgloss/sparc/acinclude.m4 b/libgloss/sparc/acinclude.m4 index bba852b9a8..a58c7a559c 100644 --- a/libgloss/sparc/acinclude.m4 +++ b/libgloss/sparc/acinclude.m4 @@ -7,9 +7,9 @@ sparc86x*) SPARC_CPU=SLITE ;; esac AC_SUBST(SPARC_CPU) -SPARC_CYGMONLDSCRIPTTEMPL=${srcdir}/sparc/cygmon.ld.src +SPARC_CYGMONLDSCRIPTTEMPL=cygmon.ld.src case ${target_cpu} in -sparc64*) SPARC_CYGMONLDSCRIPTTEMPL=${srcdir}/sparc/cygmon-sparc64-ld.src ;; -sparclet-*-aout*) SPARC_CYGMONLDSCRIPTTEMPL=${srcdir}/sparc/cygmon.ld.src; AC_CONFIG_FILES([sparc/libsys/Makefile]) ;; +sparc64*) SPARC_CYGMONLDSCRIPTTEMPL=cygmon-sparc64-ld.src ;; +sparclet-*-aout*) SPARC_CYGMONLDSCRIPTTEMPL=cygmon.ld.src; AC_CONFIG_FILES([sparc/libsys/Makefile]) ;; esac AC_SUBST(SPARC_CYGMONLDSCRIPTTEMPL) From 7ef32a98cdf74157ae734a7a833af5171585db0c Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 29 Dec 2023 21:23:26 -0700 Subject: [PATCH 537/767] Fix another missing header file for mcore libgloss I guess I must have missed this when working through the trivial port specific changes. This adds an include of stdlib.h to get a prototype for exit(). Pushed to the trunk. --- libgloss/mcore/sbrk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libgloss/mcore/sbrk.c b/libgloss/mcore/sbrk.c index 1eb8047fcd..c6860194ce 100644 --- a/libgloss/mcore/sbrk.c +++ b/libgloss/mcore/sbrk.c @@ -14,6 +14,7 @@ */ #include #include +#include #include "glue.h" extern int _write (int, char *, int); From 3d10b04f1ed9bf53c282081c88165951e8c32cec Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 29 Dec 2023 21:31:27 -0700 Subject: [PATCH 538/767] Fix various c99/gcc-14 issues in generic libgloss code Similar to what's been done in the ports, but this time in generic code. Add missing #includes to pick up prototypes. Add prototypes for various internal functions where needed. Fix signatures of various functions to match what's provided by the headers (read, sbrk, write, unlink). Nearly done with this effort ;-) Pushed to the trunk, --- libgloss/glue.h | 2 ++ libgloss/putnum.c | 2 ++ libgloss/read.c | 5 +++-- libgloss/sbrk.c | 5 ++--- libgloss/unlink.c | 2 +- libgloss/write.c | 5 +++-- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/libgloss/glue.h b/libgloss/glue.h index 0a7e36db21..98c0a6ad22 100644 --- a/libgloss/glue.h +++ b/libgloss/glue.h @@ -13,6 +13,7 @@ * they apply. */ #include <_ansi.h> +#include #ifndef NULL # define NULL 0 @@ -28,4 +29,5 @@ extern char _end[]; /* _end is set in the linker command file */ /* only one prcess support, as this is OS dependant */ #define __MYPID 1 +int outbyte (char); diff --git a/libgloss/putnum.c b/libgloss/putnum.c index c368c4136c..6e1051e240 100644 --- a/libgloss/putnum.c +++ b/libgloss/putnum.c @@ -14,6 +14,8 @@ */ #include "glue.h" +extern void print (char *ptr); + /* * putnum -- print a 32 bit number in hex */ diff --git a/libgloss/read.c b/libgloss/read.c index 24108ce0d4..83a3b549b3 100644 --- a/libgloss/read.c +++ b/libgloss/read.c @@ -22,10 +22,11 @@ extern char inbyte (void); */ int read (int fd, - char *buf, - int nbytes) + void *buf_, + size_t nbytes) { int i = 0; + char *buf = buf_; for (i = 0; i < nbytes; i++) { *(buf + i) = inbyte(); diff --git a/libgloss/sbrk.c b/libgloss/sbrk.c index c222b4bbf2..d567a4a602 100644 --- a/libgloss/sbrk.c +++ b/libgloss/sbrk.c @@ -27,9 +27,8 @@ char *heap_ptr; * RAM. We just increment a pointer in what's * left of memory on the board. */ -char * -sbrk (nbytes) - int nbytes; +void * +sbrk (ptrdiff_t nbytes) { char *base; diff --git a/libgloss/unlink.c b/libgloss/unlink.c index 76c1a4feff..af06c51d72 100644 --- a/libgloss/unlink.c +++ b/libgloss/unlink.c @@ -20,7 +20,7 @@ * we just return an error. */ int -unlink (char * path) +unlink (const char * path) { errno = EIO; return (-1); diff --git a/libgloss/write.c b/libgloss/write.c index 28b7ea37a4..80bcd4a774 100644 --- a/libgloss/write.c +++ b/libgloss/write.c @@ -23,10 +23,11 @@ extern int outbyte (char x); */ int write (int fd, - char *buf, - int nbytes) + const void *buf_, + size_t nbytes) { int i; + const char *buf = buf_; for (i = 0; i < nbytes; i++) { if (*(buf + i) == '\n') { From ec119e1084f2adffb569e1b66b3fc11397d8e837 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sun, 31 Dec 2023 09:08:21 -0700 Subject: [PATCH 539/767] Minor improvement to H8 startup code Basically the startup code needs to clear memory from _edata to _end. In the past it's been done with a fairly naive copy loop. This changes the code to just call memset and let memset figure out a sensible way to handle the operation given the size and alignment requirements. I don't have performance data on this. I cobbled it together some time ago in response to seeing some of the GCC tests with larger .bss sections taking an insane amount of time to just get from _start to main. With the fixes to the H8 decoder in the simulator it may not matter nearly as much anymore. This has been in my tester for months. Naturally it does not cause any regressions in the H8 port. --- newlib/libc/sys/h8300hms/crt0.S | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/newlib/libc/sys/h8300hms/crt0.S b/newlib/libc/sys/h8300hms/crt0.S index 6394f6841f..05634113cc 100644 --- a/newlib/libc/sys/h8300hms/crt0.S +++ b/newlib/libc/sys/h8300hms/crt0.S @@ -9,12 +9,10 @@ _start: mov.w #_stack,sp mov.w #_edata,r0 - mov.w #_end,r1 - sub.w r2,r2 -.Loop: mov.w r2,@r0 - adds #2,r0 - cmp r1,r0 - blo .Loop + mov.w #_end,r2 + sub.w r1,r1 + sub.w r0,r2 + jsr @_memset #ifdef __ELF__ mov.l #__fini,r0 jsr @_atexit @@ -43,12 +41,10 @@ _stack: .word 1 _start: mov.l #_stack,sp mov.l #_edata,er0 - mov.l #_end,er1 - sub.w r2,r2 ; not sure about alignment requirements -.Loop: mov.w r2,@er0 ; playing it safe for now - adds #2,er0 - cmp.l er1,er0 - blo .Loop + mov.l #_end,er2 + sub.w r1,r1 + sub.l er0,er2 + jsr @_memset #ifdef __ELF__ mov.l #__fini,er0 jsr @_atexit @@ -77,12 +73,10 @@ _stack: .long 1 _start: mov.l #_stack,sp mov.l #_edata,er0 - mov.l #_end,er1 - sub.w r2,r2 ; not sure about alignment requirements -.Loop: mov.w r2,@er0 ; playing it safe for now - adds #2,er0 - cmp.l er1,er0 - blo .Loop + mov.l #_end,er2 + sub.w r1,r1 + sub.l er0,er2 + jsr @_memset #ifdef __ELF__ mov.l #__fini,er0 jsr @_atexit From 26f7004bf73c421c3fd5e5a6ccf470d05337b435 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Sun, 31 Dec 2023 12:00:18 -0500 Subject: [PATCH 540/767] Changes for newlib 4.4.0 snapshot - bump up version to 4.4.0 --- newlib/NEWS | 12 ++++++++++++ newlib/acinclude.m4 | 2 +- newlib/configure | 24 ++++++++++++------------ newlib/libc/libc.texi | 4 ++-- newlib/libm/libm.texi | 4 ++-- 5 files changed, 29 insertions(+), 17 deletions(-) diff --git a/newlib/NEWS b/newlib/NEWS index ee456f9b8a..348cb4d7d0 100644 --- a/newlib/NEWS +++ b/newlib/NEWS @@ -1,5 +1,17 @@ +*** Major changes in newlib version 4.4.0: + +- long double support for i386, aarch64, and x86_64 added from FreeBSD +- RISC-V Zfinx/Zdinx extension support +- wildcard support added to allow arbitrary include dirs to be specified for a platform +- Xtensa port added +- printf family helper functions split out into separate files to save space when linking +- wide-oriented I/O fixes including proper split of byte and wide-oriented stdio functions +- support added for RISC-V long double math +- fixes for c99/gcc-14 warnings treated as errors in multiple platforms + *** Major changes in newlib version 4.3.0: + - remove i?86-pc-linux-gnu support - remove decstation & sunos support - remove phoenix OS support diff --git a/newlib/acinclude.m4 b/newlib/acinclude.m4 index ee1411d76a..2f8fb8d0fa 100644 --- a/newlib/acinclude.m4 +++ b/newlib/acinclude.m4 @@ -2,7 +2,7 @@ dnl This provides configure definitions used by all the newlib dnl configure.in files. AC_DEFUN([DEF_NEWLIB_MAJOR_VERSION],m4_define([NEWLIB_MAJOR_VERSION],[4])) -AC_DEFUN([DEF_NEWLIB_MINOR_VERSION],m4_define([NEWLIB_MINOR_VERSION],[3])) +AC_DEFUN([DEF_NEWLIB_MINOR_VERSION],m4_define([NEWLIB_MINOR_VERSION],[4])) AC_DEFUN([DEF_NEWLIB_PATCHLEVEL_VERSION],m4_define([NEWLIB_PATCHLEVEL_VERSION],[0])) AC_DEFUN([DEF_NEWLIB_VERSION],m4_define([NEWLIB_VERSION],[NEWLIB_MAJOR_VERSION.NEWLIB_MINOR_VERSION.NEWLIB_PATCHLEVEL_VERSION])) diff --git a/newlib/configure b/newlib/configure index b21d9bf458..6a542bb884 100755 --- a/newlib/configure +++ b/newlib/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for newlib 4.3.0. +# Generated by GNU Autoconf 2.69 for newlib 4.4.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -576,8 +576,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='newlib' PACKAGE_TARNAME='newlib' -PACKAGE_VERSION='4.3.0' -PACKAGE_STRING='newlib 4.3.0' +PACKAGE_VERSION='4.4.0' +PACKAGE_STRING='newlib 4.4.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1563,7 +1563,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures newlib 4.3.0 to adapt to many kinds of systems. +\`configure' configures newlib 4.4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1633,7 +1633,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of newlib 4.3.0:";; + short | recursive ) echo "Configuration of newlib 4.4.0:";; esac cat <<\_ACEOF @@ -1765,7 +1765,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -newlib configure 4.3.0 +newlib configure 4.4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1857,7 +1857,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by newlib $as_me 4.3.0, which was +It was created by newlib $as_me 4.4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4870,7 +4870,7 @@ fi # Define the identity of the package. PACKAGE='newlib' - VERSION='4.3.0' + VERSION='4.4.0' # Some tools Automake needs. @@ -6501,13 +6501,13 @@ fi -$as_echo "#define _NEWLIB_VERSION \"4.3.0\"" >>confdefs.h +$as_echo "#define _NEWLIB_VERSION \"4.4.0\"" >>confdefs.h $as_echo "#define __NEWLIB__ 4" >>confdefs.h -$as_echo "#define __NEWLIB_MINOR__ 3" >>confdefs.h +$as_echo "#define __NEWLIB_MINOR__ 4" >>confdefs.h $as_echo "#define __NEWLIB_PATCHLEVEL__ 0" >>confdefs.h @@ -8460,7 +8460,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by newlib $as_me 4.3.0, which was +This file was extended by newlib $as_me 4.4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8526,7 +8526,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -newlib config.status 4.3.0 +newlib config.status 4.4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi index a5f24b15a2..c6aeab2278 100644 --- a/newlib/libc/libc.texi +++ b/newlib/libc/libc.texi @@ -69,8 +69,8 @@ into another language, under the above conditions for modified versions. @title The Red Hat newlib C Library @subtitle Full Configuration @sp 1 -@subtitle @code{libc} 4.3.0 -@subtitle January 2023 +@subtitle @code{libc} 4.4.0 +@subtitle December 2023 @author Steve Chamberlain @author Roland Pesch @author Red Hat Support diff --git a/newlib/libm/libm.texi b/newlib/libm/libm.texi index bf8a07255a..943262d055 100644 --- a/newlib/libm/libm.texi +++ b/newlib/libm/libm.texi @@ -46,8 +46,8 @@ into another language, under the above conditions for modified versions. @titlepage @title The Red Hat newlib C Math Library @sp 1 -@subtitle @code{libm} 4.3.0 -@subtitle January 2023 +@subtitle @code{libm} 4.4.0 +@subtitle December 2023 @author Steve Chamberlain @author Roland Pesch @author Red Hat Support From 99f3898dfcdcd5de1a3a6093d24ed097291ff4d8 Mon Sep 17 00:00:00 2001 From: Xiao Zeng Date: Tue, 2 Jan 2024 13:56:15 +0800 Subject: [PATCH 541/767] newlib: libc: Improved the readability of strspn with minor optimization Signed-off-by: Xiao Zeng --- newlib/libc/string/strspn.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/newlib/libc/string/strspn.c b/newlib/libc/string/strspn.c index baf2399478..bfa3331cd4 100644 --- a/newlib/libc/string/strspn.c +++ b/newlib/libc/string/strspn.c @@ -41,10 +41,11 @@ strspn (const char *s1, for (c = s2; *c; c++) { if (*s1 == *c) - break; + goto found; } if (*c == '\0') break; +found: s1++; } From a2ddc21f801b17327a7c65c81e8b55b7d62efdb6 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 25 Dec 2023 18:17:38 -0500 Subject: [PATCH 542/767] libgloss: fix up incorrect "it's" --- libgloss/debug.c | 2 +- libgloss/doc/porting.texi | 16 ++++++++-------- libgloss/hp74x/debugger.h | 2 +- libgloss/hp74x/debugger.s | 2 +- libgloss/hp74x/diagnose.h | 2 +- libgloss/hp74x/iva_table.h | 2 +- libgloss/hp74x/iva_table.s | 2 +- libgloss/hp74x/pa_stub.c | 2 +- libgloss/m32r/m32r-stub.c | 4 ++-- libgloss/m68k/mvme-stub.c | 6 +++--- libgloss/m68k/mvme135-asm.S | 2 +- libgloss/m68k/mvme162lx-asm.S | 2 +- libgloss/sparc/crt0.S | 2 +- libgloss/sparc/sparc-stub.c | 2 +- libgloss/sparc/sparcl-stub.c | 2 +- libgloss/sparc/sparclet-stub.c | 2 +- libgloss/sparc_leon/kernel_sched.c | 2 +- libgloss/testsuite/libgloss.all/Makefile.in | 2 +- libgloss/xstormy16/xstormy16_stub.c | 4 ++-- 19 files changed, 30 insertions(+), 30 deletions(-) diff --git a/libgloss/debug.c b/libgloss/debug.c index 3b1c8ff9b7..d6fb89a5e0 100644 --- a/libgloss/debug.c +++ b/libgloss/debug.c @@ -692,7 +692,7 @@ gdb_read_reg(int reg) /* * P - write one register. - * params are the register number, and it's new value. + * params are the register number, and its new value. * returns the register value or ENN. */ char * diff --git a/libgloss/doc/porting.texi b/libgloss/doc/porting.texi index 15f214d026..5697a64d0b 100644 --- a/libgloss/doc/porting.texi +++ b/libgloss/doc/porting.texi @@ -125,7 +125,7 @@ After a while it became apparent that this approach of isolating the hardware and systems files together made sense. Around this same time the stub dirs were made to run standalone, mostly so it could also be used to support GDB's remote debugging needs. At this time it was -decided to move the stub dirs out of newlib and into it's own separate +decided to move the stub dirs out of newlib and into its own separate library so it could be used standalone, and be included in various other GNU tools without having to bring in all of newlib, which is large. The new library is called Libgloss, for Gnu Low-level OS support. @@ -269,7 +269,7 @@ source tree, use: @end smallexample The configure script is in the source tree. When configure is invoked -it will determine it's own source tree, so the --srcdir is would be +it will determine its own source tree, so the --srcdir is would be redundant here. Once libgloss is configured, @code{make} is sufficient to build it. The @@ -445,7 +445,7 @@ compiler passes. It will format command line options for the other passes. The usual command line GCC uses for the final link phase will have LD link in the startup code and additional libraries by default. -GNU AS started it's life to only function as a compiler pass, but +GNU AS started its life to only function as a compiler pass, but these days it can also be used as a source level assembler. When used as a source level assembler, it has a companion assembler preprocessor called @code{gasp}. This has a syntax similar to most other assembler @@ -524,7 +524,7 @@ Pass the next option directly to the linker. To make a program that has been compiled with GCC to run, you need to write some startup code. The initial piece of startup code is called a crt0. (C RunTime 0) This is usually written in assembler, and -it's object gets linked in first, and bootstraps the rest of the +its object gets linked in first, and bootstraps the rest of the application when executed. This file needs to do the following things. @enumerate @@ -550,7 +550,7 @@ This is what basically starts things running. If your ROM monitor supports it, then first setup argc and argv for command line arguments and an environment pointer. Then branch to main(). For G++ the the main routine gets a branch to __main inserted by the code generator at the -very top. __main() is used by G++ to initialize it's internal tables. +very top. __main() is used by G++ to initialize its internal tables. __main() then returns back to your original main() and your code gets executed. @@ -760,7 +760,7 @@ the m68k-coff configuration defaults to not linking in the crt0.o by default. It assumes that the developer probably has their own crt0.o. This behavior is controlled in the config file for each architecture. It's a macro called @code{STARTFILE_SPEC}, and if it's set to -@code{null}, then when @code{gcc} formats it's command line, it doesn't +@code{null}, then when @code{gcc} formats its command line, it doesn't add @code{crto.o}. Any file name can be specified here, but the default is always @code{crt0.o}. @@ -879,7 +879,7 @@ are setup here for use by the @code{crt0.o} when it zero's the A few ROM monitors load binary images, typically @code{a.out}, but most all will load an @code{srecord}. An srecord is an ASCII representation of a binary -image. At it's simplest, an srecord is an address, followed by a byte +image. At its simplest, an srecord is an address, followed by a byte count, followed by the bytes, and a 2's compliment checksum. A whole srecord file has an optional @emph{start} record, and a required @emph{end} record. To make an srecord from a binary image, the GNU @code{objcopy} program @@ -901,7 +901,7 @@ typically they are stubbed out. Kill is also a stub, since you can't do process control on an embedded system. Sbrk() is only needed by applications that do dynamic memory -allocation. It's uses the symbol @code{_end} that is setup in the linker +allocation. It uses the symbol @code{_end} that is setup in the linker script. It also requires a compile time option to set the upper size limit on the heap space. This leaves us with read and write, which are required for serial I/O. Usually these two routines are written in C, diff --git a/libgloss/hp74x/debugger.h b/libgloss/hp74x/debugger.h index 2c735987c3..81e515b171 100644 --- a/libgloss/hp74x/debugger.h +++ b/libgloss/hp74x/debugger.h @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/hp74x/debugger.s b/libgloss/hp74x/debugger.s index edf4e4b417..c3830acf62 100644 --- a/libgloss/hp74x/debugger.s +++ b/libgloss/hp74x/debugger.s @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/hp74x/diagnose.h b/libgloss/hp74x/diagnose.h index 23eb84791e..1d536a6334 100644 --- a/libgloss/hp74x/diagnose.h +++ b/libgloss/hp74x/diagnose.h @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/hp74x/iva_table.h b/libgloss/hp74x/iva_table.h index 68d6ba9776..afccce3134 100644 --- a/libgloss/hp74x/iva_table.h +++ b/libgloss/hp74x/iva_table.h @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/hp74x/iva_table.s b/libgloss/hp74x/iva_table.s index 289ea3c94d..570df3fe79 100644 --- a/libgloss/hp74x/iva_table.s +++ b/libgloss/hp74x/iva_table.s @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/hp74x/pa_stub.c b/libgloss/hp74x/pa_stub.c index 2964921756..42002cf889 100644 --- a/libgloss/hp74x/pa_stub.c +++ b/libgloss/hp74x/pa_stub.c @@ -19,7 +19,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/m32r/m32r-stub.c b/libgloss/m32r/m32r-stub.c index 4d54f72d60..acc89ed6a2 100644 --- a/libgloss/m32r/m32r-stub.c +++ b/libgloss/m32r/m32r-stub.c @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD @@ -46,7 +46,7 @@ * * Because gdb will sometimes write to the stack area to execute function * calls, this program cannot rely on using the supervisor stack so it - * uses it's own stack area reserved in the int array remcomStack. + * uses its own stack area reserved in the int array remcomStack. * ************* * diff --git a/libgloss/m68k/mvme-stub.c b/libgloss/m68k/mvme-stub.c index fcf7e7bf02..32b40dba49 100644 --- a/libgloss/m68k/mvme-stub.c +++ b/libgloss/m68k/mvme-stub.c @@ -14,7 +14,7 @@ int cnt; THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD @@ -50,7 +50,7 @@ int cnt; * Some explanation is probably necessary to explain how exceptions are * handled. When an exception is encountered the 68000 pushes the current * program counter and status register onto the supervisor stack and then - * transfers execution to a location specified in it's vector table. + * transfers execution to a location specified in its vector table. * The handlers for the exception vectors are hardwired to jmp to an address * given by the relation: (exception - 256) * 6. These are decending * addresses starting from -6, -12, -18, ... By allowing 6 bytes for @@ -69,7 +69,7 @@ int cnt; * * Because gdb will sometimes write to the stack area to execute function * calls, this program cannot rely on using the supervisor stack so it - * uses it's own stack area reserved in the int array remcomStack. + * uses its own stack area reserved in the int array remcomStack. * ************* * diff --git a/libgloss/m68k/mvme135-asm.S b/libgloss/m68k/mvme135-asm.S index 1722c1804a..ea0a298266 100644 --- a/libgloss/m68k/mvme135-asm.S +++ b/libgloss/m68k/mvme135-asm.S @@ -11,7 +11,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/m68k/mvme162lx-asm.S b/libgloss/m68k/mvme162lx-asm.S index 8b83621d6d..2c29418a79 100644 --- a/libgloss/m68k/mvme162lx-asm.S +++ b/libgloss/m68k/mvme162lx-asm.S @@ -11,7 +11,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/sparc/crt0.S b/libgloss/sparc/crt0.S index 501abf8ed9..4118086041 100644 --- a/libgloss/sparc/crt0.S +++ b/libgloss/sparc/crt0.S @@ -103,7 +103,7 @@ copyloop: /* - * Move the data segment from it's ROM address to RAM where it + * Move the data segment from its ROM address to RAM where it * belongs. */ diff --git a/libgloss/sparc/sparc-stub.c b/libgloss/sparc/sparc-stub.c index fa21d72cdb..675737341c 100644 --- a/libgloss/sparc/sparc-stub.c +++ b/libgloss/sparc/sparc-stub.c @@ -4,7 +4,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/sparc/sparcl-stub.c b/libgloss/sparc/sparcl-stub.c index 634878bd7e..960e1a6660 100644 --- a/libgloss/sparc/sparcl-stub.c +++ b/libgloss/sparc/sparcl-stub.c @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/sparc/sparclet-stub.c b/libgloss/sparc/sparclet-stub.c index a462128304..e7dfebadfb 100644 --- a/libgloss/sparc/sparclet-stub.c +++ b/libgloss/sparc/sparclet-stub.c @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD diff --git a/libgloss/sparc_leon/kernel_sched.c b/libgloss/sparc_leon/kernel_sched.c index 2b485c0fe3..9d625ce9eb 100644 --- a/libgloss/sparc_leon/kernel_sched.c +++ b/libgloss/sparc_leon/kernel_sched.c @@ -55,7 +55,7 @@ leonbare_sched () LEONBARE_KR_CURRENT = new; /* to be able to programm symetrically on kernel level each thread - saves it's spinlock on mutexes and kernel and irq flags in its + saves its spinlock on mutexes and kernel and irq flags in its own save region. On a kernel switch they are released until the thread is reawakened. Then the locks will be reaquired (and finally released when the codeblock exits). The locking can be recursive. */ diff --git a/libgloss/testsuite/libgloss.all/Makefile.in b/libgloss/testsuite/libgloss.all/Makefile.in index fcade79988..f33243d86d 100644 --- a/libgloss/testsuite/libgloss.all/Makefile.in +++ b/libgloss/testsuite/libgloss.all/Makefile.in @@ -10,7 +10,7 @@ SHELL = /bin/sh SUPPORT=support.o # -# to add a new test, put it's name here, and list the objects +# to add a new test, put its name here, and list the objects # required too. TESTS= misc.x float.x io.x memory.x double.x math.x func.x div.x \ printf.x varargs.x varargs2.x array.x struct.x misc.x diff --git a/libgloss/xstormy16/xstormy16_stub.c b/libgloss/xstormy16/xstormy16_stub.c index 7706031e9c..7bd3bcef5f 100644 --- a/libgloss/xstormy16/xstormy16_stub.c +++ b/libgloss/xstormy16/xstormy16_stub.c @@ -3,7 +3,7 @@ THIS SOFTWARE IS NOT COPYRIGHTED HP offers the following for use in the public domain. HP makes no - warranty with regard to the software or it's performance and the + warranty with regard to the software or its performance and the user accepts the software "AS IS" with all faults. HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD @@ -41,7 +41,7 @@ * * Because gdb will sometimes write to the stack area to execute function * calls, this program cannot rely on using the inferior stack so it uses - * it's own stack area. + * its own stack area. * ************* * From cd754062860a91c11ef13648bab0010db82daf63 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 20:25:18 -0500 Subject: [PATCH 543/767] libgloss: moxie: delete unused/invalid assembly file This is a .c file, not assembly, and it's a duplicate (same content) as the existing sim-lseek.c. Delete it since it's unused and doesn't actually compile. --- libgloss/moxie/sim-lseek.S | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 libgloss/moxie/sim-lseek.S diff --git a/libgloss/moxie/sim-lseek.S b/libgloss/moxie/sim-lseek.S deleted file mode 100644 index 86fb675047..0000000000 --- a/libgloss/moxie/sim-lseek.S +++ /dev/null @@ -1,31 +0,0 @@ -/* - * sim-lseek.S -- write interface for moxie simulator - * - * Copyright (c) 2008 Anthony Green - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include -#include - -/* - * lseek -- Since a simulated serial port is non-seekable, we return - * an error. - */ -off_t -_lseek (int fd, - off_t offset, - int whence) -{ - errno = ESPIPE; - return ((off_t)-1); -} \ No newline at end of file From 50d6410160b2ac6161919ab8f5b773a5dffaf4d0 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 20:21:28 -0500 Subject: [PATCH 544/767] libgloss: merge moxie into top-level Makefile Avoid a recursive make to speed things up a bit. A moxie-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 257 ++++++++++++++++++++++++++++-------- libgloss/configure | 45 +++++-- libgloss/configure.ac | 5 +- libgloss/moxie/Makefile.in | 157 ---------------------- libgloss/moxie/Makefile.inc | 62 +++++++++ libgloss/moxie/acinclude.m4 | 16 +-- 7 files changed, 306 insertions(+), 239 deletions(-) delete mode 100644 libgloss/moxie/Makefile.in create mode 100644 libgloss/moxie/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 0d4460b580..b6f12735ce 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -90,6 +90,9 @@ endif if CONFIG_LM32 include lm32/Makefile.inc endif +if CONFIG_MOXIE +include moxie/Makefile.inc +endif if CONFIG_NIOS2 include nios2/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index fd845cf5f3..8672117040 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -176,22 +176,33 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_LM32_TRUE@am__append_29 = lm32/crt0.o lm32/sim.ld @CONFIG_LM32_TRUE@am__append_30 = lm32/libgloss.a @CONFIG_LM32_TRUE@am__append_31 = lm32/crt0.S -@CONFIG_NIOS2_TRUE@am__append_32 = \ +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_32 = \ +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld + +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_33 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_34 = \ +@CONFIG_MOXIE_TRUE@ moxie/crt0.S + +@CONFIG_MOXIE_TRUE@am__append_35 = moxie/libsim.a moxie/libqemu.a +@CONFIG_NIOS2_TRUE@am__append_36 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_33 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_34 = \ +@CONFIG_NIOS2_TRUE@am__append_37 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_38 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_35 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_39 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_36 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_37 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_38 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_39 = \ +@CONFIG_WINCE_TRUE@am__append_40 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_41 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_42 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_43 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -200,27 +211,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_40 = \ +@CONFIG_XTENSA_TRUE@am__append_44 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_41 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_42 = \ +@CONFIG_XTENSA_TRUE@am__append_45 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_46 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_43 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_47 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_44 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_45 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_46 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_47 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_48 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_51 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_48 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_51 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_52 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_53 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_54 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -251,10 +262,10 @@ CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ rs6000/Makefile mn10200/Makefile mn10300/Makefile \ cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ frv/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ - moxie/Makefile microblaze/Makefile mt/Makefile v850/Makefile \ - visium/Makefile xc16x/Makefile xstormy16/Makefile \ - m32c/Makefile msp430/Makefile rl78/Makefile rx/Makefile \ - spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + microblaze/Makefile mt/Makefile v850/Makefile visium/Makefile \ + xc16x/Makefile xstormy16/Makefile m32c/Makefile \ + msp430/Makefile rl78/Makefile rx/Makefile spu/Makefile \ + tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -453,17 +464,51 @@ libobjs_a_LIBADD = @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) @CONFIG_IQ2000_TRUE@am__objects_5 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_6 = lm32/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_7 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_7 = moxie/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_8 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ - $(am__objects_5) $(am__objects_6) $(am__objects_7) + $(am__objects_5) $(am__objects_6) $(am__objects_7) \ + $(am__objects_8) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@ lm32/scall.$(OBJEXT) lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) +moxie_libqemu_a_AR = $(AR) $(ARFLAGS) +moxie_libqemu_a_LIBADD = +@CONFIG_MOXIE_TRUE@am_moxie_libqemu_a_OBJECTS = \ +@CONFIG_MOXIE_TRUE@ moxie/qemu-write.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/qemu-time.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-exit.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sbrk.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-close.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/fstat.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/getpid.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/isatty.$(OBJEXT) moxie/kill.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/putnum.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-lseek.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-read.$(OBJEXT) +moxie_libqemu_a_OBJECTS = $(am_moxie_libqemu_a_OBJECTS) +moxie_libsim_a_AR = $(AR) $(ARFLAGS) +moxie_libsim_a_LIBADD = +@CONFIG_MOXIE_TRUE@am_moxie_libsim_a_OBJECTS = moxie/fstat.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/getpid.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/isatty.$(OBJEXT) moxie/kill.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/putnum.$(OBJEXT) moxie/sbrk.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-close.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-exit.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-inbyte.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-lseek.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-open.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-read.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-time.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-unlink.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/sim-write.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@ moxie/stat.$(OBJEXT) +moxie_libsim_a_OBJECTS = $(am_moxie_libsim_a_OBJECTS) nios2_libnios2_a_AR = $(AR) $(ARFLAGS) nios2_libnios2_a_LIBADD = @CONFIG_NIOS2_TRUE@am_nios2_libnios2_a_OBJECTS = \ @@ -554,7 +599,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_8 = \ +@CONFIG_RISCV_TRUE@am__objects_9 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -587,17 +632,17 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_8) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_9) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_9 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_10 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_10 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_11 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_9) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_10) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_10) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_11) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -669,6 +714,7 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ + $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ $(xtensa_libgloss_a_SOURCES) \ @@ -761,7 +807,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_36) +VPATH = @srcdir@ $(am__append_40) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -779,7 +825,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_38) +CPPFLAGS = @CPPFLAGS@ $(am__append_42) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -810,8 +856,6 @@ MIPS_SCRIPT_LIST = @MIPS_SCRIPT_LIST@ MKDIR_P = @MKDIR_P@ MN10300_BSP_LIST = @MN10300_BSP_LIST@ MN10300_SCRIPT_LIST = @MN10300_SCRIPT_LIST@ -MOXIE_BUILD_CRT0_FALSE = @MOXIE_BUILD_CRT0_FALSE@ -MOXIE_BUILD_CRT0_TRUE = @MOXIE_BUILD_CRT0_TRUE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -900,13 +944,14 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_27) $(am__append_29) $(am__append_32) \ - $(am__append_34) $(am__append_39) $(am__append_42) \ - $(am__append_44) $(am__append_48) + $(am__append_33) $(am__append_36) $(am__append_38) \ + $(am__append_43) $(am__append_46) $(am__append_48) \ + $(am__append_52) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_24) $(am__append_28) \ - $(am__append_30) $(am__append_33) $(am__append_35) \ - $(am__append_41) $(am__append_43) + $(am__append_30) $(am__append_35) $(am__append_37) \ + $(am__append_39) $(am__append_45) $(am__append_47) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -917,7 +962,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ - $(am__append_31) $(am__append_40) + $(am__append_31) $(am__append_34) $(am__append_44) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1102,6 +1147,38 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/scall.S +@CONFIG_MOXIE_TRUE@moxie_libsim_a_SOURCES = \ +@CONFIG_MOXIE_TRUE@ moxie/fstat.c \ +@CONFIG_MOXIE_TRUE@ moxie/getpid.c \ +@CONFIG_MOXIE_TRUE@ moxie/isatty.c \ +@CONFIG_MOXIE_TRUE@ moxie/kill.c \ +@CONFIG_MOXIE_TRUE@ moxie/putnum.c \ +@CONFIG_MOXIE_TRUE@ moxie/sbrk.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-close.S \ +@CONFIG_MOXIE_TRUE@ moxie/sim-exit.S \ +@CONFIG_MOXIE_TRUE@ moxie/sim-inbyte.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-lseek.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-open.S \ +@CONFIG_MOXIE_TRUE@ moxie/sim-read.S \ +@CONFIG_MOXIE_TRUE@ moxie/sim-time.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-unlink.S \ +@CONFIG_MOXIE_TRUE@ moxie/sim-write.S \ +@CONFIG_MOXIE_TRUE@ moxie/stat.c + +@CONFIG_MOXIE_TRUE@moxie_libqemu_a_SOURCES = \ +@CONFIG_MOXIE_TRUE@ moxie/qemu-write.c \ +@CONFIG_MOXIE_TRUE@ moxie/qemu-time.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-exit.S \ +@CONFIG_MOXIE_TRUE@ moxie/sbrk.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-close.S \ +@CONFIG_MOXIE_TRUE@ moxie/fstat.c \ +@CONFIG_MOXIE_TRUE@ moxie/getpid.c \ +@CONFIG_MOXIE_TRUE@ moxie/isatty.c \ +@CONFIG_MOXIE_TRUE@ moxie/kill.c \ +@CONFIG_MOXIE_TRUE@ moxie/putnum.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-lseek.c \ +@CONFIG_MOXIE_TRUE@ moxie/sim-read.S + @CONFIG_NIOS2_TRUE@nios2_libnios2_a_SOURCES = \ @CONFIG_NIOS2_TRUE@ nios2/crt0.S \ @CONFIG_NIOS2_TRUE@ nios2/io-close.c \ @@ -1203,19 +1280,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_45) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_49) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_49) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_53) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_46) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_50) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_50) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_54) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_47) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_51) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_51) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_55) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1228,7 +1305,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1250,7 +1327,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1319,8 +1396,6 @@ mcore/Makefile: $(top_builddir)/config.status $(top_srcdir)/mcore/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mep/Makefile: $(top_builddir)/config.status $(top_srcdir)/mep/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -moxie/Makefile: $(top_builddir)/config.status $(top_srcdir)/moxie/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ microblaze/Makefile: $(top_builddir)/config.status $(top_srcdir)/microblaze/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mt/Makefile: $(top_builddir)/config.status $(top_srcdir)/mt/Makefile.in @@ -1713,6 +1788,14 @@ lm32/$(DEPDIR)/$(am__dirstamp): @: > lm32/$(DEPDIR)/$(am__dirstamp) lm32/crt0.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/$(DEPDIR)/$(am__dirstamp) +moxie/$(am__dirstamp): + @$(MKDIR_P) moxie + @: > moxie/$(am__dirstamp) +moxie/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) moxie/$(DEPDIR) + @: > moxie/$(DEPDIR)/$(am__dirstamp) +moxie/crt0.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) xtensa/$(am__dirstamp): @$(MKDIR_P) xtensa @: > xtensa/$(am__dirstamp) @@ -1739,6 +1822,52 @@ lm32/libgloss.a: $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f lm32/libgloss.a $(AM_V_AR)$(lm32_libgloss_a_AR) lm32/libgloss.a $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_LIBADD) $(AM_V_at)$(RANLIB) lm32/libgloss.a +moxie/qemu-write.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/qemu-time.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-exit.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sbrk.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-close.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/fstat.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/getpid.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/isatty.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/kill.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/putnum.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-lseek.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-read.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) + +moxie/libqemu.a: $(moxie_libqemu_a_OBJECTS) $(moxie_libqemu_a_DEPENDENCIES) $(EXTRA_moxie_libqemu_a_DEPENDENCIES) moxie/$(am__dirstamp) + $(AM_V_at)-rm -f moxie/libqemu.a + $(AM_V_AR)$(moxie_libqemu_a_AR) moxie/libqemu.a $(moxie_libqemu_a_OBJECTS) $(moxie_libqemu_a_LIBADD) + $(AM_V_at)$(RANLIB) moxie/libqemu.a +moxie/sim-inbyte.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-open.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-time.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-unlink.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/sim-write.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) +moxie/stat.$(OBJEXT): moxie/$(am__dirstamp) \ + moxie/$(DEPDIR)/$(am__dirstamp) + +moxie/libsim.a: $(moxie_libsim_a_OBJECTS) $(moxie_libsim_a_DEPENDENCIES) $(EXTRA_moxie_libsim_a_DEPENDENCIES) moxie/$(am__dirstamp) + $(AM_V_at)-rm -f moxie/libsim.a + $(AM_V_AR)$(moxie_libsim_a_AR) moxie/libsim.a $(moxie_libsim_a_OBJECTS) $(moxie_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) moxie/libsim.a nios2/$(am__dirstamp): @$(MKDIR_P) nios2 @: > nios2/$(am__dirstamp) @@ -2114,6 +2243,7 @@ mostlyclean-compile: -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) + -rm -f moxie/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) -rm -f xtensa/*.$(OBJEXT) @@ -2241,6 +2371,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/qemu-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/qemu-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po@am__quote@ @@ -5105,6 +5254,8 @@ distclean-generic: -rm -f libnosys/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(am__dirstamp) + -rm -f moxie/$(DEPDIR)/$(am__dirstamp) + -rm -f moxie/$(am__dirstamp) -rm -f nios2/$(DEPDIR)/$(am__dirstamp) -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) @@ -5129,7 +5280,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5272,7 +5423,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 5f6bc58418..782ae9a2f5 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -647,6 +647,8 @@ CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE CONFIG_NIOS2_FALSE CONFIG_NIOS2_TRUE +CONFIG_MOXIE_FALSE +CONFIG_MOXIE_TRUE CONFIG_LM32_FALSE CONFIG_LM32_TRUE CONFIG_LIBNOSYS_FALSE @@ -2901,9 +2903,7 @@ case "${target}" in subdirs="$subdirs mep" ;; moxie-*-*) - ac_config_files="$ac_config_files moxie/Makefile" - - subdirs="$subdirs moxie" + config_moxie=true ;; microblaze*-*-*) ac_config_files="$ac_config_files microblaze/Makefile" @@ -3069,6 +3069,14 @@ else CONFIG_LM32_FALSE= fi + if test x$config_moxie = xtrue; then + CONFIG_MOXIE_TRUE= + CONFIG_MOXIE_FALSE='#' +else + CONFIG_MOXIE_TRUE='#' + CONFIG_MOXIE_FALSE= +fi + if test x$config_nios2 = xtrue; then CONFIG_NIOS2_TRUE= CONFIG_NIOS2_FALSE='#' @@ -5097,17 +5105,19 @@ esac -case "${target}" in - moxie-*-moxiebox*) - MOXIE_BUILD_CRT0_TRUE='#' - MOXIE_BUILD_CRT0_FALSE= - ;; - *) - MOXIE_BUILD_CRT0_TRUE= - MOXIE_BUILD_CRT0_FALSE='#' - ;; +case ${target} in #( + moxie-*-moxiebox*) : + MOXIE_BUILD_CRT0=false ;; #( + *) : + MOXIE_BUILD_CRT0=true ;; esac - + if $MOXIE_BUILD_CRT0; then + MOXIE_BUILD_CRT0_TRUE= + MOXIE_BUILD_CRT0_FALSE='#' +else + MOXIE_BUILD_CRT0_TRUE='#' + MOXIE_BUILD_CRT0_FALSE= +fi SPARC_CPU=SPARC @@ -5402,6 +5412,10 @@ if test -z "${CONFIG_LM32_TRUE}" && test -z "${CONFIG_LM32_FALSE}"; then as_fn_error $? "conditional \"CONFIG_LM32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_MOXIE_TRUE}" && test -z "${CONFIG_MOXIE_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_MOXIE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_NIOS2_TRUE}" && test -z "${CONFIG_NIOS2_FALSE}"; then as_fn_error $? "conditional \"CONFIG_NIOS2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5430,6 +5444,10 @@ if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${MOXIE_BUILD_CRT0_TRUE}" && test -z "${MOXIE_BUILD_CRT0_FALSE}"; then + as_fn_error $? "conditional \"MOXIE_BUILD_CRT0\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_XTENSA_BOARD_ESP32_TRUE}" && test -z "${HAVE_XTENSA_BOARD_ESP32_FALSE}"; then as_fn_error $? "conditional \"HAVE_XTENSA_BOARD_ESP32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6072,7 +6090,6 @@ do "ft32/Makefile") CONFIG_FILES="$CONFIG_FILES ft32/Makefile" ;; "mcore/Makefile") CONFIG_FILES="$CONFIG_FILES mcore/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; - "moxie/Makefile") CONFIG_FILES="$CONFIG_FILES moxie/Makefile" ;; "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; "v850/Makefile") CONFIG_FILES="$CONFIG_FILES v850/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 268d86c518..472cbb8f9a 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -166,8 +166,7 @@ case "${target}" in subdirs="$subdirs mep" ;; moxie-*-*) - AC_CONFIG_FILES([moxie/Makefile]) - subdirs="$subdirs moxie" + config_moxie=true ;; microblaze*-*-*) AC_CONFIG_FILES([microblaze/Makefile]) @@ -250,7 +249,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 nios2 riscv wince xtensa + aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 moxie nios2 riscv wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/moxie/Makefile.in b/libgloss/moxie/Makefile.in deleted file mode 100644 index e87510fe2e..0000000000 --- a/libgloss/moxie/Makefile.in +++ /dev/null @@ -1,157 +0,0 @@ -# Copyright (c) 2008, 2010 Anthony Green -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/spro. This is the board support code for the -# moxie target. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -LD_SCRIPTS = moxie-elf-common.ld qemu.ld sim.ld moxiebox.ld - -@MOXIE_BUILD_CRT0_TRUE@CRT0 = crt0.o -@MOXIE_BUILD_CRT0_TRUE@CRT0_INSTALL = install-crt0 -@MOXIE_BUILD_CRT0_FALSE@CRT0 = -@MOXIE_BUILD_CRT0_FALSE@CRT0_INSTALL = - -SIM_BSP = libsim.a -SIM_OBJS = fstat.o \ - getpid.o \ - isatty.o \ - kill.o \ - putnum.o \ - sbrk.o \ - sim-close.o \ - sim-exit.o \ - sim-inbyte.o \ - sim-lseek.o \ - sim-open.o \ - sim-read.o \ - sim-time.o \ - sim-unlink.o \ - sim-write.o \ - stat.o - -QEMU_BSP = libqemu.a -QEMU_OBJS = qemu-write.o \ - qemu-time.o \ - sim-exit.o \ - sbrk.o \ - sim-close.o \ - fstat.o \ - getpid.o \ - isatty.o \ - kill.o \ - putnum.o \ - sim-lseek.o \ - sim-read.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: ${CRT0} $(SIM_BSP) $(QEMU_BSP) - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -$(QEMU_BSP): $(QEMU_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -fstat.o: $(srcdir)/fstat.c -getpid.o: $(srcdir)/getpid.c -isatty.o: $(srcdir)/isatty.c -kill.o: $(srcdir)/kill.c -putnum.o: $(srcdir)/putnum.c -sbrk.o: $(srcdir)/sbrk.c -sim-close.o: $(srcdir)/sim-close.S -sim-exit.o: $(srcdir)/sim-exit.S -sim-inbyte.o: $(srcdir)/sim-inbyte.c -sim-lseek.o: $(srcdir)/sim-lseek.c -sim-open.o: $(srcdir)/sim-open.S -sim-read.o: $(srcdir)/sim-read.S -sim-time.o: $(srcdir)/sim-time.c -sim-unlink.o: $(srcdir)/sim-unlink.S -sim-write.o: $(srcdir)/sim-write.S -stat.o: $(srcdir)/stat.c -qemu-write.o: $(srcdir)/qemu-write.c - -install: ${CRT0_INSTALL} $($(CPU)_INSTALL) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(SIM_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(SIM_BSP) - $(INSTALL_DATA) $(QEMU_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(QEMU_BSP) - for x in ${LD_SCRIPTS}; do \ - ${INSTALL_DATA} ${srcdir}/$$x $(DESTDIR)${tooldir}/lib/$$x; \ - done; - -install-crt0: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - ${INSTALL_DATA} ${CRT0} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/moxie/Makefile.inc b/libgloss/moxie/Makefile.inc new file mode 100644 index 0000000000..acc92d2e03 --- /dev/null +++ b/libgloss/moxie/Makefile.inc @@ -0,0 +1,62 @@ +## Copyright (c) 2008, 2010 Anthony Green +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +## Makefile for libgloss/spro. This is the board support code for the +## moxie target. + +if !HAVE_MULTISUBDIR +multilibtool_DATA += \ + %D%/moxie-elf-common.ld \ + %D%/qemu.ld \ + %D%/sim.ld \ + %D%/moxiebox.ld +endif + +if MOXIE_BUILD_CRT0 +multilibtool_DATA += %D%/crt0.o +endif +libobjs_a_SOURCES += \ + %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/putnum.c \ + %D%/sbrk.c \ + %D%/sim-close.S \ + %D%/sim-exit.S \ + %D%/sim-inbyte.c \ + %D%/sim-lseek.c \ + %D%/sim-open.S \ + %D%/sim-read.S \ + %D%/sim-time.c \ + %D%/sim-unlink.S \ + %D%/sim-write.S \ + %D%/stat.c + +multilibtool_LIBRARIES += %D%/libqemu.a +%C%_libqemu_a_SOURCES = \ + %D%/qemu-write.c \ + %D%/qemu-time.c \ + %D%/sim-exit.S \ + %D%/sbrk.c \ + %D%/sim-close.S \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/putnum.c \ + %D%/sim-lseek.c \ + %D%/sim-read.S diff --git a/libgloss/moxie/acinclude.m4 b/libgloss/moxie/acinclude.m4 index 77428ee37d..b7bc56b1ea 100644 --- a/libgloss/moxie/acinclude.m4 +++ b/libgloss/moxie/acinclude.m4 @@ -1,13 +1,5 @@ dnl Don't build crt0 for moxiebox, which provides crt0 for us. -case "${target}" in - moxie-*-moxiebox*) - MOXIE_BUILD_CRT0_TRUE='#' - MOXIE_BUILD_CRT0_FALSE= - ;; - *) - MOXIE_BUILD_CRT0_TRUE= - MOXIE_BUILD_CRT0_FALSE='#' - ;; -esac -AC_SUBST(MOXIE_BUILD_CRT0_TRUE) -AC_SUBST(MOXIE_BUILD_CRT0_FALSE) +AS_CASE([${target}], + [moxie-*-moxiebox*], [MOXIE_BUILD_CRT0=false], + [MOXIE_BUILD_CRT0=true]) +AM_CONDITIONAL([MOXIE_BUILD_CRT0], [$MOXIE_BUILD_CRT0]) From 6a3bc17465b8ecfea90b2fa8842e3a51ec2b07b9 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 20:47:38 -0500 Subject: [PATCH 545/767] libgloss: merge v850 into top-level Makefile Avoid a recursive make to speed things up a bit. A v850e-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 252 ++++++++++++++++++++++++++++++------- libgloss/configure | 19 ++- libgloss/configure.ac | 6 +- libgloss/v850/Makefile.in | 151 ---------------------- libgloss/v850/Makefile.inc | 46 +++++++ 6 files changed, 271 insertions(+), 206 deletions(-) delete mode 100644 libgloss/v850/Makefile.in create mode 100644 libgloss/v850/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index b6f12735ce..742ef52c5b 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -99,6 +99,9 @@ endif if CONFIG_RISCV include riscv/Makefile.inc endif +if CONFIG_V850 +include v850/Makefile.inc +endif if CONFIG_WINCE include wince/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 8672117040..59e9b2df71 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -199,10 +199,13 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_RISCV_TRUE@am__append_39 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_WINCE_TRUE@am__append_40 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_41 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_42 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_43 = \ +@CONFIG_V850_TRUE@am__append_40 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_41 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_42 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_43 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_44 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_45 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_46 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -211,27 +214,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_44 = \ +@CONFIG_XTENSA_TRUE@am__append_47 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_45 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_46 = \ +@CONFIG_XTENSA_TRUE@am__append_48 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_47 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_48 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_51 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_52 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_53 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_54 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_51 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_52 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_53 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_54 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_56 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_57 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -262,11 +265,10 @@ CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ rs6000/Makefile mn10200/Makefile mn10300/Makefile \ cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ frv/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ - microblaze/Makefile mt/Makefile v850/Makefile visium/Makefile \ - xc16x/Makefile xstormy16/Makefile m32c/Makefile \ - msp430/Makefile rl78/Makefile rx/Makefile spu/Makefile \ - tic6x/Makefile or1k/Makefile pru/Makefile \ - sparc/libsys/Makefile + microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ + xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ + rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ + pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -465,12 +467,13 @@ libobjs_a_LIBADD = @CONFIG_IQ2000_TRUE@am__objects_5 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_6 = lm32/crt0.$(OBJEXT) @CONFIG_MOXIE_TRUE@am__objects_7 = moxie/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_8 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_8 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_9 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ - $(am__objects_8) + $(am__objects_8) $(am__objects_9) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -599,7 +602,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_9 = \ +@CONFIG_RISCV_TRUE@am__objects_10 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -632,17 +635,35 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_9) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_10) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) +v850_libsim_a_AR = $(AR) $(ARFLAGS) +v850_libsim_a_LIBADD = +@CONFIG_V850_TRUE@am_v850_libsim_a_OBJECTS = v850/_exit.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/access.$(OBJEXT) v850/chmod.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/chown.$(OBJEXT) v850/close.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/creat.$(OBJEXT) v850/crt1.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/execv.$(OBJEXT) v850/execve.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/fork.$(OBJEXT) v850/fstat.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/getpid.$(OBJEXT) v850/gettime.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/isatty.$(OBJEXT) v850/kill.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/link.$(OBJEXT) v850/lseek.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/open.$(OBJEXT) v850/pipe.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/read.$(OBJEXT) v850/sbrk.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/stat.$(OBJEXT) v850/time.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/times.$(OBJEXT) v850/trap.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/unlink.$(OBJEXT) v850/utime.$(OBJEXT) \ +@CONFIG_V850_TRUE@ v850/wait.$(OBJEXT) v850/write.$(OBJEXT) +v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_10 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_11 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_11 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_12 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_10) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_11) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_11) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_12) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -717,7 +738,7 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(xtensa_libgloss_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) @@ -807,7 +828,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_40) +VPATH = @srcdir@ $(am__append_43) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -825,7 +846,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_42) +CPPFLAGS = @CPPFLAGS@ $(am__append_45) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -945,13 +966,14 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_27) $(am__append_29) $(am__append_32) \ $(am__append_33) $(am__append_36) $(am__append_38) \ - $(am__append_43) $(am__append_46) $(am__append_48) \ - $(am__append_52) + $(am__append_40) $(am__append_46) $(am__append_49) \ + $(am__append_51) $(am__append_55) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_24) $(am__append_28) \ $(am__append_30) $(am__append_35) $(am__append_37) \ - $(am__append_39) $(am__append_45) $(am__append_47) + $(am__append_39) $(am__append_42) $(am__append_48) \ + $(am__append_50) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -962,7 +984,8 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ - $(am__append_31) $(am__append_34) $(am__append_44) + $(am__append_31) $(am__append_34) $(am__append_41) \ + $(am__append_47) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1273,6 +1296,37 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_RISCV_TRUE@includemachinetooldir = $(tooldir)/include/machine @CONFIG_RISCV_TRUE@includemachinetool_DATA = riscv/machine/syscall.h +@CONFIG_V850_TRUE@v850_libsim_a_SOURCES = \ +@CONFIG_V850_TRUE@ v850/_exit.c \ +@CONFIG_V850_TRUE@ v850/access.c \ +@CONFIG_V850_TRUE@ v850/chmod.c \ +@CONFIG_V850_TRUE@ v850/chown.c \ +@CONFIG_V850_TRUE@ v850/close.c \ +@CONFIG_V850_TRUE@ v850/creat.c \ +@CONFIG_V850_TRUE@ v850/crt1.c \ +@CONFIG_V850_TRUE@ v850/execv.c \ +@CONFIG_V850_TRUE@ v850/execve.c \ +@CONFIG_V850_TRUE@ v850/fork.c \ +@CONFIG_V850_TRUE@ v850/fstat.c \ +@CONFIG_V850_TRUE@ v850/getpid.c \ +@CONFIG_V850_TRUE@ v850/gettime.c \ +@CONFIG_V850_TRUE@ v850/isatty.c \ +@CONFIG_V850_TRUE@ v850/kill.c \ +@CONFIG_V850_TRUE@ v850/link.c \ +@CONFIG_V850_TRUE@ v850/lseek.c \ +@CONFIG_V850_TRUE@ v850/open.c \ +@CONFIG_V850_TRUE@ v850/pipe.c \ +@CONFIG_V850_TRUE@ v850/read.c \ +@CONFIG_V850_TRUE@ v850/sbrk.c \ +@CONFIG_V850_TRUE@ v850/stat.c \ +@CONFIG_V850_TRUE@ v850/time.c \ +@CONFIG_V850_TRUE@ v850/times.c \ +@CONFIG_V850_TRUE@ v850/trap.S \ +@CONFIG_V850_TRUE@ v850/unlink.c \ +@CONFIG_V850_TRUE@ v850/utime.c \ +@CONFIG_V850_TRUE@ v850/wait.c \ +@CONFIG_V850_TRUE@ v850/write.c + @CONFIG_WINCE_TRUE@gdbdir = ${dir ${patsubst %/,%,${dir @srcdir@}}}gdb @CONFIG_WINCE_TRUE@wince_stub_exe_SOURCES = wince-stub.c @CONFIG_WINCE_TRUE@wince_stub_exe_CPPFLAGS = $(AM_CPPFLAGS) -I$(gdbdir) @@ -1280,19 +1334,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_49) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_53) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_52) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_56) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_50) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_54) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_53) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_57) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_51) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_55) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_54) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_58) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1305,7 +1359,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1327,7 +1381,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1400,8 +1454,6 @@ microblaze/Makefile: $(top_builddir)/config.status $(top_srcdir)/microblaze/Make cd $(top_builddir) && $(SHELL) ./config.status $@ mt/Makefile: $(top_builddir)/config.status $(top_srcdir)/mt/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -v850/Makefile: $(top_builddir)/config.status $(top_srcdir)/v850/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ visium/Makefile: $(top_builddir)/config.status $(top_srcdir)/visium/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ xc16x/Makefile: $(top_builddir)/config.status $(top_srcdir)/xc16x/Makefile.in @@ -1796,6 +1848,14 @@ moxie/$(DEPDIR)/$(am__dirstamp): @: > moxie/$(DEPDIR)/$(am__dirstamp) moxie/crt0.$(OBJEXT): moxie/$(am__dirstamp) \ moxie/$(DEPDIR)/$(am__dirstamp) +v850/$(am__dirstamp): + @$(MKDIR_P) v850 + @: > v850/$(am__dirstamp) +v850/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) v850/$(DEPDIR) + @: > v850/$(DEPDIR)/$(am__dirstamp) +v850/crt0.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) xtensa/$(am__dirstamp): @$(MKDIR_P) xtensa @: > xtensa/$(am__dirstamp) @@ -2120,6 +2180,69 @@ riscv/libsim.a: $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f riscv/libsim.a $(AM_V_AR)$(riscv_libsim_a_AR) riscv/libsim.a $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) riscv/libsim.a +v850/_exit.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/access.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/chmod.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/chown.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/close.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/creat.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/crt1.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/execv.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/execve.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/fork.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/fstat.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/getpid.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/gettime.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/isatty.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/kill.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/link.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/lseek.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/open.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/pipe.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/read.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/sbrk.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/stat.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/time.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/times.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/trap.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/unlink.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/utime.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/wait.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) +v850/write.$(OBJEXT): v850/$(am__dirstamp) \ + v850/$(DEPDIR)/$(am__dirstamp) + +v850/libsim.a: $(v850_libsim_a_OBJECTS) $(v850_libsim_a_DEPENDENCIES) $(EXTRA_v850_libsim_a_DEPENDENCIES) v850/$(am__dirstamp) + $(AM_V_at)-rm -f v850/libsim.a + $(AM_V_AR)$(v850_libsim_a_AR) v850/libsim.a $(v850_libsim_a_OBJECTS) $(v850_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) v850/libsim.a xtensa/xtensa_libgloss_a-sleep.$(OBJEXT): xtensa/$(am__dirstamp) \ xtensa/$(DEPDIR)/$(am__dirstamp) xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT): xtensa/$(am__dirstamp) \ @@ -2246,6 +2369,7 @@ mostlyclean-compile: -rm -f moxie/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) + -rm -f v850/*.$(OBJEXT) -rm -f xtensa/*.$(OBJEXT) -rm -f xtensa/boards/esp32/*.$(OBJEXT) -rm -f xtensa/boards/esp32s3/*.$(OBJEXT) @@ -2500,6 +2624,36 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/access.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/chown.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/creat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/crt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/execv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/execve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/fork.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/gettime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/link.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/pipe.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/wait.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt1-boards.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt1-sim.Po@am__quote@ @@ -5260,6 +5414,8 @@ distclean-generic: -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) + -rm -f v850/$(DEPDIR)/$(am__dirstamp) + -rm -f v850/$(am__dirstamp) -rm -f wince/$(am__dirstamp) -rm -f xtensa/$(DEPDIR)/$(am__dirstamp) -rm -f xtensa/$(am__dirstamp) @@ -5280,7 +5436,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5423,7 +5579,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 782ae9a2f5..def93ce568 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -643,6 +643,8 @@ CONFIG_XTENSA_FALSE CONFIG_XTENSA_TRUE CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE +CONFIG_V850_FALSE +CONFIG_V850_TRUE CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE CONFIG_NIOS2_FALSE @@ -2916,9 +2918,7 @@ case "${target}" in subdirs="$subdirs mt" ;; v850*-*-*) - ac_config_files="$ac_config_files v850/Makefile" - - subdirs="$subdirs v850" + config_v850=true ;; visium-*-*) ac_config_files="$ac_config_files visium/Makefile" @@ -3093,6 +3093,14 @@ else CONFIG_RISCV_FALSE= fi + if test x$config_v850 = xtrue; then + CONFIG_V850_TRUE= + CONFIG_V850_FALSE='#' +else + CONFIG_V850_TRUE='#' + CONFIG_V850_FALSE= +fi + if test x$config_wince = xtrue; then CONFIG_WINCE_TRUE= CONFIG_WINCE_FALSE='#' @@ -5424,6 +5432,10 @@ if test -z "${CONFIG_RISCV_TRUE}" && test -z "${CONFIG_RISCV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RISCV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_V850_TRUE}" && test -z "${CONFIG_V850_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_V850\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_WINCE_TRUE}" && test -z "${CONFIG_WINCE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_WINCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6092,7 +6104,6 @@ do "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; - "v850/Makefile") CONFIG_FILES="$CONFIG_FILES v850/Makefile" ;; "visium/Makefile") CONFIG_FILES="$CONFIG_FILES visium/Makefile" ;; "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "xstormy16/Makefile") CONFIG_FILES="$CONFIG_FILES xstormy16/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 472cbb8f9a..81b66a2f8b 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -177,8 +177,7 @@ case "${target}" in subdirs="$subdirs mt" ;; v850*-*-*) - AC_CONFIG_FILES([v850/Makefile]) - subdirs="$subdirs v850" + config_v850=true ;; visium-*-*) AC_CONFIG_FILES([visium/Makefile]) @@ -249,7 +248,8 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 moxie nios2 riscv wince xtensa + aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 moxie nios2 riscv v850 + wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/v850/Makefile.in b/libgloss/v850/Makefile.in deleted file mode 100644 index dd507be595..0000000000 --- a/libgloss/v850/Makefile.in +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright (c) 2002 Red Hat, Inc -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/frv. This is the board support -# code for the various frv targets. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = crt0.o -SIM_BSP = libsim.a -SIM_OBJS = _exit.o \ - access.o \ - chmod.o \ - chown.o \ - close.o \ - creat.o \ - crt1.o \ - execv.o \ - execve.o \ - fork.o \ - fstat.o \ - getpid.o \ - gettime.o \ - isatty.o \ - kill.o \ - link.o \ - lseek.o \ - open.o \ - pipe.o \ - read.o \ - sbrk.o \ - stat.o \ - time.o \ - times.o \ - trap.o \ - unlink.o \ - utime.o \ - wait.o \ - write.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: $(CRT0) $(SIM_BSP) - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -_exit.o: $(srcdir)/_exit.c -access.o: $(srcdir)/access.c -chmod.o: $(srcdir)/chmod.c -chown.o: $(srcdir)/chown.c -close.o: $(srcdir)/close.c -creat.o: $(srcdir)/creat.c -crt1.o: $(srcdir)/crt1.c -execv.o: $(srcdir)/execv.c -execve.o: $(srcdir)/execve.c -fork.o: $(srcdir)/fork.c -fstat.o: $(srcdir)/fstat.c -getpid.o: $(srcdir)/getpid.c -gettime.o: $(srcdir)/gettime.c -isatty.o: $(srcdir)/isatty.c -kill.o: $(srcdir)/kill.c -link.o: $(srcdir)/link.c -lseek.o: $(srcdir)/lseek.c -open.o: $(srcdir)/open.c -pipe.o: $(srcdir)/pipe.c -read.o: $(srcdir)/read.c -sbrk.o: $(srcdir)/sbrk.c -stat.o: $(srcdir)/stat.c -time.o: $(srcdir)/time.c -times.o: $(srcdir)/times.c -trap.o: $(srcdir)/trap.S -unlink.o: $(srcdir)/unlink.c -utime.o: $(srcdir)/utime.c -wait.o: $(srcdir)/wait.c -write.o: $(srcdir)/write.c - -install: $($(CPU)_INSTALL) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(SIM_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(SIM_BSP) - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/v850/Makefile.inc b/libgloss/v850/Makefile.inc new file mode 100644 index 0000000000..a491922f77 --- /dev/null +++ b/libgloss/v850/Makefile.inc @@ -0,0 +1,46 @@ +## Copyright (c) 2002 Red Hat, Inc +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/_exit.c \ + %D%/access.c \ + %D%/chmod.c \ + %D%/chown.c \ + %D%/close.c \ + %D%/creat.c \ + %D%/crt1.c \ + %D%/execv.c \ + %D%/execve.c \ + %D%/fork.c \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/gettime.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/link.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/pipe.c \ + %D%/read.c \ + %D%/sbrk.c \ + %D%/stat.c \ + %D%/time.c \ + %D%/times.c \ + %D%/trap.S \ + %D%/unlink.c \ + %D%/utime.c \ + %D%/wait.c \ + %D%/write.c From 6879bfa7c24467a85d3c0aa5b84c2f8f5fb92f33 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 20:53:43 -0500 Subject: [PATCH 546/767] libgloss: i960: delete dead/broken code The i960 port has a lot of references to sim files that have never been included in the tree afaict, and thus has never worked. Delete all the code to simplify. --- libgloss/i960/Makefile.in | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/libgloss/i960/Makefile.in b/libgloss/i960/Makefile.in index bf1a49e581..0d1b80029e 100644 --- a/libgloss/i960/Makefile.in +++ b/libgloss/i960/Makefile.in @@ -49,22 +49,12 @@ OBJS = putnum.o unlink.o CFLAGS = -g SCRIPTS = -# Here is all of the simulator stuff -SIM_SCRIPTS = -SIM_LDFLAGS = -SIM_BSP = libsim.a -SIM_CRT0 = sim-crt0.o -SIM_OBJS = sim-print.o sim-inbyte.o sim-sbrk.o sim-abort.o sim-errno.o simulator.o -SIM_TEST = sim-test -SIM_INSTALL = install-sim - # Here is all of the mon960 stuff MON_LDFLAGS = MON_BSP = libmon960.a MON_CRT0 = crt0.o MON_OBJS = mon-read.o mon-write.o mon-syscalls.o mon960.o MON_SCRIPTS = mon960.ld -MON_TEST = MON_INSTALL = install-mon # Host specific makefile fragment comes in here. @@ -79,39 +69,16 @@ all: ${MON_CRT0} ${MON_BSP} # # here's where we build the board support packages for each target # -${SIM_BSP}: ${OBJS} ${SIM_OBJS} - ${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS} ${OBJS} - ${RANLIB} ${SIM_BSP} - ${MON_BSP}: ${OBJS} ${MON_OBJS} ${AR} ${ARFLAGS} ${MON_BSP} ${MON_OBJS} ${OBJS} ${RANLIB} ${MON_BSP} -# -# here's where we build the test programs for each target -# -.PHONY: test -test: ${SIM_TEST} ${MVME_TEST} ${EVM_TEST} - -sim-test: sim-test.x sim-test.dis - -sim-test.x: test.o ${SIM_CRT0} ${SIM_BSP} - ${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \ - ${SIM_CRT0} test.o \ - -o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP} - -sim-test.dis: sim-test.x - ${OBJDUMP} -d sim-test.x > sim-test.dis - - # # # .c.S: ${CC} ${CFLAGS_FOR_TARGET} -c $< -simulator.o: simulator.S -sim-crt0.o: sim-crt0.S mvme-crt0.o: mvme-crt0.S mvme-exit.o: mvme-exit.S mvme-inbyte.o: mvme-inbyte.S @@ -131,10 +98,6 @@ install-mon: set -e; for x in ${MON_CRT0} ${MON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done set -e; for x in ${MON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done -install-sim: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib - set -e; for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib/$$x; done - doc: info: install-info: From 6bbeed74ca571b98af19dc7d52ce286f40c75229 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 20:59:58 -0500 Subject: [PATCH 547/767] libgloss: merge i960 into top-level Makefile Avoid a recursive make to speed things up a bit. I can't test this as current versions of binutils doesn't support i960. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 211 +++++++++++++++++++++++-------------- libgloss/configure | 19 +++- libgloss/configure.ac | 7 +- libgloss/i960/Makefile.in | 107 ------------------- libgloss/i960/Makefile.inc | 16 +++ 6 files changed, 168 insertions(+), 195 deletions(-) delete mode 100644 libgloss/i960/Makefile.in create mode 100644 libgloss/i960/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 742ef52c5b..a8a445b1dd 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -81,6 +81,9 @@ endif if CONFIG_D30V include d30v/Makefile.inc endif +if CONFIG_I960 +include i960/Makefile.inc +endif if CONFIG_IQ2000 include iq2000/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 59e9b2df71..ac2db2197a 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -167,45 +167,50 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_D30V_TRUE@am__append_22 = \ @CONFIG_D30V_TRUE@ d30v/crt0.o -@CONFIG_IQ2000_TRUE@am__append_23 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_24 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_25 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_26 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_27 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_28 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_29 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_30 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_31 = lm32/crt0.S -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_32 = \ +@CONFIG_I960_TRUE@am__append_23 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_24 = \ +@CONFIG_I960_TRUE@ i960/crt0.c + +@CONFIG_I960_TRUE@am__append_25 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_26 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_27 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_28 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_29 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_30 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_31 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_32 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_33 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_34 = lm32/crt0.S +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_35 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_33 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_34 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_36 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_37 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_35 = moxie/libsim.a moxie/libqemu.a -@CONFIG_NIOS2_TRUE@am__append_36 = \ +@CONFIG_MOXIE_TRUE@am__append_38 = moxie/libsim.a moxie/libqemu.a +@CONFIG_NIOS2_TRUE@am__append_39 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_37 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_38 = \ +@CONFIG_NIOS2_TRUE@am__append_40 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_41 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_39 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_42 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_40 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_41 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_42 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_43 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_44 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_45 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_46 = \ +@CONFIG_V850_TRUE@am__append_43 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_44 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_45 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_46 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_47 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_48 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_49 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -214,27 +219,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_47 = \ +@CONFIG_XTENSA_TRUE@am__append_50 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_48 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_49 = \ +@CONFIG_XTENSA_TRUE@am__append_51 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_52 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_50 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_53 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_51 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_52 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_53 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_54 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_56 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_57 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_54 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_56 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_57 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_59 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_60 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -261,7 +266,7 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ m68hc11/Makefile nds32/Makefile m68k/Makefile pa/Makefile \ - i960/Makefile sparc_leon/Makefile sparc/Makefile mips/Makefile \ + sparc_leon/Makefile sparc/Makefile mips/Makefile \ rs6000/Makefile mn10200/Makefile mn10300/Makefile \ cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ frv/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ @@ -406,6 +411,14 @@ d30v_libsim_a_LIBADD = @CONFIG_D30V_TRUE@ d30v/outbyte.$(OBJEXT) \ @CONFIG_D30V_TRUE@ d30v/syscalls.$(OBJEXT) d30v_libsim_a_OBJECTS = $(am_d30v_libsim_a_OBJECTS) +i960_libmon960_a_AR = $(AR) $(ARFLAGS) +i960_libmon960_a_LIBADD = +@CONFIG_I960_TRUE@am_i960_libmon960_a_OBJECTS = putnum.$(OBJEXT) \ +@CONFIG_I960_TRUE@ unlink.$(OBJEXT) i960/mon-read.$(OBJEXT) \ +@CONFIG_I960_TRUE@ i960/mon-write.$(OBJEXT) \ +@CONFIG_I960_TRUE@ i960/mon-syscalls.$(OBJEXT) \ +@CONFIG_I960_TRUE@ i960/mon960.$(OBJEXT) +i960_libmon960_a_OBJECTS = $(am_i960_libmon960_a_OBJECTS) iq2000_libeval_a_AR = $(AR) $(ARFLAGS) iq2000_libeval_a_LIBADD = @CONFIG_IQ2000_TRUE@am_iq2000_libeval_a_OBJECTS = \ @@ -464,16 +477,17 @@ libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_5 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_6 = lm32/crt0.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_7 = moxie/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_8 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_9 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_I960_TRUE@am__objects_5 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_6 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_7 = lm32/crt0.$(OBJEXT) +@CONFIG_MOXIE_TRUE@am__objects_8 = moxie/crt0.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_9 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_10 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ - $(am__objects_8) $(am__objects_9) + $(am__objects_8) $(am__objects_9) $(am__objects_10) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -602,7 +616,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_10 = \ +@CONFIG_RISCV_TRUE@am__objects_11 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -635,7 +649,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_10) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_11) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -657,13 +671,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_11 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_12 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_12 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_13 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_11) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_12) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_12) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_13) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -733,12 +747,13 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ - $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ - $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ - $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ - $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ + $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ + $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ + $(moxie_libsim_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + $(riscv_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) @@ -828,7 +843,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_43) +VPATH = @srcdir@ $(am__append_46) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -846,7 +861,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_45) +CPPFLAGS = @CPPFLAGS@ $(am__append_48) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -964,16 +979,16 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ - $(am__append_27) $(am__append_29) $(am__append_32) \ - $(am__append_33) $(am__append_36) $(am__append_38) \ - $(am__append_40) $(am__append_46) $(am__append_49) \ - $(am__append_51) $(am__append_55) + $(am__append_26) $(am__append_30) $(am__append_32) \ + $(am__append_35) $(am__append_36) $(am__append_39) \ + $(am__append_41) $(am__append_43) $(am__append_49) \ + $(am__append_52) $(am__append_54) $(am__append_58) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ - $(am__append_21) $(am__append_24) $(am__append_28) \ - $(am__append_30) $(am__append_35) $(am__append_37) \ - $(am__append_39) $(am__append_42) $(am__append_48) \ - $(am__append_50) + $(am__append_21) $(am__append_25) $(am__append_27) \ + $(am__append_31) $(am__append_33) $(am__append_38) \ + $(am__append_40) $(am__append_42) $(am__append_45) \ + $(am__append_51) $(am__append_53) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -983,9 +998,9 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ - $(am__append_31) $(am__append_34) $(am__append_41) \ - $(am__append_47) +libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ + $(am__append_28) $(am__append_34) $(am__append_37) \ + $(am__append_44) $(am__append_50) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1133,6 +1148,14 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_D30V_TRUE@ d30v/outbyte.c \ @CONFIG_D30V_TRUE@ d30v/syscalls.c +@CONFIG_I960_TRUE@i960_libmon960_a_SOURCES = \ +@CONFIG_I960_TRUE@ putnum.c \ +@CONFIG_I960_TRUE@ unlink.c \ +@CONFIG_I960_TRUE@ i960/mon-read.c \ +@CONFIG_I960_TRUE@ i960/mon-write.c \ +@CONFIG_I960_TRUE@ i960/mon-syscalls.S \ +@CONFIG_I960_TRUE@ i960/mon960.c + @CONFIG_IQ2000_TRUE@iq2000_libeval_a_SOURCES = \ @CONFIG_IQ2000_TRUE@ iq2000/_exit.c iq2000/access.c iq2000/chmod.c iq2000/close.c iq2000/crt1.c \ @CONFIG_IQ2000_TRUE@ iq2000/fstat.c iq2000/getpid.c iq2000/gettime.c iq2000/isatty.c \ @@ -1334,19 +1357,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_52) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_56) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_55) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_59) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_53) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_57) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_56) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_60) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_54) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_58) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_57) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_61) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1359,7 +1382,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1381,7 +1404,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1420,8 +1443,6 @@ m68k/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68k/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ pa/Makefile: $(top_builddir)/config.status $(top_srcdir)/pa/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -i960/Makefile: $(top_builddir)/config.status $(top_srcdir)/i960/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ sparc_leon/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc_leon/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ sparc/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc/Makefile.in @@ -1712,6 +1733,25 @@ d30v/libsim.a: $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_DEPENDENCIES) $(EXTRA_d3 $(AM_V_at)-rm -f d30v/libsim.a $(AM_V_AR)$(d30v_libsim_a_AR) d30v/libsim.a $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) d30v/libsim.a +i960/$(am__dirstamp): + @$(MKDIR_P) i960 + @: > i960/$(am__dirstamp) +i960/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) i960/$(DEPDIR) + @: > i960/$(DEPDIR)/$(am__dirstamp) +i960/mon-read.$(OBJEXT): i960/$(am__dirstamp) \ + i960/$(DEPDIR)/$(am__dirstamp) +i960/mon-write.$(OBJEXT): i960/$(am__dirstamp) \ + i960/$(DEPDIR)/$(am__dirstamp) +i960/mon-syscalls.$(OBJEXT): i960/$(am__dirstamp) \ + i960/$(DEPDIR)/$(am__dirstamp) +i960/mon960.$(OBJEXT): i960/$(am__dirstamp) \ + i960/$(DEPDIR)/$(am__dirstamp) + +i960/libmon960.a: $(i960_libmon960_a_OBJECTS) $(i960_libmon960_a_DEPENDENCIES) $(EXTRA_i960_libmon960_a_DEPENDENCIES) i960/$(am__dirstamp) + $(AM_V_at)-rm -f i960/libmon960.a + $(AM_V_AR)$(i960_libmon960_a_AR) i960/libmon960.a $(i960_libmon960_a_OBJECTS) $(i960_libmon960_a_LIBADD) + $(AM_V_at)$(RANLIB) i960/libmon960.a iq2000/$(am__dirstamp): @$(MKDIR_P) iq2000 @: > iq2000/$(am__dirstamp) @@ -1830,6 +1870,8 @@ bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ csky/$(DEPDIR)/$(am__dirstamp) +i960/crt0.$(OBJEXT): i960/$(am__dirstamp) \ + i960/$(DEPDIR)/$(am__dirstamp) iq2000/crt0.$(OBJEXT): iq2000/$(am__dirstamp) \ iq2000/$(DEPDIR)/$(am__dirstamp) lm32/$(am__dirstamp): @@ -2363,6 +2405,7 @@ mostlyclean-compile: -rm -f bfin/*.$(OBJEXT) -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) + -rm -f i960/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) @@ -2381,6 +2424,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putnum.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wince_stub_exe-wince-stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Po@am__quote@ @@ -2445,6 +2489,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/inbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/outbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon960.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iq2000/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iq2000/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iq2000/$(DEPDIR)/chmod.Po@am__quote@ @@ -5402,6 +5451,8 @@ distclean-generic: -rm -f d30v/$(DEPDIR)/$(am__dirstamp) -rm -f d30v/$(am__dirstamp) -rm -f doc/$(am__dirstamp) + -rm -f i960/$(DEPDIR)/$(am__dirstamp) + -rm -f i960/$(am__dirstamp) -rm -f iq2000/$(DEPDIR)/$(am__dirstamp) -rm -f iq2000/$(am__dirstamp) -rm -f libnosys/$(DEPDIR)/$(am__dirstamp) @@ -5436,7 +5487,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5579,7 +5630,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index def93ce568..6ba7b94081 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -657,6 +657,8 @@ CONFIG_LIBNOSYS_FALSE CONFIG_LIBNOSYS_TRUE CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE +CONFIG_I960_FALSE +CONFIG_I960_TRUE CONFIG_D30V_FALSE CONFIG_D30V_TRUE CONFIG_CSKY_FALSE @@ -2811,9 +2813,7 @@ case "${target}" in subdirs="$subdirs pa" ;; i960-*-coff) - ac_config_files="$ac_config_files i960/Makefile" - - subdirs="$subdirs i960" + config_i960=true ;; sparc-*leon*-elf* | sparc-*leon*-none*) ac_config_files="$ac_config_files sparc_leon/Makefile" @@ -3045,6 +3045,14 @@ else CONFIG_D30V_FALSE= fi + if test x$config_i960 = xtrue; then + CONFIG_I960_TRUE= + CONFIG_I960_FALSE='#' +else + CONFIG_I960_TRUE='#' + CONFIG_I960_FALSE= +fi + if test x$config_iq2000 = xtrue; then CONFIG_IQ2000_TRUE= CONFIG_IQ2000_FALSE='#' @@ -5408,6 +5416,10 @@ if test -z "${CONFIG_D30V_TRUE}" && test -z "${CONFIG_D30V_FALSE}"; then as_fn_error $? "conditional \"CONFIG_D30V\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_I960_TRUE}" && test -z "${CONFIG_I960_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_I960\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_IQ2000_TRUE}" && test -z "${CONFIG_IQ2000_FALSE}"; then as_fn_error $? "conditional \"CONFIG_IQ2000\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6087,7 +6099,6 @@ do "nds32/Makefile") CONFIG_FILES="$CONFIG_FILES nds32/Makefile" ;; "m68k/Makefile") CONFIG_FILES="$CONFIG_FILES m68k/Makefile" ;; "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; - "i960/Makefile") CONFIG_FILES="$CONFIG_FILES i960/Makefile" ;; "sparc_leon/Makefile") CONFIG_FILES="$CONFIG_FILES sparc_leon/Makefile" ;; "sparc/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/Makefile" ;; "mips/Makefile") CONFIG_FILES="$CONFIG_FILES mips/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 81b66a2f8b..ec6dec0a0f 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -87,8 +87,7 @@ case "${target}" in subdirs="$subdirs pa" ;; i960-*-coff) - AC_CONFIG_FILES([i960/Makefile]) - subdirs="$subdirs i960" + config_i960=true ;; sparc-*leon*-elf* | sparc-*leon*-none*) AC_CONFIG_FILES([sparc_leon/Makefile]) @@ -248,8 +247,8 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v iq2000 libnosys lm32 moxie nios2 riscv v850 - wince xtensa + aarch64 arc arm bfin csky d30v i960 iq2000 libnosys lm32 moxie nios2 riscv + v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/i960/Makefile.in b/libgloss/i960/Makefile.in deleted file mode 100644 index 0d1b80029e..0000000000 --- a/libgloss/i960/Makefile.in +++ /dev/null @@ -1,107 +0,0 @@ -# -# - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -OBJS = putnum.o unlink.o -CFLAGS = -g -SCRIPTS = - -# Here is all of the mon960 stuff -MON_LDFLAGS = -MON_BSP = libmon960.a -MON_CRT0 = crt0.o -MON_OBJS = mon-read.o mon-write.o mon-syscalls.o mon960.o -MON_SCRIPTS = mon960.ld -MON_INSTALL = install-mon - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -all: ${MON_CRT0} ${MON_BSP} - -# -# here's where we build the board support packages for each target -# -${MON_BSP}: ${OBJS} ${MON_OBJS} - ${AR} ${ARFLAGS} ${MON_BSP} ${MON_OBJS} ${OBJS} - ${RANLIB} ${MON_BSP} - -# -# -# -.c.S: - ${CC} ${CFLAGS_FOR_TARGET} -c $< - -mvme-crt0.o: mvme-crt0.S -mvme-exit.o: mvme-exit.S -mvme-inbyte.o: mvme-inbyte.S -mvme-outbyte.o: mvme-outbyte.S - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${MON_INSTALL} - -install-mon: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${MON_CRT0} ${MON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${MON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/i960/Makefile.inc b/libgloss/i960/Makefile.inc new file mode 100644 index 0000000000..3d1f58bb10 --- /dev/null +++ b/libgloss/i960/Makefile.inc @@ -0,0 +1,16 @@ +multilibtool_DATA += \ + %D%/crt0.o +libobjs_a_SOURCES += \ + %D%/crt0.c + +multilibtool_DATA += \ + %D%/mon960.ld + +multilibtool_LIBRARIES += %D%/libmon960.a +%C%_libmon960_a_SOURCES = \ + putnum.c \ + unlink.c \ + %D%/mon-read.c \ + %D%/mon-write.c \ + %D%/mon-syscalls.S \ + %D%/mon960.c From 94d871eeac43657090138653ececd49dc97ee631 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 7 Dec 2023 20:35:44 +0100 Subject: [PATCH 548/767] Cygwin: check remote drives for being SSDs as well This enables automatic sparse file support for remote SSDs. Signed-off-by: Corinna Vinschen --- winsup/cygwin/mount.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 9545d22e07..bf26c4af3e 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -524,7 +524,7 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) && !is_nfs ()); /* Check for being an SSD */ - if (!is_remote_drive () && !is_cdrom ()) + if (!is_cdrom ()) { /* Theoretically FileFsVolumeFlagsInformation would be sufficient, but apparently it's not exposed into userspace. */ From 573458e7fc4f5247874b139a17e7e54827c92440 Mon Sep 17 00:00:00 2001 From: Hau Hsu Date: Fri, 5 Jan 2024 15:06:39 +0800 Subject: [PATCH 549/767] RISC-V: Initialize the jvt CSR Set symbol '__jvt_base$' as weak. So if the symbol is not set in the linker script, the address would be 0. We initialize jvt CSR only if the address is not 0. Also use csr number directly instead of using symbolic name to prevent the backward incompatible issue. psabi reference: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/2d770815dc9a8b11e61ea1abd487cb25ee56ad5e/riscv-elf.adoc#table-jump-relaxation --- libgloss/riscv/crt0.S | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libgloss/riscv/crt0.S b/libgloss/riscv/crt0.S index 7a4e4e32c1..f1c5419a5e 100644 --- a/libgloss/riscv/crt0.S +++ b/libgloss/riscv/crt0.S @@ -26,6 +26,17 @@ _start: addi gp, gp, %pcrel_lo(1b) .option pop + /* Initialize jvt CSR (reg addr: 0x0017) */ + .weak __jvt_base$ + lla a0, __jvt_base$ + beqz a0, .Ljvt_init_end +.option push +.option norelax +.option arch, +zicsr + csrw 0x17, a0 +.option pop +.Ljvt_init_end: + # Clear the bss segment la a0, __bss_start la a2, _end From 9a863f713af24a3b18c165c640c936a4c0b707ea Mon Sep 17 00:00:00 2001 From: Brian Inglis Date: Mon, 8 Jan 2024 06:56:21 -0700 Subject: [PATCH 550/767] fix strverscmp comparison of digit sequence with non-digits From: Rich Felker Date: Mon, 7 Nov 2022 22:17:55 -0500 the rule that longest digit sequence not beginning with a zero is greater only applies when both sequences being compared are non-degenerate. this is spelled out explicitly in the man page, which may be deemed authoritative for this nonstandard function: "If one or both of these is empty, then return what strcmp(3) would have returned..." we were wrongly treating any sequence of digits not beginning with a zero as greater than a non-digit in the other string. Signed-off-by: Brian Inglis --- newlib/libc/string/strverscmp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/newlib/libc/string/strverscmp.c b/newlib/libc/string/strverscmp.c index 04aa7213ad..0117421c9e 100644 --- a/newlib/libc/string/strverscmp.c +++ b/newlib/libc/string/strverscmp.c @@ -76,9 +76,9 @@ int strverscmp(const char *l0, const char *r0) else if (c!='0') z=0; } - if (l[dp]!='0' && r[dp]!='0') { - /* If we're not looking at a digit sequence that began - * with a zero, longest digit string is greater. */ + if (l[dp]-'1'<9U && r[dp]-'1'<9U) { + /* If we're looking at non-degenerate digit sequences starting + * with nonzero digits, longest digit string is greater. */ for (j=i; isdigit(l[j]); j++) if (!isdigit(r[j])) return 1; if (isdigit(r[j])) return -1; From c419bbb341528a97d2de88539caf200c9dec1ffb Mon Sep 17 00:00:00 2001 From: Venkata Ramanaiah Nalamothu Date: Wed, 3 Jan 2024 12:22:16 +0530 Subject: [PATCH 551/767] RISC-V: fix setting up std streams in init_semihosting() Currently init_semihosting() assumes the return value from _open() call as the file descriptor handle and that is incorrect. The semihost _open() call returns the fdtable index returned by the __add_fdentry() for the file opened. --- libgloss/riscv/semihost-sys_fdtable.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/libgloss/riscv/semihost-sys_fdtable.c b/libgloss/riscv/semihost-sys_fdtable.c index 152c92d151..d62e3f9708 100644 --- a/libgloss/riscv/semihost-sys_fdtable.c +++ b/libgloss/riscv/semihost-sys_fdtable.c @@ -24,25 +24,26 @@ static struct fdentry fdtable[RISCV_MAX_OPEN_FILES]; void __attribute__ ((constructor)) init_semihosting () { - int handle; + int i; - for (int i=0; i Date: Wed, 10 Jan 2024 12:39:47 +0000 Subject: [PATCH 552/767] Cygwin: Fix a stray '\n' in cygcheck manpage Signed-off-by: Jon Turney --- winsup/doc/utils.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index f79a928df2..9210c94e28 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -210,7 +210,7 @@ At least one command option or a PROGRAM is required, as shown above. plain console only, not from a pty/rxvt/xterm) -e, --search-package list all available packages matching PATTERN PATTERN is a glob pattern with * and ? as wildcard chars - search selection specifiers (multiple allowed):\n\ + search selection specifiers (multiple allowed): --requires list packages depending on packages matching PATTERN --build-reqs list packages depending on packages matching PATTERN when building these packages From 5edd189d1ce70383f81214b9ea26e2637b3786fc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 11 Jan 2024 13:21:54 +0100 Subject: [PATCH 553/767] Cygwin: path.cc: fix comment starting with // but ending in */ Signed-off-by: Corinna Vinschen --- winsup/cygwin/path.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index c3f84f7f80..b8e5746fdd 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3131,7 +3131,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, major = 0; minor = 0; mode = 0; - // mount_flags is an incoming value set in path_conv */ + /* mount_flags is an incoming value set in path_conv */ path_flags = 0; PVOID eabuf = &nfs_aol_ffei; From 241b50a7abe25fc017f36eeb8704199f48d0b404 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 10 Jan 2024 17:38:54 +0000 Subject: [PATCH 554/767] Cygwin: Clarifications in 3.5 changes doc --- winsup/doc/new-features.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index bd856525e3..6ae4200312 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -13,9 +13,9 @@ Drop support for Windows 7, Windows 8, Server 2008 R2 and Server 2012. -The console device gets accessible from other terminals such as other -consoles and ptys. Thanks to this new feature, GNU screen and tmux now -work in the console. +Console devices (/dev/consN) are now accessible by processes attached to other +consoles or ptys. Thanks to this new feature, GNU screen and tmux now work in +the console. @@ -85,7 +85,7 @@ https://www.austingroupbugs.net/view.php?id=1674 -FIFOs now also work over NFS. +FIFOs now also work on NFS filesystems. From 4ecfb5b7292af4baf0a2f199f5351b67c8faf4cc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 15 Jan 2024 11:03:48 +0100 Subject: [PATCH 555/767] Cygwin: api docs: add missing fallocate Also add notes in terms of fallocate quirks. Signed-off-by: Corinna Vinschen --- winsup/doc/posix.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/winsup/doc/posix.xml b/winsup/doc/posix.xml index 151aeb9fee..1a4eee1ab1 100644 --- a/winsup/doc/posix.xml +++ b/winsup/doc/posix.xml @@ -1314,6 +1314,7 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017). exp10 exp10f exp10l + fallocate (see chapter "Implementation Notes") fcloseall fcloseall_r fedisableexcept @@ -1755,6 +1756,14 @@ RLIMIT_CORE and RLIMIT_STACK return the current values and set the requested values. All other resource arguments return -1 and set EINVAL. +fallocate has a few Windows quirks: The +FALLOC_FL_ZERO_RANGE operation is NOT atomic. With flags set to 0 and +FALLOC_FL_KEEP_SIZE, sparse blocks in the given range are re-allocated +as per the POSIX requirements. This re-allocation operation isn't +atomic either. Over-allocation with FALLOC_FL_KEEP_SIZE is only +temporary on Windows until the last handle to the file is closed. +Over-allocation on sparse files is entirely ignored on Windows. + From d8c0fb090ca637bba5337fb3b0a1f3ee107b21dd Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Mon, 15 Jan 2024 12:13:30 +0100 Subject: [PATCH 556/767] Cygwin: introduce close_range(2) This function closes or sets the close-on-exec flag for a specified range of file descriptors. It is available on FreeBSD and Linux. Signed-off-by: Christian Franke --- newlib/libc/include/sys/unistd.h | 6 ++++ winsup/cygwin/cygwin.din | 1 + winsup/cygwin/include/cygwin/version.h | 3 +- winsup/cygwin/release/3.5.0 | 2 ++ winsup/cygwin/syscalls.cc | 42 ++++++++++++++++++++++++++ winsup/doc/new-features.xml | 4 +++ winsup/doc/posix.xml | 5 +++ 7 files changed, 62 insertions(+), 1 deletion(-) diff --git a/newlib/libc/include/sys/unistd.h b/newlib/libc/include/sys/unistd.h index 25532251c5..00901540fc 100644 --- a/newlib/libc/include/sys/unistd.h +++ b/newlib/libc/include/sys/unistd.h @@ -26,6 +26,12 @@ int chown (const char *__path, uid_t __owner, gid_t __group); int chroot (const char *__path); #endif int close (int __fildes); +#if defined(__CYGWIN__) && (__BSD_VISIBLE || __GNU_VISIBLE) +/* Available on FreeBSD (__BSD_VISIBLE) and Linux (__GNU_VISIBLE). */ +int close_range (unsigned int __firstfd, unsigned int __lastfd, int __flags); +/* CLOSE_RANGE_UNSHARE (1 << 1) */ /* Linux-specific, not supported. */ +#define CLOSE_RANGE_CLOEXEC (1 << 2) +#endif #if __POSIX_VISIBLE >= 199209 size_t confstr (int __name, char *__buf, size_t __len); #endif diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index 9b76ce67a9..9e354acc61 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -347,6 +347,7 @@ clog10l NOSIGFE clogf NOSIGFE clogl NOSIGFE close SIGFE +close_range SIGFE closedir SIGFE closelog SIGFE cnd_broadcast SIGFE diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index c8177c2b17..3036878c4d 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -484,12 +484,13 @@ details. */ 347: Add c16rtomb, c32rtomb, mbrtoc16, mbrtoc32. 348: Add c8rtomb, mbrtoc. 349: Add fallocate. + 350: Add close_range. Note that we forgot to bump the api for ualarm, strtoll, strtoull, sigaltstack, sethostname. */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 349 +#define CYGWIN_VERSION_API_MINOR 350 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible changes are made to the shared diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index d0a6c2fc83..6209064a6b 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -43,6 +43,8 @@ What's new: - New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. +- New API call: close_range (available on FreeBSD and Linux). + - New API call: fallocate (Linux-specific). - Implement OSS-based sound mixer device (/dev/mixer). diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 486db1db67..9d88b60b0f 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -85,6 +85,48 @@ close_all_files (bool norelease) cygheap->fdtab.unlock (); } +/* Close or set the close-on-exec flag for all open file descriptors + from firstfd to lastfd. CLOSE_RANGE_UNSHARE is not supported. + Available on FreeBSD since 13 and Linux since 5.9 */ +extern "C" int +close_range (unsigned int firstfd, unsigned int lastfd, int flags) +{ + pthread_testcancel (); + + if (!(firstfd <= lastfd && !(flags & ~CLOSE_RANGE_CLOEXEC))) + { + set_errno (EINVAL); + return -1; + } + + cygheap->fdtab.lock (); + + unsigned int size = (lastfd < cygheap->fdtab.size ? lastfd + 1 : + cygheap->fdtab.size); + + for (unsigned int i = firstfd; i < size; i++) + { + cygheap_fdget cfd ((int) i, false, false); + if (cfd < 0) + continue; + + if (flags & CLOSE_RANGE_CLOEXEC) + { + syscall_printf ("set FD_CLOEXEC on fd %u", i); + cfd->fcntl (F_SETFD, FD_CLOEXEC); + } + else + { + syscall_printf ("closing fd %u", i); + cfd->close_with_arch (); + cfd.release (); + } + } + + cygheap->fdtab.unlock (); + return 0; +} + extern "C" int dup (int fd) { diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 6ae4200312..0abe1c41c9 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -74,6 +74,10 @@ posix_spawn_file_actions_addfchdir_np. New API calls: c8rtomb, c16rtomb, c32rtomb, mbrtoc8, mbrtoc16, mbrtoc32. + +New API call: close_range (available on FreeBSD and Linux). + + New API call: fallocate (Linux-specific). diff --git a/winsup/doc/posix.xml b/winsup/doc/posix.xml index 1a4eee1ab1..89056915bf 100644 --- a/winsup/doc/posix.xml +++ b/winsup/doc/posix.xml @@ -1143,6 +1143,7 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017). cfmakeraw cfsetspeed clearerr_unlocked + close_range daemon dn_comp dn_expand @@ -1297,6 +1298,7 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017). clog10 clog10f clog10l + close_range (see chapter "Implementation Notes") crypt_r (available in external "crypt" library) dladdr (see chapter "Implementation Notes") dremf @@ -1656,6 +1658,9 @@ CLOCK_REALTIME and CLOCK_MONOTONIC. clock_setres, clock_settime, and timer_create currently support only CLOCK_REALTIME. +close_range does not support the Linux-specific +flag CLOSE_RANGE_UNSHARE. + POSIX file locks via fcntl or lockf, as well as BSD flock locks are advisory locks. They don't interact with Windows mandatory locks, nor From 91457377d6c9f89a08b1b70e45cbae87ef467119 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 11 Jan 2024 20:00:14 +0000 Subject: [PATCH 557/767] Cygwin: Make 'ulimit -c' control writing a coredump Pre-format a command to be executed on a fatal error to run 'dumper' (using an absolute path). Factor out executing a pre-formatted command, so we can use that for invoking the JIT debugger in try_to_debug() (if error_start is present in the CYGWIN env var) and to invoke dumper when a fatal error occurs. On a fatal error, if the core file size limit is greater than 1MB, invoke dumper to write a core dump. Otherwise, if that limit is greater than 0, write a .stackdump file, as previously. Adjust and clarify the associated documentation. Also: Fix so that the error_start JIT debugger is now invoked, even when ulimit -c is zero. Also: Fix uses of console_printf() inside exec_prepared_command(). It's output is written via the Windows console device, so needs to use Windows-style line endings. Also: consistently return non-zero from try_to_debug() if we debugged. Future work: Truncate or remove the file written, if it exceeds the maximum size set by the ulimit. Future work: Using the words "fatal error" could probably be improved on. This means exiting on one of the "certain signals whose default action is to cause the process to terminate and produce a core dump file". --- winsup/cygwin/environ.cc | 1 + winsup/cygwin/exceptions.cc | 104 +++++++++++++++++++++----- winsup/cygwin/local_includes/winsup.h | 1 + winsup/cygwin/release/3.5.0 | 4 + winsup/doc/cygwinenv.xml | 25 +++++-- winsup/doc/new-features.xml | 6 ++ winsup/doc/utils.xml | 43 +++++++---- 7 files changed, 143 insertions(+), 41 deletions(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 008854a071..dca5c5db05 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -832,6 +832,7 @@ environ_init (char **envp, int envc) out: findenv_func = (char * (*)(const char*, int*)) my_findenv; environ = envp; + dumper_init (); if (envp_passed_in) { p = getenv ("CYGWIN"); diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 642afb788a..36f6a476a4 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -52,6 +52,7 @@ details. */ #define DUMPSTACK_FRAME_LIMIT 32 PWCHAR debugger_command; +PWCHAR dumper_command; extern uint8_t _sigbe; extern uint8_t _sigdelayed_end; @@ -132,6 +133,42 @@ error_start_init (const char *buf) wcscat (cp, L"\""); } +extern "C" void +dumper_init (void) +{ + WCHAR dll_dir[PATH_MAX]; + if (!GetModuleFileNameW (cygwin_hmodule, dll_dir, PATH_MAX)) + return; + + /* Strip off last path component ("\\cygwin1.dll") */ + PWCHAR w = wcsrchr (dll_dir, L'\\'); + if (!w) + return; + + *w = L'\0'; + + /* Calculate the length of the command, allowing for an appended DWORD PID and + terminating null */ + int cmd_len = 1 + wcslen(dll_dir) + 11 + 2 + 1 + wcslen(global_progname) + 1 + 10 + 1; + if (cmd_len > 32767) + { + /* If this comes to more than the 32,767 characters CreateProcess() can + accept, we can't work, so don't set dumper_command */ + return; + } + + dumper_command = (PWCHAR) malloc(cmd_len * sizeof (WCHAR)); + + PWCHAR cp = dumper_command; + cp = wcpcpy (cp, L"\""); + cp = wcpcpy (cp, dll_dir); + cp = wcpcpy (cp, L"\\dumper.exe"); + cp = wcpcpy (cp, L"\" "); + cp = wcpcpy (cp, L"\""); + cp = wcpcpy (cp, global_progname); + wcscat (cp, L"\""); +} + void cygwin_exception::open_stackdumpfile () { @@ -454,20 +491,14 @@ cygwin_stackdump () exc.dumpstack (); } -extern "C" int -try_to_debug () +static +int exec_prepared_command (PWCHAR command) { - if (!debugger_command) + if (!command) return 0; - debug_printf ("debugger_command '%W'", debugger_command); - if (being_debugged ()) - { - extern void break_here (); - break_here (); - return 0; - } + debug_printf ("executing prepared command '%W'", command); - PWCHAR dbg_end = wcschr (debugger_command, L'\0'); + PWCHAR dbg_end = wcschr (command, L'\0'); __small_swprintf (dbg_end, L" %u", GetCurrentProcessId ()); LONG prio = GetThreadPriority (GetCurrentThread ()); @@ -509,11 +540,12 @@ try_to_debug () } FreeEnvironmentStringsW (rawenv); - console_printf ("*** starting debugger for pid %u, tid %u\n", + console_printf ("*** starting '%W' for pid %u, tid %u\r\n", + command, cygwin_pid (GetCurrentProcessId ()), GetCurrentThreadId ()); BOOL dbg; dbg = CreateProcessW (NULL, - debugger_command, + command, NULL, NULL, FALSE, @@ -527,11 +559,15 @@ try_to_debug () we can't wait here for the error_start process to exit, as if it's a debugger, it might want to continue this thread. So we busy wait until a debugger attaches, which stops this process, after which it can decide if - we continue or not. */ + we continue or not. + + Note that this is still racy: if the error_start process does it's work too + fast, we don't notice that it attached and get stuck here. + */ *dbg_end = L'\0'; if (!dbg) - system_printf ("Failed to start debugger, %E"); + system_printf ("Failed to start, %E"); else { SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE); @@ -540,13 +576,29 @@ try_to_debug () Sleep (2000); } - console_printf ("*** continuing pid %u from debugger call (%d)\n", - cygwin_pid (GetCurrentProcessId ()), dbg); + console_printf ("*** continuing pid %u\r\n", + cygwin_pid (GetCurrentProcessId ())); SetThreadPriority (GetCurrentThread (), prio); return dbg; } +extern "C" int +try_to_debug () +{ + /* If already being debugged, break into the debugger (Note that this function + can be called from places other than an exception) */ + if (being_debugged ()) + { + extern void break_here (); + break_here (); + return 1; + } + + /* Otherwise, invoke the JIT debugger, if set */ + return exec_prepared_command (debugger_command); +} + /* myfault exception handler. */ EXCEPTION_DISPOSITION exception::myfault (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, @@ -1264,7 +1316,6 @@ signal_exit (int sig, siginfo_t *si, void *) debug_printf ("exiting due to signal %d", sig); exit_state = ES_SIGNAL_EXIT; - if (cygheap->rlim_core > 0UL) switch (sig) { case SIGABRT: @@ -1277,9 +1328,24 @@ signal_exit (int sig, siginfo_t *si, void *) case SIGTRAP: case SIGXCPU: case SIGXFSZ: - sig |= 0x80; /* Flag that we've "dumped core" */ if (try_to_debug ()) break; + + if (cygheap->rlim_core == 0Ul) + break; + + sig |= 0x80; /* Set flag in exit status to show that we've "dumped core" */ + + /* If core dump size is >1MB, try to invoke dumper to write a + .core file */ + if (cygheap->rlim_core > 1024*1024) + { + if (exec_prepared_command (dumper_command)) + break; + /* If that failed, fall-through to... */ + } + + /* Otherwise write a .stackdump */ if (si->si_code != SI_USER && si->si_cyg) { cygwin_exception *exc = (cygwin_exception *) si->si_cyg; diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index bf0a0bcc3f..76957618b0 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -179,6 +179,7 @@ void close_all_files (bool = false); /* debug_on_trap support. see exceptions.cc:try_to_debug() */ extern "C" void error_start_init (const char*); +extern "C" void dumper_init (void); extern "C" int try_to_debug (); void ld_preload (); diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 6209064a6b..1e62316a09 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -60,3 +60,7 @@ What changed: - Enable automatic sparsifying of files on SSDs, independent of the "sparse" mount mode. + +- When RLIMIT_CORE is more than 1MB, a core dump file which can be loaded by gdb + is now written on a fatal error. Otherwise, if it's greater than zero, a text + format .stackdump file is written, as previously. diff --git a/winsup/doc/cygwinenv.xml b/winsup/doc/cygwinenv.xml index 5e17404a71..d97f2b77d6 100644 --- a/winsup/doc/cygwinenv.xml +++ b/winsup/doc/cygwinenv.xml @@ -23,18 +23,29 @@ Defaults to off. -error_start:Win32filepath - if set, runs -Win32filepath when cygwin encounters a fatal error, -which is useful for debugging. Win32filepath is -usually set to the path to gdb or -dumper, for example -C:\cygwin\bin\gdb.exe. -There is no default set. +error_start:Win32filepath - if set, runs +Win32filepath when cygwin encounters a fatal error, which +can be useful for debugging. Defaults to not set. + + +Win32filepath is typically set to gdb or +dumper. If giving a path in +Win32filepath, note that it is a Windows-style path and not +a Cygwin path. The filename of the executing program and it's Windows process id are appended to the command as arguments. + + Note: This takes priority over writing core dump or .stackdump files, if + enabled by setrlimit(RLIMIT_CORE) (e.g. via + ulimit -c). + + + Note: This has no effect if a debugger is already attached when the fatal + error occurs. + diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index 0abe1c41c9..f8e38f5c48 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -97,6 +97,12 @@ Enable automatic sparsifying of files on SSDs, independent of the "sparse" mount mode. + +When RLIMIT_CORE is more than 1MB, a core dump file which can be loaded by gdb +is now written on a fatal error. Otherwise, if it's greater than zero, a text +format .stackdump file is written, as previously. + + diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 9210c94e28..692dae38f5 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -721,17 +721,17 @@ explorer $XPATH & Description The dumper utility can be used to create a core - dump of running Windows process. This core dump can be later loaded to - gdb and analyzed. One common way to use - dumper is to plug it into cygwin's Just-In-Time - debugging facility by adding - -error_start=x:\path\to\dumper.exe - to the - CYGWIN environment variable. Please note that - x:\path\to\dumper.exe is Windows-style and not cygwin - path. If error_start is set this way, then dumper will - be started whenever some program encounters a fatal error. + dump of running Windows process. This core dump can be later loaded into + gdb and analyzed. + + + + If the core file size limit is set to unlimited (e.g. ulimit -c + unlimited) and an error_start executable + hasn't been configured in the CYGWIN environment + variable, Cygwin will automatically run dumper when a + fatal error occurs. + dumper can be also be started from the command line to create a core dump of any running process. @@ -742,14 +742,25 @@ error_start=x:\path\to\dumper.exe terminated. To save space in the core dump, dumper doesn't - write those portions of the target process's memory space that are loaded + write those portions of the target process's memory space that were loaded from executable and dll files and are unchanged (e.g. program code). Instead, dumper saves paths to the files which contain that data. When a core dump is loaded into gdb, it uses these paths to load the appropriate files. That means that if you create a core dump on one machine and try to debug it on another, you'll need to place identical copies of the executable and dlls in the same directories as on - the machine where the core dump was created. + the machine where the core dump was created. + + + + + Notes + + A Cygwin "core dump file" is an ELF file containing the mutable parts of + the process memory and special note sections which capture the process, + thread and loaded module context needed to recreate the process image in a + debugger. + @@ -1497,8 +1508,10 @@ bash$ locale noexpr minidumper can be used with cygwin's Just-In-Time - debugging facility in exactly the same way as dumper - (See ). + debugging facility by adding error_start=minidumper to the + CYGWIN environment variable. If CYGWIN + is set this way, then minidumper will be started whenever + a program encounters a fatal exception. From b7868e74103541f3271a170fe3bc2b19a00cc8cf Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 9 Jan 2024 14:12:31 +0000 Subject: [PATCH 558/767] Cygwin: Disable writing core dumps by default. Change the default core limit from unlimited to 0 (disabled) --- winsup/cygwin/mm/cygheap.cc | 2 +- winsup/cygwin/release/3.5.0 | 3 +++ winsup/doc/new-features.xml | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index a20ee5972a..3dc0c011fa 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -294,7 +294,7 @@ cygheap_init () cygheap->locale.mbtowc = __utf8_mbtowc; /* Set umask to a sane default. */ cygheap->umask = 022; - cygheap->rlim_core = RLIM_INFINITY; + cygheap->rlim_core = 0; } if (!cygheap->fdtab) cygheap->fdtab.init (); diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 1e62316a09..5940d80549 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -64,3 +64,6 @@ What changed: - When RLIMIT_CORE is more than 1MB, a core dump file which can be loaded by gdb is now written on a fatal error. Otherwise, if it's greater than zero, a text format .stackdump file is written, as previously. + +- The default RLIMIT_CORE is now 0, disabling the generation of core dump or + stackdump files. diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml index f8e38f5c48..17c688f895 100644 --- a/winsup/doc/new-features.xml +++ b/winsup/doc/new-features.xml @@ -103,6 +103,12 @@ is now written on a fatal error. Otherwise, if it's greater than zero, a text format .stackdump file is written, as previously. + +The default RLIMIT_CORE is now 0, disabling the generation of core dump or +stackdump files. Use e.g. ulimit -c unlimited or ulimit -c +1024 to enable them again. + + From a83b93e662b0e65fd181ed50de7e960b311f4a94 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Wed, 10 Jan 2024 20:35:49 +0000 Subject: [PATCH 559/767] Cygwin: Define and use __WCOREFLAG Also fix a typo in description of exit status --- winsup/cygwin/exceptions.cc | 2 +- winsup/cygwin/include/cygwin/wait.h | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 36f6a476a4..362ad69a56 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1334,7 +1334,7 @@ signal_exit (int sig, siginfo_t *si, void *) if (cygheap->rlim_core == 0Ul) break; - sig |= 0x80; /* Set flag in exit status to show that we've "dumped core" */ + sig |= __WCOREFLAG; /* Set flag in exit status to show that we've "dumped core" */ /* If core dump size is >1MB, try to invoke dumper to write a .core file */ diff --git a/winsup/cygwin/include/cygwin/wait.h b/winsup/cygwin/include/cygwin/wait.h index 7e40c8d6c7..0d42e89206 100644 --- a/winsup/cygwin/include/cygwin/wait.h +++ b/winsup/cygwin/include/cygwin/wait.h @@ -16,12 +16,13 @@ details. */ #define WUNTRACED 2 #define WCONTINUED 8 #define __W_CONTINUED 0xffff +#define __WCOREFLAG 0x80 /* A status is 16 bits, and looks like: <1 byte info> <1 byte code> == 0, child has exited, info is the exit value - == 1..7e, child has exited, info is the signal number. + == 1..7e, child has exited, code is the signal number. == 7f, child has stopped, info was the signal number. == 80, there was a core dump. */ @@ -34,6 +35,6 @@ details. */ #define WEXITSTATUS(_w) (((_w) >> 8) & 0xff) #define WTERMSIG(_w) ((_w) & 0x7f) #define WSTOPSIG WEXITSTATUS -#define WCOREDUMP(_w) (WIFSIGNALED(_w) && ((_w) & 0x80)) +#define WCOREDUMP(_w) (WIFSIGNALED(_w) && ((_w) & __WCOREFLAG)) #endif /* _CYGWIN_WAIT_H */ From aa8224826cb4d7d436757688e8cb3fb760f1aabc Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 11 Jan 2024 21:34:27 +0000 Subject: [PATCH 560/767] Cygwin: Treat api_fatal() similarly to a core-dumping signal Provide the same debugging opportunities for api_fatal() as we do for a core-dumping signal: 1) Break into any attached debugger 2) Start JIT debugger (if configured) (keeping these under DEBUGGING doesn't seem helpful) 3) Write a coredump (if rlim_core > 1MB) 4) Write a stackdump (if that failed, or 0 < rlim_core <= 1MB) --- winsup/cygwin/dcrt0.cc | 6 +----- winsup/cygwin/exceptions.cc | 18 ++++++++++++++++++ winsup/cygwin/local_includes/winsup.h | 1 + 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 130d652aac..17c9be731a 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -1250,11 +1250,7 @@ vapi_fatal (const char *fmt, va_list ap) __small_vsprintf (buf + n, fmt, ap); va_end (ap); strace.prntf (_STRACE_SYSTEM, NULL, "%s", buf); - -#ifdef DEBUGGING - try_to_debug (); -#endif - cygwin_stackdump (); + api_fatal_debug(); myself.exit (__api_fatal_exit_val); } diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 362ad69a56..8b1c5493ef 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1396,6 +1396,24 @@ signal_exit (int sig, siginfo_t *si, void *) } } /* extern "C" */ +/* As above, but before exiting due to api_fatal */ +extern "C" +void +api_fatal_debug () +{ + if (try_to_debug ()) + return; + + if (cygheap->rlim_core == 0Ul) + return; + + if (cygheap->rlim_core > 1024*1024) + if (exec_prepared_command (dumper_command)) + return; + + cygwin_stackdump(); +} + /* Attempt to carefully handle SIGCONT when we are stopped. */ void _cygtls::handle_SIGCONT () diff --git a/winsup/cygwin/local_includes/winsup.h b/winsup/cygwin/local_includes/winsup.h index 76957618b0..38313962d9 100644 --- a/winsup/cygwin/local_includes/winsup.h +++ b/winsup/cygwin/local_includes/winsup.h @@ -181,6 +181,7 @@ void close_all_files (bool = false); extern "C" void error_start_init (const char*); extern "C" void dumper_init (void); extern "C" int try_to_debug (); +extern "C" void api_fatal_debug (); void ld_preload (); void fixup_hooks_after_fork (); From 07cccc74a5da0da5bb664411e4cf76b3d35bc09d Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 11 Jan 2024 17:37:03 +0000 Subject: [PATCH 561/767] Cygwin: Update documentation for cygwin_stackdump --- winsup/doc/misc-funcs.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/winsup/doc/misc-funcs.xml b/winsup/doc/misc-funcs.xml index 7463942e6a..2503dd3b7d 100644 --- a/winsup/doc/misc-funcs.xml +++ b/winsup/doc/misc-funcs.xml @@ -106,6 +106,10 @@ enum. The second is an optional pointer. Description Outputs a stackdump to stderr from the called location. + + Note: This function only has an effect the first time it is called by a process. + + Note: This function is deprecated. From 70b27cee0c8ab12a1b4d5b31d086fc79d60c4001 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 17 Jan 2024 12:39:50 +0100 Subject: [PATCH 562/767] Cygwin: copy doc changes from commit 241b50a7abe2 to release notes Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.0 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 5940d80549..611636b902 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -3,9 +3,9 @@ What's new: - Drop support for Windows 7, Windows 8, Server 2008 R2 and Server 2012. -- The console device gets accessible from other terminals such as other - consoles and ptys. Thanks to this new feature, GNU screen and tmux - now work in the console. +- Console devices (/dev/consN) are now accessible by processes attached + to other consoles or ptys. Thanks to this new feature, GNU screen and + tmux now work in the console. - newgrp(1) tool. @@ -56,7 +56,7 @@ What changed: files as execvp. For the reasoning, see https://www.austingroupbugs.net/view.php?id=1674 -- FIFOs now also work over NFS. +- FIFOs now also work on NFS filesystems. - Enable automatic sparsifying of files on SSDs, independent of the "sparse" mount mode. From d45261f62a15f8abd94a1031020b9a9f455e4eed Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 18 Jan 2024 10:53:25 +0100 Subject: [PATCH 563/767] Cygwin: replace all `fgrep' with `grep -F' Unfortunately fgrep is now deprecated in a very pushy way. Make sure to use grep -F instead all around, even in docs and comments/ Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 4 ++-- .../linux-locale-helpers/fetch-lc_messages-from-linux.c | 6 +++--- .../linux-locale-helpers/fetch-lc_time_era-from-linux.c | 2 +- winsup/doc/faq-programming.xml | 2 +- winsup/doc/xidepend | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 3036878c4d..4122125a60 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -530,9 +530,9 @@ details. */ The mkvers.sh script at the top level produces a .cc file which initializes a cygwin_version structure based on the above version information and - creates a string table for grepping via "fgrep '%%%' cygwinwhatever.dll" + creates a string table for grepping via "grep -F '%%%' cygwinwhatever.dll" if you are using GNU grep. Otherwise you may want to do a - "strings cygwinwhatever.dll | fgrep '%%%'" instead. + "strings cygwinwhatever.dll | grep -F '%%%'" instead. This will produce output such as: diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c b/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c index 03755c6aa7..e83bad66ff 100644 --- a/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc_messages-from-linux.c @@ -149,8 +149,8 @@ main () { char name[32], *c; FILE *pp; - - pp = popen ("locale -a | grep -a '_' | fgrep -v .", "r"); + + pp = popen ("locale -a | grep -a '_' | grep -F -v .", "r"); if (!pp) { perror ("popen failed"); @@ -160,7 +160,7 @@ main () { c = strchr (name, '\n'); if (c) - *c = '\0'; + *c = '\0'; read_locale_messages (name); } pclose (pp); diff --git a/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c b/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c index 1ee75ca6ba..66dc7aa39a 100644 --- a/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c +++ b/winsup/cygwin/linux-locale-helpers/fetch-lc_time_era-from-linux.c @@ -218,7 +218,7 @@ main () char name[32], *c; FILE *pp; - pp = popen ("locale -a | grep -a '_' | fgrep -v .", "r"); + pp = popen ("locale -a | grep -a '_' | grep -F -v .", "r"); if (!pp) { perror ("popen failed"); diff --git a/winsup/doc/faq-programming.xml b/winsup/doc/faq-programming.xml index ba00dfea5a..a834298599 100644 --- a/winsup/doc/faq-programming.xml +++ b/winsup/doc/faq-programming.xml @@ -380,7 +380,7 @@ cygexec, you can find them with a script like this: #!/bin/sh cd /bin; for f in `find . -type f -name '*.exe'`; do - cygcheck $f | (fgrep -qi cygwin1.dll || echo $f) + cygcheck $f | (grep -Fqi cygwin1.dll || echo $f) done diff --git a/winsup/doc/xidepend b/winsup/doc/xidepend index cc04f4a121..bfbadfef29 100755 --- a/winsup/doc/xidepend +++ b/winsup/doc/xidepend @@ -12,7 +12,7 @@ fi for f in "$@" do f=`basename "$f"` - if fgrep -q 'xi:include' "$f" + if grep -F -q 'xi:include' "$f" then # This file uses XIncludes. Let's chase its deps recursively. base=`basename "$f" .xml` From d13d9220bf47f7e91b02c5c8e214780bda840606 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 19 Jan 2024 11:13:39 +0100 Subject: [PATCH 564/767] _fputwc_r: actually return result of __fputwc Compiling with -Wall uncovered a bug in _fputwc_r introduced in commit 09119463a1445 ("stdio: split byte- and wide-char-oriented low-level output functions"). The underlying function __fputwc has been accidentally called without fetching its return value. So the return value of _fputwc_r (and thus fputwc) was undefined. Fixes: 09119463a1445 ("stdio: split byte- and wide-char-oriented low-level output functions" Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/fputwc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/stdio/fputwc.c b/newlib/libc/stdio/fputwc.c index 8430446dea..12a6170bbc 100644 --- a/newlib/libc/stdio/fputwc.c +++ b/newlib/libc/stdio/fputwc.c @@ -169,7 +169,7 @@ _fputwc_r (struct _reent *ptr, wint_t r; _newlib_flockfile_start (fp); - __fputwc(ptr, wc, fp); + r = __fputwc(ptr, wc, fp); _newlib_flockfile_end (fp); return r; } From 29ec33360da9171f1df27ef59ea4576fda4065ff Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 19 Jan 2024 11:20:17 +0100 Subject: [PATCH 565/767] ORIENT: avoid "expression has no effect" warning The warning "right-hand operand of comma expression has no effect [-Wunused-value]" crops up with -Wall in cases where ORIENT is called without checking or assigning its value. Explicitely void the expression in these cases to avoid the warning. Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/fwide.c | 2 +- newlib/libc/stdio/open_memstream.c | 2 +- newlib/libc/stdio/ungetwc.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/newlib/libc/stdio/fwide.c b/newlib/libc/stdio/fwide.c index 9b5a3d12a7..1d24304681 100644 --- a/newlib/libc/stdio/fwide.c +++ b/newlib/libc/stdio/fwide.c @@ -58,7 +58,7 @@ _fwide_r (struct _reent *ptr, _newlib_flockfile_start (fp); if (mode != 0) { - ORIENT (fp, mode); + (void) ORIENT (fp, mode); } if (!(fp->_flags & __SORD)) ret = 0; diff --git a/newlib/libc/stdio/open_memstream.c b/newlib/libc/stdio/open_memstream.c index e3a52ed33d..97b13b7bfc 100644 --- a/newlib/libc/stdio/open_memstream.c +++ b/newlib/libc/stdio/open_memstream.c @@ -367,7 +367,7 @@ internal_open_memstream_r (struct _reent *ptr, fp->_flags |= __SL64; #endif fp->_close = memcloser; - ORIENT (fp, wide); + (void) ORIENT (fp, wide); _newlib_flockfile_end (fp); return fp; } diff --git a/newlib/libc/stdio/ungetwc.c b/newlib/libc/stdio/ungetwc.c index 16d37f2d17..a04ca3467d 100644 --- a/newlib/libc/stdio/ungetwc.c +++ b/newlib/libc/stdio/ungetwc.c @@ -82,7 +82,7 @@ _ungetwc_r (struct _reent *ptr, size_t len; _newlib_flockfile_start (fp); - ORIENT (fp, 1); + (void) ORIENT (fp, 1); if (wc == WEOF) wc = WEOF; else if ((len = _wcrtomb_r(ptr, buf, wc, &fp->_mbstate)) == (size_t)-1) From 422c4f0451ccaff9aa38ee86d5d860f41c7bf9ef Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 19 Jan 2024 11:28:11 +0100 Subject: [PATCH 566/767] memccpy: fix pointer assignment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The local vars dst and src are unsigned pointers, but two assignments cast their value to signed explicitely. This results in the warning "pointer targets in assignment from ‘char *’ to ‘unsigned char *’ differ in signedness [-Wpointer-sign]" in case of -Wall. Fix the cast. Fixes: d254189b38bb ("2002-07-23 Jeff Johnston ") Signed-off-by: Corinna Vinschen --- newlib/libc/string/memccpy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/newlib/libc/string/memccpy.c b/newlib/libc/string/memccpy.c index 6757cb34cb..d6b2f8beab 100644 --- a/newlib/libc/string/memccpy.c +++ b/newlib/libc/string/memccpy.c @@ -118,8 +118,8 @@ memccpy (void *__restrict dst0, } /* Pick up any residual with a byte copier. */ - dst = (char*)aligned_dst; - src = (char*)aligned_src; + dst = (unsigned char*)aligned_dst; + src = (unsigned char*)aligned_src; } while (len0--) From 47f079b98e46792c776dbea230d92a6dfc1d428f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 19 Jan 2024 11:14:33 +0100 Subject: [PATCH 567/767] fputwc: call __fputwc directly Avoid another hop in the call stack. Signed-off-by: Corinna Vinschen --- newlib/libc/stdio/fputwc.c | 7 ++++++- newlib/libc/stdio/fputwc_u.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/newlib/libc/stdio/fputwc.c b/newlib/libc/stdio/fputwc.c index 12a6170bbc..e2aadefd53 100644 --- a/newlib/libc/stdio/fputwc.c +++ b/newlib/libc/stdio/fputwc.c @@ -181,5 +181,10 @@ fputwc (wchar_t wc, struct _reent *reent = _REENT; CHECK_INIT(reent, fp); - return _fputwc_r (reent, wc, fp); + wint_t r; + + _newlib_flockfile_start (fp); + r = __fputwc(reent, wc, fp); + _newlib_flockfile_end (fp); + return r; } diff --git a/newlib/libc/stdio/fputwc_u.c b/newlib/libc/stdio/fputwc_u.c index 7e7403b998..f54bcf30f7 100644 --- a/newlib/libc/stdio/fputwc_u.c +++ b/newlib/libc/stdio/fputwc_u.c @@ -44,5 +44,5 @@ fputwc_unlocked (wchar_t wc, struct _reent *reent = _REENT; CHECK_INIT(reent, fp); - return _fputwc_unlocked_r (reent, wc, fp); + return __fputwc(reent, wc, fp); } From 3f2d03a78014a7351ccce1732d9d9a3a45637584 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 19 Jan 2024 15:11:32 +0100 Subject: [PATCH 568/767] Cygwin: remove warnings from testsuite build - drop unused variable - remove deprectated usage of std::pointer_to_unary_function. Signed-off-by: Corinna Vinschen --- winsup/testsuite/cygrun.c | 1 - winsup/testsuite/winsup.api/cygload.cc | 9 +++------ winsup/testsuite/winsup.api/cygload.h | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/winsup/testsuite/cygrun.c b/winsup/testsuite/cygrun.c index 450201342a..50c51876ed 100644 --- a/winsup/testsuite/cygrun.c +++ b/winsup/testsuite/cygrun.c @@ -22,7 +22,6 @@ main (int argc, char **argv) PROCESS_INFORMATION pi; DWORD res; DWORD ec = 1; - char *p; DWORD timeout = 60 * 1000; if (argc < 2) diff --git a/winsup/testsuite/winsup.api/cygload.cc b/winsup/testsuite/winsup.api/cygload.cc index f5ca8db9a1..afd3ee90fc 100644 --- a/winsup/testsuite/winsup.api/cygload.cc +++ b/winsup/testsuite/winsup.api/cygload.cc @@ -597,12 +597,9 @@ main (int argc, char *argv[]) } // And signal handling: - std::pointer_to_unary_function < int , void > h1 (&hangup); - std::pointer_to_unary_function < int , void > h2 (&interrupt); - std::pointer_to_unary_function < int , void > h3 (&catch_signal); - cygwin.set_handler (SIGHUP, &h1); - cygwin.set_handler (SIGINT, &h2); - cygwin.set_handler (SIGUSR1, &h3); + cygwin.set_handler (SIGHUP, hangup); + cygwin.set_handler (SIGINT, interrupt); + cygwin.set_handler (SIGUSR1, catch_signal); // Make sure the signal handler thread has had time to start... Sleep (100); diff --git a/winsup/testsuite/winsup.api/cygload.h b/winsup/testsuite/winsup.api/cygload.h index 8007fd5932..30154048b0 100644 --- a/winsup/testsuite/winsup.api/cygload.h +++ b/winsup/testsuite/winsup.api/cygload.h @@ -102,7 +102,7 @@ namespace cygwin public: // The constructor will automatically hook you up for receiving // cygwin signals. Just specify a signal and pass in a signal_handler. - typedef std::pointer_to_unary_function signal_handler; + typedef void signal_handler (int); signal_handler *set_handler (int signal, signal_handler *); private: From 1adfc9ac37228732bbed2c0923cfc3ae7007724e Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 00:26:14 -0500 Subject: [PATCH 569/767] libgloss: check for objcopy & objdump properly A bunch of ports hack together these values rather than setting them up in the configure script for everyone. --- libgloss/Makefile.in | 2 + libgloss/configure | 186 ++++++++++++++++++++++++++++++++++++++++++ libgloss/configure.ac | 2 + 3 files changed, 190 insertions(+) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index ac2db2197a..6b83757453 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -892,6 +892,8 @@ MIPS_SCRIPT_LIST = @MIPS_SCRIPT_LIST@ MKDIR_P = @MKDIR_P@ MN10300_BSP_LIST = @MN10300_BSP_LIST@ MN10300_SCRIPT_LIST = @MN10300_SCRIPT_LIST@ +OBJCOPY = @OBJCOPY@ +OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ diff --git a/libgloss/configure b/libgloss/configure index 6ba7b94081..c94b8806f4 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -613,6 +613,8 @@ I386_CPPFLAGS ARM_OBJTYPE AARCH64_OBJTYPE CPP +OBJDUMP +OBJCOPY RANLIB LD ac_ct_AR @@ -4642,6 +4644,190 @@ else RANLIB="$ac_cv_prog_RANLIB" fi +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args. +set dummy ${ac_tool_prefix}objcopy; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJCOPY+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJCOPY"; then + ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJCOPY="${ac_tool_prefix}objcopy" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJCOPY=$ac_cv_prog_OBJCOPY +if test -n "$OBJCOPY"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5 +$as_echo "$OBJCOPY" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJCOPY"; then + ac_ct_OBJCOPY=$OBJCOPY + # Extract the first word of "objcopy", so it can be a program name with args. +set dummy objcopy; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJCOPY+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJCOPY"; then + ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJCOPY="objcopy" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY +if test -n "$ac_ct_OBJCOPY"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5 +$as_echo "$ac_ct_OBJCOPY" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJCOPY" = x; then + OBJCOPY=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJCOPY=$ac_ct_OBJCOPY + fi +else + OBJCOPY="$ac_cv_prog_OBJCOPY" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + $as_echo "#define HAVE_GNU_LD 1" >>confdefs.h diff --git a/libgloss/configure.ac b/libgloss/configure.ac index ec6dec0a0f..575565c6a9 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -265,6 +265,8 @@ AM_PROG_AR LD=${LD-ld} AC_SUBST(LD) AC_PROG_RANLIB +AC_CHECK_TOOL(OBJCOPY, objcopy, :) +AC_CHECK_TOOL(OBJDUMP, objdump, :) AC_DEFINE(HAVE_GNU_LD, 1, [Using GNU LD]) From 0714c6305adfb91b6560da03dc871a564450495c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 01:51:27 -0500 Subject: [PATCH 570/767] libgloss: add some objcopy/objdump build rules A bunch of ports have manual rules to generate disassembly, srec, and binary files from test programs. Add top-level pattern rules so every test program gets this for free, and we don't have to duplicate it in every subdir. --- libgloss/Makefile.am | 10 ++++++++++ libgloss/Makefile.in | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index a8a445b1dd..a035f8d8a6 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -31,6 +31,16 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = +## Some convenience rules for debugging programs. +%.dis: % + $(AM_V_GEN)$(OBJDUMP) -d $< > $@ +%.bin: % + $(AM_V_GEN)$(OBJCOPY) -O binary $< $@ +%.hex: % + $(AM_V_GEN)$(OBJCOPY) -O ihex $< $@ +%.srec: % + $(AM_V_GEN)$(OBJCOPY) -O srec $< $@ + ## These are roughly topologically sorted in order to make porting more ## streamlined. FLAGS_TO_PASS = \ diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 6b83757453..eff98872c8 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -5693,6 +5693,15 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ .PRECIOUS: Makefile +%.dis: % + $(AM_V_GEN)$(OBJDUMP) -d $< > $@ +%.bin: % + $(AM_V_GEN)$(OBJCOPY) -O binary $< $@ +%.hex: % + $(AM_V_GEN)$(OBJCOPY) -O ihex $< $@ +%.srec: % + $(AM_V_GEN)$(OBJCOPY) -O srec $< $@ + # GNU Make needs to see an explicit $(MAKE) variable in the command it # runs to enable its job server during parallel builds. Hence the # comments below. From 58da25856169ca9e64105079f00f4adaefeca35b Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 20:34:38 -0500 Subject: [PATCH 571/767] libgloss: add per-file & per-dir flag support This logic is copied from what's used in newlib today. This allows subdirs to easily define per-directory flags & per-file flags without having to setup unique automake rules for each one. --- libgloss/Makefile.am | 8 +++++++- libgloss/Makefile.in | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index a035f8d8a6..ccfbfc1670 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -24,7 +24,13 @@ includetool_DATA = includesystooldir = $(tooldir)/include/sys includesystool_DATA = -AM_CPPFLAGS = -idirafter $(srcroot)/include +# These are useful for standalone object files like crt0.o. +AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$( Date: Tue, 26 Dec 2023 21:46:59 -0500 Subject: [PATCH 572/767] libgloss: msp430: delete outdated/wrong code The #if 0 & comment imply this code doesn't exist and is never used, except there's another #if Lrun_fini_array section below which *does* define this function, which makes this code comment confusing. This seems to be a hold over of the cleanup of the minrt code in the old commit 884b05b54e4595433c85f8ca9820e88b4c723e38 ("MSP430: Remove .init/.fini sections"). --- libgloss/msp430/crt0.S | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/libgloss/msp430/crt0.S b/libgloss/msp430/crt0.S index 88876cd483..c0b258f508 100644 --- a/libgloss/msp430/crt0.S +++ b/libgloss/msp430/crt0.S @@ -195,20 +195,6 @@ START_CRT_FUNC 0600 run_init_array END_CRT_FUNC run_init_array #endif /* Lrun_init_array */ -;; FIXME: There are currently no program termination routines executed for -;; msp430. -#if 0 -#if Lrun_fini_array -;; Ensure global C++ destructors in .fini_array are called on exit -;; by registering __crt0_run_fini_array with atexit. -START_CRT_FUNC 0700 register_fini_array - - mov_ #__crt0_run_fini_array, R12 - call_ #atexit - -END_CRT_FUNC register_fini_array -#endif /* Lrun_fini_array */ -#endif /* 0 */ #if Lmain ;; This function is always included and calls main(). From 2b0fd7030830701a63781de9d67a596e361c39be Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 21:56:00 -0500 Subject: [PATCH 573/767] libgloss: msp430: delete stub crt_init.o This object is created by compiling crt0.S with -DLinit, but there has never been an "#if Linit" check in crt0.S, so this has always produced a stub object file. Drop compiling it entirely. --- libgloss/msp430/Makefile.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libgloss/msp430/Makefile.in b/libgloss/msp430/Makefile.in index 05d3f9cba9..c5d70ff7d9 100644 --- a/libgloss/msp430/Makefile.in +++ b/libgloss/msp430/Makefile.in @@ -90,8 +90,7 @@ CRT_OBJS = \ crt_run_init_array.o \ crt_run_preinit_array.o \ crt_run_fini_array.o \ - crt_run_array.o \ - crt_init.o + crt_run_array.o #### Host specific Makefile fragment comes in here. @host_makefile_frag@ From f5c40e04e57fb2a42aeff948cf16bd6dd2b5276d Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 22:01:30 -0500 Subject: [PATCH 574/767] libgloss: msp430: split up crt0.S source The build system compiles crt0.S many times to produce independent object files by defining different -DLxxx symbols for each. This complicates the build, and has led to some bugs in the source and build (see the previous cleanup commits in here). The crt_bss.S file has also been duplicated with crt0.S leading to confusion as to which one is the "real" one. The only reason to keep them in one file is to make management of the section numbers when calling START_CRT_FUNC a little easier, but that seems trivial to check with a quick grep across all the files. Considering how complicated the build is now, and the bugs we've had as a result, split the crt0.S file up into multiple source files so we don't have to compile it multiple times. This will also simplify merging it into the top-level Makefile. --- libgloss/msp430/Makefile.in | 7 +- libgloss/msp430/crt0.S | 192 +----------------------- libgloss/msp430/crt_bss.S | 24 +-- libgloss/msp430/crt_callexit.S | 39 +++++ libgloss/msp430/crt_high_bss.S | 51 +++++++ libgloss/msp430/crt_init.S | 46 ++++++ libgloss/msp430/crt_main.S | 40 +++++ libgloss/msp430/crt_move_highdata.S | 71 +++++++++ libgloss/msp430/crt_movedata.S | 50 ++++++ libgloss/msp430/crt_run_array.S | 48 ++++++ libgloss/msp430/crt_run_fini_array.S | 43 ++++++ libgloss/msp430/crt_run_init_array.S | 43 ++++++ libgloss/msp430/crt_run_preinit_array.S | 43 ++++++ libgloss/msp430/memmodel.h | 14 +- 14 files changed, 499 insertions(+), 212 deletions(-) create mode 100644 libgloss/msp430/crt_callexit.S create mode 100644 libgloss/msp430/crt_high_bss.S create mode 100644 libgloss/msp430/crt_init.S create mode 100644 libgloss/msp430/crt_main.S create mode 100644 libgloss/msp430/crt_move_highdata.S create mode 100644 libgloss/msp430/crt_movedata.S create mode 100644 libgloss/msp430/crt_run_array.S create mode 100644 libgloss/msp430/crt_run_fini_array.S create mode 100644 libgloss/msp430/crt_run_init_array.S create mode 100644 libgloss/msp430/crt_run_preinit_array.S diff --git a/libgloss/msp430/Makefile.in b/libgloss/msp430/Makefile.in index c5d70ff7d9..ccf94dc162 100644 --- a/libgloss/msp430/Makefile.in +++ b/libgloss/msp430/Makefile.in @@ -78,8 +78,6 @@ NOSYS_OBJS = ciosyscalls.o \ unlink.o \ sbrk.o -# Each crt_*.o is built from crt0.S using -DL*. crt0.o is built from -# crt0.s with -DL0 via the default rule below. CRT_OBJS = \ crt_bss.o \ crt_high_bss.o \ @@ -98,12 +96,9 @@ CRT_OBJS = \ all: $(CRT) $(SIM_BSP) $(LIB_NOSYS) $(LIB_CRT) copy_scripts_to_objdir -crt_%.o : crt0.S - $(CC) -DL$* -Wa,-gdwarf2 -Wa,-I$(srcdir) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< -o $@ - # Override .S.o rule to pass assembler debugging flags .S.o: - $(CC) -DL0 -Wa,-gdwarf2 -Wa,-I$(srcdir) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< + $(CC) -Wa,-gdwarf2 -Wa,-I$(srcdir) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< $(SIM_BSP): $(SIM_OBJS) $(AR) $(ARFLAGS) $@ $? diff --git a/libgloss/msp430/crt0.S b/libgloss/msp430/crt0.S index c0b258f508..affc2c9a85 100644 --- a/libgloss/msp430/crt0.S +++ b/libgloss/msp430/crt0.S @@ -13,13 +13,6 @@ #include "memmodel.h" -;; The linker links all .crt_* sections in asciibetical order at the -;; same place. So, the four digits in .crt_NNNN_xxx name created by -;; the START_CRT_FUNC macro determine the link order, so, keep them -;; in sequential order here. The first two digits are set here, the -;; second two allow users to insert code between code fragments here. - -#if L0 .section ".resetvec", "a" __msp430_resetvec_hook: .word __crt0_start @@ -56,9 +49,8 @@ START_CRT_FUNC 0000 start mov_ #__stack, R1 END_CRT_FUNC start -#endif -;; The CRT functions below will only be present in the final linked +;; The CRT functions will only be present in the final linked ;; executable if the assembler decides they are needed. The assembler will ;; only define the symbol necessary to prevent them being garbage collected ;; by the linker if the file being assembled has a specific section, @@ -67,185 +59,3 @@ END_CRT_FUNC start ;; if it detects that main() has an epilogue. For example, if main() has a ;; while(1) loop at the end, GCC will not generate an epilogue (since it won't ;; return) and __crt0_call_exit won't be included. - -#if Lbss -;; This function is responsible for initializing the contents of the -;; .bss section. - -START_CRT_FUNC 0100 init_bss - - mov_ #__bssstart, R12 - clr.w R13 - mov_ #__bsssize, R14 -#ifdef __MSP430X_LARGE__ - clr.w R15 ; We assume that __bsssize is never > 64K -#endif - call_ #memset - -END_CRT_FUNC init_bss -#endif /* Lbss */ - - -#ifdef __MSP430X_LARGE__ -#if Lhigh_bss -;; This function is responsible for initializing the contents of the -;; .upper.bss section. - -START_CRT_FUNC 0200 init_highbss - - mov_ #__high_bssstart, R12 - mov.w #0, R13 - mov_ #__high_bsssize, R14 - ;; If __high_bsssize is zero then skip the call to memset. - ;; This can happen if all of the bss data was placed into .either.bss. - cmp.w #0, R14 - jeq 1f - call_ #memset -1: -END_CRT_FUNC init_highbss -#endif /* Lhigh_bss */ -#endif /* __MSP430X_LARGE__ */ - - -#if Lmovedata -;; This function is responsible for copying the -;; contents of the .data section from its load address (in ROM) to -;; its run-time address (in RAM). - -START_CRT_FUNC 0300 movedata - - mov_ #__datastart, R12 - mov_ #__romdatastart, R13 - - ;; memmove and memcpy do not currently work when src == dst - cmp_ R12, R13 - jeq 1f - - mov_ #__romdatacopysize, R14 - - call_ #memmove -1: -END_CRT_FUNC movedata -#endif /* Lmovedata */ - - -#ifdef __MSP430X_LARGE__ -#if Lmove_highdata -;; This function is responsible for making sure that the -;; contents of the .upper.data section have their correct startup values. -;; If a copy of the .upper.data section is stored in ROM then this means -;; copying the contents into HIFRAM. If a copy of .upper.data is stored in a -;; shadow section in HIFRAM then this means copying from the shadow section -;; into the real section. - -START_CRT_FUNC 0400 move_highdata - ;; __rom_highdatacopysize may be zero. Test this first because - ;; its value may come from the weak definitions above and we do - ;; not want to access the memory at address 0 pointed to by the - ;; weak definition of __upper_data_init. - mov.w #__rom_highdatacopysize, R14 - cmp.w #0, R14 - jeq 3f - - /* Test our status word. */ - cmpx.w #0, &__upper_data_init - jeq 1f - /* Status word is non-zero - copy from shadow into upper. */ - mov_ #__high_datastart, R12 - mov_ #__rom_highdatastart, R13 - jmp 2f - -1: /* Status word is zero. Copy from upper to shadow and change status word. */ - movx.w #1, &__upper_data_init - mov_ #__rom_highdatastart, R12 - mov_ #__high_datastart, R13 - -2: ;; __rom_highdatacopysize may be zero. memmove should cope. - mov.w #__rom_highdatacopysize, R14 - - call_ #memmove -3: -END_CRT_FUNC move_highdata -#endif /* Lmove_highdata */ -#endif /* __MSP430X_LARGE__ */ - -#if Lrun_preinit_array -;; This function is responsible for setting up the arguments -;; required for __crt0_run_array, to run the functions in .preinit_array. -START_CRT_FUNC 0500 run_preinit_array - - mov_ #__preinit_array_start, R4 - mov_ #__preinit_array_end, R5 - mov_ #PTRsz, R6 - call_ #__crt0_run_array - -END_CRT_FUNC run_preinit_array -#endif /* Lrun_preinit_array */ - -#if Lrun_init_array -;; This function is responsible for setting up the arguments -;; required for __crt0_run_array, to run the functions in .init_array. -START_CRT_FUNC 0600 run_init_array - - mov_ #__init_array_start, R4 - mov_ #__init_array_end, R5 - mov_ #PTRsz, R6 - call_ #__crt0_run_array - -END_CRT_FUNC run_init_array -#endif /* Lrun_init_array */ - - -#if Lmain -;; This function is always included and calls main(). - -START_CRT_FUNC 0800 call_main - - clr.w R12 ; Set argc == 0 - call_ #main - -END_CRT_FUNC call_main -#endif /* Lmain */ - -#if Lcallexit -;; This function is responsible for calling exit once main has finished. - -START_CRT_FUNC 0900 call_exit - - call_ #_exit - -END_CRT_FUNC call_exit -#endif /* Lcallexit */ - -;---------------------------------------- - -#if Lrun_fini_array -;; This function is responsible for setting up the arguments -;; required for __crt0_run_array, to run the functions in .fini_array. -START_CRT_FUNC 1000 run_fini_array - - mov_ #__fini_array_start, R4 - mov_ #__fini_array_end, R5 - mov_ #-PTRsz, R6 - call_ #__crt0_run_array - -END_CRT_FUNC run_fini_array -#endif /* Lrun_fini_array */ - -#if Lrun_array -;; Note - this section is only included in the startup code of the application -;; if it is needed by one of the above run_*_array functions. -START_CRT_FUNC 1100 run_array - - cmp_ R4, R5 - jeq _msp430_run_done - mov_ @R4, R7 - add_ R6, R4 - call_ R7 - br_ #__crt0_run_array - -END_CRT_FUNC run_array - -_msp430_run_done: - ret_ -#endif /* Lrun_array */ diff --git a/libgloss/msp430/crt_bss.S b/libgloss/msp430/crt_bss.S index 27ab2efebb..e83ea98458 100644 --- a/libgloss/msp430/crt_bss.S +++ b/libgloss/msp430/crt_bss.S @@ -1,19 +1,19 @@ -/* Copyright (c) 2012-2013 Red Hat Incorporated. +/* Copyright (c) 2012-2015 Red Hat Incorporated. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions - are met: + are met: - Redistributions of source code must retain the above copyright + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - The name of Red Hat Incorporated may not be used to endorse - or promote products derived from this software without specific + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific prior written permission. This software is provided by the copyright holders and contributors @@ -30,15 +30,17 @@ #include "memmodel.h" - .section ".crt_bss", "ax", @progbits +;; This function is responsible for initializing the contents of the +;; .bss section. + +START_CRT_FUNC 0100 init_bss - .global __crt0_init_bss -__crt0_init_bss: - mov_ #__bssstart, R12 clr.w R13 - mov.w #__bsssize, R14 + mov_ #__bsssize, R14 #ifdef __MSP430X_LARGE__ - clr.w R15 ; We assume that __bsssize is never > 64M + clr.w R15 ; We assume that __bsssize is never > 64K #endif call_ #memset + +END_CRT_FUNC init_bss diff --git a/libgloss/msp430/crt_callexit.S b/libgloss/msp430/crt_callexit.S new file mode 100644 index 0000000000..86a8ca63f0 --- /dev/null +++ b/libgloss/msp430/crt_callexit.S @@ -0,0 +1,39 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is responsible for calling exit once main has finished. + +START_CRT_FUNC 0900 call_exit + + call_ #_exit + +END_CRT_FUNC call_exit diff --git a/libgloss/msp430/crt_high_bss.S b/libgloss/msp430/crt_high_bss.S new file mode 100644 index 0000000000..462c7aecb2 --- /dev/null +++ b/libgloss/msp430/crt_high_bss.S @@ -0,0 +1,51 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#ifdef __MSP430X_LARGE__ + +#include "memmodel.h" + +;; This function is responsible for initializing the contents of the +;; .upper.bss section. + +START_CRT_FUNC 0200 init_highbss + + mov_ #__high_bssstart, R12 + mov.w #0, R13 + mov_ #__high_bsssize, R14 + ;; If __high_bsssize is zero then skip the call to memset. + ;; This can happen if all of the bss data was placed into .either.bss. + cmp.w #0, R14 + jeq 1f + call_ #memset +1: +END_CRT_FUNC init_highbss + +#endif /* __MSP430X_LARGE__ */ diff --git a/libgloss/msp430/crt_init.S b/libgloss/msp430/crt_init.S new file mode 100644 index 0000000000..e83ea98458 --- /dev/null +++ b/libgloss/msp430/crt_init.S @@ -0,0 +1,46 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is responsible for initializing the contents of the +;; .bss section. + +START_CRT_FUNC 0100 init_bss + + mov_ #__bssstart, R12 + clr.w R13 + mov_ #__bsssize, R14 +#ifdef __MSP430X_LARGE__ + clr.w R15 ; We assume that __bsssize is never > 64K +#endif + call_ #memset + +END_CRT_FUNC init_bss diff --git a/libgloss/msp430/crt_main.S b/libgloss/msp430/crt_main.S new file mode 100644 index 0000000000..ee2094cf32 --- /dev/null +++ b/libgloss/msp430/crt_main.S @@ -0,0 +1,40 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is always included and calls main(). + +START_CRT_FUNC 0800 call_main + + clr.w R12 ; Set argc == 0 + call_ #main + +END_CRT_FUNC call_main diff --git a/libgloss/msp430/crt_move_highdata.S b/libgloss/msp430/crt_move_highdata.S new file mode 100644 index 0000000000..b96954962a --- /dev/null +++ b/libgloss/msp430/crt_move_highdata.S @@ -0,0 +1,71 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#ifdef __MSP430X_LARGE__ + +#include "memmodel.h" + +;; This function is responsible for making sure that the +;; contents of the .upper.data section have their correct startup values. +;; If a copy of the .upper.data section is stored in ROM then this means +;; copying the contents into HIFRAM. If a copy of .upper.data is stored in a +;; shadow section in HIFRAM then this means copying from the shadow section +;; into the real section. + +START_CRT_FUNC 0400 move_highdata + ;; __rom_highdatacopysize may be zero. Test this first because + ;; its value may come from the weak definitions above and we do + ;; not want to access the memory at address 0 pointed to by the + ;; weak definition of __upper_data_init. + mov.w #__rom_highdatacopysize, R14 + cmp.w #0, R14 + jeq 3f + + /* Test our status word. */ + cmpx.w #0, &__upper_data_init + jeq 1f + /* Status word is non-zero - copy from shadow into upper. */ + mov_ #__high_datastart, R12 + mov_ #__rom_highdatastart, R13 + jmp 2f + +1: /* Status word is zero. Copy from upper to shadow and change status word. */ + movx.w #1, &__upper_data_init + mov_ #__rom_highdatastart, R12 + mov_ #__high_datastart, R13 + +2: ;; __rom_highdatacopysize may be zero. memmove should cope. + mov.w #__rom_highdatacopysize, R14 + + call_ #memmove +3: +END_CRT_FUNC move_highdata + +#endif /* __MSP430X_LARGE__ */ diff --git a/libgloss/msp430/crt_movedata.S b/libgloss/msp430/crt_movedata.S new file mode 100644 index 0000000000..de0f519907 --- /dev/null +++ b/libgloss/msp430/crt_movedata.S @@ -0,0 +1,50 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is responsible for copying the +;; contents of the .data section from its load address (in ROM) to +;; its run-time address (in RAM). + +START_CRT_FUNC 0300 movedata + + mov_ #__datastart, R12 + mov_ #__romdatastart, R13 + + ;; memmove and memcpy do not currently work when src == dst + cmp_ R12, R13 + jeq 1f + + mov_ #__romdatacopysize, R14 + + call_ #memmove +1: +END_CRT_FUNC movedata diff --git a/libgloss/msp430/crt_run_array.S b/libgloss/msp430/crt_run_array.S new file mode 100644 index 0000000000..6f9bf07a5a --- /dev/null +++ b/libgloss/msp430/crt_run_array.S @@ -0,0 +1,48 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; Note - this section is only included in the startup code of the application +;; if it is needed by one of the above run_*_array functions. + +START_CRT_FUNC 1100 run_array + + cmp_ R4, R5 + jeq _msp430_run_done + mov_ @R4, R7 + add_ R6, R4 + call_ R7 + br_ #__crt0_run_array + +END_CRT_FUNC run_array + +_msp430_run_done: + ret_ diff --git a/libgloss/msp430/crt_run_fini_array.S b/libgloss/msp430/crt_run_fini_array.S new file mode 100644 index 0000000000..c68b1e3e02 --- /dev/null +++ b/libgloss/msp430/crt_run_fini_array.S @@ -0,0 +1,43 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is responsible for setting up the arguments +;; required for __crt0_run_array, to run the functions in .fini_array. + +START_CRT_FUNC 1000 run_fini_array + + mov_ #__fini_array_start, R4 + mov_ #__fini_array_end, R5 + mov_ #-PTRsz, R6 + call_ #__crt0_run_array + +END_CRT_FUNC run_fini_array diff --git a/libgloss/msp430/crt_run_init_array.S b/libgloss/msp430/crt_run_init_array.S new file mode 100644 index 0000000000..002507532b --- /dev/null +++ b/libgloss/msp430/crt_run_init_array.S @@ -0,0 +1,43 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is responsible for setting up the arguments +;; required for __crt0_run_array, to run the functions in .init_array. + +START_CRT_FUNC 0600 run_init_array + + mov_ #__init_array_start, R4 + mov_ #__init_array_end, R5 + mov_ #PTRsz, R6 + call_ #__crt0_run_array + +END_CRT_FUNC run_init_array diff --git a/libgloss/msp430/crt_run_preinit_array.S b/libgloss/msp430/crt_run_preinit_array.S new file mode 100644 index 0000000000..db2e09ef59 --- /dev/null +++ b/libgloss/msp430/crt_run_preinit_array.S @@ -0,0 +1,43 @@ +/* Copyright (c) 2012-2015 Red Hat Incorporated. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + + This software is provided by the copyright holders and contributors + "AS IS" and any express or implied warranties, including, but not + limited to, the implied warranties of merchantability and fitness for + a particular purpose are disclaimed. In no event shall Red Hat + incorporated be liable for any direct, indirect, incidental, special, + exemplary, or consequential damages (including, but not limited to, + procurement of substitute goods or services; loss of use, data, or + profits; or business interruption) however caused and on any theory of + liability, whether in contract, strict liability, or tort (including + negligence or otherwise) arising in any way out of the use of this + software, even if advised of the possibility of such damage. */ + +#include "memmodel.h" + +;; This function is responsible for setting up the arguments +;; required for __crt0_run_array, to run the functions in .preinit_array. + +START_CRT_FUNC 0500 run_preinit_array + + mov_ #__preinit_array_start, R4 + mov_ #__preinit_array_end, R5 + mov_ #PTRsz, R6 + call_ #__crt0_run_array + +END_CRT_FUNC run_preinit_array diff --git a/libgloss/msp430/memmodel.h b/libgloss/msp430/memmodel.h index a481460c6d..9fba60190d 100644 --- a/libgloss/msp430/memmodel.h +++ b/libgloss/msp430/memmodel.h @@ -40,10 +40,16 @@ #endif /* Start a function in its own named and numbered section, so that it - can be subject to linker garbage collection. The numbers are used - to enforce link-time ordering of the sections. Note - the construction - of the symbol names is critical - they need to match the unresolved - symbol references created by the compiler and assembler. */ + can be subject to linker garbage collection. + + The linker links all .crt_* sections in asciibetical order at the same place. + So, the four digits in .crt_NNNN_xxx name are used to enforce link-time + ordering of the sections. Make sure to keep them in sequential order. The + first two digits are set in the files, the second two allow users to insert + code between our standard code fragments. + + Note - the construction of the symbol names is critical - they need to match + the unresolved symbol references created by the compiler and assembler. */ .macro START_CRT_FUNC number name .section .crt_\number\name,"ax",@progbits .global __crt0_\name From f9047928083511340dca8b76afca00bc6e248c96 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 22:17:22 -0500 Subject: [PATCH 575/767] libgloss: msp430: delete custom .S.o rule This was added to specify -Wa,-gdwarf2 when compiling the assembly files. Considering the size of these .S files, it seems unnecessary overkill and complicates the build system. All but one of these compile down to 6 or fewer lines, and those hardly need extra debug for anyone who is poking msp430 assembly. The 1 file that is larger than that (crt_move_highdata.S) is still <15 insns. This will also simplify merging it into the top-level Makefile. --- libgloss/msp430/Makefile.in | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libgloss/msp430/Makefile.in b/libgloss/msp430/Makefile.in index ccf94dc162..62c8a280bc 100644 --- a/libgloss/msp430/Makefile.in +++ b/libgloss/msp430/Makefile.in @@ -96,10 +96,6 @@ CRT_OBJS = \ all: $(CRT) $(SIM_BSP) $(LIB_NOSYS) $(LIB_CRT) copy_scripts_to_objdir -# Override .S.o rule to pass assembler debugging flags -.S.o: - $(CC) -Wa,-gdwarf2 -Wa,-I$(srcdir) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - $(SIM_BSP): $(SIM_OBJS) $(AR) $(ARFLAGS) $@ $? $(RANLIB) $@ From 787b83bb9ba9f7508c9808a3acee64dda0140c94 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 21:11:58 -0500 Subject: [PATCH 576/767] libgloss: merge msp430 into top-level Makefile Avoid a recursive make to speed things up a bit. A msp430-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 265 +++++++++++++++++++++++++++-------- libgloss/configure | 19 ++- libgloss/configure.ac | 7 +- libgloss/msp430/Makefile.in | 166 ---------------------- libgloss/msp430/Makefile.inc | 52 +++++++ 6 files changed, 280 insertions(+), 232 deletions(-) delete mode 100644 libgloss/msp430/Makefile.in create mode 100644 libgloss/msp430/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index ccfbfc1670..6ae2346709 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -112,6 +112,9 @@ endif if CONFIG_MOXIE include moxie/Makefile.inc endif +if CONFIG_MSP430 +include msp430/Makefile.inc +endif if CONFIG_NIOS2 include nios2/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index a085dcd9dd..38dc2660b3 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -192,25 +192,35 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_MOXIE_TRUE@ moxie/crt0.S @CONFIG_MOXIE_TRUE@am__append_38 = moxie/libsim.a moxie/libqemu.a -@CONFIG_NIOS2_TRUE@am__append_39 = \ +@CONFIG_MSP430_TRUE@am__append_39 = msp430/msp430-sim.ld \ +@CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ +@CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ +@CONFIG_MSP430_TRUE@ msp430/crt0.o +@CONFIG_MSP430_TRUE@am__append_40 = \ +@CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ +@CONFIG_MSP430_TRUE@ msp430/crt0.S + +@CONFIG_MSP430_TRUE@am__append_41 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@ msp430/libcrt.a +@CONFIG_NIOS2_TRUE@am__append_42 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_40 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_41 = \ +@CONFIG_NIOS2_TRUE@am__append_43 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_44 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_42 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_45 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_43 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_44 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_45 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_46 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_47 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_48 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_49 = \ +@CONFIG_V850_TRUE@am__append_46 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_47 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_48 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_49 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_50 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_51 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_52 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -219,27 +229,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_50 = \ +@CONFIG_XTENSA_TRUE@am__append_53 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_51 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_52 = \ +@CONFIG_XTENSA_TRUE@am__append_54 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_53 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_56 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_54 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_56 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_57 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_59 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_60 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_57 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_59 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_60 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_62 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_63 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_64 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -271,9 +281,9 @@ CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ frv/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - xstormy16/Makefile m32c/Makefile msp430/Makefile rl78/Makefile \ - rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ - pru/Makefile sparc/libsys/Makefile + xstormy16/Makefile m32c/Makefile rl78/Makefile rx/Makefile \ + spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -481,13 +491,16 @@ libobjs_a_LIBADD = @CONFIG_IQ2000_TRUE@am__objects_6 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_7 = lm32/crt0.$(OBJEXT) @CONFIG_MOXIE_TRUE@am__objects_8 = moxie/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_9 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_10 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@am__objects_9 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_10 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_11 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ - $(am__objects_8) $(am__objects_9) $(am__objects_10) + $(am__objects_8) $(am__objects_9) $(am__objects_10) \ + $(am__objects_11) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -526,6 +539,38 @@ moxie_libsim_a_LIBADD = @CONFIG_MOXIE_TRUE@ moxie/sim-write.$(OBJEXT) \ @CONFIG_MOXIE_TRUE@ moxie/stat.$(OBJEXT) moxie_libsim_a_OBJECTS = $(am_moxie_libsim_a_OBJECTS) +msp430_libcrt_a_AR = $(AR) $(ARFLAGS) +msp430_libcrt_a_LIBADD = +@CONFIG_MSP430_TRUE@am_msp430_libcrt_a_OBJECTS = \ +@CONFIG_MSP430_TRUE@ msp430/crt_bss.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_high_bss.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_movedata.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_move_highdata.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_main.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_callexit.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_init_array.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_preinit_array.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_fini_array.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_array.$(OBJEXT) +msp430_libcrt_a_OBJECTS = $(am_msp430_libcrt_a_OBJECTS) +msp430_libnosys_a_AR = $(AR) $(ARFLAGS) +msp430_libnosys_a_LIBADD = +@CONFIG_MSP430_TRUE@am_msp430_libnosys_a_OBJECTS = \ +@CONFIG_MSP430_TRUE@ msp430/ciosyscalls.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/cio.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/write.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/unlink.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/sbrk.$(OBJEXT) +msp430_libnosys_a_OBJECTS = $(am_msp430_libnosys_a_OBJECTS) +msp430_libsim_a_AR = $(AR) $(ARFLAGS) +msp430_libsim_a_LIBADD = +@CONFIG_MSP430_TRUE@am_msp430_libsim_a_OBJECTS = \ +@CONFIG_MSP430_TRUE@ msp430/syscalls.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/cio.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/write.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/unlink.$(OBJEXT) \ +@CONFIG_MSP430_TRUE@ msp430/sbrk.$(OBJEXT) +msp430_libsim_a_OBJECTS = $(am_msp430_libsim_a_OBJECTS) nios2_libnios2_a_AR = $(AR) $(ARFLAGS) nios2_libnios2_a_LIBADD = @CONFIG_NIOS2_TRUE@am_nios2_libnios2_a_OBJECTS = \ @@ -616,7 +661,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_11 = \ +@CONFIG_RISCV_TRUE@am__objects_12 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -649,7 +694,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_11) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_12) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -671,13 +716,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_12 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_13 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_13 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_14 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_12) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_13) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_13) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_14) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -750,10 +795,11 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ $(lm32_libgloss_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ - $(moxie_libsim_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - $(riscv_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ - $(xtensa_libgloss_a_SOURCES) \ + $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ + $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ + $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) @@ -843,7 +889,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_46) +VPATH = @srcdir@ $(am__append_49) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -861,7 +907,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_48) +CPPFLAGS = @CPPFLAGS@ $(am__append_51) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -983,14 +1029,15 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_30) $(am__append_32) \ $(am__append_35) $(am__append_36) $(am__append_39) \ - $(am__append_41) $(am__append_43) $(am__append_49) \ - $(am__append_52) $(am__append_54) $(am__append_58) + $(am__append_42) $(am__append_44) $(am__append_46) \ + $(am__append_52) $(am__append_55) $(am__append_57) \ + $(am__append_61) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_27) \ $(am__append_31) $(am__append_33) $(am__append_38) \ - $(am__append_40) $(am__append_42) $(am__append_45) \ - $(am__append_51) $(am__append_53) + $(am__append_41) $(am__append_43) $(am__append_45) \ + $(am__append_48) $(am__append_54) $(am__append_56) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1008,7 +1055,7 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_28) $(am__append_34) $(am__append_37) \ - $(am__append_44) $(am__append_50) + $(am__append_40) $(am__append_47) $(am__append_53) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1233,6 +1280,32 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_MOXIE_TRUE@ moxie/sim-lseek.c \ @CONFIG_MOXIE_TRUE@ moxie/sim-read.S +@CONFIG_MSP430_TRUE@msp430_libsim_a_SOURCES = \ +@CONFIG_MSP430_TRUE@ msp430/syscalls.S \ +@CONFIG_MSP430_TRUE@ msp430/cio.S \ +@CONFIG_MSP430_TRUE@ msp430/write.c \ +@CONFIG_MSP430_TRUE@ msp430/unlink.c \ +@CONFIG_MSP430_TRUE@ msp430/sbrk.c + +@CONFIG_MSP430_TRUE@msp430_libnosys_a_SOURCES = \ +@CONFIG_MSP430_TRUE@ msp430/ciosyscalls.S \ +@CONFIG_MSP430_TRUE@ msp430/cio.S \ +@CONFIG_MSP430_TRUE@ msp430/write.c \ +@CONFIG_MSP430_TRUE@ msp430/unlink.c \ +@CONFIG_MSP430_TRUE@ msp430/sbrk.c + +@CONFIG_MSP430_TRUE@msp430_libcrt_a_SOURCES = \ +@CONFIG_MSP430_TRUE@ msp430/crt_bss.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_high_bss.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_movedata.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_move_highdata.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_main.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_callexit.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_init_array.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_preinit_array.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_fini_array.S \ +@CONFIG_MSP430_TRUE@ msp430/crt_run_array.S + @CONFIG_NIOS2_TRUE@nios2_libnios2_a_SOURCES = \ @CONFIG_NIOS2_TRUE@ nios2/crt0.S \ @CONFIG_NIOS2_TRUE@ nios2/io-close.c \ @@ -1365,19 +1438,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_55) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_59) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_58) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_62) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_56) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_60) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_59) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_63) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_57) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_61) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_60) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_64) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1390,7 +1463,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1412,7 +1485,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1491,8 +1564,6 @@ xstormy16/Makefile: $(top_builddir)/config.status $(top_srcdir)/xstormy16/Makefi cd $(top_builddir) && $(SHELL) ./config.status $@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -msp430/Makefile: $(top_builddir)/config.status $(top_srcdir)/msp430/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ rl78/Makefile: $(top_builddir)/config.status $(top_srcdir)/rl78/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rx/Makefile: $(top_builddir)/config.status $(top_srcdir)/rx/Makefile.in @@ -1898,6 +1969,16 @@ moxie/$(DEPDIR)/$(am__dirstamp): @: > moxie/$(DEPDIR)/$(am__dirstamp) moxie/crt0.$(OBJEXT): moxie/$(am__dirstamp) \ moxie/$(DEPDIR)/$(am__dirstamp) +msp430/$(am__dirstamp): + @$(MKDIR_P) msp430 + @: > msp430/$(am__dirstamp) +msp430/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) msp430/$(DEPDIR) + @: > msp430/$(DEPDIR)/$(am__dirstamp) +msp430/gcrt0.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt0.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) v850/$(am__dirstamp): @$(MKDIR_P) v850 @: > v850/$(am__dirstamp) @@ -1978,6 +2059,53 @@ moxie/libsim.a: $(moxie_libsim_a_OBJECTS) $(moxie_libsim_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f moxie/libsim.a $(AM_V_AR)$(moxie_libsim_a_AR) moxie/libsim.a $(moxie_libsim_a_OBJECTS) $(moxie_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) moxie/libsim.a +msp430/crt_bss.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_high_bss.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_movedata.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_move_highdata.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_main.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_callexit.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_run_init_array.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_run_preinit_array.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_run_fini_array.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/crt_run_array.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) + +msp430/libcrt.a: $(msp430_libcrt_a_OBJECTS) $(msp430_libcrt_a_DEPENDENCIES) $(EXTRA_msp430_libcrt_a_DEPENDENCIES) msp430/$(am__dirstamp) + $(AM_V_at)-rm -f msp430/libcrt.a + $(AM_V_AR)$(msp430_libcrt_a_AR) msp430/libcrt.a $(msp430_libcrt_a_OBJECTS) $(msp430_libcrt_a_LIBADD) + $(AM_V_at)$(RANLIB) msp430/libcrt.a +msp430/ciosyscalls.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/cio.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/write.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/unlink.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) +msp430/sbrk.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) + +msp430/libnosys.a: $(msp430_libnosys_a_OBJECTS) $(msp430_libnosys_a_DEPENDENCIES) $(EXTRA_msp430_libnosys_a_DEPENDENCIES) msp430/$(am__dirstamp) + $(AM_V_at)-rm -f msp430/libnosys.a + $(AM_V_AR)$(msp430_libnosys_a_AR) msp430/libnosys.a $(msp430_libnosys_a_OBJECTS) $(msp430_libnosys_a_LIBADD) + $(AM_V_at)$(RANLIB) msp430/libnosys.a +msp430/syscalls.$(OBJEXT): msp430/$(am__dirstamp) \ + msp430/$(DEPDIR)/$(am__dirstamp) + +msp430/libsim.a: $(msp430_libsim_a_OBJECTS) $(msp430_libsim_a_DEPENDENCIES) $(EXTRA_msp430_libsim_a_DEPENDENCIES) msp430/$(am__dirstamp) + $(AM_V_at)-rm -f msp430/libsim.a + $(AM_V_AR)$(msp430_libsim_a_AR) msp430/libsim.a $(msp430_libsim_a_OBJECTS) $(msp430_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) msp430/libsim.a nios2/$(am__dirstamp): @$(MKDIR_P) nios2 @: > nios2/$(am__dirstamp) @@ -2418,6 +2546,7 @@ mostlyclean-compile: -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) -rm -f moxie/*.$(OBJEXT) + -rm -f msp430/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) @@ -2571,6 +2700,24 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/sim-write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/cio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/ciosyscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_bss.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_callexit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_high_bss.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_move_highdata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_movedata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_run_array.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_run_fini_array.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_run_init_array.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/crt_run_preinit_array.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/gcrt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po@am__quote@ @@ -5469,6 +5616,8 @@ distclean-generic: -rm -f lm32/$(am__dirstamp) -rm -f moxie/$(DEPDIR)/$(am__dirstamp) -rm -f moxie/$(am__dirstamp) + -rm -f msp430/$(DEPDIR)/$(am__dirstamp) + -rm -f msp430/$(am__dirstamp) -rm -f nios2/$(DEPDIR)/$(am__dirstamp) -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) @@ -5495,7 +5644,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5638,7 +5787,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index c94b8806f4..0a0e607c3f 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -651,6 +651,8 @@ CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE CONFIG_NIOS2_FALSE CONFIG_NIOS2_TRUE +CONFIG_MSP430_FALSE +CONFIG_MSP430_TRUE CONFIG_MOXIE_FALSE CONFIG_MOXIE_TRUE CONFIG_LM32_FALSE @@ -2948,9 +2950,7 @@ case "${target}" in subdirs="$subdirs m32c" ;; msp430-*-elf*) - ac_config_files="$ac_config_files msp430/Makefile" - - subdirs="$subdirs msp430" + config_msp430=true config_libnosys=false ;; rl78*-*-elf) @@ -3087,6 +3087,14 @@ else CONFIG_MOXIE_FALSE= fi + if test x$config_msp430 = xtrue; then + CONFIG_MSP430_TRUE= + CONFIG_MSP430_FALSE='#' +else + CONFIG_MSP430_TRUE='#' + CONFIG_MSP430_FALSE= +fi + if test x$config_nios2 = xtrue; then CONFIG_NIOS2_TRUE= CONFIG_NIOS2_FALSE='#' @@ -5622,6 +5630,10 @@ if test -z "${CONFIG_MOXIE_TRUE}" && test -z "${CONFIG_MOXIE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MOXIE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_MSP430_TRUE}" && test -z "${CONFIG_MSP430_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_MSP430\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_NIOS2_TRUE}" && test -z "${CONFIG_NIOS2_FALSE}"; then as_fn_error $? "conditional \"CONFIG_NIOS2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6305,7 +6317,6 @@ do "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "xstormy16/Makefile") CONFIG_FILES="$CONFIG_FILES xstormy16/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; - "msp430/Makefile") CONFIG_FILES="$CONFIG_FILES msp430/Makefile" ;; "rl78/Makefile") CONFIG_FILES="$CONFIG_FILES rl78/Makefile" ;; "rx/Makefile") CONFIG_FILES="$CONFIG_FILES rx/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 575565c6a9..e1659d8803 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -200,8 +200,7 @@ case "${target}" in subdirs="$subdirs m32c" ;; msp430-*-elf*) - AC_CONFIG_FILES([msp430/Makefile]) - subdirs="$subdirs msp430" + config_msp430=true config_libnosys=false ;; rl78*-*-elf) @@ -247,8 +246,8 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v i960 iq2000 libnosys lm32 moxie nios2 riscv - v850 wince xtensa + aarch64 arc arm bfin csky d30v i960 iq2000 libnosys lm32 moxie msp430 nios2 + riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/msp430/Makefile.in b/libgloss/msp430/Makefile.in deleted file mode 100644 index 62c8a280bc..0000000000 --- a/libgloss/msp430/Makefile.in +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright (c) 2008-2014 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the BSD -# License. This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties -# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license -# is available at http://www.opensource.org/licenses. Any Red Hat trademarks that -# are incorporated in the source code or documentation are not subject to the BSD -# License and may only be used or replicated with the express permission of -# Red Hat, Inc. - -# Makefile for libgloss/msp430. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -SCRIPTS = $(srcdir)/msp430-sim.ld -SCRIPTS += $(srcdir)/msp430xl-sim.ld -SCRIPTS += $(srcdir)/intr_vectors.ld - -CRT = gcrt0.o crt0.o -SIM_BSP = libsim.a -LIB_NOSYS = libnosys.a -LIB_CRT = libcrt.a - -SIM_OBJS = syscalls.o \ - cio.o \ - write.o \ - unlink.o \ - sbrk.o - -NOSYS_OBJS = ciosyscalls.o \ - cio.o \ - write.o \ - unlink.o \ - sbrk.o - -CRT_OBJS = \ - crt_bss.o \ - crt_high_bss.o \ - crt_movedata.o \ - crt_move_highdata.o \ - crt_main.o \ - crt_callexit.o \ - crt_run_init_array.o \ - crt_run_preinit_array.o \ - crt_run_fini_array.o \ - crt_run_array.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - - -all: $(CRT) $(SIM_BSP) $(LIB_NOSYS) $(LIB_CRT) copy_scripts_to_objdir - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -$(LIB_NOSYS): $(NOSYS_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -$(LIB_CRT): $(CRT_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -copy_scripts_to_objdir: $(SCRIPTS) - cp $(SCRIPTS) $(objdir) - -# Dependencies - -SDEPS = $(srcdir)/cio.h - -abort.o : $(SDEPS) -argv.o : $(SDEPS) -argvlen.o : $(SDEPS) -chdir.o : $(SDEPS) -chmod.o : $(SDEPS) -close.o : $(SDEPS) -exit.o : $(SDEPS) -fstat.o : $(SDEPS) -getpid.o : $(SDEPS) -gettimeofday.o : $(SDEPS) -gcrt0.o: gcrt0.S crt0.S -kill.o : $(SDEPS) -link.o : $(SDEPS) -lseek.o : $(SDEPS) -mcount.o : $(SDEPS) -open.o : $(SDEPS) -read.o : $(SDEPS) -sigprocmask.o : $(SDEPS) -sleep.o : $(SDEPS) -stat.o : $(SDEPS) -time.o : $(SDEPS) -times.o : $(SDEPS) -unlink.o : $(SDEPS) -utime.o : $(SDEPS) -write.o : $(SDEPS) - -install: $(CRT) $(SIM_BSP) $(LIB_NOSYS) $(LIB_CRT) $(SCRIPTS) - mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - for c in $(CRT) $(SIM_BSP) $(LIB_NOSYS) $(LIB_CRT); do \ - $(INSTALL_DATA) $$c $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$$c ;\ - done - for c in $(SCRIPTS); do \ - b=`basename $$c`; \ - $(INSTALL_DATA) $$c $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$$b ;\ - done - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/msp430/Makefile.inc b/libgloss/msp430/Makefile.inc new file mode 100644 index 0000000000..38355343ad --- /dev/null +++ b/libgloss/msp430/Makefile.inc @@ -0,0 +1,52 @@ +## Copyright (c) 2008-2014 Red Hat, Inc. All rights reserved. +## +## This copyrighted material is made available to anyone wishing to use, modify, +## copy, or redistribute it subject to the terms and conditions of the BSD +## License. This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties +## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license +## is available at http://www.opensource.org/licenses. Any Red Hat trademarks that +## are incorporated in the source code or documentation are not subject to the BSD +## License and may only be used or replicated with the express permission of +## Red Hat, Inc. + +multilibtool_DATA += \ + %D%/msp430-sim.ld \ + %D%/msp430xl-sim.ld \ + %D%/intr_vectors.ld + +multilibtool_DATA += \ + %D%/gcrt0.o \ + %D%/crt0.o +libobjs_a_SOURCES += \ + %D%/gcrt0.S \ + %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/syscalls.S \ + %D%/cio.S \ + %D%/write.c \ + %D%/unlink.c \ + %D%/sbrk.c + +multilibtool_LIBRARIES += %D%/libnosys.a +%C%_libnosys_a_SOURCES = \ + %D%/ciosyscalls.S \ + %D%/cio.S \ + %D%/write.c \ + %D%/unlink.c \ + %D%/sbrk.c + +multilibtool_LIBRARIES += %D%/libcrt.a +%C%_libcrt_a_SOURCES = \ + %D%/crt_bss.S \ + %D%/crt_high_bss.S \ + %D%/crt_movedata.S \ + %D%/crt_move_highdata.S \ + %D%/crt_main.S \ + %D%/crt_callexit.S \ + %D%/crt_run_init_array.S \ + %D%/crt_run_preinit_array.S \ + %D%/crt_run_fini_array.S \ + %D%/crt_run_array.S From 20dcee2c2726c4a6698c04a6f210f42872c2fd79 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 22:29:20 -0500 Subject: [PATCH 577/767] libgloss: merge frv into top-level Makefile Avoid a recursive make to speed things up a bit. A frv-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 283 +++++++++++++++++++++++++------------- libgloss/configure | 19 ++- libgloss/configure.ac | 7 +- libgloss/frv/Makefile.in | 125 ----------------- libgloss/frv/Makefile.inc | 33 +++++ 6 files changed, 244 insertions(+), 226 deletions(-) delete mode 100644 libgloss/frv/Makefile.in create mode 100644 libgloss/frv/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 6ae2346709..1b5a86a480 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -97,6 +97,9 @@ endif if CONFIG_D30V include d30v/Makefile.inc endif +if CONFIG_FRV +include frv/Makefile.inc +endif if CONFIG_I960 include i960/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 38dc2660b3..11eb7239f6 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -167,60 +167,63 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_D30V_TRUE@am__append_22 = \ @CONFIG_D30V_TRUE@ d30v/crt0.o -@CONFIG_I960_TRUE@am__append_23 = i960/crt0.o i960/mon960.ld -@CONFIG_I960_TRUE@am__append_24 = \ +@CONFIG_FRV_TRUE@am__append_23 = frv/crt0.o +@CONFIG_FRV_TRUE@am__append_24 = frv/crt0.S +@CONFIG_FRV_TRUE@am__append_25 = frv/libsim.a +@CONFIG_I960_TRUE@am__append_26 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_27 = \ @CONFIG_I960_TRUE@ i960/crt0.c -@CONFIG_I960_TRUE@am__append_25 = i960/libmon960.a -@CONFIG_IQ2000_TRUE@am__append_26 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_27 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_28 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_29 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_30 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_31 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_32 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_33 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_34 = lm32/crt0.S -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_35 = \ +@CONFIG_I960_TRUE@am__append_28 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_29 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_30 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_31 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_32 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_33 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_34 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_35 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_36 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_37 = lm32/crt0.S +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_38 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_36 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_37 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_39 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_40 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_38 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_39 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_41 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_42 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_40 = \ +@CONFIG_MSP430_TRUE@am__append_43 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_41 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_44 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NIOS2_TRUE@am__append_42 = \ +@CONFIG_NIOS2_TRUE@am__append_45 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_43 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_44 = \ +@CONFIG_NIOS2_TRUE@am__append_46 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_47 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_45 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_48 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_46 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_47 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_48 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_49 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_50 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_51 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_52 = \ +@CONFIG_V850_TRUE@am__append_49 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_50 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_51 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_52 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_53 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_54 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_55 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -229,27 +232,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_53 = \ +@CONFIG_XTENSA_TRUE@am__append_56 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_54 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_55 = \ +@CONFIG_XTENSA_TRUE@am__append_57 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_56 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_59 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_57 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_59 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_60 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_62 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_63 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_64 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_60 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_62 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_63 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_64 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_65 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_66 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_67 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -279,10 +282,10 @@ CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ sparc_leon/Makefile sparc/Makefile mips/Makefile \ rs6000/Makefile mn10200/Makefile mn10300/Makefile \ cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ - frv/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ - microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - xstormy16/Makefile m32c/Makefile rl78/Makefile rx/Makefile \ - spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + ft32/Makefile mcore/Makefile mep/Makefile microblaze/Makefile \ + mt/Makefile visium/Makefile xc16x/Makefile xstormy16/Makefile \ + m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ + tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -421,6 +424,20 @@ d30v_libsim_a_LIBADD = @CONFIG_D30V_TRUE@ d30v/outbyte.$(OBJEXT) \ @CONFIG_D30V_TRUE@ d30v/syscalls.$(OBJEXT) d30v_libsim_a_OBJECTS = $(am_d30v_libsim_a_OBJECTS) +frv_libsim_a_AR = $(AR) $(ARFLAGS) +frv_libsim_a_LIBADD = +@CONFIG_FRV_TRUE@am_frv_libsim_a_OBJECTS = frv/fstat.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/getpid.$(OBJEXT) frv/isatty.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/kill.$(OBJEXT) frv/putnum.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sbrk.$(OBJEXT) frv/sim-close.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-exit.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-inbyte.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-lseek.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-open.$(OBJEXT) frv/sim-read.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-time.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-unlink.$(OBJEXT) \ +@CONFIG_FRV_TRUE@ frv/sim-write.$(OBJEXT) frv/stat.$(OBJEXT) +frv_libsim_a_OBJECTS = $(am_frv_libsim_a_OBJECTS) i960_libmon960_a_AR = $(AR) $(ARFLAGS) i960_libmon960_a_LIBADD = @CONFIG_I960_TRUE@am_i960_libmon960_a_OBJECTS = putnum.$(OBJEXT) \ @@ -487,20 +504,21 @@ libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) -@CONFIG_I960_TRUE@am__objects_5 = i960/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_6 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_7 = lm32/crt0.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_8 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_9 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_FRV_TRUE@am__objects_5 = frv/crt0.$(OBJEXT) +@CONFIG_I960_TRUE@am__objects_6 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_7 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_8 = lm32/crt0.$(OBJEXT) +@CONFIG_MOXIE_TRUE@am__objects_9 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_10 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_10 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_11 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_11 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_12 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ - $(am__objects_11) + $(am__objects_11) $(am__objects_12) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -661,7 +679,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_12 = \ +@CONFIG_RISCV_TRUE@am__objects_13 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -694,7 +712,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_12) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_13) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -716,13 +734,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_13 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_14 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_14 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_15 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_13) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_14) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_14) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_15) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -792,14 +810,15 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ - $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ - $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ - $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ - $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ - $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ + $(frv_libsim_a_SOURCES) $(i960_libmon960_a_SOURCES) \ + $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ + $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ + $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ + $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ + $(msp430_libsim_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + $(riscv_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) @@ -889,7 +908,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_49) +VPATH = @srcdir@ $(am__append_52) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -907,7 +926,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_51) +CPPFLAGS = @CPPFLAGS@ $(am__append_54) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1027,17 +1046,18 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ - $(am__append_26) $(am__append_30) $(am__append_32) \ - $(am__append_35) $(am__append_36) $(am__append_39) \ - $(am__append_42) $(am__append_44) $(am__append_46) \ - $(am__append_52) $(am__append_55) $(am__append_57) \ - $(am__append_61) + $(am__append_26) $(am__append_29) $(am__append_33) \ + $(am__append_35) $(am__append_38) $(am__append_39) \ + $(am__append_42) $(am__append_45) $(am__append_47) \ + $(am__append_49) $(am__append_55) $(am__append_58) \ + $(am__append_60) $(am__append_64) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ - $(am__append_21) $(am__append_25) $(am__append_27) \ - $(am__append_31) $(am__append_33) $(am__append_38) \ - $(am__append_41) $(am__append_43) $(am__append_45) \ - $(am__append_48) $(am__append_54) $(am__append_56) + $(am__append_21) $(am__append_25) $(am__append_28) \ + $(am__append_30) $(am__append_34) $(am__append_36) \ + $(am__append_41) $(am__append_44) $(am__append_46) \ + $(am__append_48) $(am__append_51) $(am__append_57) \ + $(am__append_59) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1054,8 +1074,9 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ - $(am__append_28) $(am__append_34) $(am__append_37) \ - $(am__append_40) $(am__append_47) $(am__append_53) + $(am__append_27) $(am__append_31) $(am__append_37) \ + $(am__append_40) $(am__append_43) $(am__append_50) \ + $(am__append_56) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1203,6 +1224,24 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_D30V_TRUE@ d30v/outbyte.c \ @CONFIG_D30V_TRUE@ d30v/syscalls.c +@CONFIG_FRV_TRUE@frv_libsim_a_SOURCES = \ +@CONFIG_FRV_TRUE@ frv/fstat.c \ +@CONFIG_FRV_TRUE@ frv/getpid.c \ +@CONFIG_FRV_TRUE@ frv/isatty.c \ +@CONFIG_FRV_TRUE@ frv/kill.c \ +@CONFIG_FRV_TRUE@ frv/putnum.c \ +@CONFIG_FRV_TRUE@ frv/sbrk.c \ +@CONFIG_FRV_TRUE@ frv/sim-close.S \ +@CONFIG_FRV_TRUE@ frv/sim-exit.S \ +@CONFIG_FRV_TRUE@ frv/sim-inbyte.c \ +@CONFIG_FRV_TRUE@ frv/sim-lseek.S \ +@CONFIG_FRV_TRUE@ frv/sim-open.S \ +@CONFIG_FRV_TRUE@ frv/sim-read.S \ +@CONFIG_FRV_TRUE@ frv/sim-time.c \ +@CONFIG_FRV_TRUE@ frv/sim-unlink.S \ +@CONFIG_FRV_TRUE@ frv/sim-write.S \ +@CONFIG_FRV_TRUE@ frv/stat.c + @CONFIG_I960_TRUE@i960_libmon960_a_SOURCES = \ @CONFIG_I960_TRUE@ putnum.c \ @CONFIG_I960_TRUE@ unlink.c \ @@ -1438,19 +1477,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_58) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_62) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_61) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_65) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_59) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_63) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_62) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_66) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_60) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_64) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_63) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_67) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1463,7 +1502,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1485,7 +1524,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1544,8 +1583,6 @@ crx/Makefile: $(top_builddir)/config.status $(top_srcdir)/crx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ fr30/Makefile: $(top_builddir)/config.status $(top_srcdir)/fr30/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -frv/Makefile: $(top_builddir)/config.status $(top_srcdir)/frv/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ ft32/Makefile: $(top_builddir)/config.status $(top_srcdir)/ft32/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mcore/Makefile: $(top_builddir)/config.status $(top_srcdir)/mcore/Makefile.in @@ -1812,6 +1849,45 @@ d30v/libsim.a: $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_DEPENDENCIES) $(EXTRA_d3 $(AM_V_at)-rm -f d30v/libsim.a $(AM_V_AR)$(d30v_libsim_a_AR) d30v/libsim.a $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) d30v/libsim.a +frv/$(am__dirstamp): + @$(MKDIR_P) frv + @: > frv/$(am__dirstamp) +frv/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) frv/$(DEPDIR) + @: > frv/$(DEPDIR)/$(am__dirstamp) +frv/fstat.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) +frv/getpid.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/isatty.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/kill.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) +frv/putnum.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sbrk.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-close.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-exit.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-inbyte.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-lseek.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-open.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-read.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-time.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-unlink.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/sim-write.$(OBJEXT): frv/$(am__dirstamp) \ + frv/$(DEPDIR)/$(am__dirstamp) +frv/stat.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) + +frv/libsim.a: $(frv_libsim_a_OBJECTS) $(frv_libsim_a_DEPENDENCIES) $(EXTRA_frv_libsim_a_DEPENDENCIES) frv/$(am__dirstamp) + $(AM_V_at)-rm -f frv/libsim.a + $(AM_V_AR)$(frv_libsim_a_AR) frv/libsim.a $(frv_libsim_a_OBJECTS) $(frv_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) frv/libsim.a i960/$(am__dirstamp): @$(MKDIR_P) i960 @: > i960/$(am__dirstamp) @@ -1949,6 +2025,7 @@ bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ csky/$(DEPDIR)/$(am__dirstamp) +frv/crt0.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) i960/crt0.$(OBJEXT): i960/$(am__dirstamp) \ i960/$(DEPDIR)/$(am__dirstamp) iq2000/crt0.$(OBJEXT): iq2000/$(am__dirstamp) \ @@ -2541,6 +2618,7 @@ mostlyclean-compile: -rm -f bfin/*.$(OBJEXT) -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) + -rm -f frv/*.$(OBJEXT) -rm -f i960/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) @@ -2626,6 +2704,23 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/inbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/outbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-read.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-syscalls.Po@am__quote@ @@ -5606,6 +5701,8 @@ distclean-generic: -rm -f d30v/$(DEPDIR)/$(am__dirstamp) -rm -f d30v/$(am__dirstamp) -rm -f doc/$(am__dirstamp) + -rm -f frv/$(DEPDIR)/$(am__dirstamp) + -rm -f frv/$(am__dirstamp) -rm -f i960/$(DEPDIR)/$(am__dirstamp) -rm -f i960/$(am__dirstamp) -rm -f iq2000/$(DEPDIR)/$(am__dirstamp) @@ -5644,7 +5741,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5787,7 +5884,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 0a0e607c3f..82a44cfed5 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -663,6 +663,8 @@ CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE CONFIG_I960_FALSE CONFIG_I960_TRUE +CONFIG_FRV_FALSE +CONFIG_FRV_TRUE CONFIG_D30V_FALSE CONFIG_D30V_TRUE CONFIG_CSKY_FALSE @@ -2886,9 +2888,7 @@ case "${target}" in subdirs="$subdirs fr30" ;; frv*-*-*) - ac_config_files="$ac_config_files frv/Makefile" - - subdirs="$subdirs frv" + config_frv=true ;; ft32*-*-*) ac_config_files="$ac_config_files ft32/Makefile" @@ -3047,6 +3047,14 @@ else CONFIG_D30V_FALSE= fi + if test x$config_frv = xtrue; then + CONFIG_FRV_TRUE= + CONFIG_FRV_FALSE='#' +else + CONFIG_FRV_TRUE='#' + CONFIG_FRV_FALSE= +fi + if test x$config_i960 = xtrue; then CONFIG_I960_TRUE= CONFIG_I960_FALSE='#' @@ -5610,6 +5618,10 @@ if test -z "${CONFIG_D30V_TRUE}" && test -z "${CONFIG_D30V_FALSE}"; then as_fn_error $? "conditional \"CONFIG_D30V\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_FRV_TRUE}" && test -z "${CONFIG_FRV_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_FRV\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_I960_TRUE}" && test -z "${CONFIG_I960_FALSE}"; then as_fn_error $? "conditional \"CONFIG_I960\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6307,7 +6319,6 @@ do "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; "fr30/Makefile") CONFIG_FILES="$CONFIG_FILES fr30/Makefile" ;; - "frv/Makefile") CONFIG_FILES="$CONFIG_FILES frv/Makefile" ;; "ft32/Makefile") CONFIG_FILES="$CONFIG_FILES ft32/Makefile" ;; "mcore/Makefile") CONFIG_FILES="$CONFIG_FILES mcore/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index e1659d8803..1214e890a5 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -146,8 +146,7 @@ case "${target}" in subdirs="$subdirs fr30" ;; frv*-*-*) - AC_CONFIG_FILES([frv/Makefile]) - subdirs="$subdirs frv" + config_frv=true ;; ft32*-*-*) AC_CONFIG_FILES([ft32/Makefile]) @@ -246,8 +245,8 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v i960 iq2000 libnosys lm32 moxie msp430 nios2 - riscv v850 wince xtensa + aarch64 arc arm bfin csky d30v frv i960 iq2000 libnosys lm32 moxie msp430 + nios2 riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/frv/Makefile.in b/libgloss/frv/Makefile.in deleted file mode 100644 index cf3b8b4377..0000000000 --- a/libgloss/frv/Makefile.in +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright (c) 2002 Red Hat, Inc -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/frv. This is the board support -# code for the various frv targets. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = crt0.o -SIM_BSP = libsim.a -SIM_OBJS = fstat.o \ - getpid.o \ - isatty.o \ - kill.o \ - putnum.o \ - sbrk.o \ - sim-close.o \ - sim-exit.o \ - sim-inbyte.o \ - sim-lseek.o \ - sim-open.o \ - sim-read.o \ - sim-time.o \ - sim-unlink.o \ - sim-write.o \ - stat.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: $(CRT0) $(SIM_BSP) - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -fstat.o: $(srcdir)/fstat.c -getpid.o: $(srcdir)/getpid.c -isatty.o: $(srcdir)/isatty.c -kill.o: $(srcdir)/kill.c -putnum.o: $(srcdir)/putnum.c -sbrk.o: $(srcdir)/sbrk.c -sim-close.o: $(srcdir)/sim-close.S -sim-exit.o: $(srcdir)/sim-exit.S -sim-inbyte.o: $(srcdir)/sim-inbyte.c -sim-lseek.o: $(srcdir)/sim-lseek.S -sim-open.o: $(srcdir)/sim-open.S -sim-read.o: $(srcdir)/sim-read.S -sim-time.o: $(srcdir)/sim-time.c -sim-unlink.o: $(srcdir)/sim-unlink.S -sim-write.o: $(srcdir)/sim-write.S -stat.o: $(srcdir)/stat.c - -install: $($(CPU)_INSTALL) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(SIM_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(SIM_BSP) - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/frv/Makefile.inc b/libgloss/frv/Makefile.inc new file mode 100644 index 0000000000..44a44b5c3f --- /dev/null +++ b/libgloss/frv/Makefile.inc @@ -0,0 +1,33 @@ +## Copyright (c) 2002 Red Hat, Inc +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/putnum.c \ + %D%/sbrk.c \ + %D%/sim-close.S \ + %D%/sim-exit.S \ + %D%/sim-inbyte.c \ + %D%/sim-lseek.S \ + %D%/sim-open.S \ + %D%/sim-read.S \ + %D%/sim-time.c \ + %D%/sim-unlink.S \ + %D%/sim-write.S \ + %D%/stat.c From 56211d0e14fe5e97000884d21d003759f2906422 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 22:39:05 -0500 Subject: [PATCH 578/767] libgloss: merge i386 into top-level Makefile Avoid a recursive make to speed things up a bit. A i386-elf build shows installed objects & libs produce same code other than a rename from cygmon-gmon.o & cygmon-salib.o to i386_libcygmon_a-*.o due to the use of custom CPPFLAGS in here. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 265 +++++++++++++++++++++++-------------- libgloss/configure | 19 ++- libgloss/configure.ac | 5 +- libgloss/i386/Makefile.in | 127 ------------------ libgloss/i386/Makefile.inc | 25 ++++ 6 files changed, 210 insertions(+), 234 deletions(-) delete mode 100644 libgloss/i386/Makefile.in create mode 100644 libgloss/i386/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 1b5a86a480..73fb8e4816 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -100,6 +100,9 @@ endif if CONFIG_FRV include frv/Makefile.inc endif +if CONFIG_I386 +include i386/Makefile.inc +endif if CONFIG_I960 include i960/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 11eb7239f6..1ee0ace37a 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -170,60 +170,63 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_FRV_TRUE@am__append_23 = frv/crt0.o @CONFIG_FRV_TRUE@am__append_24 = frv/crt0.S @CONFIG_FRV_TRUE@am__append_25 = frv/libsim.a -@CONFIG_I960_TRUE@am__append_26 = i960/crt0.o i960/mon960.ld -@CONFIG_I960_TRUE@am__append_27 = \ +@CONFIG_I386_TRUE@am__append_26 = i386/cygmon.ld i386/cygmon-crt0.o +@CONFIG_I386_TRUE@am__append_27 = i386/cygmon-crt0.S +@CONFIG_I386_TRUE@am__append_28 = i386/libcygmon.a +@CONFIG_I960_TRUE@am__append_29 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_30 = \ @CONFIG_I960_TRUE@ i960/crt0.c -@CONFIG_I960_TRUE@am__append_28 = i960/libmon960.a -@CONFIG_IQ2000_TRUE@am__append_29 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_30 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_31 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_32 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_33 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_34 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_35 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_36 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_37 = lm32/crt0.S -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_38 = \ +@CONFIG_I960_TRUE@am__append_31 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_32 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_33 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_34 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_35 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_36 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_37 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_38 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_39 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_40 = lm32/crt0.S +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_41 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_39 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_40 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_42 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_43 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_41 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_42 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_44 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_45 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_43 = \ +@CONFIG_MSP430_TRUE@am__append_46 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_44 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_47 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NIOS2_TRUE@am__append_45 = \ +@CONFIG_NIOS2_TRUE@am__append_48 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_46 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_47 = \ +@CONFIG_NIOS2_TRUE@am__append_49 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_50 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_48 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_51 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_49 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_50 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_51 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_52 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_53 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_54 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_55 = \ +@CONFIG_V850_TRUE@am__append_52 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_53 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_54 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_55 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_56 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_57 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_58 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -232,27 +235,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_56 = \ +@CONFIG_XTENSA_TRUE@am__append_59 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_57 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_58 = \ +@CONFIG_XTENSA_TRUE@am__append_60 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_59 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_62 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_60 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_62 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_63 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_64 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_65 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_66 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_67 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_63 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_64 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_65 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_66 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_67 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_68 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_69 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_70 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -277,15 +280,14 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = epiphany/Makefile i386/Makefile m32r/Makefile \ - m68hc11/Makefile nds32/Makefile m68k/Makefile pa/Makefile \ - sparc_leon/Makefile sparc/Makefile mips/Makefile \ - rs6000/Makefile mn10200/Makefile mn10300/Makefile \ - cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ - ft32/Makefile mcore/Makefile mep/Makefile microblaze/Makefile \ - mt/Makefile visium/Makefile xc16x/Makefile xstormy16/Makefile \ - m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ - tic6x/Makefile or1k/Makefile pru/Makefile \ +CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ + nds32/Makefile m68k/Makefile pa/Makefile sparc_leon/Makefile \ + sparc/Makefile mips/Makefile rs6000/Makefile mn10200/Makefile \ + mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ + fr30/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ + microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ + xstormy16/Makefile m32c/Makefile rl78/Makefile rx/Makefile \ + spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -438,6 +440,11 @@ frv_libsim_a_LIBADD = @CONFIG_FRV_TRUE@ frv/sim-unlink.$(OBJEXT) \ @CONFIG_FRV_TRUE@ frv/sim-write.$(OBJEXT) frv/stat.$(OBJEXT) frv_libsim_a_OBJECTS = $(am_frv_libsim_a_OBJECTS) +i386_libcygmon_a_AR = $(AR) $(ARFLAGS) +i386_libcygmon_a_LIBADD = +@CONFIG_I386_TRUE@am_i386_libcygmon_a_OBJECTS = i386/i386_libcygmon_a-cygmon-salib.$(OBJEXT) \ +@CONFIG_I386_TRUE@ i386/i386_libcygmon_a-cygmon-gmon.$(OBJEXT) +i386_libcygmon_a_OBJECTS = $(am_i386_libcygmon_a_OBJECTS) i960_libmon960_a_AR = $(AR) $(ARFLAGS) i960_libmon960_a_LIBADD = @CONFIG_I960_TRUE@am_i960_libmon960_a_OBJECTS = putnum.$(OBJEXT) \ @@ -505,20 +512,21 @@ libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) @CONFIG_FRV_TRUE@am__objects_5 = frv/crt0.$(OBJEXT) -@CONFIG_I960_TRUE@am__objects_6 = i960/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_7 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_8 = lm32/crt0.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_9 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_10 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_I386_TRUE@am__objects_6 = i386/cygmon-crt0.$(OBJEXT) +@CONFIG_I960_TRUE@am__objects_7 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_8 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_9 = lm32/crt0.$(OBJEXT) +@CONFIG_MOXIE_TRUE@am__objects_10 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_11 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_11 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_12 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_12 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_13 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ - $(am__objects_11) $(am__objects_12) + $(am__objects_11) $(am__objects_12) $(am__objects_13) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -679,7 +687,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_13 = \ +@CONFIG_RISCV_TRUE@am__objects_14 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -712,7 +720,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_13) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_14) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -734,13 +742,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_14 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_15 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_15 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_16 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_14) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_15) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_15) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_16) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -810,15 +818,15 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ - $(frv_libsim_a_SOURCES) $(i960_libmon960_a_SOURCES) \ - $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ - $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ - $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ - $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ - $(msp430_libsim_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - $(riscv_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ - $(xtensa_libgloss_a_SOURCES) \ + $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ + $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ + $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ + $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ + $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ + $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ $(wince_stub_exe_SOURCES) @@ -908,7 +916,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_52) +VPATH = @srcdir@ $(am__append_55) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -926,7 +934,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_54) +CPPFLAGS = @CPPFLAGS@ $(am__append_57) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1046,18 +1054,18 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ - $(am__append_26) $(am__append_29) $(am__append_33) \ - $(am__append_35) $(am__append_38) $(am__append_39) \ - $(am__append_42) $(am__append_45) $(am__append_47) \ - $(am__append_49) $(am__append_55) $(am__append_58) \ - $(am__append_60) $(am__append_64) + $(am__append_26) $(am__append_29) $(am__append_32) \ + $(am__append_36) $(am__append_38) $(am__append_41) \ + $(am__append_42) $(am__append_45) $(am__append_48) \ + $(am__append_50) $(am__append_52) $(am__append_58) \ + $(am__append_61) $(am__append_63) $(am__append_67) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ - $(am__append_30) $(am__append_34) $(am__append_36) \ - $(am__append_41) $(am__append_44) $(am__append_46) \ - $(am__append_48) $(am__append_51) $(am__append_57) \ - $(am__append_59) + $(am__append_31) $(am__append_33) $(am__append_37) \ + $(am__append_39) $(am__append_44) $(am__append_47) \ + $(am__append_49) $(am__append_51) $(am__append_54) \ + $(am__append_60) $(am__append_62) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1074,9 +1082,9 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ - $(am__append_27) $(am__append_31) $(am__append_37) \ - $(am__append_40) $(am__append_43) $(am__append_50) \ - $(am__append_56) + $(am__append_27) $(am__append_30) $(am__append_34) \ + $(am__append_40) $(am__append_43) $(am__append_46) \ + $(am__append_53) $(am__append_59) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1242,6 +1250,14 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_FRV_TRUE@ frv/sim-write.S \ @CONFIG_FRV_TRUE@ frv/stat.c +@CONFIG_I386_TRUE@i386_libcygmon_a_SOURCES = \ +@CONFIG_I386_TRUE@ i386/cygmon-salib.c \ +@CONFIG_I386_TRUE@ i386/cygmon-gmon.c + +@CONFIG_I386_TRUE@i386_libcygmon_a_CPPFLAGS = \ +@CONFIG_I386_TRUE@ $(AM_CPPFLAGS) \ +@CONFIG_I386_TRUE@ $(I386_CPPFLAGS) + @CONFIG_I960_TRUE@i960_libmon960_a_SOURCES = \ @CONFIG_I960_TRUE@ putnum.c \ @CONFIG_I960_TRUE@ unlink.c \ @@ -1477,19 +1493,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_61) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_65) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_64) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_68) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_62) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_66) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_65) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_69) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_63) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_67) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_66) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_70) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1502,7 +1518,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1524,7 +1540,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1551,8 +1567,6 @@ distclean-hdr: -rm -f config.h stamp-h1 epiphany/Makefile: $(top_builddir)/config.status $(top_srcdir)/epiphany/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -i386/Makefile: $(top_builddir)/config.status $(top_srcdir)/i386/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ m32r/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32r/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ m68hc11/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68hc11/Makefile.in @@ -1888,6 +1902,21 @@ frv/libsim.a: $(frv_libsim_a_OBJECTS) $(frv_libsim_a_DEPENDENCIES) $(EXTRA_frv_l $(AM_V_at)-rm -f frv/libsim.a $(AM_V_AR)$(frv_libsim_a_AR) frv/libsim.a $(frv_libsim_a_OBJECTS) $(frv_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) frv/libsim.a +i386/$(am__dirstamp): + @$(MKDIR_P) i386 + @: > i386/$(am__dirstamp) +i386/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) i386/$(DEPDIR) + @: > i386/$(DEPDIR)/$(am__dirstamp) +i386/i386_libcygmon_a-cygmon-salib.$(OBJEXT): i386/$(am__dirstamp) \ + i386/$(DEPDIR)/$(am__dirstamp) +i386/i386_libcygmon_a-cygmon-gmon.$(OBJEXT): i386/$(am__dirstamp) \ + i386/$(DEPDIR)/$(am__dirstamp) + +i386/libcygmon.a: $(i386_libcygmon_a_OBJECTS) $(i386_libcygmon_a_DEPENDENCIES) $(EXTRA_i386_libcygmon_a_DEPENDENCIES) i386/$(am__dirstamp) + $(AM_V_at)-rm -f i386/libcygmon.a + $(AM_V_AR)$(i386_libcygmon_a_AR) i386/libcygmon.a $(i386_libcygmon_a_OBJECTS) $(i386_libcygmon_a_LIBADD) + $(AM_V_at)$(RANLIB) i386/libcygmon.a i960/$(am__dirstamp): @$(MKDIR_P) i960 @: > i960/$(am__dirstamp) @@ -2026,6 +2055,8 @@ bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \ csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ csky/$(DEPDIR)/$(am__dirstamp) frv/crt0.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) +i386/cygmon-crt0.$(OBJEXT): i386/$(am__dirstamp) \ + i386/$(DEPDIR)/$(am__dirstamp) i960/crt0.$(OBJEXT): i960/$(am__dirstamp) \ i960/$(DEPDIR)/$(am__dirstamp) iq2000/crt0.$(OBJEXT): iq2000/$(am__dirstamp) \ @@ -2619,6 +2650,7 @@ mostlyclean-compile: -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) -rm -f frv/*.$(OBJEXT) + -rm -f i386/*.$(OBJEXT) -rm -f i960/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) @@ -2721,6 +2753,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i386/$(DEPDIR)/cygmon-crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-read.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i960/$(DEPDIR)/mon-syscalls.Po@am__quote@ @@ -3684,6 +3719,34 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi` +i386/i386_libcygmon_a-cygmon-salib.o: i386/cygmon-salib.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT i386/i386_libcygmon_a-cygmon-salib.o -MD -MP -MF i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Tpo -c -o i386/i386_libcygmon_a-cygmon-salib.o `test -f 'i386/cygmon-salib.c' || echo '$(srcdir)/'`i386/cygmon-salib.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Tpo i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i386/cygmon-salib.c' object='i386/i386_libcygmon_a-cygmon-salib.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o i386/i386_libcygmon_a-cygmon-salib.o `test -f 'i386/cygmon-salib.c' || echo '$(srcdir)/'`i386/cygmon-salib.c + +i386/i386_libcygmon_a-cygmon-salib.obj: i386/cygmon-salib.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT i386/i386_libcygmon_a-cygmon-salib.obj -MD -MP -MF i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Tpo -c -o i386/i386_libcygmon_a-cygmon-salib.obj `if test -f 'i386/cygmon-salib.c'; then $(CYGPATH_W) 'i386/cygmon-salib.c'; else $(CYGPATH_W) '$(srcdir)/i386/cygmon-salib.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Tpo i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i386/cygmon-salib.c' object='i386/i386_libcygmon_a-cygmon-salib.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o i386/i386_libcygmon_a-cygmon-salib.obj `if test -f 'i386/cygmon-salib.c'; then $(CYGPATH_W) 'i386/cygmon-salib.c'; else $(CYGPATH_W) '$(srcdir)/i386/cygmon-salib.c'; fi` + +i386/i386_libcygmon_a-cygmon-gmon.o: i386/cygmon-gmon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT i386/i386_libcygmon_a-cygmon-gmon.o -MD -MP -MF i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Tpo -c -o i386/i386_libcygmon_a-cygmon-gmon.o `test -f 'i386/cygmon-gmon.c' || echo '$(srcdir)/'`i386/cygmon-gmon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Tpo i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i386/cygmon-gmon.c' object='i386/i386_libcygmon_a-cygmon-gmon.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o i386/i386_libcygmon_a-cygmon-gmon.o `test -f 'i386/cygmon-gmon.c' || echo '$(srcdir)/'`i386/cygmon-gmon.c + +i386/i386_libcygmon_a-cygmon-gmon.obj: i386/cygmon-gmon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT i386/i386_libcygmon_a-cygmon-gmon.obj -MD -MP -MF i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Tpo -c -o i386/i386_libcygmon_a-cygmon-gmon.obj `if test -f 'i386/cygmon-gmon.c'; then $(CYGPATH_W) 'i386/cygmon-gmon.c'; else $(CYGPATH_W) '$(srcdir)/i386/cygmon-gmon.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Tpo i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='i386/cygmon-gmon.c' object='i386/i386_libcygmon_a-cygmon-gmon.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(i386_libcygmon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o i386/i386_libcygmon_a-cygmon-gmon.obj `if test -f 'i386/cygmon-gmon.c'; then $(CYGPATH_W) 'i386/cygmon-gmon.c'; else $(CYGPATH_W) '$(srcdir)/i386/cygmon-gmon.c'; fi` + nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po @@ -5703,6 +5766,8 @@ distclean-generic: -rm -f doc/$(am__dirstamp) -rm -f frv/$(DEPDIR)/$(am__dirstamp) -rm -f frv/$(am__dirstamp) + -rm -f i386/$(DEPDIR)/$(am__dirstamp) + -rm -f i386/$(am__dirstamp) -rm -f i960/$(DEPDIR)/$(am__dirstamp) -rm -f i960/$(am__dirstamp) -rm -f iq2000/$(DEPDIR)/$(am__dirstamp) @@ -5741,7 +5806,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5884,7 +5949,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 82a44cfed5..2a10053041 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -663,6 +663,8 @@ CONFIG_IQ2000_FALSE CONFIG_IQ2000_TRUE CONFIG_I960_FALSE CONFIG_I960_TRUE +CONFIG_I386_FALSE +CONFIG_I386_TRUE CONFIG_FRV_FALSE CONFIG_FRV_TRUE CONFIG_D30V_FALSE @@ -2789,9 +2791,7 @@ case "${target}" in config_testsuite=true ;; i[3456]86-*-elf* | i[3456]86-*-coff*) - ac_config_files="$ac_config_files i386/Makefile" - - subdirs="$subdirs i386" + config_i386=true ;; m32r-*-*) ac_config_files="$ac_config_files m32r/Makefile" @@ -3055,6 +3055,14 @@ else CONFIG_FRV_FALSE= fi + if test x$config_i386 = xtrue; then + CONFIG_I386_TRUE= + CONFIG_I386_FALSE='#' +else + CONFIG_I386_TRUE='#' + CONFIG_I386_FALSE= +fi + if test x$config_i960 = xtrue; then CONFIG_I960_TRUE= CONFIG_I960_FALSE='#' @@ -5622,6 +5630,10 @@ if test -z "${CONFIG_FRV_TRUE}" && test -z "${CONFIG_FRV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_FRV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_I386_TRUE}" && test -z "${CONFIG_I386_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_I386\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_I960_TRUE}" && test -z "${CONFIG_I960_FALSE}"; then as_fn_error $? "conditional \"CONFIG_I960\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6303,7 +6315,6 @@ do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; - "i386/Makefile") CONFIG_FILES="$CONFIG_FILES i386/Makefile" ;; "m32r/Makefile") CONFIG_FILES="$CONFIG_FILES m32r/Makefile" ;; "m68hc11/Makefile") CONFIG_FILES="$CONFIG_FILES m68hc11/Makefile" ;; "nds32/Makefile") CONFIG_FILES="$CONFIG_FILES nds32/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 1214e890a5..0f768947c2 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -63,8 +63,7 @@ case "${target}" in config_testsuite=true ;; i[[3456]]86-*-elf* | i[[3456]]86-*-coff*) - AC_CONFIG_FILES([i386/Makefile]) - subdirs="$subdirs i386" + config_i386=true ;; m32r-*-*) AC_CONFIG_FILES([m32r/Makefile]) @@ -245,7 +244,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v frv i960 iq2000 libnosys lm32 moxie msp430 + aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 moxie msp430 nios2 riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) diff --git a/libgloss/i386/Makefile.in b/libgloss/i386/Makefile.in deleted file mode 100644 index 7ed0b075f7..0000000000 --- a/libgloss/i386/Makefile.in +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (c) 1997, 2000 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -#AS = @AS@ -AS = `if [ -f ${objroot}/../gas/as.new ] ; \ - then echo ${objroot}/../gas/as.new ; \ - else echo as ; fi` - -AR = @AR@ - -#LD = @LD@ -LD = `if [ -f ${objroot}/../ld/ld.new ] ; \ - then echo ${objroot}/../ld/ld.new ; \ - else echo ld ; fi` - -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = cygmon-crt0.o -CYGMON_OBJS = cygmon-salib.o cygmon-gmon.o - -CFLAGS = -g - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -SCRIPTS = cygmon -BSP = libcygmon.a - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all: ${CRT0} ${BSP} - -# -# here's where we build the board support packages for each target -# -libcygmon.a: $(CYGMON_OBJS) - ${AR} ${ARFLAGS} $@ $(CYGMON_OBJS) - ${RANLIB} $@ - -cygmon-salib.o: ${srcdir}/cygmon-salib.c - $(CC) -c $(CFLAGS) $(I386_CPPFLAGS) $(<) -o $@ - -cygmon-crt0.o: ${srcdir}/cygmon-crt0.S - $(CC) -c $(CFLAGS) $(I386_CPPFLAGS) $(<) -o $@ - -doc: - -clean mostlyclean: - rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile a.out - -.PHONY: install info install-info clean-info -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_PROGRAM) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - @for bsp in ${BSP}; do\ - $(INSTALL_PROGRAM) $${bsp} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - @for script in ${SCRIPTS}; do\ - $(INSTALL_DATA) ${srcdir}/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \ - done - -info: -install-info: -clean-info: - -test.o: ${srcdir}/test.c - -# these are for the BSPs -${CRT0}: cygmon-crt0.S - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/i386/Makefile.inc b/libgloss/i386/Makefile.inc new file mode 100644 index 0000000000..a0825611ad --- /dev/null +++ b/libgloss/i386/Makefile.inc @@ -0,0 +1,25 @@ +## Copyright (c) 1997, 2000 Cygnus Support +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += \ + %D%/cygmon.ld + +multilibtool_DATA += %D%/cygmon-crt0.o +libobjs_a_SOURCES += %D%/cygmon-crt0.S + +multilibtool_LIBRARIES += %D%/libcygmon.a +%C%_libcygmon_a_SOURCES = \ + %D%/cygmon-salib.c \ + %D%/cygmon-gmon.c +%C%_libcygmon_a_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + $(I386_CPPFLAGS) From 25f6d8772ec7f6305d59224d2043dd312e2f99e5 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 23:13:37 -0500 Subject: [PATCH 579/767] libgloss: merge mn10300 into top-level Makefile Avoid a recursive make to speed things up a bit. A mn10300-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 335 ++++++++++++++++++++++++++-------- libgloss/config/mn10300.mt | 3 - libgloss/configure | 52 ++++-- libgloss/configure.ac | 7 +- libgloss/mn10300/Makefile.in | 156 ---------------- libgloss/mn10300/Makefile.inc | 66 +++++++ libgloss/mn10300/acinclude.m4 | 18 +- 8 files changed, 371 insertions(+), 269 deletions(-) delete mode 100644 libgloss/config/mn10300.mt delete mode 100644 libgloss/mn10300/Makefile.in create mode 100644 libgloss/mn10300/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 73fb8e4816..5f2ca42a91 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -115,6 +115,9 @@ endif if CONFIG_LM32 include lm32/Makefile.inc endif +if CONFIG_MN10300 +include mn10300/Makefile.inc +endif if CONFIG_MOXIE include moxie/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 1ee0ace37a..dd85011789 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -91,7 +91,7 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = $(am__EXEEXT_1) -check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) @HAVE_DOC_TRUE@am__append_1 = doc/porting.texi @CONFIG_AARCH64_TRUE@am__append_2 = aarch64/librdimon.a @CONFIG_AARCH64_TRUE@am__append_3 = \ @@ -187,46 +187,67 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_LM32_TRUE@am__append_38 = lm32/crt0.o lm32/sim.ld @CONFIG_LM32_TRUE@am__append_39 = lm32/libgloss.a @CONFIG_LM32_TRUE@am__append_40 = lm32/crt0.S -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_41 = \ +@CONFIG_MN10300_TRUE@am__append_41 = \ +@CONFIG_MN10300_TRUE@ mn10300/eval.ld \ +@CONFIG_MN10300_TRUE@ mn10300/sim.ld + +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_42 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld + +@CONFIG_MN10300_TRUE@am__append_43 = \ +@CONFIG_MN10300_TRUE@ mn10300/crt0.o \ +@CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ +@CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o + +@CONFIG_MN10300_TRUE@am__append_44 = \ +@CONFIG_MN10300_TRUE@ mn10300/crt0.S \ +@CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ +@CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S + +@CONFIG_MN10300_TRUE@am__append_45 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_46 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_47 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_48 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_42 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_43 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_49 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_50 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_44 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_45 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_51 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_52 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_46 = \ +@CONFIG_MSP430_TRUE@am__append_53 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_47 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_54 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NIOS2_TRUE@am__append_48 = \ +@CONFIG_NIOS2_TRUE@am__append_55 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_49 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_50 = \ +@CONFIG_NIOS2_TRUE@am__append_56 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_57 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_51 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_58 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_52 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_53 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_54 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_55 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_56 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_57 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_58 = \ +@CONFIG_V850_TRUE@am__append_59 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_60 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_61 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_62 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_63 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_64 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_65 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -235,27 +256,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_59 = \ +@CONFIG_XTENSA_TRUE@am__append_66 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_60 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_61 = \ +@CONFIG_XTENSA_TRUE@am__append_67 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_68 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_62 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_69 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_63 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_64 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_65 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_66 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_67 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_68 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_69 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_70 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_70 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_71 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_72 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_73 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_74 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_75 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_76 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_77 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -283,11 +304,11 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ nds32/Makefile m68k/Makefile pa/Makefile sparc_leon/Makefile \ sparc/Makefile mips/Makefile rs6000/Makefile mn10200/Makefile \ - mn10300/Makefile cr16/Makefile cris/Makefile crx/Makefile \ - fr30/Makefile ft32/Makefile mcore/Makefile mep/Makefile \ - microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - xstormy16/Makefile m32c/Makefile rl78/Makefile rx/Makefile \ - spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ + ft32/Makefile mcore/Makefile mep/Makefile microblaze/Makefile \ + mt/Makefile visium/Makefile xc16x/Makefile xstormy16/Makefile \ + m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ + tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -516,23 +537,56 @@ libobjs_a_LIBADD = @CONFIG_I960_TRUE@am__objects_7 = i960/crt0.$(OBJEXT) @CONFIG_IQ2000_TRUE@am__objects_8 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_9 = lm32/crt0.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_10 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_11 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_10 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) +@CONFIG_MOXIE_TRUE@am__objects_11 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_12 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_12 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_13 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_13 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_14 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ - $(am__objects_11) $(am__objects_12) $(am__objects_13) + $(am__objects_11) $(am__objects_12) $(am__objects_13) \ + $(am__objects_14) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@ lm32/scall.$(OBJEXT) lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) +mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) +mn10300_libcygmon_a_LIBADD = +@CONFIG_MN10300_TRUE@am__objects_15 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/crt1.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/fstat.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/getpid.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/isatty.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/kill.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/lseek.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/open.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/read.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/sbrk.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/stat.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/time.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/times.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_15) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) +mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) +mn10300_libeval_a_AR = $(AR) $(ARFLAGS) +mn10300_libeval_a_LIBADD = +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_15) \ +@CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) +mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) moxie_libqemu_a_LIBADD = @CONFIG_MOXIE_TRUE@am_moxie_libqemu_a_OBJECTS = \ @@ -687,7 +741,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_14 = \ +@CONFIG_RISCV_TRUE@am__objects_16 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -720,7 +774,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_14) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_16) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -742,13 +796,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_15 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_16 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_17 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_18 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_15) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_16) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_17) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_18) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -764,6 +818,7 @@ xtensa_libsys_qemu_a_OBJECTS = $(am_xtensa_libsys_qemu_a_OBJECTS) @CONFIG_WINCE_TRUE@am__EXEEXT_1 = wince/stub.exe$(EXEEXT) @CONFIG_BFIN_TRUE@am__EXEEXT_2 = bfin/sim-test$(EXEEXT) @CONFIG_IQ2000_TRUE@am__EXEEXT_3 = iq2000/test$(EXEEXT) +@CONFIG_MN10300_TRUE@am__EXEEXT_4 = mn10300/test$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) bfin_sim_test_SOURCES = bfin/sim-test.c bfin_sim_test_OBJECTS = bfin/sim-test.$(OBJEXT) @@ -771,6 +826,11 @@ bfin_sim_test_LDADD = $(LDADD) iq2000_test_SOURCES = iq2000/test.c iq2000_test_OBJECTS = iq2000/test.$(OBJEXT) iq2000_test_LDADD = $(LDADD) +mn10300_test_SOURCES = mn10300/test.c +mn10300_test_OBJECTS = mn10300/test.$(OBJEXT) +mn10300_test_LDADD = $(LDADD) +mn10300_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(mn10300_test_LDFLAGS) $(LDFLAGS) -o $@ @CONFIG_WINCE_TRUE@am_wince_stub_exe_OBJECTS = \ @CONFIG_WINCE_TRUE@ wince_stub_exe-wince-stub.$(OBJEXT) wince_stub_exe_OBJECTS = $(am_wince_stub_exe_OBJECTS) @@ -821,7 +881,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(mn10300_libcygmon_a_SOURCES) \ + $(mn10300_libeval_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ @@ -829,7 +890,7 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ - $(wince_stub_exe_SOURCES) + mn10300/test.c $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -916,7 +977,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_55) +VPATH = @srcdir@ $(am__append_62) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -934,7 +995,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_57) +CPPFLAGS = @CPPFLAGS@ $(am__append_64) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -963,8 +1024,6 @@ MIPS_PART_SPECIFIC_DEFINES = @MIPS_PART_SPECIFIC_DEFINES@ MIPS_PART_SPECIFIC_OBJ = @MIPS_PART_SPECIFIC_OBJ@ MIPS_SCRIPT_LIST = @MIPS_SCRIPT_LIST@ MKDIR_P = @MKDIR_P@ -MN10300_BSP_LIST = @MN10300_BSP_LIST@ -MN10300_SCRIPT_LIST = @MN10300_SCRIPT_LIST@ OBJCOPY = @OBJCOPY@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ @@ -1056,16 +1115,18 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ $(am__append_36) $(am__append_38) $(am__append_41) \ - $(am__append_42) $(am__append_45) $(am__append_48) \ - $(am__append_50) $(am__append_52) $(am__append_58) \ - $(am__append_61) $(am__append_63) $(am__append_67) + $(am__append_42) $(am__append_43) $(am__append_48) \ + $(am__append_49) $(am__append_52) $(am__append_55) \ + $(am__append_57) $(am__append_59) $(am__append_65) \ + $(am__append_68) $(am__append_70) $(am__append_74) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ $(am__append_31) $(am__append_33) $(am__append_37) \ - $(am__append_39) $(am__append_44) $(am__append_47) \ - $(am__append_49) $(am__append_51) $(am__append_54) \ - $(am__append_60) $(am__append_62) + $(am__append_39) $(am__append_45) $(am__append_46) \ + $(am__append_51) $(am__append_54) $(am__append_56) \ + $(am__append_58) $(am__append_61) $(am__append_67) \ + $(am__append_69) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1083,8 +1144,8 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ - $(am__append_40) $(am__append_43) $(am__append_46) \ - $(am__append_53) $(am__append_59) + $(am__append_40) $(am__append_44) $(am__append_50) \ + $(am__append_53) $(am__append_60) $(am__append_66) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1303,6 +1364,38 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/scall.S + +# Generic object files common to all targets. +@CONFIG_MN10300_TRUE@mn10300_common_lib_sources = \ +@CONFIG_MN10300_TRUE@ mn10300/_exit.c \ +@CONFIG_MN10300_TRUE@ mn10300/access.c \ +@CONFIG_MN10300_TRUE@ mn10300/chmod.c \ +@CONFIG_MN10300_TRUE@ mn10300/close.c \ +@CONFIG_MN10300_TRUE@ mn10300/crt1.c \ +@CONFIG_MN10300_TRUE@ mn10300/fstat.c \ +@CONFIG_MN10300_TRUE@ mn10300/getpid.c \ +@CONFIG_MN10300_TRUE@ mn10300/isatty.c \ +@CONFIG_MN10300_TRUE@ mn10300/kill.c \ +@CONFIG_MN10300_TRUE@ mn10300/lseek.c \ +@CONFIG_MN10300_TRUE@ mn10300/open.c \ +@CONFIG_MN10300_TRUE@ mn10300/read.c \ +@CONFIG_MN10300_TRUE@ mn10300/sbrk.c \ +@CONFIG_MN10300_TRUE@ mn10300/stat.c \ +@CONFIG_MN10300_TRUE@ mn10300/time.c \ +@CONFIG_MN10300_TRUE@ mn10300/times.c \ +@CONFIG_MN10300_TRUE@ mn10300/unlink.c \ +@CONFIG_MN10300_TRUE@ mn10300/utime.c \ +@CONFIG_MN10300_TRUE@ mn10300/write.c + +@CONFIG_MN10300_TRUE@mn10300_libeval_a_SOURCES = \ +@CONFIG_MN10300_TRUE@ $(mn10300_common_lib_sources) \ +@CONFIG_MN10300_TRUE@ mn10300/trap.S + +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@mn10300_libcygmon_a_SOURCES = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ $(mn10300_common_lib_sources) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.c + +@CONFIG_MN10300_TRUE@mn10300_test_LDFLAGS = $(AM_LDFLAGS) -Wl,-T$(srcdir)/mn10300/eval.ld @CONFIG_MOXIE_TRUE@moxie_libsim_a_SOURCES = \ @CONFIG_MOXIE_TRUE@ moxie/fstat.c \ @CONFIG_MOXIE_TRUE@ moxie/getpid.c \ @@ -1493,19 +1586,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_64) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_68) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_71) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_75) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_65) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_69) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_72) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_76) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_66) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_70) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_73) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_77) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1518,7 +1611,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1540,7 +1633,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1587,8 +1680,6 @@ rs6000/Makefile: $(top_builddir)/config.status $(top_srcdir)/rs6000/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mn10200/Makefile: $(top_builddir)/config.status $(top_srcdir)/mn10200/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -mn10300/Makefile: $(top_builddir)/config.status $(top_srcdir)/mn10300/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ cr16/Makefile: $(top_builddir)/config.status $(top_srcdir)/cr16/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ cris/Makefile: $(top_builddir)/config.status $(top_srcdir)/cris/Makefile.in @@ -2069,6 +2160,18 @@ lm32/$(DEPDIR)/$(am__dirstamp): @: > lm32/$(DEPDIR)/$(am__dirstamp) lm32/crt0.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/$(DEPDIR)/$(am__dirstamp) +mn10300/$(am__dirstamp): + @$(MKDIR_P) mn10300 + @: > mn10300/$(am__dirstamp) +mn10300/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) mn10300/$(DEPDIR) + @: > mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/crt0.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/crt0_cygmon.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/crt0_redboot.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) moxie/$(am__dirstamp): @$(MKDIR_P) moxie @: > moxie/$(am__dirstamp) @@ -2121,6 +2224,58 @@ lm32/libgloss.a: $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f lm32/libgloss.a $(AM_V_AR)$(lm32_libgloss_a_AR) lm32/libgloss.a $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_LIBADD) $(AM_V_at)$(RANLIB) lm32/libgloss.a +mn10300/_exit.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/access.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/chmod.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/close.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/crt1.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/fstat.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/getpid.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/isatty.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/kill.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/lseek.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/open.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/read.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/sbrk.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/stat.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/time.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/times.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/unlink.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/utime.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/write.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) +mn10300/cygmon.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) + +mn10300/libcygmon.a: $(mn10300_libcygmon_a_OBJECTS) $(mn10300_libcygmon_a_DEPENDENCIES) $(EXTRA_mn10300_libcygmon_a_DEPENDENCIES) mn10300/$(am__dirstamp) + $(AM_V_at)-rm -f mn10300/libcygmon.a + $(AM_V_AR)$(mn10300_libcygmon_a_AR) mn10300/libcygmon.a $(mn10300_libcygmon_a_OBJECTS) $(mn10300_libcygmon_a_LIBADD) + $(AM_V_at)$(RANLIB) mn10300/libcygmon.a +mn10300/trap.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) + +mn10300/libeval.a: $(mn10300_libeval_a_OBJECTS) $(mn10300_libeval_a_DEPENDENCIES) $(EXTRA_mn10300_libeval_a_DEPENDENCIES) mn10300/$(am__dirstamp) + $(AM_V_at)-rm -f mn10300/libeval.a + $(AM_V_AR)$(mn10300_libeval_a_AR) mn10300/libeval.a $(mn10300_libeval_a_OBJECTS) $(mn10300_libeval_a_LIBADD) + $(AM_V_at)$(RANLIB) mn10300/libeval.a moxie/qemu-write.$(OBJEXT): moxie/$(am__dirstamp) \ moxie/$(DEPDIR)/$(am__dirstamp) moxie/qemu-time.$(OBJEXT): moxie/$(am__dirstamp) \ @@ -2633,6 +2788,12 @@ iq2000/test.$(OBJEXT): iq2000/$(am__dirstamp) \ iq2000/test$(EXEEXT): $(iq2000_test_OBJECTS) $(iq2000_test_DEPENDENCIES) $(EXTRA_iq2000_test_DEPENDENCIES) iq2000/$(am__dirstamp) @rm -f iq2000/test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(iq2000_test_OBJECTS) $(iq2000_test_LDADD) $(LIBS) +mn10300/test.$(OBJEXT): mn10300/$(am__dirstamp) \ + mn10300/$(DEPDIR)/$(am__dirstamp) + +mn10300/test$(EXEEXT): $(mn10300_test_OBJECTS) $(mn10300_test_DEPENDENCIES) $(EXTRA_mn10300_test_DEPENDENCIES) mn10300/$(am__dirstamp) + @rm -f mn10300/test$(EXEEXT) + $(AM_V_CCLD)$(mn10300_test_LINK) $(mn10300_test_OBJECTS) $(mn10300_test_LDADD) $(LIBS) wince/$(am__dirstamp): @$(MKDIR_P) wince @: > wince/$(am__dirstamp) @@ -2655,6 +2816,7 @@ mostlyclean-compile: -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) + -rm -f mn10300/*.$(OBJEXT) -rm -f moxie/*.$(OBJEXT) -rm -f msp430/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) @@ -2811,6 +2973,31 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/access.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/crt0_cygmon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/crt0_redboot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/crt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/cygmon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/fstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@moxie/$(DEPDIR)/getpid.Po@am__quote@ @@ -5776,6 +5963,8 @@ distclean-generic: -rm -f libnosys/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(am__dirstamp) + -rm -f mn10300/$(DEPDIR)/$(am__dirstamp) + -rm -f mn10300/$(am__dirstamp) -rm -f moxie/$(DEPDIR)/$(am__dirstamp) -rm -f moxie/$(am__dirstamp) -rm -f msp430/$(DEPDIR)/$(am__dirstamp) @@ -5806,7 +5995,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -5949,7 +6138,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/config/mn10300.mt b/libgloss/config/mn10300.mt deleted file mode 100644 index 6b4c522c13..0000000000 --- a/libgloss/config/mn10300.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Dummy target-specific Makefile fragment for MN10300. We can't -# use default.mt because it refers to generic source files whose -# names conflict with the MN10300-specific sources. diff --git a/libgloss/configure b/libgloss/configure index 2a10053041..7772003724 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -600,8 +600,8 @@ SPARC_CYGMONLDSCRIPTTEMPL SPARC_CPU MOXIE_BUILD_CRT0_FALSE MOXIE_BUILD_CRT0_TRUE -MN10300_BSP_LIST -MN10300_SCRIPT_LIST +MN10300_BUILD_LIBCYGMON_FALSE +MN10300_BUILD_LIBCYGMON_TRUE MIPS_CRT0 MIPS_BSP_LIST MIPS_SCRIPT_LIST @@ -655,6 +655,8 @@ CONFIG_MSP430_FALSE CONFIG_MSP430_TRUE CONFIG_MOXIE_FALSE CONFIG_MOXIE_TRUE +CONFIG_MN10300_FALSE +CONFIG_MN10300_TRUE CONFIG_LM32_FALSE CONFIG_LM32_TRUE CONFIG_LIBNOSYS_FALSE @@ -2856,10 +2858,7 @@ case "${target}" in target_makefile_frag=${srcdir}/config/mn10200.mt ;; mn10300-*-*) - ac_config_files="$ac_config_files mn10300/Makefile" - - subdirs="$subdirs mn10300" - target_makefile_frag=${srcdir}/config/mn10300.mt + config_mn10300=true ;; bfin-*-*) config_bfin=true @@ -3095,6 +3094,14 @@ else CONFIG_LM32_FALSE= fi + if test x$config_mn10300 = xtrue; then + CONFIG_MN10300_TRUE= + CONFIG_MN10300_FALSE='#' +else + CONFIG_MN10300_TRUE='#' + CONFIG_MN10300_FALSE= +fi + if test x$config_moxie = xtrue; then CONFIG_MOXIE_TRUE= CONFIG_MOXIE_FALSE='#' @@ -5316,19 +5323,19 @@ esac -MN10300_SCRIPT_LIST= -MN10300_BSP_LIST= -case "${target}" in - mn10300-*elf) - MN10300_SCRIPT_LIST="eval sim asb2303 asb2305" - MN10300_BSP_LIST="libeval.a libcygmon.a" - ;; - *) - MN10300_SCRIPT_LIST="eval sim" - MN10300_BSP_LIST="libeval.a" - ;; +case ${target} in #( + mn10300-*elf) : + MN10300_BUILD_LIBCYGMON=true ;; #( + *) : + MN10300_BUILD_LIBCYGMON=false ;; esac - + if $MN10300_BUILD_LIBCYGMON; then + MN10300_BUILD_LIBCYGMON_TRUE= + MN10300_BUILD_LIBCYGMON_FALSE='#' +else + MN10300_BUILD_LIBCYGMON_TRUE='#' + MN10300_BUILD_LIBCYGMON_FALSE= +fi case ${target} in #( @@ -5650,6 +5657,10 @@ if test -z "${CONFIG_LM32_TRUE}" && test -z "${CONFIG_LM32_FALSE}"; then as_fn_error $? "conditional \"CONFIG_LM32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_MN10300_TRUE}" && test -z "${CONFIG_MN10300_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_MN10300\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_MOXIE_TRUE}" && test -z "${CONFIG_MOXIE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MOXIE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5690,6 +5701,10 @@ if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${MN10300_BUILD_LIBCYGMON_TRUE}" && test -z "${MN10300_BUILD_LIBCYGMON_FALSE}"; then + as_fn_error $? "conditional \"MN10300_BUILD_LIBCYGMON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${MOXIE_BUILD_CRT0_TRUE}" && test -z "${MOXIE_BUILD_CRT0_FALSE}"; then as_fn_error $? "conditional \"MOXIE_BUILD_CRT0\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6325,7 +6340,6 @@ do "mips/Makefile") CONFIG_FILES="$CONFIG_FILES mips/Makefile" ;; "rs6000/Makefile") CONFIG_FILES="$CONFIG_FILES rs6000/Makefile" ;; "mn10200/Makefile") CONFIG_FILES="$CONFIG_FILES mn10200/Makefile" ;; - "mn10300/Makefile") CONFIG_FILES="$CONFIG_FILES mn10300/Makefile" ;; "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 0f768947c2..4637375c7b 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -118,9 +118,7 @@ case "${target}" in target_makefile_frag=${srcdir}/config/mn10200.mt ;; mn10300-*-*) - AC_CONFIG_FILES([mn10300/Makefile]) - subdirs="$subdirs mn10300" - target_makefile_frag=${srcdir}/config/mn10300.mt + config_mn10300=true ;; bfin-*-*) config_bfin=true @@ -244,7 +242,8 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 moxie msp430 + aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 + mn10300 moxie msp430 nios2 riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) diff --git a/libgloss/mn10300/Makefile.in b/libgloss/mn10300/Makefile.in deleted file mode 100644 index 1669d5ce4f..0000000000 --- a/libgloss/mn10300/Makefile.in +++ /dev/null @@ -1,156 +0,0 @@ -# Copyright (c) 1998, 2000 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -CC = @CC@ - -#AS = @AS@ -AS = `if [ -f ${objroot}/../gas/as.new ] ; \ - then echo ${objroot}/../gas/as.new ; \ - else echo as ; fi` - -AR = @AR@ - -#LD = @LD@ -LD = `if [ -f ${objroot}/../ld/ld.new ] ; \ - then echo ${objroot}/../ld/ld.new ; \ - else echo ld ; fi` - -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = crt0.o crt0_cygmon.o crt0_redboot.o - -# Generic object files common to all targets. -GENOBJS_NO_TRAP = _exit.o access.o chmod.o close.o crt1.o \ - fstat.o getpid.o isatty.o \ - kill.o lseek.o open.o read.o \ - sbrk.o stat.o time.o times.o unlink.o utime.o write.o -GENOBJS = ${GENOBJS_NO_TRAP} trap.o - -# Object files specific to particular targets. -EVALOBJS = ${GENOBJS} -CYGMONOBJS = cygmon.o ${GENOBJS_NO_TRAP} - -CFLAGS = -g - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -SCRIPTS = @MN10300_SCRIPT_LIST@ -BSP = @MN10300_BSP_LIST@ - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# - -all: ${CRT0} test.o ${BSP} - -# -# here's where we build the board support packages for each target -# - -libeval.a: $(EVALOBJS) - ${AR} ${ARFLAGS} $@ $(EVALOBJS) - ${RANLIB} $@ - -libcygmon.a: $(CYGMONOBJS) - ${AR} ${ARFLAGS} $@ $(CYGMONOBJS) - ${RANLIB} $@ - - -# compile a fully linked binary. The -Wl,-T*.ld is for the linker -# script. By using -Wl, the linker script is put on the proper place -# in the comand line for ld, and all the symbols will get fully -# resolved. - -test: ${CRT0} test.o - ${CC} $(CFLAGS_FOR_TARGET) -L${srcdir} -L${objdir} \ - test.o -o $@ $(NEWLIB_LDFLAGS) -Wl,-Teval.ld - @echo Done... - -doc: - -clean mostlyclean: - rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile a.out - -.PHONY: install info install-info clean-info -install: - mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; - @for crt in ${CRT0}; do \ - $(INSTALL_PROGRAM) $${crt} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${crt}; \ - done - @for bsp in ${BSP}; do \ - $(INSTALL_PROGRAM) $${bsp} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - @for script in ${SCRIPTS}; do \ - $(INSTALL_DATA) ${srcdir}/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \ - done - -info: -install-info: -clean-info: - -test.o: ${srcdir}/test.c - -# these are for the BSPs -crt0.o: ${srcdir}/crt0.S -crt0_cygmon.o: ${srcdir}/crt0_cygmon.S - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/mn10300/Makefile.inc b/libgloss/mn10300/Makefile.inc new file mode 100644 index 0000000000..cc91b8bf1c --- /dev/null +++ b/libgloss/mn10300/Makefile.inc @@ -0,0 +1,66 @@ +## Copyright (c) 1998, 2000 Cygnus Support +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += \ + %D%/eval.ld \ + %D%/sim.ld +if MN10300_BUILD_LIBCYGMON +multilibtool_DATA += \ + %D%/asb2303.ld \ + %D%/asb2305.ld +endif + +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/crt0_cygmon.o \ + %D%/crt0_redboot.o +libobjs_a_SOURCES += \ + %D%/crt0.S \ + %D%/crt0_cygmon.S \ + %D%/crt0_redboot.S + +# Generic object files common to all targets. +%C%_common_lib_sources = \ + %D%/_exit.c \ + %D%/access.c \ + %D%/chmod.c \ + %D%/close.c \ + %D%/crt1.c \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/read.c \ + %D%/sbrk.c \ + %D%/stat.c \ + %D%/time.c \ + %D%/times.c \ + %D%/unlink.c \ + %D%/utime.c \ + %D%/write.c + +multilibtool_LIBRARIES += %D%/libeval.a +%C%_libeval_a_SOURCES = \ + $(%C%_common_lib_sources) \ + %D%/trap.S + +if MN10300_BUILD_LIBCYGMON +multilibtool_LIBRARIES += %D%/libcygmon.a +%C%_libcygmon_a_SOURCES = \ + $(%C%_common_lib_sources) \ + %D%/cygmon.c +endif + +check_PROGRAMS += %D%/test +%C%_test_LDFLAGS = $(AM_LDFLAGS) -Wl,-T$(srcdir)/%D%/eval.ld diff --git a/libgloss/mn10300/acinclude.m4 b/libgloss/mn10300/acinclude.m4 index 93fa5286e8..031b55f3f1 100644 --- a/libgloss/mn10300/acinclude.m4 +++ b/libgloss/mn10300/acinclude.m4 @@ -1,14 +1,4 @@ -MN10300_SCRIPT_LIST= -MN10300_BSP_LIST= -case "${target}" in - mn10300-*elf) - MN10300_SCRIPT_LIST="eval sim asb2303 asb2305" - MN10300_BSP_LIST="libeval.a libcygmon.a" - ;; - *) - MN10300_SCRIPT_LIST="eval sim" - MN10300_BSP_LIST="libeval.a" - ;; -esac -AC_SUBST(MN10300_SCRIPT_LIST) -AC_SUBST(MN10300_BSP_LIST) +AS_CASE([${target}], + [mn10300-*elf], [MN10300_BUILD_LIBCYGMON=true], + [MN10300_BUILD_LIBCYGMON=false]) +AM_CONDITIONAL([MN10300_BUILD_LIBCYGMON], [$MN10300_BUILD_LIBCYGMON]) From 41de4b00f762a05f5e782fb8f8bd9c788456b108 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 23:26:40 -0500 Subject: [PATCH 580/767] libgloss: merge mn10200 into top-level Makefile Avoid a recursive make to speed things up a bit. Untested, but follows the same pattern as mn10300, but simpler. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 320 ++++++++++++++++++++++++---------- libgloss/config/mn10200.mt | 3 - libgloss/configure | 20 ++- libgloss/configure.ac | 6 +- libgloss/mn10200/Makefile.in | 149 ---------------- libgloss/mn10200/Makefile.inc | 43 +++++ 7 files changed, 293 insertions(+), 251 deletions(-) delete mode 100644 libgloss/config/mn10200.mt delete mode 100644 libgloss/mn10200/Makefile.in create mode 100644 libgloss/mn10200/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 5f2ca42a91..e48beaa21f 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -115,6 +115,9 @@ endif if CONFIG_LM32 include lm32/Makefile.inc endif +if CONFIG_MN10200 +include mn10200/Makefile.inc +endif if CONFIG_MN10300 include mn10300/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index dd85011789..85755f000f 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -91,7 +91,8 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = $(am__EXEEXT_1) -check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) +check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ + $(am__EXEEXT_5) @HAVE_DOC_TRUE@am__append_1 = doc/porting.texi @CONFIG_AARCH64_TRUE@am__append_2 = aarch64/librdimon.a @CONFIG_AARCH64_TRUE@am__append_3 = \ @@ -187,67 +188,72 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) @CONFIG_LM32_TRUE@am__append_38 = lm32/crt0.o lm32/sim.ld @CONFIG_LM32_TRUE@am__append_39 = lm32/libgloss.a @CONFIG_LM32_TRUE@am__append_40 = lm32/crt0.S -@CONFIG_MN10300_TRUE@am__append_41 = \ +@CONFIG_MN10200_TRUE@am__append_41 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MN10200_TRUE@ mn10200/crt0.o +@CONFIG_MN10200_TRUE@am__append_42 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_43 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_44 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_45 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_42 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_46 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_43 = \ +@CONFIG_MN10300_TRUE@am__append_47 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_44 = \ +@CONFIG_MN10300_TRUE@am__append_48 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_45 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_46 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_47 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_48 = \ +@CONFIG_MN10300_TRUE@am__append_49 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_50 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_51 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_52 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_49 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_50 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_53 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_54 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_51 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_52 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_55 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_56 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_53 = \ +@CONFIG_MSP430_TRUE@am__append_57 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_54 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_58 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NIOS2_TRUE@am__append_55 = \ +@CONFIG_NIOS2_TRUE@am__append_59 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_56 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_57 = \ +@CONFIG_NIOS2_TRUE@am__append_60 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_61 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_58 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_62 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_59 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_60 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_61 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_62 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_63 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_64 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_65 = \ +@CONFIG_V850_TRUE@am__append_63 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_64 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_65 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_66 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_67 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_68 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_69 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -256,27 +262,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_66 = \ +@CONFIG_XTENSA_TRUE@am__append_70 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_67 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_68 = \ +@CONFIG_XTENSA_TRUE@am__append_71 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_72 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_69 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_73 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_70 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_71 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_72 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_73 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_74 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_75 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_76 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_77 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_74 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_75 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_76 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_77 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_78 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_79 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_80 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_81 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -303,10 +309,10 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ nds32/Makefile m68k/Makefile pa/Makefile sparc_leon/Makefile \ - sparc/Makefile mips/Makefile rs6000/Makefile mn10200/Makefile \ - cr16/Makefile cris/Makefile crx/Makefile fr30/Makefile \ - ft32/Makefile mcore/Makefile mep/Makefile microblaze/Makefile \ - mt/Makefile visium/Makefile xc16x/Makefile xstormy16/Makefile \ + sparc/Makefile mips/Makefile rs6000/Makefile cr16/Makefile \ + cris/Makefile crx/Makefile fr30/Makefile ft32/Makefile \ + mcore/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ + visium/Makefile xc16x/Makefile xstormy16/Makefile \ m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile @@ -537,30 +543,54 @@ libobjs_a_LIBADD = @CONFIG_I960_TRUE@am__objects_7 = i960/crt0.$(OBJEXT) @CONFIG_IQ2000_TRUE@am__objects_8 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_9 = lm32/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_10 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@am__objects_10 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_11 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_11 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_12 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_12 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_13 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_13 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_14 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_14 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_15 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ - $(am__objects_14) + $(am__objects_14) $(am__objects_15) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@ lm32/scall.$(OBJEXT) lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) +mn10200_libeval_a_AR = $(AR) $(ARFLAGS) +mn10200_libeval_a_LIBADD = +@CONFIG_MN10200_TRUE@am_mn10200_libeval_a_OBJECTS = \ +@CONFIG_MN10200_TRUE@ mn10200/_exit.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/access.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/chmod.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/close.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/crt1.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/fstat.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/getpid.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/isatty.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/kill.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/lseek.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/open.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/read.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/sbrk.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/stat.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/time.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/trap.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/unlink.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/utime.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@ mn10200/write.$(OBJEXT) +mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_15 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_16 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -579,12 +609,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_15) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_16) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_15) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_16) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -741,7 +771,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_16 = \ +@CONFIG_RISCV_TRUE@am__objects_17 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -774,7 +804,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_16) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_17) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -796,13 +826,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_17 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_18 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_18 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_19 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_17) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_18) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_18) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_19) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -818,7 +848,8 @@ xtensa_libsys_qemu_a_OBJECTS = $(am_xtensa_libsys_qemu_a_OBJECTS) @CONFIG_WINCE_TRUE@am__EXEEXT_1 = wince/stub.exe$(EXEEXT) @CONFIG_BFIN_TRUE@am__EXEEXT_2 = bfin/sim-test$(EXEEXT) @CONFIG_IQ2000_TRUE@am__EXEEXT_3 = iq2000/test$(EXEEXT) -@CONFIG_MN10300_TRUE@am__EXEEXT_4 = mn10300/test$(EXEEXT) +@CONFIG_MN10200_TRUE@am__EXEEXT_4 = mn10200/test$(EXEEXT) +@CONFIG_MN10300_TRUE@am__EXEEXT_5 = mn10300/test$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) bfin_sim_test_SOURCES = bfin/sim-test.c bfin_sim_test_OBJECTS = bfin/sim-test.$(OBJEXT) @@ -826,6 +857,11 @@ bfin_sim_test_LDADD = $(LDADD) iq2000_test_SOURCES = iq2000/test.c iq2000_test_OBJECTS = iq2000/test.$(OBJEXT) iq2000_test_LDADD = $(LDADD) +mn10200_test_SOURCES = mn10200/test.c +mn10200_test_OBJECTS = mn10200/test.$(OBJEXT) +mn10200_test_LDADD = $(LDADD) +mn10200_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(mn10200_test_LDFLAGS) $(LDFLAGS) -o $@ mn10300_test_SOURCES = mn10300/test.c mn10300_test_OBJECTS = mn10300/test.$(OBJEXT) mn10300_test_LDADD = $(LDADD) @@ -881,16 +917,17 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(mn10300_libcygmon_a_SOURCES) \ - $(mn10300_libeval_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ - $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ - $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ - $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ + $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ + $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ + $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ + $(msp430_libsim_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + $(riscv_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ - mn10300/test.c $(wince_stub_exe_SOURCES) + mn10200/test.c mn10300/test.c $(wince_stub_exe_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -977,7 +1014,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_62) +VPATH = @srcdir@ $(am__append_66) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -995,7 +1032,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_64) +CPPFLAGS = @CPPFLAGS@ $(am__append_68) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1115,18 +1152,19 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ $(am__append_36) $(am__append_38) $(am__append_41) \ - $(am__append_42) $(am__append_43) $(am__append_48) \ - $(am__append_49) $(am__append_52) $(am__append_55) \ - $(am__append_57) $(am__append_59) $(am__append_65) \ - $(am__append_68) $(am__append_70) $(am__append_74) + $(am__append_45) $(am__append_46) $(am__append_47) \ + $(am__append_52) $(am__append_53) $(am__append_56) \ + $(am__append_59) $(am__append_61) $(am__append_63) \ + $(am__append_69) $(am__append_72) $(am__append_74) \ + $(am__append_78) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ $(am__append_31) $(am__append_33) $(am__append_37) \ - $(am__append_39) $(am__append_45) $(am__append_46) \ - $(am__append_51) $(am__append_54) $(am__append_56) \ - $(am__append_58) $(am__append_61) $(am__append_67) \ - $(am__append_69) + $(am__append_39) $(am__append_43) $(am__append_49) \ + $(am__append_50) $(am__append_55) $(am__append_58) \ + $(am__append_60) $(am__append_62) $(am__append_65) \ + $(am__append_71) $(am__append_73) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1144,8 +1182,9 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ - $(am__append_40) $(am__append_44) $(am__append_50) \ - $(am__append_53) $(am__append_60) $(am__append_66) + $(am__append_40) $(am__append_42) $(am__append_48) \ + $(am__append_54) $(am__append_57) $(am__append_64) \ + $(am__append_70) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1364,6 +1403,28 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/scall.S +@CONFIG_MN10200_TRUE@mn10200_libeval_a_SOURCES = \ +@CONFIG_MN10200_TRUE@ mn10200/_exit.c \ +@CONFIG_MN10200_TRUE@ mn10200/access.c \ +@CONFIG_MN10200_TRUE@ mn10200/chmod.c \ +@CONFIG_MN10200_TRUE@ mn10200/close.c \ +@CONFIG_MN10200_TRUE@ mn10200/crt1.c \ +@CONFIG_MN10200_TRUE@ mn10200/fstat.c \ +@CONFIG_MN10200_TRUE@ mn10200/getpid.c \ +@CONFIG_MN10200_TRUE@ mn10200/isatty.c \ +@CONFIG_MN10200_TRUE@ mn10200/kill.c \ +@CONFIG_MN10200_TRUE@ mn10200/lseek.c \ +@CONFIG_MN10200_TRUE@ mn10200/open.c \ +@CONFIG_MN10200_TRUE@ mn10200/read.c \ +@CONFIG_MN10200_TRUE@ mn10200/sbrk.c \ +@CONFIG_MN10200_TRUE@ mn10200/stat.c \ +@CONFIG_MN10200_TRUE@ mn10200/time.c \ +@CONFIG_MN10200_TRUE@ mn10200/trap.S \ +@CONFIG_MN10200_TRUE@ mn10200/unlink.c \ +@CONFIG_MN10200_TRUE@ mn10200/utime.c \ +@CONFIG_MN10200_TRUE@ mn10200/write.c + +@CONFIG_MN10200_TRUE@mn10200_test_LDFLAGS = $(AM_LDFLAGS) -Wl,-T$(srcdir)/mn10200/eval.ld # Generic object files common to all targets. @CONFIG_MN10300_TRUE@mn10300_common_lib_sources = \ @@ -1586,19 +1647,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_71) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_75) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_75) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_79) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_72) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_76) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_76) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_80) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_73) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_77) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_77) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_81) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1611,7 +1672,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1633,7 +1694,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1678,8 +1739,6 @@ mips/Makefile: $(top_builddir)/config.status $(top_srcdir)/mips/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rs6000/Makefile: $(top_builddir)/config.status $(top_srcdir)/rs6000/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -mn10200/Makefile: $(top_builddir)/config.status $(top_srcdir)/mn10200/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ cr16/Makefile: $(top_builddir)/config.status $(top_srcdir)/cr16/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ cris/Makefile: $(top_builddir)/config.status $(top_srcdir)/cris/Makefile.in @@ -2160,6 +2219,14 @@ lm32/$(DEPDIR)/$(am__dirstamp): @: > lm32/$(DEPDIR)/$(am__dirstamp) lm32/crt0.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/$(DEPDIR)/$(am__dirstamp) +mn10200/$(am__dirstamp): + @$(MKDIR_P) mn10200 + @: > mn10200/$(am__dirstamp) +mn10200/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) mn10200/$(DEPDIR) + @: > mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/crt0.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) mn10300/$(am__dirstamp): @$(MKDIR_P) mn10300 @: > mn10300/$(am__dirstamp) @@ -2224,6 +2291,49 @@ lm32/libgloss.a: $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f lm32/libgloss.a $(AM_V_AR)$(lm32_libgloss_a_AR) lm32/libgloss.a $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_LIBADD) $(AM_V_at)$(RANLIB) lm32/libgloss.a +mn10200/_exit.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/access.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/chmod.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/close.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/crt1.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/fstat.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/getpid.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/isatty.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/kill.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/lseek.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/open.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/read.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/sbrk.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/stat.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/time.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/trap.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/unlink.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/utime.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) +mn10200/write.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) + +mn10200/libeval.a: $(mn10200_libeval_a_OBJECTS) $(mn10200_libeval_a_DEPENDENCIES) $(EXTRA_mn10200_libeval_a_DEPENDENCIES) mn10200/$(am__dirstamp) + $(AM_V_at)-rm -f mn10200/libeval.a + $(AM_V_AR)$(mn10200_libeval_a_AR) mn10200/libeval.a $(mn10200_libeval_a_OBJECTS) $(mn10200_libeval_a_LIBADD) + $(AM_V_at)$(RANLIB) mn10200/libeval.a mn10300/_exit.$(OBJEXT): mn10300/$(am__dirstamp) \ mn10300/$(DEPDIR)/$(am__dirstamp) mn10300/access.$(OBJEXT): mn10300/$(am__dirstamp) \ @@ -2788,6 +2898,12 @@ iq2000/test.$(OBJEXT): iq2000/$(am__dirstamp) \ iq2000/test$(EXEEXT): $(iq2000_test_OBJECTS) $(iq2000_test_DEPENDENCIES) $(EXTRA_iq2000_test_DEPENDENCIES) iq2000/$(am__dirstamp) @rm -f iq2000/test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(iq2000_test_OBJECTS) $(iq2000_test_LDADD) $(LIBS) +mn10200/test.$(OBJEXT): mn10200/$(am__dirstamp) \ + mn10200/$(DEPDIR)/$(am__dirstamp) + +mn10200/test$(EXEEXT): $(mn10200_test_OBJECTS) $(mn10200_test_DEPENDENCIES) $(EXTRA_mn10200_test_DEPENDENCIES) mn10200/$(am__dirstamp) + @rm -f mn10200/test$(EXEEXT) + $(AM_V_CCLD)$(mn10200_test_LINK) $(mn10200_test_OBJECTS) $(mn10200_test_LDADD) $(LIBS) mn10300/test.$(OBJEXT): mn10300/$(am__dirstamp) \ mn10300/$(DEPDIR)/$(am__dirstamp) @@ -2816,6 +2932,7 @@ mostlyclean-compile: -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) + -rm -f mn10200/*.$(OBJEXT) -rm -f mn10300/*.$(OBJEXT) -rm -f moxie/*.$(OBJEXT) -rm -f msp430/*.$(OBJEXT) @@ -2973,6 +3090,27 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/access.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/crt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/trap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10300/$(DEPDIR)/chmod.Po@am__quote@ @@ -5963,6 +6101,8 @@ distclean-generic: -rm -f libnosys/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(am__dirstamp) + -rm -f mn10200/$(DEPDIR)/$(am__dirstamp) + -rm -f mn10200/$(am__dirstamp) -rm -f mn10300/$(DEPDIR)/$(am__dirstamp) -rm -f mn10300/$(am__dirstamp) -rm -f moxie/$(DEPDIR)/$(am__dirstamp) @@ -5995,7 +6135,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -6138,7 +6278,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/config/mn10200.mt b/libgloss/config/mn10200.mt deleted file mode 100644 index cf565c1de9..0000000000 --- a/libgloss/config/mn10200.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Dummy target-specific Makefile fragment for MN10200. We can't -# use default.mt because it refers to generic source files whose -# names conflict with the MN10200-specific sources. diff --git a/libgloss/configure b/libgloss/configure index 7772003724..bf527c1ca0 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -657,6 +657,8 @@ CONFIG_MOXIE_FALSE CONFIG_MOXIE_TRUE CONFIG_MN10300_FALSE CONFIG_MN10300_TRUE +CONFIG_MN10200_FALSE +CONFIG_MN10200_TRUE CONFIG_LM32_FALSE CONFIG_LM32_TRUE CONFIG_LIBNOSYS_FALSE @@ -2852,10 +2854,7 @@ case "${target}" in host_makefile_frag=${srcdir}/config/ppc.mh ;; mn10200-*-*) - ac_config_files="$ac_config_files mn10200/Makefile" - - subdirs="$subdirs mn10200" - target_makefile_frag=${srcdir}/config/mn10200.mt + config_mn10200=true ;; mn10300-*-*) config_mn10300=true @@ -3094,6 +3093,14 @@ else CONFIG_LM32_FALSE= fi + if test x$config_mn10200 = xtrue; then + CONFIG_MN10200_TRUE= + CONFIG_MN10200_FALSE='#' +else + CONFIG_MN10200_TRUE='#' + CONFIG_MN10200_FALSE= +fi + if test x$config_mn10300 = xtrue; then CONFIG_MN10300_TRUE= CONFIG_MN10300_FALSE='#' @@ -5657,6 +5664,10 @@ if test -z "${CONFIG_LM32_TRUE}" && test -z "${CONFIG_LM32_FALSE}"; then as_fn_error $? "conditional \"CONFIG_LM32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_MN10200_TRUE}" && test -z "${CONFIG_MN10200_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_MN10200\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_MN10300_TRUE}" && test -z "${CONFIG_MN10300_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MN10300\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6339,7 +6350,6 @@ do "sparc/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/Makefile" ;; "mips/Makefile") CONFIG_FILES="$CONFIG_FILES mips/Makefile" ;; "rs6000/Makefile") CONFIG_FILES="$CONFIG_FILES rs6000/Makefile" ;; - "mn10200/Makefile") CONFIG_FILES="$CONFIG_FILES mn10200/Makefile" ;; "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 4637375c7b..58a5c35974 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -113,9 +113,7 @@ case "${target}" in host_makefile_frag=${srcdir}/config/ppc.mh ;; mn10200-*-*) - AC_CONFIG_FILES([mn10200/Makefile]) - subdirs="$subdirs mn10200" - target_makefile_frag=${srcdir}/config/mn10200.mt + config_mn10200=true ;; mn10300-*-*) config_mn10300=true @@ -243,7 +241,7 @@ dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 - mn10300 moxie msp430 + mn10200 mn10300 moxie msp430 nios2 riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) diff --git a/libgloss/mn10200/Makefile.in b/libgloss/mn10200/Makefile.in deleted file mode 100644 index 9db24f4447..0000000000 --- a/libgloss/mn10200/Makefile.in +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright (c) 1998 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -#AS = @AS@ -AS = `if [ -f ${objroot}/../gas/as.new ] ; \ - then echo ${objroot}/../gas/as.new ; \ - else echo as ; fi` - -AR = @AR@ - -#LD = @LD@ -LD = `if [ -f ${objroot}/../ld/ld.new ] ; \ - then echo ${objroot}/../ld/ld.new ; \ - else echo ld ; fi` - -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = crt0.o - -# Generic object files common to all targets. -GENOBJS = _exit.o access.o chmod.o close.o crt1.o \ - fstat.o getpid.o isatty.o \ - kill.o lseek.o open.o read.o \ - sbrk.o stat.o time.o trap.o unlink.o utime.o write.o - -# Object files specific to particular targets. -EVALOBJS = ${GENOBJS} - -CFLAGS = -g - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -SCRIPTS = eval sim -BSP = libeval.a - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# - -all: ${CRT0} test.o ${BSP} - -# -# here's where we build the board support packages for each target -# - -libeval.a: $(EVALOBJS) - ${AR} ${ARFLAGS} $@ $(EVALOBJS) - ${RANLIB} $@ - - -# compile a fully linked binary. The -Wl,-T*.ld is for the linker -# script. By using -Wl, the linker script is put on the proper place -# in the comand line for ld, and all the symbols will get fully -# resolved. - -test: $(CRT0) test.o - ${CC} $(CFLAGS_FOR_TARGET) -L${srcdir} -L${objdir} \ - test.o -o $@ $(NEWLIB_LDFLAGS) -Wl,-Teval.ld - @echo Done... - -doc: - -clean mostlyclean: - rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile a.out - -.PHONY: install info install-info clean-info -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_PROGRAM) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - @for bsp in ${BSP}; do\ - $(INSTALL_PROGRAM) $${bsp} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - @for script in ${SCRIPTS}; do\ - $(INSTALL_DATA) ${srcdir}/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \ - done - -info: -install-info: -clean-info: - -test.o: ${srcdir}/test.c - -# these are for the BSPs -${CRT0}: ${srcdir}/crt0.S - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/mn10200/Makefile.inc b/libgloss/mn10200/Makefile.inc new file mode 100644 index 0000000000..81d3680215 --- /dev/null +++ b/libgloss/mn10200/Makefile.inc @@ -0,0 +1,43 @@ +## Copyright (c) 1998 Cygnus Support +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += \ + %D%/eval.ld \ + %D%/sim.ld + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libeval.a +%C%_libeval_a_SOURCES = \ + %D%/_exit.c \ + %D%/access.c \ + %D%/chmod.c \ + %D%/close.c \ + %D%/crt1.c \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/read.c \ + %D%/sbrk.c \ + %D%/stat.c \ + %D%/time.c \ + %D%/trap.S \ + %D%/unlink.c \ + %D%/utime.c \ + %D%/write.c + +check_PROGRAMS += %D%/test +%C%_test_LDFLAGS = $(AM_LDFLAGS) -Wl,-T$(srcdir)/%D%/eval.ld From f4c8e1623bbc3045c8639dd7da16960efeb90fda Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 23:44:44 -0500 Subject: [PATCH 581/767] libgloss: merge mcore into top-level Makefile Avoid a recursive make to speed things up a bit. A mcore-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 322 ++++++++++++++++++++++++++---------- libgloss/configure | 64 +++++-- libgloss/configure.ac | 5 +- libgloss/mcore/Makefile.in | 144 ---------------- libgloss/mcore/Makefile.inc | 52 ++++++ libgloss/mcore/acinclude.m4 | 17 +- 7 files changed, 347 insertions(+), 260 deletions(-) delete mode 100644 libgloss/mcore/Makefile.in create mode 100644 libgloss/mcore/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index e48beaa21f..03797b3ffd 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -115,6 +115,9 @@ endif if CONFIG_LM32 include lm32/Makefile.inc endif +if CONFIG_MCORE +include mcore/Makefile.inc +endif if CONFIG_MN10200 include mn10200/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 85755f000f..d4657c8ddc 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -188,72 +188,83 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @CONFIG_LM32_TRUE@am__append_38 = lm32/crt0.o lm32/sim.ld @CONFIG_LM32_TRUE@am__append_39 = lm32/libgloss.a @CONFIG_LM32_TRUE@am__append_40 = lm32/crt0.S -@CONFIG_MN10200_TRUE@am__append_41 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_41 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.ld \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.specs + +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_42 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.ld \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.specs + +@CONFIG_MCORE_TRUE@am__append_43 = mcore/crt0.o +@CONFIG_MCORE_TRUE@am__append_44 = mcore/crt0.S +@CONFIG_MCORE_TRUE@am__append_45 = mcore/libsim.a mcore/libcmb.a +@CONFIG_MN10200_TRUE@am__append_46 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_42 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_43 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_44 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_45 = \ +@CONFIG_MN10200_TRUE@am__append_47 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_48 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_49 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_50 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_46 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_51 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_47 = \ +@CONFIG_MN10300_TRUE@am__append_52 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_48 = \ +@CONFIG_MN10300_TRUE@am__append_53 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_49 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_50 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_51 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_52 = \ +@CONFIG_MN10300_TRUE@am__append_54 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_55 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_56 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_57 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_53 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_54 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_58 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_59 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_55 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_56 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_60 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_61 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_57 = \ +@CONFIG_MSP430_TRUE@am__append_62 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_58 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_63 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NIOS2_TRUE@am__append_59 = \ +@CONFIG_NIOS2_TRUE@am__append_64 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_60 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_61 = \ +@CONFIG_NIOS2_TRUE@am__append_65 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_66 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_62 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_67 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_63 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_64 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_65 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_66 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_67 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_68 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_69 = \ +@CONFIG_V850_TRUE@am__append_68 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_69 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_70 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_71 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_72 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_73 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_74 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -262,27 +273,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_70 = \ +@CONFIG_XTENSA_TRUE@am__append_75 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_71 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_72 = \ +@CONFIG_XTENSA_TRUE@am__append_76 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_77 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_73 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_78 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_74 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_75 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_76 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_77 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_78 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_79 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_80 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_81 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_79 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_80 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_81 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_82 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_83 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_84 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_85 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_86 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -311,11 +322,10 @@ CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ nds32/Makefile m68k/Makefile pa/Makefile sparc_leon/Makefile \ sparc/Makefile mips/Makefile rs6000/Makefile cr16/Makefile \ cris/Makefile crx/Makefile fr30/Makefile ft32/Makefile \ - mcore/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ - visium/Makefile xc16x/Makefile xstormy16/Makefile \ - m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ - tic6x/Makefile or1k/Makefile pru/Makefile \ - sparc/libsys/Makefile + mep/Makefile microblaze/Makefile mt/Makefile visium/Makefile \ + xc16x/Makefile xstormy16/Makefile m32c/Makefile rl78/Makefile \ + rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ + pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -543,28 +553,50 @@ libobjs_a_LIBADD = @CONFIG_I960_TRUE@am__objects_7 = i960/crt0.$(OBJEXT) @CONFIG_IQ2000_TRUE@am__objects_8 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_9 = lm32/crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_10 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_11 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_10 = mcore/crt0.$(OBJEXT) +@CONFIG_MN10200_TRUE@am__objects_11 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_12 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_12 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_13 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_13 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_14 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_14 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_15 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_15 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_16 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ - $(am__objects_14) $(am__objects_15) + $(am__objects_14) $(am__objects_15) $(am__objects_16) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@ lm32/scall.$(OBJEXT) lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) +mcore_libcmb_a_AR = $(AR) $(ARFLAGS) +mcore_libcmb_a_LIBADD = +@CONFIG_MCORE_TRUE@am__objects_17 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/unlink.$(OBJEXT) +@CONFIG_MCORE_TRUE@am_mcore_libcmb_a_OBJECTS = mcore/open.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/close.$(OBJEXT) mcore/lseek.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/sbrk.$(OBJEXT) mcore/read.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/write.$(OBJEXT) mcore/print.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@ $(am__objects_17) +mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) +mcore_libsim_a_AR = $(AR) $(ARFLAGS) +mcore_libsim_a_LIBADD = +@CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_17) +mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @CONFIG_MN10200_TRUE@am_mn10200_libeval_a_OBJECTS = \ @@ -590,7 +622,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_16 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_18 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -609,12 +641,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_16) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_18) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_16) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_18) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -771,7 +803,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_17 = \ +@CONFIG_RISCV_TRUE@am__objects_19 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -804,7 +836,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_17) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_19) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -826,13 +858,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_18 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_19 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_20 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_21 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_18) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_19) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_20) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_21) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -917,7 +949,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(mcore_libcmb_a_SOURCES) \ + $(mcore_libsim_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ @@ -1014,7 +1047,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_66) +VPATH = @srcdir@ $(am__append_71) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1032,7 +1065,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_68) +CPPFLAGS = @CPPFLAGS@ $(am__append_73) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1054,7 +1087,6 @@ LTLIBOBJS = @LTLIBOBJS@ M68K_TARGET = @M68K_TARGET@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ -MCORE_BSP_PREFIX = @MCORE_BSP_PREFIX@ MIPS_BSP_LIST = @MIPS_BSP_LIST@ MIPS_CRT0 = @MIPS_CRT0@ MIPS_PART_SPECIFIC_DEFINES = @MIPS_PART_SPECIFIC_DEFINES@ @@ -1152,19 +1184,20 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ $(am__append_36) $(am__append_38) $(am__append_41) \ - $(am__append_45) $(am__append_46) $(am__append_47) \ - $(am__append_52) $(am__append_53) $(am__append_56) \ - $(am__append_59) $(am__append_61) $(am__append_63) \ - $(am__append_69) $(am__append_72) $(am__append_74) \ - $(am__append_78) + $(am__append_42) $(am__append_43) $(am__append_46) \ + $(am__append_50) $(am__append_51) $(am__append_52) \ + $(am__append_57) $(am__append_58) $(am__append_61) \ + $(am__append_64) $(am__append_66) $(am__append_68) \ + $(am__append_74) $(am__append_77) $(am__append_79) \ + $(am__append_83) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ $(am__append_31) $(am__append_33) $(am__append_37) \ - $(am__append_39) $(am__append_43) $(am__append_49) \ - $(am__append_50) $(am__append_55) $(am__append_58) \ - $(am__append_60) $(am__append_62) $(am__append_65) \ - $(am__append_71) $(am__append_73) + $(am__append_39) $(am__append_45) $(am__append_48) \ + $(am__append_54) $(am__append_55) $(am__append_60) \ + $(am__append_63) $(am__append_65) $(am__append_67) \ + $(am__append_70) $(am__append_76) $(am__append_78) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1182,9 +1215,9 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ - $(am__append_40) $(am__append_42) $(am__append_48) \ - $(am__append_54) $(am__append_57) $(am__append_64) \ - $(am__append_70) + $(am__append_40) $(am__append_44) $(am__append_47) \ + $(am__append_53) $(am__append_59) $(am__append_62) \ + $(am__append_69) $(am__append_75) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1403,6 +1436,33 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/scall.S +@CONFIG_MCORE_TRUE@mcore_common_lib_sources = \ +@CONFIG_MCORE_TRUE@ mcore/fstat.c \ +@CONFIG_MCORE_TRUE@ mcore/getpid.c \ +@CONFIG_MCORE_TRUE@ isatty.c \ +@CONFIG_MCORE_TRUE@ mcore/kill.c \ +@CONFIG_MCORE_TRUE@ mcore/raise.c \ +@CONFIG_MCORE_TRUE@ mcore/putnum.c \ +@CONFIG_MCORE_TRUE@ mcore/stat.c \ +@CONFIG_MCORE_TRUE@ mcore/unlink.c + +@CONFIG_MCORE_TRUE@mcore_libsim_a_SOURCES = \ +@CONFIG_MCORE_TRUE@ mcore/syscalls.S \ +@CONFIG_MCORE_TRUE@ $(mcore_common_lib_sources) + +@CONFIG_MCORE_TRUE@mcore_libcmb_a_SOURCES = \ +@CONFIG_MCORE_TRUE@ mcore/open.c \ +@CONFIG_MCORE_TRUE@ mcore/close.c \ +@CONFIG_MCORE_TRUE@ mcore/lseek.c \ +@CONFIG_MCORE_TRUE@ mcore/sbrk.c \ +@CONFIG_MCORE_TRUE@ mcore/read.c \ +@CONFIG_MCORE_TRUE@ mcore/write.c \ +@CONFIG_MCORE_TRUE@ mcore/print.c \ +@CONFIG_MCORE_TRUE@ mcore/cmb-exit.c \ +@CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.c \ +@CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.c \ +@CONFIG_MCORE_TRUE@ $(mcore_common_lib_sources) + @CONFIG_MN10200_TRUE@mn10200_libeval_a_SOURCES = \ @CONFIG_MN10200_TRUE@ mn10200/_exit.c \ @CONFIG_MN10200_TRUE@ mn10200/access.c \ @@ -1647,19 +1707,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_75) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_79) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_80) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_84) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_76) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_80) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_81) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_85) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_77) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_81) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_82) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_86) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1672,7 +1732,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1694,7 +1754,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1749,8 +1809,6 @@ fr30/Makefile: $(top_builddir)/config.status $(top_srcdir)/fr30/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ ft32/Makefile: $(top_builddir)/config.status $(top_srcdir)/ft32/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -mcore/Makefile: $(top_builddir)/config.status $(top_srcdir)/mcore/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ mep/Makefile: $(top_builddir)/config.status $(top_srcdir)/mep/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ microblaze/Makefile: $(top_builddir)/config.status $(top_srcdir)/microblaze/Makefile.in @@ -2219,6 +2277,14 @@ lm32/$(DEPDIR)/$(am__dirstamp): @: > lm32/$(DEPDIR)/$(am__dirstamp) lm32/crt0.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/$(DEPDIR)/$(am__dirstamp) +mcore/$(am__dirstamp): + @$(MKDIR_P) mcore + @: > mcore/$(am__dirstamp) +mcore/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) mcore/$(DEPDIR) + @: > mcore/$(DEPDIR)/$(am__dirstamp) +mcore/crt0.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) mn10200/$(am__dirstamp): @$(MKDIR_P) mn10200 @: > mn10200/$(am__dirstamp) @@ -2291,6 +2357,52 @@ lm32/libgloss.a: $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f lm32/libgloss.a $(AM_V_AR)$(lm32_libgloss_a_AR) lm32/libgloss.a $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_LIBADD) $(AM_V_at)$(RANLIB) lm32/libgloss.a +mcore/open.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/close.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/lseek.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/sbrk.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/read.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/write.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/print.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/cmb-exit.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/cmb-inbyte.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/cmb-outbyte.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/fstat.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/getpid.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/kill.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/raise.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/putnum.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/stat.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) +mcore/unlink.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) + +mcore/libcmb.a: $(mcore_libcmb_a_OBJECTS) $(mcore_libcmb_a_DEPENDENCIES) $(EXTRA_mcore_libcmb_a_DEPENDENCIES) mcore/$(am__dirstamp) + $(AM_V_at)-rm -f mcore/libcmb.a + $(AM_V_AR)$(mcore_libcmb_a_AR) mcore/libcmb.a $(mcore_libcmb_a_OBJECTS) $(mcore_libcmb_a_LIBADD) + $(AM_V_at)$(RANLIB) mcore/libcmb.a +mcore/syscalls.$(OBJEXT): mcore/$(am__dirstamp) \ + mcore/$(DEPDIR)/$(am__dirstamp) + +mcore/libsim.a: $(mcore_libsim_a_OBJECTS) $(mcore_libsim_a_DEPENDENCIES) $(EXTRA_mcore_libsim_a_DEPENDENCIES) mcore/$(am__dirstamp) + $(AM_V_at)-rm -f mcore/libsim.a + $(AM_V_AR)$(mcore_libsim_a_AR) mcore/libsim.a $(mcore_libsim_a_OBJECTS) $(mcore_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) mcore/libsim.a mn10200/_exit.$(OBJEXT): mn10200/$(am__dirstamp) \ mn10200/$(DEPDIR)/$(am__dirstamp) mn10200/access.$(OBJEXT): mn10200/$(am__dirstamp) \ @@ -2932,6 +3044,7 @@ mostlyclean-compile: -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) + -rm -f mcore/*.$(OBJEXT) -rm -f mn10200/*.$(OBJEXT) -rm -f mn10300/*.$(OBJEXT) -rm -f moxie/*.$(OBJEXT) @@ -3090,6 +3203,25 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/cmb-exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/cmb-inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/cmb-outbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/print.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/raise.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/chmod.Po@am__quote@ @@ -6101,6 +6233,8 @@ distclean-generic: -rm -f libnosys/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(am__dirstamp) + -rm -f mcore/$(DEPDIR)/$(am__dirstamp) + -rm -f mcore/$(am__dirstamp) -rm -f mn10200/$(DEPDIR)/$(am__dirstamp) -rm -f mn10200/$(am__dirstamp) -rm -f mn10300/$(DEPDIR)/$(am__dirstamp) @@ -6135,7 +6269,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -6278,7 +6412,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -6440,6 +6574,14 @@ maintainer-clean-local: maintainer-clean-multi @CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__BFIN_SDRAM @CONFIG_BFIN_TRUE@bfin/basiccrt60xc1.$(OBJEXT): bfin/basiccrt.S @CONFIG_BFIN_TRUE@ $(AM_V_CPPAS)$(CPPASCOMPILE) $(bfin_CPPFLAGS) -o $@ -c $< $(if $(findstring mcpu=,$(CFLAGS)),-mcpu=bf608-any,-mcpu=bf608-none) -D__ADSPBF60x_CORE1__ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@mcore/cmb.ld: mcore/elf-cmb.ld +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ $(AM_V_GEN)cp $< $@ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@mcore/cmb.specs: mcore/elf-cmb.specs +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ $(AM_V_GEN)cp $< $@ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@mcore/cmb.ld: mcore/pe-cmb.ld +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ $(AM_V_GEN)cp $< $@ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@mcore/cmb.specs: mcore/pe-cmb.specs +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ $(AM_V_GEN)cp $< $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/libgloss/configure b/libgloss/configure index bf527c1ca0..35ee57ceb4 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -607,7 +607,10 @@ MIPS_BSP_LIST MIPS_SCRIPT_LIST MIPS_PART_SPECIFIC_DEFINES MIPS_PART_SPECIFIC_OBJ -MCORE_BSP_PREFIX +MCORE_BUILD_PE_FALSE +MCORE_BUILD_PE_TRUE +MCORE_BUILD_ELF_FALSE +MCORE_BUILD_ELF_TRUE M68K_TARGET I386_CPPFLAGS ARM_OBJTYPE @@ -659,6 +662,8 @@ CONFIG_MN10300_FALSE CONFIG_MN10300_TRUE CONFIG_MN10200_FALSE CONFIG_MN10200_TRUE +CONFIG_MCORE_FALSE +CONFIG_MCORE_TRUE CONFIG_LM32_FALSE CONFIG_LM32_TRUE CONFIG_LIBNOSYS_FALSE @@ -2897,9 +2902,7 @@ case "${target}" in config_lm32=true ;; mcore-*-*) - ac_config_files="$ac_config_files mcore/Makefile" - - subdirs="$subdirs mcore" + config_mcore=true ;; mep-*-*) ac_config_files="$ac_config_files mep/Makefile" @@ -3093,6 +3096,14 @@ else CONFIG_LM32_FALSE= fi + if test x$config_mcore = xtrue; then + CONFIG_MCORE_TRUE= + CONFIG_MCORE_FALSE='#' +else + CONFIG_MCORE_TRUE='#' + CONFIG_MCORE_FALSE= +fi + if test x$config_mn10200 = xtrue; then CONFIG_MN10200_TRUE= CONFIG_MN10200_FALSE='#' @@ -5271,15 +5282,31 @@ $as_echo "$M68K_TARGET" >&6; } esac -MCORE_BSP_PREFIX= -case "${target}" in - mcore-*-elf) - MCORE_BSP_PREFIX=elf- - ;; - mcore-*-pe) - MCORE_BSP_PREFIX=pe- - ;; +MCORE_BUILD_ELF=false +MCORE_BUILD_PE=false +case ${target} in #( + mcore-*-elf) : + MCORE_BUILD_ELF=true ;; #( + mcore-*-pe) : + MCORE_BUILD_PE=true ;; #( + *) : + ;; esac + if $MCORE_BUILD_ELF; then + MCORE_BUILD_ELF_TRUE= + MCORE_BUILD_ELF_FALSE='#' +else + MCORE_BUILD_ELF_TRUE='#' + MCORE_BUILD_ELF_FALSE= +fi + + if $MCORE_BUILD_PE; then + MCORE_BUILD_PE_TRUE= + MCORE_BUILD_PE_FALSE='#' +else + MCORE_BUILD_PE_TRUE='#' + MCORE_BUILD_PE_FALSE= +fi MIPS_PART_SPECIFIC_OBJ= @@ -5664,6 +5691,10 @@ if test -z "${CONFIG_LM32_TRUE}" && test -z "${CONFIG_LM32_FALSE}"; then as_fn_error $? "conditional \"CONFIG_LM32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_MCORE_TRUE}" && test -z "${CONFIG_MCORE_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_MCORE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_MN10200_TRUE}" && test -z "${CONFIG_MN10200_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MN10200\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5712,6 +5743,14 @@ if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${MCORE_BUILD_ELF_TRUE}" && test -z "${MCORE_BUILD_ELF_FALSE}"; then + as_fn_error $? "conditional \"MCORE_BUILD_ELF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MCORE_BUILD_PE_TRUE}" && test -z "${MCORE_BUILD_PE_FALSE}"; then + as_fn_error $? "conditional \"MCORE_BUILD_PE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${MN10300_BUILD_LIBCYGMON_TRUE}" && test -z "${MN10300_BUILD_LIBCYGMON_FALSE}"; then as_fn_error $? "conditional \"MN10300_BUILD_LIBCYGMON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6355,7 +6394,6 @@ do "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; "fr30/Makefile") CONFIG_FILES="$CONFIG_FILES fr30/Makefile" ;; "ft32/Makefile") CONFIG_FILES="$CONFIG_FILES ft32/Makefile" ;; - "mcore/Makefile") CONFIG_FILES="$CONFIG_FILES mcore/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 58a5c35974..f148bce4aa 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -151,8 +151,7 @@ case "${target}" in config_lm32=true ;; mcore-*-*) - AC_CONFIG_FILES([mcore/Makefile]) - subdirs="$subdirs mcore" + config_mcore=true ;; mep-*-*) AC_CONFIG_FILES([mep/Makefile]) @@ -241,7 +240,7 @@ dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 - mn10200 mn10300 moxie msp430 + mcore mn10200 mn10300 moxie msp430 nios2 riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) diff --git a/libgloss/mcore/Makefile.in b/libgloss/mcore/Makefile.in deleted file mode 100644 index 883e5ed59f..0000000000 --- a/libgloss/mcore/Makefile.in +++ /dev/null @@ -1,144 +0,0 @@ -# -# - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -OBJS = fstat.o getpid.o isatty.o kill.o raise.o putnum.o stat.o unlink.o -CFLAGS = -g -SCRIPTS = - -# Here is all of the simulator stuff -SIM_SCRIPTS = -SIM_LDFLAGS = -SIM_BSP = libsim.a -SIM_CRT0 = crt0.o -SIM_OBJS = syscalls.o -SIM_TEST = sim-test -SIM_INSTALL = install-sim - -# Here is all of the picobug on cmb stuff -MON_PREFIX = @MCORE_BSP_PREFIX@ -MON_LDFLAGS = -MON_BSP = libcmb.a -MON_CRT0 = crt0.o -MON_OBJS = open.o close.o lseek.o sbrk.o read.o write.o print.o cmb-exit.o cmb-inbyte.o cmb-outbyte.o -MON_SCRIPTS = cmb.ld cmb.specs -MON_TEST = -MON_INSTALL = install-mon - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -all: ${SIM_CRT0} ${SIM_BSP} ${MON_BSP} - -# -# here's where we build the board support packages for each target -# -${SIM_BSP}: ${OBJS} ${SIM_OBJS} - ${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS} ${OBJS} - ${RANLIB} ${SIM_BSP} - -${MON_BSP}: ${OBJS} ${MON_OBJS} - ${AR} ${ARFLAGS} ${MON_BSP} ${MON_OBJS} ${OBJS} - ${RANLIB} ${MON_BSP} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: ${SIM_TEST} ${MON_TEST} - -sim-test: sim-test.x sim-test.dis - -sim-test.x: test.o ${SIM_CRT0} ${SIM_BSP} - ${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \ - ${SIM_CRT0} test.o \ - -o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP} - -sim-test.dis: sim-test.x - ${OBJDUMP} -d sim-test.x > sim-test.dis - - -# -# -# -.c.S: - ${CC} ${CFLAGS_FOR_TARGET} $(INCLUDES) $(CFLAGS) -c $< - -simulator.o: simulator.S -sim-crt0.o: sim-crt0.S -cmb-exit.o: cmb-exit.c -cmb-inbyte.o: cmb-inbyte.c -cmb-outbyte.o: cmb-outbyte.c - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(MON_BSP) - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${SIM_INSTALL} ${MON_INSTALL} - -install-mon: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${MON_CRT0} ${MON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${MON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${MON_PREFIX}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-sim: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/mcore/Makefile.inc b/libgloss/mcore/Makefile.inc new file mode 100644 index 0000000000..f0dec19902 --- /dev/null +++ b/libgloss/mcore/Makefile.inc @@ -0,0 +1,52 @@ +if MCORE_BUILD_ELF +multilibtool_DATA += \ + %D%/cmb.ld \ + %D%/cmb.specs +%D%/cmb.ld: %D%/elf-cmb.ld + $(AM_V_GEN)cp $< $@ +%D%/cmb.specs: %D%/elf-cmb.specs + $(AM_V_GEN)cp $< $@ +endif +if MCORE_BUILD_PE +multilibtool_DATA += \ + %D%/cmb.ld \ + %D%/cmb.specs +%D%/cmb.ld: %D%/pe-cmb.ld + $(AM_V_GEN)cp $< $@ +%D%/cmb.specs: %D%/pe-cmb.specs + $(AM_V_GEN)cp $< $@ +endif + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +%C%_common_lib_sources = \ + %D%/fstat.c \ + %D%/getpid.c \ + isatty.c \ + %D%/kill.c \ + %D%/raise.c \ + %D%/putnum.c \ + %D%/stat.c \ + %D%/unlink.c + +## Here is all of the simulator stuff +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/syscalls.S \ + $(%C%_common_lib_sources) + +## Here is all of the picobug on cmb stuff +multilibtool_LIBRARIES += %D%/libcmb.a +%C%_libcmb_a_SOURCES = \ + %D%/open.c \ + %D%/close.c \ + %D%/lseek.c \ + %D%/sbrk.c \ + %D%/read.c \ + %D%/write.c \ + %D%/print.c \ + %D%/cmb-exit.c \ + %D%/cmb-inbyte.c \ + %D%/cmb-outbyte.c \ + $(%C%_common_lib_sources) diff --git a/libgloss/mcore/acinclude.m4 b/libgloss/mcore/acinclude.m4 index 7115869f31..ed3fa2e412 100644 --- a/libgloss/mcore/acinclude.m4 +++ b/libgloss/mcore/acinclude.m4 @@ -1,10 +1,7 @@ -MCORE_BSP_PREFIX= -case "${target}" in - mcore-*-elf) - MCORE_BSP_PREFIX=elf- - ;; - mcore-*-pe) - MCORE_BSP_PREFIX=pe- - ;; -esac -AC_SUBST(MCORE_BSP_PREFIX) +MCORE_BUILD_ELF=false +MCORE_BUILD_PE=false +AS_CASE([${target}], + [mcore-*-elf], [MCORE_BUILD_ELF=true], + [mcore-*-pe], [MCORE_BUILD_PE=true]) +AM_CONDITIONAL([MCORE_BUILD_ELF], [$MCORE_BUILD_ELF]) +AM_CONDITIONAL([MCORE_BUILD_PE], [$MCORE_BUILD_PE]) From 695404d16f90e82a9ce2f68d89fa81b419285a89 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 23:59:00 -0500 Subject: [PATCH 582/767] libgloss: merge nds32 into top-level Makefile Avoid a recursive make to speed things up a bit. A nds32le-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 299 +++++++++++++++++++++++++++--------- libgloss/configure | 19 ++- libgloss/configure.ac | 5 +- libgloss/nds32/Makefile.in | 143 ----------------- libgloss/nds32/Makefile.inc | 50 ++++++ 6 files changed, 300 insertions(+), 219 deletions(-) delete mode 100644 libgloss/nds32/Makefile.in create mode 100644 libgloss/nds32/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 03797b3ffd..0029e663e7 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -130,6 +130,9 @@ endif if CONFIG_MSP430 include msp430/Makefile.inc endif +if CONFIG_NDS32 +include nds32/Makefile.inc +endif if CONFIG_NIOS2 include nios2/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index d4657c8ddc..3f26735ea2 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -246,25 +246,34 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @CONFIG_MSP430_TRUE@am__append_63 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NIOS2_TRUE@am__append_64 = \ +@CONFIG_NDS32_TRUE@am__append_64 = \ +@CONFIG_NDS32_TRUE@ nds32/crt0.o \ +@CONFIG_NDS32_TRUE@ nds32/crt1.o + +@CONFIG_NDS32_TRUE@am__append_65 = \ +@CONFIG_NDS32_TRUE@ nds32/crt0.S \ +@CONFIG_NDS32_TRUE@ nds32/crt1.S + +@CONFIG_NDS32_TRUE@am__append_66 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_67 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_65 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_66 = \ +@CONFIG_NIOS2_TRUE@am__append_68 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_69 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_67 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_70 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_68 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_69 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_70 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_71 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_72 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_73 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_74 = \ +@CONFIG_V850_TRUE@am__append_71 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_72 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_73 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_74 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_75 = wince/stub.exe +@CONFIG_XTENSA_TRUE@am__append_76 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_77 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -273,27 +282,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_75 = \ +@CONFIG_XTENSA_TRUE@am__append_78 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_76 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_77 = \ +@CONFIG_XTENSA_TRUE@am__append_79 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_80 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_78 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_81 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_79 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_80 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_81 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_82 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_83 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_84 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_85 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_86 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_82 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_83 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_84 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_85 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_86 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_87 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_88 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_89 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -319,13 +328,13 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ - nds32/Makefile m68k/Makefile pa/Makefile sparc_leon/Makefile \ - sparc/Makefile mips/Makefile rs6000/Makefile cr16/Makefile \ - cris/Makefile crx/Makefile fr30/Makefile ft32/Makefile \ - mep/Makefile microblaze/Makefile mt/Makefile visium/Makefile \ - xc16x/Makefile xstormy16/Makefile m32c/Makefile rl78/Makefile \ - rx/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ - pru/Makefile sparc/libsys/Makefile + m68k/Makefile pa/Makefile sparc_leon/Makefile sparc/Makefile \ + mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ + crx/Makefile fr30/Makefile ft32/Makefile mep/Makefile \ + microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ + xstormy16/Makefile m32c/Makefile rl78/Makefile rx/Makefile \ + spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -561,15 +570,18 @@ libobjs_a_LIBADD = @CONFIG_MOXIE_TRUE@am__objects_13 = moxie/crt0.$(OBJEXT) @CONFIG_MSP430_TRUE@am__objects_14 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_15 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_16 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_15 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_16 = v850/crt0.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_17 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ - $(am__objects_14) $(am__objects_15) $(am__objects_16) + $(am__objects_14) $(am__objects_15) $(am__objects_16) \ + $(am__objects_17) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -578,7 +590,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_17 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_18 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -590,12 +602,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_17) +@CONFIG_MCORE_TRUE@ $(am__objects_18) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_17) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_18) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -622,7 +634,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_18 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_19 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -641,12 +653,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_18) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_19) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_18) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_19) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -713,6 +725,34 @@ msp430_libsim_a_LIBADD = @CONFIG_MSP430_TRUE@ msp430/unlink.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/sbrk.$(OBJEXT) msp430_libsim_a_OBJECTS = $(am_msp430_libsim_a_OBJECTS) +nds32_libgloss_a_AR = $(AR) $(ARFLAGS) +nds32_libgloss_a_LIBADD = +@CONFIG_NDS32_TRUE@am_nds32_libgloss_a_OBJECTS = \ +@CONFIG_NDS32_TRUE@ nds32/_exit.$(OBJEXT) nds32/_open.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_close.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_read.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_write.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_lseek.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_unlink.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_getpid.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_kill.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_fstat.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_argvlen.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_argv.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_chdir.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_stat.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_chmod.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_utime.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_time.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_gettimeofday.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_times.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_link.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_rename.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_isatty.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_system.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/_sbrk.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@ nds32/syscall_error_handler.$(OBJEXT) +nds32_libgloss_a_OBJECTS = $(am_nds32_libgloss_a_OBJECTS) nios2_libnios2_a_AR = $(AR) $(ARFLAGS) nios2_libnios2_a_LIBADD = @CONFIG_NIOS2_TRUE@am_nios2_libnios2_a_OBJECTS = \ @@ -803,7 +843,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_19 = \ +@CONFIG_RISCV_TRUE@am__objects_20 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -836,7 +876,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_19) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_20) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -858,13 +898,13 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_20 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_21 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_21 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_22 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_20) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_21) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_21) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_22) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -954,10 +994,10 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ - $(msp430_libsim_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - $(riscv_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ - $(xtensa_libgloss_a_SOURCES) \ + $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ + $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ mn10200/test.c mn10300/test.c $(wince_stub_exe_SOURCES) @@ -1047,7 +1087,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_71) +VPATH = @srcdir@ $(am__append_74) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1065,7 +1105,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_73) +CPPFLAGS = @CPPFLAGS@ $(am__append_76) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1187,17 +1227,18 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_42) $(am__append_43) $(am__append_46) \ $(am__append_50) $(am__append_51) $(am__append_52) \ $(am__append_57) $(am__append_58) $(am__append_61) \ - $(am__append_64) $(am__append_66) $(am__append_68) \ - $(am__append_74) $(am__append_77) $(am__append_79) \ - $(am__append_83) + $(am__append_64) $(am__append_67) $(am__append_69) \ + $(am__append_71) $(am__append_77) $(am__append_80) \ + $(am__append_82) $(am__append_86) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ $(am__append_31) $(am__append_33) $(am__append_37) \ $(am__append_39) $(am__append_45) $(am__append_48) \ $(am__append_54) $(am__append_55) $(am__append_60) \ - $(am__append_63) $(am__append_65) $(am__append_67) \ - $(am__append_70) $(am__append_76) $(am__append_78) + $(am__append_63) $(am__append_66) $(am__append_68) \ + $(am__append_70) $(am__append_73) $(am__append_79) \ + $(am__append_81) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1217,7 +1258,7 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ $(am__append_40) $(am__append_44) $(am__append_47) \ $(am__append_53) $(am__append_59) $(am__append_62) \ - $(am__append_69) $(am__append_75) + $(am__append_65) $(am__append_72) $(am__append_78) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1575,6 +1616,33 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_MSP430_TRUE@ msp430/crt_run_fini_array.S \ @CONFIG_MSP430_TRUE@ msp430/crt_run_array.S +@CONFIG_NDS32_TRUE@nds32_libgloss_a_SOURCES = \ +@CONFIG_NDS32_TRUE@ nds32/_exit.S \ +@CONFIG_NDS32_TRUE@ nds32/_open.S \ +@CONFIG_NDS32_TRUE@ nds32/_close.S \ +@CONFIG_NDS32_TRUE@ nds32/_read.S \ +@CONFIG_NDS32_TRUE@ nds32/_write.S \ +@CONFIG_NDS32_TRUE@ nds32/_lseek.S \ +@CONFIG_NDS32_TRUE@ nds32/_unlink.S \ +@CONFIG_NDS32_TRUE@ nds32/_getpid.S \ +@CONFIG_NDS32_TRUE@ nds32/_kill.S \ +@CONFIG_NDS32_TRUE@ nds32/_fstat.S \ +@CONFIG_NDS32_TRUE@ nds32/_argvlen.S \ +@CONFIG_NDS32_TRUE@ nds32/_argv.S \ +@CONFIG_NDS32_TRUE@ nds32/_chdir.S \ +@CONFIG_NDS32_TRUE@ nds32/_stat.S \ +@CONFIG_NDS32_TRUE@ nds32/_chmod.S \ +@CONFIG_NDS32_TRUE@ nds32/_utime.S \ +@CONFIG_NDS32_TRUE@ nds32/_time.S \ +@CONFIG_NDS32_TRUE@ nds32/_gettimeofday.S \ +@CONFIG_NDS32_TRUE@ nds32/_times.S \ +@CONFIG_NDS32_TRUE@ nds32/_link.S \ +@CONFIG_NDS32_TRUE@ nds32/_rename.S \ +@CONFIG_NDS32_TRUE@ nds32/_isatty.S \ +@CONFIG_NDS32_TRUE@ nds32/_system.S \ +@CONFIG_NDS32_TRUE@ nds32/_sbrk.S \ +@CONFIG_NDS32_TRUE@ nds32/syscall_error_handler.S + @CONFIG_NIOS2_TRUE@nios2_libnios2_a_SOURCES = \ @CONFIG_NIOS2_TRUE@ nios2/crt0.S \ @CONFIG_NIOS2_TRUE@ nios2/io-close.c \ @@ -1707,19 +1775,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_80) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_84) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_83) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_87) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_81) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_85) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_84) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_88) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_82) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_86) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_85) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_89) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1732,7 +1800,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1754,7 +1822,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1785,8 +1853,6 @@ m32r/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32r/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ m68hc11/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68hc11/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -nds32/Makefile: $(top_builddir)/config.status $(top_srcdir)/nds32/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ m68k/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68k/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ pa/Makefile: $(top_builddir)/config.status $(top_srcdir)/pa/Makefile.in @@ -2323,6 +2389,16 @@ msp430/gcrt0.$(OBJEXT): msp430/$(am__dirstamp) \ msp430/$(DEPDIR)/$(am__dirstamp) msp430/crt0.$(OBJEXT): msp430/$(am__dirstamp) \ msp430/$(DEPDIR)/$(am__dirstamp) +nds32/$(am__dirstamp): + @$(MKDIR_P) nds32 + @: > nds32/$(am__dirstamp) +nds32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) nds32/$(DEPDIR) + @: > nds32/$(DEPDIR)/$(am__dirstamp) +nds32/crt0.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/crt1.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) v850/$(am__dirstamp): @$(MKDIR_P) v850 @: > v850/$(am__dirstamp) @@ -2591,6 +2667,61 @@ msp430/libsim.a: $(msp430_libsim_a_OBJECTS) $(msp430_libsim_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f msp430/libsim.a $(AM_V_AR)$(msp430_libsim_a_AR) msp430/libsim.a $(msp430_libsim_a_OBJECTS) $(msp430_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) msp430/libsim.a +nds32/_exit.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_open.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_close.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_read.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_write.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_lseek.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_unlink.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_getpid.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_kill.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_fstat.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_argvlen.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_argv.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_chdir.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_stat.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_chmod.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_utime.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_time.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_gettimeofday.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_times.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_link.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_rename.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_isatty.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_system.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/_sbrk.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) +nds32/syscall_error_handler.$(OBJEXT): nds32/$(am__dirstamp) \ + nds32/$(DEPDIR)/$(am__dirstamp) + +nds32/libgloss.a: $(nds32_libgloss_a_OBJECTS) $(nds32_libgloss_a_DEPENDENCIES) $(EXTRA_nds32_libgloss_a_DEPENDENCIES) nds32/$(am__dirstamp) + $(AM_V_at)-rm -f nds32/libgloss.a + $(AM_V_AR)$(nds32_libgloss_a_AR) nds32/libgloss.a $(nds32_libgloss_a_OBJECTS) $(nds32_libgloss_a_LIBADD) + $(AM_V_at)$(RANLIB) nds32/libgloss.a nios2/$(am__dirstamp): @$(MKDIR_P) nios2 @: > nios2/$(am__dirstamp) @@ -3049,6 +3180,7 @@ mostlyclean-compile: -rm -f mn10300/*.$(OBJEXT) -rm -f moxie/*.$(OBJEXT) -rm -f msp430/*.$(OBJEXT) + -rm -f nds32/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) @@ -3305,6 +3437,33 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@msp430/$(DEPDIR)/write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_argv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_argvlen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_chdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_link.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_rename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_system.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/_write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/crt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@nds32/$(DEPDIR)/syscall_error_handler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po@am__quote@ @@ -6243,6 +6402,8 @@ distclean-generic: -rm -f moxie/$(am__dirstamp) -rm -f msp430/$(DEPDIR)/$(am__dirstamp) -rm -f msp430/$(am__dirstamp) + -rm -f nds32/$(DEPDIR)/$(am__dirstamp) + -rm -f nds32/$(am__dirstamp) -rm -f nios2/$(DEPDIR)/$(am__dirstamp) -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) @@ -6269,7 +6430,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -6412,7 +6573,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 35ee57ceb4..193b549037 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -654,6 +654,8 @@ CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE CONFIG_NIOS2_FALSE CONFIG_NIOS2_TRUE +CONFIG_NDS32_FALSE +CONFIG_NDS32_TRUE CONFIG_MSP430_FALSE CONFIG_MSP430_TRUE CONFIG_MOXIE_FALSE @@ -2813,9 +2815,7 @@ case "${target}" in subdirs="$subdirs m68hc11" ;; nds32*-*-*) - ac_config_files="$ac_config_files nds32/Makefile" - - subdirs="$subdirs nds32" + config_nds32=true ;; fido-*-* | m68*-*-*) ac_config_files="$ac_config_files m68k/Makefile" @@ -3136,6 +3136,14 @@ else CONFIG_MSP430_FALSE= fi + if test x$config_nds32 = xtrue; then + CONFIG_NDS32_TRUE= + CONFIG_NDS32_FALSE='#' +else + CONFIG_NDS32_TRUE='#' + CONFIG_NDS32_FALSE= +fi + if test x$config_nios2 = xtrue; then CONFIG_NIOS2_TRUE= CONFIG_NIOS2_FALSE='#' @@ -5711,6 +5719,10 @@ if test -z "${CONFIG_MSP430_TRUE}" && test -z "${CONFIG_MSP430_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MSP430\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_NDS32_TRUE}" && test -z "${CONFIG_NDS32_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_NDS32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_NIOS2_TRUE}" && test -z "${CONFIG_NIOS2_FALSE}"; then as_fn_error $? "conditional \"CONFIG_NIOS2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6382,7 +6394,6 @@ do "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; "m32r/Makefile") CONFIG_FILES="$CONFIG_FILES m32r/Makefile" ;; "m68hc11/Makefile") CONFIG_FILES="$CONFIG_FILES m68hc11/Makefile" ;; - "nds32/Makefile") CONFIG_FILES="$CONFIG_FILES nds32/Makefile" ;; "m68k/Makefile") CONFIG_FILES="$CONFIG_FILES m68k/Makefile" ;; "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; "sparc_leon/Makefile") CONFIG_FILES="$CONFIG_FILES sparc_leon/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index f148bce4aa..d56d8950e9 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -74,8 +74,7 @@ case "${target}" in subdirs="$subdirs m68hc11" ;; nds32*-*-*) - AC_CONFIG_FILES([nds32/Makefile]) - subdirs="$subdirs nds32" + config_nds32=true ;; fido-*-* | m68*-*-*) AC_CONFIG_FILES([m68k/Makefile]) @@ -241,7 +240,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 mcore mn10200 mn10300 moxie msp430 - nios2 riscv v850 wince xtensa + nds32 nios2 riscv v850 wince xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/nds32/Makefile.in b/libgloss/nds32/Makefile.in deleted file mode 100644 index 98311e045e..0000000000 --- a/libgloss/nds32/Makefile.in +++ /dev/null @@ -1,143 +0,0 @@ -# Makefile for libgloss/nds32 -# Copyright (c) 1996, 1998 Cygnus Support. 2012 Andes Porting. -# All rights reserved. -# -# Redistribution and use in source and binary forms are permitted -# provided that the above copyright notice and this paragraph are -# duplicated in all such forms and that any documentation, -# and/or other materials related to such -# distribution and use acknowledge that the software was developed -# at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -host_alias = @host_alias@ -target_alias = @target_alias@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -TOP = ../.. -SRCTOP = ../.. - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -AR_FLAGS = qv -BISON = bison -MAKEINFO = makeinfo - -.NOEXPORT: -MAKEOVERRIDES = - -TARGETDOC = ../../targetdep.tex - -CRT0 = crt0.o -CRT1 = crt1.o - - - -SYSCALLS1 = _exit.o _open.o _close.o _read.o _write.o -SYSCALLS2 = _lseek.o _unlink.o _getpid.o _kill.o _fstat.o -SYSCALLS3 = _argvlen.o _argv.o _chdir.o _stat.o _chmod.o -SYSCALLS4 = _utime.o _time.o _gettimeofday.o _times.o _link.o -SYSCALLS5 = _rename.o _isatty.o _system.o _sbrk.o syscall_error_handler.o -SYSCALLS = $(SYSCALLS1) $(SYSCALLS2) $(SYSCALLS3) $(SYSCALLS4) $(SYSCALLS5) -GENERIC_LIBOBJS = - -LIBOBJS = $(SYSCALLS) $(GENERIC_LIBOBJS) -LIBGLOSS = libgloss.a - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all: $(CRT0) $(CRT1) $(LIBGLOSS) - -libgloss.a: $(LIBOBJS) - $(AR) $(ARFLAGS) $@ $(LIBOBJS) - $(RANLIB) $@ - -install: - mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(CRT1) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT1) - $(INSTALL_DATA) $(LIBGLOSS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LIBGLOSS) - - - - - - - -clean mostlyclean: - rm -f *~ *.[oa] - -distclean maintainer-clean realclean: clean - rm -f Makefile - -info doc: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status - -# to support SunOS VPATH -crt0.o: crt0.S -crt1.o: crt1.S -_exit.o: _exit.S -_open.o: _open.S -_close.o: _close.S -_read.o: _read.S -_write.o: _write.S -_lseek.o: _lseek.S -_unlink.o: _unlink.S -_getpid.o: _getpid.S -_kill.o: _kill.S -_fstat.o: _fstat.S -_argvlen.o: _argvlen.S -_argv.o: _argv.S -_chdir.o: _chdir.S -_stat.o: _stat.S -_chmod.o: _chmod.S -_utime.o: _utime.S -_time.o: _time.S -_gettimeofday.o: _gettimeofday.S -_times.o: _times.S -_link.o: _link.S -_rename.o: _rename.S -_isatty.o: _isatty.S -_system.o: _system.S -_sbrk.o: _sbrk.S -syscall_error_handler.o: syscall_error_handler.S diff --git a/libgloss/nds32/Makefile.inc b/libgloss/nds32/Makefile.inc new file mode 100644 index 0000000000..e14f954248 --- /dev/null +++ b/libgloss/nds32/Makefile.inc @@ -0,0 +1,50 @@ +## Makefile for libgloss/nds32 +## Copyright (c) 1996, 1998 Cygnus Support. 2012 Andes Porting. +## All rights reserved. +## +## Redistribution and use in source and binary forms are permitted +## provided that the above copyright notice and this paragraph are +## duplicated in all such forms and that any documentation, +## and/or other materials related to such +## distribution and use acknowledge that the software was developed +## at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to +## endorse or promote products derived from this software without +## specific prior written permission. +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +## IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +## WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/crt1.o +libobjs_a_SOURCES += \ + %D%/crt0.S \ + %D%/crt1.S + +multilibtool_LIBRARIES += %D%/libgloss.a +%C%_libgloss_a_SOURCES = \ + %D%/_exit.S \ + %D%/_open.S \ + %D%/_close.S \ + %D%/_read.S \ + %D%/_write.S \ + %D%/_lseek.S \ + %D%/_unlink.S \ + %D%/_getpid.S \ + %D%/_kill.S \ + %D%/_fstat.S \ + %D%/_argvlen.S \ + %D%/_argv.S \ + %D%/_chdir.S \ + %D%/_stat.S \ + %D%/_chmod.S \ + %D%/_utime.S \ + %D%/_time.S \ + %D%/_gettimeofday.S \ + %D%/_times.S \ + %D%/_link.S \ + %D%/_rename.S \ + %D%/_isatty.S \ + %D%/_system.S \ + %D%/_sbrk.S \ + %D%/syscall_error_handler.S From 3342c0ef8196d2c80e4cfc8332daf9468ef9154d Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 00:18:12 -0500 Subject: [PATCH 583/767] libgloss: merge xstormy16 into top-level Makefile Avoid a recursive make to speed things up a bit. A xstormy16-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 4 + libgloss/Makefile.in | 341 +++++++++++++++++++++++++------- libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/xstormy16/Makefile.in | 131 ------------ libgloss/xstormy16/Makefile.inc | 48 +++++ 6 files changed, 341 insertions(+), 207 deletions(-) delete mode 100644 libgloss/xstormy16/Makefile.in create mode 100644 libgloss/xstormy16/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 0029e663e7..b2605f1c28 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -17,6 +17,7 @@ tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = multilibtool_LIBRARIES = +multilibtool_PROGRAMS = includetooldir = $(tooldir)/include includetool_DATA = @@ -145,6 +146,9 @@ endif if CONFIG_WINCE include wince/Makefile.inc endif +if CONFIG_XSTORMY16 +include xstormy16/Makefile.inc +endif if CONFIG_XTENSA include xtensa/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 3f26735ea2..797bc189fd 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -93,6 +93,7 @@ target_triplet = @target@ bin_PROGRAMS = $(am__EXEEXT_1) check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ $(am__EXEEXT_5) +multilibtool_PROGRAMS = $(am__EXEEXT_6) @HAVE_DOC_TRUE@am__append_1 = doc/porting.texi @CONFIG_AARCH64_TRUE@am__append_2 = aarch64/librdimon.a @CONFIG_AARCH64_TRUE@am__append_3 = \ @@ -272,8 +273,23 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @CONFIG_V850_TRUE@am__append_73 = v850/libsim.a @CONFIG_WINCE_TRUE@am__append_74 = $(gdbdir) @CONFIG_WINCE_TRUE@am__append_75 = wince/stub.exe -@CONFIG_XTENSA_TRUE@am__append_76 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_77 = \ +@CONFIG_XSTORMY16_TRUE@am__append_76 = xstormy16/crt0.o \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex +@CONFIG_XSTORMY16_TRUE@am__append_77 = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s + +@CONFIG_XSTORMY16_TRUE@am__append_78 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a +@CONFIG_XSTORMY16_TRUE@am__append_79 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_80 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_81 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_82 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -282,27 +298,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_78 = \ +@CONFIG_XTENSA_TRUE@am__append_83 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_79 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_80 = \ +@CONFIG_XTENSA_TRUE@am__append_84 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_85 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_81 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_86 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_82 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_83 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_84 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_85 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_86 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_87 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_88 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_89 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_87 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_88 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_89 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_90 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_91 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_92 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_93 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_94 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -332,8 +348,8 @@ CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ crx/Makefile fr30/Makefile ft32/Makefile mep/Makefile \ microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - xstormy16/Makefile m32c/Makefile rl78/Makefile rx/Makefile \ - spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ + tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -364,7 +380,7 @@ am__uninstall_files_from_dir = { \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(infodir)" \ + "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(infodir)" \ "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" \ "$(DESTDIR)$(arm_cpu_initcpuinitdir)" \ "$(DESTDIR)$(includemachinetooldir)" \ @@ -573,7 +589,10 @@ libobjs_a_LIBADD = @CONFIG_NDS32_TRUE@am__objects_15 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) @CONFIG_V850_TRUE@am__objects_16 = v850/crt0.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_17 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@am__objects_17 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) +@CONFIG_XTENSA_TRUE@am__objects_18 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -581,7 +600,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ - $(am__objects_17) + $(am__objects_17) $(am__objects_18) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -590,7 +609,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_18 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_19 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -602,12 +621,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_18) +@CONFIG_MCORE_TRUE@ $(am__objects_19) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_18) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_19) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -634,7 +653,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_19 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_20 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -653,12 +672,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_19) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_20) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_19) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_20) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -843,7 +862,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_20 = \ +@CONFIG_RISCV_TRUE@am__objects_21 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -876,7 +895,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_20) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_21) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @@ -896,15 +915,36 @@ v850_libsim_a_LIBADD = @CONFIG_V850_TRUE@ v850/unlink.$(OBJEXT) v850/utime.$(OBJEXT) \ @CONFIG_V850_TRUE@ v850/wait.$(OBJEXT) v850/write.$(OBJEXT) v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) +xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) +xstormy16_libeva_app_a_LIBADD = +@CONFIG_XSTORMY16_TRUE@am_xstormy16_libeva_app_a_OBJECTS = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/close.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/fstat.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/getpid.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/kill.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/lseek.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/open.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/stat.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/unlink.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/isatty.$(OBJEXT) +xstormy16_libeva_app_a_OBJECTS = $(am_xstormy16_libeva_app_a_OBJECTS) +xstormy16_libsim_a_AR = $(AR) $(ARFLAGS) +xstormy16_libsim_a_LIBADD = +@CONFIG_XSTORMY16_TRUE@am_xstormy16_libsim_a_OBJECTS = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/syscalls.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/sim_malloc_start.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/isatty.$(OBJEXT) +xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_21 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_22 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_22 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_23 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_21) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_22) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_22) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_23) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -922,7 +962,8 @@ xtensa_libsys_qemu_a_OBJECTS = $(am_xtensa_libsys_qemu_a_OBJECTS) @CONFIG_IQ2000_TRUE@am__EXEEXT_3 = iq2000/test$(EXEEXT) @CONFIG_MN10200_TRUE@am__EXEEXT_4 = mn10200/test$(EXEEXT) @CONFIG_MN10300_TRUE@am__EXEEXT_5 = mn10300/test$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) +@CONFIG_XSTORMY16_TRUE@am__EXEEXT_6 = xstormy16/eva_stub.elf$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) $(multilibtool_PROGRAMS) bfin_sim_test_SOURCES = bfin/sim-test.c bfin_sim_test_OBJECTS = bfin/sim-test.$(OBJEXT) bfin_sim_test_LDADD = $(LDADD) @@ -943,6 +984,13 @@ mn10300_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ @CONFIG_WINCE_TRUE@ wince_stub_exe-wince-stub.$(OBJEXT) wince_stub_exe_OBJECTS = $(am_wince_stub_exe_OBJECTS) wince_stub_exe_DEPENDENCIES = +@CONFIG_XSTORMY16_TRUE@am_xstormy16_eva_stub_elf_OBJECTS = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/xstormy16_stub.$(OBJEXT) \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crt0_stub.$(OBJEXT) +xstormy16_eva_stub_elf_OBJECTS = $(am_xstormy16_eva_stub_elf_OBJECTS) +xstormy16_eva_stub_elf_LDADD = $(LDADD) +xstormy16_eva_stub_elf_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(xstormy16_eva_stub_elf_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -981,6 +1029,11 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = +CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) +AM_V_CCAS = $(am__v_CCAS_@AM_V@) +am__v_CCAS_ = $(am__v_CCAS_@AM_DEFAULT_V@) +am__v_CCAS_0 = @echo " CCAS " $@; +am__v_CCAS_1 = SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ @@ -997,10 +1050,12 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ + $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ - mn10200/test.c mn10300/test.c $(wince_stub_exe_SOURCES) + mn10200/test.c mn10300/test.c $(wince_stub_exe_SOURCES) \ + $(xstormy16_eva_stub_elf_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; @@ -1105,7 +1160,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_76) +CPPFLAGS = @CPPFLAGS@ $(am__append_81) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1213,7 +1268,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_80) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1228,8 +1283,8 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_50) $(am__append_51) $(am__append_52) \ $(am__append_57) $(am__append_58) $(am__append_61) \ $(am__append_64) $(am__append_67) $(am__append_69) \ - $(am__append_71) $(am__append_77) $(am__append_80) \ - $(am__append_82) $(am__append_86) + $(am__append_71) $(am__append_76) $(am__append_82) \ + $(am__append_85) $(am__append_87) $(am__append_91) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1237,8 +1292,8 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_39) $(am__append_45) $(am__append_48) \ $(am__append_54) $(am__append_55) $(am__append_60) \ $(am__append_63) $(am__append_66) $(am__append_68) \ - $(am__append_70) $(am__append_73) $(am__append_79) \ - $(am__append_81) + $(am__append_70) $(am__append_73) $(am__append_78) \ + $(am__append_84) $(am__append_86) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1258,7 +1313,8 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ $(am__append_40) $(am__append_44) $(am__append_47) \ $(am__append_53) $(am__append_59) $(am__append_62) \ - $(am__append_65) $(am__append_72) $(am__append_78) + $(am__append_65) $(am__append_72) $(am__append_77) \ + $(am__append_83) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1772,22 +1828,47 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_WINCE_TRUE@wince_stub_exe_SOURCES = wince-stub.c @CONFIG_WINCE_TRUE@wince_stub_exe_CPPFLAGS = $(AM_CPPFLAGS) -I$(gdbdir) @CONFIG_WINCE_TRUE@wince_stub_exe_LDADD = -lwinsock $(WINCE_STUB_LIBS) +@CONFIG_XSTORMY16_TRUE@xstormy16_libsim_a_SOURCES = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/syscalls.S \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/sim_malloc_start.s \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/isatty.c + +@CONFIG_XSTORMY16_TRUE@xstormy16_libeva_app_a_SOURCES = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/close.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/fstat.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/getpid.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/kill.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/lseek.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/open.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/stat.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/unlink.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/isatty.c + +@CONFIG_XSTORMY16_TRUE@xstormy16_eva_stub_elf_SOURCES = \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/xstormy16_stub.c \ +@CONFIG_XSTORMY16_TRUE@ xstormy16/crt0_stub.s + +@CONFIG_XSTORMY16_TRUE@xstormy16_eva_stub_elf_LDFLAGS = \ +@CONFIG_XSTORMY16_TRUE@ $(AM_LDFLAGS) \ +@CONFIG_XSTORMY16_TRUE@ -nostartfiles -T$(srcdir)/xstormy16/eva_stub.ld + @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_83) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_87) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_88) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_92) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_84) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_88) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_89) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_93) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_85) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_89) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_90) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_94) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1797,10 +1878,10 @@ all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: -.SUFFIXES: .S .c .dvi .o .obj .ps +.SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1822,7 +1903,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1885,8 +1966,6 @@ visium/Makefile: $(top_builddir)/config.status $(top_srcdir)/visium/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ xc16x/Makefile: $(top_builddir)/config.status $(top_srcdir)/xc16x/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -xstormy16/Makefile: $(top_builddir)/config.status $(top_srcdir)/xstormy16/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rl78/Makefile: $(top_builddir)/config.status $(top_srcdir)/rl78/Makefile.in @@ -2407,6 +2486,18 @@ v850/$(DEPDIR)/$(am__dirstamp): @: > v850/$(DEPDIR)/$(am__dirstamp) v850/crt0.$(OBJEXT): v850/$(am__dirstamp) \ v850/$(DEPDIR)/$(am__dirstamp) +xstormy16/$(am__dirstamp): + @$(MKDIR_P) xstormy16 + @: > xstormy16/$(am__dirstamp) +xstormy16/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) xstormy16/$(DEPDIR) + @: > xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/crt0.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/crti.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/crtn.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) xtensa/$(am__dirstamp): @$(MKDIR_P) xtensa @: > xtensa/$(am__dirstamp) @@ -3037,6 +3128,40 @@ v850/libsim.a: $(v850_libsim_a_OBJECTS) $(v850_libsim_a_DEPENDENCIES) $(EXTRA_v8 $(AM_V_at)-rm -f v850/libsim.a $(AM_V_AR)$(v850_libsim_a_AR) v850/libsim.a $(v850_libsim_a_OBJECTS) $(v850_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) v850/libsim.a +xstormy16/close.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/fstat.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/getpid.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/kill.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/lseek.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/open.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/stat.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/unlink.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/eva_app.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/isatty.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) + +xstormy16/libeva_app.a: $(xstormy16_libeva_app_a_OBJECTS) $(xstormy16_libeva_app_a_DEPENDENCIES) $(EXTRA_xstormy16_libeva_app_a_DEPENDENCIES) xstormy16/$(am__dirstamp) + $(AM_V_at)-rm -f xstormy16/libeva_app.a + $(AM_V_AR)$(xstormy16_libeva_app_a_AR) xstormy16/libeva_app.a $(xstormy16_libeva_app_a_OBJECTS) $(xstormy16_libeva_app_a_LIBADD) + $(AM_V_at)$(RANLIB) xstormy16/libeva_app.a +xstormy16/syscalls.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/sim_malloc_start.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) + +xstormy16/libsim.a: $(xstormy16_libsim_a_OBJECTS) $(xstormy16_libsim_a_DEPENDENCIES) $(EXTRA_xstormy16_libsim_a_DEPENDENCIES) xstormy16/$(am__dirstamp) + $(AM_V_at)-rm -f xstormy16/libsim.a + $(AM_V_AR)$(xstormy16_libsim_a_AR) xstormy16/libsim.a $(xstormy16_libsim_a_OBJECTS) $(xstormy16_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) xstormy16/libsim.a xtensa/xtensa_libgloss_a-sleep.$(OBJEXT): xtensa/$(am__dirstamp) \ xtensa/$(DEPDIR)/$(am__dirstamp) xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT): xtensa/$(am__dirstamp) \ @@ -3129,6 +3254,48 @@ clean-binPROGRAMS: clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) +install-multilibtoolPROGRAMS: $(multilibtool_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(multilibtool_PROGRAMS)'; test -n "$(multilibtooldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(multilibtooldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(multilibtooldir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(multilibtooldir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(multilibtooldir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-multilibtoolPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(multilibtool_PROGRAMS)'; test -n "$(multilibtooldir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(multilibtooldir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(multilibtooldir)" && rm -f $$files + +clean-multilibtoolPROGRAMS: + -test -z "$(multilibtool_PROGRAMS)" || rm -f $(multilibtool_PROGRAMS) bfin/sim-test.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) @@ -3160,6 +3327,14 @@ wince/$(am__dirstamp): wince/stub.exe$(EXEEXT): $(wince_stub_exe_OBJECTS) $(wince_stub_exe_DEPENDENCIES) $(EXTRA_wince_stub_exe_DEPENDENCIES) wince/$(am__dirstamp) @rm -f wince/stub.exe$(EXEEXT) $(AM_V_CCLD)$(LINK) $(wince_stub_exe_OBJECTS) $(wince_stub_exe_LDADD) $(LIBS) +xstormy16/xstormy16_stub.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) +xstormy16/crt0_stub.$(OBJEXT): xstormy16/$(am__dirstamp) \ + xstormy16/$(DEPDIR)/$(am__dirstamp) + +xstormy16/eva_stub.elf$(EXEEXT): $(xstormy16_eva_stub_elf_OBJECTS) $(xstormy16_eva_stub_elf_DEPENDENCIES) $(EXTRA_xstormy16_eva_stub_elf_DEPENDENCIES) xstormy16/$(am__dirstamp) + @rm -f xstormy16/eva_stub.elf$(EXEEXT) + $(AM_V_CCLD)$(xstormy16_eva_stub_elf_LINK) $(xstormy16_eva_stub_elf_OBJECTS) $(xstormy16_eva_stub_elf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -3184,6 +3359,7 @@ mostlyclean-compile: -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) + -rm -f xstormy16/*.$(OBJEXT) -rm -f xtensa/*.$(OBJEXT) -rm -f xtensa/boards/esp32/*.$(OBJEXT) -rm -f xtensa/boards/esp32s3/*.$(OBJEXT) @@ -3604,6 +3780,18 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/eva_app.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/xstormy16_stub.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt1-boards.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xtensa/$(DEPDIR)/crt1-sim.Po@am__quote@ @@ -5958,6 +6146,12 @@ wince_stub_exe-wince-stub.obj: wince-stub.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wince-stub.c' object='wince_stub_exe-wince-stub.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wince_stub_exe_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wince_stub_exe-wince-stub.obj `if test -f 'wince-stub.c'; then $(CYGPATH_W) 'wince-stub.c'; else $(CYGPATH_W) '$(srcdir)/wince-stub.c'; fi` + +.s.o: + $(AM_V_CCAS)$(CCASCOMPILE) -c -o $@ $< + +.s.obj: + $(AM_V_CCAS)$(CCASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` doc/$(am__dirstamp): @$(MKDIR_P) doc @: > doc/$(am__dirstamp) @@ -6337,7 +6531,7 @@ all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \ config.h all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ + for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -6411,6 +6605,8 @@ distclean-generic: -rm -f v850/$(DEPDIR)/$(am__dirstamp) -rm -f v850/$(am__dirstamp) -rm -f wince/$(am__dirstamp) + -rm -f xstormy16/$(DEPDIR)/$(am__dirstamp) + -rm -f xstormy16/$(am__dirstamp) -rm -f xtensa/$(DEPDIR)/$(am__dirstamp) -rm -f xtensa/$(am__dirstamp) -rm -f xtensa/boards/esp32/$(DEPDIR)/$(am__dirstamp) @@ -6426,11 +6622,12 @@ clean: clean-recursive clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ clean-generic clean-local clean-multilibtoolLIBRARIES \ - clean-noinstLIBRARIES mostlyclean-am + clean-multilibtoolPROGRAMS clean-noinstLIBRARIES \ + mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -6451,7 +6648,7 @@ install-data-am: install-aarch64_cpu_initcpuinitDATA \ install-arm_cpu_initcpuinitDATA install-includemachinetoolDATA \ install-includesystoolDATA install-includetoolDATA \ install-info-am install-multilibtoolDATA \ - install-multilibtoolLIBRARIES + install-multilibtoolLIBRARIES install-multilibtoolPROGRAMS install-dvi: install-dvi-recursive @@ -6573,7 +6770,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -6597,7 +6794,8 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ uninstall-includetoolDATA uninstall-info-am \ uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ - uninstall-pdf-am uninstall-ps-am + uninstall-multilibtoolPROGRAMS uninstall-pdf-am \ + uninstall-ps-am .MAKE: $(am__recursive_targets) all check-am install-am install-strip @@ -6605,10 +6803,11 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ am--refresh check check-am clean clean-aminfo \ clean-binPROGRAMS clean-checkPROGRAMS clean-cscope \ clean-generic clean-local clean-multilibtoolLIBRARIES \ - clean-noinstLIBRARIES cscope cscopelist-am ctags ctags-am \ - dist-info distclean distclean-compile distclean-generic \ - distclean-hdr distclean-local distclean-tags dvi dvi-am html \ - html-am html-local info info-am install \ + clean-multilibtoolPROGRAMS clean-noinstLIBRARIES cscope \ + cscopelist-am ctags ctags-am dist-info distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-local distclean-tags dvi dvi-am html html-am \ + html-local info info-am install \ install-aarch64_cpu_initcpuinitDATA install-am \ install-arm_cpu_initcpuinitDATA install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ @@ -6617,19 +6816,21 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ install-includesystoolDATA install-includetoolDATA \ install-info install-info-am install-man \ install-multilibtoolDATA install-multilibtoolLIBRARIES \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-local mostlyclean \ - mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ - mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ + install-multilibtoolPROGRAMS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-aminfo \ + mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ + pdf-am ps ps-am tags tags-am uninstall \ uninstall-aarch64_cpu_initcpuinitDATA uninstall-am \ uninstall-arm_cpu_initcpuinitDATA uninstall-binPROGRAMS \ uninstall-dvi-am uninstall-html-am \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ uninstall-includetoolDATA uninstall-info-am \ uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ - uninstall-pdf-am uninstall-ps-am + uninstall-multilibtoolPROGRAMS uninstall-pdf-am \ + uninstall-ps-am .PRECIOUS: Makefile @@ -6743,6 +6944,8 @@ maintainer-clean-local: maintainer-clean-multi @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ $(AM_V_GEN)cp $< $@ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@mcore/cmb.specs: mcore/pe-cmb.specs @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ $(AM_V_GEN)cp $< $@ +@CONFIG_XSTORMY16_TRUE@xstormy16/eva_stub.hex: xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@ $(AM_V_GEN)$(OBJCOPY) -O ihex $< $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/libgloss/configure b/libgloss/configure index 193b549037..c96473d731 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -646,6 +646,8 @@ CFLAGS CC CONFIG_XTENSA_FALSE CONFIG_XTENSA_TRUE +CONFIG_XSTORMY16_FALSE +CONFIG_XSTORMY16_TRUE CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE CONFIG_V850_FALSE @@ -2938,9 +2940,7 @@ case "${target}" in target_makefile_frag=${srcdir}/config/xc16x.mt ;; xstormy16-*-*) - ac_config_files="$ac_config_files xstormy16/Makefile" - - subdirs="$subdirs xstormy16" + config_xstormy16=true ;; xtensa-*-*) config_xtensa=true @@ -3176,6 +3176,14 @@ else CONFIG_WINCE_FALSE= fi + if test x$config_xstormy16 = xtrue; then + CONFIG_XSTORMY16_TRUE= + CONFIG_XSTORMY16_FALSE='#' +else + CONFIG_XSTORMY16_TRUE='#' + CONFIG_XSTORMY16_FALSE= +fi + if test x$config_xtensa = xtrue; then CONFIG_XTENSA_TRUE= CONFIG_XTENSA_FALSE='#' @@ -5739,6 +5747,10 @@ if test -z "${CONFIG_WINCE_TRUE}" && test -z "${CONFIG_WINCE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_WINCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_XSTORMY16_TRUE}" && test -z "${CONFIG_XSTORMY16_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_XSTORMY16\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_XTENSA_TRUE}" && test -z "${CONFIG_XTENSA_FALSE}"; then as_fn_error $? "conditional \"CONFIG_XTENSA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6410,7 +6422,6 @@ do "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; "visium/Makefile") CONFIG_FILES="$CONFIG_FILES visium/Makefile" ;; "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; - "xstormy16/Makefile") CONFIG_FILES="$CONFIG_FILES xstormy16/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "rl78/Makefile") CONFIG_FILES="$CONFIG_FILES rl78/Makefile" ;; "rx/Makefile") CONFIG_FILES="$CONFIG_FILES rx/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index d56d8950e9..d0770a4219 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -181,8 +181,7 @@ case "${target}" in target_makefile_frag=${srcdir}/config/xc16x.mt ;; xstormy16-*-*) - AC_CONFIG_FILES([xstormy16/Makefile]) - subdirs="$subdirs xstormy16" + config_xstormy16=true ;; xtensa-*-*) config_xtensa=true @@ -240,7 +239,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 mcore mn10200 mn10300 moxie msp430 - nds32 nios2 riscv v850 wince xtensa + nds32 nios2 riscv v850 wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/xstormy16/Makefile.in b/libgloss/xstormy16/Makefile.in deleted file mode 100644 index 49d8a8deac..0000000000 --- a/libgloss/xstormy16/Makefile.in +++ /dev/null @@ -1,131 +0,0 @@ -# -# - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -# Yuk. -OBJCOPY = $(subst ranlib,objcopy,$(RANLIB)) - -OBJS = isatty.o -CFLAGS = -g -O2 -ASFLAGS = --gdwarf2 -SCRIPTS = -CRT = crt0.o crti.o crtn.o - -# Here is all of the simulator stuff -SIM_SCRIPTS = sim_high.ld sim_rom.ld -SIM_LDFLAGS = -SIM_BSP = libsim.a -SIM_OBJS = syscalls.o sim_malloc_start.o - -# Here is stuff for building apps for GDB on the EVA board -EVA_APP_BSP = libeva_app.a -EVA_APP_OBJS = close.o fstat.o getpid.o kill.o lseek.o open.o \ - stat.o unlink.o eva_app.o -EVA_APP_SCRIPTS = eva_app.ld - -# Stub stuff -EVA_STUB_HEX = eva_stub.hex -EVA_STUB = eva_stub.elf -EVA_STUB_OBJS = xstormy16_stub.o crt0_stub.o - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -# all: ${MON_CRT0} ${MON_BSP} -all: ${CRT} ${SIM_BSP} ${EVA_APP_BSP} ${EVA_STUB_HEX} - -# -# here's where we build the board support packages for each target -# -${SIM_BSP}: ${OBJS} ${SIM_OBJS} - ${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS} ${OBJS} - ${RANLIB} ${SIM_BSP} - -${EVA_APP_BSP}: ${OBJS} ${EVA_APP_OBJS} - ${AR} ${ARFLAGS} ${EVA_APP_BSP} ${EVA_APP_OBJS} ${OBJS} - ${RANLIB} ${EVA_APP_BSP} - -${EVA_STUB_HEX}: ${EVA_STUB} - ${OBJCOPY} -O ihex $< $@ - -${EVA_STUB}: ${EVA_STUB_OBJS} ${srcdir}/eva_stub.ld - ${CC} -g -Os -nostartfiles -T${srcdir}/eva_stub.ld ${EVA_STUB_OBJS} -o $@ - - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: - true - -# -# -# -.c.S: - ${CC} ${CFLAGS_FOR_TARGET} -c $< - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x *.hex $(SIM_BSP) $(EVA_APP_BSP) $(EVA_STUB) - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${SIM_BSP} ${CRT} ${EVA_APP_BSP} ${EVA_STUB_HEX} ${EVA_STUB} ; do\ - ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - @for script in ${SCRIPTS} ${SIM_SCRIPTS} ${EVA_APP_SCRIPTS}; do\ - ${INSTALL_DATA} ${srcdir}/$${script} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$${script}; \ - done - - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/xstormy16/Makefile.inc b/libgloss/xstormy16/Makefile.inc new file mode 100644 index 0000000000..346fee3791 --- /dev/null +++ b/libgloss/xstormy16/Makefile.inc @@ -0,0 +1,48 @@ +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/crti.o \ + %D%/crtn.o +libobjs_a_SOURCES += \ + %D%/crt0.s \ + %D%/crti.s \ + %D%/crtn.s + +## Here is all of the simulator stuff +multilibtool_DATA += \ + %D%/sim_high.ld \ + %D%/sim_rom.ld +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/syscalls.S \ + %D%/sim_malloc_start.s \ + %D%/isatty.c + +## Here is stuff for building apps for GDB on the EVA board +multilibtool_DATA += %D%/eva_app.ld +multilibtool_LIBRARIES += %D%/libeva_app.a +%C%_libeva_app_a_SOURCES = \ + %D%/close.c \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/kill.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/stat.c \ + %D%/unlink.c \ + %D%/eva_app.c \ + %D%/isatty.c + +## Stub stuff +multilibtool_PROGRAMS += %D%/eva_stub.elf +%C%_eva_stub_elf_SOURCES = \ + %D%/xstormy16_stub.c \ + %D%/crt0_stub.s +%C%_eva_stub_elf_LDFLAGS = \ + $(AM_LDFLAGS) \ + -nostartfiles -T$(srcdir)/%D%/eva_stub.ld + +multilibtool_DATA += \ + %D%/eva_stub.hex +%D%/eva_stub.hex: %D%/eva_stub.elf + $(AM_V_GEN)$(OBJCOPY) -O ihex $< $@ +CLEANFILES += %D%/eva_stub.hex From 1ed68b884c8c2c353322cae65d8faf7ce4bceb48 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 00:38:25 -0500 Subject: [PATCH 584/767] libgloss: merge rx into top-level Makefile Avoid a recursive make to speed things up a bit. A rx-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 261 +++++++++++++++++++++++++++++---------- libgloss/configure | 19 ++- libgloss/configure.ac | 5 +- libgloss/rx/Makefile.in | 164 ------------------------ libgloss/rx/Makefile.inc | 54 ++++++++ 6 files changed, 270 insertions(+), 236 deletions(-) delete mode 100644 libgloss/rx/Makefile.in create mode 100644 libgloss/rx/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index b2605f1c28..3b1591e571 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -140,6 +140,9 @@ endif if CONFIG_RISCV include riscv/Makefile.inc endif +if CONFIG_RX +include rx/Makefile.inc +endif if CONFIG_V850 include v850/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 797bc189fd..d85c7c0068 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -268,28 +268,36 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_RISCV_TRUE@am__append_70 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_V850_TRUE@am__append_71 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_72 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_73 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_74 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_75 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_76 = xstormy16/crt0.o \ +@CONFIG_RX_TRUE@am__append_71 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o +@CONFIG_RX_TRUE@am__append_72 = \ +@CONFIG_RX_TRUE@ rx/gcrt0.S \ +@CONFIG_RX_TRUE@ rx/crt0.S \ +@CONFIG_RX_TRUE@ rx/crtn.S + +@CONFIG_RX_TRUE@am__append_73 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_74 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_75 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_76 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_77 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_78 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_79 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_77 = \ +@CONFIG_XSTORMY16_TRUE@am__append_80 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_78 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_81 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_79 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_80 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_81 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_82 = \ +@CONFIG_XSTORMY16_TRUE@am__append_82 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_83 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_84 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_85 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -298,27 +306,27 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_83 = \ +@CONFIG_XTENSA_TRUE@am__append_86 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_84 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_85 = \ +@CONFIG_XTENSA_TRUE@am__append_87 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_88 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_86 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_89 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_87 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_88 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_89 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_90 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_91 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_92 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_93 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_94 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_90 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_91 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_92 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_93 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_94 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_95 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_96 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -348,9 +356,8 @@ CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ crx/Makefile fr30/Makefile ft32/Makefile mep/Makefile \ microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - m32c/Makefile rl78/Makefile rx/Makefile spu/Makefile \ - tic6x/Makefile or1k/Makefile pru/Makefile \ - sparc/libsys/Makefile + m32c/Makefile rl78/Makefile spu/Makefile tic6x/Makefile \ + or1k/Makefile pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -588,11 +595,13 @@ libobjs_a_LIBADD = @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) @CONFIG_NDS32_TRUE@am__objects_15 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_16 = v850/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_17 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_16 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_17 = v850/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_18 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_18 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_19 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -600,7 +609,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ - $(am__objects_17) $(am__objects_18) + $(am__objects_17) $(am__objects_18) $(am__objects_19) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -609,7 +618,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_19 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_20 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -621,12 +630,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_19) +@CONFIG_MCORE_TRUE@ $(am__objects_20) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_19) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_20) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -653,7 +662,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_20 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_21 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -672,12 +681,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_20) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_21) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_20) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_21) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -862,7 +871,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_21 = \ +@CONFIG_RISCV_TRUE@am__objects_22 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -895,8 +904,25 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_21) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_22) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) +rx_libsim_a_AR = $(AR) $(ARFLAGS) +rx_libsim_a_LIBADD = +@CONFIG_RX_TRUE@am_rx_libsim_a_OBJECTS = rx/sbrk.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/heaptop.$(OBJEXT) rx/exit.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/open.$(OBJEXT) rx/close.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/read.$(OBJEXT) rx/write.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/lseek.$(OBJEXT) rx/unlink.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/getpid.$(OBJEXT) rx/kill.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/fstat.$(OBJEXT) rx/argvlen.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/argv.$(OBJEXT) rx/chdir.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/stat.$(OBJEXT) rx/chmod.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/utime.$(OBJEXT) rx/time.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/gettimeofday.$(OBJEXT) rx/times.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/link.$(OBJEXT) rx/isatty.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/abort.$(OBJEXT) rx/mcount.$(OBJEXT) \ +@CONFIG_RX_TRUE@ rx/sigprocmask.$(OBJEXT) rx/sleep.$(OBJEXT) +rx_libsim_a_OBJECTS = $(am_rx_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @CONFIG_V850_TRUE@am_v850_libsim_a_OBJECTS = v850/_exit.$(OBJEXT) \ @@ -938,13 +964,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_22 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_23 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_23 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_24 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_22) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_23) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_23) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_24) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1050,7 +1076,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ + $(rx_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ @@ -1142,7 +1169,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_74) +VPATH = @srcdir@ $(am__append_77) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1160,7 +1187,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_81) +CPPFLAGS = @CPPFLAGS@ $(am__append_84) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1268,7 +1295,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_80) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_83) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1283,8 +1310,9 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_50) $(am__append_51) $(am__append_52) \ $(am__append_57) $(am__append_58) $(am__append_61) \ $(am__append_64) $(am__append_67) $(am__append_69) \ - $(am__append_71) $(am__append_76) $(am__append_82) \ - $(am__append_85) $(am__append_87) $(am__append_91) + $(am__append_71) $(am__append_74) $(am__append_79) \ + $(am__append_85) $(am__append_88) $(am__append_90) \ + $(am__append_94) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1292,8 +1320,8 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_39) $(am__append_45) $(am__append_48) \ $(am__append_54) $(am__append_55) $(am__append_60) \ $(am__append_63) $(am__append_66) $(am__append_68) \ - $(am__append_70) $(am__append_73) $(am__append_78) \ - $(am__append_84) $(am__append_86) + $(am__append_70) $(am__append_73) $(am__append_76) \ + $(am__append_81) $(am__append_87) $(am__append_89) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1313,8 +1341,8 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ $(am__append_40) $(am__append_44) $(am__append_47) \ $(am__append_53) $(am__append_59) $(am__append_62) \ - $(am__append_65) $(am__append_72) $(am__append_77) \ - $(am__append_83) + $(am__append_65) $(am__append_72) $(am__append_75) \ + $(am__append_80) $(am__append_86) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1793,6 +1821,35 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_RISCV_TRUE@includemachinetooldir = $(tooldir)/include/machine @CONFIG_RISCV_TRUE@includemachinetool_DATA = riscv/machine/syscall.h +@CONFIG_RX_TRUE@rx_libsim_a_SOURCES = \ +@CONFIG_RX_TRUE@ rx/sbrk.c \ +@CONFIG_RX_TRUE@ rx/heaptop.S \ +@CONFIG_RX_TRUE@ rx/exit.S \ +@CONFIG_RX_TRUE@ rx/open.S \ +@CONFIG_RX_TRUE@ rx/close.S \ +@CONFIG_RX_TRUE@ rx/read.S \ +@CONFIG_RX_TRUE@ rx/write.S \ +@CONFIG_RX_TRUE@ rx/lseek.S \ +@CONFIG_RX_TRUE@ rx/unlink.S \ +@CONFIG_RX_TRUE@ rx/getpid.S \ +@CONFIG_RX_TRUE@ rx/kill.S \ +@CONFIG_RX_TRUE@ rx/fstat.S \ +@CONFIG_RX_TRUE@ rx/argvlen.S \ +@CONFIG_RX_TRUE@ rx/argv.S \ +@CONFIG_RX_TRUE@ rx/chdir.S \ +@CONFIG_RX_TRUE@ rx/stat.S \ +@CONFIG_RX_TRUE@ rx/chmod.S \ +@CONFIG_RX_TRUE@ rx/utime.S \ +@CONFIG_RX_TRUE@ rx/time.S \ +@CONFIG_RX_TRUE@ rx/gettimeofday.S \ +@CONFIG_RX_TRUE@ rx/times.S \ +@CONFIG_RX_TRUE@ rx/link.S \ +@CONFIG_RX_TRUE@ rx/isatty.S \ +@CONFIG_RX_TRUE@ rx/abort.S \ +@CONFIG_RX_TRUE@ rx/mcount.c \ +@CONFIG_RX_TRUE@ rx/sigprocmask.S \ +@CONFIG_RX_TRUE@ rx/sleep.S + @CONFIG_V850_TRUE@v850_libsim_a_SOURCES = \ @CONFIG_V850_TRUE@ v850/_exit.c \ @CONFIG_V850_TRUE@ v850/access.c \ @@ -1856,19 +1913,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_88) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_92) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_91) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_95) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_89) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_93) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_92) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_96) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_90) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_94) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_93) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_97) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1881,7 +1938,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1903,7 +1960,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -1970,8 +2027,6 @@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rl78/Makefile: $(top_builddir)/config.status $(top_srcdir)/rl78/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -rx/Makefile: $(top_builddir)/config.status $(top_srcdir)/rx/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ tic6x/Makefile: $(top_builddir)/config.status $(top_srcdir)/tic6x/Makefile.in @@ -2478,6 +2533,15 @@ nds32/crt0.$(OBJEXT): nds32/$(am__dirstamp) \ nds32/$(DEPDIR)/$(am__dirstamp) nds32/crt1.$(OBJEXT): nds32/$(am__dirstamp) \ nds32/$(DEPDIR)/$(am__dirstamp) +rx/$(am__dirstamp): + @$(MKDIR_P) rx + @: > rx/$(am__dirstamp) +rx/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) rx/$(DEPDIR) + @: > rx/$(DEPDIR)/$(am__dirstamp) +rx/gcrt0.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/crt0.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/crtn.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) v850/$(am__dirstamp): @$(MKDIR_P) v850 @: > v850/$(am__dirstamp) @@ -3065,6 +3129,40 @@ riscv/libsim.a: $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f riscv/libsim.a $(AM_V_AR)$(riscv_libsim_a_AR) riscv/libsim.a $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) riscv/libsim.a +rx/sbrk.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/heaptop.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/exit.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/open.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/close.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/read.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/write.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/lseek.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/unlink.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/getpid.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/kill.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/fstat.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/argvlen.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/argv.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/chdir.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/stat.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/chmod.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/utime.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/time.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/gettimeofday.$(OBJEXT): rx/$(am__dirstamp) \ + rx/$(DEPDIR)/$(am__dirstamp) +rx/times.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/link.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/isatty.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/abort.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/mcount.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +rx/sigprocmask.$(OBJEXT): rx/$(am__dirstamp) \ + rx/$(DEPDIR)/$(am__dirstamp) +rx/sleep.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) + +rx/libsim.a: $(rx_libsim_a_OBJECTS) $(rx_libsim_a_DEPENDENCIES) $(EXTRA_rx_libsim_a_DEPENDENCIES) rx/$(am__dirstamp) + $(AM_V_at)-rm -f rx/libsim.a + $(AM_V_AR)$(rx_libsim_a_AR) rx/libsim.a $(rx_libsim_a_OBJECTS) $(rx_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) rx/libsim.a v850/_exit.$(OBJEXT): v850/$(am__dirstamp) \ v850/$(DEPDIR)/$(am__dirstamp) v850/access.$(OBJEXT): v850/$(am__dirstamp) \ @@ -3358,6 +3456,7 @@ mostlyclean-compile: -rm -f nds32/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) + -rm -f rx/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) -rm -f xstormy16/*.$(OBJEXT) -rm -f xtensa/*.$(OBJEXT) @@ -3750,6 +3849,36 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/abort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/argv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/argvlen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/chdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/crtn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/gcrt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/heaptop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/link.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/mcount.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/sigprocmask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/sleep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/chmod.Po@am__quote@ @@ -6602,6 +6731,8 @@ distclean-generic: -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) + -rm -f rx/$(DEPDIR)/$(am__dirstamp) + -rm -f rx/$(am__dirstamp) -rm -f v850/$(DEPDIR)/$(am__dirstamp) -rm -f v850/$(am__dirstamp) -rm -f wince/$(am__dirstamp) @@ -6627,7 +6758,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -6770,7 +6901,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index c96473d731..3838b12498 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -652,6 +652,8 @@ CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE CONFIG_V850_FALSE CONFIG_V850_TRUE +CONFIG_RX_FALSE +CONFIG_RX_TRUE CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE CONFIG_NIOS2_FALSE @@ -2960,9 +2962,7 @@ case "${target}" in subdirs="$subdirs rl78" ;; rx*-*-elf) - ac_config_files="$ac_config_files rx/Makefile" - - subdirs="$subdirs rx" + config_rx=true ;; arm*-*-elf | arm*-*-coff | arm*-*-*) config_arm=true @@ -3160,6 +3160,14 @@ else CONFIG_RISCV_FALSE= fi + if test x$config_rx = xtrue; then + CONFIG_RX_TRUE= + CONFIG_RX_FALSE='#' +else + CONFIG_RX_TRUE='#' + CONFIG_RX_FALSE= +fi + if test x$config_v850 = xtrue; then CONFIG_V850_TRUE= CONFIG_V850_FALSE='#' @@ -5739,6 +5747,10 @@ if test -z "${CONFIG_RISCV_TRUE}" && test -z "${CONFIG_RISCV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RISCV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_RX_TRUE}" && test -z "${CONFIG_RX_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_RX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_V850_TRUE}" && test -z "${CONFIG_V850_FALSE}"; then as_fn_error $? "conditional \"CONFIG_V850\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6424,7 +6436,6 @@ do "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "rl78/Makefile") CONFIG_FILES="$CONFIG_FILES rl78/Makefile" ;; - "rx/Makefile") CONFIG_FILES="$CONFIG_FILES rx/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index d0770a4219..39b516a45f 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -199,8 +199,7 @@ case "${target}" in subdirs="$subdirs rl78" ;; rx*-*-elf) - AC_CONFIG_FILES([rx/Makefile]) - subdirs="$subdirs rx" + config_rx=true ;; arm*-*-elf | arm*-*-coff | arm*-*-*) config_arm=true @@ -239,7 +238,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 mcore mn10200 mn10300 moxie msp430 - nds32 nios2 riscv v850 wince xstormy16 xtensa + nds32 nios2 riscv rx v850 wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/rx/Makefile.in b/libgloss/rx/Makefile.in deleted file mode 100644 index d730451bcd..0000000000 --- a/libgloss/rx/Makefile.in +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright (c) 2008, 2009 Red Hat Inc -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/rx. - -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -SCRIPTS = $(srcdir)/rx.ld $(srcdir)/rx-sim.ld -CRT = gcrt0.o crt0.o crtn.o -SIM_BSP = libsim.a -LIBNOSYS = ../libnosys/libnosys.a -SIM_OBJS = \ - sbrk.o \ - heaptop.o \ - exit.o \ - open.o \ - close.o \ - read.o \ - write.o \ - lseek.o \ - unlink.o \ - getpid.o \ - kill.o \ - fstat.o \ - argvlen.o \ - argv.o \ - chdir.o \ - stat.o \ - chmod.o \ - utime.o \ - time.o \ - gettimeofday.o \ - times.o \ - link.o \ - isatty.o \ - abort.o \ - mcount.o \ - sigprocmask.o \ - sleep.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - - -# Override .S.o rule to pass assembler debugging flags -.S.o: - $(CC) -Wa,-gdwarf2 -Wa,-I$(srcdir) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - -all: $(CRT) $(SIM_BSP) copy_scripts_to_objdir - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -copy_scripts_to_objdir: $(SCRIPTS) - cp $(SCRIPTS) $(objdir) - -# Dependencies - -SDEPS = $(srcdir)/rxsys.h $(srcdir)/../syscall.h - -abort.o : $(SDEPS) -argv.o : $(SDEPS) -argvlen.o : $(SDEPS) -chdir.o : $(SDEPS) -chmod.o : $(SDEPS) -close.o : $(SDEPS) -exit.o : $(SDEPS) -fstat.o : $(SDEPS) -getpid.o : $(SDEPS) -gettimeofday.o : $(SDEPS) -gcrt0.o: gcrt0.S crt0.S -heaptop.o : $(SDEPS) -kill.o : $(SDEPS) -link.o : $(SDEPS) -lseek.o : $(SDEPS) -mcount.o : $(SDEPS) -open.o : $(SDEPS) -read.o : $(SDEPS) -sigprocmask.o : $(SDEPS) -sleep.o : $(SDEPS) -stat.o : $(SDEPS) -time.o : $(SDEPS) -times.o : $(SDEPS) -unlink.o : $(SDEPS) -utime.o : $(SDEPS) -write.o : $(SDEPS) - -install: $(CRT) $(SIM_BSP) $(SCRIPTS) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - for c in $(CRT) $(SIM_BSP); do \ - $(INSTALL_DATA) $$c $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$$c ;\ - done - for c in $(SCRIPTS); do \ - b=`basename $$c`; \ - $(INSTALL_DATA) $$c $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$$b ;\ - done - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/rx/Makefile.inc b/libgloss/rx/Makefile.inc new file mode 100644 index 0000000000..3ca121fd75 --- /dev/null +++ b/libgloss/rx/Makefile.inc @@ -0,0 +1,54 @@ +## Copyright (c) 2008, 2009 Red Hat Inc +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += \ + %D%/rx.ld \ + %D%/rx-sim.ld + +multilibtool_DATA += \ + %D%/gcrt0.o \ + %D%/crt0.o \ + %D%/crtn.o +libobjs_a_SOURCES += \ + %D%/gcrt0.S \ + %D%/crt0.S \ + %D%/crtn.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/sbrk.c \ + %D%/heaptop.S \ + %D%/exit.S \ + %D%/open.S \ + %D%/close.S \ + %D%/read.S \ + %D%/write.S \ + %D%/lseek.S \ + %D%/unlink.S \ + %D%/getpid.S \ + %D%/kill.S \ + %D%/fstat.S \ + %D%/argvlen.S \ + %D%/argv.S \ + %D%/chdir.S \ + %D%/stat.S \ + %D%/chmod.S \ + %D%/utime.S \ + %D%/time.S \ + %D%/gettimeofday.S \ + %D%/times.S \ + %D%/link.S \ + %D%/isatty.S \ + %D%/abort.S \ + %D%/mcount.c \ + %D%/sigprocmask.S \ + %D%/sleep.S From 4172a3c618bb8dc2311a63ecb5c56bcc21a30f22 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 00:43:25 -0500 Subject: [PATCH 585/767] libgloss: merge rl78 into top-level Makefile Avoid a recursive make to speed things up a bit. A rl78-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 288 ++++++++++++++++++++++++++++--------- libgloss/configure | 19 ++- libgloss/configure.ac | 5 +- libgloss/rl78/Makefile.in | 161 --------------------- libgloss/rl78/Makefile.inc | 52 +++++++ 6 files changed, 292 insertions(+), 236 deletions(-) delete mode 100644 libgloss/rl78/Makefile.in create mode 100644 libgloss/rl78/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 3b1591e571..30ca10527f 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -140,6 +140,9 @@ endif if CONFIG_RISCV include riscv/Makefile.inc endif +if CONFIG_RL78 +include rl78/Makefile.inc +endif if CONFIG_RX include rx/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index d85c7c0068..7fdfe7f496 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -268,36 +268,44 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_RISCV_TRUE@am__append_70 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RX_TRUE@am__append_71 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_71 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o +@CONFIG_RL78_TRUE@am__append_72 = \ +@CONFIG_RL78_TRUE@ rl78/gcrt0.S \ +@CONFIG_RL78_TRUE@ rl78/crt0.S \ +@CONFIG_RL78_TRUE@ rl78/crtn.S + +@CONFIG_RL78_TRUE@am__append_73 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_74 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_72 = \ +@CONFIG_RX_TRUE@am__append_75 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_73 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_74 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_75 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_76 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_77 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_78 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_79 = xstormy16/crt0.o \ +@CONFIG_RX_TRUE@am__append_76 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_77 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_78 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_79 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_80 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_81 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_82 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_80 = \ +@CONFIG_XSTORMY16_TRUE@am__append_83 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_81 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_84 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_82 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_83 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_84 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_85 = \ +@CONFIG_XSTORMY16_TRUE@am__append_85 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_86 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_87 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_88 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -306,27 +314,27 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_86 = \ +@CONFIG_XTENSA_TRUE@am__append_89 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_87 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_88 = \ +@CONFIG_XTENSA_TRUE@am__append_90 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_91 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_89 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_92 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_90 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_91 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_92 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_93 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_94 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_95 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_96 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_93 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_94 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_95 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_96 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -356,8 +364,8 @@ CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ crx/Makefile fr30/Makefile ft32/Makefile mep/Makefile \ microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - m32c/Makefile rl78/Makefile spu/Makefile tic6x/Makefile \ - or1k/Makefile pru/Makefile sparc/libsys/Makefile + m32c/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ + pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -595,13 +603,15 @@ libobjs_a_LIBADD = @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) @CONFIG_NDS32_TRUE@am__objects_15 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_16 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RL78_TRUE@am__objects_16 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) +@CONFIG_RX_TRUE@am__objects_17 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_17 = v850/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_18 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_18 = v850/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_19 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_19 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_20 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -609,7 +619,8 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ - $(am__objects_17) $(am__objects_18) $(am__objects_19) + $(am__objects_17) $(am__objects_18) $(am__objects_19) \ + $(am__objects_20) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -618,7 +629,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_20 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_21 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -630,12 +641,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_20) +@CONFIG_MCORE_TRUE@ $(am__objects_21) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_20) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_21) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -662,7 +673,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_21 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_22 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -681,12 +692,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_21) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_22) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_21) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_22) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -871,7 +882,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_22 = \ +@CONFIG_RISCV_TRUE@am__objects_23 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -904,8 +915,25 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_22) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_23) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) +rl78_libsim_a_AR = $(AR) $(ARFLAGS) +rl78_libsim_a_LIBADD = +@CONFIG_RL78_TRUE@am_rl78_libsim_a_OBJECTS = rl78/sbrk.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/exit.$(OBJEXT) rl78/open.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/close.$(OBJEXT) rl78/read.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/write.$(OBJEXT) rl78/swrite.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/lseek.$(OBJEXT) rl78/unlink.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/getpid.$(OBJEXT) rl78/kill.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/fstat.$(OBJEXT) rl78/argvlen.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/argv.$(OBJEXT) rl78/chdir.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/stat.$(OBJEXT) rl78/chmod.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/utime.$(OBJEXT) rl78/time.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/gettimeofday.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/times.$(OBJEXT) rl78/link.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/isatty.$(OBJEXT) rl78/abort.$(OBJEXT) \ +@CONFIG_RL78_TRUE@ rl78/mcount.$(OBJEXT) +rl78_libsim_a_OBJECTS = $(am_rl78_libsim_a_OBJECTS) rx_libsim_a_AR = $(AR) $(ARFLAGS) rx_libsim_a_LIBADD = @CONFIG_RX_TRUE@am_rx_libsim_a_OBJECTS = rx/sbrk.$(OBJEXT) \ @@ -964,13 +992,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_23 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_24 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_24 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_25 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_23) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_24) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_24) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_25) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1076,8 +1104,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(rx_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ - $(xstormy16_libeva_app_a_SOURCES) \ + $(rl78_libsim_a_SOURCES) $(rx_libsim_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ @@ -1169,7 +1197,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_77) +VPATH = @srcdir@ $(am__append_80) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1187,7 +1215,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_84) +CPPFLAGS = @CPPFLAGS@ $(am__append_87) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1295,7 +1323,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_83) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_86) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1310,9 +1338,9 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_50) $(am__append_51) $(am__append_52) \ $(am__append_57) $(am__append_58) $(am__append_61) \ $(am__append_64) $(am__append_67) $(am__append_69) \ - $(am__append_71) $(am__append_74) $(am__append_79) \ - $(am__append_85) $(am__append_88) $(am__append_90) \ - $(am__append_94) + $(am__append_71) $(am__append_74) $(am__append_77) \ + $(am__append_82) $(am__append_88) $(am__append_91) \ + $(am__append_93) $(am__append_97) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1321,7 +1349,8 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_54) $(am__append_55) $(am__append_60) \ $(am__append_63) $(am__append_66) $(am__append_68) \ $(am__append_70) $(am__append_73) $(am__append_76) \ - $(am__append_81) $(am__append_87) $(am__append_89) + $(am__append_79) $(am__append_84) $(am__append_90) \ + $(am__append_92) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1342,7 +1371,7 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_40) $(am__append_44) $(am__append_47) \ $(am__append_53) $(am__append_59) $(am__append_62) \ $(am__append_65) $(am__append_72) $(am__append_75) \ - $(am__append_80) $(am__append_86) + $(am__append_78) $(am__append_83) $(am__append_89) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1821,6 +1850,33 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_RISCV_TRUE@includemachinetooldir = $(tooldir)/include/machine @CONFIG_RISCV_TRUE@includemachinetool_DATA = riscv/machine/syscall.h +@CONFIG_RL78_TRUE@rl78_libsim_a_SOURCES = \ +@CONFIG_RL78_TRUE@ rl78/sbrk.c \ +@CONFIG_RL78_TRUE@ rl78/exit.S \ +@CONFIG_RL78_TRUE@ rl78/open.S \ +@CONFIG_RL78_TRUE@ rl78/close.S \ +@CONFIG_RL78_TRUE@ rl78/read.S \ +@CONFIG_RL78_TRUE@ rl78/write.c \ +@CONFIG_RL78_TRUE@ rl78/swrite.S \ +@CONFIG_RL78_TRUE@ rl78/lseek.S \ +@CONFIG_RL78_TRUE@ rl78/unlink.S \ +@CONFIG_RL78_TRUE@ rl78/getpid.S \ +@CONFIG_RL78_TRUE@ rl78/kill.S \ +@CONFIG_RL78_TRUE@ rl78/fstat.S \ +@CONFIG_RL78_TRUE@ rl78/argvlen.S \ +@CONFIG_RL78_TRUE@ rl78/argv.S \ +@CONFIG_RL78_TRUE@ rl78/chdir.S \ +@CONFIG_RL78_TRUE@ rl78/stat.S \ +@CONFIG_RL78_TRUE@ rl78/chmod.S \ +@CONFIG_RL78_TRUE@ rl78/utime.S \ +@CONFIG_RL78_TRUE@ rl78/time.S \ +@CONFIG_RL78_TRUE@ rl78/gettimeofday.S \ +@CONFIG_RL78_TRUE@ rl78/times.S \ +@CONFIG_RL78_TRUE@ rl78/link.S \ +@CONFIG_RL78_TRUE@ rl78/isatty.S \ +@CONFIG_RL78_TRUE@ rl78/abort.S \ +@CONFIG_RL78_TRUE@ rl78/mcount.c + @CONFIG_RX_TRUE@rx_libsim_a_SOURCES = \ @CONFIG_RX_TRUE@ rx/sbrk.c \ @CONFIG_RX_TRUE@ rx/heaptop.S \ @@ -1913,19 +1969,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_91) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_95) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_94) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_98) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_92) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_96) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_95) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_99) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_93) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_97) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_96) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_100) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1938,7 +1994,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -1960,7 +2016,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2025,8 +2081,6 @@ xc16x/Makefile: $(top_builddir)/config.status $(top_srcdir)/xc16x/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -rl78/Makefile: $(top_builddir)/config.status $(top_srcdir)/rl78/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ tic6x/Makefile: $(top_builddir)/config.status $(top_srcdir)/tic6x/Makefile.in @@ -2533,6 +2587,18 @@ nds32/crt0.$(OBJEXT): nds32/$(am__dirstamp) \ nds32/$(DEPDIR)/$(am__dirstamp) nds32/crt1.$(OBJEXT): nds32/$(am__dirstamp) \ nds32/$(DEPDIR)/$(am__dirstamp) +rl78/$(am__dirstamp): + @$(MKDIR_P) rl78 + @: > rl78/$(am__dirstamp) +rl78/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) rl78/$(DEPDIR) + @: > rl78/$(DEPDIR)/$(am__dirstamp) +rl78/gcrt0.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/crt0.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/crtn.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) rx/$(am__dirstamp): @$(MKDIR_P) rx @: > rx/$(am__dirstamp) @@ -3129,6 +3195,61 @@ riscv/libsim.a: $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f riscv/libsim.a $(AM_V_AR)$(riscv_libsim_a_AR) riscv/libsim.a $(riscv_libsim_a_OBJECTS) $(riscv_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) riscv/libsim.a +rl78/sbrk.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/exit.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/open.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/close.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/read.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/write.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/swrite.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/lseek.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/unlink.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/getpid.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/kill.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/fstat.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/argvlen.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/argv.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/chdir.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/stat.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/chmod.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/utime.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/time.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/gettimeofday.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/times.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/link.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/isatty.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/abort.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) +rl78/mcount.$(OBJEXT): rl78/$(am__dirstamp) \ + rl78/$(DEPDIR)/$(am__dirstamp) + +rl78/libsim.a: $(rl78_libsim_a_OBJECTS) $(rl78_libsim_a_DEPENDENCIES) $(EXTRA_rl78_libsim_a_DEPENDENCIES) rl78/$(am__dirstamp) + $(AM_V_at)-rm -f rl78/libsim.a + $(AM_V_AR)$(rl78_libsim_a_AR) rl78/libsim.a $(rl78_libsim_a_OBJECTS) $(rl78_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) rl78/libsim.a rx/sbrk.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) rx/heaptop.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) rx/exit.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) @@ -3456,6 +3577,7 @@ mostlyclean-compile: -rm -f nds32/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) + -rm -f rl78/*.$(OBJEXT) -rm -f rx/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) -rm -f xstormy16/*.$(OBJEXT) @@ -3849,6 +3971,34 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libsim_a-sys_write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/abort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/argv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/argvlen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/chdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/crtn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/gcrt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/link.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/mcount.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/swrite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@rl78/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/abort.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/argv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/argvlen.Po@am__quote@ @@ -6731,6 +6881,8 @@ distclean-generic: -rm -f nios2/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) + -rm -f rl78/$(DEPDIR)/$(am__dirstamp) + -rm -f rl78/$(am__dirstamp) -rm -f rx/$(DEPDIR)/$(am__dirstamp) -rm -f rx/$(am__dirstamp) -rm -f v850/$(DEPDIR)/$(am__dirstamp) @@ -6758,7 +6910,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -6901,7 +7053,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 3838b12498..245558edf8 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -654,6 +654,8 @@ CONFIG_V850_FALSE CONFIG_V850_TRUE CONFIG_RX_FALSE CONFIG_RX_TRUE +CONFIG_RL78_FALSE +CONFIG_RL78_TRUE CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE CONFIG_NIOS2_FALSE @@ -2957,9 +2959,7 @@ case "${target}" in config_libnosys=false ;; rl78*-*-elf) - ac_config_files="$ac_config_files rl78/Makefile" - - subdirs="$subdirs rl78" + config_rl78=true ;; rx*-*-elf) config_rx=true @@ -3160,6 +3160,14 @@ else CONFIG_RISCV_FALSE= fi + if test x$config_rl78 = xtrue; then + CONFIG_RL78_TRUE= + CONFIG_RL78_FALSE='#' +else + CONFIG_RL78_TRUE='#' + CONFIG_RL78_FALSE= +fi + if test x$config_rx = xtrue; then CONFIG_RX_TRUE= CONFIG_RX_FALSE='#' @@ -5747,6 +5755,10 @@ if test -z "${CONFIG_RISCV_TRUE}" && test -z "${CONFIG_RISCV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RISCV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_RL78_TRUE}" && test -z "${CONFIG_RL78_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_RL78\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_RX_TRUE}" && test -z "${CONFIG_RX_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6435,7 +6447,6 @@ do "visium/Makefile") CONFIG_FILES="$CONFIG_FILES visium/Makefile" ;; "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; - "rl78/Makefile") CONFIG_FILES="$CONFIG_FILES rl78/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 39b516a45f..0b2cb8d6ef 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -195,8 +195,7 @@ case "${target}" in config_libnosys=false ;; rl78*-*-elf) - AC_CONFIG_FILES([rl78/Makefile]) - subdirs="$subdirs rl78" + config_rl78=true ;; rx*-*-elf) config_rx=true @@ -238,7 +237,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 mcore mn10200 mn10300 moxie msp430 - nds32 nios2 riscv rx v850 wince xstormy16 xtensa + nds32 nios2 riscv rl78 rx v850 wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/rl78/Makefile.in b/libgloss/rl78/Makefile.in deleted file mode 100644 index eb220f61ae..0000000000 --- a/libgloss/rl78/Makefile.in +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2008, 2009, 2011 Red Hat Inc -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/rl78. - -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -SCRIPTS = $(srcdir)/rl78.ld $(srcdir)/rl78-sim.ld -CRT = gcrt0.o crt0.o crtn.o -SIM_BSP = libsim.a -LIBNOSYS = ../libnosys/libnosys.a -SIM_OBJS = \ - sbrk.o \ - exit.o \ - open.o \ - close.o \ - read.o \ - write.o \ - swrite.o \ - lseek.o \ - unlink.o \ - getpid.o \ - kill.o \ - fstat.o \ - argvlen.o \ - argv.o \ - chdir.o \ - stat.o \ - chmod.o \ - utime.o \ - time.o \ - gettimeofday.o \ - times.o \ - link.o \ - isatty.o \ - abort.o \ - mcount.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - - -# Override .S.o rule to pass assembler debugging flags -.S.o: - $(CC) -Wa,-gdwarf2 -Wa,-I$(srcdir) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - -all: $(CRT) $(SIM_BSP) copy_scripts_to_objdir - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -copy_scripts_to_objdir: $(SCRIPTS) - cp $(SCRIPTS) $(objdir) - -# Dependencies - -SDEPS = $(srcdir)/rl78-sys.h $(srcdir)/../syscall.h - -abort.o : $(SDEPS) -argv.o : $(SDEPS) -argvlen.o : $(SDEPS) -chdir.o : $(SDEPS) -chmod.o : $(SDEPS) -close.o : $(SDEPS) -exit.o : $(SDEPS) -fstat.o : $(SDEPS) -getpid.o : $(SDEPS) -gettimeofday.o : $(SDEPS) -gcrt0.o: gcrt0.S crt0.S -kill.o : $(SDEPS) -link.o : $(SDEPS) -lseek.o : $(SDEPS) -mcount.o : $(SDEPS) -open.o : $(SDEPS) -read.o : $(SDEPS) -sigprocmask.o : $(SDEPS) -sleep.o : $(SDEPS) -stat.o : $(SDEPS) -time.o : $(SDEPS) -times.o : $(SDEPS) -unlink.o : $(SDEPS) -utime.o : $(SDEPS) -write.o : $(SDEPS) - -install: $(CRT) $(SIM_BSP) $(SCRIPTS) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - for c in $(CRT) $(SIM_BSP); do \ - $(INSTALL_DATA) $$c $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$$c ;\ - done - for c in $(SCRIPTS); do \ - b=`basename $$c`; \ - $(INSTALL_DATA) $$c $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$$b ;\ - done - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/rl78/Makefile.inc b/libgloss/rl78/Makefile.inc new file mode 100644 index 0000000000..44210f12a0 --- /dev/null +++ b/libgloss/rl78/Makefile.inc @@ -0,0 +1,52 @@ +## Copyright (c) 2008, 2009, 2011 Red Hat Inc +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += \ + %D%/rl78.ld \ + %D%/rl78-sim.ld + +multilibtool_DATA += \ + %D%/gcrt0.o \ + %D%/crt0.o \ + %D%/crtn.o +libobjs_a_SOURCES += \ + %D%/gcrt0.S \ + %D%/crt0.S \ + %D%/crtn.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/sbrk.c \ + %D%/exit.S \ + %D%/open.S \ + %D%/close.S \ + %D%/read.S \ + %D%/write.c \ + %D%/swrite.S \ + %D%/lseek.S \ + %D%/unlink.S \ + %D%/getpid.S \ + %D%/kill.S \ + %D%/fstat.S \ + %D%/argvlen.S \ + %D%/argv.S \ + %D%/chdir.S \ + %D%/stat.S \ + %D%/chmod.S \ + %D%/utime.S \ + %D%/time.S \ + %D%/gettimeofday.S \ + %D%/times.S \ + %D%/link.S \ + %D%/isatty.S \ + %D%/abort.S \ + %D%/mcount.c From af075aed1d6fcd51405247654bc68365352ab367 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 00:54:13 -0500 Subject: [PATCH 586/767] libgloss: merge m32r into top-level Makefile Avoid a recursive make to speed things up a bit. A m32r-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 389 +++++++++++++++++++++++++------------ libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/m32r/Makefile.in | 141 -------------- libgloss/m32r/Makefile.inc | 60 ++++++ 6 files changed, 345 insertions(+), 272 deletions(-) delete mode 100644 libgloss/m32r/Makefile.in create mode 100644 libgloss/m32r/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 30ca10527f..580f371b26 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -116,6 +116,9 @@ endif if CONFIG_LM32 include lm32/Makefile.inc endif +if CONFIG_M32R +include m32r/Makefile.inc +endif if CONFIG_MCORE include mcore/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 7fdfe7f496..f32de47a32 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -189,123 +189,133 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_LM32_TRUE@am__append_38 = lm32/crt0.o lm32/sim.ld @CONFIG_LM32_TRUE@am__append_39 = lm32/libgloss.a @CONFIG_LM32_TRUE@am__append_40 = lm32/crt0.S -@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_41 = \ +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_41 = \ +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva.ld \ +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva-stub.ld \ +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/mon.specs + +@CONFIG_M32R_TRUE@am__append_42 = m32r/crt0.o m32r/m32r-lib.o \ +@CONFIG_M32R_TRUE@ m32r/m32r-stub.o +@CONFIG_M32R_TRUE@am__append_43 = m32r/crt0.S m32r/m32r-lib.c \ +@CONFIG_M32R_TRUE@ m32r/m32r-stub.c +@CONFIG_M32R_TRUE@am__append_44 = m32r/libgloss.a m32r/libmon.a +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_45 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_42 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_46 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@am__append_43 = mcore/crt0.o -@CONFIG_MCORE_TRUE@am__append_44 = mcore/crt0.S -@CONFIG_MCORE_TRUE@am__append_45 = mcore/libsim.a mcore/libcmb.a -@CONFIG_MN10200_TRUE@am__append_46 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MCORE_TRUE@am__append_47 = mcore/crt0.o +@CONFIG_MCORE_TRUE@am__append_48 = mcore/crt0.S +@CONFIG_MCORE_TRUE@am__append_49 = mcore/libsim.a mcore/libcmb.a +@CONFIG_MN10200_TRUE@am__append_50 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_47 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_48 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_49 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_50 = \ +@CONFIG_MN10200_TRUE@am__append_51 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_52 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_53 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_54 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_51 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_55 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_52 = \ +@CONFIG_MN10300_TRUE@am__append_56 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_53 = \ +@CONFIG_MN10300_TRUE@am__append_57 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_54 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_55 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_56 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_57 = \ +@CONFIG_MN10300_TRUE@am__append_58 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_59 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_60 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_61 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_58 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_59 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_62 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_63 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_60 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_61 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_64 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_65 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_62 = \ +@CONFIG_MSP430_TRUE@am__append_66 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_63 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_67 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NDS32_TRUE@am__append_64 = \ +@CONFIG_NDS32_TRUE@am__append_68 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.o \ @CONFIG_NDS32_TRUE@ nds32/crt1.o -@CONFIG_NDS32_TRUE@am__append_65 = \ +@CONFIG_NDS32_TRUE@am__append_69 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.S \ @CONFIG_NDS32_TRUE@ nds32/crt1.S -@CONFIG_NDS32_TRUE@am__append_66 = nds32/libgloss.a -@CONFIG_NIOS2_TRUE@am__append_67 = \ +@CONFIG_NDS32_TRUE@am__append_70 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_71 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_68 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_69 = \ +@CONFIG_NIOS2_TRUE@am__append_72 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_73 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_70 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_74 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_71 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_75 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_72 = \ +@CONFIG_RL78_TRUE@am__append_76 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_73 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_74 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_77 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_78 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_75 = \ +@CONFIG_RX_TRUE@am__append_79 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_76 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_77 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_78 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_79 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_80 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_81 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_82 = xstormy16/crt0.o \ +@CONFIG_RX_TRUE@am__append_80 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_81 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_82 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_83 = v850/libsim.a +@CONFIG_WINCE_TRUE@am__append_84 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_85 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_86 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_83 = \ +@CONFIG_XSTORMY16_TRUE@am__append_87 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_84 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_88 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_85 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_86 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_87 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_88 = \ +@CONFIG_XSTORMY16_TRUE@am__append_89 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_90 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_91 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_92 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -314,27 +324,27 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_89 = \ +@CONFIG_XTENSA_TRUE@am__append_93 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_90 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_91 = \ +@CONFIG_XTENSA_TRUE@am__append_94 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_95 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_92 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_96 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_93 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_94 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_95 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_96 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -359,13 +369,13 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = epiphany/Makefile m32r/Makefile m68hc11/Makefile \ - m68k/Makefile pa/Makefile sparc_leon/Makefile sparc/Makefile \ - mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ - crx/Makefile fr30/Makefile ft32/Makefile mep/Makefile \ - microblaze/Makefile mt/Makefile visium/Makefile xc16x/Makefile \ - m32c/Makefile spu/Makefile tic6x/Makefile or1k/Makefile \ - pru/Makefile sparc/libsys/Makefile +CONFIG_CLEAN_FILES = epiphany/Makefile m68hc11/Makefile m68k/Makefile \ + pa/Makefile sparc_leon/Makefile sparc/Makefile mips/Makefile \ + rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ + fr30/Makefile ft32/Makefile mep/Makefile microblaze/Makefile \ + mt/Makefile visium/Makefile xc16x/Makefile m32c/Makefile \ + spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -593,25 +603,28 @@ libobjs_a_LIBADD = @CONFIG_I960_TRUE@am__objects_7 = i960/crt0.$(OBJEXT) @CONFIG_IQ2000_TRUE@am__objects_8 = iq2000/crt0.$(OBJEXT) @CONFIG_LM32_TRUE@am__objects_9 = lm32/crt0.$(OBJEXT) -@CONFIG_MCORE_TRUE@am__objects_10 = mcore/crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_11 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_12 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_10 = m32r/crt0.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/m32r-lib.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/m32r-stub.$(OBJEXT) +@CONFIG_MCORE_TRUE@am__objects_11 = mcore/crt0.$(OBJEXT) +@CONFIG_MN10200_TRUE@am__objects_12 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_13 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_13 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_14 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_14 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_15 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_NDS32_TRUE@am__objects_15 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_16 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_16 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_RL78_TRUE@am__objects_17 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_17 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_18 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_18 = v850/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_19 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_19 = v850/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_20 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_20 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_21 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -620,16 +633,35 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ - $(am__objects_20) + $(am__objects_20) $(am__objects_21) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@ lm32/scall.$(OBJEXT) lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) +m32r_libgloss_a_AR = $(AR) $(ARFLAGS) +m32r_libgloss_a_LIBADD = +@CONFIG_M32R_TRUE@am__objects_22 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/lseek.$(OBJEXT) m32r/open.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/raise.$(OBJEXT) m32r/read.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/sbrk.$(OBJEXT) m32r/stat.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) +@CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ $(am__objects_22) +m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) +m32r_libmon_a_AR = $(AR) $(ARFLAGS) +m32r_libmon_a_LIBADD = +@CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ +@CONFIG_M32R_TRUE@ $(am__objects_22) +m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_21 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_23 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -641,12 +673,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_21) +@CONFIG_MCORE_TRUE@ $(am__objects_23) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_21) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_23) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -673,7 +705,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_22 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_24 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -692,12 +724,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_22) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_24) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_22) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_24) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -882,7 +914,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_23 = \ +@CONFIG_RISCV_TRUE@am__objects_25 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -915,7 +947,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_23) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_25) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -992,13 +1024,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_24 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_25 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_26 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_27 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_24) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_25) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_26) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_27) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1096,7 +1128,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(mcore_libcmb_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(m32r_libgloss_a_SOURCES) \ + $(m32r_libmon_a_SOURCES) $(mcore_libcmb_a_SOURCES) \ $(mcore_libsim_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ @@ -1197,7 +1230,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_80) +VPATH = @srcdir@ $(am__append_84) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1215,7 +1248,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_87) +CPPFLAGS = @CPPFLAGS@ $(am__append_91) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1323,7 +1356,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_86) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_90) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1334,23 +1367,24 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ $(am__append_36) $(am__append_38) $(am__append_41) \ - $(am__append_42) $(am__append_43) $(am__append_46) \ - $(am__append_50) $(am__append_51) $(am__append_52) \ - $(am__append_57) $(am__append_58) $(am__append_61) \ - $(am__append_64) $(am__append_67) $(am__append_69) \ - $(am__append_71) $(am__append_74) $(am__append_77) \ - $(am__append_82) $(am__append_88) $(am__append_91) \ - $(am__append_93) $(am__append_97) + $(am__append_42) $(am__append_45) $(am__append_46) \ + $(am__append_47) $(am__append_50) $(am__append_54) \ + $(am__append_55) $(am__append_56) $(am__append_61) \ + $(am__append_62) $(am__append_65) $(am__append_68) \ + $(am__append_71) $(am__append_73) $(am__append_75) \ + $(am__append_78) $(am__append_81) $(am__append_86) \ + $(am__append_92) $(am__append_95) $(am__append_97) \ + $(am__append_101) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ $(am__append_31) $(am__append_33) $(am__append_37) \ - $(am__append_39) $(am__append_45) $(am__append_48) \ - $(am__append_54) $(am__append_55) $(am__append_60) \ - $(am__append_63) $(am__append_66) $(am__append_68) \ - $(am__append_70) $(am__append_73) $(am__append_76) \ - $(am__append_79) $(am__append_84) $(am__append_90) \ - $(am__append_92) + $(am__append_39) $(am__append_44) $(am__append_49) \ + $(am__append_52) $(am__append_58) $(am__append_59) \ + $(am__append_64) $(am__append_67) $(am__append_70) \ + $(am__append_72) $(am__append_74) $(am__append_77) \ + $(am__append_80) $(am__append_83) $(am__append_88) \ + $(am__append_94) $(am__append_96) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1368,10 +1402,11 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ - $(am__append_40) $(am__append_44) $(am__append_47) \ - $(am__append_53) $(am__append_59) $(am__append_62) \ - $(am__append_65) $(am__append_72) $(am__append_75) \ - $(am__append_78) $(am__append_83) $(am__append_89) + $(am__append_40) $(am__append_43) $(am__append_48) \ + $(am__append_51) $(am__append_57) $(am__append_63) \ + $(am__append_66) $(am__append_69) $(am__append_76) \ + $(am__append_79) $(am__append_82) $(am__append_87) \ + $(am__append_93) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1590,6 +1625,32 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/scall.S +@CONFIG_M32R_TRUE@m32r_common_lib_sources = \ +@CONFIG_M32R_TRUE@ m32r/chmod.c \ +@CONFIG_M32R_TRUE@ m32r/close.c \ +@CONFIG_M32R_TRUE@ m32r/exit.c \ +@CONFIG_M32R_TRUE@ m32r/fstat.c \ +@CONFIG_M32R_TRUE@ m32r/getpid.c \ +@CONFIG_M32R_TRUE@ m32r/isatty.c \ +@CONFIG_M32R_TRUE@ m32r/kill.c \ +@CONFIG_M32R_TRUE@ m32r/lseek.c \ +@CONFIG_M32R_TRUE@ m32r/open.c \ +@CONFIG_M32R_TRUE@ m32r/raise.c \ +@CONFIG_M32R_TRUE@ m32r/read.c \ +@CONFIG_M32R_TRUE@ m32r/sbrk.c \ +@CONFIG_M32R_TRUE@ m32r/stat.c \ +@CONFIG_M32R_TRUE@ m32r/unlink.c \ +@CONFIG_M32R_TRUE@ m32r/utime.c \ +@CONFIG_M32R_TRUE@ m32r/write.c + +@CONFIG_M32R_TRUE@m32r_libgloss_a_SOURCES = \ +@CONFIG_M32R_TRUE@ m32r/trap0.S \ +@CONFIG_M32R_TRUE@ $(m32r_common_lib_sources) + +@CONFIG_M32R_TRUE@m32r_libmon_a_SOURCES = \ +@CONFIG_M32R_TRUE@ m32r/trapmon0.c \ +@CONFIG_M32R_TRUE@ $(m32r_common_lib_sources) + @CONFIG_MCORE_TRUE@mcore_common_lib_sources = \ @CONFIG_MCORE_TRUE@ mcore/fstat.c \ @CONFIG_MCORE_TRUE@ mcore/getpid.c \ @@ -1969,19 +2030,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_94) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_98) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_98) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_102) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_95) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_99) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_99) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_96) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_100) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_100) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_104) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -1994,7 +2055,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2016,7 +2077,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2043,8 +2104,6 @@ distclean-hdr: -rm -f config.h stamp-h1 epiphany/Makefile: $(top_builddir)/config.status $(top_srcdir)/epiphany/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -m32r/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32r/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ m68hc11/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68hc11/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ m68k/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68k/Makefile.in @@ -2531,6 +2590,18 @@ lm32/$(DEPDIR)/$(am__dirstamp): @: > lm32/$(DEPDIR)/$(am__dirstamp) lm32/crt0.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/$(DEPDIR)/$(am__dirstamp) +m32r/$(am__dirstamp): + @$(MKDIR_P) m32r + @: > m32r/$(am__dirstamp) +m32r/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) m32r/$(DEPDIR) + @: > m32r/$(DEPDIR)/$(am__dirstamp) +m32r/crt0.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/m32r-lib.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/m32r-stub.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) mcore/$(am__dirstamp): @$(MKDIR_P) mcore @: > mcore/$(am__dirstamp) @@ -2654,6 +2725,52 @@ lm32/libgloss.a: $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_DEPENDENCIES) $(EX $(AM_V_at)-rm -f lm32/libgloss.a $(AM_V_AR)$(lm32_libgloss_a_AR) lm32/libgloss.a $(lm32_libgloss_a_OBJECTS) $(lm32_libgloss_a_LIBADD) $(AM_V_at)$(RANLIB) lm32/libgloss.a +m32r/trap0.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/chmod.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/close.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/exit.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/fstat.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/getpid.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/isatty.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/kill.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/lseek.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/open.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/raise.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/read.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/sbrk.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/stat.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/unlink.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/utime.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) +m32r/write.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) + +m32r/libgloss.a: $(m32r_libgloss_a_OBJECTS) $(m32r_libgloss_a_DEPENDENCIES) $(EXTRA_m32r_libgloss_a_DEPENDENCIES) m32r/$(am__dirstamp) + $(AM_V_at)-rm -f m32r/libgloss.a + $(AM_V_AR)$(m32r_libgloss_a_AR) m32r/libgloss.a $(m32r_libgloss_a_OBJECTS) $(m32r_libgloss_a_LIBADD) + $(AM_V_at)$(RANLIB) m32r/libgloss.a +m32r/trapmon0.$(OBJEXT): m32r/$(am__dirstamp) \ + m32r/$(DEPDIR)/$(am__dirstamp) + +m32r/libmon.a: $(m32r_libmon_a_OBJECTS) $(m32r_libmon_a_DEPENDENCIES) $(EXTRA_m32r_libmon_a_DEPENDENCIES) m32r/$(am__dirstamp) + $(AM_V_at)-rm -f m32r/libmon.a + $(AM_V_AR)$(m32r_libmon_a_AR) m32r/libmon.a $(m32r_libmon_a_OBJECTS) $(m32r_libmon_a_LIBADD) + $(AM_V_at)$(RANLIB) m32r/libmon.a mcore/open.$(OBJEXT): mcore/$(am__dirstamp) \ mcore/$(DEPDIR)/$(am__dirstamp) mcore/close.$(OBJEXT): mcore/$(am__dirstamp) \ @@ -3569,6 +3686,7 @@ mostlyclean-compile: -rm -f iq2000/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT) + -rm -f m32r/*.$(OBJEXT) -rm -f mcore/*.$(OBJEXT) -rm -f mn10200/*.$(OBJEXT) -rm -f mn10300/*.$(OBJEXT) @@ -3732,6 +3850,27 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/m32r-lib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/m32r-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/raise.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/trap0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/trapmon0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/utime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@m32r/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/close.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/cmb-exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/cmb-inbyte.Po@am__quote@ @@ -6865,6 +7004,8 @@ distclean-generic: -rm -f libnosys/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(am__dirstamp) + -rm -f m32r/$(DEPDIR)/$(am__dirstamp) + -rm -f m32r/$(am__dirstamp) -rm -f mcore/$(DEPDIR)/$(am__dirstamp) -rm -f mcore/$(am__dirstamp) -rm -f mn10200/$(DEPDIR)/$(am__dirstamp) @@ -6910,7 +7051,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7053,7 +7194,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 245558edf8..5aa46f0025 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -672,6 +672,8 @@ CONFIG_MN10200_FALSE CONFIG_MN10200_TRUE CONFIG_MCORE_FALSE CONFIG_MCORE_TRUE +CONFIG_M32R_FALSE +CONFIG_M32R_TRUE CONFIG_LM32_FALSE CONFIG_LM32_TRUE CONFIG_LIBNOSYS_FALSE @@ -2811,9 +2813,7 @@ case "${target}" in config_i386=true ;; m32r-*-*) - ac_config_files="$ac_config_files m32r/Makefile" - - subdirs="$subdirs m32r" + config_m32r=true ;; m68hc11-*-* | m6811-*-* | m68hc12-*-* | m6812-*-*) ac_config_files="$ac_config_files m68hc11/Makefile" @@ -3096,6 +3096,14 @@ else CONFIG_LM32_FALSE= fi + if test x$config_m32r = xtrue; then + CONFIG_M32R_TRUE= + CONFIG_M32R_FALSE='#' +else + CONFIG_M32R_TRUE='#' + CONFIG_M32R_FALSE= +fi + if test x$config_mcore = xtrue; then CONFIG_MCORE_TRUE= CONFIG_MCORE_FALSE='#' @@ -5723,6 +5731,10 @@ if test -z "${CONFIG_LM32_TRUE}" && test -z "${CONFIG_LM32_FALSE}"; then as_fn_error $? "conditional \"CONFIG_LM32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_M32R_TRUE}" && test -z "${CONFIG_M32R_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_M32R\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_MCORE_TRUE}" && test -z "${CONFIG_MCORE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MCORE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6428,7 +6440,6 @@ do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; - "m32r/Makefile") CONFIG_FILES="$CONFIG_FILES m32r/Makefile" ;; "m68hc11/Makefile") CONFIG_FILES="$CONFIG_FILES m68hc11/Makefile" ;; "m68k/Makefile") CONFIG_FILES="$CONFIG_FILES m68k/Makefile" ;; "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 0b2cb8d6ef..498bde2b79 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -66,8 +66,7 @@ case "${target}" in config_i386=true ;; m32r-*-*) - AC_CONFIG_FILES([m32r/Makefile]) - subdirs="$subdirs m32r" + config_m32r=true ;; m68hc11-*-* | m6811-*-* | m68hc12-*-* | m6812-*-*) AC_CONFIG_FILES([m68hc11/Makefile]) @@ -236,7 +235,7 @@ dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 - mcore mn10200 mn10300 moxie msp430 + m32r mcore mn10200 mn10300 moxie msp430 nds32 nios2 riscv rl78 rx v850 wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) diff --git a/libgloss/m32r/Makefile.in b/libgloss/m32r/Makefile.in deleted file mode 100644 index 786502eb8b..0000000000 --- a/libgloss/m32r/Makefile.in +++ /dev/null @@ -1,141 +0,0 @@ -# Makefile for libgloss/m32r -# Copyright (c) 1996, 1998 Cygnus Support. -# All rights reserved. -# -# Redistribution and use in source and binary forms are permitted -# provided that the above copyright notice and this paragraph are -# duplicated in all such forms and that any documentation, -# and/or other materials related to such -# distribution and use acknowledge that the software was developed -# at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -host_alias = @host_alias@ -target_alias = @target_alias@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -TOP = ../.. -SRCTOP = ../.. - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTISRCTOP = -MULTIBUILDTOP = -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -AR_FLAGS = qv -BISON = bison -MAKEINFO = makeinfo - -.NOEXPORT: -MAKEOVERRIDES= - -TARGETDOC = ../../targetdep.tex - -CRT0 = crt0.o -GDBLIB = m32r-lib.o -GDBSTUB = m32r-stub.o -EVASCRIPT = eva.ld -STUBSCRIPT = eva-stub.ld - -GENERIC_LIBOBJS = \ - chmod.o close.o exit.o fstat.o getpid.o isatty.o kill.o lseek.o \ - open.o raise.o read.o sbrk.o stat.o unlink.o utime.o write.o - -LIBOBJS = trap0.o $(GENERIC_LIBOBJS) -LIBGLOSS = libgloss.a - -MONLIBOBJS = trapmon0.o $(GENERIC_LIBOBJS) -MONLIBGLOSS = libmon.a -MONSPECS = mon.specs - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all: $(CRT0) $(LIBGLOSS) $(MONLIBGLOSS) $(GDBLIB) $(GDBSTUB) - -libgloss.a: $(LIBOBJS) - $(AR) $(ARFLAGS) $@ $(LIBOBJS) - $(RANLIB) $@ - -libmon.a: $(MONLIBOBJS) - $(AR) $(ARFLAGS) $@ $(MONLIBOBJS) - $(RANLIB) $@ - -install: - mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(LIBGLOSS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LIBGLOSS) - $(INSTALL_DATA) $(MONLIBGLOSS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(MONLIBGLOSS) - $(INSTALL_DATA) $(GDBLIB) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(GDBLIB) - $(INSTALL_DATA) $(GDBSTUB) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(GDBSTUB) - $(INSTALL_DATA) $(srcdir)/$(EVASCRIPT) $(DESTDIR)$(tooldir)/lib/$(EVASCRIPT) - $(INSTALL_DATA) $(srcdir)/$(STUBSCRIPT) $(DESTDIR)$(tooldir)/lib/$(STUBSCRIPT) - $(INSTALL_DATA) $(srcdir)/$(MONSPECS) $(DESTDIR)$(tooldir)/lib/$(MONSPECS) - -clean mostlyclean: - rm -f *~ *.[oa] - -distclean maintainer-clean realclean: clean - rm -f Makefile - -info doc: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status - -# to support SunOS VPATH -crt0.o: crt0.S -m32r-lib.o: m32r-lib.c -m32r-stub.o: m32r-stub.c -chmod.o: chmod.c -close.o: close.c -exit.o: exit.c -fstat.o: fstat.c -getpid.o: getpid.c -isatty.o: isatty.c -kill.o: kill.c -lseek.o: lseek.c -open.o: open.c -raise.o: raise.c -read.o: read.c -sbrk.o: sbrk.c -stat.o: stat.c -unlink.o: unlink.c -utime.o: utime.c -write.o: write.c -trap0.o: trap0.S -trapmon0.o: trapmon0.c diff --git a/libgloss/m32r/Makefile.inc b/libgloss/m32r/Makefile.inc new file mode 100644 index 0000000000..7870cf8899 --- /dev/null +++ b/libgloss/m32r/Makefile.inc @@ -0,0 +1,60 @@ +## Makefile for libgloss/m32r +## Copyright (c) 1996, 1998 Cygnus Support. +## All rights reserved. +## +## Redistribution and use in source and binary forms are permitted +## provided that the above copyright notice and this paragraph are +## duplicated in all such forms and that any documentation, +## and/or other materials related to such +## distribution and use acknowledge that the software was developed +## at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to +## endorse or promote products derived from this software without +## specific prior written permission. +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +## IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +## WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +if !HAVE_MULTISUBDIR +multilibtool_DATA += \ + %D%/eva.ld \ + %D%/eva-stub.ld \ + %D%/mon.specs +endif + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +%C%_common_lib_sources = \ + %D%/chmod.c \ + %D%/close.c \ + %D%/exit.c \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/raise.c \ + %D%/read.c \ + %D%/sbrk.c \ + %D%/stat.c \ + %D%/unlink.c \ + %D%/utime.c \ + %D%/write.c + +multilibtool_LIBRARIES += %D%/libgloss.a +%C%_libgloss_a_SOURCES = \ + %D%/trap0.S \ + $(%C%_common_lib_sources) + +multilibtool_LIBRARIES += %D%/libmon.a +%C%_libmon_a_SOURCES = \ + %D%/trapmon0.c \ + $(%C%_common_lib_sources) + +multilibtool_DATA += \ + %D%/m32r-lib.o \ + %D%/m32r-stub.o +libobjs_a_SOURCES += \ + %D%/m32r-lib.c \ + %D%/m32r-stub.c From 5798c3bbc783e83f6a144dd3148dd08d785dabdf Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 01:20:50 -0500 Subject: [PATCH 587/767] libgloss: visium: fix sbrk search path The code was loading the common ../sbrk.c file rather than the visium specific sbrk.c due to VPATH setup. Add an explicit rule for this one file so we make sure the correct one is used. --- libgloss/visium/Makefile.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libgloss/visium/Makefile.in b/libgloss/visium/Makefile.in index 0e1789a263..bc18b2951e 100644 --- a/libgloss/visium/Makefile.in +++ b/libgloss/visium/Makefile.in @@ -97,6 +97,9 @@ sim-syscalls.o: syscalls.c syscall.h io.h debug-syscalls.o: syscalls.c syscall.h io.h ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -c -o $@ $< +sbrk.o: $(srcdir)/sbrk.c + ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -c -o $@ $< + $(OBJS): %.o: ../%.c ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -c -o $@ $< From 770dd85aaf0aa2b986a1fe827abfb3e48f2d4a1b Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 01:05:23 -0500 Subject: [PATCH 588/767] libgloss: merge visium into top-level Makefile Avoid a recursive make to speed things up a bit. A visium-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 260 +++++++++++++++++++++++++-------- libgloss/configure | 19 ++- libgloss/configure.ac | 5 +- libgloss/visium/Makefile.in | 132 ----------------- libgloss/visium/Makefile.inc | 53 +++++++ libgloss/visium/sim-syscalls.c | 31 ++++ 7 files changed, 300 insertions(+), 203 deletions(-) delete mode 100644 libgloss/visium/Makefile.in create mode 100644 libgloss/visium/Makefile.inc create mode 100644 libgloss/visium/sim-syscalls.c diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 580f371b26..b45466edfd 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -152,6 +152,9 @@ endif if CONFIG_V850 include v850/Makefile.inc endif +if CONFIG_VISIUM +include visium/Makefile.inc +endif if CONFIG_WINCE include wince/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index f32de47a32..883af4457f 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -297,25 +297,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_V850_TRUE@am__append_81 = v850/crt0.o @CONFIG_V850_TRUE@am__append_82 = v850/crt0.S @CONFIG_V850_TRUE@am__append_83 = v850/libsim.a -@CONFIG_WINCE_TRUE@am__append_84 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_85 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_86 = xstormy16/crt0.o \ +@CONFIG_VISIUM_TRUE@am__append_84 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_85 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_86 = visium/libserial.a visium/libsim.a \ +@CONFIG_VISIUM_TRUE@ visium/libdebug.a +@CONFIG_WINCE_TRUE@am__append_87 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_88 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_89 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_87 = \ +@CONFIG_XSTORMY16_TRUE@am__append_90 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_88 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_91 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_89 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_90 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_91 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_92 = \ +@CONFIG_XSTORMY16_TRUE@am__append_92 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_93 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_94 = -D_LIBGLOSS -I$(srcdir)/xtensa/include +@CONFIG_XTENSA_TRUE@am__append_95 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -324,27 +328,27 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_93 = \ +@CONFIG_XTENSA_TRUE@am__append_96 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_94 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_95 = \ +@CONFIG_XTENSA_TRUE@am__append_97 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_96 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -373,8 +377,8 @@ CONFIG_CLEAN_FILES = epiphany/Makefile m68hc11/Makefile m68k/Makefile \ pa/Makefile sparc_leon/Makefile sparc/Makefile mips/Makefile \ rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ fr30/Makefile ft32/Makefile mep/Makefile microblaze/Makefile \ - mt/Makefile visium/Makefile xc16x/Makefile m32c/Makefile \ - spu/Makefile tic6x/Makefile or1k/Makefile pru/Makefile \ + mt/Makefile xc16x/Makefile m32c/Makefile spu/Makefile \ + tic6x/Makefile or1k/Makefile pru/Makefile \ sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -621,10 +625,11 @@ libobjs_a_LIBADD = @CONFIG_RX_TRUE@am__objects_18 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) @CONFIG_V850_TRUE@am__objects_19 = v850/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_20 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_20 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_21 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_21 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_22 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -633,7 +638,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ - $(am__objects_20) $(am__objects_21) + $(am__objects_20) $(am__objects_21) $(am__objects_22) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -642,7 +647,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_22 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_23 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -652,16 +657,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_22) +@CONFIG_M32R_TRUE@ $(am__objects_23) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_22) +@CONFIG_M32R_TRUE@ $(am__objects_23) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_23 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_24 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -673,12 +678,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_23) +@CONFIG_MCORE_TRUE@ $(am__objects_24) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_23) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_24) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -705,7 +710,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_24 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_25 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -724,12 +729,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_24) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_25) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_24) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_25) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -914,7 +919,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_25 = \ +@CONFIG_RISCV_TRUE@am__objects_26 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -947,7 +952,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_25) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_26) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1001,6 +1006,35 @@ v850_libsim_a_LIBADD = @CONFIG_V850_TRUE@ v850/unlink.$(OBJEXT) v850/utime.$(OBJEXT) \ @CONFIG_V850_TRUE@ v850/wait.$(OBJEXT) v850/write.$(OBJEXT) v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) +visium_libdebug_a_AR = $(AR) $(ARFLAGS) +visium_libdebug_a_LIBADD = +@CONFIG_VISIUM_TRUE@am__objects_27 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_27) \ +@CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) +visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) +visium_libserial_a_AR = $(AR) $(ARFLAGS) +visium_libserial_a_LIBADD = +@CONFIG_VISIUM_TRUE@am_visium_libserial_a_OBJECTS = close.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ fstat.$(OBJEXT) getpid.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ isatty.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ lseek.$(OBJEXT) open.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ print.$(OBJEXT) putnum.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ read.$(OBJEXT) stat.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/_exit.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/gettod.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/serial-inbyte.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@ visium/serial-outbyte.$(OBJEXT) +visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) +visium_libsim_a_AR = $(AR) $(ARFLAGS) +visium_libsim_a_LIBADD = +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_27) \ +@CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) +visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) xstormy16_libeva_app_a_LIBADD = @CONFIG_XSTORMY16_TRUE@am_xstormy16_libeva_app_a_OBJECTS = \ @@ -1024,13 +1058,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_26 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_27 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_28 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_29 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_26) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_27) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_28) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_29) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1138,7 +1172,9 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ $(rl78_libsim_a_SOURCES) $(rx_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(visium_libdebug_a_SOURCES) \ + $(visium_libserial_a_SOURCES) $(visium_libsim_a_SOURCES) \ + $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ @@ -1230,7 +1266,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_84) +VPATH = @srcdir@ $(am__append_87) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1248,7 +1284,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_91) +CPPFLAGS = @CPPFLAGS@ $(am__append_94) CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1356,7 +1392,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_90) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_93) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1372,9 +1408,9 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_55) $(am__append_56) $(am__append_61) \ $(am__append_62) $(am__append_65) $(am__append_68) \ $(am__append_71) $(am__append_73) $(am__append_75) \ - $(am__append_78) $(am__append_81) $(am__append_86) \ - $(am__append_92) $(am__append_95) $(am__append_97) \ - $(am__append_101) + $(am__append_78) $(am__append_81) $(am__append_84) \ + $(am__append_89) $(am__append_95) $(am__append_98) \ + $(am__append_100) $(am__append_104) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1383,8 +1419,8 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_52) $(am__append_58) $(am__append_59) \ $(am__append_64) $(am__append_67) $(am__append_70) \ $(am__append_72) $(am__append_74) $(am__append_77) \ - $(am__append_80) $(am__append_83) $(am__append_88) \ - $(am__append_94) $(am__append_96) + $(am__append_80) $(am__append_83) $(am__append_86) \ + $(am__append_91) $(am__append_97) $(am__append_99) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1405,8 +1441,8 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_40) $(am__append_43) $(am__append_48) \ $(am__append_51) $(am__append_57) $(am__append_63) \ $(am__append_66) $(am__append_69) $(am__append_76) \ - $(am__append_79) $(am__append_82) $(am__append_87) \ - $(am__append_93) + $(am__append_79) $(am__append_82) $(am__append_85) \ + $(am__append_90) $(am__append_96) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1998,6 +2034,41 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_V850_TRUE@ v850/wait.c \ @CONFIG_V850_TRUE@ v850/write.c +@CONFIG_VISIUM_TRUE@visium_hosted_sources = \ +@CONFIG_VISIUM_TRUE@ getpid.c \ +@CONFIG_VISIUM_TRUE@ kill.c \ +@CONFIG_VISIUM_TRUE@ visium/io-gdb.c \ +@CONFIG_VISIUM_TRUE@ visium/io-stubs.c \ +@CONFIG_VISIUM_TRUE@ visium/sbrk.c + +@CONFIG_VISIUM_TRUE@visium_libserial_a_SOURCES = \ +@CONFIG_VISIUM_TRUE@ close.c \ +@CONFIG_VISIUM_TRUE@ fstat.c \ +@CONFIG_VISIUM_TRUE@ getpid.c \ +@CONFIG_VISIUM_TRUE@ isatty.c \ +@CONFIG_VISIUM_TRUE@ kill.c \ +@CONFIG_VISIUM_TRUE@ lseek.c \ +@CONFIG_VISIUM_TRUE@ open.c \ +@CONFIG_VISIUM_TRUE@ print.c \ +@CONFIG_VISIUM_TRUE@ putnum.c \ +@CONFIG_VISIUM_TRUE@ read.c \ +@CONFIG_VISIUM_TRUE@ stat.c \ +@CONFIG_VISIUM_TRUE@ unlink.c \ +@CONFIG_VISIUM_TRUE@ write.c \ +@CONFIG_VISIUM_TRUE@ visium/_exit.c \ +@CONFIG_VISIUM_TRUE@ visium/gettod.c \ +@CONFIG_VISIUM_TRUE@ visium/sbrk.c \ +@CONFIG_VISIUM_TRUE@ visium/serial-inbyte.c \ +@CONFIG_VISIUM_TRUE@ visium/serial-outbyte.c + +@CONFIG_VISIUM_TRUE@visium_libsim_a_SOURCES = \ +@CONFIG_VISIUM_TRUE@ $(visium_hosted_sources) \ +@CONFIG_VISIUM_TRUE@ visium/sim-syscalls.c + +@CONFIG_VISIUM_TRUE@visium_libdebug_a_SOURCES = \ +@CONFIG_VISIUM_TRUE@ $(visium_hosted_sources) \ +@CONFIG_VISIUM_TRUE@ visium/syscalls.c + @CONFIG_WINCE_TRUE@gdbdir = ${dir ${patsubst %/,%,${dir @srcdir@}}}gdb @CONFIG_WINCE_TRUE@wince_stub_exe_SOURCES = wince-stub.c @CONFIG_WINCE_TRUE@wince_stub_exe_CPPFLAGS = $(AM_CPPFLAGS) -I$(gdbdir) @@ -2030,19 +2101,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_98) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_102) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_101) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_105) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_99) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_102) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_106) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_100) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_104) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_107) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2055,7 +2126,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2077,7 +2148,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2134,8 +2205,6 @@ microblaze/Makefile: $(top_builddir)/config.status $(top_srcdir)/microblaze/Make cd $(top_builddir) && $(SHELL) ./config.status $@ mt/Makefile: $(top_builddir)/config.status $(top_srcdir)/mt/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -visium/Makefile: $(top_builddir)/config.status $(top_srcdir)/visium/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ xc16x/Makefile: $(top_builddir)/config.status $(top_srcdir)/xc16x/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in @@ -2687,6 +2756,14 @@ v850/$(DEPDIR)/$(am__dirstamp): @: > v850/$(DEPDIR)/$(am__dirstamp) v850/crt0.$(OBJEXT): v850/$(am__dirstamp) \ v850/$(DEPDIR)/$(am__dirstamp) +visium/$(am__dirstamp): + @$(MKDIR_P) visium + @: > visium/$(am__dirstamp) +visium/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) visium/$(DEPDIR) + @: > visium/$(DEPDIR)/$(am__dirstamp) +visium/crt0.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) xstormy16/$(am__dirstamp): @$(MKDIR_P) xstormy16 @: > xstormy16/$(am__dirstamp) @@ -3464,6 +3541,39 @@ v850/libsim.a: $(v850_libsim_a_OBJECTS) $(v850_libsim_a_DEPENDENCIES) $(EXTRA_v8 $(AM_V_at)-rm -f v850/libsim.a $(AM_V_AR)$(v850_libsim_a_AR) v850/libsim.a $(v850_libsim_a_OBJECTS) $(v850_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) v850/libsim.a +visium/io-gdb.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) +visium/io-stubs.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) +visium/sbrk.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) +visium/syscalls.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) + +visium/libdebug.a: $(visium_libdebug_a_OBJECTS) $(visium_libdebug_a_DEPENDENCIES) $(EXTRA_visium_libdebug_a_DEPENDENCIES) visium/$(am__dirstamp) + $(AM_V_at)-rm -f visium/libdebug.a + $(AM_V_AR)$(visium_libdebug_a_AR) visium/libdebug.a $(visium_libdebug_a_OBJECTS) $(visium_libdebug_a_LIBADD) + $(AM_V_at)$(RANLIB) visium/libdebug.a +visium/_exit.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) +visium/gettod.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) +visium/serial-inbyte.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) +visium/serial-outbyte.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) + +visium/libserial.a: $(visium_libserial_a_OBJECTS) $(visium_libserial_a_DEPENDENCIES) $(EXTRA_visium_libserial_a_DEPENDENCIES) visium/$(am__dirstamp) + $(AM_V_at)-rm -f visium/libserial.a + $(AM_V_AR)$(visium_libserial_a_AR) visium/libserial.a $(visium_libserial_a_OBJECTS) $(visium_libserial_a_LIBADD) + $(AM_V_at)$(RANLIB) visium/libserial.a +visium/sim-syscalls.$(OBJEXT): visium/$(am__dirstamp) \ + visium/$(DEPDIR)/$(am__dirstamp) + +visium/libsim.a: $(visium_libsim_a_OBJECTS) $(visium_libsim_a_DEPENDENCIES) $(EXTRA_visium_libsim_a_DEPENDENCIES) visium/$(am__dirstamp) + $(AM_V_at)-rm -f visium/libsim.a + $(AM_V_AR)$(visium_libsim_a_AR) visium/libsim.a $(visium_libsim_a_OBJECTS) $(visium_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) visium/libsim.a xstormy16/close.$(OBJEXT): xstormy16/$(am__dirstamp) \ xstormy16/$(DEPDIR)/$(am__dirstamp) xstormy16/fstat.$(OBJEXT): xstormy16/$(am__dirstamp) \ @@ -3698,6 +3808,7 @@ mostlyclean-compile: -rm -f rl78/*.$(OBJEXT) -rm -f rx/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) + -rm -f visium/*.$(OBJEXT) -rm -f xstormy16/*.$(OBJEXT) -rm -f xtensa/*.$(OBJEXT) -rm -f xtensa/boards/esp32/*.$(OBJEXT) @@ -3706,12 +3817,21 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wince_stub_exe-wince-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-_kill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-ftruncate.Po@am__quote@ @@ -4198,6 +4318,16 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/gettod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/io-gdb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/io-stubs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/serial-inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/serial-outbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/sim-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@visium/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/close.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/eva_app.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xstormy16/$(DEPDIR)/fstat.Po@am__quote@ @@ -7028,6 +7158,8 @@ distclean-generic: -rm -f rx/$(am__dirstamp) -rm -f v850/$(DEPDIR)/$(am__dirstamp) -rm -f v850/$(am__dirstamp) + -rm -f visium/$(DEPDIR)/$(am__dirstamp) + -rm -f visium/$(am__dirstamp) -rm -f wince/$(am__dirstamp) -rm -f xstormy16/$(DEPDIR)/$(am__dirstamp) -rm -f xstormy16/$(am__dirstamp) @@ -7051,7 +7183,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7194,7 +7326,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 5aa46f0025..970a4cb42b 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -650,6 +650,8 @@ CONFIG_XSTORMY16_FALSE CONFIG_XSTORMY16_TRUE CONFIG_WINCE_FALSE CONFIG_WINCE_TRUE +CONFIG_VISIUM_FALSE +CONFIG_VISIUM_TRUE CONFIG_V850_FALSE CONFIG_V850_TRUE CONFIG_RX_FALSE @@ -2932,9 +2934,7 @@ case "${target}" in config_v850=true ;; visium-*-*) - ac_config_files="$ac_config_files visium/Makefile" - - subdirs="$subdirs visium" + config_visium=true config_testsuite=false ;; xc16x-*-*) @@ -3192,6 +3192,14 @@ else CONFIG_V850_FALSE= fi + if test x$config_visium = xtrue; then + CONFIG_VISIUM_TRUE= + CONFIG_VISIUM_FALSE='#' +else + CONFIG_VISIUM_TRUE='#' + CONFIG_VISIUM_FALSE= +fi + if test x$config_wince = xtrue; then CONFIG_WINCE_TRUE= CONFIG_WINCE_FALSE='#' @@ -5779,6 +5787,10 @@ if test -z "${CONFIG_V850_TRUE}" && test -z "${CONFIG_V850_FALSE}"; then as_fn_error $? "conditional \"CONFIG_V850\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_VISIUM_TRUE}" && test -z "${CONFIG_VISIUM_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_VISIUM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_WINCE_TRUE}" && test -z "${CONFIG_WINCE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_WINCE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6455,7 +6467,6 @@ do "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; - "visium/Makefile") CONFIG_FILES="$CONFIG_FILES visium/Makefile" ;; "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 498bde2b79..bff76fbc8d 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -170,8 +170,7 @@ case "${target}" in config_v850=true ;; visium-*-*) - AC_CONFIG_FILES([visium/Makefile]) - subdirs="$subdirs visium" + config_visium=true config_testsuite=false ;; xc16x-*-*) @@ -236,7 +235,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 - nds32 nios2 riscv rl78 rx v850 wince xstormy16 xtensa + nds32 nios2 riscv rl78 rx v850 visium wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/visium/Makefile.in b/libgloss/visium/Makefile.in deleted file mode 100644 index bc18b2951e..0000000000 --- a/libgloss/visium/Makefile.in +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright (c) 1998 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ - -AR = @AR@ - -LD = @LD@ - -RANLIB = @RANLIB@ - -OBJDUMP = `t='$(program_transform_name)'; echo objdump | sed -e $$t` -OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t` - -# Generic object files common to some targets. -# These are LIBGLOSS stubs and minimal functionality in SBRK, READ and WRITE. -OBJS = close.o fstat.o getpid.o isatty.o kill.o lseek.o open.o \ - print.o putnum.o read.o stat.o unlink.o write.o - -# Object files specific to particular targets. -SERIALOBJS = ${OBJS} _exit.o gettod.o sbrk.o serial-inbyte.o serial-outbyte.o - -# These go with the hosted file I/O libraries with a version of syscalls. -HOSTEDOBJS = getpid.o kill.o io-gdb.o io-stubs.o sbrk.o - -SCRIPTS = -BSP = crt0.o libserial.a libsim.a libdebug.a - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -all: ${BSP} - -# -# here's where we build the board support packages for each target -# - -libserial.a: $(SERIALOBJS) - $(AR) $(ARFLAGS) $@ $^ - $(RANLIB) $@ - -libsim.a: ${HOSTEDOBJS} sim-syscalls.o - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -libdebug.a: ${HOSTEDOBJS} debug-syscalls.o - ${AR} ${ARFLAGS} $@ $^ - ${RANLIB} $@ - -sim-syscalls.o: syscalls.c syscall.h io.h - ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -DTARGET_SIM -c -o $@ $< - -debug-syscalls.o: syscalls.c syscall.h io.h - ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -c -o $@ $< - -sbrk.o: $(srcdir)/sbrk.c - ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -c -o $@ $< - -$(OBJS): %.o: ../%.c - ${CC} ${CFLAGS_FOR_TARGET} ${CFLAGS} -c -o $@ $< - -doc: - -clean mostlyclean: - rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.status a.out - -.PHONY: install info install-info clean-info -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - @for bsp in ${BSP}; do\ - $(INSTALL_DATA) $${bsp} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - @for script in ${SCRIPTS}; do\ - $(INSTALL_DATA) $(srcdir)/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \ - done - -info: -install-info: -clean-info: - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/visium/Makefile.inc b/libgloss/visium/Makefile.inc new file mode 100644 index 0000000000..cd268c95bf --- /dev/null +++ b/libgloss/visium/Makefile.inc @@ -0,0 +1,53 @@ +## Copyright (c) 1998 Cygnus Support +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +## These go with the hosted file I/O libraries with a version of syscalls. +%C%_hosted_sources = \ + getpid.c \ + kill.c \ + %D%/io-gdb.c \ + %D%/io-stubs.c \ + %D%/sbrk.c + +multilibtool_LIBRARIES += %D%/libserial.a +%C%_libserial_a_SOURCES = \ + close.c \ + fstat.c \ + getpid.c \ + isatty.c \ + kill.c \ + lseek.c \ + open.c \ + print.c \ + putnum.c \ + read.c \ + stat.c \ + unlink.c \ + write.c \ + %D%/_exit.c \ + %D%/gettod.c \ + %D%/sbrk.c \ + %D%/serial-inbyte.c \ + %D%/serial-outbyte.c + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + $(%C%_hosted_sources) \ + %D%/sim-syscalls.c + +multilibtool_LIBRARIES += %D%/libdebug.a +%C%_libdebug_a_SOURCES = \ + $(%C%_hosted_sources) \ + %D%/syscalls.c diff --git a/libgloss/visium/sim-syscalls.c b/libgloss/visium/sim-syscalls.c new file mode 100644 index 0000000000..1a6bb32598 --- /dev/null +++ b/libgloss/visium/sim-syscalls.c @@ -0,0 +1,31 @@ +/* system calls for the Visium processor. + + Copyright (c) 2015 Rolls-Royce Controls and Data Services Limited. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Rolls-Royce Controls and Data Services Limited nor + the names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. */ + +#define TARGET_SIM +#include "syscalls.c" From bf37122a728d7ac78b06cc078816be062cdc7ad4 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 02:42:30 -0500 Subject: [PATCH 589/767] libgloss: xtensa: fix CPPFLAGS clobbering No sub-Makefile.inc file should ever set CPPFLAGS directly. That is a global/common variable. Instead, ports should set the per-target CPPFLAGS to include what they need. Further, per-target CPPFLAGS should respect $(AM_CPPFLAGS). --- libgloss/Makefile.in | 45 ++++++++++++++++++++---------------- libgloss/xtensa/Makefile.inc | 15 ++++++++---- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 883af4457f..ac9005c3bd 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -318,8 +318,7 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a @CONFIG_XSTORMY16_TRUE@am__append_92 = xstormy16/eva_stub.elf @CONFIG_XSTORMY16_TRUE@am__append_93 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_94 = -D_LIBGLOSS -I$(srcdir)/xtensa/include -@CONFIG_XTENSA_TRUE@am__append_95 = \ +@CONFIG_XTENSA_TRUE@am__append_94 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -328,27 +327,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_96 = \ +@CONFIG_XTENSA_TRUE@am__append_95 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_97 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = \ +@CONFIG_XTENSA_TRUE@am__append_96 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = -I$(srcdir)/xtensa/boards/esp32/include @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = -I$(srcdir)/xtensa/boards/esp32/include @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = -I$(srcdir)/xtensa/boards/esp32/include @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = xtensa/boards/esp32s3/memory.elf.ld @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = xtensa/boards/esp32s3/board.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = -I$(srcdir)/xtensa/boards/esp32s3/include @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -1284,7 +1285,7 @@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ $(am__append_94) +CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -1409,8 +1410,8 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_62) $(am__append_65) $(am__append_68) \ $(am__append_71) $(am__append_73) $(am__append_75) \ $(am__append_78) $(am__append_81) $(am__append_84) \ - $(am__append_89) $(am__append_95) $(am__append_98) \ - $(am__append_100) $(am__append_104) + $(am__append_89) $(am__append_94) $(am__append_97) \ + $(am__append_99) $(am__append_104) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1420,7 +1421,7 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_64) $(am__append_67) $(am__append_70) \ $(am__append_72) $(am__append_74) $(am__append_77) \ $(am__append_80) $(am__append_83) $(am__append_86) \ - $(am__append_91) $(am__append_97) $(am__append_99) + $(am__append_91) $(am__append_96) $(am__append_98) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1442,7 +1443,7 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_51) $(am__append_57) $(am__append_63) \ $(am__append_66) $(am__append_69) $(am__append_76) \ $(am__append_79) $(am__append_82) $(am__append_85) \ - $(am__append_90) $(am__append_96) + $(am__append_90) $(am__append_95) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2098,27 +2099,31 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XSTORMY16_TRUE@ $(AM_LDFLAGS) \ @CONFIG_XSTORMY16_TRUE@ -nostartfiles -T$(srcdir)/xstormy16/eva_stub.ld +@CONFIG_XTENSA_TRUE@AM_CPPFLAGS_xtensa = -D_LIBGLOSS -I$(srcdir)/xtensa/include @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_101) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_100) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_105) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_102) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_101) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_106) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_102) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_107) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_107) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_108) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = -I$(srcdir)/xtensa/boards/esp32/include all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/libgloss/xtensa/Makefile.inc b/libgloss/xtensa/Makefile.inc index 3ce02c190e..b4c818732d 100644 --- a/libgloss/xtensa/Makefile.inc +++ b/libgloss/xtensa/Makefile.inc @@ -1,4 +1,4 @@ -CPPFLAGS += -D_LIBGLOSS -I$(srcdir)/%D%/include +AM_CPPFLAGS_%C% = -D_LIBGLOSS -I$(srcdir)/%D%/include multilibtool_DATA += \ %D%/default.specs \ @@ -25,23 +25,28 @@ multilibtool_DATA += \ %D%/sleep.S \ %D%/syscalls.c \ %D%/window-vectors.S +%C%_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) multilibtool_LIBRARIES += %D%/libsys_qemu.a -%C%_libsys_qemu_a_CPPFLAGS = -DQEMU_SEMIHOSTING +%C%_libsys_qemu_a_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DQEMU_SEMIHOSTING %C%_libsys_qemu_a_SOURCES = \ %D%/sim-vectors.S \ %D%/sim-call.S \ %D%/syscalls.c multilibtool_LIBRARIES += %D%/libsys_openocd.a -%C%_libsys_openocd_a_CPPFLAGS = -DOPENOCD_SEMIHOSTING +%C%_libsys_openocd_a_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -DOPENOCD_SEMIHOSTING %C%_libsys_openocd_a_SOURCES = \ %D%/syscalls.c if HAVE_XTENSA_BOARD_ESP32 multilibtool_DATA += %D%/boards/esp32/memory.elf.ld %C%_libgloss_a_SOURCES += %D%/boards/esp32/board.c -%C%_libgloss_a_CPPFLAGS = -I$(srcdir)/%D%/boards/esp32/include +%C%_libgloss_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32/include %C%_libsys_qemu_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32/include %C%_libsys_openocd_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32/include endif @@ -49,7 +54,7 @@ endif if HAVE_XTENSA_BOARD_ESP32S3 multilibtool_DATA += %D%/boards/esp32s3/memory.elf.ld %C%_libgloss_a_SOURCES += %D%/boards/esp32s3/board.c -%C%_libgloss_a_CPPFLAGS = -I$(srcdir)/%D%/boards/esp32s3/include +%C%_libgloss_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32s3/include %C%_libsys_qemu_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32s3/include %C%_libsys_openocd_a_CPPFLAGS += -I$(srcdir)/%D%/boards/esp32s3/include endif From 22257fc68191c5a95373191798c59390ebf7388b Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 27 Dec 2023 20:45:25 -0500 Subject: [PATCH 590/767] libgloss: merge epiphany into top-level Makefile Avoid a recursive make to speed things up a bit. A epiphany-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 494 +++++++++++++++++++++------------ libgloss/configure | 20 +- libgloss/configure.ac | 6 +- libgloss/epiphany/Makefile.in | 194 ------------- libgloss/epiphany/Makefile.inc | 56 ++++ 6 files changed, 394 insertions(+), 379 deletions(-) delete mode 100644 libgloss/epiphany/Makefile.in create mode 100644 libgloss/epiphany/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index b45466edfd..639e9ba9e6 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -98,6 +98,9 @@ endif if CONFIG_D30V include d30v/Makefile.inc endif +if CONFIG_EPIPHANY +include epiphany/Makefile.inc +endif if CONFIG_FRV include frv/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index ac9005c3bd..23418ed582 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -169,156 +169,159 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_D30V_TRUE@am__append_22 = \ @CONFIG_D30V_TRUE@ d30v/crt0.o -@CONFIG_FRV_TRUE@am__append_23 = frv/crt0.o -@CONFIG_FRV_TRUE@am__append_24 = frv/crt0.S -@CONFIG_FRV_TRUE@am__append_25 = frv/libsim.a -@CONFIG_I386_TRUE@am__append_26 = i386/cygmon.ld i386/cygmon-crt0.o -@CONFIG_I386_TRUE@am__append_27 = i386/cygmon-crt0.S -@CONFIG_I386_TRUE@am__append_28 = i386/libcygmon.a -@CONFIG_I960_TRUE@am__append_29 = i960/crt0.o i960/mon960.ld -@CONFIG_I960_TRUE@am__append_30 = \ +@CONFIG_EPIPHANY_TRUE@am__append_23 = epiphany/crt0.o +@CONFIG_EPIPHANY_TRUE@am__append_24 = epiphany/crt0.S +@CONFIG_EPIPHANY_TRUE@am__append_25 = epiphany/libepiphany.a +@CONFIG_FRV_TRUE@am__append_26 = frv/crt0.o +@CONFIG_FRV_TRUE@am__append_27 = frv/crt0.S +@CONFIG_FRV_TRUE@am__append_28 = frv/libsim.a +@CONFIG_I386_TRUE@am__append_29 = i386/cygmon.ld i386/cygmon-crt0.o +@CONFIG_I386_TRUE@am__append_30 = i386/cygmon-crt0.S +@CONFIG_I386_TRUE@am__append_31 = i386/libcygmon.a +@CONFIG_I960_TRUE@am__append_32 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_33 = \ @CONFIG_I960_TRUE@ i960/crt0.c -@CONFIG_I960_TRUE@am__append_31 = i960/libmon960.a -@CONFIG_IQ2000_TRUE@am__append_32 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_33 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_34 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_35 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_36 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_37 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_38 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_39 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_40 = lm32/crt0.S -@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_41 = \ +@CONFIG_I960_TRUE@am__append_34 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_35 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_36 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_37 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_38 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_39 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_40 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_41 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_42 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_43 = lm32/crt0.S +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_44 = \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva-stub.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/mon.specs -@CONFIG_M32R_TRUE@am__append_42 = m32r/crt0.o m32r/m32r-lib.o \ +@CONFIG_M32R_TRUE@am__append_45 = m32r/crt0.o m32r/m32r-lib.o \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.o -@CONFIG_M32R_TRUE@am__append_43 = m32r/crt0.S m32r/m32r-lib.c \ +@CONFIG_M32R_TRUE@am__append_46 = m32r/crt0.S m32r/m32r-lib.c \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.c -@CONFIG_M32R_TRUE@am__append_44 = m32r/libgloss.a m32r/libmon.a -@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_45 = \ +@CONFIG_M32R_TRUE@am__append_47 = m32r/libgloss.a m32r/libmon.a +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_48 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_46 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_49 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@am__append_47 = mcore/crt0.o -@CONFIG_MCORE_TRUE@am__append_48 = mcore/crt0.S -@CONFIG_MCORE_TRUE@am__append_49 = mcore/libsim.a mcore/libcmb.a -@CONFIG_MN10200_TRUE@am__append_50 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MCORE_TRUE@am__append_50 = mcore/crt0.o +@CONFIG_MCORE_TRUE@am__append_51 = mcore/crt0.S +@CONFIG_MCORE_TRUE@am__append_52 = mcore/libsim.a mcore/libcmb.a +@CONFIG_MN10200_TRUE@am__append_53 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_51 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_52 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_53 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_54 = \ +@CONFIG_MN10200_TRUE@am__append_54 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_55 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_56 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_57 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_55 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_58 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_56 = \ +@CONFIG_MN10300_TRUE@am__append_59 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_57 = \ +@CONFIG_MN10300_TRUE@am__append_60 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_58 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_59 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_60 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_61 = \ +@CONFIG_MN10300_TRUE@am__append_61 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_62 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_63 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_64 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_62 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_63 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_65 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_66 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_64 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_65 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_67 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_68 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_66 = \ +@CONFIG_MSP430_TRUE@am__append_69 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_67 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_70 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NDS32_TRUE@am__append_68 = \ +@CONFIG_NDS32_TRUE@am__append_71 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.o \ @CONFIG_NDS32_TRUE@ nds32/crt1.o -@CONFIG_NDS32_TRUE@am__append_69 = \ +@CONFIG_NDS32_TRUE@am__append_72 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.S \ @CONFIG_NDS32_TRUE@ nds32/crt1.S -@CONFIG_NDS32_TRUE@am__append_70 = nds32/libgloss.a -@CONFIG_NIOS2_TRUE@am__append_71 = \ +@CONFIG_NDS32_TRUE@am__append_73 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_74 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_72 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_73 = \ +@CONFIG_NIOS2_TRUE@am__append_75 = nios2/libnios2.a +@CONFIG_RISCV_TRUE@am__append_76 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_74 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_77 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_75 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_78 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_76 = \ +@CONFIG_RL78_TRUE@am__append_79 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_77 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_78 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_80 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_81 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_79 = \ +@CONFIG_RX_TRUE@am__append_82 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_80 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_81 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_82 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_83 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_84 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_85 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_86 = visium/libserial.a visium/libsim.a \ +@CONFIG_RX_TRUE@am__append_83 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_84 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_85 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_86 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_87 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_88 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_89 = visium/libserial.a visium/libsim.a \ @CONFIG_VISIUM_TRUE@ visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_87 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_88 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_89 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_90 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_91 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_92 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_90 = \ +@CONFIG_XSTORMY16_TRUE@am__append_93 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_91 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_94 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_92 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_93 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_94 = \ +@CONFIG_XSTORMY16_TRUE@am__append_95 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_96 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_97 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -327,29 +330,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_95 = \ +@CONFIG_XTENSA_TRUE@am__append_98 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_96 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_97 = \ +@CONFIG_XTENSA_TRUE@am__append_99 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_98 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_99 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_109 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_110 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -374,8 +377,8 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = epiphany/Makefile m68hc11/Makefile m68k/Makefile \ - pa/Makefile sparc_leon/Makefile sparc/Makefile mips/Makefile \ +CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ + sparc_leon/Makefile sparc/Makefile mips/Makefile \ rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ fr30/Makefile ft32/Makefile mep/Makefile microblaze/Makefile \ mt/Makefile xc16x/Makefile m32c/Makefile spu/Makefile \ @@ -518,6 +521,33 @@ d30v_libsim_a_LIBADD = @CONFIG_D30V_TRUE@ d30v/outbyte.$(OBJEXT) \ @CONFIG_D30V_TRUE@ d30v/syscalls.$(OBJEXT) d30v_libsim_a_OBJECTS = $(am_d30v_libsim_a_OBJECTS) +epiphany_libepiphany_a_AR = $(AR) $(ARFLAGS) +epiphany_libepiphany_a_LIBADD = +@CONFIG_EPIPHANY_TRUE@am_epiphany_libepiphany_a_OBJECTS = \ +@CONFIG_EPIPHANY_TRUE@ epiphany/access.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/close.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/environ.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/execve.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/fork.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/fstat.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/getpid.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/gettimeofday.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/_isatty.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/kill.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/link.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/lseek.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/open.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/read.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/sbrk.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/stat.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/times.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/unlink.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/wait.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/write.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/_exit.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-syscalls.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-ivthandlers.$(OBJEXT) +epiphany_libepiphany_a_OBJECTS = $(am_epiphany_libepiphany_a_OBJECTS) frv_libsim_a_AR = $(AR) $(ARFLAGS) frv_libsim_a_LIBADD = @CONFIG_FRV_TRUE@am_frv_libsim_a_OBJECTS = frv/fstat.$(OBJEXT) \ @@ -603,34 +633,35 @@ libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) -@CONFIG_FRV_TRUE@am__objects_5 = frv/crt0.$(OBJEXT) -@CONFIG_I386_TRUE@am__objects_6 = i386/cygmon-crt0.$(OBJEXT) -@CONFIG_I960_TRUE@am__objects_7 = i960/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_8 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_9 = lm32/crt0.$(OBJEXT) -@CONFIG_M32R_TRUE@am__objects_10 = m32r/crt0.$(OBJEXT) \ +@CONFIG_EPIPHANY_TRUE@am__objects_5 = epiphany/crt0.$(OBJEXT) +@CONFIG_FRV_TRUE@am__objects_6 = frv/crt0.$(OBJEXT) +@CONFIG_I386_TRUE@am__objects_7 = i386/cygmon-crt0.$(OBJEXT) +@CONFIG_I960_TRUE@am__objects_8 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_9 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_10 = lm32/crt0.$(OBJEXT) +@CONFIG_M32R_TRUE@am__objects_11 = m32r/crt0.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-lib.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.$(OBJEXT) -@CONFIG_MCORE_TRUE@am__objects_11 = mcore/crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_12 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_13 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_12 = mcore/crt0.$(OBJEXT) +@CONFIG_MN10200_TRUE@am__objects_13 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_14 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_14 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_15 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_15 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_16 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_NDS32_TRUE@am__objects_16 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_17 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_17 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_RL78_TRUE@am__objects_18 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_18 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_19 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_19 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_20 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_21 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_20 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_21 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_22 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_22 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_23 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -639,7 +670,8 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ - $(am__objects_20) $(am__objects_21) $(am__objects_22) + $(am__objects_20) $(am__objects_21) $(am__objects_22) \ + $(am__objects_23) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -648,7 +680,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_23 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_24 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -658,16 +690,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_23) +@CONFIG_M32R_TRUE@ $(am__objects_24) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_23) +@CONFIG_M32R_TRUE@ $(am__objects_24) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_24 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_25 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -679,12 +711,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_24) +@CONFIG_MCORE_TRUE@ $(am__objects_25) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_24) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_25) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -711,7 +743,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_25 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_26 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -730,12 +762,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_25) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_26) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_25) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_26) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -920,7 +952,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_26 = \ +@CONFIG_RISCV_TRUE@am__objects_27 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -953,7 +985,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_26) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_27) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1009,11 +1041,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_27 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_28 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_27) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_28) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1033,7 +1065,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_27) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_28) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1059,13 +1091,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_28 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_29 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_29 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_30 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_28) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_29) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_29) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_30) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1160,22 +1192,22 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ - $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ - $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ - $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(m32r_libgloss_a_SOURCES) \ - $(m32r_libmon_a_SOURCES) $(mcore_libcmb_a_SOURCES) \ - $(mcore_libsim_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ - $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ - $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ - $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ - $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ - $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(rl78_libsim_a_SOURCES) $(rx_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(visium_libdebug_a_SOURCES) \ - $(visium_libserial_a_SOURCES) $(visium_libsim_a_SOURCES) \ - $(xstormy16_libeva_app_a_SOURCES) \ + $(epiphany_libepiphany_a_SOURCES) $(frv_libsim_a_SOURCES) \ + $(i386_libcygmon_a_SOURCES) $(i960_libmon960_a_SOURCES) \ + $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ + $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ + $(m32r_libgloss_a_SOURCES) $(m32r_libmon_a_SOURCES) \ + $(mcore_libcmb_a_SOURCES) $(mcore_libsim_a_SOURCES) \ + $(mn10200_libeval_a_SOURCES) $(mn10300_libcygmon_a_SOURCES) \ + $(mn10300_libeval_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ + $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ + $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ + $(nds32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + $(riscv_libsim_a_SOURCES) $(rl78_libsim_a_SOURCES) \ + $(rx_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(visium_libdebug_a_SOURCES) $(visium_libserial_a_SOURCES) \ + $(visium_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ @@ -1267,7 +1299,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_87) +VPATH = @srcdir@ $(am__append_90) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1393,7 +1425,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_93) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_96) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1403,25 +1435,26 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ - $(am__append_36) $(am__append_38) $(am__append_41) \ - $(am__append_42) $(am__append_45) $(am__append_46) \ - $(am__append_47) $(am__append_50) $(am__append_54) \ - $(am__append_55) $(am__append_56) $(am__append_61) \ - $(am__append_62) $(am__append_65) $(am__append_68) \ - $(am__append_71) $(am__append_73) $(am__append_75) \ + $(am__append_35) $(am__append_39) $(am__append_41) \ + $(am__append_44) $(am__append_45) $(am__append_48) \ + $(am__append_49) $(am__append_50) $(am__append_53) \ + $(am__append_57) $(am__append_58) $(am__append_59) \ + $(am__append_64) $(am__append_65) $(am__append_68) \ + $(am__append_71) $(am__append_74) $(am__append_76) \ $(am__append_78) $(am__append_81) $(am__append_84) \ - $(am__append_89) $(am__append_94) $(am__append_97) \ - $(am__append_99) $(am__append_104) + $(am__append_87) $(am__append_92) $(am__append_97) \ + $(am__append_100) $(am__append_102) $(am__append_107) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ - $(am__append_31) $(am__append_33) $(am__append_37) \ - $(am__append_39) $(am__append_44) $(am__append_49) \ - $(am__append_52) $(am__append_58) $(am__append_59) \ - $(am__append_64) $(am__append_67) $(am__append_70) \ - $(am__append_72) $(am__append_74) $(am__append_77) \ + $(am__append_31) $(am__append_34) $(am__append_36) \ + $(am__append_40) $(am__append_42) $(am__append_47) \ + $(am__append_52) $(am__append_55) $(am__append_61) \ + $(am__append_62) $(am__append_67) $(am__append_70) \ + $(am__append_73) $(am__append_75) $(am__append_77) \ $(am__append_80) $(am__append_83) $(am__append_86) \ - $(am__append_91) $(am__append_96) $(am__append_98) + $(am__append_89) $(am__append_94) $(am__append_99) \ + $(am__append_101) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) includesystooldir = $(tooldir)/include/sys @@ -1438,12 +1471,12 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ - $(am__append_27) $(am__append_30) $(am__append_34) \ - $(am__append_40) $(am__append_43) $(am__append_48) \ - $(am__append_51) $(am__append_57) $(am__append_63) \ - $(am__append_66) $(am__append_69) $(am__append_76) \ + $(am__append_27) $(am__append_30) $(am__append_33) \ + $(am__append_37) $(am__append_43) $(am__append_46) \ + $(am__append_51) $(am__append_54) $(am__append_60) \ + $(am__append_66) $(am__append_69) $(am__append_72) \ $(am__append_79) $(am__append_82) $(am__append_85) \ - $(am__append_90) $(am__append_95) + $(am__append_88) $(am__append_93) $(am__append_98) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1591,6 +1624,31 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_D30V_TRUE@ d30v/outbyte.c \ @CONFIG_D30V_TRUE@ d30v/syscalls.c +@CONFIG_EPIPHANY_TRUE@epiphany_libepiphany_a_SOURCES = \ +@CONFIG_EPIPHANY_TRUE@ epiphany/access.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/close.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/environ.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/execve.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/fork.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/fstat.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/getpid.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/gettimeofday.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/_isatty.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/kill.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/link.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/lseek.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/open.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/read.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/sbrk.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/stat.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/times.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/unlink.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/wait.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/write.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/_exit.S \ +@CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-syscalls.c \ +@CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-ivthandlers.S + @CONFIG_FRV_TRUE@frv_libsim_a_SOURCES = \ @CONFIG_FRV_TRUE@ frv/fstat.c \ @CONFIG_FRV_TRUE@ frv/getpid.c \ @@ -2103,15 +2161,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_100) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_105) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_108) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_101) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_106) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_104) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_109) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_102) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_107) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_105) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_110) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2119,8 +2177,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_108) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_106) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_111) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2131,7 +2189,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2153,7 +2211,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2178,8 +2236,6 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) distclean-hdr: -rm -f config.h stamp-h1 -epiphany/Makefile: $(top_builddir)/config.status $(top_srcdir)/epiphany/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ m68hc11/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68hc11/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ m68k/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68k/Makefile.in @@ -2458,6 +2514,63 @@ d30v/libsim.a: $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_DEPENDENCIES) $(EXTRA_d3 $(AM_V_at)-rm -f d30v/libsim.a $(AM_V_AR)$(d30v_libsim_a_AR) d30v/libsim.a $(d30v_libsim_a_OBJECTS) $(d30v_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) d30v/libsim.a +epiphany/$(am__dirstamp): + @$(MKDIR_P) epiphany + @: > epiphany/$(am__dirstamp) +epiphany/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) epiphany/$(DEPDIR) + @: > epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/access.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/close.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/environ.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/execve.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/fork.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/fstat.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/getpid.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/gettimeofday.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/_isatty.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/kill.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/link.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/lseek.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/open.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/read.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/sbrk.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/stat.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/times.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/unlink.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/wait.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/write.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/_exit.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/epiphany-syscalls.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) +epiphany/epiphany-ivthandlers.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) + +epiphany/libepiphany.a: $(epiphany_libepiphany_a_OBJECTS) $(epiphany_libepiphany_a_DEPENDENCIES) $(EXTRA_epiphany_libepiphany_a_DEPENDENCIES) epiphany/$(am__dirstamp) + $(AM_V_at)-rm -f epiphany/libepiphany.a + $(AM_V_AR)$(epiphany_libepiphany_a_AR) epiphany/libepiphany.a $(epiphany_libepiphany_a_OBJECTS) $(epiphany_libepiphany_a_LIBADD) + $(AM_V_at)$(RANLIB) epiphany/libepiphany.a frv/$(am__dirstamp): @$(MKDIR_P) frv @: > frv/$(am__dirstamp) @@ -2649,6 +2762,8 @@ bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ csky/$(DEPDIR)/$(am__dirstamp) +epiphany/crt0.$(OBJEXT): epiphany/$(am__dirstamp) \ + epiphany/$(DEPDIR)/$(am__dirstamp) frv/crt0.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) i386/cygmon-crt0.$(OBJEXT): i386/$(am__dirstamp) \ i386/$(DEPDIR)/$(am__dirstamp) @@ -3795,6 +3910,7 @@ mostlyclean-compile: -rm -f bfin/*.$(OBJEXT) -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) + -rm -f epiphany/*.$(OBJEXT) -rm -f frv/*.$(OBJEXT) -rm -f i386/*.$(OBJEXT) -rm -f i960/*.$(OBJEXT) @@ -3900,6 +4016,30 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/inbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/outbyte.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@d30v/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/_isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/access.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/environ.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/epiphany-ivthandlers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/epiphany-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/execve.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/fork.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/link.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/wait.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/fstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/getpid.Po@am__quote@ @@ -7127,6 +7267,8 @@ distclean-generic: -rm -f d30v/$(DEPDIR)/$(am__dirstamp) -rm -f d30v/$(am__dirstamp) -rm -f doc/$(am__dirstamp) + -rm -f epiphany/$(DEPDIR)/$(am__dirstamp) + -rm -f epiphany/$(am__dirstamp) -rm -f frv/$(DEPDIR)/$(am__dirstamp) -rm -f frv/$(am__dirstamp) -rm -f i386/$(DEPDIR)/$(am__dirstamp) @@ -7188,7 +7330,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7331,7 +7473,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 970a4cb42b..cee8a1b839 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -688,6 +688,8 @@ CONFIG_I386_FALSE CONFIG_I386_TRUE CONFIG_FRV_FALSE CONFIG_FRV_TRUE +CONFIG_EPIPHANY_FALSE +CONFIG_EPIPHANY_TRUE CONFIG_D30V_FALSE CONFIG_D30V_TRUE CONFIG_CSKY_FALSE @@ -2806,10 +2808,7 @@ case "${target}" in config_csky=true ;; epiphany-*-*) - ac_config_files="$ac_config_files epiphany/Makefile" - - subdirs="$subdirs epiphany" - config_testsuite=true + config_epiphany=true ;; i[3456]86-*-elf* | i[3456]86-*-coff*) config_i386=true @@ -3048,6 +3047,14 @@ else CONFIG_D30V_FALSE= fi + if test x$config_epiphany = xtrue; then + CONFIG_EPIPHANY_TRUE= + CONFIG_EPIPHANY_FALSE='#' +else + CONFIG_EPIPHANY_TRUE='#' + CONFIG_EPIPHANY_FALSE= +fi + if test x$config_frv = xtrue; then CONFIG_FRV_TRUE= CONFIG_FRV_FALSE='#' @@ -5715,6 +5722,10 @@ if test -z "${CONFIG_D30V_TRUE}" && test -z "${CONFIG_D30V_FALSE}"; then as_fn_error $? "conditional \"CONFIG_D30V\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_EPIPHANY_TRUE}" && test -z "${CONFIG_EPIPHANY_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_EPIPHANY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_FRV_TRUE}" && test -z "${CONFIG_FRV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_FRV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6451,7 +6462,6 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "epiphany/Makefile") CONFIG_FILES="$CONFIG_FILES epiphany/Makefile" ;; "m68hc11/Makefile") CONFIG_FILES="$CONFIG_FILES m68hc11/Makefile" ;; "m68k/Makefile") CONFIG_FILES="$CONFIG_FILES m68k/Makefile" ;; "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index bff76fbc8d..bb11a0ee07 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -58,9 +58,7 @@ case "${target}" in config_csky=true ;; epiphany-*-*) - AC_CONFIG_FILES([epiphany/Makefile]) - subdirs="$subdirs epiphany" - config_testsuite=true + config_epiphany=true ;; i[[3456]]86-*-elf* | i[[3456]]86-*-coff*) config_i386=true @@ -233,7 +231,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v frv i386 i960 iq2000 libnosys lm32 + aarch64 arc arm bfin csky d30v epiphany frv i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 nds32 nios2 riscv rl78 rx v850 visium wince xstormy16 xtensa ], [dnl diff --git a/libgloss/epiphany/Makefile.in b/libgloss/epiphany/Makefile.in deleted file mode 100644 index 6670b79a08..0000000000 --- a/libgloss/epiphany/Makefile.in +++ /dev/null @@ -1,194 +0,0 @@ -# Makefile for libgloss/epiphany - -# Copyright (c) 2011, 2012 Adapteva, Inc. -# All rights reserved. - -# Contributor Jeremy Bennett for Adapteva Inc - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of Adapteva nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Standard proforma copied from libnosys -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -CC = @CC@ - -#AS = @AS@ -AS = `if [ -f ${objroot}/../gas/as-new ] ; \ - then echo ${objroot}/../gas/as-new ; \ - else echo as ; fi` - -AR = @AR@ - -#LD = @LD@ -LD = `if [ -f ${objroot}/../ld/ld-new ] ; \ - then echo ${objroot}/../ld/ld-new ; \ - else echo ld ; fi` - -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi` -NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi` - -INCLUDES = -I. -I$(srcdir)/.. -I$(srcdir)/../../newlib/libc/machine/epiphany - -# Note that when building the library, ${MULTILIB} is not the way multilib -# options are passed; they're passed in $(CFLAGS). -CFLAGS_FOR_TARGET = ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS} -LDFLAGS_FOR_TARGET = ${MULTILIB} ${NEWLIB_LDFLAGS} -AR_FLAGS = qc - -.c.o: - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< - -.C.o: - $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< -.S.o: - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $(CFLAGS) $< -.s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< - -# -# GCC knows to run the preprocessor on .S files before it assembles them. -# -.S.o: - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - -# -# this is a bogus target that'll produce an assembler from the -# C source with the right compiler options. this is so we can -# track down code generation or debug symbol bugs. -# -.c.s: - $(CC) $(CFLAGS_FOR_TARGET) -S $(INCLUDES) $(CFLAGS) $< - -# EPIPHANY specific stuff - -# Object files needed for all libraries -COMMON_OBJS = access.o \ - close.o \ - environ.o \ - execve.o \ - fork.o \ - fstat.o \ - getpid.o \ - gettimeofday.o \ - _isatty.o \ - kill.o \ - link.o \ - lseek.o \ - open.o \ - read.o \ - sbrk.o \ - stat.o \ - times.o \ - unlink.o \ - wait.o \ - write.o \ - _exit.o \ - epiphany-syscalls.o \ - epiphany-ivthandlers.o - -UNUSED_OBJS = chown.o \ - errno.o \ - gettod.o \ - readlink.o \ - symlink.o - -# Object files specific to particular targets. -SIMOBJS = $(COMMON_OBJS) - -OUTPUTS = libepiphany.a crt0.o - -all: $(OUTPUTS) - -# -# here's where we build the library for each target -# - -libepiphany.a: $(SIMOBJS) - ${AR} ${ARFLAGS} $@ $(SIMOBJS) - ${RANLIB} $@ - -_exit.o: _exit.S - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - -doc: - -clean mostlyclean: - rm -f $(OUTPUTS) *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.status $(OUTPUTS) - -.PHONY: install info install-info clean-info -install: - @for outputs in ${OUTPUTS}; do\ - mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - $(INSTALL_PROGRAM) $${outputs} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/epiphany/Makefile.inc b/libgloss/epiphany/Makefile.inc new file mode 100644 index 0000000000..ad9fa30b41 --- /dev/null +++ b/libgloss/epiphany/Makefile.inc @@ -0,0 +1,56 @@ +## Copyright (c) 2011, 2012 Adapteva, Inc. +## All rights reserved. +## +## Contributor Jeremy Bennett for Adapteva Inc +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are met: +## * Redistributions of source code must retain the above copyright notice, +## this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## * Neither the name of Adapteva nor the names of its contributors may be +## used to endorse or promote products derived from this software without +## specific prior written permission. +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +## ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +## LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +## POSSIBILITY OF SUCH DAMAGE. + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libepiphany.a +%C%_libepiphany_a_SOURCES = \ + %D%/access.c \ + %D%/close.c \ + %D%/environ.c \ + %D%/execve.c \ + %D%/fork.c \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/gettimeofday.c \ + %D%/_isatty.c \ + %D%/kill.c \ + %D%/link.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/read.c \ + %D%/sbrk.c \ + %D%/stat.c \ + %D%/times.c \ + %D%/unlink.c \ + %D%/wait.c \ + %D%/write.c \ + %D%/_exit.S \ + %D%/epiphany-syscalls.c \ + %D%/epiphany-ivthandlers.S From 8c5bb84b6b505be3dbcea97ed2c879d2df81249f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 00:00:11 -0500 Subject: [PATCH 591/767] libgloss: merge or1k into top-level Makefile Avoid a recursive make to speed things up a bit. A or1k-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 445 ++++++++++++++++++++++++++++-------- libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/or1k/Makefile.in | 145 ------------ libgloss/or1k/Makefile.inc | 66 ++++++ libgloss/or1k/boards/README | 5 +- 7 files changed, 439 insertions(+), 249 deletions(-) delete mode 100644 libgloss/or1k/Makefile.in create mode 100644 libgloss/or1k/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 639e9ba9e6..5a6f82d413 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -143,6 +143,9 @@ endif if CONFIG_NIOS2 include nios2/Makefile.inc endif +if CONFIG_OR1K +include or1k/Makefile.inc +endif if CONFIG_RISCV include riscv/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 23418ed582..cf33142b87 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -273,55 +273,72 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld @CONFIG_NIOS2_TRUE@am__append_75 = nios2/libnios2.a -@CONFIG_RISCV_TRUE@am__append_76 = \ +@CONFIG_OR1K_TRUE@am__append_76 = or1k/crt0.o +@CONFIG_OR1K_TRUE@am__append_77 = or1k/crt0.S +@CONFIG_OR1K_TRUE@am__append_78 = \ +@CONFIG_OR1K_TRUE@ or1k/include/or1k-asm.h \ +@CONFIG_OR1K_TRUE@ or1k/include/or1k-nop.h \ +@CONFIG_OR1K_TRUE@ or1k/include/or1k-sprs.h \ +@CONFIG_OR1K_TRUE@ or1k/include/or1k-support.h + +@CONFIG_OR1K_TRUE@am__append_79 = or1k/libor1k.a or1k/libboard-atlys.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-de0_nano.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-ml501.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-optimsoc.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-or1ksim.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-or1ksim-uart.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-ordb1a3pe1500.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-ordb2a.a \ +@CONFIG_OR1K_TRUE@ or1k/libboard-orpsocrefdesign.a +@CONFIG_RISCV_TRUE@am__append_80 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_77 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_81 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_78 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_82 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_79 = \ +@CONFIG_RL78_TRUE@am__append_83 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_80 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_81 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_84 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_85 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_82 = \ +@CONFIG_RX_TRUE@am__append_86 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_83 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_84 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_85 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_86 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_87 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_88 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_89 = visium/libserial.a visium/libsim.a \ +@CONFIG_RX_TRUE@am__append_87 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_88 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_89 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_90 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_91 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_92 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_93 = visium/libserial.a visium/libsim.a \ @CONFIG_VISIUM_TRUE@ visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_90 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_91 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_92 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_94 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_95 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_96 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_93 = \ +@CONFIG_XSTORMY16_TRUE@am__append_97 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_94 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_98 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_95 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_96 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_97 = \ +@CONFIG_XSTORMY16_TRUE@am__append_99 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_100 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_101 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -330,29 +347,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_98 = \ +@CONFIG_XTENSA_TRUE@am__append_102 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_99 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_100 = \ +@CONFIG_XTENSA_TRUE@am__append_103 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_101 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_102 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_103 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_109 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_110 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_109 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_110 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_112 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_113 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_114 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_115 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -382,8 +399,7 @@ CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ fr30/Makefile ft32/Makefile mep/Makefile microblaze/Makefile \ mt/Makefile xc16x/Makefile m32c/Makefile spu/Makefile \ - tic6x/Makefile or1k/Makefile pru/Makefile \ - sparc/libsys/Makefile + tic6x/Makefile pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -652,16 +668,17 @@ libobjs_a_LIBADD = @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) @CONFIG_NDS32_TRUE@am__objects_17 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_18 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@am__objects_18 = or1k/crt0.$(OBJEXT) +@CONFIG_RL78_TRUE@am__objects_19 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_19 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_20 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_20 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_21 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_22 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_21 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_22 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_23 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_23 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_24 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -671,7 +688,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ - $(am__objects_23) + $(am__objects_23) $(am__objects_24) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -680,7 +697,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_24 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_25 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -690,16 +707,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_24) +@CONFIG_M32R_TRUE@ $(am__objects_25) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_24) +@CONFIG_M32R_TRUE@ $(am__objects_25) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_25 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_26 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -711,12 +728,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_25) +@CONFIG_MCORE_TRUE@ $(am__objects_26) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_25) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_26) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -743,7 +760,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_26 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_27 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -762,12 +779,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_26) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_27) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_26) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_27) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -886,6 +903,71 @@ nios2_libnios2_a_LIBADD = @CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-kill.$(OBJEXT) \ @CONFIG_NIOS2_TRUE@ nios2/nios2_libnios2_a-sbrk.$(OBJEXT) nios2_libnios2_a_OBJECTS = $(am_nios2_libnios2_a_OBJECTS) +or1k_libboard_atlys_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_atlys_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_atlys_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/atlys.$(OBJEXT) +or1k_libboard_atlys_a_OBJECTS = $(am_or1k_libboard_atlys_a_OBJECTS) +or1k_libboard_de0_nano_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_de0_nano_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_de0_nano_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/de0_nano.$(OBJEXT) +or1k_libboard_de0_nano_a_OBJECTS = \ + $(am_or1k_libboard_de0_nano_a_OBJECTS) +or1k_libboard_ml501_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_ml501_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_ml501_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/ml501.$(OBJEXT) +or1k_libboard_ml501_a_OBJECTS = $(am_or1k_libboard_ml501_a_OBJECTS) +or1k_libboard_optimsoc_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_optimsoc_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_optimsoc_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/optimsoc.$(OBJEXT) +or1k_libboard_optimsoc_a_OBJECTS = \ + $(am_or1k_libboard_optimsoc_a_OBJECTS) +or1k_libboard_or1ksim_uart_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_or1ksim_uart_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_or1ksim_uart_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/or1ksim-uart.$(OBJEXT) +or1k_libboard_or1ksim_uart_a_OBJECTS = \ + $(am_or1k_libboard_or1ksim_uart_a_OBJECTS) +or1k_libboard_or1ksim_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_or1ksim_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_or1ksim_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/or1ksim.$(OBJEXT) +or1k_libboard_or1ksim_a_OBJECTS = \ + $(am_or1k_libboard_or1ksim_a_OBJECTS) +or1k_libboard_ordb1a3pe1500_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_ordb1a3pe1500_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_ordb1a3pe1500_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/ordb1a3pe1500.$(OBJEXT) +or1k_libboard_ordb1a3pe1500_a_OBJECTS = \ + $(am_or1k_libboard_ordb1a3pe1500_a_OBJECTS) +or1k_libboard_ordb2a_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_ordb2a_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_ordb2a_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/ordb2a.$(OBJEXT) +or1k_libboard_ordb2a_a_OBJECTS = $(am_or1k_libboard_ordb2a_a_OBJECTS) +or1k_libboard_orpsocrefdesign_a_AR = $(AR) $(ARFLAGS) +or1k_libboard_orpsocrefdesign_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libboard_orpsocrefdesign_a_OBJECTS = \ +@CONFIG_OR1K_TRUE@ or1k/boards/orpsocrefdesign.$(OBJEXT) +or1k_libboard_orpsocrefdesign_a_OBJECTS = \ + $(am_or1k_libboard_orpsocrefdesign_a_OBJECTS) +or1k_libor1k_a_AR = $(AR) $(ARFLAGS) +or1k_libor1k_a_LIBADD = +@CONFIG_OR1K_TRUE@am_or1k_libor1k_a_OBJECTS = or1k/syscalls.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/or1k_uart.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/outbyte.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/caches-asm.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/exceptions.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/exceptions-asm.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/interrupts.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/interrupts-asm.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/mmu-asm.$(OBJEXT) or1k/timer.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/sbrk.$(OBJEXT) or1k/impure.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@ or1k/util.$(OBJEXT) or1k/sync-asm.$(OBJEXT) +or1k_libor1k_a_OBJECTS = $(am_or1k_libor1k_a_OBJECTS) riscv_libgloss_a_AR = $(AR) $(ARFLAGS) riscv_libgloss_a_LIBADD = @CONFIG_RISCV_TRUE@am_riscv_libgloss_a_OBJECTS = riscv/riscv_libgloss_a-sys_access.$(OBJEXT) \ @@ -952,7 +1034,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_27 = \ +@CONFIG_RISCV_TRUE@am__objects_28 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -985,7 +1067,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_27) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_28) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1041,11 +1123,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_28 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_29 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_28) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_29) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1065,7 +1147,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_28) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_29) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1091,13 +1173,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_29 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_30 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_30 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_31 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_29) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_30) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_30) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_31) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1203,11 +1285,21 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ $(nds32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ - $(riscv_libsim_a_SOURCES) $(rl78_libsim_a_SOURCES) \ - $(rx_libsim_a_SOURCES) $(v850_libsim_a_SOURCES) \ - $(visium_libdebug_a_SOURCES) $(visium_libserial_a_SOURCES) \ - $(visium_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ + $(or1k_libboard_atlys_a_SOURCES) \ + $(or1k_libboard_de0_nano_a_SOURCES) \ + $(or1k_libboard_ml501_a_SOURCES) \ + $(or1k_libboard_optimsoc_a_SOURCES) \ + $(or1k_libboard_or1ksim_uart_a_SOURCES) \ + $(or1k_libboard_or1ksim_a_SOURCES) \ + $(or1k_libboard_ordb1a3pe1500_a_SOURCES) \ + $(or1k_libboard_ordb2a_a_SOURCES) \ + $(or1k_libboard_orpsocrefdesign_a_SOURCES) \ + $(or1k_libor1k_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ + $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ + $(rl78_libsim_a_SOURCES) $(rx_libsim_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(visium_libdebug_a_SOURCES) \ + $(visium_libserial_a_SOURCES) $(visium_libsim_a_SOURCES) \ + $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ @@ -1299,7 +1391,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_90) +VPATH = @srcdir@ $(am__append_94) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1425,7 +1517,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_96) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_100) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1441,9 +1533,10 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_57) $(am__append_58) $(am__append_59) \ $(am__append_64) $(am__append_65) $(am__append_68) \ $(am__append_71) $(am__append_74) $(am__append_76) \ - $(am__append_78) $(am__append_81) $(am__append_84) \ - $(am__append_87) $(am__append_92) $(am__append_97) \ - $(am__append_100) $(am__append_102) $(am__append_107) + $(am__append_80) $(am__append_82) $(am__append_85) \ + $(am__append_88) $(am__append_91) $(am__append_96) \ + $(am__append_101) $(am__append_104) $(am__append_106) \ + $(am__append_111) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1451,12 +1544,12 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_40) $(am__append_42) $(am__append_47) \ $(am__append_52) $(am__append_55) $(am__append_61) \ $(am__append_62) $(am__append_67) $(am__append_70) \ - $(am__append_73) $(am__append_75) $(am__append_77) \ - $(am__append_80) $(am__append_83) $(am__append_86) \ - $(am__append_89) $(am__append_94) $(am__append_99) \ - $(am__append_101) + $(am__append_73) $(am__append_75) $(am__append_79) \ + $(am__append_81) $(am__append_84) $(am__append_87) \ + $(am__append_90) $(am__append_93) $(am__append_98) \ + $(am__append_103) $(am__append_105) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_16) +includetool_DATA = $(am__append_16) $(am__append_78) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) @@ -1475,8 +1568,9 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_37) $(am__append_43) $(am__append_46) \ $(am__append_51) $(am__append_54) $(am__append_60) \ $(am__append_66) $(am__append_69) $(am__append_72) \ - $(am__append_79) $(am__append_82) $(am__append_85) \ - $(am__append_88) $(am__append_93) $(am__append_98) + $(am__append_77) $(am__append_83) $(am__append_86) \ + $(am__append_89) $(am__append_92) $(am__append_97) \ + $(am__append_102) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1938,6 +2032,31 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_NIOS2_TRUE@ $(AM_CPPFLAGS) \ @CONFIG_NIOS2_TRUE@ -DHOSTED=1 +@CONFIG_OR1K_TRUE@or1k_libor1k_a_SOURCES = \ +@CONFIG_OR1K_TRUE@ or1k/syscalls.c \ +@CONFIG_OR1K_TRUE@ or1k/or1k_uart.c \ +@CONFIG_OR1K_TRUE@ or1k/outbyte.c \ +@CONFIG_OR1K_TRUE@ or1k/caches-asm.S \ +@CONFIG_OR1K_TRUE@ or1k/exceptions.c \ +@CONFIG_OR1K_TRUE@ or1k/exceptions-asm.S \ +@CONFIG_OR1K_TRUE@ or1k/interrupts.c \ +@CONFIG_OR1K_TRUE@ or1k/interrupts-asm.S \ +@CONFIG_OR1K_TRUE@ or1k/mmu-asm.S \ +@CONFIG_OR1K_TRUE@ or1k/timer.c \ +@CONFIG_OR1K_TRUE@ or1k/sbrk.c \ +@CONFIG_OR1K_TRUE@ or1k/impure.c \ +@CONFIG_OR1K_TRUE@ or1k/util.c \ +@CONFIG_OR1K_TRUE@ or1k/sync-asm.S + +@CONFIG_OR1K_TRUE@or1k_libboard_atlys_a_SOURCES = or1k/boards/atlys.S +@CONFIG_OR1K_TRUE@or1k_libboard_de0_nano_a_SOURCES = or1k/boards/de0_nano.S +@CONFIG_OR1K_TRUE@or1k_libboard_ml501_a_SOURCES = or1k/boards/ml501.S +@CONFIG_OR1K_TRUE@or1k_libboard_optimsoc_a_SOURCES = or1k/boards/optimsoc.S +@CONFIG_OR1K_TRUE@or1k_libboard_or1ksim_a_SOURCES = or1k/boards/or1ksim.S +@CONFIG_OR1K_TRUE@or1k_libboard_or1ksim_uart_a_SOURCES = or1k/boards/or1ksim-uart.S +@CONFIG_OR1K_TRUE@or1k_libboard_ordb1a3pe1500_a_SOURCES = or1k/boards/ordb1a3pe1500.S +@CONFIG_OR1K_TRUE@or1k_libboard_ordb2a_a_SOURCES = or1k/boards/ordb2a.S +@CONFIG_OR1K_TRUE@or1k_libboard_orpsocrefdesign_a_SOURCES = or1k/boards/orpsocrefdesign.S @CONFIG_RISCV_TRUE@riscv_libgloss_a_CPPFLAGS = -I$(srcdir)/riscv @CONFIG_RISCV_TRUE@riscv_libgloss_a_SOURCES = \ @CONFIG_RISCV_TRUE@ riscv/sys_access.c \ @@ -2161,15 +2280,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_103) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_108) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_107) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_112) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_104) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_109) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_108) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_113) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_105) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_110) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_109) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_114) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2177,8 +2296,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_106) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_111) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_110) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_115) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2189,7 +2308,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2211,7 +2330,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2274,8 +2393,6 @@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ tic6x/Makefile: $(top_builddir)/config.status $(top_srcdir)/tic6x/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -or1k/Makefile: $(top_builddir)/config.status $(top_srcdir)/or1k/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ pru/Makefile: $(top_builddir)/config.status $(top_srcdir)/pru/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ sparc/libsys/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc/libsys/Makefile.in @@ -2847,6 +2964,14 @@ nds32/crt0.$(OBJEXT): nds32/$(am__dirstamp) \ nds32/$(DEPDIR)/$(am__dirstamp) nds32/crt1.$(OBJEXT): nds32/$(am__dirstamp) \ nds32/$(DEPDIR)/$(am__dirstamp) +or1k/$(am__dirstamp): + @$(MKDIR_P) or1k + @: > or1k/$(am__dirstamp) +or1k/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) or1k/$(DEPDIR) + @: > or1k/$(DEPDIR)/$(am__dirstamp) +or1k/crt0.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) rl78/$(am__dirstamp): @$(MKDIR_P) rl78 @: > rl78/$(am__dirstamp) @@ -3308,6 +3433,108 @@ nios2/libnios2.a: $(nios2_libnios2_a_OBJECTS) $(nios2_libnios2_a_DEPENDENCIES) $ $(AM_V_at)-rm -f nios2/libnios2.a $(AM_V_AR)$(nios2_libnios2_a_AR) nios2/libnios2.a $(nios2_libnios2_a_OBJECTS) $(nios2_libnios2_a_LIBADD) $(AM_V_at)$(RANLIB) nios2/libnios2.a +or1k/boards/$(am__dirstamp): + @$(MKDIR_P) or1k/boards + @: > or1k/boards/$(am__dirstamp) +or1k/boards/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) or1k/boards/$(DEPDIR) + @: > or1k/boards/$(DEPDIR)/$(am__dirstamp) +or1k/boards/atlys.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-atlys.a: $(or1k_libboard_atlys_a_OBJECTS) $(or1k_libboard_atlys_a_DEPENDENCIES) $(EXTRA_or1k_libboard_atlys_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-atlys.a + $(AM_V_AR)$(or1k_libboard_atlys_a_AR) or1k/libboard-atlys.a $(or1k_libboard_atlys_a_OBJECTS) $(or1k_libboard_atlys_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-atlys.a +or1k/boards/de0_nano.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-de0_nano.a: $(or1k_libboard_de0_nano_a_OBJECTS) $(or1k_libboard_de0_nano_a_DEPENDENCIES) $(EXTRA_or1k_libboard_de0_nano_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-de0_nano.a + $(AM_V_AR)$(or1k_libboard_de0_nano_a_AR) or1k/libboard-de0_nano.a $(or1k_libboard_de0_nano_a_OBJECTS) $(or1k_libboard_de0_nano_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-de0_nano.a +or1k/boards/ml501.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-ml501.a: $(or1k_libboard_ml501_a_OBJECTS) $(or1k_libboard_ml501_a_DEPENDENCIES) $(EXTRA_or1k_libboard_ml501_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-ml501.a + $(AM_V_AR)$(or1k_libboard_ml501_a_AR) or1k/libboard-ml501.a $(or1k_libboard_ml501_a_OBJECTS) $(or1k_libboard_ml501_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-ml501.a +or1k/boards/optimsoc.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-optimsoc.a: $(or1k_libboard_optimsoc_a_OBJECTS) $(or1k_libboard_optimsoc_a_DEPENDENCIES) $(EXTRA_or1k_libboard_optimsoc_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-optimsoc.a + $(AM_V_AR)$(or1k_libboard_optimsoc_a_AR) or1k/libboard-optimsoc.a $(or1k_libboard_optimsoc_a_OBJECTS) $(or1k_libboard_optimsoc_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-optimsoc.a +or1k/boards/or1ksim-uart.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-or1ksim-uart.a: $(or1k_libboard_or1ksim_uart_a_OBJECTS) $(or1k_libboard_or1ksim_uart_a_DEPENDENCIES) $(EXTRA_or1k_libboard_or1ksim_uart_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-or1ksim-uart.a + $(AM_V_AR)$(or1k_libboard_or1ksim_uart_a_AR) or1k/libboard-or1ksim-uart.a $(or1k_libboard_or1ksim_uart_a_OBJECTS) $(or1k_libboard_or1ksim_uart_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-or1ksim-uart.a +or1k/boards/or1ksim.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-or1ksim.a: $(or1k_libboard_or1ksim_a_OBJECTS) $(or1k_libboard_or1ksim_a_DEPENDENCIES) $(EXTRA_or1k_libboard_or1ksim_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-or1ksim.a + $(AM_V_AR)$(or1k_libboard_or1ksim_a_AR) or1k/libboard-or1ksim.a $(or1k_libboard_or1ksim_a_OBJECTS) $(or1k_libboard_or1ksim_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-or1ksim.a +or1k/boards/ordb1a3pe1500.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-ordb1a3pe1500.a: $(or1k_libboard_ordb1a3pe1500_a_OBJECTS) $(or1k_libboard_ordb1a3pe1500_a_DEPENDENCIES) $(EXTRA_or1k_libboard_ordb1a3pe1500_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-ordb1a3pe1500.a + $(AM_V_AR)$(or1k_libboard_ordb1a3pe1500_a_AR) or1k/libboard-ordb1a3pe1500.a $(or1k_libboard_ordb1a3pe1500_a_OBJECTS) $(or1k_libboard_ordb1a3pe1500_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-ordb1a3pe1500.a +or1k/boards/ordb2a.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-ordb2a.a: $(or1k_libboard_ordb2a_a_OBJECTS) $(or1k_libboard_ordb2a_a_DEPENDENCIES) $(EXTRA_or1k_libboard_ordb2a_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-ordb2a.a + $(AM_V_AR)$(or1k_libboard_ordb2a_a_AR) or1k/libboard-ordb2a.a $(or1k_libboard_ordb2a_a_OBJECTS) $(or1k_libboard_ordb2a_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-ordb2a.a +or1k/boards/orpsocrefdesign.$(OBJEXT): or1k/boards/$(am__dirstamp) \ + or1k/boards/$(DEPDIR)/$(am__dirstamp) + +or1k/libboard-orpsocrefdesign.a: $(or1k_libboard_orpsocrefdesign_a_OBJECTS) $(or1k_libboard_orpsocrefdesign_a_DEPENDENCIES) $(EXTRA_or1k_libboard_orpsocrefdesign_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libboard-orpsocrefdesign.a + $(AM_V_AR)$(or1k_libboard_orpsocrefdesign_a_AR) or1k/libboard-orpsocrefdesign.a $(or1k_libboard_orpsocrefdesign_a_OBJECTS) $(or1k_libboard_orpsocrefdesign_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libboard-orpsocrefdesign.a +or1k/syscalls.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/or1k_uart.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/outbyte.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/caches-asm.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/exceptions.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/exceptions-asm.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/interrupts.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/interrupts-asm.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/mmu-asm.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/timer.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/sbrk.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/impure.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/util.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) +or1k/sync-asm.$(OBJEXT): or1k/$(am__dirstamp) \ + or1k/$(DEPDIR)/$(am__dirstamp) + +or1k/libor1k.a: $(or1k_libor1k_a_OBJECTS) $(or1k_libor1k_a_DEPENDENCIES) $(EXTRA_or1k_libor1k_a_DEPENDENCIES) or1k/$(am__dirstamp) + $(AM_V_at)-rm -f or1k/libor1k.a + $(AM_V_AR)$(or1k_libor1k_a_AR) or1k/libor1k.a $(or1k_libor1k_a_OBJECTS) $(or1k_libor1k_a_LIBADD) + $(AM_V_at)$(RANLIB) or1k/libor1k.a riscv/$(am__dirstamp): @$(MKDIR_P) riscv @: > riscv/$(am__dirstamp) @@ -3925,6 +4152,8 @@ mostlyclean-compile: -rm -f msp430/*.$(OBJEXT) -rm -f nds32/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT) + -rm -f or1k/*.$(OBJEXT) + -rm -f or1k/boards/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) -rm -f rl78/*.$(OBJEXT) -rm -f rx/*.$(OBJEXT) @@ -4285,6 +4514,30 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-io-write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-kill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@nios2/$(DEPDIR)/nios2_libnios2_a-sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/caches-asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/exceptions-asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/exceptions.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/impure.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/interrupts-asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/interrupts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/mmu-asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/or1k_uart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/outbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/sync-asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/$(DEPDIR)/util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/atlys.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/de0_nano.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/ml501.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/optimsoc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/or1ksim-uart.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/or1ksim.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/ordb1a3pe1500.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/ordb2a.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/orpsocrefdesign.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_chdir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_chmod.Po@am__quote@ @@ -7297,6 +7550,10 @@ distclean-generic: -rm -f nds32/$(am__dirstamp) -rm -f nios2/$(DEPDIR)/$(am__dirstamp) -rm -f nios2/$(am__dirstamp) + -rm -f or1k/$(DEPDIR)/$(am__dirstamp) + -rm -f or1k/$(am__dirstamp) + -rm -f or1k/boards/$(DEPDIR)/$(am__dirstamp) + -rm -f or1k/boards/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) -rm -f rl78/$(DEPDIR)/$(am__dirstamp) @@ -7330,7 +7587,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7473,7 +7730,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index cee8a1b839..089d5471ba 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -660,6 +660,8 @@ CONFIG_RL78_FALSE CONFIG_RL78_TRUE CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE +CONFIG_OR1K_FALSE +CONFIG_OR1K_TRUE CONFIG_NIOS2_FALSE CONFIG_NIOS2_TRUE CONFIG_NDS32_FALSE @@ -2984,9 +2986,7 @@ case "${target}" in config_iq2000=true ;; or1k-*-* | or1knd-*-* ) - ac_config_files="$ac_config_files or1k/Makefile" - - subdirs="$subdirs or1k" + config_or1k=true ;; pru-*-*) ac_config_files="$ac_config_files pru/Makefile" @@ -3167,6 +3167,14 @@ else CONFIG_NIOS2_FALSE= fi + if test x$config_or1k = xtrue; then + CONFIG_OR1K_TRUE= + CONFIG_OR1K_FALSE='#' +else + CONFIG_OR1K_TRUE='#' + CONFIG_OR1K_FALSE= +fi + if test x$config_riscv = xtrue; then CONFIG_RISCV_TRUE= CONFIG_RISCV_FALSE='#' @@ -5782,6 +5790,10 @@ if test -z "${CONFIG_NIOS2_TRUE}" && test -z "${CONFIG_NIOS2_FALSE}"; then as_fn_error $? "conditional \"CONFIG_NIOS2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_OR1K_TRUE}" && test -z "${CONFIG_OR1K_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_OR1K\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_RISCV_TRUE}" && test -z "${CONFIG_RISCV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RISCV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6481,7 +6493,6 @@ do "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; - "or1k/Makefile") CONFIG_FILES="$CONFIG_FILES or1k/Makefile" ;; "pru/Makefile") CONFIG_FILES="$CONFIG_FILES pru/Makefile" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "sparc/libsys/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/libsys/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index bb11a0ee07..2099136b33 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -215,8 +215,7 @@ case "${target}" in config_iq2000=true ;; or1k-*-* | or1knd-*-* ) - AC_CONFIG_FILES([or1k/Makefile]) - subdirs="$subdirs or1k" + config_or1k=true ;; pru-*-*) AC_CONFIG_FILES([pru/Makefile]) @@ -233,7 +232,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v epiphany frv i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 - nds32 nios2 riscv rl78 rx v850 visium wince xstormy16 xtensa + nds32 nios2 or1k riscv rl78 rx v850 visium wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/or1k/Makefile.in b/libgloss/or1k/Makefile.in deleted file mode 100644 index c75d6e4546..0000000000 --- a/libgloss/or1k/Makefile.in +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 1998 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -# object files needed -COMMON_FILES = syscalls \ - or1k_uart \ - outbyte \ - caches-asm \ - exceptions \ - exceptions-asm \ - interrupts \ - interrupts-asm \ - mmu-asm \ - timer \ - sbrk \ - impure \ - util \ - sync-asm - -LIBOR1K_FILES = $(COMMON_FILES) -LIBOR1K_OBJS = $(addsuffix .o,$(LIBOR1K_FILES)) - -BOARDS = atlys \ - de0_nano \ - ml501 \ - optimsoc \ - or1ksim \ - or1ksim-uart \ - ordb1a3pe1500 \ - ordb2a \ - orpsocrefdesign - -BOARD_LIBS = $(addprefix libboard-,$(addsuffix .a,$(BOARDS))) -BOARD_OBJS = $(addprefix libboard-,$(addsuffix .o,$(BOARDS))) - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -OUTPUTS = libor1k.a crt0.o ${BOARD_LIBS} - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - - -all: ${OUTPUTS} - -# -# here's where we build the library for each target -# - -libor1k.a: $(LIBOR1K_OBJS) - ${AR} ${ARFLAGS} $@ $(LIBOR1K_OBJS) - ${RANLIB} $@ - -libboard-%.o: boards/%.S - ${CC} ${CFLAGS} -o $@ -c $< - -libboard-%.o: boards/%.c - ${CC} ${CFLAGS} -o $@ -c $< - -libboard-%.a: libboard-%.o - ${AR} ${ARFLAGS} $@ $< - ${RANLIB} $@ - -doc: - -clean mostlyclean: - rm -f $(OUTPUTS) $(BOARD_LIBS) *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.status $(OUTPUTS) - -.PHONY: install info install-info clean-info -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} $(DESTDIR)$(tooldir)/include - @for outputs in ${OUTPUTS}; do\ - $(INSTALL_DATA) $${outputs} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - $(INSTALL_DATA) ${srcdir}/include/or1k-support.h $(DESTDIR)$(tooldir)/include/ - $(INSTALL_DATA) ${srcdir}/include/or1k-sprs.h $(DESTDIR)$(tooldir)/include/ - $(INSTALL_DATA) ${srcdir}/include/or1k-asm.h $(DESTDIR)$(tooldir)/include/ - $(INSTALL_DATA) ${srcdir}/include/or1k-nop.h $(DESTDIR)$(tooldir)/include/ - -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/or1k/Makefile.inc b/libgloss/or1k/Makefile.inc new file mode 100644 index 0000000000..ecb7a83df5 --- /dev/null +++ b/libgloss/or1k/Makefile.inc @@ -0,0 +1,66 @@ +## Copyright (c) 1998 Cygnus Support +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +includetool_DATA += \ + %D%/include/or1k-asm.h \ + %D%/include/or1k-nop.h \ + %D%/include/or1k-sprs.h \ + %D%/include/or1k-support.h + +multilibtool_LIBRARIES += %D%/libor1k.a +%C%_libor1k_a_SOURCES = \ + %D%/syscalls.c \ + %D%/or1k_uart.c \ + %D%/outbyte.c \ + %D%/caches-asm.S \ + %D%/exceptions.c \ + %D%/exceptions-asm.S \ + %D%/interrupts.c \ + %D%/interrupts-asm.S \ + %D%/mmu-asm.S \ + %D%/timer.c \ + %D%/sbrk.c \ + %D%/impure.c \ + %D%/util.c \ + %D%/sync-asm.S + +## Now all the board definitions. + +multilibtool_LIBRARIES += %D%/libboard-atlys.a +%C%_libboard_atlys_a_SOURCES = %D%/boards/atlys.S + +multilibtool_LIBRARIES += %D%/libboard-de0_nano.a +%C%_libboard_de0_nano_a_SOURCES = %D%/boards/de0_nano.S + +multilibtool_LIBRARIES += %D%/libboard-ml501.a +%C%_libboard_ml501_a_SOURCES = %D%/boards/ml501.S + +multilibtool_LIBRARIES += %D%/libboard-optimsoc.a +%C%_libboard_optimsoc_a_SOURCES = %D%/boards/optimsoc.S + +multilibtool_LIBRARIES += %D%/libboard-or1ksim.a +%C%_libboard_or1ksim_a_SOURCES = %D%/boards/or1ksim.S + +multilibtool_LIBRARIES += %D%/libboard-or1ksim-uart.a +%C%_libboard_or1ksim_uart_a_SOURCES = %D%/boards/or1ksim-uart.S + +multilibtool_LIBRARIES += %D%/libboard-ordb1a3pe1500.a +%C%_libboard_ordb1a3pe1500_a_SOURCES = %D%/boards/ordb1a3pe1500.S + +multilibtool_LIBRARIES += %D%/libboard-ordb2a.a +%C%_libboard_ordb2a_a_SOURCES = %D%/boards/ordb2a.S + +multilibtool_LIBRARIES += %D%/libboard-orpsocrefdesign.a +%C%_libboard_orpsocrefdesign_a_SOURCES = %D%/boards/orpsocrefdesign.S diff --git a/libgloss/or1k/boards/README b/libgloss/or1k/boards/README index b6c5abf92c..290b798b55 100644 --- a/libgloss/or1k/boards/README +++ b/libgloss/or1k/boards/README @@ -60,6 +60,5 @@ steps: implementation. It is recommended to do so in assembler board files to keep the ability to overwrite the default implementation by the user. -When you are done with your board, add it to libgloss/or1k/Makefile.in to the -BOARDS variable and compile. - +When you are done with your board, add it to libgloss/or1k/Makefile.inc like the +other libboard-*.a definitions and compile. From ad17cf6d67f06a841a87d1a117b5c8b1883ac195 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 00:11:38 -0500 Subject: [PATCH 592/767] libgloss: merge fr30 into top-level Makefile Avoid a recursive make to speed things up a bit. A fr30-elf build shows installed objects & libs produce same code. A lot of code seems like it hasn't been migrated, but that's because it's all disabled/unused (i.e. all the test & mon code). It looks like a lot of copy & paste holdovers from the original port. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 399 ++++++++++++++++++++----------------- libgloss/configure | 19 +- libgloss/configure.ac | 6 +- libgloss/fr30/Makefile.in | 145 -------------- libgloss/fr30/Makefile.inc | 8 + 6 files changed, 244 insertions(+), 336 deletions(-) delete mode 100644 libgloss/fr30/Makefile.in create mode 100644 libgloss/fr30/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 5a6f82d413..79489a8c53 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -101,6 +101,9 @@ endif if CONFIG_EPIPHANY include epiphany/Makefile.inc endif +if CONFIG_FR30 +include fr30/Makefile.inc +endif if CONFIG_FRV include frv/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index cf33142b87..0ee441b7a8 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -172,116 +172,119 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_EPIPHANY_TRUE@am__append_23 = epiphany/crt0.o @CONFIG_EPIPHANY_TRUE@am__append_24 = epiphany/crt0.S @CONFIG_EPIPHANY_TRUE@am__append_25 = epiphany/libepiphany.a -@CONFIG_FRV_TRUE@am__append_26 = frv/crt0.o -@CONFIG_FRV_TRUE@am__append_27 = frv/crt0.S -@CONFIG_FRV_TRUE@am__append_28 = frv/libsim.a -@CONFIG_I386_TRUE@am__append_29 = i386/cygmon.ld i386/cygmon-crt0.o -@CONFIG_I386_TRUE@am__append_30 = i386/cygmon-crt0.S -@CONFIG_I386_TRUE@am__append_31 = i386/libcygmon.a -@CONFIG_I960_TRUE@am__append_32 = i960/crt0.o i960/mon960.ld -@CONFIG_I960_TRUE@am__append_33 = \ +@CONFIG_FR30_TRUE@am__append_26 = fr30/crt0.o +@CONFIG_FR30_TRUE@am__append_27 = fr30/crt0.s +@CONFIG_FR30_TRUE@am__append_28 = fr30/libsim.a +@CONFIG_FRV_TRUE@am__append_29 = frv/crt0.o +@CONFIG_FRV_TRUE@am__append_30 = frv/crt0.S +@CONFIG_FRV_TRUE@am__append_31 = frv/libsim.a +@CONFIG_I386_TRUE@am__append_32 = i386/cygmon.ld i386/cygmon-crt0.o +@CONFIG_I386_TRUE@am__append_33 = i386/cygmon-crt0.S +@CONFIG_I386_TRUE@am__append_34 = i386/libcygmon.a +@CONFIG_I960_TRUE@am__append_35 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_36 = \ @CONFIG_I960_TRUE@ i960/crt0.c -@CONFIG_I960_TRUE@am__append_34 = i960/libmon960.a -@CONFIG_IQ2000_TRUE@am__append_35 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_36 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_37 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_38 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_39 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_40 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_41 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_42 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_43 = lm32/crt0.S -@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_44 = \ +@CONFIG_I960_TRUE@am__append_37 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_38 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_39 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_40 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_41 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_42 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_43 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_44 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_45 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_46 = lm32/crt0.S +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_47 = \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva-stub.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/mon.specs -@CONFIG_M32R_TRUE@am__append_45 = m32r/crt0.o m32r/m32r-lib.o \ +@CONFIG_M32R_TRUE@am__append_48 = m32r/crt0.o m32r/m32r-lib.o \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.o -@CONFIG_M32R_TRUE@am__append_46 = m32r/crt0.S m32r/m32r-lib.c \ +@CONFIG_M32R_TRUE@am__append_49 = m32r/crt0.S m32r/m32r-lib.c \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.c -@CONFIG_M32R_TRUE@am__append_47 = m32r/libgloss.a m32r/libmon.a -@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_48 = \ +@CONFIG_M32R_TRUE@am__append_50 = m32r/libgloss.a m32r/libmon.a +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_51 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_49 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_52 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@am__append_50 = mcore/crt0.o -@CONFIG_MCORE_TRUE@am__append_51 = mcore/crt0.S -@CONFIG_MCORE_TRUE@am__append_52 = mcore/libsim.a mcore/libcmb.a -@CONFIG_MN10200_TRUE@am__append_53 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MCORE_TRUE@am__append_53 = mcore/crt0.o +@CONFIG_MCORE_TRUE@am__append_54 = mcore/crt0.S +@CONFIG_MCORE_TRUE@am__append_55 = mcore/libsim.a mcore/libcmb.a +@CONFIG_MN10200_TRUE@am__append_56 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_54 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_55 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_56 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_57 = \ +@CONFIG_MN10200_TRUE@am__append_57 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_58 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_59 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_60 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_58 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_61 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_59 = \ +@CONFIG_MN10300_TRUE@am__append_62 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_60 = \ +@CONFIG_MN10300_TRUE@am__append_63 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_61 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_62 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_63 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_64 = \ +@CONFIG_MN10300_TRUE@am__append_64 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_65 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_66 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_67 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_65 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_66 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_68 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_69 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_67 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_68 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_70 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_71 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_69 = \ +@CONFIG_MSP430_TRUE@am__append_72 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_70 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_73 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NDS32_TRUE@am__append_71 = \ +@CONFIG_NDS32_TRUE@am__append_74 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.o \ @CONFIG_NDS32_TRUE@ nds32/crt1.o -@CONFIG_NDS32_TRUE@am__append_72 = \ +@CONFIG_NDS32_TRUE@am__append_75 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.S \ @CONFIG_NDS32_TRUE@ nds32/crt1.S -@CONFIG_NDS32_TRUE@am__append_73 = nds32/libgloss.a -@CONFIG_NIOS2_TRUE@am__append_74 = \ +@CONFIG_NDS32_TRUE@am__append_76 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_77 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_75 = nios2/libnios2.a -@CONFIG_OR1K_TRUE@am__append_76 = or1k/crt0.o -@CONFIG_OR1K_TRUE@am__append_77 = or1k/crt0.S -@CONFIG_OR1K_TRUE@am__append_78 = \ +@CONFIG_NIOS2_TRUE@am__append_78 = nios2/libnios2.a +@CONFIG_OR1K_TRUE@am__append_79 = or1k/crt0.o +@CONFIG_OR1K_TRUE@am__append_80 = or1k/crt0.S +@CONFIG_OR1K_TRUE@am__append_81 = \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-asm.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-nop.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-sprs.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-support.h -@CONFIG_OR1K_TRUE@am__append_79 = or1k/libor1k.a or1k/libboard-atlys.a \ +@CONFIG_OR1K_TRUE@am__append_82 = or1k/libor1k.a or1k/libboard-atlys.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-de0_nano.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ml501.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-optimsoc.a \ @@ -290,55 +293,55 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_OR1K_TRUE@ or1k/libboard-ordb1a3pe1500.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ordb2a.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-orpsocrefdesign.a -@CONFIG_RISCV_TRUE@am__append_80 = \ +@CONFIG_RISCV_TRUE@am__append_83 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_81 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_84 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_82 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_85 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_83 = \ +@CONFIG_RL78_TRUE@am__append_86 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_84 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_85 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_87 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_88 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_86 = \ +@CONFIG_RX_TRUE@am__append_89 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_87 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_88 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_89 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_90 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_91 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_92 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_93 = visium/libserial.a visium/libsim.a \ +@CONFIG_RX_TRUE@am__append_90 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_91 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_92 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_93 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_94 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_95 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_96 = visium/libserial.a visium/libsim.a \ @CONFIG_VISIUM_TRUE@ visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_94 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_95 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_96 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_97 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_98 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_99 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_97 = \ +@CONFIG_XSTORMY16_TRUE@am__append_100 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_98 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_101 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_99 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_100 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_101 = \ +@CONFIG_XSTORMY16_TRUE@am__append_102 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_103 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_104 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -347,29 +350,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_102 = \ +@CONFIG_XTENSA_TRUE@am__append_105 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_103 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_104 = \ +@CONFIG_XTENSA_TRUE@am__append_106 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_105 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_106 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_109 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_110 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_112 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_113 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_114 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_115 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_109 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_110 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_112 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_113 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_114 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_115 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_116 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_117 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_118 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -397,9 +400,9 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ sparc_leon/Makefile sparc/Makefile mips/Makefile \ rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ - fr30/Makefile ft32/Makefile mep/Makefile microblaze/Makefile \ - mt/Makefile xc16x/Makefile m32c/Makefile spu/Makefile \ - tic6x/Makefile pru/Makefile sparc/libsys/Makefile + ft32/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ + xc16x/Makefile m32c/Makefile spu/Makefile tic6x/Makefile \ + pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -564,6 +567,11 @@ epiphany_libepiphany_a_LIBADD = @CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-syscalls.$(OBJEXT) \ @CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-ivthandlers.$(OBJEXT) epiphany_libepiphany_a_OBJECTS = $(am_epiphany_libepiphany_a_OBJECTS) +fr30_libsim_a_AR = $(AR) $(ARFLAGS) +fr30_libsim_a_LIBADD = +@CONFIG_FR30_TRUE@am_fr30_libsim_a_OBJECTS = fr30/syscalls.$(OBJEXT) \ +@CONFIG_FR30_TRUE@ putnum.$(OBJEXT) unlink.$(OBJEXT) +fr30_libsim_a_OBJECTS = $(am_fr30_libsim_a_OBJECTS) frv_libsim_a_AR = $(AR) $(ARFLAGS) frv_libsim_a_LIBADD = @CONFIG_FRV_TRUE@am_frv_libsim_a_OBJECTS = frv/fstat.$(OBJEXT) \ @@ -650,35 +658,36 @@ libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) @CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) @CONFIG_EPIPHANY_TRUE@am__objects_5 = epiphany/crt0.$(OBJEXT) -@CONFIG_FRV_TRUE@am__objects_6 = frv/crt0.$(OBJEXT) -@CONFIG_I386_TRUE@am__objects_7 = i386/cygmon-crt0.$(OBJEXT) -@CONFIG_I960_TRUE@am__objects_8 = i960/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_9 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_10 = lm32/crt0.$(OBJEXT) -@CONFIG_M32R_TRUE@am__objects_11 = m32r/crt0.$(OBJEXT) \ +@CONFIG_FR30_TRUE@am__objects_6 = fr30/crt0.$(OBJEXT) +@CONFIG_FRV_TRUE@am__objects_7 = frv/crt0.$(OBJEXT) +@CONFIG_I386_TRUE@am__objects_8 = i386/cygmon-crt0.$(OBJEXT) +@CONFIG_I960_TRUE@am__objects_9 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_10 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_11 = lm32/crt0.$(OBJEXT) +@CONFIG_M32R_TRUE@am__objects_12 = m32r/crt0.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-lib.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.$(OBJEXT) -@CONFIG_MCORE_TRUE@am__objects_12 = mcore/crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_13 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_14 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_13 = mcore/crt0.$(OBJEXT) +@CONFIG_MN10200_TRUE@am__objects_14 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_15 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_15 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_16 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_16 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_17 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_NDS32_TRUE@am__objects_17 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_18 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_OR1K_TRUE@am__objects_18 = or1k/crt0.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_19 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@am__objects_19 = or1k/crt0.$(OBJEXT) +@CONFIG_RL78_TRUE@am__objects_20 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_20 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_21 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_21 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_22 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_23 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_22 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_23 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_24 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_24 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_25 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -688,7 +697,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ - $(am__objects_23) $(am__objects_24) + $(am__objects_23) $(am__objects_24) $(am__objects_25) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -697,7 +706,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_25 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_26 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -707,16 +716,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_25) +@CONFIG_M32R_TRUE@ $(am__objects_26) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_25) +@CONFIG_M32R_TRUE@ $(am__objects_26) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_26 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_27 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -728,12 +737,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_26) +@CONFIG_MCORE_TRUE@ $(am__objects_27) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_26) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_27) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -760,7 +769,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_27 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_28 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -779,12 +788,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_27) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_28) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_27) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_28) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1034,7 +1043,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_28 = \ +@CONFIG_RISCV_TRUE@am__objects_29 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1067,7 +1076,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_28) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_29) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1123,11 +1132,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_29 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_30 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_29) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_30) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1147,7 +1156,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_29) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_30) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1173,13 +1182,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_30 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_31 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_31 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_32 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_30) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_31) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_31) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_32) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1274,18 +1283,18 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ - $(epiphany_libepiphany_a_SOURCES) $(frv_libsim_a_SOURCES) \ - $(i386_libcygmon_a_SOURCES) $(i960_libmon960_a_SOURCES) \ - $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ - $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ - $(m32r_libgloss_a_SOURCES) $(m32r_libmon_a_SOURCES) \ - $(mcore_libcmb_a_SOURCES) $(mcore_libsim_a_SOURCES) \ - $(mn10200_libeval_a_SOURCES) $(mn10300_libcygmon_a_SOURCES) \ - $(mn10300_libeval_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ - $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ - $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ - $(nds32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(or1k_libboard_atlys_a_SOURCES) \ + $(epiphany_libepiphany_a_SOURCES) $(fr30_libsim_a_SOURCES) \ + $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ + $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ + $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ + $(lm32_libgloss_a_SOURCES) $(m32r_libgloss_a_SOURCES) \ + $(m32r_libmon_a_SOURCES) $(mcore_libcmb_a_SOURCES) \ + $(mcore_libsim_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ + $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ + $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ + $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ + $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ + $(nios2_libnios2_a_SOURCES) $(or1k_libboard_atlys_a_SOURCES) \ $(or1k_libboard_de0_nano_a_SOURCES) \ $(or1k_libboard_ml501_a_SOURCES) \ $(or1k_libboard_optimsoc_a_SOURCES) \ @@ -1391,7 +1400,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_94) +VPATH = @srcdir@ $(am__append_97) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1517,7 +1526,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_100) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_103) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1527,29 +1536,29 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ - $(am__append_35) $(am__append_39) $(am__append_41) \ - $(am__append_44) $(am__append_45) $(am__append_48) \ - $(am__append_49) $(am__append_50) $(am__append_53) \ - $(am__append_57) $(am__append_58) $(am__append_59) \ - $(am__append_64) $(am__append_65) $(am__append_68) \ - $(am__append_71) $(am__append_74) $(am__append_76) \ - $(am__append_80) $(am__append_82) $(am__append_85) \ - $(am__append_88) $(am__append_91) $(am__append_96) \ - $(am__append_101) $(am__append_104) $(am__append_106) \ - $(am__append_111) + $(am__append_35) $(am__append_38) $(am__append_42) \ + $(am__append_44) $(am__append_47) $(am__append_48) \ + $(am__append_51) $(am__append_52) $(am__append_53) \ + $(am__append_56) $(am__append_60) $(am__append_61) \ + $(am__append_62) $(am__append_67) $(am__append_68) \ + $(am__append_71) $(am__append_74) $(am__append_77) \ + $(am__append_79) $(am__append_83) $(am__append_85) \ + $(am__append_88) $(am__append_91) $(am__append_94) \ + $(am__append_99) $(am__append_104) $(am__append_107) \ + $(am__append_109) $(am__append_114) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ - $(am__append_31) $(am__append_34) $(am__append_36) \ - $(am__append_40) $(am__append_42) $(am__append_47) \ - $(am__append_52) $(am__append_55) $(am__append_61) \ - $(am__append_62) $(am__append_67) $(am__append_70) \ - $(am__append_73) $(am__append_75) $(am__append_79) \ - $(am__append_81) $(am__append_84) $(am__append_87) \ - $(am__append_90) $(am__append_93) $(am__append_98) \ - $(am__append_103) $(am__append_105) + $(am__append_31) $(am__append_34) $(am__append_37) \ + $(am__append_39) $(am__append_43) $(am__append_45) \ + $(am__append_50) $(am__append_55) $(am__append_58) \ + $(am__append_64) $(am__append_65) $(am__append_70) \ + $(am__append_73) $(am__append_76) $(am__append_78) \ + $(am__append_82) $(am__append_84) $(am__append_87) \ + $(am__append_90) $(am__append_93) $(am__append_96) \ + $(am__append_101) $(am__append_106) $(am__append_108) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_16) $(am__append_78) +includetool_DATA = $(am__append_16) $(am__append_81) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) @@ -1565,12 +1574,12 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_33) \ - $(am__append_37) $(am__append_43) $(am__append_46) \ - $(am__append_51) $(am__append_54) $(am__append_60) \ - $(am__append_66) $(am__append_69) $(am__append_72) \ - $(am__append_77) $(am__append_83) $(am__append_86) \ - $(am__append_89) $(am__append_92) $(am__append_97) \ - $(am__append_102) + $(am__append_36) $(am__append_40) $(am__append_46) \ + $(am__append_49) $(am__append_54) $(am__append_57) \ + $(am__append_63) $(am__append_69) $(am__append_72) \ + $(am__append_75) $(am__append_80) $(am__append_86) \ + $(am__append_89) $(am__append_92) $(am__append_95) \ + $(am__append_100) $(am__append_105) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1743,6 +1752,11 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-syscalls.c \ @CONFIG_EPIPHANY_TRUE@ epiphany/epiphany-ivthandlers.S +@CONFIG_FR30_TRUE@fr30_libsim_a_SOURCES = \ +@CONFIG_FR30_TRUE@ fr30/syscalls.c \ +@CONFIG_FR30_TRUE@ putnum.c \ +@CONFIG_FR30_TRUE@ unlink.c + @CONFIG_FRV_TRUE@frv_libsim_a_SOURCES = \ @CONFIG_FRV_TRUE@ frv/fstat.c \ @CONFIG_FRV_TRUE@ frv/getpid.c \ @@ -2280,15 +2294,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_107) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_112) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_110) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_115) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_108) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_113) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_111) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_116) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_109) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_114) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_112) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_117) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2296,8 +2310,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_110) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_115) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_113) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_118) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2308,7 +2322,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2330,7 +2344,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2375,8 +2389,6 @@ cris/Makefile: $(top_builddir)/config.status $(top_srcdir)/cris/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ crx/Makefile: $(top_builddir)/config.status $(top_srcdir)/crx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -fr30/Makefile: $(top_builddir)/config.status $(top_srcdir)/fr30/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ ft32/Makefile: $(top_builddir)/config.status $(top_srcdir)/ft32/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mep/Makefile: $(top_builddir)/config.status $(top_srcdir)/mep/Makefile.in @@ -2688,6 +2700,19 @@ epiphany/libepiphany.a: $(epiphany_libepiphany_a_OBJECTS) $(epiphany_libepiphany $(AM_V_at)-rm -f epiphany/libepiphany.a $(AM_V_AR)$(epiphany_libepiphany_a_AR) epiphany/libepiphany.a $(epiphany_libepiphany_a_OBJECTS) $(epiphany_libepiphany_a_LIBADD) $(AM_V_at)$(RANLIB) epiphany/libepiphany.a +fr30/$(am__dirstamp): + @$(MKDIR_P) fr30 + @: > fr30/$(am__dirstamp) +fr30/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) fr30/$(DEPDIR) + @: > fr30/$(DEPDIR)/$(am__dirstamp) +fr30/syscalls.$(OBJEXT): fr30/$(am__dirstamp) \ + fr30/$(DEPDIR)/$(am__dirstamp) + +fr30/libsim.a: $(fr30_libsim_a_OBJECTS) $(fr30_libsim_a_DEPENDENCIES) $(EXTRA_fr30_libsim_a_DEPENDENCIES) fr30/$(am__dirstamp) + $(AM_V_at)-rm -f fr30/libsim.a + $(AM_V_AR)$(fr30_libsim_a_AR) fr30/libsim.a $(fr30_libsim_a_OBJECTS) $(fr30_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) fr30/libsim.a frv/$(am__dirstamp): @$(MKDIR_P) frv @: > frv/$(am__dirstamp) @@ -2881,6 +2906,8 @@ csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ csky/$(DEPDIR)/$(am__dirstamp) epiphany/crt0.$(OBJEXT): epiphany/$(am__dirstamp) \ epiphany/$(DEPDIR)/$(am__dirstamp) +fr30/crt0.$(OBJEXT): fr30/$(am__dirstamp) \ + fr30/$(DEPDIR)/$(am__dirstamp) frv/crt0.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) i386/cygmon-crt0.$(OBJEXT): i386/$(am__dirstamp) \ i386/$(DEPDIR)/$(am__dirstamp) @@ -4138,6 +4165,7 @@ mostlyclean-compile: -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) -rm -f epiphany/*.$(OBJEXT) + -rm -f fr30/*.$(OBJEXT) -rm -f frv/*.$(OBJEXT) -rm -f i386/*.$(OBJEXT) -rm -f i960/*.$(OBJEXT) @@ -4269,6 +4297,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@epiphany/$(DEPDIR)/write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@fr30/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/fstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/getpid.Po@am__quote@ @@ -7522,6 +7551,8 @@ distclean-generic: -rm -f doc/$(am__dirstamp) -rm -f epiphany/$(DEPDIR)/$(am__dirstamp) -rm -f epiphany/$(am__dirstamp) + -rm -f fr30/$(DEPDIR)/$(am__dirstamp) + -rm -f fr30/$(am__dirstamp) -rm -f frv/$(DEPDIR)/$(am__dirstamp) -rm -f frv/$(am__dirstamp) -rm -f i386/$(DEPDIR)/$(am__dirstamp) @@ -7587,7 +7618,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7730,7 +7761,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 089d5471ba..cc76b45574 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -690,6 +690,8 @@ CONFIG_I386_FALSE CONFIG_I386_TRUE CONFIG_FRV_FALSE CONFIG_FRV_TRUE +CONFIG_FR30_FALSE +CONFIG_FR30_TRUE CONFIG_EPIPHANY_FALSE CONFIG_EPIPHANY_TRUE CONFIG_D30V_FALSE @@ -2895,9 +2897,7 @@ case "${target}" in config_d30v=true ;; fr30-*-*) - ac_config_files="$ac_config_files fr30/Makefile" - - subdirs="$subdirs fr30" + config_fr30=true ;; frv*-*-*) config_frv=true @@ -3055,6 +3055,14 @@ else CONFIG_EPIPHANY_FALSE= fi + if test x$config_fr30 = xtrue; then + CONFIG_FR30_TRUE= + CONFIG_FR30_FALSE='#' +else + CONFIG_FR30_TRUE='#' + CONFIG_FR30_FALSE= +fi + if test x$config_frv = xtrue; then CONFIG_FRV_TRUE= CONFIG_FRV_FALSE='#' @@ -5734,6 +5742,10 @@ if test -z "${CONFIG_EPIPHANY_TRUE}" && test -z "${CONFIG_EPIPHANY_FALSE}"; then as_fn_error $? "conditional \"CONFIG_EPIPHANY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_FR30_TRUE}" && test -z "${CONFIG_FR30_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_FR30\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_FRV_TRUE}" && test -z "${CONFIG_FRV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_FRV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6484,7 +6496,6 @@ do "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; - "fr30/Makefile") CONFIG_FILES="$CONFIG_FILES fr30/Makefile" ;; "ft32/Makefile") CONFIG_FILES="$CONFIG_FILES ft32/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 2099136b33..8a0d613086 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -133,8 +133,7 @@ case "${target}" in config_d30v=true ;; fr30-*-*) - AC_CONFIG_FILES([fr30/Makefile]) - subdirs="$subdirs fr30" + config_fr30=true ;; frv*-*-*) config_frv=true @@ -230,7 +229,8 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v epiphany frv i386 i960 iq2000 libnosys lm32 + aarch64 arc arm bfin csky d30v epiphany fr30 frv i386 i960 iq2000 + libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 nds32 nios2 or1k riscv rl78 rx v850 visium wince xstormy16 xtensa ], [dnl diff --git a/libgloss/fr30/Makefile.in b/libgloss/fr30/Makefile.in deleted file mode 100644 index 4c988efb74..0000000000 --- a/libgloss/fr30/Makefile.in +++ /dev/null @@ -1,145 +0,0 @@ -# -# - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -OBJS = putnum.o unlink.o -CFLAGS = -g -SCRIPTS = - -# Here is all of the simulator stuff -SIM_SCRIPTS = -SIM_LDFLAGS = -SIM_BSP = libsim.a -SIM_CRT0 = crt0.o -SIM_OBJS = syscalls.o -SIM_TEST = sim-test -SIM_INSTALL = install-sim - -# Here is all of the mon960 stuff -MON_LDFLAGS = -MON_BSP = libmon960.a -MON_CRT0 = crt0.o -MON_OBJS = -MON_SCRIPTS = mon960.ld -MON_TEST = -MON_INSTALL = install-mon - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -# all: ${MON_CRT0} ${MON_BSP} -all: ${SIM_CRT0} ${SIM_BSP} - -# -# here's where we build the board support packages for each target -# -${SIM_BSP}: ${OBJS} ${SIM_OBJS} - ${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS} ${OBJS} - ${RANLIB} ${SIM_BSP} - -${MON_BSP}: ${OBJS} ${MON_OBJS} - ${AR} ${ARFLAGS} ${MON_BSP} ${MON_OBJS} ${OBJS} - ${RANLIB} ${MON_BSP} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: ${SIM_TEST} ${MVME_TEST} ${EVM_TEST} - -sim-test: sim-test.x sim-test.dis - -sim-test.x: test.o ${SIM_CRT0} ${SIM_BSP} - ${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \ - ${SIM_CRT0} test.o \ - -o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP} - -sim-test.dis: sim-test.x - ${OBJDUMP} -d sim-test.x > sim-test.dis - - -# -# -# -.c.S: - ${CC} ${CFLAGS_FOR_TARGET} -c $< - -simulator.o: simulator.S -sim-crt0.o: sim-crt0.S -mvme-crt0.o: mvme-crt0.S -mvme-exit.o: mvme-exit.S -mvme-inbyte.o: mvme-inbyte.S -mvme-outbyte.o: mvme-outbyte.S - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(MON_BSP) - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${SIM_INSTALL} - -install-mon: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${MON_CRT0} ${MON_BSP}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - set -e; for x in ${MON_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -install-sim: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib - set -e; for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib/$$x; done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/fr30/Makefile.inc b/libgloss/fr30/Makefile.inc new file mode 100644 index 0000000000..0ba7476c3f --- /dev/null +++ b/libgloss/fr30/Makefile.inc @@ -0,0 +1,8 @@ +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.s + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/syscalls.c \ + putnum.c \ + unlink.c From 3ecd983a7d7f7e674efbf2b43ede03ea4d1d42ec Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 00:20:10 -0500 Subject: [PATCH 593/767] libgloss: ft32: delete unused/invalid assembly file This is a .c file, not assembly, and it's a duplicate (same content) as the existing sim-lseek.c. Delete it since it's unused and doesn't actually compile. --- libgloss/ft32/sim-lseek.S | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 libgloss/ft32/sim-lseek.S diff --git a/libgloss/ft32/sim-lseek.S b/libgloss/ft32/sim-lseek.S deleted file mode 100644 index 488edf3dfa..0000000000 --- a/libgloss/ft32/sim-lseek.S +++ /dev/null @@ -1,31 +0,0 @@ -/* - * sim-lseek.S -- write interface for FT32 simulator - * - * Copyright (C) 2015 FTDI (support@ftdichip.com) - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include -#include - -/* - * lseek -- Since a simulated serial port is non-seekable, we return - * an error. - */ -off_t -_lseek (int fd, - off_t offset, - int whence) -{ - errno = ESPIPE; - return ((off_t)-1); -} From 026422b03095ae4da5ed61bad65499fea7a638a3 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 00:16:46 -0500 Subject: [PATCH 594/767] libgloss: merge ft32 into top-level Makefile Avoid a recursive make to speed things up a bit. A ft32-elf build shows installed objects & libs produce same code. Mention of ft32-elf-common.ld is dropped as it has never existed in the tree, and has been an (ignored) error in the past. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 465 ++++++++++++++++++++++--------------- libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/ft32/Makefile.in | 129 ---------- libgloss/ft32/Makefile.inc | 37 +++ 6 files changed, 341 insertions(+), 317 deletions(-) delete mode 100644 libgloss/ft32/Makefile.in create mode 100644 libgloss/ft32/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 79489a8c53..ad080d65a9 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -107,6 +107,9 @@ endif if CONFIG_FRV include frv/Makefile.inc endif +if CONFIG_FT32 +include ft32/Makefile.inc +endif if CONFIG_I386 include i386/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 0ee441b7a8..a6d5cbbf03 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -178,113 +178,119 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_FRV_TRUE@am__append_29 = frv/crt0.o @CONFIG_FRV_TRUE@am__append_30 = frv/crt0.S @CONFIG_FRV_TRUE@am__append_31 = frv/libsim.a -@CONFIG_I386_TRUE@am__append_32 = i386/cygmon.ld i386/cygmon-crt0.o -@CONFIG_I386_TRUE@am__append_33 = i386/cygmon-crt0.S -@CONFIG_I386_TRUE@am__append_34 = i386/libcygmon.a -@CONFIG_I960_TRUE@am__append_35 = i960/crt0.o i960/mon960.ld -@CONFIG_I960_TRUE@am__append_36 = \ +@CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_32 = \ +@CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@ ft32/sim.ld + +@CONFIG_FT32_TRUE@am__append_33 = ft32/crt0.o +@CONFIG_FT32_TRUE@am__append_34 = ft32/crt0.S +@CONFIG_FT32_TRUE@am__append_35 = ft32/libsim.a +@CONFIG_I386_TRUE@am__append_36 = i386/cygmon.ld i386/cygmon-crt0.o +@CONFIG_I386_TRUE@am__append_37 = i386/cygmon-crt0.S +@CONFIG_I386_TRUE@am__append_38 = i386/libcygmon.a +@CONFIG_I960_TRUE@am__append_39 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_40 = \ @CONFIG_I960_TRUE@ i960/crt0.c -@CONFIG_I960_TRUE@am__append_37 = i960/libmon960.a -@CONFIG_IQ2000_TRUE@am__append_38 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_39 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_40 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_41 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_42 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_43 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_44 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_45 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_46 = lm32/crt0.S -@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_47 = \ +@CONFIG_I960_TRUE@am__append_41 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_42 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_43 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_44 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_45 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_46 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_47 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_48 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_49 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_50 = lm32/crt0.S +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_51 = \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva-stub.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/mon.specs -@CONFIG_M32R_TRUE@am__append_48 = m32r/crt0.o m32r/m32r-lib.o \ +@CONFIG_M32R_TRUE@am__append_52 = m32r/crt0.o m32r/m32r-lib.o \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.o -@CONFIG_M32R_TRUE@am__append_49 = m32r/crt0.S m32r/m32r-lib.c \ +@CONFIG_M32R_TRUE@am__append_53 = m32r/crt0.S m32r/m32r-lib.c \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.c -@CONFIG_M32R_TRUE@am__append_50 = m32r/libgloss.a m32r/libmon.a -@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_51 = \ +@CONFIG_M32R_TRUE@am__append_54 = m32r/libgloss.a m32r/libmon.a +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_55 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_52 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_56 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@am__append_53 = mcore/crt0.o -@CONFIG_MCORE_TRUE@am__append_54 = mcore/crt0.S -@CONFIG_MCORE_TRUE@am__append_55 = mcore/libsim.a mcore/libcmb.a -@CONFIG_MN10200_TRUE@am__append_56 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MCORE_TRUE@am__append_57 = mcore/crt0.o +@CONFIG_MCORE_TRUE@am__append_58 = mcore/crt0.S +@CONFIG_MCORE_TRUE@am__append_59 = mcore/libsim.a mcore/libcmb.a +@CONFIG_MN10200_TRUE@am__append_60 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_57 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_58 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_59 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_60 = \ +@CONFIG_MN10200_TRUE@am__append_61 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_62 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_63 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_64 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_61 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_65 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_62 = \ +@CONFIG_MN10300_TRUE@am__append_66 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_63 = \ +@CONFIG_MN10300_TRUE@am__append_67 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_64 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_65 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_66 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_67 = \ +@CONFIG_MN10300_TRUE@am__append_68 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_69 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_70 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_71 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_68 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_69 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_72 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_73 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_70 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_71 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_74 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_75 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_72 = \ +@CONFIG_MSP430_TRUE@am__append_76 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_73 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_77 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NDS32_TRUE@am__append_74 = \ +@CONFIG_NDS32_TRUE@am__append_78 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.o \ @CONFIG_NDS32_TRUE@ nds32/crt1.o -@CONFIG_NDS32_TRUE@am__append_75 = \ +@CONFIG_NDS32_TRUE@am__append_79 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.S \ @CONFIG_NDS32_TRUE@ nds32/crt1.S -@CONFIG_NDS32_TRUE@am__append_76 = nds32/libgloss.a -@CONFIG_NIOS2_TRUE@am__append_77 = \ +@CONFIG_NDS32_TRUE@am__append_80 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_81 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_78 = nios2/libnios2.a -@CONFIG_OR1K_TRUE@am__append_79 = or1k/crt0.o -@CONFIG_OR1K_TRUE@am__append_80 = or1k/crt0.S -@CONFIG_OR1K_TRUE@am__append_81 = \ +@CONFIG_NIOS2_TRUE@am__append_82 = nios2/libnios2.a +@CONFIG_OR1K_TRUE@am__append_83 = or1k/crt0.o +@CONFIG_OR1K_TRUE@am__append_84 = or1k/crt0.S +@CONFIG_OR1K_TRUE@am__append_85 = \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-asm.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-nop.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-sprs.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-support.h -@CONFIG_OR1K_TRUE@am__append_82 = or1k/libor1k.a or1k/libboard-atlys.a \ +@CONFIG_OR1K_TRUE@am__append_86 = or1k/libor1k.a or1k/libboard-atlys.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-de0_nano.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ml501.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-optimsoc.a \ @@ -293,55 +299,55 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_OR1K_TRUE@ or1k/libboard-ordb1a3pe1500.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ordb2a.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-orpsocrefdesign.a -@CONFIG_RISCV_TRUE@am__append_83 = \ +@CONFIG_RISCV_TRUE@am__append_87 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_84 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_88 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_85 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_89 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_86 = \ +@CONFIG_RL78_TRUE@am__append_90 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_87 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_88 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_91 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_92 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_89 = \ +@CONFIG_RX_TRUE@am__append_93 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_90 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_91 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_92 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_93 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_94 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_95 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_96 = visium/libserial.a visium/libsim.a \ -@CONFIG_VISIUM_TRUE@ visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_97 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_98 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_99 = xstormy16/crt0.o \ +@CONFIG_RX_TRUE@am__append_94 = rx/libsim.a +@CONFIG_V850_TRUE@am__append_95 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_96 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_97 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_98 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_99 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_100 = visium/libserial.a \ +@CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a +@CONFIG_WINCE_TRUE@am__append_101 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_102 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_103 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_100 = \ +@CONFIG_XSTORMY16_TRUE@am__append_104 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_101 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_105 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_102 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_103 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_104 = \ +@CONFIG_XSTORMY16_TRUE@am__append_106 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_107 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_108 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -350,29 +356,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_105 = \ +@CONFIG_XTENSA_TRUE@am__append_109 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_106 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_107 = \ +@CONFIG_XTENSA_TRUE@am__append_110 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_108 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_112 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_109 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_110 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_112 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_113 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_114 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_115 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_116 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_117 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_118 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_113 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_114 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_115 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_116 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_117 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_118 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_119 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_120 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_121 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_122 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -400,9 +406,9 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ sparc_leon/Makefile sparc/Makefile mips/Makefile \ rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ - ft32/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ - xc16x/Makefile m32c/Makefile spu/Makefile tic6x/Makefile \ - pru/Makefile sparc/libsys/Makefile + mep/Makefile microblaze/Makefile mt/Makefile xc16x/Makefile \ + m32c/Makefile spu/Makefile tic6x/Makefile pru/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -586,6 +592,21 @@ frv_libsim_a_LIBADD = @CONFIG_FRV_TRUE@ frv/sim-unlink.$(OBJEXT) \ @CONFIG_FRV_TRUE@ frv/sim-write.$(OBJEXT) frv/stat.$(OBJEXT) frv_libsim_a_OBJECTS = $(am_frv_libsim_a_OBJECTS) +ft32_libsim_a_AR = $(AR) $(ARFLAGS) +ft32_libsim_a_LIBADD = +@CONFIG_FT32_TRUE@am_ft32_libsim_a_OBJECTS = ft32/fstat.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/getpid.$(OBJEXT) ft32/isatty.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/kill.$(OBJEXT) ft32/sbrk.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-close.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-exit.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-inbyte.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-lseek.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-open.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-read.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-time.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-unlink.$(OBJEXT) \ +@CONFIG_FT32_TRUE@ ft32/sim-write.$(OBJEXT) ft32/stat.$(OBJEXT) +ft32_libsim_a_OBJECTS = $(am_ft32_libsim_a_OBJECTS) i386_libcygmon_a_AR = $(AR) $(ARFLAGS) i386_libcygmon_a_LIBADD = @CONFIG_I386_TRUE@am_i386_libcygmon_a_OBJECTS = i386/i386_libcygmon_a-cygmon-salib.$(OBJEXT) \ @@ -660,34 +681,35 @@ libobjs_a_LIBADD = @CONFIG_EPIPHANY_TRUE@am__objects_5 = epiphany/crt0.$(OBJEXT) @CONFIG_FR30_TRUE@am__objects_6 = fr30/crt0.$(OBJEXT) @CONFIG_FRV_TRUE@am__objects_7 = frv/crt0.$(OBJEXT) -@CONFIG_I386_TRUE@am__objects_8 = i386/cygmon-crt0.$(OBJEXT) -@CONFIG_I960_TRUE@am__objects_9 = i960/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_10 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_11 = lm32/crt0.$(OBJEXT) -@CONFIG_M32R_TRUE@am__objects_12 = m32r/crt0.$(OBJEXT) \ +@CONFIG_FT32_TRUE@am__objects_8 = ft32/crt0.$(OBJEXT) +@CONFIG_I386_TRUE@am__objects_9 = i386/cygmon-crt0.$(OBJEXT) +@CONFIG_I960_TRUE@am__objects_10 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_11 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_12 = lm32/crt0.$(OBJEXT) +@CONFIG_M32R_TRUE@am__objects_13 = m32r/crt0.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-lib.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.$(OBJEXT) -@CONFIG_MCORE_TRUE@am__objects_13 = mcore/crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_14 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_15 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_14 = mcore/crt0.$(OBJEXT) +@CONFIG_MN10200_TRUE@am__objects_15 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_16 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_16 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_17 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_17 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_18 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_NDS32_TRUE@am__objects_18 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_19 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_OR1K_TRUE@am__objects_19 = or1k/crt0.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_20 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@am__objects_20 = or1k/crt0.$(OBJEXT) +@CONFIG_RL78_TRUE@am__objects_21 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_21 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_22 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_22 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_23 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_24 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_V850_TRUE@am__objects_23 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_24 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_25 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_25 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_26 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -697,7 +719,8 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ - $(am__objects_23) $(am__objects_24) $(am__objects_25) + $(am__objects_23) $(am__objects_24) $(am__objects_25) \ + $(am__objects_26) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -706,7 +729,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_26 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_27 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -716,16 +739,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_26) +@CONFIG_M32R_TRUE@ $(am__objects_27) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_26) +@CONFIG_M32R_TRUE@ $(am__objects_27) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_27 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_28 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -737,12 +760,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_27) +@CONFIG_MCORE_TRUE@ $(am__objects_28) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_27) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_28) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -769,7 +792,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_28 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_29 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -788,12 +811,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_28) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_29) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_28) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_29) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1043,7 +1066,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_29 = \ +@CONFIG_RISCV_TRUE@am__objects_30 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1076,7 +1099,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_29) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_30) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1132,11 +1155,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_30 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_31 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_30) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_31) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1156,7 +1179,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_30) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_31) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1182,13 +1205,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_31 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_32 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_32 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_33 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_31) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_32) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_32) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_33) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1284,17 +1307,18 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ $(epiphany_libepiphany_a_SOURCES) $(fr30_libsim_a_SOURCES) \ - $(frv_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \ - $(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \ - $(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \ - $(lm32_libgloss_a_SOURCES) $(m32r_libgloss_a_SOURCES) \ - $(m32r_libmon_a_SOURCES) $(mcore_libcmb_a_SOURCES) \ - $(mcore_libsim_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ - $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ - $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ - $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ - $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ - $(nios2_libnios2_a_SOURCES) $(or1k_libboard_atlys_a_SOURCES) \ + $(frv_libsim_a_SOURCES) $(ft32_libsim_a_SOURCES) \ + $(i386_libcygmon_a_SOURCES) $(i960_libmon960_a_SOURCES) \ + $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ + $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ + $(m32r_libgloss_a_SOURCES) $(m32r_libmon_a_SOURCES) \ + $(mcore_libcmb_a_SOURCES) $(mcore_libsim_a_SOURCES) \ + $(mn10200_libeval_a_SOURCES) $(mn10300_libcygmon_a_SOURCES) \ + $(mn10300_libeval_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ + $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ + $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ + $(nds32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ + $(or1k_libboard_atlys_a_SOURCES) \ $(or1k_libboard_de0_nano_a_SOURCES) \ $(or1k_libboard_ml501_a_SOURCES) \ $(or1k_libboard_optimsoc_a_SOURCES) \ @@ -1400,7 +1424,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_97) +VPATH = @srcdir@ $(am__append_101) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1526,7 +1550,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_103) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_107) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1536,29 +1560,31 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_26) $(am__append_29) $(am__append_32) \ - $(am__append_35) $(am__append_38) $(am__append_42) \ - $(am__append_44) $(am__append_47) $(am__append_48) \ - $(am__append_51) $(am__append_52) $(am__append_53) \ - $(am__append_56) $(am__append_60) $(am__append_61) \ - $(am__append_62) $(am__append_67) $(am__append_68) \ - $(am__append_71) $(am__append_74) $(am__append_77) \ - $(am__append_79) $(am__append_83) $(am__append_85) \ - $(am__append_88) $(am__append_91) $(am__append_94) \ - $(am__append_99) $(am__append_104) $(am__append_107) \ - $(am__append_109) $(am__append_114) + $(am__append_33) $(am__append_36) $(am__append_39) \ + $(am__append_42) $(am__append_46) $(am__append_48) \ + $(am__append_51) $(am__append_52) $(am__append_55) \ + $(am__append_56) $(am__append_57) $(am__append_60) \ + $(am__append_64) $(am__append_65) $(am__append_66) \ + $(am__append_71) $(am__append_72) $(am__append_75) \ + $(am__append_78) $(am__append_81) $(am__append_83) \ + $(am__append_87) $(am__append_89) $(am__append_92) \ + $(am__append_95) $(am__append_98) $(am__append_103) \ + $(am__append_108) $(am__append_111) $(am__append_113) \ + $(am__append_118) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ - $(am__append_31) $(am__append_34) $(am__append_37) \ - $(am__append_39) $(am__append_43) $(am__append_45) \ - $(am__append_50) $(am__append_55) $(am__append_58) \ - $(am__append_64) $(am__append_65) $(am__append_70) \ - $(am__append_73) $(am__append_76) $(am__append_78) \ - $(am__append_82) $(am__append_84) $(am__append_87) \ - $(am__append_90) $(am__append_93) $(am__append_96) \ - $(am__append_101) $(am__append_106) $(am__append_108) + $(am__append_31) $(am__append_35) $(am__append_38) \ + $(am__append_41) $(am__append_43) $(am__append_47) \ + $(am__append_49) $(am__append_54) $(am__append_59) \ + $(am__append_62) $(am__append_68) $(am__append_69) \ + $(am__append_74) $(am__append_77) $(am__append_80) \ + $(am__append_82) $(am__append_86) $(am__append_88) \ + $(am__append_91) $(am__append_94) $(am__append_97) \ + $(am__append_100) $(am__append_105) $(am__append_110) \ + $(am__append_112) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_16) $(am__append_81) +includetool_DATA = $(am__append_16) $(am__append_85) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) @@ -1573,13 +1599,13 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ - $(am__append_27) $(am__append_30) $(am__append_33) \ - $(am__append_36) $(am__append_40) $(am__append_46) \ - $(am__append_49) $(am__append_54) $(am__append_57) \ - $(am__append_63) $(am__append_69) $(am__append_72) \ - $(am__append_75) $(am__append_80) $(am__append_86) \ - $(am__append_89) $(am__append_92) $(am__append_95) \ - $(am__append_100) $(am__append_105) + $(am__append_27) $(am__append_30) $(am__append_34) \ + $(am__append_37) $(am__append_40) $(am__append_44) \ + $(am__append_50) $(am__append_53) $(am__append_58) \ + $(am__append_61) $(am__append_67) $(am__append_73) \ + $(am__append_76) $(am__append_79) $(am__append_84) \ + $(am__append_90) $(am__append_93) $(am__append_96) \ + $(am__append_99) $(am__append_104) $(am__append_109) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -1775,6 +1801,23 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_FRV_TRUE@ frv/sim-write.S \ @CONFIG_FRV_TRUE@ frv/stat.c +@CONFIG_FT32_TRUE@ft32_libsim_a_SOURCES = \ +@CONFIG_FT32_TRUE@ ft32/fstat.c \ +@CONFIG_FT32_TRUE@ ft32/getpid.c \ +@CONFIG_FT32_TRUE@ ft32/isatty.c \ +@CONFIG_FT32_TRUE@ ft32/kill.c \ +@CONFIG_FT32_TRUE@ ft32/sbrk.c \ +@CONFIG_FT32_TRUE@ ft32/sim-close.S \ +@CONFIG_FT32_TRUE@ ft32/sim-exit.S \ +@CONFIG_FT32_TRUE@ ft32/sim-inbyte.c \ +@CONFIG_FT32_TRUE@ ft32/sim-lseek.c \ +@CONFIG_FT32_TRUE@ ft32/sim-open.S \ +@CONFIG_FT32_TRUE@ ft32/sim-read.S \ +@CONFIG_FT32_TRUE@ ft32/sim-time.c \ +@CONFIG_FT32_TRUE@ ft32/sim-unlink.S \ +@CONFIG_FT32_TRUE@ ft32/sim-write.S \ +@CONFIG_FT32_TRUE@ ft32/stat.c + @CONFIG_I386_TRUE@i386_libcygmon_a_SOURCES = \ @CONFIG_I386_TRUE@ i386/cygmon-salib.c \ @CONFIG_I386_TRUE@ i386/cygmon-gmon.c @@ -2294,15 +2337,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_110) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_115) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_114) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_119) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_111) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_116) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_115) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_120) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_112) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_117) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_116) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_121) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2310,8 +2353,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_113) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_118) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_117) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_122) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2322,7 +2365,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2344,7 +2387,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2389,8 +2432,6 @@ cris/Makefile: $(top_builddir)/config.status $(top_srcdir)/cris/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ crx/Makefile: $(top_builddir)/config.status $(top_srcdir)/crx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -ft32/Makefile: $(top_builddir)/config.status $(top_srcdir)/ft32/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ mep/Makefile: $(top_builddir)/config.status $(top_srcdir)/mep/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ microblaze/Makefile: $(top_builddir)/config.status $(top_srcdir)/microblaze/Makefile.in @@ -2752,6 +2793,47 @@ frv/libsim.a: $(frv_libsim_a_OBJECTS) $(frv_libsim_a_DEPENDENCIES) $(EXTRA_frv_l $(AM_V_at)-rm -f frv/libsim.a $(AM_V_AR)$(frv_libsim_a_AR) frv/libsim.a $(frv_libsim_a_OBJECTS) $(frv_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) frv/libsim.a +ft32/$(am__dirstamp): + @$(MKDIR_P) ft32 + @: > ft32/$(am__dirstamp) +ft32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ft32/$(DEPDIR) + @: > ft32/$(DEPDIR)/$(am__dirstamp) +ft32/fstat.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/getpid.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/isatty.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/kill.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sbrk.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-close.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-exit.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-inbyte.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-lseek.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-open.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-read.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-time.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-unlink.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/sim-write.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) +ft32/stat.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) + +ft32/libsim.a: $(ft32_libsim_a_OBJECTS) $(ft32_libsim_a_DEPENDENCIES) $(EXTRA_ft32_libsim_a_DEPENDENCIES) ft32/$(am__dirstamp) + $(AM_V_at)-rm -f ft32/libsim.a + $(AM_V_AR)$(ft32_libsim_a_AR) ft32/libsim.a $(ft32_libsim_a_OBJECTS) $(ft32_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) ft32/libsim.a i386/$(am__dirstamp): @$(MKDIR_P) i386 @: > i386/$(am__dirstamp) @@ -2909,6 +2991,8 @@ epiphany/crt0.$(OBJEXT): epiphany/$(am__dirstamp) \ fr30/crt0.$(OBJEXT): fr30/$(am__dirstamp) \ fr30/$(DEPDIR)/$(am__dirstamp) frv/crt0.$(OBJEXT): frv/$(am__dirstamp) frv/$(DEPDIR)/$(am__dirstamp) +ft32/crt0.$(OBJEXT): ft32/$(am__dirstamp) \ + ft32/$(DEPDIR)/$(am__dirstamp) i386/cygmon-crt0.$(OBJEXT): i386/$(am__dirstamp) \ i386/$(DEPDIR)/$(am__dirstamp) i960/crt0.$(OBJEXT): i960/$(am__dirstamp) \ @@ -4167,6 +4251,7 @@ mostlyclean-compile: -rm -f epiphany/*.$(OBJEXT) -rm -f fr30/*.$(OBJEXT) -rm -f frv/*.$(OBJEXT) + -rm -f ft32/*.$(OBJEXT) -rm -f i386/*.$(OBJEXT) -rm -f i960/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT) @@ -4315,6 +4400,22 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/sim-write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@frv/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/sim-write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ft32/$(DEPDIR)/stat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i386/$(DEPDIR)/cygmon-crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i386/$(DEPDIR)/i386_libcygmon_a-cygmon-gmon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@i386/$(DEPDIR)/i386_libcygmon_a-cygmon-salib.Po@am__quote@ @@ -7555,6 +7656,8 @@ distclean-generic: -rm -f fr30/$(am__dirstamp) -rm -f frv/$(DEPDIR)/$(am__dirstamp) -rm -f frv/$(am__dirstamp) + -rm -f ft32/$(DEPDIR)/$(am__dirstamp) + -rm -f ft32/$(am__dirstamp) -rm -f i386/$(DEPDIR)/$(am__dirstamp) -rm -f i386/$(am__dirstamp) -rm -f i960/$(DEPDIR)/$(am__dirstamp) @@ -7618,7 +7721,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7761,7 +7864,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index cc76b45574..8d5a99df46 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -688,6 +688,8 @@ CONFIG_I960_FALSE CONFIG_I960_TRUE CONFIG_I386_FALSE CONFIG_I386_TRUE +CONFIG_FT32_FALSE +CONFIG_FT32_TRUE CONFIG_FRV_FALSE CONFIG_FRV_TRUE CONFIG_FR30_FALSE @@ -2903,9 +2905,7 @@ case "${target}" in config_frv=true ;; ft32*-*-*) - ac_config_files="$ac_config_files ft32/Makefile" - - subdirs="$subdirs ft32" + config_ft32=true ;; lm32*-*-*) config_lm32=true @@ -3071,6 +3071,14 @@ else CONFIG_FRV_FALSE= fi + if test x$config_ft32 = xtrue; then + CONFIG_FT32_TRUE= + CONFIG_FT32_FALSE='#' +else + CONFIG_FT32_TRUE='#' + CONFIG_FT32_FALSE= +fi + if test x$config_i386 = xtrue; then CONFIG_I386_TRUE= CONFIG_I386_FALSE='#' @@ -5750,6 +5758,10 @@ if test -z "${CONFIG_FRV_TRUE}" && test -z "${CONFIG_FRV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_FRV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_FT32_TRUE}" && test -z "${CONFIG_FT32_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_FT32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_I386_TRUE}" && test -z "${CONFIG_I386_FALSE}"; then as_fn_error $? "conditional \"CONFIG_I386\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6496,7 +6508,6 @@ do "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; - "ft32/Makefile") CONFIG_FILES="$CONFIG_FILES ft32/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 8a0d613086..b5d5f41b15 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -139,8 +139,7 @@ case "${target}" in config_frv=true ;; ft32*-*-*) - AC_CONFIG_FILES([ft32/Makefile]) - subdirs="$subdirs ft32" + config_ft32=true ;; lm32*-*-*) config_lm32=true @@ -229,7 +228,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v epiphany fr30 frv i386 i960 iq2000 + aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 nds32 nios2 or1k riscv rl78 rx v850 visium wince xstormy16 xtensa diff --git a/libgloss/ft32/Makefile.in b/libgloss/ft32/Makefile.in deleted file mode 100644 index 4fa84e3fb8..0000000000 --- a/libgloss/ft32/Makefile.in +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright (C) 2015 FTDI (support@ftdichip.com) -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/spro. This is the board support code for the -# ft32 target. - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = rc - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -LD_SCRIPTS = ft32-elf-common.ld sim.ld - -CRT0 = crt0.o -SIM_BSP = libsim.a -SIM_OBJS = fstat.o \ - getpid.o \ - isatty.o \ - kill.o \ - sbrk.o \ - sim-close.o \ - sim-exit.o \ - sim-inbyte.o \ - sim-lseek.o \ - sim-open.o \ - sim-read.o \ - sim-time.o \ - sim-unlink.o \ - sim-write.o \ - stat.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: $(CRT0) $(SIM_BSP) - -$(SIM_BSP): $(SIM_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -fstat.o: $(srcdir)/fstat.c -getpid.o: $(srcdir)/getpid.c -isatty.o: $(srcdir)/isatty.c -kill.o: $(srcdir)/kill.c -putnum.o: $(srcdir)/putnum.c -sbrk.o: $(srcdir)/sbrk.c -sim-close.o: $(srcdir)/sim-close.S -sim-exit.o: $(srcdir)/sim-exit.S -sim-inbyte.o: $(srcdir)/sim-inbyte.c -sim-lseek.o: $(srcdir)/sim-lseek.c -sim-open.o: $(srcdir)/sim-open.S -sim-read.o: $(srcdir)/sim-read.S -sim-time.o: $(srcdir)/sim-time.c -sim-unlink.o: $(srcdir)/sim-unlink.S -sim-write.o: $(srcdir)/sim-write.S -stat.o: $(srcdir)/stat.c - -install: $($(CPU)_INSTALL) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(SIM_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(SIM_BSP) - for x in ${LD_SCRIPTS}; do \ - ${INSTALL_DATA} ${srcdir}/$$x $(DESTDIR)${tooldir}/lib/$$x; \ - done; - -clean mostlyclean: - rm -f *.o *.a - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/ft32/Makefile.inc b/libgloss/ft32/Makefile.inc new file mode 100644 index 0000000000..344b109fa4 --- /dev/null +++ b/libgloss/ft32/Makefile.inc @@ -0,0 +1,37 @@ +## Copyright (C) 2015 FTDI (support@ftdichip.com) +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +if !HAVE_MULTISUBDIR +multilibtool_DATA += \ + %D%/sim.ld +endif + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/fstat.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/kill.c \ + %D%/sbrk.c \ + %D%/sim-close.S \ + %D%/sim-exit.S \ + %D%/sim-inbyte.c \ + %D%/sim-lseek.c \ + %D%/sim-open.S \ + %D%/sim-read.S \ + %D%/sim-time.c \ + %D%/sim-unlink.S \ + %D%/sim-write.S \ + %D%/stat.c From 50e0b04fbef7243aecf49e8334ec73af774b2d77 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 01:31:10 -0500 Subject: [PATCH 595/767] libgloss: sparc: always install erc32 sim files These are already compiled for all sparc targets, so we might as well install them all the time so they can be used with the erc32 sim. --- libgloss/sparc/Makefile.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libgloss/sparc/Makefile.in b/libgloss/sparc/Makefile.in index c99d92a63b..eac5a1c270 100644 --- a/libgloss/sparc/Makefile.in +++ b/libgloss/sparc/Makefile.in @@ -176,6 +176,9 @@ $(objdir)/cygmon.ld: $(srcdir)/@SPARC_CYGMONLDSCRIPTTEMPL@ install: $($(CPU)_INSTALL) ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) + $(INSTALL_DATA) $(objdir)/traps.o $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} + $(INSTALL_DATA) $(ERC32_CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} + $(INSTALL_DATA) $(ERC32_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} sparc-install: ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} @@ -195,9 +198,6 @@ slite-install: $(INSTALL_DATA) $(srcdir)/ex934.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} $(INSTALL_DATA) $(srcdir)/sparc86x.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} $(INSTALL_DATA) $(srcdir)/elfsim.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(ERC32_CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(ERC32_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(objdir)/traps.o $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} $(INSTALL_DATA) $(CYGMON_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} $(INSTALL_DATA) $(CYGMON_OBJS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} $(INSTALL_DATA) $(objdir)/cygmon.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} From 74674f2cc880bdcda585da1102aa00aaa374d28f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 00:42:13 -0500 Subject: [PATCH 596/767] libgloss: merge sparc into top-level Makefile Avoid a recursive make to speed things up a bit. A sparc-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 450 +++++++++++++++++++++++++++++------- libgloss/configure | 64 ++++- libgloss/configure.ac | 5 +- libgloss/sparc/Makefile.in | 289 ----------------------- libgloss/sparc/Makefile.inc | 141 +++++++++++ libgloss/sparc/acinclude.m4 | 6 +- 7 files changed, 575 insertions(+), 383 deletions(-) delete mode 100644 libgloss/sparc/Makefile.in create mode 100644 libgloss/sparc/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index ad080d65a9..a6c135b156 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -161,6 +161,9 @@ endif if CONFIG_RX include rx/Makefile.inc endif +if CONFIG_SPARC +include sparc/Makefile.inc +endif if CONFIG_V850 include v850/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index a6d5cbbf03..924439bf62 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -92,8 +92,8 @@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = $(am__EXEEXT_1) check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ - $(am__EXEEXT_5) -multilibtool_PROGRAMS = $(am__EXEEXT_6) + $(am__EXEEXT_5) $(am__EXEEXT_6) +multilibtool_PROGRAMS = $(am__EXEEXT_7) @HAVE_DOC_TRUE@am__append_1 = doc/porting.texi @CONFIG_AARCH64_TRUE@am__append_2 = aarch64/librdimon.a @CONFIG_AARCH64_TRUE@am__append_3 = \ @@ -323,31 +323,61 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_RX_TRUE@ rx/crtn.S @CONFIG_RX_TRUE@am__append_94 = rx/libsim.a -@CONFIG_V850_TRUE@am__append_95 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_96 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_97 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_98 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_99 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_100 = visium/libserial.a \ +@CONFIG_SPARC_TRUE@am__append_95 = sparc/crt0.o sparc/erc32-crt0.o +@CONFIG_SPARC_TRUE@am__append_96 = sparc/crt0.S sparc/erc32-crt0.S +@CONFIG_SPARC_TRUE@am__append_97 = sparc/liberc32.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_98 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-crt0.o \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-salib.o +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_99 = sparc/cygmon-crt0.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_100 = sparc/libcygmon.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_101 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex930.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex931.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex934.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparc86x.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/elfsim.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/traps.o + +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_102 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite930.a \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite931.a \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite934.a \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite86x.a + +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_103 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/tsc701.ld \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/crt0-701.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_104 = sparc/crt0-701.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_105 = sparc/libsplet701.a +@CONFIG_SPARC_TRUE@am__append_106 = sparc/erc32-test sparc/ex930-test \ +@CONFIG_SPARC_TRUE@ sparc/ex931-test sparc/ex934-test +@CONFIG_V850_TRUE@am__append_107 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_108 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_109 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_110 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_111 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_112 = visium/libserial.a \ @CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_101 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_102 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_103 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_113 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_114 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_115 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_104 = \ +@CONFIG_XSTORMY16_TRUE@am__append_116 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_105 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_117 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_106 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_107 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_108 = \ +@CONFIG_XSTORMY16_TRUE@am__append_118 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_119 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_120 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -356,29 +386,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_6) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_109 = \ +@CONFIG_XTENSA_TRUE@am__append_121 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_110 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_111 = \ +@CONFIG_XTENSA_TRUE@am__append_122 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_123 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_112 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_124 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_113 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_114 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_115 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_116 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_117 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_118 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_119 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_120 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_121 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_122 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_125 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_126 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_127 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_128 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_129 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_130 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_131 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_132 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -404,11 +434,10 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ - sparc_leon/Makefile sparc/Makefile mips/Makefile \ - rs6000/Makefile cr16/Makefile cris/Makefile crx/Makefile \ - mep/Makefile microblaze/Makefile mt/Makefile xc16x/Makefile \ - m32c/Makefile spu/Makefile tic6x/Makefile pru/Makefile \ - sparc/libsys/Makefile + sparc_leon/Makefile mips/Makefile rs6000/Makefile \ + cr16/Makefile cris/Makefile crx/Makefile mep/Makefile \ + microblaze/Makefile mt/Makefile xc16x/Makefile m32c/Makefile \ + spu/Makefile tic6x/Makefile pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -704,12 +733,16 @@ libobjs_a_LIBADD = @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) @CONFIG_RX_TRUE@am__objects_22 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_23 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_24 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_25 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_23 = sparc/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ sparc/erc32-crt0.$(OBJEXT) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_24 = sparc/cygmon-crt0.$(OBJEXT) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_25 = sparc/crt0-701.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_26 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_27 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_28 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_26 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_29 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -720,7 +753,8 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ - $(am__objects_26) + $(am__objects_26) $(am__objects_27) $(am__objects_28) \ + $(am__objects_29) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -729,7 +763,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_27 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_30 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -739,16 +773,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_27) +@CONFIG_M32R_TRUE@ $(am__objects_30) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_27) +@CONFIG_M32R_TRUE@ $(am__objects_30) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_28 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_31 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -760,12 +794,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_28) +@CONFIG_MCORE_TRUE@ $(am__objects_31) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_28) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_31) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -792,7 +826,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_29 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_32 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -811,12 +845,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_29) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_32) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_29) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_32) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1066,7 +1100,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_30 = \ +@CONFIG_RISCV_TRUE@am__objects_33 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1099,7 +1133,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_30) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_33) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1135,6 +1169,59 @@ rx_libsim_a_LIBADD = @CONFIG_RX_TRUE@ rx/abort.$(OBJEXT) rx/mcount.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/sigprocmask.$(OBJEXT) rx/sleep.$(OBJEXT) rx_libsim_a_OBJECTS = $(am_rx_libsim_a_OBJECTS) +sparc_libcygmon_a_AR = $(AR) $(ARFLAGS) +sparc_libcygmon_a_LIBADD = +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am_sparc_libcygmon_a_OBJECTS = sparc/cygmon-salib.$(OBJEXT) +sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS) +sparc_liberc32_a_AR = $(AR) $(ARFLAGS) +sparc_liberc32_a_LIBADD = +@CONFIG_SPARC_TRUE@am__objects_34 = close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) +@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_34) \ +@CONFIG_SPARC_TRUE@ sparc/erc32-io.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ sparc/traps.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@ sparc/fixctors.$(OBJEXT) +sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS) +sparc_libslite86x_a_AR = $(AR) $(ARFLAGS) +sparc_libslite86x_a_LIBADD = +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_35 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_34) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) +sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS) +sparc_libslite930_a_AR = $(AR) $(ARFLAGS) +sparc_libslite930_a_LIBADD = +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_34) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) +sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS) +sparc_libslite931_a_AR = $(AR) $(ARFLAGS) +sparc_libslite931_a_LIBADD = +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) +sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS) +sparc_libslite934_a_AR = $(AR) $(ARFLAGS) +sparc_libslite934_a_LIBADD = +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) +sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS) +sparc_libsplet701_a_AR = $(AR) $(ARFLAGS) +sparc_libsplet701_a_LIBADD = +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am_sparc_libsplet701_a_OBJECTS = sparc/sysc-701.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/salib-701.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/sparclet-stub.$(OBJEXT) +sparc_libsplet701_a_OBJECTS = $(am_sparc_libsplet701_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @CONFIG_V850_TRUE@am_v850_libsim_a_OBJECTS = v850/_exit.$(OBJEXT) \ @@ -1155,11 +1242,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_31 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_36 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_31) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_36) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1179,7 +1266,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_31) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_36) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1205,13 +1292,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_32 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_33 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_37 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_38 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_32) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_33) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_37) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_38) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1229,7 +1316,11 @@ xtensa_libsys_qemu_a_OBJECTS = $(am_xtensa_libsys_qemu_a_OBJECTS) @CONFIG_IQ2000_TRUE@am__EXEEXT_3 = iq2000/test$(EXEEXT) @CONFIG_MN10200_TRUE@am__EXEEXT_4 = mn10200/test$(EXEEXT) @CONFIG_MN10300_TRUE@am__EXEEXT_5 = mn10300/test$(EXEEXT) -@CONFIG_XSTORMY16_TRUE@am__EXEEXT_6 = xstormy16/eva_stub.elf$(EXEEXT) +@CONFIG_SPARC_TRUE@am__EXEEXT_6 = sparc/erc32-test$(EXEEXT) \ +@CONFIG_SPARC_TRUE@ sparc/ex930-test$(EXEEXT) \ +@CONFIG_SPARC_TRUE@ sparc/ex931-test$(EXEEXT) \ +@CONFIG_SPARC_TRUE@ sparc/ex934-test$(EXEEXT) +@CONFIG_XSTORMY16_TRUE@am__EXEEXT_7 = xstormy16/eva_stub.elf$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(multilibtool_PROGRAMS) bfin_sim_test_SOURCES = bfin/sim-test.c bfin_sim_test_OBJECTS = bfin/sim-test.$(OBJEXT) @@ -1247,6 +1338,18 @@ mn10300_test_OBJECTS = mn10300/test.$(OBJEXT) mn10300_test_LDADD = $(LDADD) mn10300_test_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(mn10300_test_LDFLAGS) $(LDFLAGS) -o $@ +@CONFIG_SPARC_TRUE@am_sparc_erc32_test_OBJECTS = sparc/test.$(OBJEXT) +sparc_erc32_test_OBJECTS = $(am_sparc_erc32_test_OBJECTS) +sparc_erc32_test_LDADD = $(LDADD) +@CONFIG_SPARC_TRUE@am_sparc_ex930_test_OBJECTS = sparc/test.$(OBJEXT) +sparc_ex930_test_OBJECTS = $(am_sparc_ex930_test_OBJECTS) +sparc_ex930_test_LDADD = $(LDADD) +@CONFIG_SPARC_TRUE@am_sparc_ex931_test_OBJECTS = sparc/test.$(OBJEXT) +sparc_ex931_test_OBJECTS = $(am_sparc_ex931_test_OBJECTS) +sparc_ex931_test_LDADD = $(LDADD) +@CONFIG_SPARC_TRUE@am_sparc_ex934_test_OBJECTS = sparc/test.$(OBJEXT) +sparc_ex934_test_OBJECTS = $(am_sparc_ex934_test_OBJECTS) +sparc_ex934_test_LDADD = $(LDADD) @CONFIG_WINCE_TRUE@am_wince_stub_exe_OBJECTS = \ @CONFIG_WINCE_TRUE@ wince_stub_exe-wince-stub.$(OBJEXT) wince_stub_exe_OBJECTS = $(am_wince_stub_exe_OBJECTS) @@ -1330,13 +1433,18 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(or1k_libor1k_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ $(rl78_libsim_a_SOURCES) $(rx_libsim_a_SOURCES) \ - $(v850_libsim_a_SOURCES) $(visium_libdebug_a_SOURCES) \ - $(visium_libserial_a_SOURCES) $(visium_libsim_a_SOURCES) \ - $(xstormy16_libeva_app_a_SOURCES) \ + $(sparc_libcygmon_a_SOURCES) $(sparc_liberc32_a_SOURCES) \ + $(sparc_libslite86x_a_SOURCES) $(sparc_libslite930_a_SOURCES) \ + $(sparc_libslite931_a_SOURCES) $(sparc_libslite934_a_SOURCES) \ + $(sparc_libsplet701_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(visium_libdebug_a_SOURCES) $(visium_libserial_a_SOURCES) \ + $(visium_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ - mn10200/test.c mn10300/test.c $(wince_stub_exe_SOURCES) \ + mn10200/test.c mn10300/test.c $(sparc_erc32_test_SOURCES) \ + $(sparc_ex930_test_SOURCES) $(sparc_ex931_test_SOURCES) \ + $(sparc_ex934_test_SOURCES) $(wince_stub_exe_SOURCES) \ $(xstormy16_eva_stub_elf_SOURCES) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) @@ -1424,7 +1532,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_101) +VPATH = @srcdir@ $(am__append_113) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1550,7 +1658,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_107) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_119) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1568,9 +1676,10 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_71) $(am__append_72) $(am__append_75) \ $(am__append_78) $(am__append_81) $(am__append_83) \ $(am__append_87) $(am__append_89) $(am__append_92) \ - $(am__append_95) $(am__append_98) $(am__append_103) \ - $(am__append_108) $(am__append_111) $(am__append_113) \ - $(am__append_118) + $(am__append_95) $(am__append_98) $(am__append_101) \ + $(am__append_103) $(am__append_107) $(am__append_110) \ + $(am__append_115) $(am__append_120) $(am__append_123) \ + $(am__append_125) $(am__append_130) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1581,8 +1690,9 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_74) $(am__append_77) $(am__append_80) \ $(am__append_82) $(am__append_86) $(am__append_88) \ $(am__append_91) $(am__append_94) $(am__append_97) \ - $(am__append_100) $(am__append_105) $(am__append_110) \ - $(am__append_112) + $(am__append_100) $(am__append_102) $(am__append_105) \ + $(am__append_109) $(am__append_112) $(am__append_117) \ + $(am__append_122) $(am__append_124) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) $(am__append_85) includesystooldir = $(tooldir)/include/sys @@ -1605,7 +1715,8 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_61) $(am__append_67) $(am__append_73) \ $(am__append_76) $(am__append_79) $(am__append_84) \ $(am__append_90) $(am__append_93) $(am__append_96) \ - $(am__append_99) $(am__append_104) $(am__append_109) + $(am__append_99) $(am__append_104) $(am__append_108) \ + $(am__append_111) $(am__append_116) $(am__append_121) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2238,6 +2349,62 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_RX_TRUE@ rx/sigprocmask.S \ @CONFIG_RX_TRUE@ rx/sleep.S +@CONFIG_SPARC_TRUE@AM_CPPFLAGS_sparc = -DTARGET_CPU_$(SPARC_CPU) +@CONFIG_SPARC_TRUE@sparc_common_stub_sources = \ +@CONFIG_SPARC_TRUE@ close.c \ +@CONFIG_SPARC_TRUE@ fstat.c \ +@CONFIG_SPARC_TRUE@ getpid.c \ +@CONFIG_SPARC_TRUE@ isatty.c \ +@CONFIG_SPARC_TRUE@ kill.c \ +@CONFIG_SPARC_TRUE@ lseek.c \ +@CONFIG_SPARC_TRUE@ open.c \ +@CONFIG_SPARC_TRUE@ print.c \ +@CONFIG_SPARC_TRUE@ putnum.c \ +@CONFIG_SPARC_TRUE@ read.c \ +@CONFIG_SPARC_TRUE@ sbrk.c \ +@CONFIG_SPARC_TRUE@ stat.c \ +@CONFIG_SPARC_TRUE@ unlink.c \ +@CONFIG_SPARC_TRUE@ write.c + +@CONFIG_SPARC_TRUE@sparc_liberc32_a_SOURCES = \ +@CONFIG_SPARC_TRUE@ $(sparc_common_stub_sources) \ +@CONFIG_SPARC_TRUE@ sparc/erc32-io.c \ +@CONFIG_SPARC_TRUE@ sparc/traps.S \ +@CONFIG_SPARC_TRUE@ sparc/erc32-stub.c \ +@CONFIG_SPARC_TRUE@ debug.c \ +@CONFIG_SPARC_TRUE@ sparc/fixctors.c + +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_SPARC_OBJ_FORMAT = sparc +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_SPARC_RAM_START = 0x4000 +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_SPARC64_OBJ_FORMAT = sparc:v9 +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_SPARC64_RAM_START = 0x4000 +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_SLITE_OBJ_FORMAT = sparc +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_SLITE_RAM_START = 0x40050000 +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc_libcygmon_a_SOURCES = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-salib.c + +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@sparc_libslite930_a_SOURCES = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(sparc_common_stub_sources) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.c \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.c \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.c + +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@sparc_libslite931_a_SOURCES = $(sparc_libslite930_a_SOURCES) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@sparc_libslite934_a_SOURCES = $(sparc_libslite930_a_SOURCES) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@sparc_libslite86x_a_SOURCES = $(sparc_libslite930_a_SOURCES) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@sparc_libsplet701_a_SOURCES = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/sysc-701.c \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/salib-701.c \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/sparclet-stub.c + +@CONFIG_SPARC_TRUE@sparc_erc32_test_SOURCES = sparc/test.c +@CONFIG_SPARC_TRUE@AM_LDFLAGS_sparc_erc32_test = -N -Wl,-T$(srcdir)/sparc/elfsim.ld -Wl,-Map,$@.map -nostdlib +@CONFIG_SPARC_TRUE@sparc_ex930_test_SOURCES = sparc/test.c +@CONFIG_SPARC_TRUE@AM_LDFLAGS_sparc_ex930_test = -N -Wl,-T$(srcdir)/sparc/ex930.ld -nostdlib +@CONFIG_SPARC_TRUE@sparc_ex931_test_SOURCES = sparc/test.c +@CONFIG_SPARC_TRUE@AM_LDFLAGS_sparc_ex931_test = -N -Wl,-T$(srcdir)/sparc/ex931.ld -nostdlib +@CONFIG_SPARC_TRUE@sparc_ex934_test_SOURCES = sparc/test.c +@CONFIG_SPARC_TRUE@AM_LDFLAGS_sparc_ex934_test = -N -Wl,-T$(srcdir)/sparc/ex934.ld -nostdlib @CONFIG_V850_TRUE@v850_libsim_a_SOURCES = \ @CONFIG_V850_TRUE@ v850/_exit.c \ @CONFIG_V850_TRUE@ v850/access.c \ @@ -2337,15 +2504,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_114) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_119) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_126) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_131) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_115) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_120) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_127) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_132) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_116) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_121) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_128) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_133) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2353,8 +2520,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_117) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_122) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_129) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_134) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2365,7 +2532,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2387,7 +2554,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2420,8 +2587,6 @@ pa/Makefile: $(top_builddir)/config.status $(top_srcdir)/pa/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ sparc_leon/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc_leon/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -sparc/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ mips/Makefile: $(top_builddir)/config.status $(top_srcdir)/mips/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rs6000/Makefile: $(top_builddir)/config.status $(top_srcdir)/rs6000/Makefile.in @@ -3104,6 +3269,20 @@ rx/$(DEPDIR)/$(am__dirstamp): rx/gcrt0.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) rx/crt0.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) rx/crtn.$(OBJEXT): rx/$(am__dirstamp) rx/$(DEPDIR)/$(am__dirstamp) +sparc/$(am__dirstamp): + @$(MKDIR_P) sparc + @: > sparc/$(am__dirstamp) +sparc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) sparc/$(DEPDIR) + @: > sparc/$(DEPDIR)/$(am__dirstamp) +sparc/crt0.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/erc32-crt0.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/cygmon-crt0.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/crt0-701.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) v850/$(am__dirstamp): @$(MKDIR_P) v850 @: > v850/$(am__dirstamp) @@ -3936,6 +4115,63 @@ rx/libsim.a: $(rx_libsim_a_OBJECTS) $(rx_libsim_a_DEPENDENCIES) $(EXTRA_rx_libsi $(AM_V_at)-rm -f rx/libsim.a $(AM_V_AR)$(rx_libsim_a_AR) rx/libsim.a $(rx_libsim_a_OBJECTS) $(rx_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) rx/libsim.a +sparc/cygmon-salib.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) + +sparc/libcygmon.a: $(sparc_libcygmon_a_OBJECTS) $(sparc_libcygmon_a_DEPENDENCIES) $(EXTRA_sparc_libcygmon_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/libcygmon.a + $(AM_V_AR)$(sparc_libcygmon_a_AR) sparc/libcygmon.a $(sparc_libcygmon_a_OBJECTS) $(sparc_libcygmon_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/libcygmon.a +sparc/erc32-io.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/traps.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/erc32-stub.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/fixctors.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) + +sparc/liberc32.a: $(sparc_liberc32_a_OBJECTS) $(sparc_liberc32_a_DEPENDENCIES) $(EXTRA_sparc_liberc32_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/liberc32.a + $(AM_V_AR)$(sparc_liberc32_a_AR) sparc/liberc32.a $(sparc_liberc32_a_OBJECTS) $(sparc_liberc32_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/liberc32.a +sparc/salib.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/sparcl-stub.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/cache.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) + +sparc/libslite86x.a: $(sparc_libslite86x_a_OBJECTS) $(sparc_libslite86x_a_DEPENDENCIES) $(EXTRA_sparc_libslite86x_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/libslite86x.a + $(AM_V_AR)$(sparc_libslite86x_a_AR) sparc/libslite86x.a $(sparc_libslite86x_a_OBJECTS) $(sparc_libslite86x_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/libslite86x.a + +sparc/libslite930.a: $(sparc_libslite930_a_OBJECTS) $(sparc_libslite930_a_DEPENDENCIES) $(EXTRA_sparc_libslite930_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/libslite930.a + $(AM_V_AR)$(sparc_libslite930_a_AR) sparc/libslite930.a $(sparc_libslite930_a_OBJECTS) $(sparc_libslite930_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/libslite930.a + +sparc/libslite931.a: $(sparc_libslite931_a_OBJECTS) $(sparc_libslite931_a_DEPENDENCIES) $(EXTRA_sparc_libslite931_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/libslite931.a + $(AM_V_AR)$(sparc_libslite931_a_AR) sparc/libslite931.a $(sparc_libslite931_a_OBJECTS) $(sparc_libslite931_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/libslite931.a + +sparc/libslite934.a: $(sparc_libslite934_a_OBJECTS) $(sparc_libslite934_a_DEPENDENCIES) $(EXTRA_sparc_libslite934_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/libslite934.a + $(AM_V_AR)$(sparc_libslite934_a_AR) sparc/libslite934.a $(sparc_libslite934_a_OBJECTS) $(sparc_libslite934_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/libslite934.a +sparc/sysc-701.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/salib-701.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) +sparc/sparclet-stub.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) + +sparc/libsplet701.a: $(sparc_libsplet701_a_OBJECTS) $(sparc_libsplet701_a_DEPENDENCIES) $(EXTRA_sparc_libsplet701_a_DEPENDENCIES) sparc/$(am__dirstamp) + $(AM_V_at)-rm -f sparc/libsplet701.a + $(AM_V_AR)$(sparc_libsplet701_a_AR) sparc/libsplet701.a $(sparc_libsplet701_a_OBJECTS) $(sparc_libsplet701_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc/libsplet701.a v850/_exit.$(OBJEXT): v850/$(am__dirstamp) \ v850/$(DEPDIR)/$(am__dirstamp) v850/access.$(OBJEXT): v850/$(am__dirstamp) \ @@ -4224,6 +4460,24 @@ mn10300/test.$(OBJEXT): mn10300/$(am__dirstamp) \ mn10300/test$(EXEEXT): $(mn10300_test_OBJECTS) $(mn10300_test_DEPENDENCIES) $(EXTRA_mn10300_test_DEPENDENCIES) mn10300/$(am__dirstamp) @rm -f mn10300/test$(EXEEXT) $(AM_V_CCLD)$(mn10300_test_LINK) $(mn10300_test_OBJECTS) $(mn10300_test_LDADD) $(LIBS) +sparc/test.$(OBJEXT): sparc/$(am__dirstamp) \ + sparc/$(DEPDIR)/$(am__dirstamp) + +sparc/erc32-test$(EXEEXT): $(sparc_erc32_test_OBJECTS) $(sparc_erc32_test_DEPENDENCIES) $(EXTRA_sparc_erc32_test_DEPENDENCIES) sparc/$(am__dirstamp) + @rm -f sparc/erc32-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sparc_erc32_test_OBJECTS) $(sparc_erc32_test_LDADD) $(LIBS) + +sparc/ex930-test$(EXEEXT): $(sparc_ex930_test_OBJECTS) $(sparc_ex930_test_DEPENDENCIES) $(EXTRA_sparc_ex930_test_DEPENDENCIES) sparc/$(am__dirstamp) + @rm -f sparc/ex930-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sparc_ex930_test_OBJECTS) $(sparc_ex930_test_LDADD) $(LIBS) + +sparc/ex931-test$(EXEEXT): $(sparc_ex931_test_OBJECTS) $(sparc_ex931_test_DEPENDENCIES) $(EXTRA_sparc_ex931_test_DEPENDENCIES) sparc/$(am__dirstamp) + @rm -f sparc/ex931-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sparc_ex931_test_OBJECTS) $(sparc_ex931_test_LDADD) $(LIBS) + +sparc/ex934-test$(EXEEXT): $(sparc_ex934_test_OBJECTS) $(sparc_ex934_test_DEPENDENCIES) $(EXTRA_sparc_ex934_test_DEPENDENCIES) sparc/$(am__dirstamp) + @rm -f sparc/ex934-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sparc_ex934_test_OBJECTS) $(sparc_ex934_test_LDADD) $(LIBS) wince/$(am__dirstamp): @$(MKDIR_P) wince @: > wince/$(am__dirstamp) @@ -4270,6 +4524,7 @@ mostlyclean-compile: -rm -f riscv/*.$(OBJEXT) -rm -f rl78/*.$(OBJEXT) -rm -f rx/*.$(OBJEXT) + -rm -f sparc/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) -rm -f visium/*.$(OBJEXT) -rm -f xstormy16/*.$(OBJEXT) @@ -4281,6 +4536,7 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isatty.Po@am__quote@ @@ -4816,6 +5072,22 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/utime.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@rx/$(DEPDIR)/write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/cache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/crt0-701.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/cygmon-crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/cygmon-salib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/erc32-crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/erc32-io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/erc32-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/fixctors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/salib-701.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/salib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/sparcl-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/sparclet-stub.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/sysc-701.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/traps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/chmod.Po@am__quote@ @@ -7694,6 +7966,8 @@ distclean-generic: -rm -f rl78/$(am__dirstamp) -rm -f rx/$(DEPDIR)/$(am__dirstamp) -rm -f rx/$(am__dirstamp) + -rm -f sparc/$(DEPDIR)/$(am__dirstamp) + -rm -f sparc/$(am__dirstamp) -rm -f v850/$(DEPDIR)/$(am__dirstamp) -rm -f v850/$(am__dirstamp) -rm -f visium/$(DEPDIR)/$(am__dirstamp) @@ -7721,7 +7995,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -7864,7 +8138,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -8038,6 +8312,12 @@ maintainer-clean-local: maintainer-clean-multi @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ $(AM_V_GEN)cp $< $@ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@mcore/cmb.specs: mcore/pe-cmb.specs @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ $(AM_V_GEN)cp $< $@ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@sparc/cygmon.ld: $(srcdir)/sparc/@SPARC_CYGMONLDSCRIPTTEMPL@ sparc/Makefile.inc +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ $(AM_V_GEN)sed 's/TARGET_OBJ_FORMAT/$(sparc_$(SPARC_CPU)_OBJ_FORMAT)/g;s/TARGET_RAM_START/$(sparc_$(SPARC_CPU)_RAM_START)/g;' < $< > $@ + +# check_PROGRAMS += sparc/dtor +# sparc_ex934_test_SOURCES = sparc/dtor.C +# sparc_ex934_test_LDFLAGS = $(AM_LDFLAGS) -N -Wl,-T$(srcdir)/sparc/elfsim.ld -nostdlib @CONFIG_XSTORMY16_TRUE@xstormy16/eva_stub.hex: xstormy16/eva_stub.elf @CONFIG_XSTORMY16_TRUE@ $(AM_V_GEN)$(OBJCOPY) -O ihex $< $@ diff --git a/libgloss/configure b/libgloss/configure index 8d5a99df46..66a740f26a 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -597,6 +597,12 @@ HAVE_XTENSA_BOARD_ESP32_FALSE HAVE_XTENSA_BOARD_ESP32_TRUE XTENSA_BOARD_ESP SPARC_CYGMONLDSCRIPTTEMPL +SPARC_BUILD_SLITE_FALSE +SPARC_BUILD_SLITE_TRUE +SPARC_BUILD_SPLET_FALSE +SPARC_BUILD_SPLET_TRUE +SPARC_BUILD_CYGMON_FALSE +SPARC_BUILD_CYGMON_TRUE SPARC_CPU MOXIE_BUILD_CRT0_FALSE MOXIE_BUILD_CRT0_TRUE @@ -654,6 +660,8 @@ CONFIG_VISIUM_FALSE CONFIG_VISIUM_TRUE CONFIG_V850_FALSE CONFIG_V850_TRUE +CONFIG_SPARC_FALSE +CONFIG_SPARC_TRUE CONFIG_RX_FALSE CONFIG_RX_TRUE CONFIG_RL78_FALSE @@ -2849,9 +2857,7 @@ case "${target}" in subdirs="$subdirs sparc_leon" ;; sparclet-*-aout* | sparc-*-elf* | sparc64-*-elf* | sparc86x-*-* | sparclite-*-*) - ac_config_files="$ac_config_files sparc/Makefile" - - subdirs="$subdirs sparc" + config_sparc=true ;; sh*-*-pe | mips*-*-pe | *arm*-wince-pe) config_wince=true @@ -3215,6 +3221,14 @@ else CONFIG_RX_FALSE= fi + if test x$config_sparc = xtrue; then + CONFIG_SPARC_TRUE= + CONFIG_SPARC_FALSE='#' +else + CONFIG_SPARC_TRUE='#' + CONFIG_SPARC_FALSE= +fi + if test x$config_v850 = xtrue; then CONFIG_V850_TRUE= CONFIG_V850_FALSE='#' @@ -5467,13 +5481,38 @@ fi SPARC_CPU=SPARC +SPARC_BUILD_CYGMON=true case ${target_cpu} in sparclite*) SPARC_CPU=SLITE ;; -sparclet*) SPARC_CPU=SPLET ;; +sparclet*) SPARC_CPU=SPLET SPARC_BUILD_CYGMON=false ;; sparc64*) SPARC_CPU=SPARC64 ;; sparc86x*) SPARC_CPU=SLITE ;; esac + if $SPARC_BUILD_CYGMON; then + SPARC_BUILD_CYGMON_TRUE= + SPARC_BUILD_CYGMON_FALSE='#' +else + SPARC_BUILD_CYGMON_TRUE='#' + SPARC_BUILD_CYGMON_FALSE= +fi + + if test "$SPARC_CPU" = "SPLET"; then + SPARC_BUILD_SPLET_TRUE= + SPARC_BUILD_SPLET_FALSE='#' +else + SPARC_BUILD_SPLET_TRUE='#' + SPARC_BUILD_SPLET_FALSE= +fi + + if test "$SPARC_CPU" = "SLITE"; then + SPARC_BUILD_SLITE_TRUE= + SPARC_BUILD_SLITE_FALSE='#' +else + SPARC_BUILD_SLITE_TRUE='#' + SPARC_BUILD_SLITE_FALSE= +fi + SPARC_CYGMONLDSCRIPTTEMPL=cygmon.ld.src case ${target_cpu} in @@ -5830,6 +5869,10 @@ if test -z "${CONFIG_RX_TRUE}" && test -z "${CONFIG_RX_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_SPARC_TRUE}" && test -z "${CONFIG_SPARC_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_SPARC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_V850_TRUE}" && test -z "${CONFIG_V850_FALSE}"; then as_fn_error $? "conditional \"CONFIG_V850\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -5878,6 +5921,18 @@ if test -z "${MOXIE_BUILD_CRT0_TRUE}" && test -z "${MOXIE_BUILD_CRT0_FALSE}"; th as_fn_error $? "conditional \"MOXIE_BUILD_CRT0\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${SPARC_BUILD_CYGMON_TRUE}" && test -z "${SPARC_BUILD_CYGMON_FALSE}"; then + as_fn_error $? "conditional \"SPARC_BUILD_CYGMON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${SPARC_BUILD_SPLET_TRUE}" && test -z "${SPARC_BUILD_SPLET_FALSE}"; then + as_fn_error $? "conditional \"SPARC_BUILD_SPLET\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${SPARC_BUILD_SLITE_TRUE}" && test -z "${SPARC_BUILD_SLITE_FALSE}"; then + as_fn_error $? "conditional \"SPARC_BUILD_SLITE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_XTENSA_BOARD_ESP32_TRUE}" && test -z "${HAVE_XTENSA_BOARD_ESP32_FALSE}"; then as_fn_error $? "conditional \"HAVE_XTENSA_BOARD_ESP32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6502,7 +6557,6 @@ do "m68k/Makefile") CONFIG_FILES="$CONFIG_FILES m68k/Makefile" ;; "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; "sparc_leon/Makefile") CONFIG_FILES="$CONFIG_FILES sparc_leon/Makefile" ;; - "sparc/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/Makefile" ;; "mips/Makefile") CONFIG_FILES="$CONFIG_FILES mips/Makefile" ;; "rs6000/Makefile") CONFIG_FILES="$CONFIG_FILES rs6000/Makefile" ;; "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index b5d5f41b15..c33590b17e 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -89,8 +89,7 @@ case "${target}" in subdirs="$subdirs sparc_leon" ;; sparclet-*-aout* | sparc-*-elf* | sparc64-*-elf* | sparc86x-*-* | sparclite-*-*) - AC_CONFIG_FILES([sparc/Makefile]) - subdirs="$subdirs sparc" + config_sparc=true ;; sh*-*-pe | mips*-*-pe | *arm*-wince-pe) config_wince=true @@ -231,7 +230,7 @@ m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 - nds32 nios2 or1k riscv rl78 rx v850 visium wince xstormy16 xtensa + nds32 nios2 or1k riscv rl78 rx sparc v850 visium wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/sparc/Makefile.in b/libgloss/sparc/Makefile.in deleted file mode 100644 index eac5a1c270..0000000000 --- a/libgloss/sparc/Makefile.in +++ /dev/null @@ -1,289 +0,0 @@ -# Copyright (c) 1995, 1996, 1997 Cygnus Support -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. - -# Makefile for libgloss/sparc. This is the board support -# code for the various sparc targets. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = qrv - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CYGMON_CRT0 = cygmon-crt0.o -CYGMON_BSP = libcygmon.a -CYGMON_OBJS = cygmon-salib.o - -701_CRT0 = crt0-701.o -701_BSP = libsplet701.a -701_OBJS = sysc-701.o salib-701.o sparclet-stub.o - -930_BSP = libslite930.a -931_BSP = libslite931.a -934_BSP = libslite934.a -86X_BSP = libslite86x.a - -# for the time being, built the stub without hardware breakpoint support -SLITE_OBJS = salib.o sparcl-stub.o cache.o - -# ERC32: SIS simulator, see sim/erc32. -ERC32_CRT0 = erc32-crt0.o -ERC32_BSP = liberc32.a -ERC32_OBJS = erc32-io.o traps.o erc32-stub.o debug.o fixctors.o -ERC32_ALL = $(ERC32_CRT0) $(ERC32_BSP) - -CRT0 = crt0.o -OBJS = close.o fstat.o getpid.o isatty.o kill.o \ - lseek.o open.o print.o putnum.o read.o sbrk.o stat.o \ - unlink.o write.o - -# This is set to one of SPARC, SLITE, or SPLET by configure. -# It's not clear what to do here. -# One could certainly build everything. The assembler supports all cpu -# variants (via runtime switches). However, the compiler [currently] doesn't. -# Of course, it may be the case that there isn't any cpu specific code in -# C source files, but there might be in the future. -CPU = @SPARC_CPU@ - -# sparc stuff (not sparclite or sparclet) -SPARC_ALL = $(CYGMON_BSP) $(CYGMON_CRT0) $(objdir)/cygmon.ld -SPARC_INSTALL = sparc-install -SPARC_OBJ_FORMAT = sparc -SPARC_RAM_START = 0x4000 - -# sparc 64 stuff -SPARC64_ALL = $(CYGMON_BSP) $(CYGMON_CRT0) $(objdir)/cygmon.ld -SPARC64_INSTALL = sparc-install -SPARC64_OBJ_FORMAT = sparc:v9 -SPARC64_RAM_START = 0x4000 - -# sparclite stuff -SLITE_ALL = $(930_BSP) $(931_BSP) $(CYGMON_BSP) $(CYGMON_CRT0) $(objdir)/cygmon.ld $(934_BSP) $(86X_BSP) -SLITE_INSTALL = slite-install -SLITE_OBJ_FORMAT = sparc -SLITE_RAM_START = 0x40050000 - -# sparclet stuff -SPLET_ALL = $(701_CRT0) $(701_BSP) -SPLET_INSTALL = splet-install - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: ${CRT0} $($(CPU)_ALL) $(ERC32_ALL) - -$(CYGMON_CRT0): cygmon-crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) -DTARGET_CPU_$(CPU) $(INCLUDES) -o $@ -c $(srcdir)/cygmon-crt0.S - -$(CYGMON_BSP): $(CYGMON_OBJS) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(CYGMON_OBJS) - ${RANLIB} $@ - -#$(STUBLIBS): $(OBJS) $(SLITE_OBJS) $(CRT0) -# ${CC} -nostdlib -r $(SLITE_OBJS) $(SHARED_OBJS) -o $(930_BSP) -# ${CC} -DSL931 -nostdlib -r $(SLITE_OBJS) $(SHARED_OBJS) -o $(931_BSP) -# ${CC} -nostdlib -r $(SLITE_OBJS) $(SHARED_OBJS) -o $(934_BSP) - -$(CRT0): $(srcdir)/crt0.S $(srcdir)/asm.h $(srcdir)/slite.h - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -o $@ -c $(srcdir)/crt0.S - -$(930_BSP) $(931_BSP) $(934_BSP) $(86X_BSP): $(OBJS) $(SLITE_OBJS) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(OBJS) $(SLITE_OBJS) - ${RANLIB} $@ - -$(701_BSP): $(701_OBJS) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(701_OBJS) - ${RANLIB} $@ - -erc32-crt0.o: $(srcdir)/erc32-crt0.S $(srcdir)/asm.h $(srcdir)/slite.h - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -o $@ -c $(srcdir)/erc32-crt0.S - -liberc32.a: $(OBJS) $(ERC32_OBJS) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(OBJS) $(ERC32_OBJS) - ${RANLIB} $@ - -crt0-701.o: crt0-701.S -sysc-701.o: sysc-701.c -salib-701.o: salib-701.c -sparclet-stub.o: sparclet-stub.c -cygmon-salib.o: cygmon-salib.c - $(CC) -DTARGET_CPU_$(CPU) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -o $@ -c $(srcdir)/cygmon-salib.c -cache.o: $(srcdir)/cache.c -salib.o: $(srcdir)/salib.c -win.o: $(srcdir)/win.S -syscalls.o: $(srcdir)/syscalls.c -sparcl-stub.o: $(srcdir)/sparcl-stub.c $(srcdir)/../debug.h $(srcdir)/../debug.c -erc32-stub.o: $(srcdir)/erc32-stub.c $(srcdir)/../debug.h $(srcdir)/../debug.c -fixctors.o : $(srcdir)/fixctors.c - -$(objdir)/cygmon.ld: $(srcdir)/@SPARC_CYGMONLDSCRIPTTEMPL@ - sed 's/TARGET_OBJ_FORMAT/$($(CPU)_OBJ_FORMAT)/g;s/TARGET_RAM_START/$($(CPU)_RAM_START)/g;' < $(<) > $(objdir)/cygmon.ld - -install: $($(CPU)_INSTALL) - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(objdir)/traps.o $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(ERC32_CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(ERC32_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - -sparc-install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CYGMON_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CYGMON_OBJS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(objdir)/cygmon.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CYGMON_CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - -slite-install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(930_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(930_BSP) - $(INSTALL_DATA) $(931_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(931_BSP) - $(INSTALL_DATA) $(934_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(934_BSP) - $(INSTALL_DATA) $(86X_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(86X_BSP) - $(INSTALL_DATA) $(srcdir)/ex930.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(srcdir)/ex931.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(srcdir)/ex934.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(srcdir)/sparc86x.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(srcdir)/elfsim.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CYGMON_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CYGMON_OBJS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(objdir)/cygmon.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CYGMON_CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - -splet-install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(701_CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(701_CRT0) - $(INSTALL_DATA) $(701_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(701_BSP) - $(INSTALL_DATA) $(srcdir)/tsc701.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - -# Make a simple test case to test the linker script, startup code, and -# I/O code -# -test: ex930-test.x ex931-test.x erc32-test.x - @echo Done... - -# compile a fully linked binary. The -N option is for a.out, so the -# base address will be zero, rather than the default of 0x2020. The -# -Wl,-T*.ld is for the linker script. By using -Wl, the linker script -# is put on the proper place in the comand line for ld, and all the -# symbols will get fully resolved. - -erc32-test.x: test.o ${ERC32_CRT0} ${srcdir}/erc32.ld Makefile ${ERC32_BSP} - ${CC} -L${srcdir} -L${objdir} test.o -o $@ $(LDFLAGS_FOR_TARGET) \ - -N -Wl,-Terc32.ld -Wl,-Map -Wl,erc32.map -nostdlib -erc32-test.srec: erc32-test.x - $(OBJCOPY) -O srec erc32-test.x $@ -erc32-test.dis: erc32-test.x - @rm -fr erc32-test.dis - $(OBJDUMP) -d erc32-test.x > $@ -erc32-test: erc32-test.srec erc32-test.dis - -ex930-test.x: test.o ${CRT0} ${srcdir}/ex930.ld Makefile ${930_BSP} - ${CC} -L${srcdir} -L${objdir} test.o -o $@ $(LDFLAGS_FOR_TARGET) \ - -N -Wl,-Tex930.ld -nostdlib -ex930-test.srec: ex930-test.x - $(OBJCOPY) -O srec ex930-test.x $@ -ex930-test.dis: ex930-test.x - @rm -fr ex930-test.dis - $(OBJDUMP) -d ex930-test.x > $@ -ex930-test: ex930-test.srec ex930-test.dis - -ex931-test.x: test.o ${CRT0} ${srcdir}/ex931.ld Makefile ${931_BSP} - ${CC} -L${srcdir} -L${objdir} test.o -o $@ $(LDFLAGS_FOR_TARGET) \ - -N -Wl,-Tex931.ld -nostdlib -ex931-test.srec: ex931-test.x - $(OBJCOPY) -O srec ex931-test.x $@ -ex931-test.dis: ex931-test.x - @rm -fr ex931-test.dis - $(OBJDUMP) -d ex931-test.x > $@ -ex931-test: ex931-test.srec ex931-test.dis - -ex934-test.x: test.o ${CRT0} ${srcdir}/ex934.ld Makefile ${934_BSP} - ${CC} -L${srcdir} -L${objdir} test.o -o $@ $(LDFLAGS_FOR_TARGET) \ - -N -Wl,-Tex934.ld -nostdlib -ex934-test.srec: ex934-test.x - $(OBJCOPY) -O srec ex934-test.x $@ -ex934-test.dis: ex934-test.x - @rm -fr ex934-test.dis - $(OBJDUMP) -d ex934-test.x > $@ -ex934-test: ex934-test.srec ex934-test.dis - -# a C++ test case -dtor.o: $(srcdir)/dtor.C - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -o $@ -c $? -dtor.dis: dtor.x - @rm -fr dtor.dis - $(OBJDUMP) -d dtor.x > $@ -dtor.x: dtor.o ${ERC32_CRT0} ${srcdir}/erc32.ld Makefile ${ERC32_BSP} - ${CC} -L${srcdir} -L${objdir} dtor.o -o $@ $(LIBS_FOR_TARGET) \ - -N -Wl,-Terc32.ld - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -clean mostlyclean: - rm -f *.o *.a *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/sparc/Makefile.inc b/libgloss/sparc/Makefile.inc new file mode 100644 index 0000000000..707c064285 --- /dev/null +++ b/libgloss/sparc/Makefile.inc @@ -0,0 +1,141 @@ +## Copyright (c) 1995, 1996, 1997 Cygnus Support +## +## The authors hereby grant permission to use, copy, modify, distribute, +## and license this software and its documentation for any purpose, provided +## that existing copyright notices are retained in all copies and that this +## notice is included verbatim in any distributions. No written agreement, +## license, or royalty fee is required for any of the authorized uses. +## Modifications to this software may be copyrighted by their authors +## and need not follow the licensing terms described here, provided that +## the new terms are clearly indicated on the first page of each file where +## they apply. + +## This is set to one of SPARC, SLITE, or SPLET by configure. +## It's not clear what to do here. +## One could certainly build everything. The assembler supports all cpu +## variants (via runtime switches). However, the compiler [currently] doesn't. +## Of course, it may be the case that there isn't any cpu specific code in +## C source files, but there might be in the future. +AM_CPPFLAGS_%C% = -DTARGET_CPU_$(SPARC_CPU) + +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +## Used by some libs. +%C%_common_stub_sources = \ + close.c \ + fstat.c \ + getpid.c \ + isatty.c \ + kill.c \ + lseek.c \ + open.c \ + print.c \ + putnum.c \ + read.c \ + sbrk.c \ + stat.c \ + unlink.c \ + write.c + +## ERC32: SIS simulator, see sim/erc32. +multilibtool_DATA += %D%/erc32-crt0.o +libobjs_a_SOURCES += %D%/erc32-crt0.S +multilibtool_LIBRARIES += %D%/liberc32.a +%C%_liberc32_a_SOURCES = \ + $(%C%_common_stub_sources) \ + %D%/erc32-io.c \ + %D%/traps.S \ + %D%/erc32-stub.c \ + debug.c \ + %D%/fixctors.c + +if SPARC_BUILD_CYGMON +## sparc stuff (not sparclite or sparclet). +%C%_SPARC_OBJ_FORMAT = sparc +%C%_SPARC_RAM_START = 0x4000 + +## sparc 64 stuff. +%C%_SPARC64_OBJ_FORMAT = sparc:v9 +%C%_SPARC64_RAM_START = 0x4000 + +## sparclite stuff. +%C%_SLITE_OBJ_FORMAT = sparc +%C%_SLITE_RAM_START = 0x40050000 + +multilibtool_DATA += %D%/cygmon.ld +%D%/cygmon.ld: $(srcdir)/%D%/@SPARC_CYGMONLDSCRIPTTEMPL@ %D%/Makefile.inc + $(AM_V_GEN)sed 's/TARGET_OBJ_FORMAT/$(%C%_$(SPARC_CPU)_OBJ_FORMAT)/g;s/TARGET_RAM_START/$(%C%_$(SPARC_CPU)_RAM_START)/g;' < $< > $@ + +multilibtool_DATA += %D%/cygmon-crt0.o +libobjs_a_SOURCES += %D%/cygmon-crt0.S +multilibtool_LIBRARIES += %D%/libcygmon.a +%C%_libcygmon_a_SOURCES = \ + %D%/cygmon-salib.c +multilibtool_DATA += %D%/cygmon-salib.o +endif + +if SPARC_BUILD_SLITE +multilibtool_DATA += \ + %D%/ex930.ld \ + %D%/ex931.ld \ + %D%/ex934.ld \ + %D%/sparc86x.ld \ + %D%/elfsim.ld \ + %D%/traps.o + +## For the time being, built the stub without hardware breakpoint support. +multilibtool_LIBRARIES += \ + %D%/libslite930.a \ + %D%/libslite931.a \ + %D%/libslite934.a \ + %D%/libslite86x.a +%C%_libslite930_a_SOURCES = \ + $(%C%_common_stub_sources) \ + %D%/salib.c \ + %D%/sparcl-stub.c \ + %D%/cache.c +%C%_libslite931_a_SOURCES = $(%C%_libslite930_a_SOURCES) +%C%_libslite934_a_SOURCES = $(%C%_libslite930_a_SOURCES) +%C%_libslite86x_a_SOURCES = $(%C%_libslite930_a_SOURCES) +endif + +if SPARC_BUILD_SPLET +multilibtool_DATA += %D%/tsc701.ld + +multilibtool_DATA += %D%/crt0-701.S +libobjs_a_SOURCES += %D%/crt0-701.S + +multilibtool_LIBRARIES += %D%/libsplet701.a +%C%_libsplet701_a_SOURCES = \ + %D%/sysc-701.c \ + %D%/salib-701.c \ + %D%/sparclet-stub.c +endif + +## Compile a fully linked binary. The -N option is for a.out, so the +## base address will be zero, rather than the default of 0x2020. The +## -Wl,-T*.ld is for the linker script. By using -Wl, the linker script +## is put on the proper place in the comand line for ld, and all the +## symbols will get fully resolved. + +check_PROGRAMS += %D%/erc32-test +%C%_erc32_test_SOURCES = %D%/test.c +AM_LDFLAGS_%C%_erc32_test = -N -Wl,-T$(srcdir)/%D%/elfsim.ld -Wl,-Map,$@.map -nostdlib + +check_PROGRAMS += %D%/ex930-test +%C%_ex930_test_SOURCES = %D%/test.c +AM_LDFLAGS_%C%_ex930_test = -N -Wl,-T$(srcdir)/%D%/ex930.ld -nostdlib + +check_PROGRAMS += %D%/ex931-test +%C%_ex931_test_SOURCES = %D%/test.c +AM_LDFLAGS_%C%_ex931_test = -N -Wl,-T$(srcdir)/%D%/ex931.ld -nostdlib + +check_PROGRAMS += %D%/ex934-test +%C%_ex934_test_SOURCES = %D%/test.c +AM_LDFLAGS_%C%_ex934_test = -N -Wl,-T$(srcdir)/%D%/ex934.ld -nostdlib + +## A C++ test case. +# check_PROGRAMS += %D%/dtor +# %C%_ex934_test_SOURCES = %D%/dtor.C +# %C%_ex934_test_LDFLAGS = $(AM_LDFLAGS) -N -Wl,-T$(srcdir)/%D%/elfsim.ld -nostdlib diff --git a/libgloss/sparc/acinclude.m4 b/libgloss/sparc/acinclude.m4 index a58c7a559c..3a79701104 100644 --- a/libgloss/sparc/acinclude.m4 +++ b/libgloss/sparc/acinclude.m4 @@ -1,11 +1,15 @@ SPARC_CPU=SPARC +SPARC_BUILD_CYGMON=true case ${target_cpu} in sparclite*) SPARC_CPU=SLITE ;; -sparclet*) SPARC_CPU=SPLET ;; +sparclet*) SPARC_CPU=SPLET SPARC_BUILD_CYGMON=false ;; sparc64*) SPARC_CPU=SPARC64 ;; sparc86x*) SPARC_CPU=SLITE ;; esac AC_SUBST(SPARC_CPU) +AM_CONDITIONAL([SPARC_BUILD_CYGMON], [$SPARC_BUILD_CYGMON]) +AM_CONDITIONAL([SPARC_BUILD_SPLET], [test "$SPARC_CPU" = "SPLET"]) +AM_CONDITIONAL([SPARC_BUILD_SLITE], [test "$SPARC_CPU" = "SLITE"]) SPARC_CYGMONLDSCRIPTTEMPL=cygmon.ld.src case ${target_cpu} in From 9b35bf859aeb32d9a11815d683e5cde2053bc420 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 17:52:31 -0500 Subject: [PATCH 597/767] libgloss: sparc_leon: workaround newer newlib pthread APIs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix a compile error due to duplicate pthreads types: .../libgloss/sparc_leon/mutex.c:50:8: error: conflicting types for ‘pthread_mutex_t’; have ‘struct pthread_mutex’ 50 | } pthread_mutex_t; In file included from .../newlib/libc/include/sys/types.h:221, from .../libgloss/sparc_leon/mutex.c:26: .../newlib/libc/include/sys/_pthreadtypes.h:154:20: note: previous declaration of ‘pthread_mutex_t’ with type ‘pthread_mutex_t’ {aka ‘long unsigned int’} 154 | typedef __uint32_t pthread_mutex_t; /* identify a mutex */ .../libgloss/sparc_leon/mutex.c:57:8: error: conflicting types for ‘pthread_mutexattr_t’; have ‘struct ’ 57 | } pthread_mutexattr_t; ../newlib/libc/include/sys/_pthreadtypes.h:169:3: note: previous declaration of ‘pthread_mutexattr_t’ with type ‘pthread_mutexattr_t’ 169 | } pthread_mutexattr_t; --- libgloss/sparc_leon/mutex.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libgloss/sparc_leon/mutex.c b/libgloss/sparc_leon/mutex.c index eb2c2996d4..3f51fead31 100644 --- a/libgloss/sparc_leon/mutex.c +++ b/libgloss/sparc_leon/mutex.c @@ -23,9 +23,13 @@ */ +#define pthread_mutex_t pthread_mutex_t_ +#define pthread_mutexattr_t pthread_mutexattr_t_ #include #include #include +#undef pthread_mutex_t +#undef pthread_mutexattr_t /*#include */ typedef int pthread_protocol_t; From 7ba23b682540f2f8999bd1cf8421bdeca6f59ca4 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 02:10:36 -0500 Subject: [PATCH 598/767] libgloss: merge sparc_leon into top-level Makefile Avoid a recursive make to speed things up a bit. A sparc-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 638 +++++++++++++++++++++++++------ libgloss/configure | 19 +- libgloss/configure.ac | 6 +- libgloss/sparc_leon/Makefile.in | 161 -------- libgloss/sparc_leon/Makefile.inc | 107 ++++++ 6 files changed, 658 insertions(+), 276 deletions(-) delete mode 100644 libgloss/sparc_leon/Makefile.in create mode 100644 libgloss/sparc_leon/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index a6c135b156..9108ed2390 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -164,6 +164,9 @@ endif if CONFIG_SPARC include sparc/Makefile.inc endif +if CONFIG_SPARC_LEON +include sparc_leon/Makefile.inc +endif if CONFIG_V850 include v850/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 924439bf62..cac2691d8c 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -353,31 +353,48 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_105 = sparc/libsplet701.a @CONFIG_SPARC_TRUE@am__append_106 = sparc/erc32-test sparc/ex930-test \ @CONFIG_SPARC_TRUE@ sparc/ex931-test sparc/ex934-test -@CONFIG_V850_TRUE@am__append_107 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_108 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_109 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_110 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_111 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_112 = visium/libserial.a \ +@CONFIG_SPARC_LEON_TRUE@am__append_107 = sparc_leon/libleonbare.a \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/liblbthread.a \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/libsmall.a +@CONFIG_SPARC_LEON_TRUE@am__append_108 = \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.o \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.o \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.o \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.o \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.o + +@CONFIG_SPARC_LEON_TRUE@am__append_109 = \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.S + +@CONFIG_V850_TRUE@am__append_110 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_111 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_112 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_113 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_114 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_115 = visium/libserial.a \ @CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_113 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_114 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_115 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_116 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_117 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_118 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_116 = \ +@CONFIG_XSTORMY16_TRUE@am__append_119 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_117 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_120 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_118 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_119 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_120 = \ +@CONFIG_XSTORMY16_TRUE@am__append_121 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_122 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_123 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -386,29 +403,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_121 = \ +@CONFIG_XTENSA_TRUE@am__append_124 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_122 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_123 = \ +@CONFIG_XTENSA_TRUE@am__append_125 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_126 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_124 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_127 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_125 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_126 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_127 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_128 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_129 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_130 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_131 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_132 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_128 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_129 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_130 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_131 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_132 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_135 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -434,10 +451,10 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ - sparc_leon/Makefile mips/Makefile rs6000/Makefile \ - cr16/Makefile cris/Makefile crx/Makefile mep/Makefile \ - microblaze/Makefile mt/Makefile xc16x/Makefile m32c/Makefile \ - spu/Makefile tic6x/Makefile pru/Makefile sparc/libsys/Makefile + mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ + crx/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ + xc16x/Makefile m32c/Makefile spu/Makefile tic6x/Makefile \ + pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -472,6 +489,7 @@ am__installdirs = "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(arm_cpu_initcpuinitdir)" \ "$(DESTDIR)$(includemachinetooldir)" \ "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" \ + "$(DESTDIR)$(includetoolasmleondir)" \ "$(DESTDIR)$(multilibtooldir)" LIBRARIES = $(multilibtool_LIBRARIES) $(noinst_LIBRARIES) ARFLAGS = cru @@ -737,12 +755,17 @@ libobjs_a_LIBADD = @CONFIG_SPARC_TRUE@ sparc/erc32-crt0.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_24 = sparc/cygmon-crt0.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_25 = sparc/crt0-701.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_26 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_27 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_28 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@am__objects_26 = sparc_leon/crt0.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_27 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_28 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_29 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_29 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_30 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -754,7 +777,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ $(am__objects_26) $(am__objects_27) $(am__objects_28) \ - $(am__objects_29) + $(am__objects_29) $(am__objects_30) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -763,7 +786,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_30 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_31 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -773,16 +796,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_30) +@CONFIG_M32R_TRUE@ $(am__objects_31) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_30) +@CONFIG_M32R_TRUE@ $(am__objects_31) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_31 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_32 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -794,12 +817,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_31) +@CONFIG_MCORE_TRUE@ $(am__objects_32) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_31) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_32) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -826,7 +849,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_32 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_33 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -845,12 +868,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_32) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_33) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_32) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_33) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1100,7 +1123,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_33 = \ +@CONFIG_RISCV_TRUE@am__objects_34 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1133,7 +1156,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_33) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_34) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1175,14 +1198,14 @@ sparc_libcygmon_a_LIBADD = sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS) sparc_liberc32_a_AR = $(AR) $(ARFLAGS) sparc_liberc32_a_LIBADD = -@CONFIG_SPARC_TRUE@am__objects_34 = close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_35 = close.$(OBJEXT) fstat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) -@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_34) \ +@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_35) \ @CONFIG_SPARC_TRUE@ sparc/erc32-io.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/traps.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \ @@ -1190,18 +1213,18 @@ sparc_liberc32_a_LIBADD = sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS) sparc_libslite86x_a_AR = $(AR) $(ARFLAGS) sparc_libslite86x_a_LIBADD = -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_35 = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_34) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_36 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS) sparc_libslite930_a_AR = $(AR) $(ARFLAGS) sparc_libslite930_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_34) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @@ -1209,12 +1232,12 @@ sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS) sparc_libslite931_a_AR = $(AR) $(ARFLAGS) sparc_libslite931_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS) sparc_libslite934_a_AR = $(AR) $(ARFLAGS) sparc_libslite934_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS) sparc_libsplet701_a_AR = $(AR) $(ARFLAGS) sparc_libsplet701_a_LIBADD = @@ -1222,6 +1245,88 @@ sparc_libsplet701_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/salib-701.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/sparclet-stub.$(OBJEXT) sparc_libsplet701_a_OBJECTS = $(am_sparc_libsplet701_a_OBJECTS) +sparc_leon_liblbthread_a_AR = $(AR) $(ARFLAGS) +sparc_leon_liblbthread_a_LIBADD = +@CONFIG_SPARC_LEON_TRUE@am_sparc_leon_liblbthread_a_OBJECTS = \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug_var.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_context.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_mutex.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_thread.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_sched.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_queue.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_mm.$(OBJEXT) +sparc_leon_liblbthread_a_OBJECTS = \ + $(am_sparc_leon_liblbthread_a_OBJECTS) +sparc_leon_libleonbare_a_AR = $(AR) $(ARFLAGS) +sparc_leon_libleonbare_a_LIBADD = +@CONFIG_SPARC_LEON_TRUE@am_sparc_leon_libleonbare_a_OBJECTS = \ +@CONFIG_SPARC_LEON_TRUE@ close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/io.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug_var.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_context.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/etrap.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/rtrap.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/etrap_fast.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/rtrap_fast.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/irqinstall.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/regwin.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/regwinflush.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/fpu.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/bdinit.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/contextswitch.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/busscan.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/irqtrap_fast.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt_svt.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt_mvt.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt_pending.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/gettimeofday.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/times.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/rtc.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/lcpuinit.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/console_init.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/console.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/console_dbg.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/contextswitch.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/contextswitch_asm.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/_exit.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba_dbg.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba_scan.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba_driver.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/timer.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/mutex.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_clean.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_var.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_var_svt.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/jiffies.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/mmu_asm.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svtdisp.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt_reset.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt_reset.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/stop.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/initcalls.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/regwin_patch.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/cacheA.$(OBJEXT) \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/nocache.$(OBJEXT) +sparc_leon_libleonbare_a_OBJECTS = \ + $(am_sparc_leon_libleonbare_a_OBJECTS) +sparc_leon_libsmall_a_AR = $(AR) $(ARFLAGS) +sparc_leon_libsmall_a_LIBADD = +@CONFIG_SPARC_LEON_TRUE@am_sparc_leon_libsmall_a_OBJECTS = \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_atexit.$(OBJEXT) +sparc_leon_libsmall_a_OBJECTS = $(am_sparc_leon_libsmall_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @CONFIG_V850_TRUE@am_v850_libsim_a_OBJECTS = v850/_exit.$(OBJEXT) \ @@ -1242,11 +1347,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_36 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_37 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_36) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_37) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1266,7 +1371,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_36) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_37) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1292,13 +1397,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_37 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_38 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_38 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_39 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_37) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_38) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_38) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_39) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1436,7 +1541,10 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(sparc_libcygmon_a_SOURCES) $(sparc_liberc32_a_SOURCES) \ $(sparc_libslite86x_a_SOURCES) $(sparc_libslite930_a_SOURCES) \ $(sparc_libslite931_a_SOURCES) $(sparc_libslite934_a_SOURCES) \ - $(sparc_libsplet701_a_SOURCES) $(v850_libsim_a_SOURCES) \ + $(sparc_libsplet701_a_SOURCES) \ + $(sparc_leon_liblbthread_a_SOURCES) \ + $(sparc_leon_libleonbare_a_SOURCES) \ + $(sparc_leon_libsmall_a_SOURCES) $(v850_libsim_a_SOURCES) \ $(visium_libdebug_a_SOURCES) $(visium_libserial_a_SOURCES) \ $(visium_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ @@ -1501,7 +1609,8 @@ am__can_run_installinfo = \ esac DATA = $(aarch64_cpu_initcpuinit_DATA) $(arm_cpu_initcpuinit_DATA) \ $(includemachinetool_DATA) $(includesystool_DATA) \ - $(includetool_DATA) $(multilibtool_DATA) + $(includetool_DATA) $(includetoolasmleon_DATA) \ + $(multilibtool_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ @@ -1532,7 +1641,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_113) +VPATH = @srcdir@ $(am__append_116) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1658,7 +1767,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_119) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_122) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1677,9 +1786,9 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_78) $(am__append_81) $(am__append_83) \ $(am__append_87) $(am__append_89) $(am__append_92) \ $(am__append_95) $(am__append_98) $(am__append_101) \ - $(am__append_103) $(am__append_107) $(am__append_110) \ - $(am__append_115) $(am__append_120) $(am__append_123) \ - $(am__append_125) $(am__append_130) + $(am__append_103) $(am__append_108) $(am__append_110) \ + $(am__append_113) $(am__append_118) $(am__append_123) \ + $(am__append_126) $(am__append_128) $(am__append_133) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1691,8 +1800,8 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_82) $(am__append_86) $(am__append_88) \ $(am__append_91) $(am__append_94) $(am__append_97) \ $(am__append_100) $(am__append_102) $(am__append_105) \ - $(am__append_109) $(am__append_112) $(am__append_117) \ - $(am__append_122) $(am__append_124) + $(am__append_107) $(am__append_112) $(am__append_115) \ + $(am__append_120) $(am__append_125) $(am__append_127) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) $(am__append_85) includesystooldir = $(tooldir)/include/sys @@ -1715,8 +1824,9 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_61) $(am__append_67) $(am__append_73) \ $(am__append_76) $(am__append_79) $(am__append_84) \ $(am__append_90) $(am__append_93) $(am__append_96) \ - $(am__append_99) $(am__append_104) $(am__append_108) \ - $(am__append_111) $(am__append_116) $(am__append_121) + $(am__append_99) $(am__append_104) $(am__append_109) \ + $(am__append_111) $(am__append_114) $(am__append_119) \ + $(am__append_124) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2405,6 +2515,90 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_SPARC_TRUE@AM_LDFLAGS_sparc_ex931_test = -N -Wl,-T$(srcdir)/sparc/ex931.ld -nostdlib @CONFIG_SPARC_TRUE@sparc_ex934_test_SOURCES = sparc/test.c @CONFIG_SPARC_TRUE@AM_LDFLAGS_sparc_ex934_test = -N -Wl,-T$(srcdir)/sparc/ex934.ld -nostdlib +@CONFIG_SPARC_LEON_TRUE@AM_CPPFLAGS_sparc_leon = -I$(srcdir)/sparc_leon +@CONFIG_SPARC_LEON_TRUE@sparc_leon_libleonbare_a_SOURCES = \ +@CONFIG_SPARC_LEON_TRUE@ close.c \ +@CONFIG_SPARC_LEON_TRUE@ fstat.c \ +@CONFIG_SPARC_LEON_TRUE@ getpid.c \ +@CONFIG_SPARC_LEON_TRUE@ isatty.c \ +@CONFIG_SPARC_LEON_TRUE@ kill.c \ +@CONFIG_SPARC_LEON_TRUE@ lseek.c \ +@CONFIG_SPARC_LEON_TRUE@ open.c \ +@CONFIG_SPARC_LEON_TRUE@ print.c \ +@CONFIG_SPARC_LEON_TRUE@ putnum.c \ +@CONFIG_SPARC_LEON_TRUE@ read.c \ +@CONFIG_SPARC_LEON_TRUE@ sbrk.c \ +@CONFIG_SPARC_LEON_TRUE@ stat.c \ +@CONFIG_SPARC_LEON_TRUE@ unlink.c \ +@CONFIG_SPARC_LEON_TRUE@ write.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/io.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug_var.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_context.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/etrap.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/rtrap.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/etrap_fast.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/rtrap_fast.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/irqinstall.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/regwin.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/regwinflush.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/fpu.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/bdinit.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/contextswitch.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/busscan.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/irqtrap_fast.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt_svt.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt_mvt.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/catch_interrupt_pending.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/gettimeofday.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/times.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/rtc.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/lcpuinit.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/console_init.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/console.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/console_dbg.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/contextswitch.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/contextswitch_asm.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/_exit.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba_dbg.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba_scan.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/amba_driver.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/timer.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/mutex.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_clean.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_var.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_var_svt.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/jiffies.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/mmu_asm.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svtdisp.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt_reset.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt_reset.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/stop.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/initcalls.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/regwin_patch.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/cacheA.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/nocache.S + +@CONFIG_SPARC_LEON_TRUE@sparc_leon_liblbthread_a_SOURCES = \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_debug_var.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_context.S \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_mutex.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_thread.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_sched.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_queue.c \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/kernel_mm.c + +@CONFIG_SPARC_LEON_TRUE@sparc_leon_libsmall_a_SOURCES = \ +@CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_atexit.c + +@CONFIG_SPARC_LEON_TRUE@@HAVE_MULTISUBDIR_FALSE@includetoolasmleondir = $(includetooldir)/asm-leon +@CONFIG_SPARC_LEON_TRUE@@HAVE_MULTISUBDIR_FALSE@includetoolasmleon_DATA = $(wildcard $(srcdir)/sparc_leon/asm-leon/*.h) @CONFIG_V850_TRUE@v850_libsim_a_SOURCES = \ @CONFIG_V850_TRUE@ v850/_exit.c \ @CONFIG_V850_TRUE@ v850/access.c \ @@ -2504,15 +2698,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_126) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_131) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_129) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_134) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_127) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_132) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_130) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_135) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_128) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_133) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_131) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_136) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2520,8 +2714,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_129) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_134) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_132) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_137) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2532,7 +2726,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2554,7 +2748,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2585,8 +2779,6 @@ m68k/Makefile: $(top_builddir)/config.status $(top_srcdir)/m68k/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ pa/Makefile: $(top_builddir)/config.status $(top_srcdir)/pa/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -sparc_leon/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc_leon/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ mips/Makefile: $(top_builddir)/config.status $(top_srcdir)/mips/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rs6000/Makefile: $(top_builddir)/config.status $(top_srcdir)/rs6000/Makefile.in @@ -3283,6 +3475,22 @@ sparc/cygmon-crt0.$(OBJEXT): sparc/$(am__dirstamp) \ sparc/$(DEPDIR)/$(am__dirstamp) sparc/crt0-701.$(OBJEXT): sparc/$(am__dirstamp) \ sparc/$(DEPDIR)/$(am__dirstamp) +sparc_leon/$(am__dirstamp): + @$(MKDIR_P) sparc_leon + @: > sparc_leon/$(am__dirstamp) +sparc_leon/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) sparc_leon/$(DEPDIR) + @: > sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/crt0.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/pnpinit.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/pnpinit_simple.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_svt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_mvt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) v850/$(am__dirstamp): @$(MKDIR_P) v850 @: > v850/$(am__dirstamp) @@ -4172,6 +4380,134 @@ sparc/libsplet701.a: $(sparc_libsplet701_a_OBJECTS) $(sparc_libsplet701_a_DEPEND $(AM_V_at)-rm -f sparc/libsplet701.a $(AM_V_AR)$(sparc_libsplet701_a_AR) sparc/libsplet701.a $(sparc_libsplet701_a_OBJECTS) $(sparc_libsplet701_a_LIBADD) $(AM_V_at)$(RANLIB) sparc/libsplet701.a +sparc_leon/kernel.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_debug.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_debug_var.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_context.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_mutex.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_thread.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_sched.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_queue.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/kernel_mm.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) + +sparc_leon/liblbthread.a: $(sparc_leon_liblbthread_a_OBJECTS) $(sparc_leon_liblbthread_a_DEPENDENCIES) $(EXTRA_sparc_leon_liblbthread_a_DEPENDENCIES) sparc_leon/$(am__dirstamp) + $(AM_V_at)-rm -f sparc_leon/liblbthread.a + $(AM_V_AR)$(sparc_leon_liblbthread_a_AR) sparc_leon/liblbthread.a $(sparc_leon_liblbthread_a_OBJECTS) $(sparc_leon_liblbthread_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc_leon/liblbthread.a +sparc_leon/io.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/etrap.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/rtrap.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/etrap_fast.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/rtrap_fast.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/irqinstall.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/regwin.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/regwinflush.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/fpu.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/bdinit.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/contextswitch.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/busscan.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/irqtrap_fast.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/catch_interrupt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/catch_interrupt_svt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/catch_interrupt_mvt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/catch_interrupt_pending.$(OBJEXT): \ + sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/gettimeofday.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/times.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/rtc.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/lcpuinit.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/console_init.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/console.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/console_dbg.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/contextswitch_asm.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/_exit.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/amba.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/amba_dbg.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/amba_scan.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/amba_driver.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/timer.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/mutex.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_clean.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_var.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_var_svt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/jiffies.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/mmu_asm.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_svtdisp.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_mvt_reset.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/locore_svt_reset.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/stop.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/initcalls.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/regwin_patch.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/cacheA.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) +sparc_leon/nocache.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) + +sparc_leon/libleonbare.a: $(sparc_leon_libleonbare_a_OBJECTS) $(sparc_leon_libleonbare_a_DEPENDENCIES) $(EXTRA_sparc_leon_libleonbare_a_DEPENDENCIES) sparc_leon/$(am__dirstamp) + $(AM_V_at)-rm -f sparc_leon/libleonbare.a + $(AM_V_AR)$(sparc_leon_libleonbare_a_AR) sparc_leon/libleonbare.a $(sparc_leon_libleonbare_a_OBJECTS) $(sparc_leon_libleonbare_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc_leon/libleonbare.a +sparc_leon/locore_atexit.$(OBJEXT): sparc_leon/$(am__dirstamp) \ + sparc_leon/$(DEPDIR)/$(am__dirstamp) + +sparc_leon/libsmall.a: $(sparc_leon_libsmall_a_OBJECTS) $(sparc_leon_libsmall_a_DEPENDENCIES) $(EXTRA_sparc_leon_libsmall_a_DEPENDENCIES) sparc_leon/$(am__dirstamp) + $(AM_V_at)-rm -f sparc_leon/libsmall.a + $(AM_V_AR)$(sparc_leon_libsmall_a_AR) sparc_leon/libsmall.a $(sparc_leon_libsmall_a_OBJECTS) $(sparc_leon_libsmall_a_LIBADD) + $(AM_V_at)$(RANLIB) sparc_leon/libsmall.a v850/_exit.$(OBJEXT): v850/$(am__dirstamp) \ v850/$(DEPDIR)/$(am__dirstamp) v850/access.$(OBJEXT): v850/$(am__dirstamp) \ @@ -4525,6 +4861,7 @@ mostlyclean-compile: -rm -f rl78/*.$(OBJEXT) -rm -f rx/*.$(OBJEXT) -rm -f sparc/*.$(OBJEXT) + -rm -f sparc_leon/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) -rm -f visium/*.$(OBJEXT) -rm -f xstormy16/*.$(OBJEXT) @@ -5088,6 +5425,67 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/sysc-701.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sparc/$(DEPDIR)/traps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/amba.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/amba_dbg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/amba_driver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/amba_scan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/bdinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/busscan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/cacheA.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/catch_interrupt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/catch_interrupt_mvt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/catch_interrupt_pending.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/catch_interrupt_svt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/console.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/console_dbg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/console_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/contextswitch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/contextswitch_asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/etrap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/etrap_fast.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/fpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/initcalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/io.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/irqinstall.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/irqtrap_fast.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/jiffies.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_debug.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_debug_var.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_mm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_mutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_queue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_sched.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/kernel_thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/lcpuinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_atexit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_clean.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_mvt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_mvt_reset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_svt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_svt_reset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_svtdisp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_var.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/locore_var_svt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/mmu_asm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/mutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/nocache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/pnpinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/pnpinit_simple.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/regwin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/regwin_patch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/regwinflush.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/rtc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/rtrap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/rtrap_fast.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/stop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/times.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/chmod.Po@am__quote@ @@ -7745,6 +8143,27 @@ uninstall-includetoolDATA: @list='$(includetool_DATA)'; test -n "$(includetooldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includetooldir)'; $(am__uninstall_files_from_dir) +install-includetoolasmleonDATA: $(includetoolasmleon_DATA) + @$(NORMAL_INSTALL) + @list='$(includetoolasmleon_DATA)'; test -n "$(includetoolasmleondir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includetoolasmleondir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includetoolasmleondir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(includetoolasmleondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(includetoolasmleondir)" || exit $$?; \ + done + +uninstall-includetoolasmleonDATA: + @$(NORMAL_UNINSTALL) + @list='$(includetoolasmleon_DATA)'; test -n "$(includetoolasmleondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includetoolasmleondir)'; $(am__uninstall_files_from_dir) install-multilibtoolDATA: $(multilibtool_DATA) @$(NORMAL_INSTALL) @list='$(multilibtool_DATA)'; test -n "$(multilibtooldir)" || list=; \ @@ -7879,7 +8298,7 @@ all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \ config.h all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(multilibtooldir)"; do \ + for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(includetoolasmleondir)" "$(DESTDIR)$(multilibtooldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -7968,6 +8387,8 @@ distclean-generic: -rm -f rx/$(am__dirstamp) -rm -f sparc/$(DEPDIR)/$(am__dirstamp) -rm -f sparc/$(am__dirstamp) + -rm -f sparc_leon/$(DEPDIR)/$(am__dirstamp) + -rm -f sparc_leon/$(am__dirstamp) -rm -f v850/$(DEPDIR)/$(am__dirstamp) -rm -f v850/$(am__dirstamp) -rm -f visium/$(DEPDIR)/$(am__dirstamp) @@ -7995,7 +8416,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -8015,8 +8436,9 @@ info-am: $(INFO_DEPS) install-data-am: install-aarch64_cpu_initcpuinitDATA \ install-arm_cpu_initcpuinitDATA install-includemachinetoolDATA \ install-includesystoolDATA install-includetoolDATA \ - install-info-am install-multilibtoolDATA \ - install-multilibtoolLIBRARIES install-multilibtoolPROGRAMS + install-includetoolasmleonDATA install-info-am \ + install-multilibtoolDATA install-multilibtoolLIBRARIES \ + install-multilibtoolPROGRAMS install-dvi: install-dvi-recursive @@ -8138,7 +8560,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -8160,10 +8582,10 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ uninstall-arm_cpu_initcpuinitDATA uninstall-binPROGRAMS \ uninstall-dvi-am uninstall-html-am \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ - uninstall-includetoolDATA uninstall-info-am \ - uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ - uninstall-multilibtoolPROGRAMS uninstall-pdf-am \ - uninstall-ps-am + uninstall-includetoolDATA uninstall-includetoolasmleonDATA \ + uninstall-info-am uninstall-multilibtoolDATA \ + uninstall-multilibtoolLIBRARIES uninstall-multilibtoolPROGRAMS \ + uninstall-pdf-am uninstall-ps-am .MAKE: $(am__recursive_targets) all check-am install-am install-strip @@ -8182,23 +8604,23 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ install-exec install-exec-am install-exec-local install-html \ install-html-am install-includemachinetoolDATA \ install-includesystoolDATA install-includetoolDATA \ - install-info install-info-am install-man \ - install-multilibtoolDATA install-multilibtoolLIBRARIES \ - install-multilibtoolPROGRAMS install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-aminfo maintainer-clean-generic \ - maintainer-clean-local mostlyclean mostlyclean-aminfo \ - mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ - pdf-am ps ps-am tags tags-am uninstall \ + install-includetoolasmleonDATA install-info install-info-am \ + install-man install-multilibtoolDATA \ + install-multilibtoolLIBRARIES install-multilibtoolPROGRAMS \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-local mostlyclean \ + mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ + mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-aarch64_cpu_initcpuinitDATA uninstall-am \ uninstall-arm_cpu_initcpuinitDATA uninstall-binPROGRAMS \ uninstall-dvi-am uninstall-html-am \ uninstall-includemachinetoolDATA uninstall-includesystoolDATA \ - uninstall-includetoolDATA uninstall-info-am \ - uninstall-multilibtoolDATA uninstall-multilibtoolLIBRARIES \ - uninstall-multilibtoolPROGRAMS uninstall-pdf-am \ - uninstall-ps-am + uninstall-includetoolDATA uninstall-includetoolasmleonDATA \ + uninstall-info-am uninstall-multilibtoolDATA \ + uninstall-multilibtoolLIBRARIES uninstall-multilibtoolPROGRAMS \ + uninstall-pdf-am uninstall-ps-am .PRECIOUS: Makefile diff --git a/libgloss/configure b/libgloss/configure index 66a740f26a..b969cd1e3f 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -660,6 +660,8 @@ CONFIG_VISIUM_FALSE CONFIG_VISIUM_TRUE CONFIG_V850_FALSE CONFIG_V850_TRUE +CONFIG_SPARC_LEON_FALSE +CONFIG_SPARC_LEON_TRUE CONFIG_SPARC_FALSE CONFIG_SPARC_TRUE CONFIG_RX_FALSE @@ -2852,9 +2854,7 @@ case "${target}" in config_i960=true ;; sparc-*leon*-elf* | sparc-*leon*-none*) - ac_config_files="$ac_config_files sparc_leon/Makefile" - - subdirs="$subdirs sparc_leon" + config_sparc_leon=true ;; sparclet-*-aout* | sparc-*-elf* | sparc64-*-elf* | sparc86x-*-* | sparclite-*-*) config_sparc=true @@ -3229,6 +3229,14 @@ else CONFIG_SPARC_FALSE= fi + if test x$config_sparc_leon = xtrue; then + CONFIG_SPARC_LEON_TRUE= + CONFIG_SPARC_LEON_FALSE='#' +else + CONFIG_SPARC_LEON_TRUE='#' + CONFIG_SPARC_LEON_FALSE= +fi + if test x$config_v850 = xtrue; then CONFIG_V850_TRUE= CONFIG_V850_FALSE='#' @@ -5873,6 +5881,10 @@ if test -z "${CONFIG_SPARC_TRUE}" && test -z "${CONFIG_SPARC_FALSE}"; then as_fn_error $? "conditional \"CONFIG_SPARC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_SPARC_LEON_TRUE}" && test -z "${CONFIG_SPARC_LEON_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_SPARC_LEON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_V850_TRUE}" && test -z "${CONFIG_V850_FALSE}"; then as_fn_error $? "conditional \"CONFIG_V850\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6556,7 +6568,6 @@ do "m68hc11/Makefile") CONFIG_FILES="$CONFIG_FILES m68hc11/Makefile" ;; "m68k/Makefile") CONFIG_FILES="$CONFIG_FILES m68k/Makefile" ;; "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; - "sparc_leon/Makefile") CONFIG_FILES="$CONFIG_FILES sparc_leon/Makefile" ;; "mips/Makefile") CONFIG_FILES="$CONFIG_FILES mips/Makefile" ;; "rs6000/Makefile") CONFIG_FILES="$CONFIG_FILES rs6000/Makefile" ;; "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index c33590b17e..0f552ab288 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -85,8 +85,7 @@ case "${target}" in config_i960=true ;; sparc-*leon*-elf* | sparc-*leon*-none*) - AC_CONFIG_FILES([sparc_leon/Makefile]) - subdirs="$subdirs sparc_leon" + config_sparc_leon=true ;; sparclet-*-aout* | sparc-*-elf* | sparc64-*-elf* | sparc86x-*-* | sparclite-*-*) config_sparc=true @@ -230,7 +229,8 @@ m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 - nds32 nios2 or1k riscv rl78 rx sparc v850 visium wince xstormy16 xtensa + nds32 nios2 or1k riscv rl78 rx sparc sparc_leon v850 visium wince + xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/sparc_leon/Makefile.in b/libgloss/sparc_leon/Makefile.in deleted file mode 100644 index d914009f13..0000000000 --- a/libgloss/sparc_leon/Makefile.in +++ /dev/null @@ -1,161 +0,0 @@ -# Makefile for libgloss/sparc_leon. This is the board support -# code for the various sparc leon targets. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = qrv - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -LEON_BSP = libleonbare.a -LEON_OBJS = etrap.o rtrap.o etrap_fast.o rtrap_fast.o irqinstall.o regwin.o \ - regwinflush.o fpu.o bdinit.o contextswitch.o \ - busscan.o irqtrap_fast.o catch_interrupt.o catch_interrupt_svt.o \ - catch_interrupt_mvt.o catch_interrupt_pending.o gettimeofday.o \ - times.o rtc.o lcpuinit.o console_init.o console.o console_dbg.o \ - contextswitch.o contextswitch_asm.o _exit.o amba.o amba_dbg.o \ - amba_scan.o amba_driver.o timer.o mutex.o locore.o locore_clean.o \ - locore_var.o locore_var_svt.o jiffies.o \ - mmu_asm.o locore_svtdisp.o locore_mvt_reset.o locore_svt_reset.o stop.o initcalls.o \ - regwin_patch.o cacheA.o nocache.o - -LEONBARE_THREADS = liblbthread.a -LEONBARE_THREADS_OBJS = kernel.o kernel_debug.o kernel_debug_var.o kernel_context.o \ - kernel_mutex.o kernel_thread.o kernel_sched.o kernel_queue.o \ - kernel_mm.o - -LOCOREATEXIT = locore_atexit.o -LEON_SMALLC = libsmall.a - -PNP=pnpinit.o -PNP_S=pnpinit_simple.o -LEON_ALL = $(LEON_BSP) $(LEON_SMALLC) $(LEONBARE_THREADS) $(PNP) $(PNP_S) crti.o crtn.o - -LOCORESVT = locore_svt.o -LOCOREMVT = locore_mvt.o -CRT0 = crt0.o -OBJS = close.o fstat.o getpid.o isatty.o kill.o \ - lseek.o open.o print.o putnum.o read.o sbrk.o stat.o \ - unlink.o write.o io.o kernel.o kernel_debug.o kernel_debug_var.o kernel_context.o -#link.o - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: stmp-targ-include $(CRT0) $(LOCOREMVT) $(LOCORESVT) $(LEON_ALL) - -$(CRT0): $(srcdir)/crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -o $@ -c $(srcdir)/crt0.S - -$(LEON_BSP): $(OBJS) $(LEON_OBJS) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(OBJS) $(LEON_OBJS) - ${RANLIB} $@ - -$(LEON_SMALLC): $(LOCOREATEXIT) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(LOCOREATEXIT) - ${RANLIB} $@ - -$(LEONBARE_THREADS): $(LEONBARE_THREADS_OBJS) - @rm -f $@ - ${AR} ${AR_FLAGS} $@ $(LEONBARE_THREADS_OBJS) - ${RANLIB} $@ - -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_DATA) $(CRT0) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(CRT0) - $(INSTALL_DATA) $(LOCORESVT) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LOCORESVT) - $(INSTALL_DATA) $(LOCOREMVT) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LOCOREMVT) - $(INSTALL_DATA) $(PNP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(PNP) - $(INSTALL_DATA) $(PNP_S) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(PNP_S) - $(INSTALL_DATA) $(LEON_BSP) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LEON_BSP) - $(INSTALL_DATA) $(LEON_SMALLC) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LEON_SMALLC) - $(INSTALL_DATA) $(LEONBARE_THREADS) $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$(LEONBARE_THREADS) - if [ -z "$(MULTISUBDIR)" ]; then \ - $(mkinstalldirs) $(DESTDIR)$(tooldir)/include/asm-leon; \ - for i in $(srcdir)/asm-leon/*.h; do \ - if [ -f $$i ]; then \ - $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/include/asm-leon/`basename $$i` || exit $$?; \ - else true; fi ; \ - done; \ - else true; fi - -stmp-targ-include: $(srcdir)/asm-leon/* - if [ -d ${objroot}/newlib/targ-include/asm-leon ]; then \ - rm -rf ${objroot}/newlib/targ-include/asm-leon; \ - else true; fi ; \ - if [ -d ${objroot}/newlib/targ-include ]; then \ - cp -r $(srcdir)/asm-leon ${objroot}/newlib/targ-include/asm-leon; \ - else true; fi ; \ - touch $@ - -all-recursive: stmp-targ-include - -# Make a simple test case to test the linker script, startup code, and -# I/O code -# -test: - @echo Done... - -# target specific makefile fragment comes in here. -# @target_makefile_frag@ - -clean mostlyclean: - rm -f *.o *.a *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.cache config.log config.status - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/sparc_leon/Makefile.inc b/libgloss/sparc_leon/Makefile.inc new file mode 100644 index 0000000000..0b102fc32f --- /dev/null +++ b/libgloss/sparc_leon/Makefile.inc @@ -0,0 +1,107 @@ +AM_CPPFLAGS_%C% = -I$(srcdir)/%D% + +multilibtool_LIBRARIES += %D%/libleonbare.a +%C%_libleonbare_a_SOURCES = \ + close.c \ + fstat.c \ + getpid.c \ + isatty.c \ + kill.c \ + lseek.c \ + open.c \ + print.c \ + putnum.c \ + read.c \ + sbrk.c \ + stat.c \ + unlink.c \ + write.c \ + %D%/io.c \ + %D%/kernel.c \ + %D%/kernel_debug.c \ + %D%/kernel_debug_var.c \ + %D%/kernel_context.S \ + %D%/etrap.S \ + %D%/rtrap.S \ + %D%/etrap_fast.S \ + %D%/rtrap_fast.S \ + %D%/irqinstall.S \ + %D%/regwin.S \ + %D%/regwinflush.S \ + %D%/fpu.S \ + %D%/bdinit.S \ + %D%/contextswitch.c \ + %D%/busscan.S \ + %D%/irqtrap_fast.S \ + %D%/catch_interrupt.c \ + %D%/catch_interrupt_svt.c \ + %D%/catch_interrupt_mvt.c \ + %D%/catch_interrupt_pending.c \ + %D%/gettimeofday.c \ + %D%/times.c \ + %D%/rtc.c \ + %D%/lcpuinit.S \ + %D%/console_init.c \ + %D%/console.c \ + %D%/console_dbg.c \ + %D%/contextswitch.c \ + %D%/contextswitch_asm.S \ + %D%/_exit.c \ + %D%/amba.c \ + %D%/amba_dbg.c \ + %D%/amba_scan.c \ + %D%/amba_driver.c \ + %D%/timer.c \ + %D%/mutex.c \ + %D%/locore.S \ + %D%/locore_clean.S \ + %D%/locore_var.S \ + %D%/locore_var_svt.S \ + %D%/jiffies.c \ + %D%/mmu_asm.S \ + %D%/locore_svtdisp.S \ + %D%/locore_mvt_reset.S \ + %D%/locore_svt_reset.S \ + %D%/stop.S \ + %D%/initcalls.c \ + %D%/regwin_patch.c \ + %D%/cacheA.S \ + %D%/nocache.S + +multilibtool_LIBRARIES += %D%/liblbthread.a +%C%_liblbthread_a_SOURCES = \ + %D%/kernel.c \ + %D%/kernel_debug.c \ + %D%/kernel_debug_var.c \ + %D%/kernel_context.S \ + %D%/kernel_mutex.c \ + %D%/kernel_thread.c \ + %D%/kernel_sched.c \ + %D%/kernel_queue.c \ + %D%/kernel_mm.c + +multilibtool_LIBRARIES += %D%/libsmall.a +%C%_libsmall_a_SOURCES = \ + %D%/locore_atexit.c + +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/pnpinit.o \ + %D%/pnpinit_simple.o \ + %D%/locore_svt.o \ + %D%/locore_mvt.o +libobjs_a_SOURCES += \ + %D%/crt0.S \ + %D%/pnpinit.c \ + %D%/pnpinit_simple.c \ + %D%/locore_svt.S \ + %D%/locore_mvt.S + +## Isn't actually installed anywhere? +## multilibtool_DATA += %D%/crti.o %D%/crtn.o +## libobjs_a_SOURCES += %D%/crti.S %D%/crtn.S + +if !HAVE_MULTISUBDIR +includetoolasmleondir = $(includetooldir)/asm-leon +includetoolasmleon_DATA = $(wildcard $(srcdir)/%D%/asm-leon/*.h) +endif From ae46a835fe9321b77b3dc880c47614fe2da763d1 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 31 Dec 2023 01:41:30 -0500 Subject: [PATCH 599/767] libgloss: merge tic6x into top-level Makefile Avoid a recursive make to speed things up a bit. A tic6x-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 218 ++++++++++++++++++++++-------------- libgloss/configure | 19 +++- libgloss/configure.ac | 5 +- libgloss/tic6x/Makefile.in | 126 --------------------- libgloss/tic6x/Makefile.inc | 10 ++ 6 files changed, 163 insertions(+), 218 deletions(-) delete mode 100644 libgloss/tic6x/Makefile.in create mode 100644 libgloss/tic6x/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 9108ed2390..052f22a87a 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -167,6 +167,9 @@ endif if CONFIG_SPARC_LEON include sparc_leon/Makefile.inc endif +if CONFIG_TIC6X +include tic6x/Makefile.inc +endif if CONFIG_V850 include v850/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index cac2691d8c..f629b15d2e 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -370,31 +370,34 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.S -@CONFIG_V850_TRUE@am__append_110 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_111 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_112 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_113 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_114 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_115 = visium/libserial.a \ +@CONFIG_TIC6X_TRUE@am__append_110 = tic6x/crt0.o +@CONFIG_TIC6X_TRUE@am__append_111 = tic6x/crt0.S +@CONFIG_TIC6X_TRUE@am__append_112 = tic6x/libsim.a +@CONFIG_V850_TRUE@am__append_113 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_114 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_115 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_116 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_117 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_118 = visium/libserial.a \ @CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_116 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_117 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_118 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_119 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_120 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_121 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_119 = \ +@CONFIG_XSTORMY16_TRUE@am__append_122 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_120 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_123 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_121 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_122 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_123 = \ +@CONFIG_XSTORMY16_TRUE@am__append_124 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_125 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_126 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -403,29 +406,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_124 = \ +@CONFIG_XTENSA_TRUE@am__append_127 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_125 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_126 = \ +@CONFIG_XTENSA_TRUE@am__append_128 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_129 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_127 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_130 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_128 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_129 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_130 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_131 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_132 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_135 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_131 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_132 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_135 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_138 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -453,8 +456,8 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ crx/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ - xc16x/Makefile m32c/Makefile spu/Makefile tic6x/Makefile \ - pru/Makefile sparc/libsys/Makefile + xc16x/Makefile m32c/Makefile spu/Makefile pru/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -760,12 +763,13 @@ libobjs_a_LIBADD = @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_27 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_28 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_29 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@am__objects_27 = tic6x/crt0.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_28 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_29 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_30 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_30 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_31 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -777,7 +781,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ $(am__objects_26) $(am__objects_27) $(am__objects_28) \ - $(am__objects_29) $(am__objects_30) + $(am__objects_29) $(am__objects_30) $(am__objects_31) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -786,7 +790,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_31 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_32 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -796,16 +800,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_31) +@CONFIG_M32R_TRUE@ $(am__objects_32) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_31) +@CONFIG_M32R_TRUE@ $(am__objects_32) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_32 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_33 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -817,12 +821,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_32) +@CONFIG_MCORE_TRUE@ $(am__objects_33) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_32) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_33) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @@ -849,7 +853,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_33 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_34 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -868,12 +872,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_33) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_34) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_33) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_34) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1123,7 +1127,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_34 = \ +@CONFIG_RISCV_TRUE@am__objects_35 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1156,7 +1160,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_34) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_35) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1198,14 +1202,14 @@ sparc_libcygmon_a_LIBADD = sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS) sparc_liberc32_a_AR = $(AR) $(ARFLAGS) sparc_liberc32_a_LIBADD = -@CONFIG_SPARC_TRUE@am__objects_35 = close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_36 = close.$(OBJEXT) fstat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) -@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_35) \ +@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_36) \ @CONFIG_SPARC_TRUE@ sparc/erc32-io.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/traps.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \ @@ -1213,18 +1217,18 @@ sparc_liberc32_a_LIBADD = sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS) sparc_libslite86x_a_AR = $(AR) $(ARFLAGS) sparc_libslite86x_a_LIBADD = -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_36 = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_37 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS) sparc_libslite930_a_AR = $(AR) $(ARFLAGS) sparc_libslite930_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_35) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @@ -1232,12 +1236,12 @@ sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS) sparc_libslite931_a_AR = $(AR) $(ARFLAGS) sparc_libslite931_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS) sparc_libslite934_a_AR = $(AR) $(ARFLAGS) sparc_libslite934_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS) sparc_libsplet701_a_AR = $(AR) $(ARFLAGS) sparc_libsplet701_a_LIBADD = @@ -1327,6 +1331,13 @@ sparc_leon_libsmall_a_LIBADD = @CONFIG_SPARC_LEON_TRUE@am_sparc_leon_libsmall_a_OBJECTS = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_atexit.$(OBJEXT) sparc_leon_libsmall_a_OBJECTS = $(am_sparc_leon_libsmall_a_OBJECTS) +tic6x_libsim_a_AR = $(AR) $(ARFLAGS) +tic6x_libsim_a_LIBADD = +@CONFIG_TIC6X_TRUE@am_tic6x_libsim_a_OBJECTS = tic6x/sbrk.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@ putnum.$(OBJEXT) tic6x/getpid.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@ tic6x/kill.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@ tic6x/syscalls.$(OBJEXT) +tic6x_libsim_a_OBJECTS = $(am_tic6x_libsim_a_OBJECTS) v850_libsim_a_AR = $(AR) $(ARFLAGS) v850_libsim_a_LIBADD = @CONFIG_V850_TRUE@am_v850_libsim_a_OBJECTS = v850/_exit.$(OBJEXT) \ @@ -1347,11 +1358,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_37 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_38 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_37) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_38) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1371,7 +1382,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_37) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_38) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1397,13 +1408,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_38 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_39 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_39 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_40 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_38) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_39) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_39) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_40) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1544,9 +1555,10 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(sparc_libsplet701_a_SOURCES) \ $(sparc_leon_liblbthread_a_SOURCES) \ $(sparc_leon_libleonbare_a_SOURCES) \ - $(sparc_leon_libsmall_a_SOURCES) $(v850_libsim_a_SOURCES) \ - $(visium_libdebug_a_SOURCES) $(visium_libserial_a_SOURCES) \ - $(visium_libsim_a_SOURCES) $(xstormy16_libeva_app_a_SOURCES) \ + $(sparc_leon_libsmall_a_SOURCES) $(tic6x_libsim_a_SOURCES) \ + $(v850_libsim_a_SOURCES) $(visium_libdebug_a_SOURCES) \ + $(visium_libserial_a_SOURCES) $(visium_libsim_a_SOURCES) \ + $(xstormy16_libeva_app_a_SOURCES) \ $(xstormy16_libsim_a_SOURCES) $(xtensa_libgloss_a_SOURCES) \ $(xtensa_libsys_openocd_a_SOURCES) \ $(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \ @@ -1641,7 +1653,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_116) +VPATH = @srcdir@ $(am__append_119) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1767,7 +1779,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_122) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_125) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1787,8 +1799,9 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_87) $(am__append_89) $(am__append_92) \ $(am__append_95) $(am__append_98) $(am__append_101) \ $(am__append_103) $(am__append_108) $(am__append_110) \ - $(am__append_113) $(am__append_118) $(am__append_123) \ - $(am__append_126) $(am__append_128) $(am__append_133) + $(am__append_113) $(am__append_116) $(am__append_121) \ + $(am__append_126) $(am__append_129) $(am__append_131) \ + $(am__append_136) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1801,7 +1814,8 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_91) $(am__append_94) $(am__append_97) \ $(am__append_100) $(am__append_102) $(am__append_105) \ $(am__append_107) $(am__append_112) $(am__append_115) \ - $(am__append_120) $(am__append_125) $(am__append_127) + $(am__append_118) $(am__append_123) $(am__append_128) \ + $(am__append_130) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) $(am__append_85) includesystooldir = $(tooldir)/include/sys @@ -1825,8 +1839,8 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_76) $(am__append_79) $(am__append_84) \ $(am__append_90) $(am__append_93) $(am__append_96) \ $(am__append_99) $(am__append_104) $(am__append_109) \ - $(am__append_111) $(am__append_114) $(am__append_119) \ - $(am__append_124) + $(am__append_111) $(am__append_114) $(am__append_117) \ + $(am__append_122) $(am__append_127) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2599,6 +2613,13 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_SPARC_LEON_TRUE@@HAVE_MULTISUBDIR_FALSE@includetoolasmleondir = $(includetooldir)/asm-leon @CONFIG_SPARC_LEON_TRUE@@HAVE_MULTISUBDIR_FALSE@includetoolasmleon_DATA = $(wildcard $(srcdir)/sparc_leon/asm-leon/*.h) +@CONFIG_TIC6X_TRUE@tic6x_libsim_a_SOURCES = \ +@CONFIG_TIC6X_TRUE@ tic6x/sbrk.c \ +@CONFIG_TIC6X_TRUE@ putnum.c \ +@CONFIG_TIC6X_TRUE@ tic6x/getpid.c \ +@CONFIG_TIC6X_TRUE@ tic6x/kill.c \ +@CONFIG_TIC6X_TRUE@ tic6x/syscalls.c + @CONFIG_V850_TRUE@v850_libsim_a_SOURCES = \ @CONFIG_V850_TRUE@ v850/_exit.c \ @CONFIG_V850_TRUE@ v850/access.c \ @@ -2698,15 +2719,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_129) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_134) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_132) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_137) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_130) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_135) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_133) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_138) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_131) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_136) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_134) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_139) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2714,8 +2735,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_132) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_137) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_135) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_140) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2726,7 +2747,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2748,7 +2769,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2801,8 +2822,6 @@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -tic6x/Makefile: $(top_builddir)/config.status $(top_srcdir)/tic6x/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ pru/Makefile: $(top_builddir)/config.status $(top_srcdir)/pru/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ sparc/libsys/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc/libsys/Makefile.in @@ -3491,6 +3510,14 @@ sparc_leon/locore_svt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ sparc_leon/$(DEPDIR)/$(am__dirstamp) sparc_leon/locore_mvt.$(OBJEXT): sparc_leon/$(am__dirstamp) \ sparc_leon/$(DEPDIR)/$(am__dirstamp) +tic6x/$(am__dirstamp): + @$(MKDIR_P) tic6x + @: > tic6x/$(am__dirstamp) +tic6x/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) tic6x/$(DEPDIR) + @: > tic6x/$(DEPDIR)/$(am__dirstamp) +tic6x/crt0.$(OBJEXT): tic6x/$(am__dirstamp) \ + tic6x/$(DEPDIR)/$(am__dirstamp) v850/$(am__dirstamp): @$(MKDIR_P) v850 @: > v850/$(am__dirstamp) @@ -4508,6 +4535,19 @@ sparc_leon/libsmall.a: $(sparc_leon_libsmall_a_OBJECTS) $(sparc_leon_libsmall_a_ $(AM_V_at)-rm -f sparc_leon/libsmall.a $(AM_V_AR)$(sparc_leon_libsmall_a_AR) sparc_leon/libsmall.a $(sparc_leon_libsmall_a_OBJECTS) $(sparc_leon_libsmall_a_LIBADD) $(AM_V_at)$(RANLIB) sparc_leon/libsmall.a +tic6x/sbrk.$(OBJEXT): tic6x/$(am__dirstamp) \ + tic6x/$(DEPDIR)/$(am__dirstamp) +tic6x/getpid.$(OBJEXT): tic6x/$(am__dirstamp) \ + tic6x/$(DEPDIR)/$(am__dirstamp) +tic6x/kill.$(OBJEXT): tic6x/$(am__dirstamp) \ + tic6x/$(DEPDIR)/$(am__dirstamp) +tic6x/syscalls.$(OBJEXT): tic6x/$(am__dirstamp) \ + tic6x/$(DEPDIR)/$(am__dirstamp) + +tic6x/libsim.a: $(tic6x_libsim_a_OBJECTS) $(tic6x_libsim_a_DEPENDENCIES) $(EXTRA_tic6x_libsim_a_DEPENDENCIES) tic6x/$(am__dirstamp) + $(AM_V_at)-rm -f tic6x/libsim.a + $(AM_V_AR)$(tic6x_libsim_a_AR) tic6x/libsim.a $(tic6x_libsim_a_OBJECTS) $(tic6x_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) tic6x/libsim.a v850/_exit.$(OBJEXT): v850/$(am__dirstamp) \ v850/$(DEPDIR)/$(am__dirstamp) v850/access.$(OBJEXT): v850/$(am__dirstamp) \ @@ -4862,6 +4902,7 @@ mostlyclean-compile: -rm -f rx/*.$(OBJEXT) -rm -f sparc/*.$(OBJEXT) -rm -f sparc_leon/*.$(OBJEXT) + -rm -f tic6x/*.$(OBJEXT) -rm -f v850/*.$(OBJEXT) -rm -f visium/*.$(OBJEXT) -rm -f xstormy16/*.$(OBJEXT) @@ -5486,6 +5527,11 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/stop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/timer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sparc_leon/$(DEPDIR)/times.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tic6x/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tic6x/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tic6x/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tic6x/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tic6x/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@v850/$(DEPDIR)/chmod.Po@am__quote@ @@ -8389,6 +8435,8 @@ distclean-generic: -rm -f sparc/$(am__dirstamp) -rm -f sparc_leon/$(DEPDIR)/$(am__dirstamp) -rm -f sparc_leon/$(am__dirstamp) + -rm -f tic6x/$(DEPDIR)/$(am__dirstamp) + -rm -f tic6x/$(am__dirstamp) -rm -f v850/$(DEPDIR)/$(am__dirstamp) -rm -f v850/$(am__dirstamp) -rm -f visium/$(DEPDIR)/$(am__dirstamp) @@ -8416,7 +8464,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -8560,7 +8608,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index b969cd1e3f..2aad99d39e 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -660,6 +660,8 @@ CONFIG_VISIUM_FALSE CONFIG_VISIUM_TRUE CONFIG_V850_FALSE CONFIG_V850_TRUE +CONFIG_TIC6X_FALSE +CONFIG_TIC6X_TRUE CONFIG_SPARC_LEON_FALSE CONFIG_SPARC_LEON_TRUE CONFIG_SPARC_FALSE @@ -2983,9 +2985,7 @@ case "${target}" in config_libnosys=false ;; tic6x-*-*) - ac_config_files="$ac_config_files tic6x/Makefile" - - subdirs="$subdirs tic6x" + config_tic6x=true config_testsuite=false ;; iq2000-*-*) @@ -3237,6 +3237,14 @@ else CONFIG_SPARC_LEON_FALSE= fi + if test x$config_tic6x = xtrue; then + CONFIG_TIC6X_TRUE= + CONFIG_TIC6X_FALSE='#' +else + CONFIG_TIC6X_TRUE='#' + CONFIG_TIC6X_FALSE= +fi + if test x$config_v850 = xtrue; then CONFIG_V850_TRUE= CONFIG_V850_FALSE='#' @@ -5885,6 +5893,10 @@ if test -z "${CONFIG_SPARC_LEON_TRUE}" && test -z "${CONFIG_SPARC_LEON_FALSE}"; as_fn_error $? "conditional \"CONFIG_SPARC_LEON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_TIC6X_TRUE}" && test -z "${CONFIG_TIC6X_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_TIC6X\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_V850_TRUE}" && test -z "${CONFIG_V850_FALSE}"; then as_fn_error $? "conditional \"CONFIG_V850\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6579,7 +6591,6 @@ do "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; - "tic6x/Makefile") CONFIG_FILES="$CONFIG_FILES tic6x/Makefile" ;; "pru/Makefile") CONFIG_FILES="$CONFIG_FILES pru/Makefile" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "sparc/libsys/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/libsys/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 0f552ab288..e376ad1560 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -203,8 +203,7 @@ case "${target}" in config_libnosys=false ;; tic6x-*-*) - AC_CONFIG_FILES([tic6x/Makefile]) - subdirs="$subdirs tic6x" + config_tic6x=true config_testsuite=false ;; iq2000-*-*) @@ -229,7 +228,7 @@ m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 m32r mcore mn10200 mn10300 moxie msp430 - nds32 nios2 or1k riscv rl78 rx sparc sparc_leon v850 visium wince + nds32 nios2 or1k riscv rl78 rx sparc sparc_leon tic6x v850 visium wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) diff --git a/libgloss/tic6x/Makefile.in b/libgloss/tic6x/Makefile.in deleted file mode 100644 index 976babab4f..0000000000 --- a/libgloss/tic6x/Makefile.in +++ /dev/null @@ -1,126 +0,0 @@ -# -# - -DESTDIR = -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CFLAGS = -g -SCRIPTS = - -# Here is all of the simulator stuff -SIM_SCRIPTS = -SIM_LDFLAGS = -SIM_BSP = libsim.a -SIM_CRT0 = crt0.o -SIM_OBJS = sbrk.o putnum.o getpid.o kill.o syscalls.o -SIM_TEST = sim-test -SIM_INSTALL = install-sim - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -all: ${SIM_CRT0} ${SIM_BSP} - -# -# here's where we build the board support packages for each target -# -${SIM_BSP}: ${OBJS} ${SIM_OBJS} - ${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS} ${OBJS} - ${RANLIB} ${SIM_BSP} - - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: ${SIM_TEST} - -sim-test: sim-test.x sim-test.dis - -sim-test.x: test.o ${SIM_CRT0} ${SIM_BSP} - ${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \ - ${SIM_CRT0} test.o \ - -o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP} - -sim-test.dis: sim-test.x - ${OBJDUMP} -d sim-test.x > sim-test.dis - - -# -# -# -.c.S: - ${CC} ${CFLAGS_FOR_TARGET} -c $< - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${SIM_INSTALL} - -install-sim: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e;\ - for x in ${SIM_CRT0} ${SIM_BSP}; do\ - ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x;\ - done - for x in ${SIM_SCRIPTS}; do\ - ${INSTALL_DATA} ${srcdir}/$${x} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/tic6x/Makefile.inc b/libgloss/tic6x/Makefile.inc new file mode 100644 index 0000000000..0516cab546 --- /dev/null +++ b/libgloss/tic6x/Makefile.inc @@ -0,0 +1,10 @@ +multilibtool_DATA += %D%/crt0.o +libobjs_a_SOURCES += %D%/crt0.S + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/sbrk.c \ + putnum.c \ + %D%/getpid.c \ + %D%/kill.c \ + %D%/syscalls.c From fecb0e5e78ab0b69c4f44af8a803d5ed6387997c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 31 Dec 2023 02:07:04 -0500 Subject: [PATCH 600/767] libgloss: microblaze: use port-specific sbrk The default search path uses the common sbrk.c over the microblaze one, so add a rule to force the microblaze variant instead. --- libgloss/microblaze/Makefile.in | 1 + 1 file changed, 1 insertion(+) diff --git a/libgloss/microblaze/Makefile.in b/libgloss/microblaze/Makefile.in index f1fa286bbc..8437378f8d 100644 --- a/libgloss/microblaze/Makefile.in +++ b/libgloss/microblaze/Makefile.in @@ -122,6 +122,7 @@ linux-crt0.o: linux-crt0.S crtinit.o: crtinit.S sim-crtinit.o: sim-crtinit.S sim-pgcrtinit.o: sim-pgcrtinit.S +sbrk.o: sbrk.c # target specific makefile fragment comes in here. @target_makefile_frag@ From 2f0cd375f325a15b599fe1d71a811a3edc186d4d Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 31 Dec 2023 01:51:47 -0500 Subject: [PATCH 601/767] libgloss: merge microblaze into top-level Makefile Avoid a recursive make to speed things up a bit. A microblaze-elf build shows installed objects & libs produce same code. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 536 +++++++++++++++++++++---------- libgloss/configure | 19 +- libgloss/configure.ac | 5 +- libgloss/microblaze/Makefile.in | 150 --------- libgloss/microblaze/Makefile.inc | 91 ++++++ 6 files changed, 473 insertions(+), 331 deletions(-) delete mode 100644 libgloss/microblaze/Makefile.in create mode 100644 libgloss/microblaze/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 052f22a87a..333ff846ae 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -131,6 +131,9 @@ endif if CONFIG_MCORE include mcore/Makefile.inc endif +if CONFIG_MICROBLAZE +include microblaze/Makefile.inc +endif if CONFIG_MN10200 include mn10200/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index f629b15d2e..c4d931dea4 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -222,75 +222,101 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_MCORE_TRUE@am__append_57 = mcore/crt0.o @CONFIG_MCORE_TRUE@am__append_58 = mcore/crt0.S @CONFIG_MCORE_TRUE@am__append_59 = mcore/libsim.a mcore/libcmb.a -@CONFIG_MN10200_TRUE@am__append_60 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_60 = \ +@CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@ microblaze/xilinx.ld + +@CONFIG_MICROBLAZE_TRUE@am__append_61 = \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/elf-gloss-linux.specs \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt0.o microblaze/crt1.o \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt2.o microblaze/crt3.o \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt4.o microblaze/crtinit.o \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/pgcrtinit.o \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sim-crtinit.o \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sim-pgcrtinit.o \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-crt0.o +@CONFIG_MICROBLAZE_TRUE@am__append_62 = \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt0.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt1.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt2.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt3.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt4.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crtinit.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/pgcrtinit.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sim-crtinit.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sim-pgcrtinit.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-crt0.S + +@CONFIG_MICROBLAZE_TRUE@am__append_63 = microblaze/libgloss.a \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/libgloss-linux.a +@CONFIG_MN10200_TRUE@am__append_64 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_61 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_62 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_63 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_64 = \ +@CONFIG_MN10200_TRUE@am__append_65 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_66 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_67 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_68 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_65 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_69 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_66 = \ +@CONFIG_MN10300_TRUE@am__append_70 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_67 = \ +@CONFIG_MN10300_TRUE@am__append_71 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_68 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_69 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_70 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_71 = \ +@CONFIG_MN10300_TRUE@am__append_72 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_73 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_74 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_75 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_72 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_73 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_76 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_77 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_74 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_75 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_78 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_79 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_76 = \ +@CONFIG_MSP430_TRUE@am__append_80 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_77 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_81 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NDS32_TRUE@am__append_78 = \ +@CONFIG_NDS32_TRUE@am__append_82 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.o \ @CONFIG_NDS32_TRUE@ nds32/crt1.o -@CONFIG_NDS32_TRUE@am__append_79 = \ +@CONFIG_NDS32_TRUE@am__append_83 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.S \ @CONFIG_NDS32_TRUE@ nds32/crt1.S -@CONFIG_NDS32_TRUE@am__append_80 = nds32/libgloss.a -@CONFIG_NIOS2_TRUE@am__append_81 = \ +@CONFIG_NDS32_TRUE@am__append_84 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_85 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_82 = nios2/libnios2.a -@CONFIG_OR1K_TRUE@am__append_83 = or1k/crt0.o -@CONFIG_OR1K_TRUE@am__append_84 = or1k/crt0.S -@CONFIG_OR1K_TRUE@am__append_85 = \ +@CONFIG_NIOS2_TRUE@am__append_86 = nios2/libnios2.a +@CONFIG_OR1K_TRUE@am__append_87 = or1k/crt0.o +@CONFIG_OR1K_TRUE@am__append_88 = or1k/crt0.S +@CONFIG_OR1K_TRUE@am__append_89 = \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-asm.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-nop.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-sprs.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-support.h -@CONFIG_OR1K_TRUE@am__append_86 = or1k/libor1k.a or1k/libboard-atlys.a \ +@CONFIG_OR1K_TRUE@am__append_90 = or1k/libor1k.a or1k/libboard-atlys.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-de0_nano.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ml501.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-optimsoc.a \ @@ -299,40 +325,40 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_OR1K_TRUE@ or1k/libboard-ordb1a3pe1500.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ordb2a.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-orpsocrefdesign.a -@CONFIG_RISCV_TRUE@am__append_87 = \ +@CONFIG_RISCV_TRUE@am__append_91 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_88 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_92 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_89 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_93 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_90 = \ +@CONFIG_RL78_TRUE@am__append_94 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_91 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_92 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_95 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_96 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_93 = \ +@CONFIG_RX_TRUE@am__append_97 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_94 = rx/libsim.a -@CONFIG_SPARC_TRUE@am__append_95 = sparc/crt0.o sparc/erc32-crt0.o -@CONFIG_SPARC_TRUE@am__append_96 = sparc/crt0.S sparc/erc32-crt0.S -@CONFIG_SPARC_TRUE@am__append_97 = sparc/liberc32.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_98 = \ +@CONFIG_RX_TRUE@am__append_98 = rx/libsim.a +@CONFIG_SPARC_TRUE@am__append_99 = sparc/crt0.o sparc/erc32-crt0.o +@CONFIG_SPARC_TRUE@am__append_100 = sparc/crt0.S sparc/erc32-crt0.S +@CONFIG_SPARC_TRUE@am__append_101 = sparc/liberc32.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_102 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-crt0.o \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-salib.o -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_99 = sparc/cygmon-crt0.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_100 = sparc/libcygmon.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_101 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_103 = sparc/cygmon-crt0.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_104 = sparc/libcygmon.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_105 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex930.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex931.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex934.ld \ @@ -340,64 +366,64 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/elfsim.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/traps.o -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_102 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_106 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite930.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite931.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite934.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite86x.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_103 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_107 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/tsc701.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/crt0-701.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_104 = sparc/crt0-701.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_105 = sparc/libsplet701.a -@CONFIG_SPARC_TRUE@am__append_106 = sparc/erc32-test sparc/ex930-test \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_108 = sparc/crt0-701.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_109 = sparc/libsplet701.a +@CONFIG_SPARC_TRUE@am__append_110 = sparc/erc32-test sparc/ex930-test \ @CONFIG_SPARC_TRUE@ sparc/ex931-test sparc/ex934-test -@CONFIG_SPARC_LEON_TRUE@am__append_107 = sparc_leon/libleonbare.a \ +@CONFIG_SPARC_LEON_TRUE@am__append_111 = sparc_leon/libleonbare.a \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/liblbthread.a \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/libsmall.a -@CONFIG_SPARC_LEON_TRUE@am__append_108 = \ +@CONFIG_SPARC_LEON_TRUE@am__append_112 = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.o -@CONFIG_SPARC_LEON_TRUE@am__append_109 = \ +@CONFIG_SPARC_LEON_TRUE@am__append_113 = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.c \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.c \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.S -@CONFIG_TIC6X_TRUE@am__append_110 = tic6x/crt0.o -@CONFIG_TIC6X_TRUE@am__append_111 = tic6x/crt0.S -@CONFIG_TIC6X_TRUE@am__append_112 = tic6x/libsim.a -@CONFIG_V850_TRUE@am__append_113 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_114 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_115 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_116 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_117 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_118 = visium/libserial.a \ +@CONFIG_TIC6X_TRUE@am__append_114 = tic6x/crt0.o +@CONFIG_TIC6X_TRUE@am__append_115 = tic6x/crt0.S +@CONFIG_TIC6X_TRUE@am__append_116 = tic6x/libsim.a +@CONFIG_V850_TRUE@am__append_117 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_118 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_119 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_120 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_121 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_122 = visium/libserial.a \ @CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_119 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_120 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_121 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_123 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_124 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_125 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_122 = \ +@CONFIG_XSTORMY16_TRUE@am__append_126 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_123 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_127 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_124 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_125 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_126 = \ +@CONFIG_XSTORMY16_TRUE@am__append_128 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_129 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_130 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -406,29 +432,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_127 = \ +@CONFIG_XTENSA_TRUE@am__append_131 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_128 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_129 = \ +@CONFIG_XTENSA_TRUE@am__append_132 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_130 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_131 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_132 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_135 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_138 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_135 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_138 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_144 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -455,9 +481,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ - crx/Makefile mep/Makefile microblaze/Makefile mt/Makefile \ - xc16x/Makefile m32c/Makefile spu/Makefile pru/Makefile \ - sparc/libsys/Makefile + crx/Makefile mep/Makefile mt/Makefile xc16x/Makefile \ + m32c/Makefile spu/Makefile pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -740,36 +765,46 @@ libobjs_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/m32r-lib.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.$(OBJEXT) @CONFIG_MCORE_TRUE@am__objects_14 = mcore/crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_15 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_16 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@am__objects_15 = microblaze/crt0.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt1.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt2.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt3.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crt4.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/crtinit.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/pgcrtinit.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sim-crtinit.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sim-pgcrtinit.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-crt0.$(OBJEXT) +@CONFIG_MN10200_TRUE@am__objects_16 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_17 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_17 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_18 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_18 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_19 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_NDS32_TRUE@am__objects_19 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_20 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_OR1K_TRUE@am__objects_20 = or1k/crt0.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_21 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@am__objects_21 = or1k/crt0.$(OBJEXT) +@CONFIG_RL78_TRUE@am__objects_22 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_22 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_23 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_SPARC_TRUE@am__objects_23 = sparc/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_24 = sparc/crt0.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-crt0.$(OBJEXT) -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_24 = sparc/cygmon-crt0.$(OBJEXT) -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_25 = sparc/crt0-701.$(OBJEXT) -@CONFIG_SPARC_LEON_TRUE@am__objects_26 = sparc_leon/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_25 = sparc/cygmon-crt0.$(OBJEXT) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_26 = sparc/crt0-701.$(OBJEXT) +@CONFIG_SPARC_LEON_TRUE@am__objects_27 = sparc_leon/crt0.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.$(OBJEXT) -@CONFIG_TIC6X_TRUE@am__objects_27 = tic6x/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_28 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_29 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_30 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@am__objects_28 = tic6x/crt0.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_29 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_30 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_31 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_31 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_32 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -781,7 +816,8 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ $(am__objects_26) $(am__objects_27) $(am__objects_28) \ - $(am__objects_29) $(am__objects_30) $(am__objects_31) + $(am__objects_29) $(am__objects_30) $(am__objects_31) \ + $(am__objects_32) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -790,7 +826,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_32 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_33 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -800,16 +836,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_32) +@CONFIG_M32R_TRUE@ $(am__objects_33) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_32) +@CONFIG_M32R_TRUE@ $(am__objects_33) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_33 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_34 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -821,13 +857,43 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_33) +@CONFIG_MCORE_TRUE@ $(am__objects_34) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_33) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_34) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) +microblaze_libgloss_linux_a_AR = $(AR) $(ARFLAGS) +microblaze_libgloss_linux_a_LIBADD = +@CONFIG_MICROBLAZE_TRUE@am_microblaze_libgloss_linux_a_OBJECTS = \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-syscalls.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-syscalls-wrap.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-outbyte.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-inbyte.$(OBJEXT) +microblaze_libgloss_linux_a_OBJECTS = \ + $(am_microblaze_libgloss_linux_a_OBJECTS) +microblaze_libgloss_a_AR = $(AR) $(ARFLAGS) +microblaze_libgloss_a_LIBADD = +@CONFIG_MICROBLAZE_TRUE@am_microblaze_libgloss_a_OBJECTS = \ +@CONFIG_MICROBLAZE_TRUE@ fstat.$(OBJEXT) getpid.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ isatty.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ lseek.$(OBJEXT) print.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ putnum.$(OBJEXT) stat.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ unlink.$(OBJEXT) open.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ close.$(OBJEXT) read.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ write.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sbrk.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/timer.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_exception_handler.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_hw_exception_handler.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_interrupt_handler.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_program_clean.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_program_init.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/xil_malloc.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/xil_sbrk.$(OBJEXT) \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/xil_printf.$(OBJEXT) +microblaze_libgloss_a_OBJECTS = $(am_microblaze_libgloss_a_OBJECTS) mn10200_libeval_a_AR = $(AR) $(ARFLAGS) mn10200_libeval_a_LIBADD = @CONFIG_MN10200_TRUE@am_mn10200_libeval_a_OBJECTS = \ @@ -853,7 +919,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_34 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_35 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -872,12 +938,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_34) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_35) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_34) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_35) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1127,7 +1193,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_35 = \ +@CONFIG_RISCV_TRUE@am__objects_36 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1160,7 +1226,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_35) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_36) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1202,14 +1268,14 @@ sparc_libcygmon_a_LIBADD = sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS) sparc_liberc32_a_AR = $(AR) $(ARFLAGS) sparc_liberc32_a_LIBADD = -@CONFIG_SPARC_TRUE@am__objects_36 = close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_37 = close.$(OBJEXT) fstat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) -@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_36) \ +@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_37) \ @CONFIG_SPARC_TRUE@ sparc/erc32-io.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/traps.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \ @@ -1217,18 +1283,18 @@ sparc_liberc32_a_LIBADD = sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS) sparc_libslite86x_a_AR = $(AR) $(ARFLAGS) sparc_libslite86x_a_LIBADD = -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_37 = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_38 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS) sparc_libslite930_a_AR = $(AR) $(ARFLAGS) sparc_libslite930_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_36) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @@ -1236,12 +1302,12 @@ sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS) sparc_libslite931_a_AR = $(AR) $(ARFLAGS) sparc_libslite931_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS) sparc_libslite934_a_AR = $(AR) $(ARFLAGS) sparc_libslite934_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS) sparc_libsplet701_a_AR = $(AR) $(ARFLAGS) sparc_libsplet701_a_LIBADD = @@ -1358,11 +1424,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_38 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_39 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_38) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_39) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1382,7 +1448,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_38) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_39) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1408,13 +1474,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_39 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_40 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_40 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_41 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_39) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_40) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_40) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_41) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1532,12 +1598,13 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \ $(m32r_libgloss_a_SOURCES) $(m32r_libmon_a_SOURCES) \ $(mcore_libcmb_a_SOURCES) $(mcore_libsim_a_SOURCES) \ - $(mn10200_libeval_a_SOURCES) $(mn10300_libcygmon_a_SOURCES) \ - $(mn10300_libeval_a_SOURCES) $(moxie_libqemu_a_SOURCES) \ - $(moxie_libsim_a_SOURCES) $(msp430_libcrt_a_SOURCES) \ - $(msp430_libnosys_a_SOURCES) $(msp430_libsim_a_SOURCES) \ - $(nds32_libgloss_a_SOURCES) $(nios2_libnios2_a_SOURCES) \ - $(or1k_libboard_atlys_a_SOURCES) \ + $(microblaze_libgloss_linux_a_SOURCES) \ + $(microblaze_libgloss_a_SOURCES) $(mn10200_libeval_a_SOURCES) \ + $(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \ + $(moxie_libqemu_a_SOURCES) $(moxie_libsim_a_SOURCES) \ + $(msp430_libcrt_a_SOURCES) $(msp430_libnosys_a_SOURCES) \ + $(msp430_libsim_a_SOURCES) $(nds32_libgloss_a_SOURCES) \ + $(nios2_libnios2_a_SOURCES) $(or1k_libboard_atlys_a_SOURCES) \ $(or1k_libboard_de0_nano_a_SOURCES) \ $(or1k_libboard_ml501_a_SOURCES) \ $(or1k_libboard_optimsoc_a_SOURCES) \ @@ -1653,7 +1720,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_119) +VPATH = @srcdir@ $(am__append_123) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1779,7 +1846,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_125) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_129) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1793,31 +1860,31 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_42) $(am__append_46) $(am__append_48) \ $(am__append_51) $(am__append_52) $(am__append_55) \ $(am__append_56) $(am__append_57) $(am__append_60) \ - $(am__append_64) $(am__append_65) $(am__append_66) \ - $(am__append_71) $(am__append_72) $(am__append_75) \ - $(am__append_78) $(am__append_81) $(am__append_83) \ - $(am__append_87) $(am__append_89) $(am__append_92) \ - $(am__append_95) $(am__append_98) $(am__append_101) \ - $(am__append_103) $(am__append_108) $(am__append_110) \ - $(am__append_113) $(am__append_116) $(am__append_121) \ - $(am__append_126) $(am__append_129) $(am__append_131) \ - $(am__append_136) + $(am__append_61) $(am__append_64) $(am__append_68) \ + $(am__append_69) $(am__append_70) $(am__append_75) \ + $(am__append_76) $(am__append_79) $(am__append_82) \ + $(am__append_85) $(am__append_87) $(am__append_91) \ + $(am__append_93) $(am__append_96) $(am__append_99) \ + $(am__append_102) $(am__append_105) $(am__append_107) \ + $(am__append_112) $(am__append_114) $(am__append_117) \ + $(am__append_120) $(am__append_125) $(am__append_130) \ + $(am__append_133) $(am__append_135) $(am__append_140) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ $(am__append_31) $(am__append_35) $(am__append_38) \ $(am__append_41) $(am__append_43) $(am__append_47) \ $(am__append_49) $(am__append_54) $(am__append_59) \ - $(am__append_62) $(am__append_68) $(am__append_69) \ - $(am__append_74) $(am__append_77) $(am__append_80) \ - $(am__append_82) $(am__append_86) $(am__append_88) \ - $(am__append_91) $(am__append_94) $(am__append_97) \ - $(am__append_100) $(am__append_102) $(am__append_105) \ - $(am__append_107) $(am__append_112) $(am__append_115) \ - $(am__append_118) $(am__append_123) $(am__append_128) \ - $(am__append_130) + $(am__append_63) $(am__append_66) $(am__append_72) \ + $(am__append_73) $(am__append_78) $(am__append_81) \ + $(am__append_84) $(am__append_86) $(am__append_90) \ + $(am__append_92) $(am__append_95) $(am__append_98) \ + $(am__append_101) $(am__append_104) $(am__append_106) \ + $(am__append_109) $(am__append_111) $(am__append_116) \ + $(am__append_119) $(am__append_122) $(am__append_127) \ + $(am__append_132) $(am__append_134) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_16) $(am__append_85) +includetool_DATA = $(am__append_16) $(am__append_89) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) @@ -1835,12 +1902,12 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_27) $(am__append_30) $(am__append_34) \ $(am__append_37) $(am__append_40) $(am__append_44) \ $(am__append_50) $(am__append_53) $(am__append_58) \ - $(am__append_61) $(am__append_67) $(am__append_73) \ - $(am__append_76) $(am__append_79) $(am__append_84) \ - $(am__append_90) $(am__append_93) $(am__append_96) \ - $(am__append_99) $(am__append_104) $(am__append_109) \ - $(am__append_111) $(am__append_114) $(am__append_117) \ - $(am__append_122) $(am__append_127) + $(am__append_62) $(am__append_65) $(am__append_71) \ + $(am__append_77) $(am__append_80) $(am__append_83) \ + $(am__append_88) $(am__append_94) $(am__append_97) \ + $(am__append_100) $(am__append_103) $(am__append_108) \ + $(am__append_113) $(am__append_115) $(am__append_118) \ + $(am__append_121) $(am__append_126) $(am__append_131) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2159,6 +2226,37 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.c \ @CONFIG_MCORE_TRUE@ $(mcore_common_lib_sources) +@CONFIG_MICROBLAZE_TRUE@microblaze_libgloss_a_SOURCES = \ +@CONFIG_MICROBLAZE_TRUE@ fstat.c \ +@CONFIG_MICROBLAZE_TRUE@ getpid.c \ +@CONFIG_MICROBLAZE_TRUE@ isatty.c \ +@CONFIG_MICROBLAZE_TRUE@ kill.c \ +@CONFIG_MICROBLAZE_TRUE@ lseek.c \ +@CONFIG_MICROBLAZE_TRUE@ print.c \ +@CONFIG_MICROBLAZE_TRUE@ putnum.c \ +@CONFIG_MICROBLAZE_TRUE@ stat.c \ +@CONFIG_MICROBLAZE_TRUE@ unlink.c \ +@CONFIG_MICROBLAZE_TRUE@ open.c \ +@CONFIG_MICROBLAZE_TRUE@ close.c \ +@CONFIG_MICROBLAZE_TRUE@ read.c \ +@CONFIG_MICROBLAZE_TRUE@ write.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/sbrk.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/timer.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_exception_handler.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_hw_exception_handler.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_interrupt_handler.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_program_clean.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/_program_init.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/xil_malloc.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/xil_sbrk.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/xil_printf.c + +@CONFIG_MICROBLAZE_TRUE@microblaze_libgloss_linux_a_SOURCES = \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-syscalls.S \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-syscalls-wrap.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-outbyte.c \ +@CONFIG_MICROBLAZE_TRUE@ microblaze/linux-inbyte.c + @CONFIG_MN10200_TRUE@mn10200_libeval_a_SOURCES = \ @CONFIG_MN10200_TRUE@ mn10200/_exit.c \ @CONFIG_MN10200_TRUE@ mn10200/access.c \ @@ -2719,15 +2817,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_132) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_137) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_136) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_141) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_133) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_138) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_137) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_142) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_134) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_139) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_138) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_143) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2735,8 +2833,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_135) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_140) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_139) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_144) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2747,7 +2845,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2769,7 +2867,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2812,8 +2910,6 @@ crx/Makefile: $(top_builddir)/config.status $(top_srcdir)/crx/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mep/Makefile: $(top_builddir)/config.status $(top_srcdir)/mep/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -microblaze/Makefile: $(top_builddir)/config.status $(top_srcdir)/microblaze/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ mt/Makefile: $(top_builddir)/config.status $(top_srcdir)/mt/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ xc16x/Makefile: $(top_builddir)/config.status $(top_srcdir)/xc16x/Makefile.in @@ -3403,6 +3499,32 @@ mcore/$(DEPDIR)/$(am__dirstamp): @: > mcore/$(DEPDIR)/$(am__dirstamp) mcore/crt0.$(OBJEXT): mcore/$(am__dirstamp) \ mcore/$(DEPDIR)/$(am__dirstamp) +microblaze/$(am__dirstamp): + @$(MKDIR_P) microblaze + @: > microblaze/$(am__dirstamp) +microblaze/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) microblaze/$(DEPDIR) + @: > microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/crt0.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/crt1.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/crt2.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/crt3.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/crt4.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/crtinit.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/pgcrtinit.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/sim-crtinit.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/sim-pgcrtinit.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/linux-crt0.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) mn10200/$(am__dirstamp): @$(MKDIR_P) mn10200 @: > mn10200/$(am__dirstamp) @@ -3664,6 +3786,45 @@ mcore/libsim.a: $(mcore_libsim_a_OBJECTS) $(mcore_libsim_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f mcore/libsim.a $(AM_V_AR)$(mcore_libsim_a_AR) mcore/libsim.a $(mcore_libsim_a_OBJECTS) $(mcore_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) mcore/libsim.a +microblaze/linux-syscalls.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/linux-syscalls-wrap.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/linux-outbyte.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/linux-inbyte.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) + +microblaze/libgloss-linux.a: $(microblaze_libgloss_linux_a_OBJECTS) $(microblaze_libgloss_linux_a_DEPENDENCIES) $(EXTRA_microblaze_libgloss_linux_a_DEPENDENCIES) microblaze/$(am__dirstamp) + $(AM_V_at)-rm -f microblaze/libgloss-linux.a + $(AM_V_AR)$(microblaze_libgloss_linux_a_AR) microblaze/libgloss-linux.a $(microblaze_libgloss_linux_a_OBJECTS) $(microblaze_libgloss_linux_a_LIBADD) + $(AM_V_at)$(RANLIB) microblaze/libgloss-linux.a +microblaze/sbrk.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/timer.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/_exception_handler.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/_hw_exception_handler.$(OBJEXT): \ + microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/_interrupt_handler.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/_program_clean.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/_program_init.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/xil_malloc.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/xil_sbrk.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) +microblaze/xil_printf.$(OBJEXT): microblaze/$(am__dirstamp) \ + microblaze/$(DEPDIR)/$(am__dirstamp) + +microblaze/libgloss.a: $(microblaze_libgloss_a_OBJECTS) $(microblaze_libgloss_a_DEPENDENCIES) $(EXTRA_microblaze_libgloss_a_DEPENDENCIES) microblaze/$(am__dirstamp) + $(AM_V_at)-rm -f microblaze/libgloss.a + $(AM_V_AR)$(microblaze_libgloss_a_AR) microblaze/libgloss.a $(microblaze_libgloss_a_OBJECTS) $(microblaze_libgloss_a_LIBADD) + $(AM_V_at)$(RANLIB) microblaze/libgloss.a mn10200/_exit.$(OBJEXT): mn10200/$(am__dirstamp) \ mn10200/$(DEPDIR)/$(am__dirstamp) mn10200/access.$(OBJEXT): mn10200/$(am__dirstamp) \ @@ -4889,6 +5050,7 @@ mostlyclean-compile: -rm -f lm32/*.$(OBJEXT) -rm -f m32r/*.$(OBJEXT) -rm -f mcore/*.$(OBJEXT) + -rm -f microblaze/*.$(OBJEXT) -rm -f mn10200/*.$(OBJEXT) -rm -f mn10300/*.$(OBJEXT) -rm -f moxie/*.$(OBJEXT) @@ -5148,6 +5310,30 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mcore/$(DEPDIR)/write.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/_exception_handler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/_hw_exception_handler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/_interrupt_handler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/_program_clean.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/_program_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/crt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/crt2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/crt3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/crt4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/crtinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/linux-crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/linux-inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/linux-outbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/linux-syscalls-wrap.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/linux-syscalls.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/pgcrtinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/sim-crtinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/sim-pgcrtinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/xil_malloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/xil_printf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@microblaze/$(DEPDIR)/xil_sbrk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/_exit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mn10200/$(DEPDIR)/chmod.Po@am__quote@ @@ -8409,6 +8595,8 @@ distclean-generic: -rm -f m32r/$(am__dirstamp) -rm -f mcore/$(DEPDIR)/$(am__dirstamp) -rm -f mcore/$(am__dirstamp) + -rm -f microblaze/$(DEPDIR)/$(am__dirstamp) + -rm -f microblaze/$(am__dirstamp) -rm -f mn10200/$(DEPDIR)/$(am__dirstamp) -rm -f mn10200/$(am__dirstamp) -rm -f mn10300/$(DEPDIR)/$(am__dirstamp) @@ -8464,7 +8652,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -8608,7 +8796,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 2aad99d39e..c586332441 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -686,6 +686,8 @@ CONFIG_MN10300_FALSE CONFIG_MN10300_TRUE CONFIG_MN10200_FALSE CONFIG_MN10200_TRUE +CONFIG_MICROBLAZE_FALSE +CONFIG_MICROBLAZE_TRUE CONFIG_MCORE_FALSE CONFIG_MCORE_TRUE CONFIG_M32R_FALSE @@ -2930,9 +2932,7 @@ case "${target}" in config_moxie=true ;; microblaze*-*-*) - ac_config_files="$ac_config_files microblaze/Makefile" - - subdirs="$subdirs microblaze" + config_microblaze=true ;; mt-*-*) ac_config_files="$ac_config_files mt/Makefile" @@ -3141,6 +3141,14 @@ else CONFIG_MCORE_FALSE= fi + if test x$config_microblaze = xtrue; then + CONFIG_MICROBLAZE_TRUE= + CONFIG_MICROBLAZE_FALSE='#' +else + CONFIG_MICROBLAZE_TRUE='#' + CONFIG_MICROBLAZE_FALSE= +fi + if test x$config_mn10200 = xtrue; then CONFIG_MN10200_TRUE= CONFIG_MN10200_FALSE='#' @@ -5845,6 +5853,10 @@ if test -z "${CONFIG_MCORE_TRUE}" && test -z "${CONFIG_MCORE_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MCORE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_MICROBLAZE_TRUE}" && test -z "${CONFIG_MICROBLAZE_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_MICROBLAZE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_MN10200_TRUE}" && test -z "${CONFIG_MN10200_FALSE}"; then as_fn_error $? "conditional \"CONFIG_MN10200\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6586,7 +6598,6 @@ do "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; - "microblaze/Makefile") CONFIG_FILES="$CONFIG_FILES microblaze/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index e376ad1560..17e98a2fa5 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -153,8 +153,7 @@ case "${target}" in config_moxie=true ;; microblaze*-*-*) - AC_CONFIG_FILES([microblaze/Makefile]) - subdirs="$subdirs microblaze" + config_microblaze=true ;; mt-*-*) AC_CONFIG_FILES([mt/Makefile]) @@ -227,7 +226,7 @@ dnl the ports above will too! m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 - m32r mcore mn10200 mn10300 moxie msp430 + m32r mcore microblaze mn10200 mn10300 moxie msp430 nds32 nios2 or1k riscv rl78 rx sparc sparc_leon tic6x v850 visium wince xstormy16 xtensa ], [dnl diff --git a/libgloss/microblaze/Makefile.in b/libgloss/microblaze/Makefile.in deleted file mode 100644 index 8437378f8d..0000000000 --- a/libgloss/microblaze/Makefile.in +++ /dev/null @@ -1,150 +0,0 @@ -# Copyright 2007, 2009 Xilinx, Inc. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# 1. Redistributions source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of Xilinx nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS -# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Makefile for libgloss/microblaze. This is the board support -# code for the various microblaze targets. - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ -AR_FLAGS = qrv - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT = crt0.o crt1.o crt2.o crt3.o crt4.o crtinit.o pgcrtinit.o sim-crtinit.o sim-pgcrtinit.o -LIB = libgloss.a -GENOBJS = fstat.o getpid.o isatty.o kill.o lseek.o print.o putnum.o stat.o unlink.o \ - open.o close.o read.o write.o -OBJS = ${GENOBJS} sbrk.o timer.o _exception_handler.o _hw_exception_handler.o \ - _interrupt_handler.o _program_clean.o _program_init.o \ - xil_malloc.o xil_sbrk.o xil_printf.o -SCRIPTS = xilinx.ld - -# Tiny Linux BSP. -LINUX_BSP = libgloss-linux.a -CRT += linux-crt0.o -LINUX_OBJS = linux-syscalls.o linux-syscalls-wrap.o -LINUX_OBJS += linux-outbyte.o linux-inbyte.o -LINUX_SCRIPTS = elf-gloss-linux.specs - -CPU = @CPU@ - -#### Host specific Makefile fragment comes in here. -@host_makefile_frag@ - -all: ${CRT} ${LIB} ${LINUX_BSP} - -install: ${CRT} ${LIB} install-linux - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - @for crt in ${CRT}; do \ - $(INSTALL_PROGRAM) $${crt} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${crt}; \ - done - $(INSTALL_PROGRAM) ${LIB} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - $(INSTALL_PROGRAM) $(srcdir)/${SCRIPTS} $(DESTDIR)$(tooldir)/lib/ - -install-linux: ${LINUX_BSP} - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - $(INSTALL_PROGRAM) ${LINUX_BSP} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR} - set -e; for x in ${LINUX_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done - -crt0.o: crt0.S -crt1.o: crt1.S -crt2.o: crt2.S -crt3.o: crt3.S -crt4.o: crt4.S -linux-crt0.o: linux-crt0.S -crtinit.o: crtinit.S -sim-crtinit.o: sim-crtinit.S -sim-pgcrtinit.o: sim-pgcrtinit.S -sbrk.o: sbrk.c - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -clean mostlyclean: - rm -f *.o *.a *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.cache config.log config.status - -${LIB}: ${OBJS} - ${AR} ${ARFLAGS} $@ ${OBJS} - ${RANLIB} $@ - -${LINUX_BSP}: ${LINUX_OBJS} - ${AR} ${ARFLAGS} $@ ${LINUX_OBJS} - ${RANLIB} $@ - -.PHONY: info dvi doc install-info clean-info -info doc dvi: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/microblaze/Makefile.inc b/libgloss/microblaze/Makefile.inc new file mode 100644 index 0000000000..ca1e8bf837 --- /dev/null +++ b/libgloss/microblaze/Makefile.inc @@ -0,0 +1,91 @@ +## Copyright 2007, 2009 Xilinx, Inc. All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are +## met: +## +## 1. Redistributions source code must retain the above copyright notice, +## this list of conditions and the following disclaimer. +## +## 2. Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## +## 3. Neither the name of Xilinx nor the names of its contributors may be +## used to endorse or promote products derived from this software without +## specific prior written permission. +## +## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS +## IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +## TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +## PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +## HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +## TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +## LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +## NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +if !HAVE_MULTISUBDIR +multilibtool_DATA += \ + %D%/xilinx.ld +endif +multilibtool_DATA += \ + %D%/elf-gloss-linux.specs + +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/crt1.o \ + %D%/crt2.o \ + %D%/crt3.o \ + %D%/crt4.o \ + %D%/crtinit.o \ + %D%/pgcrtinit.o \ + %D%/sim-crtinit.o \ + %D%/sim-pgcrtinit.o \ + %D%/linux-crt0.o +libobjs_a_SOURCES += \ + %D%/crt0.S \ + %D%/crt1.S \ + %D%/crt2.S \ + %D%/crt3.S \ + %D%/crt4.S \ + %D%/crtinit.S \ + %D%/pgcrtinit.S \ + %D%/sim-crtinit.S \ + %D%/sim-pgcrtinit.S \ + %D%/linux-crt0.S + +multilibtool_LIBRARIES += %D%/libgloss.a +%C%_libgloss_a_SOURCES = \ + fstat.c \ + getpid.c \ + isatty.c \ + kill.c \ + lseek.c \ + print.c \ + putnum.c \ + stat.c \ + unlink.c \ + open.c \ + close.c \ + read.c \ + write.c \ + %D%/sbrk.c \ + %D%/timer.c \ + %D%/_exception_handler.S \ + %D%/_hw_exception_handler.S \ + %D%/_interrupt_handler.S \ + %D%/_program_clean.S \ + %D%/_program_init.S \ + %D%/xil_malloc.c \ + %D%/xil_sbrk.c \ + %D%/xil_printf.c + +multilibtool_LIBRARIES += %D%/libgloss-linux.a +%C%_libgloss_linux_a_SOURCES = \ + %D%/linux-syscalls.S \ + %D%/linux-syscalls-wrap.c \ + %D%/linux-outbyte.c \ + %D%/linux-inbyte.c From 40b1b5c7a95dd7bf8b729420cec6e3c48dea204e Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 29 Dec 2023 21:29:44 -0500 Subject: [PATCH 602/767] libgloss: xc16x: drop old stub port First off, afaict, xc16x support has never been merged into gcc. Upstream merge isn't strictly required for new ports, but it seems like people should merge eventually in some shape, and considering the libgloss port was merged in 2009, ~14 years seems like plenty of leeway. Which is to say, no one else can seem to build this which makes updating & testing things very difficult. Ignoring that, from what I can tell, this port has only ever built and installed a crt0.o file. It defines libeval.a & libcygmon.a targets, but nothing depends on them. The SCRIPTS & BSP variables are always empty. The original port merge define these in the configure script as substitutes, but never set the vars, so they were always replaced with nothing. I actually broke this build 2 years ago when merging the configure up a level in commit 30f244155b8e82aa948ddcb8f2350654fc1adb92 ("libgloss: merge subdirs that have unique makefile_frags up a level"). I saw that it was exporting a bunch of vars in the configure script, but never set them, so I incorrectly assumed they weren't used. Which means the Makefile has been setting them to invalid values like literal @bsp_list@ and @script_list@. Considering no one has complained, I have to assume no one cares about this port, and we can all stop wasting time on it. --- libgloss/Makefile.in | 6 +- libgloss/config/xc16x.mt | 3 - libgloss/configure | 7 -- libgloss/configure.ac | 5 -- libgloss/xc16x/Makefile.in | 145 ----------------------------------- libgloss/xc16x/close.S | 20 ----- libgloss/xc16x/create.c | 39 ---------- libgloss/xc16x/crt0.S | 41 ---------- libgloss/xc16x/fstat.S | 20 ----- libgloss/xc16x/getchar1.c | 19 ----- libgloss/xc16x/isatty.c | 26 ------- libgloss/xc16x/lseek.c | 21 ----- libgloss/xc16x/mem-layout.c | 29 ------- libgloss/xc16x/misc.c | 37 --------- libgloss/xc16x/open.c | 38 --------- libgloss/xc16x/read.c | 29 ------- libgloss/xc16x/sbrk.c | 36 --------- libgloss/xc16x/sys/syscall.h | 1 - libgloss/xc16x/syscalls.c | 33 -------- libgloss/xc16x/trap_handle.c | 67 ---------------- libgloss/xc16x/write.c | 25 ------ 21 files changed, 2 insertions(+), 645 deletions(-) delete mode 100644 libgloss/config/xc16x.mt delete mode 100644 libgloss/xc16x/Makefile.in delete mode 100644 libgloss/xc16x/close.S delete mode 100644 libgloss/xc16x/create.c delete mode 100644 libgloss/xc16x/crt0.S delete mode 100644 libgloss/xc16x/fstat.S delete mode 100644 libgloss/xc16x/getchar1.c delete mode 100644 libgloss/xc16x/isatty.c delete mode 100644 libgloss/xc16x/lseek.c delete mode 100644 libgloss/xc16x/mem-layout.c delete mode 100644 libgloss/xc16x/misc.c delete mode 100644 libgloss/xc16x/open.c delete mode 100644 libgloss/xc16x/read.c delete mode 100644 libgloss/xc16x/sbrk.c delete mode 100644 libgloss/xc16x/sys/syscall.h delete mode 100644 libgloss/xc16x/syscalls.c delete mode 100644 libgloss/xc16x/trap_handle.c delete mode 100644 libgloss/xc16x/write.c diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index c4d931dea4..9b845538a7 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -481,8 +481,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ - crx/Makefile mep/Makefile mt/Makefile xc16x/Makefile \ - m32c/Makefile spu/Makefile pru/Makefile sparc/libsys/Makefile + crx/Makefile mep/Makefile mt/Makefile m32c/Makefile \ + spu/Makefile pru/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -2912,8 +2912,6 @@ mep/Makefile: $(top_builddir)/config.status $(top_srcdir)/mep/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ mt/Makefile: $(top_builddir)/config.status $(top_srcdir)/mt/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -xc16x/Makefile: $(top_builddir)/config.status $(top_srcdir)/xc16x/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in diff --git a/libgloss/config/xc16x.mt b/libgloss/config/xc16x.mt deleted file mode 100644 index 2ac79cebce..0000000000 --- a/libgloss/config/xc16x.mt +++ /dev/null @@ -1,3 +0,0 @@ -# Dummy target-specific Makefile fragment for XC16X. We can't -# use default.mt because it refers to generic source files whose -# names conflict with the XC16X-specific sources. diff --git a/libgloss/configure b/libgloss/configure index c586332441..fd5d9416ba 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -2946,12 +2946,6 @@ case "${target}" in config_visium=true config_testsuite=false ;; - xc16x-*-*) - ac_config_files="$ac_config_files xc16x/Makefile" - - subdirs="$subdirs xc16x" - target_makefile_frag=${srcdir}/config/xc16x.mt - ;; xstormy16-*-*) config_xstormy16=true ;; @@ -6599,7 +6593,6 @@ do "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; - "xc16x/Makefile") CONFIG_FILES="$CONFIG_FILES xc16x/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; "pru/Makefile") CONFIG_FILES="$CONFIG_FILES pru/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 17e98a2fa5..55f4261d1a 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -166,11 +166,6 @@ case "${target}" in config_visium=true config_testsuite=false ;; - xc16x-*-*) - AC_CONFIG_FILES([xc16x/Makefile]) - subdirs="$subdirs xc16x" - target_makefile_frag=${srcdir}/config/xc16x.mt - ;; xstormy16-*-*) config_xstormy16=true ;; diff --git a/libgloss/xc16x/Makefile.in b/libgloss/xc16x/Makefile.in deleted file mode 100644 index 5e2584e004..0000000000 --- a/libgloss/xc16x/Makefile.in +++ /dev/null @@ -1,145 +0,0 @@ -# -# Copyright (C) 2006 KPIT Cummins -# Copyright (C) 2009 Conny Marco Menebröcker -# All rights reserved. -# -# Redistribution and use in source and binary forms is permitted -# provided that the above copyright notice and following paragraph are -# duplicated in all such forms. -# -# This file is distributed WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# - -DESTDIR = -VPATH = @srcdir@ -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = -MULTIDO = true -MULTICLEAN = true - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -#AS = @AS@ -AS = `if [ -f ${objroot}/../gas/as.new ] ; \ - then echo ${objroot}/../gas/as.new ; \ - else echo as ; fi` - -AR = @AR@ - -#LD = @LD@ -LD = `if [ -f ${objroot}/../ld/ld.new ] ; \ - then echo ${objroot}/../ld/ld.new ; \ - else echo ld ; fi` - -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -CRT0 = crt0.o - -# Generic object files common to all targets. -GENOBJS_NO_TRAP = close.o create.o crt0.o fstat.o getchar1.o \ - isatty.o lseek.o mem-layout.o misc.o open.o \ - read.o sbrk.o syscalls.o write.o -GENOBJS = ${GENOBJS_NO_TRAP} trap_handle.o - -# Object files specific to particular targets. -EVALOBJS = ${GENOBJS} -CYGMONOBJS = ${GENOBJS_NO_TRAP} - -CFLAGS = -g - -GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \ - then echo -L${objroot}/../gcc ; fi` - -SCRIPTS = @script_list@ -BSP = @bsp_list@ - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# - -all: ${CRT0} ${BSP} - -# -# here's where we build the board support packages for each target -# - -libeval.a: $(EVALOBJS) - ${AR} ${ARFLAGS} $@ $(EVALOBJS) - ${RANLIB} $@ - -libcygmon.a: $(CYGMONOBJS) - ${AR} ${ARFLAGS} $@ $(CYGMONOBJS) - ${RANLIB} $@ - - -doc: - -clean mostlyclean: - rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile config.status a.out - -.PHONY: install info install-info clean-info -install: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - @for crt in ${CRT0}; do \ - $(INSTALL_PROGRAM) $${crt} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${crt}; \ - done - @for bsp in ${BSP}; do \ - $(INSTALL_PROGRAM) $${bsp} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \ - done - @for script in ${SCRIPTS}; do \ - $(INSTALL_DATA) ${srcdir}/$${script}.ld $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/$${script}.ld; \ - done - -info: -install-info: -clean-info: - -# these are for the BSPs -crt0.o: ${srcdir}/crt0.S - -# target specific makefile fragment comes in here. -@target_makefile_frag@ - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/xc16x/close.S b/libgloss/xc16x/close.S deleted file mode 100644 index 9b2f76f8d5..0000000000 --- a/libgloss/xc16x/close.S +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -.section .text -.global __close -__close: -#ifdef __xc16xL__ -rets -#else -ret -#endif diff --git a/libgloss/xc16x/create.c b/libgloss/xc16x/create.c deleted file mode 100644 index 33f4e0b206..0000000000 --- a/libgloss/xc16x/create.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include -#include -/*volatile int creatsys(char *name,int perms) -{ - #ifndef __xc16xL__ - asm volatile("push r10\n" - " mov r10,r9 \n" - " mov r9,#0x300 \n" - ); - - #endif - -asm volatile("trap #7"); -#ifndef __xc16xL__ -asm volatile("pop r10"); -#endif -} -*/ -volatile int _creat(char *name,int perms) -{ - int temp; - - temp=creatsys(name,perms); -// putchar((char)temp); -//printf("%d\n",temp); -return temp; -} diff --git a/libgloss/xc16x/crt0.S b/libgloss/xc16x/crt0.S deleted file mode 100644 index 0186f47406..0000000000 --- a/libgloss/xc16x/crt0.S +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - .section .text - .global _start - .align 2 -_start: - #if __xc16xL__ - mov dpp0,#0x2 - #else - mov dpp0,#0x300 - #endif - mov dpp1,#1 - mov dpp2,#2 - mov dpp3,#3 - mov sp,#0xfc00 - mov r0,#0xc000 - #if __xc16x__ - mov csp,#0x0 - mov dpp0,#0x0 - #else - mov csp,#0xc0 - #endif - -#if __xc16xL__ -calls #SEG:_main,#SOF:_main -#else -calla cc_UC,_main -#endif - mov r8,#0x0 - trap #0 -ret diff --git a/libgloss/xc16x/fstat.S b/libgloss/xc16x/fstat.S deleted file mode 100644 index 292303e3b5..0000000000 --- a/libgloss/xc16x/fstat.S +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -.section .text -.global __fstat -__fstat: -#ifdef __xc16xL__ -rets -#else -ret -#endif diff --git a/libgloss/xc16x/getchar1.c b/libgloss/xc16x/getchar1.c deleted file mode 100644 index 4ba5959c4a..0000000000 --- a/libgloss/xc16x/getchar1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -signed char getchar (void) -{ - - asm(" trap #2"); - -} - diff --git a/libgloss/xc16x/isatty.c b/libgloss/xc16x/isatty.c deleted file mode 100644 index 30e6a53270..0000000000 --- a/libgloss/xc16x/isatty.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -/* isatty.c */ - -/* Dumb implementation so programs will at least run. */ - -#include - -int -isatty (int fd) -{ - - - - return 1; -} diff --git a/libgloss/xc16x/lseek.c b/libgloss/xc16x/lseek.c deleted file mode 100644 index ff3057d257..0000000000 --- a/libgloss/xc16x/lseek.c +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include -#include - - -int -_lseek (int file, int ptr, int dir) -{ - return trap_lseek (file,(unsigned long)ptr, dir); -} diff --git a/libgloss/xc16x/mem-layout.c b/libgloss/xc16x/mem-layout.c deleted file mode 100644 index 4619ed2903..0000000000 --- a/libgloss/xc16x/mem-layout.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -/* Ideally this kind of stuff is specified in a linker script. It's not clear - what the default linker script should do, so for now we have this. */ - -#ifndef STACK_SIZE -/* Cache lines recycle at 4096 I think, and 4096 is listed as the page size, - so we make the stack size a multiple of it. Not that it's relevant or - anything, but why not base it on *something*? */ -#define STACK_SIZE (4096 * 4) -#endif - -int stack_size asm ("stack_size") = STACK_SIZE; - -#ifndef SBRK_SIZE -#define SBRK_SIZE (4096 * 32) -#endif - -int sbrk_size asm ("sbrk_size") = SBRK_SIZE; diff --git a/libgloss/xc16x/misc.c b/libgloss/xc16x/misc.c deleted file mode 100644 index d96550129c..0000000000 --- a/libgloss/xc16x/misc.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include <_ansi.h> -#include -#include - -/* _raise(), getpid(), and kill() are required by abort(). - getpid/kill are prefixed with '_' because of MISSING_SYSCALL_NAMES. */ - -int _raise (int sig) -{ - errno = ENOSYS; - return -1; -} - -int _getpid (void) -{ - errno = ENOSYS; - return -1; -} - -int _kill (int pid, - int sig) -{ - errno = ENOSYS; - return -1; -} diff --git a/libgloss/xc16x/open.c b/libgloss/xc16x/open.c deleted file mode 100644 index 4dd0d070de..0000000000 --- a/libgloss/xc16x/open.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include -#include -/*volatile int opensys(char *name,int flags,int perms) -{ - #ifndef __xc16xL__ - asm volatile("push r11\n" - "mov r11,r10 \n" - " mov r10,r9 \n" - " mov r9,#0x300 \n" - ); - - #endif - -asm volatile("trap #5"); -#ifndef __xc16xL__ -asm volatile("pop r11"); -#endif -}*/ - -int _open(char *name,int flags,int perms) -{ - int temp; - - temp=opensys(name,flags,perms); -return temp; -} diff --git a/libgloss/xc16x/read.c b/libgloss/xc16x/read.c deleted file mode 100644 index b117af9462..0000000000 --- a/libgloss/xc16x/read.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include -#include - -/*int trap1(int file, unsigned long ptr,int len) -{ - asm volatile("TRAP #4"); - -}*/ - -int _read(int file, char *ptr,int len) -{ - - return trap1(file,(unsigned long)ptr,1); - -} - - diff --git a/libgloss/xc16x/sbrk.c b/libgloss/xc16x/sbrk.c deleted file mode 100644 index deb2df26cb..0000000000 --- a/libgloss/xc16x/sbrk.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include <_ansi.h> -#include -#include - - char *stack_ptr ; - -caddr_t - _sbrk(incr) - int incr; -{ - extern char end; /* Defined by the linker */ - static char *heap_end=&end; - char *prev_heap_end; - - - - prev_heap_end = heap_end; - - - heap_end += incr; - return (caddr_t)prev_heap_end; -} - diff --git a/libgloss/xc16x/sys/syscall.h b/libgloss/xc16x/sys/syscall.h deleted file mode 100644 index 8b13789179..0000000000 --- a/libgloss/xc16x/sys/syscall.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/libgloss/xc16x/syscalls.c b/libgloss/xc16x/syscalls.c deleted file mode 100644 index 03b6368cb3..0000000000 --- a/libgloss/xc16x/syscalls.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include -#include -#include -#include <_ansi.h> -#include -#include -#include -#include - - - -void _exit(int n) -{ -asm volatile("trap #0"); -} - -int isatty(file) - int file; -{ - return 1; -} diff --git a/libgloss/xc16x/trap_handle.c b/libgloss/xc16x/trap_handle.c deleted file mode 100644 index 899cdc20da..0000000000 --- a/libgloss/xc16x/trap_handle.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -int trap0(int file, unsigned long ptr,int len) -{ -asm volatile("TRAP #3"); -return len; -} - - -int trap1(int file, unsigned long ptr,int len) -{ - asm volatile("TRAP #4"); - -} - -int trap_lseek(int file, unsigned long ptr,int len) -{ - asm volatile("TRAP #8"); - -} - - - -volatile int opensys(char *name,int flags,int perms) -{ - #ifndef __xc16xL__ - asm volatile("push r11\n" - "mov r11,r10 \n" - " mov r10,r9 \n" - " mov r9,#0x300 \n" - ); - - #endif - -asm volatile("trap #5"); -#ifndef __xc16xL__ -asm volatile("pop r11"); -#endif -} - -volatile int creatsys(char *name,int perms) -{ - #ifndef __xc16xL__ - asm volatile("push r10\n" - " mov r10,r9 \n" - " mov r9,#0x300 \n" - ); - - #endif - -asm volatile("trap #7"); -#ifndef __xc16xL__ -asm volatile("pop r10"); -#endif -} - - diff --git a/libgloss/xc16x/write.c b/libgloss/xc16x/write.c deleted file mode 100644 index 10b1b556a3..0000000000 --- a/libgloss/xc16x/write.c +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2006 KPIT Cummins - * Copyright (C) 2009 Conny Marco Menebröcker - * All rights reserved. - * - * Redistribution and use in source and binary forms is permitted - * provided that the above copyright notice and following paragraph are - * duplicated in all such forms. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ -#include -#include - -/*int trap0(int file, unsigned long ptr,int len) -{ -asm volatile("TRAP #3"); -return len; -} -*/ -int _write(int file, char *ptr,int len) -{ - return trap0(file,(unsigned long)ptr,len); -} From 6f6427b0534a6e2a90c670c1803584337844d045 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Mon, 22 Jan 2024 13:57:50 -0500 Subject: [PATCH 603/767] Add Dimitar Dimitrov as maintainer for pru --- newlib/MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/newlib/MAINTAINERS b/newlib/MAINTAINERS index bb1680494b..4dfef27311 100644 --- a/newlib/MAINTAINERS +++ b/newlib/MAINTAINERS @@ -43,6 +43,7 @@ risc-v Kito Cheng kito.cheng@gmail.com aarch64 Richard Earnshaw richard.earnshaw@arm.com Marcus Shawcroft marcus.shawcroft@arm.com msp430 Nick Clifton nickc@redhat.com +pru Dimitar Dimitrov dimitar@dinux.eu OS Port Maintainers (OS alphabetical order) From fd4e96f1afe74daf9c041d651a217e0616f1dc9e Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 19:09:29 -0500 Subject: [PATCH 604/767] libgloss: doc: fix dir info entry usage Wrapping the dir info with @ifnottex means it's included in all other outputs like html which makes no sense. Switch to @direntry which is specific for this content and is automatically written to the output that makes sense, and omitted from the rest. --- libgloss/doc/porting.texi | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libgloss/doc/porting.texi b/libgloss/doc/porting.texi index 5697a64d0b..e3c48845da 100644 --- a/libgloss/doc/porting.texi +++ b/libgloss/doc/porting.texi @@ -43,12 +43,13 @@ Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. @end titlepage -@ifnottex -@format +@direntry START-INFO-DIR-ENTRY * Embed with GNU: (porting-). Embed with GNU END-INFO-DIR-ENTRY -@end format +@end direntry + +@ifnottex Copyright (c) 1993, 1994, 1995 Cygnus Support Permission is granted to make and distribute verbatim copies of From 5a8c23a73abe731846b254284651cdf54cee1131 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 26 Dec 2023 19:53:51 -0500 Subject: [PATCH 605/767] libgloss: doc: unify duplicate copyright/license content Use @copying & @insertcopying directives to define the copyright & license block only once, and then inserted at the same places as it was before. --- libgloss/doc/porting.texi | 40 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/libgloss/doc/porting.texi b/libgloss/doc/porting.texi index e3c48845da..1f68757be6 100644 --- a/libgloss/doc/porting.texi +++ b/libgloss/doc/porting.texi @@ -18,16 +18,8 @@ @set automake @ref{Top,,GNU Automake,automake} @set libtool @ref{Top,,GNU Libtool,libtool} -@titlepage -@title Embed With GNU -@subtitle Porting The GNU Tools To Embedded Systems -@sp 4 -@subtitle Spring 1995 -@subtitle Very *Rough* Draft -@author Rob Savoye - Cygnus Support -@page - -@vskip 0pt plus 1filll +@copying +@c man begin COPYRIGHT Copyright @copyright{} 1993, 1994, 1995 Cygnus Support Permission is granted to make and distribute verbatim copies of @@ -41,6 +33,20 @@ permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. +@c man end +@end copying + +@titlepage +@title Embed With GNU +@subtitle Porting The GNU Tools To Embedded Systems +@sp 4 +@subtitle Spring 1995 +@subtitle Very *Rough* Draft +@author Rob Savoye - Cygnus Support +@c Then the copyright page. This must be a page by itself after the titlepage. +@page +@vskip 0pt plus 1filll +@insertcopying @end titlepage @direntry @@ -50,19 +56,7 @@ END-INFO-DIR-ENTRY @end direntry @ifnottex -Copyright (c) 1993, 1994, 1995 Cygnus Support - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. +@insertcopying @node Top @top Embed with GNU From 613267aa6ede2f147ee03035ecc11716cbc5d457 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 5 Jan 2024 00:00:22 -0500 Subject: [PATCH 606/767] newlib: docs: print the function index The generated function documentation makes sure to include entries for every function in the function index via @findex, but then the manuals forget to actually print the index. --- newlib/libc/libc.texi | 5 +++++ newlib/libm/libm.texi | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi index c6aeab2278..a642f424bb 100644 --- a/newlib/libc/libc.texi +++ b/newlib/libc/libc.texi @@ -155,6 +155,7 @@ into another language, under the above conditions for modified versions. * Overflow Protection:: * Document Index:: +* Function Index:: @end menu @end ifnottex @@ -410,6 +411,10 @@ usage as the ANSI C version from @file{stdarg.h}. @unnumbered Document Index @printindex cp +@node Function Index +@unnumbered Function Index +@printindex fn + @tex % I think something like @@colophon should be in texinfo. In the % meantime: diff --git a/newlib/libm/libm.texi b/newlib/libm/libm.texi index 943262d055..d322422c2c 100644 --- a/newlib/libm/libm.texi +++ b/newlib/libm/libm.texi @@ -98,6 +98,7 @@ into another language, under the above conditions for modified versions. * Reentrancy:: The functions in libm are not reentrant by default. * Long Double Functions:: The long double function support of libm. * Document Index:: +* Function Index:: @end menu @include targetdep.tex @@ -121,10 +122,15 @@ This makes it thread safe, and therefore reentrant. Currently, the full set of long double math functions is only provided on platforms where long double equals double. For such platforms, the long double math functions are implemented as calls to the double versions. + @node Document Index @unnumbered Document Index @printindex cp +@node Function Index +@unnumbered Function Index +@printindex fn + @tex % I think something like @@colophon should be in texinfo. In the % meantime: From 72b6105518afd82e01abe946ba5867f98d6be37a Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 5 Jan 2024 00:01:23 -0500 Subject: [PATCH 607/767] newlib: docs: add "Function " to every function node When creating a split manual with one-node-per-page, the main index.html ends up getting clobbered by the page for the index() function because it uses "@node index" which, for html, also creates an index.html page. To remedy this, add "Function " to every function node so now we output "Function-index.html" and avoid clobbering. It also namespaces every other function and helps make sure we don't clobber anything else. Otherwise, there isn't really much rendering difference as @node text is mostly internal. Node title text comes from @section instead. --- newlib/doc/doc.str | 2 +- newlib/libc/ctype/ctype.tex | 66 ++++++------ newlib/libc/iconv/iconv.tex | 2 +- newlib/libc/libc.texi | 28 ++--- newlib/libc/locale/locale.tex | 2 +- newlib/libc/machine/xtensa/xtensa.tex | 8 +- newlib/libc/misc/misc.tex | 6 +- newlib/libc/posix/posix.tex | 4 +- newlib/libc/signal/signal.tex | 8 +- newlib/libc/stdio/stdio.tex | 150 +++++++++++++------------- newlib/libc/stdio64/stdio64.tex | 16 +-- newlib/libc/stdlib/stdlib.tex | 102 +++++++++--------- newlib/libc/string/strings.tex | 98 ++++++++--------- newlib/libc/string/wcstrings.tex | 60 +++++------ newlib/libc/sys.tex | 40 +++---- newlib/libc/time/time.tex | 22 ++-- newlib/libm/complex/complex.tex | 46 ++++---- newlib/libm/fenv/fenv.tex | 22 ++-- newlib/libm/math/math.tex | 112 +++++++++---------- newlib/libm/mathfp/mathfp.tex | 78 +++++++------- 20 files changed, 436 insertions(+), 436 deletions(-) diff --git a/newlib/doc/doc.str b/newlib/doc/doc.str index b0bfc9ea41..52d41f245c 100644 --- a/newlib/doc/doc.str +++ b/newlib/doc/doc.str @@ -75,7 +75,7 @@ ; : FUNCTION - "@node " - a + "@node Function " - a skip_past_newline copy_past_newline dup - a x x diff --git a/newlib/libc/ctype/ctype.tex b/newlib/libc/ctype/ctype.tex index 1cd223e698..e9b42d8539 100644 --- a/newlib/libc/ctype/ctype.tex +++ b/newlib/libc/ctype/ctype.tex @@ -7,39 +7,39 @@ The header file @file{ctype.h} defines the macros. @menu -* isalnum:: Alphanumeric character predicate (isalnum, isalnum_l) -* isalpha:: Alphabetic character predicate (isalpha, isalpha_l) -* isascii:: ASCII character predicate (isascii, isascii_l) -* isblank:: Blank character predicate (isblank, isblank_l) -* iscntrl:: Control character predicate (iscntrl, iscntrl_l) -* isdigit:: Decimal digit predicate (isdigit, isdigit_l) -* islower:: Lowercase character predicate (islower, islower_l) -* isprint:: Printable character predicates (isprint, isprint_l. isgraph, isgraph_l) -* ispunct:: Punctuation character predicate (ispunct, ispunct_l) -* isspace:: Whitespace character predicate (isspace, isspace_l) -* isupper:: Uppercase character predicate (isupper, isupper_l) -* isxdigit:: Hexadecimal digit predicate (isxdigit, isxdigit_l) -* toascii:: Force integers to ASCII range (toascii, toascii_l) -* tolower:: Translate characters to lowercase (tolower, tolower_l) -* toupper:: Translate characters to uppercase (toupper, toupper_l) -* iswalnum:: Alphanumeric wide character predicate (iswalnum, iswalnum_l) -* iswalpha:: Alphabetic wide character predicate (iswalpha, iswalpha_l) -* iswblank:: Blank wide character predicate (iswblank, iswblank_l) -* iswcntrl:: Control wide character predicate (iswcntrl, iswcntrl_l) -* iswdigit:: Decimal digit wide character predicate (iswdigit, iswdigit_l) -* iswgraph:: Graphic wide character predicate (iswgraph, iswgraph_l) -* iswlower:: Lowercase wide character predicate (iswlower, iswlower_l) -* iswprint:: Printable wide character predicate (iswprint, iswprint_l) -* iswpunct:: Punctuation wide character predicate (iswpunct, iswpunct_l) -* iswspace:: Whitespace wide character predicate (iswspace, iswspace_l) -* iswupper:: Uppercase wide character predicate (iswupper, iswupper_l) -* iswxdigit:: Hexadecimal digit wide character predicate (iswxdigit, iswxdigit_l) -* iswctype:: Extensible wide-character test (iswctype, iswctype_l) -* wctype:: Compute wide-character test type (wctype, wctype_l) -* towlower:: Translate wide characters to lowercase (towlower, towlower_l) -* towupper:: Translate wide characters to uppercase (towupper, towupper_l) -* towctrans:: Extensible wide-character translation (towctrans, towctrans_l) -* wctrans:: Compute wide-character translation type (wctrans, wctrans_l) +* Function isalnum:: Alphanumeric character predicate (isalnum, isalnum_l) +* Function isalpha:: Alphabetic character predicate (isalpha, isalpha_l) +* Function isascii:: ASCII character predicate (isascii, isascii_l) +* Function isblank:: Blank character predicate (isblank, isblank_l) +* Function iscntrl:: Control character predicate (iscntrl, iscntrl_l) +* Function isdigit:: Decimal digit predicate (isdigit, isdigit_l) +* Function islower:: Lowercase character predicate (islower, islower_l) +* Function isprint:: Printable character predicates (isprint, isprint_l. isgraph, isgraph_l) +* Function ispunct:: Punctuation character predicate (ispunct, ispunct_l) +* Function isspace:: Whitespace character predicate (isspace, isspace_l) +* Function isupper:: Uppercase character predicate (isupper, isupper_l) +* Function isxdigit:: Hexadecimal digit predicate (isxdigit, isxdigit_l) +* Function toascii:: Force integers to ASCII range (toascii, toascii_l) +* Function tolower:: Translate characters to lowercase (tolower, tolower_l) +* Function toupper:: Translate characters to uppercase (toupper, toupper_l) +* Function iswalnum:: Alphanumeric wide character predicate (iswalnum, iswalnum_l) +* Function iswalpha:: Alphabetic wide character predicate (iswalpha, iswalpha_l) +* Function iswblank:: Blank wide character predicate (iswblank, iswblank_l) +* Function iswcntrl:: Control wide character predicate (iswcntrl, iswcntrl_l) +* Function iswdigit:: Decimal digit wide character predicate (iswdigit, iswdigit_l) +* Function iswgraph:: Graphic wide character predicate (iswgraph, iswgraph_l) +* Function iswlower:: Lowercase wide character predicate (iswlower, iswlower_l) +* Function iswprint:: Printable wide character predicate (iswprint, iswprint_l) +* Function iswpunct:: Punctuation wide character predicate (iswpunct, iswpunct_l) +* Function iswspace:: Whitespace wide character predicate (iswspace, iswspace_l) +* Function iswupper:: Uppercase wide character predicate (iswupper, iswupper_l) +* Function iswxdigit:: Hexadecimal digit wide character predicate (iswxdigit, iswxdigit_l) +* Function iswctype:: Extensible wide-character test (iswctype, iswctype_l) +* Function wctype:: Compute wide-character test type (wctype, wctype_l) +* Function towlower:: Translate wide characters to lowercase (towlower, towlower_l) +* Function towupper:: Translate wide characters to uppercase (towupper, towupper_l) +* Function towctrans:: Extensible wide-character translation (towctrans, towctrans_l) +* Function wctrans:: Compute wide-character translation type (wctrans, wctrans_l) @end menu @page diff --git a/newlib/libc/iconv/iconv.tex b/newlib/libc/iconv/iconv.tex index 5b1f7518a4..b668af7fb0 100644 --- a/newlib/libc/iconv/iconv.tex +++ b/newlib/libc/iconv/iconv.tex @@ -6,7 +6,7 @@ @file{iconv.h}. @menu -* iconv:: Encoding conversion routines +* Function iconv:: Encoding conversion routines * Introduction to iconv:: Introduction to iconv and encodings * Supported encodings:: The list of currently supported encodings * iconv design decisions:: General iconv library design issues diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi index a642f424bb..1d798d11e9 100644 --- a/newlib/libc/libc.texi +++ b/newlib/libc/libc.texi @@ -208,13 +208,13 @@ also defines a special type to represent variable argument lists: this type is called @code{va_list}. @menu -* va_start:: -* va_arg:: -* va_end:: +* Function va_start:: +* Function va_arg:: +* Function va_end:: @end menu @page -@node va_start +@node Function va_start @subsection Initialize variable argument list @findex va_start @strong{Synopsis} @@ -239,7 +239,7 @@ variable arguments in an ANSI C function header). You can only use ANSI C requires @code{va_start}. @page -@node va_arg +@node Function va_arg @subsection Extract a value from argument list @findex va_arg @strong{Synopsis} @@ -273,7 +273,7 @@ in your function call. ANSI C requires @code{va_arg}. @page -@node va_end +@node Function va_end @subsection Abandon a variable argument list @findex va_end @strong{Synopsis} @@ -307,14 +307,14 @@ As with @file{stdarg.h}, the type @code{va_list} is used to hold a data structure representing a variable argument list. @menu -* va_alist:: -* va_start-trad:: -* va_arg-trad:: -* va_end-trad:: +* Function va_alist:: +* Function va_start-trad:: +* Function va_arg-trad:: +* Function va_end-trad:: @end menu @page -@node va_alist +@node Function va_alist @subsection Declare variable arguments @findex va_alist @findex va_dcl @@ -340,7 +340,7 @@ possible. declaring variable argument lists prior to ANSI C. @page -@node va_start-trad +@node Function va_start-trad @subsection Initialize variable argument list @findex va_start @strong{Synopsis} @@ -364,7 +364,7 @@ definitions are incompatible; the ANSI version has another parameter besides @var{ap}. @page -@node va_arg-trad +@node Function va_arg-trad @subsection Extract a value from argument list @findex va_arg @strong{Synopsis} @@ -387,7 +387,7 @@ The @code{va_arg} defined in @file{varargs.h} has the same syntax and usage as the ANSI C version from @file{stdarg.h}. @page -@node va_end-trad +@node Function va_end-trad @subsection Abandon a variable argument list @findex va_end @strong{Synopsis} diff --git a/newlib/libc/locale/locale.tex b/newlib/libc/locale/locale.tex index eee7d77cb3..3671698002 100644 --- a/newlib/libc/locale/locale.tex +++ b/newlib/libc/locale/locale.tex @@ -116,7 +116,7 @@ @end table @menu -* setlocale:: Select or query locale +* Function setlocale:: Select or query locale @end menu @page diff --git a/newlib/libc/machine/xtensa/xtensa.tex b/newlib/libc/machine/xtensa/xtensa.tex index 1a5bf65e76..cb167826f1 100644 --- a/newlib/libc/machine/xtensa/xtensa.tex +++ b/newlib/libc/machine/xtensa/xtensa.tex @@ -5,12 +5,12 @@ in the C library when it is built for Xtensa processors. @menu -* setjmp:: Save stack environment -* longjmp:: Non-local goto +* Function setjmp:: Save stack environment +* Function longjmp:: Non-local goto @end menu @page -@node setjmp +@node Function setjmp @section @code{setjmp}---save stack environment @findex setjmp @strong{Synopsis} @@ -39,7 +39,7 @@ @* @page -@node longjmp +@node Function longjmp @section @code{longjmp}---non-local goto @findex longjmp @strong{Synopsis} diff --git a/newlib/libc/misc/misc.tex b/newlib/libc/misc/misc.tex index 248243b53e..938b407a9a 100644 --- a/newlib/libc/misc/misc.tex +++ b/newlib/libc/misc/misc.tex @@ -3,9 +3,9 @@ This chapter describes miscellaneous routines not covered elsewhere. @menu -* ffs:: Return first bit set in a word -* __retarget_lock_init:: Retargetable locking routines -* unctrl:: Return printable representation of a character +* Function ffs:: Return first bit set in a word +* Function __retarget_lock_init:: Retargetable locking routines +* Function unctrl:: Return printable representation of a character @end menu @page diff --git a/newlib/libc/posix/posix.tex b/newlib/libc/posix/posix.tex index 6fb662bdc5..02de223c0f 100644 --- a/newlib/libc/posix/posix.tex +++ b/newlib/libc/posix/posix.tex @@ -5,8 +5,8 @@ not by C. Each function documents which header to use. @menu -* popen:: Create a stream tied to a child process -* posix_spawn:: Spawn a process +* Function popen:: Create a stream tied to a child process +* Function posix_spawn:: Spawn a process @end menu @page diff --git a/newlib/libc/signal/signal.tex b/newlib/libc/signal/signal.tex index f7dbf9d88e..7349cd7a3b 100644 --- a/newlib/libc/signal/signal.tex +++ b/newlib/libc/signal/signal.tex @@ -59,10 +59,10 @@ reliable from signal handlers.) @menu -* psignal:: Print a signal message to standard error -* raise:: Send a signal -* sig2str:: Translate between signal number and name -* signal:: Specify handler subroutine for a signal +* Function psignal:: Print a signal message to standard error +* Function raise:: Send a signal +* Function sig2str:: Translate between signal number and name +* Function signal:: Specify handler subroutine for a signal @end menu @page diff --git a/newlib/libc/stdio/stdio.tex b/newlib/libc/stdio/stdio.tex index 5352c5491f..9bb9cf6c2d 100644 --- a/newlib/libc/stdio/stdio.tex +++ b/newlib/libc/stdio/stdio.tex @@ -24,81 +24,81 @@ structure. @menu -* clearerr:: Clear file or stream error indicator -* diprintf:: Print to a file descriptor (integer only) -* dprintf:: Print to a file descriptor -* fclose:: Close a file -* fcloseall:: Close all files -* fdopen:: Turn an open file into a stream -* feof:: Test for end of file -* ferror:: Test whether read/write error has occurred -* fflush:: Flush buffered file output -* fgetc:: Get a character from a file or stream -* fgetpos:: Record position in a stream or file -* fgets:: Get character string from a file or stream -* fgetwc:: Get a wide character from a file or stream -* fgetws:: Get a wide character string from a file or stream -* fileno:: Get file descriptor associated with stream -* fmemopen:: Open a stream around a fixed-length buffer -* fopen:: Open a file -* fopencookie:: Open a stream with custom callbacks -* fpurge:: Discard all pending I/O on a stream -* fputc:: Write a character on a stream or file -* fputs:: Write a character string in a file or stream -* fputwc:: Write a wide character to a file or stream -* fputws:: Write a wide character string to a file or stream -* fread:: Read array elements from a file -* freopen:: Open a file using an existing file descriptor -* fseek:: Set file position -* __fsetlocking:: Set or query locking mode on FILE stream -* fsetpos:: Restore position of a stream or file -* ftell:: Return position in a stream or file -* funopen:: Open a stream with custom callbacks -* fwide:: Set and determine the orientation of a FILE stream -* fwrite:: Write array elements from memory to a file or stream -* getc:: Get a character from a file or stream (macro) -* getc_unlocked:: Get a character from a file or stream (macro) -* getchar:: Get a character from standard input (macro) -* getchar_unlocked:: Get a character from standard input (macro) -* getdelim:: Get character string from a file or stream -* getline:: Get character string from a file or stream -* gets:: Get character string from standard input (obsolete) -* getw:: Get a word (int) from a file or stream -* getwchar:: Get a wide character from standard input -* mktemp:: Generate unused file name -* open_memstream:: Open a write stream around an arbitrary-length buffer -* perror:: Print an error message on standard error -* putc:: Write a character on a stream or file (macro) -* putc_unlocked:: Write a character on a stream or file (macro) -* putchar:: Write a character on standard output (macro) -* putchar_unlocked:: Write a character on standard output (macro) -* puts:: Write a character string on standard output -* putw:: Write a word (int) to a file or stream -* putwchar:: Write a wide character to standard output -* remove:: Delete a file's name -* rename:: Rename a file -* rewind:: Reinitialize a file or stream -* setbuf:: Specify full buffering for a file or stream -* setbuffer:: Specify full buffering for a file or stream with size -* setlinebuf:: Specify line buffering for a file or stream -* setvbuf:: Specify buffering for a file or stream -* siprintf:: Write formatted output (integer only) -* siscanf:: Scan and format input (integer only) -* sprintf:: Write formatted output -* sscanf:: Scan and format input -* stdio_ext:: Access internals of FILE structure -* swprintf:: Write formatted wide character output -* swscanf:: Scan and format wide character input -* tmpfile:: Create a temporary file -* tmpnam:: Generate name for a temporary file -* ungetc:: Push data back into a stream -* ungetwc:: Push wide character data back into a stream -* vfprintf:: Format variable argument list -* vfscanf:: Scan variable argument list -* vfwprintf:: Format variable wide character argument list -* vfwscanf:: Scan and format argument list from wide character input -* viprintf:: Format variable argument list (integer only) -* viscanf:: Scan variable format list (integer only) +* Function clearerr:: Clear file or stream error indicator +* Function diprintf:: Print to a file descriptor (integer only) +* Function dprintf:: Print to a file descriptor +* Function fclose:: Close a file +* Function fcloseall:: Close all files +* Function fdopen:: Turn an open file into a stream +* Function feof:: Test for end of file +* Function ferror:: Test whether read/write error has occurred +* Function fflush:: Flush buffered file output +* Function fgetc:: Get a character from a file or stream +* Function fgetpos:: Record position in a stream or file +* Function fgets:: Get character string from a file or stream +* Function fgetwc:: Get a wide character from a file or stream +* Function fgetws:: Get a wide character string from a file or stream +* Function fileno:: Get file descriptor associated with stream +* Function fmemopen:: Open a stream around a fixed-length buffer +* Function fopen:: Open a file +* Function fopencookie:: Open a stream with custom callbacks +* Function fpurge:: Discard all pending I/O on a stream +* Function fputc:: Write a character on a stream or file +* Function fputs:: Write a character string in a file or stream +* Function fputwc:: Write a wide character to a file or stream +* Function fputws:: Write a wide character string to a file or stream +* Function fread:: Read array elements from a file +* Function freopen:: Open a file using an existing file descriptor +* Function fseek:: Set file position +* Function __fsetlocking:: Set or query locking mode on FILE stream +* Function fsetpos:: Restore position of a stream or file +* Function ftell:: Return position in a stream or file +* Function funopen:: Open a stream with custom callbacks +* Function fwide:: Set and determine the orientation of a FILE stream +* Function fwrite:: Write array elements from memory to a file or stream +* Function getc:: Get a character from a file or stream (macro) +* Function getc_unlocked:: Get a character from a file or stream (macro) +* Function getchar:: Get a character from standard input (macro) +* Function getchar_unlocked:: Get a character from standard input (macro) +* Function getdelim:: Get character string from a file or stream +* Function getline:: Get character string from a file or stream +* Function gets:: Get character string from standard input (obsolete) +* Function getw:: Get a word (int) from a file or stream +* Function getwchar:: Get a wide character from standard input +* Function mktemp:: Generate unused file name +* Function open_memstream:: Open a write stream around an arbitrary-length buffer +* Function perror:: Print an error message on standard error +* Function putc:: Write a character on a stream or file (macro) +* Function putc_unlocked:: Write a character on a stream or file (macro) +* Function putchar:: Write a character on standard output (macro) +* Function putchar_unlocked:: Write a character on standard output (macro) +* Function puts:: Write a character string on standard output +* Function putw:: Write a word (int) to a file or stream +* Function putwchar:: Write a wide character to standard output +* Function remove:: Delete a file's name +* Function rename:: Rename a file +* Function rewind:: Reinitialize a file or stream +* Function setbuf:: Specify full buffering for a file or stream +* Function setbuffer:: Specify full buffering for a file or stream with size +* Function setlinebuf:: Specify line buffering for a file or stream +* Function setvbuf:: Specify buffering for a file or stream +* Function siprintf:: Write formatted output (integer only) +* Function siscanf:: Scan and format input (integer only) +* Function sprintf:: Write formatted output +* Function sscanf:: Scan and format input +* Function stdio_ext:: Access internals of FILE structure +* Function swprintf:: Write formatted wide character output +* Function swscanf:: Scan and format wide character input +* Function tmpfile:: Create a temporary file +* Function tmpnam:: Generate name for a temporary file +* Function ungetc:: Push data back into a stream +* Function ungetwc:: Push wide character data back into a stream +* Function vfprintf:: Format variable argument list +* Function vfscanf:: Scan variable argument list +* Function vfwprintf:: Format variable wide character argument list +* Function vfwscanf:: Scan and format argument list from wide character input +* Function viprintf:: Format variable argument list (integer only) +* Function viscanf:: Scan variable format list (integer only) @end menu @page diff --git a/newlib/libc/stdio64/stdio64.tex b/newlib/libc/stdio64/stdio64.tex index 95f898f3d9..1c84d89fc6 100644 --- a/newlib/libc/stdio64/stdio64.tex +++ b/newlib/libc/stdio64/stdio64.tex @@ -10,14 +10,14 @@ The corresponding declarations are in @file{stdio.h}. @menu -* fdopen64:: Turn open large file into a stream -* fopen64:: Open a large file -* freopen64:: Open a large file using an existing file descriptor -* fsetpos64:: Restore position of a large stream or file -* fgetpos64:: Get position of a large stream or file -* ftello64:: Return position in a large stream or file -* fseeko64:: Set large file position -* tmpfile64:: Create a temporary large file +* Function fdopen64:: Turn open large file into a stream +* Function fopen64:: Open a large file +* Function freopen64:: Open a large file using an existing file descriptor +* Function fsetpos64:: Restore position of a large stream or file +* Function fgetpos64:: Get position of a large stream or file +* Function ftello64:: Return position in a large stream or file +* Function fseeko64:: Set large file position +* Function tmpfile64:: Create a temporary large file @end menu @page diff --git a/newlib/libc/stdlib/stdlib.tex b/newlib/libc/stdlib/stdlib.tex index 75d80f4d6b..4da8fcfe8c 100644 --- a/newlib/libc/stdlib/stdlib.tex +++ b/newlib/libc/stdlib/stdlib.tex @@ -5,57 +5,57 @@ The corresponding declarations are in the header file @file{stdlib.h}. @menu -* _Exit:: End program execution without cleaning up -* a64l:: String to long long -* abort:: Abnormal termination of a program -* abs:: Integer absolute value (magnitude) -* assert:: Macro for Debugging Diagnostics -* atexit:: Request execution of functions at program exit -* atof:: String to double or float -* atoi:: String to integer -* atoll:: String to long long -* bsearch:: Binary search -* calloc:: Allocate space for arrays -* div:: Divide two integers -* ecvtbuf:: Double or float to string of digits -* ecvt:: Double or float to string of digits (malloc result) -* __env_lock:: Lock environment list for getenv and setenv -* gcvt:: Format double or float as string -* exit:: End program execution -* getenv:: Look up environment variable -* itoa:: Integer to string -* labs:: Long integer absolute value (magnitude) -* ldiv:: Divide two long integers -* llabs:: Long long integer absolute value (magnitude) -* lldiv:: Divide two long long integers -* malloc:: Allocate and manage memory (malloc, realloc, free) -* mallinfo:: Get information about allocated memory -* __malloc_lock:: Lock memory pool for malloc and free -* mbsrtowcs:: Convert a character string to a wide-character string -* mbstowcs:: Minimal multibyte string to wide string converter -* mblen:: Minimal multibyte length -* mbtowc:: Minimal multibyte to wide character converter -* on_exit:: Request execution of functions at program exit -* qsort:: Array sort -* rand:: Pseudo-random numbers -* random:: Pseudo-random numbers -* rand48:: Uniformly distributed pseudo-random numbers -* rpmatch:: Determine whether response is affirmative or negative -* strtod:: String to double or float -* strtol:: String to long -* strtoll:: String to long long -* strtoul:: String to unsigned long -* strtoull:: String to unsigned long long -* wcsrtombs:: Convert a wide-character string to a character string -* wcstod:: Wide string to double or float -* wcstol:: Wide string to long -* wcstoll:: Wide string to long long -* wcstoul:: Wide string to unsigned long -* wcstoull:: Wide string to unsigned long long -* system:: Execute command string -* utoa:: Unsigned integer to string -* wcstombs:: Minimal wide string to multibyte string converter -* wctomb:: Minimal wide character to multibyte converter +* Function _Exit:: End program execution without cleaning up +* Function a64l:: String to long long +* Function abort:: Abnormal termination of a program +* Function abs:: Integer absolute value (magnitude) +* Function assert:: Macro for Debugging Diagnostics +* Function atexit:: Request execution of functions at program exit +* Function atof:: String to double or float +* Function atoi:: String to integer +* Function atoll:: String to long long +* Function bsearch:: Binary search +* Function calloc:: Allocate space for arrays +* Function div:: Divide two integers +* Function ecvtbuf:: Double or float to string of digits +* Function ecvt:: Double or float to string of digits (malloc result) +* Function __env_lock:: Lock environment list for getenv and setenv +* Function gcvt:: Format double or float as string +* Function exit:: End program execution +* Function getenv:: Look up environment variable +* Function itoa:: Integer to string +* Function labs:: Long integer absolute value (magnitude) +* Function ldiv:: Divide two long integers +* Function llabs:: Long long integer absolute value (magnitude) +* Function lldiv:: Divide two long long integers +* Function malloc:: Allocate and manage memory (malloc, realloc, free) +* Function mallinfo:: Get information about allocated memory +* Function __malloc_lock:: Lock memory pool for malloc and free +* Function mbsrtowcs:: Convert a character string to a wide-character string +* Function mbstowcs:: Minimal multibyte string to wide string converter +* Function mblen:: Minimal multibyte length +* Function mbtowc:: Minimal multibyte to wide character converter +* Function on_exit:: Request execution of functions at program exit +* Function qsort:: Array sort +* Function rand:: Pseudo-random numbers +* Function random:: Pseudo-random numbers +* Function rand48:: Uniformly distributed pseudo-random numbers +* Function rpmatch:: Determine whether response is affirmative or negative +* Function strtod:: String to double or float +* Function strtol:: String to long +* Function strtoll:: String to long long +* Function strtoul:: String to unsigned long +* Function strtoull:: String to unsigned long long +* Function wcsrtombs:: Convert a wide-character string to a character string +* Function wcstod:: Wide string to double or float +* Function wcstol:: Wide string to long +* Function wcstoll:: Wide string to long long +* Function wcstoul:: Wide string to unsigned long +* Function wcstoull:: Wide string to unsigned long long +* Function system:: Execute command string +* Function utoa:: Unsigned integer to string +* Function wcstombs:: Minimal wide string to multibyte string converter +* Function wctomb:: Minimal wide character to multibyte converter @end menu @page diff --git a/newlib/libc/string/strings.tex b/newlib/libc/string/strings.tex index 6aec5fe0ed..a04d46ddb7 100644 --- a/newlib/libc/string/strings.tex +++ b/newlib/libc/string/strings.tex @@ -6,55 +6,55 @@ @file{string.h}. @menu -* bcmp:: Compare two memory areas -* bcopy:: Copy memory regions -* bzero:: Initialize memory to zero -* index:: Search for character in string -* memccpy:: Copy memory regions up to end-token -* memchr:: Find character in memory -* memcmp:: Compare two memory areas -* memcpy:: Copy memory regions -* memmem:: Find memory segment -* memmove:: Move possibly overlapping memory -* mempcpy:: Copy memory regions and locate end -* memrchr:: Reverse search for character in memory -* memset:: Set an area of memory -* rawmemchr:: Find character in memory -* rindex:: Reverse search for character in string -* stpcpy:: Copy string returning a pointer to its end -* stpncpy:: Counted copy string returning a pointer to its end -* strcasecmp:: Compare strings ignoring case -* strcasestr:: Find string segment ignoring case -* strcat:: Concatenate strings -* strchr:: Search for character in string -* strchrnul:: Search for character in string -* strcmp:: Character string compare -* strcoll:: Locale-specific character string compare -* strcpy:: Copy string -* strcspn:: Count chars not in string -* strerror:: Convert error number to string (strerror, strerror_l) -* strerror_r:: Convert error number to string -* strlen:: Character string length -* strlwr:: Convert string to lowercase -* strncasecmp:: Compare strings ignoring case -* strncat:: Concatenate strings -* strncmp:: Character string compare -* strncpy:: Counted copy string -* strnstr:: Find string segment -* strnlen:: Character string length -* strpbrk:: Find chars in string -* strrchr:: Reverse search for character in string -* strsignal:: Return signal message string -* strspn:: Find initial match -* strstr:: Find string segment -* strtok:: Get next token from a string -* strupr:: Convert string to upper case -* strverscmp:: Compare version strings -* strxfrm:: Transform string -* swab:: Swap adjacent bytes -* wcscasecmp:: Compare wide character strings ignoring case -* wcsdup:: Wide character string duplicate -* wcsncasecmp:: Compare wide character strings ignoring case +* Function bcmp:: Compare two memory areas +* Function bcopy:: Copy memory regions +* Function bzero:: Initialize memory to zero +* Function index:: Search for character in string +* Function memccpy:: Copy memory regions up to end-token +* Function memchr:: Find character in memory +* Function memcmp:: Compare two memory areas +* Function memcpy:: Copy memory regions +* Function memmem:: Find memory segment +* Function memmove:: Move possibly overlapping memory +* Function mempcpy:: Copy memory regions and locate end +* Function memrchr:: Reverse search for character in memory +* Function memset:: Set an area of memory +* Function rawmemchr:: Find character in memory +* Function rindex:: Reverse search for character in string +* Function stpcpy:: Copy string returning a pointer to its end +* Function stpncpy:: Counted copy string returning a pointer to its end +* Function strcasecmp:: Compare strings ignoring case +* Function strcasestr:: Find string segment ignoring case +* Function strcat:: Concatenate strings +* Function strchr:: Search for character in string +* Function strchrnul:: Search for character in string +* Function strcmp:: Character string compare +* Function strcoll:: Locale-specific character string compare +* Function strcpy:: Copy string +* Function strcspn:: Count chars not in string +* Function strerror:: Convert error number to string (strerror, strerror_l) +* Function strerror_r:: Convert error number to string +* Function strlen:: Character string length +* Function strlwr:: Convert string to lowercase +* Function strncasecmp:: Compare strings ignoring case +* Function strncat:: Concatenate strings +* Function strncmp:: Character string compare +* Function strncpy:: Counted copy string +* Function strnstr:: Find string segment +* Function strnlen:: Character string length +* Function strpbrk:: Find chars in string +* Function strrchr:: Reverse search for character in string +* Function strsignal:: Return signal message string +* Function strspn:: Find initial match +* Function strstr:: Find string segment +* Function strtok:: Get next token from a string +* Function strupr:: Convert string to upper case +* Function strverscmp:: Compare version strings +* Function strxfrm:: Transform string +* Function swab:: Swap adjacent bytes +* Function wcscasecmp:: Compare wide character strings ignoring case +* Function wcsdup:: Wide character string duplicate +* Function wcsncasecmp:: Compare wide character strings ignoring case @end menu @page diff --git a/newlib/libc/string/wcstrings.tex b/newlib/libc/string/wcstrings.tex index 161b35cb59..cf10088936 100644 --- a/newlib/libc/string/wcstrings.tex +++ b/newlib/libc/string/wcstrings.tex @@ -6,36 +6,36 @@ declarations are in @file{wchar.h}. @menu -* wmemchr:: Find wide character in memory -* wmemcmp:: Compare two wide-character memory areas -* wmemcpy:: Copy wide-character memory regions -* wmemmove:: Move possibly overlapping wide-character memory -* wmempcpy:: Copy wide-character memory regions and locate end -* wmemset:: Set an area of memory to a specified wide character -* wcscat:: Concatenate wide-character strings -* wcschr:: Search for wide character in string -* wcscmp:: Wide-character string compare -* wcscoll:: Locale-specific wide-character string compare -* wcscpy:: Copy wide-character string -* wcpcpy:: Copy a wide-character string returning a pointer to its end -* wcscspn:: Count wide characters not in string -* wcsftime:: Convert date and time to a formatted wide-character string -* wcslcat:: Concatenate wide-character strings to specified length -* wcslcpy:: Copy wide-character string to specified length -* wcslen:: Wide-character string length -* wcsncat:: Concatenate wide-character strings -* wcsncmp:: Wide-character string compare -* wcsncpy:: Counted copy wide-character string -* wcpncpy:: Copy part of a wide-character string returning a pointer to its end -* wcsnlen:: Wide-character string length with maximum limit -* wcspbrk:: Find wide characters in string -* wcsrchr:: Reverse search for wide character in string -* wcsspn:: Find initial match in wide-character string -* wcsstr:: Find wide-character string segment -* wcstok:: Tokenize wide-character string -* wcswidth:: Number of column positions of a wide-character string -* wcsxfrm:: Locale-specific wide-character string transformation -* wcwidth:: Number of column positions of a wide-character code +* Function wmemchr:: Find wide character in memory +* Function wmemcmp:: Compare two wide-character memory areas +* Function wmemcpy:: Copy wide-character memory regions +* Function wmemmove:: Move possibly overlapping wide-character memory +* Function wmempcpy:: Copy wide-character memory regions and locate end +* Function wmemset:: Set an area of memory to a specified wide character +* Function wcscat:: Concatenate wide-character strings +* Function wcschr:: Search for wide character in string +* Function wcscmp:: Wide-character string compare +* Function wcscoll:: Locale-specific wide-character string compare +* Function wcscpy:: Copy wide-character string +* Function wcpcpy:: Copy a wide-character string returning a pointer to its end +* Function wcscspn:: Count wide characters not in string +* Function wcsftime:: Convert date and time to a formatted wide-character string +* Function wcslcat:: Concatenate wide-character strings to specified length +* Function wcslcpy:: Copy wide-character string to specified length +* Function wcslen:: Wide-character string length +* Function wcsncat:: Concatenate wide-character strings +* Function wcsncmp:: Wide-character string compare +* Function wcsncpy:: Counted copy wide-character string +* Function wcpncpy:: Copy part of a wide-character string returning a pointer to its end +* Function wcsnlen:: Wide-character string length with maximum limit +* Function wcspbrk:: Find wide characters in string +* Function wcsrchr:: Reverse search for wide character in string +* Function wcsspn:: Find initial match in wide-character string +* Function wcsstr:: Find wide-character string segment +* Function wcstok:: Tokenize wide-character string +* Function wcswidth:: Number of column positions of a wide-character string +* Function wcsxfrm:: Locale-specific wide-character string transformation +* Function wcwidth:: Number of column positions of a wide-character code @end menu @page diff --git a/newlib/libc/sys.tex b/newlib/libc/sys.tex index a88b09816a..9c3d854527 100644 --- a/newlib/libc/sys.tex +++ b/newlib/libc/sys.tex @@ -307,34 +307,34 @@ (@pxref{Reentrancy,,Reentrancy}). @menu -* _close_r:: Reentrant version of close -* _execve_r:: Reentrant version of execve -* _fork_r:: Reentrant version of fork +* Function _close_r:: Reentrant version of close +* Function _execve_r:: Reentrant version of execve +* Function _fork_r:: Reentrant version of fork @ifset STDIO64 -* _fstat64_r:: Reentrant version of fstat64 +* Function _fstat64_r:: Reentrant version of fstat64 @end ifset -* _fstat_r:: Reentrant version of fstat -* _getpid_r:: Reentrant version of getpid -* _kill_r:: Reentrant version of kill -* _link_r:: Reentrant version of link +* Function _fstat_r:: Reentrant version of fstat +* Function _getpid_r:: Reentrant version of getpid +* Function _kill_r:: Reentrant version of kill +* Function _link_r:: Reentrant version of link @ifset STDIO64 -* _lseek64_r:: Reentrant version of lseek64 +* Function _lseek64_r:: Reentrant version of lseek64 @end ifset -* _lseek_r:: Reentrant version of lseek +* Function _lseek_r:: Reentrant version of lseek @ifset STDIO64 -* _open64_r:: Reentrant version of open64 +* Function _open64_r:: Reentrant version of open64 @end ifset -* _open_r:: Reentrant version of open -* _read_r:: Reentrant version of read -* _sbrk_r:: Reentrant version of sbrk +* Function _open_r:: Reentrant version of open +* Function _read_r:: Reentrant version of read +* Function _sbrk_r:: Reentrant version of sbrk @ifset STDIO64 -* _stat64_r:: Reentrant version of stat64 +* Function _stat64_r:: Reentrant version of stat64 @end ifset -* _stat_r:: Reentrant version of stat -* _times_r:: Reentrant version of times -* _unlink_r:: Reentrant version of unlink -* _wait_r:: Reentrant version of wait -* _write_r:: Reentrant version of write +* Function _stat_r:: Reentrant version of stat +* Function _times_r:: Reentrant version of times +* Function _unlink_r:: Reentrant version of unlink +* Function _wait_r:: Reentrant version of wait +* Function _write_r:: Reentrant version of write @end menu @lowersections diff --git a/newlib/libc/time/time.tex b/newlib/libc/time/time.tex index cecd0f5f5e..a664eefb46 100644 --- a/newlib/libc/time/time.tex +++ b/newlib/libc/time/time.tex @@ -49,17 +49,17 @@ @end table @menu -* asctime:: Format time as string -* clock:: Cumulative processor time -* ctime:: Convert time to local and format as string -* difftime:: Subtract two times -* gmtime:: Convert time to UTC (GMT) traditional representation -* localtime:: Convert time to local representation -* mktime:: Convert time to arithmetic representation -* strftime:: Convert date and time to a user-formatted string -* time:: Get current calendar time (as single number) -* __tz_lock:: Lock time zone global variables -* tzset:: Set timezone info +* Function asctime:: Format time as string +* Function clock:: Cumulative processor time +* Function ctime:: Convert time to local and format as string +* Function difftime:: Subtract two times +* Function gmtime:: Convert time to UTC (GMT) traditional representation +* Function localtime:: Convert time to local representation +* Function mktime:: Convert time to arithmetic representation +* Function strftime:: Convert date and time to a user-formatted string +* Function time:: Get current calendar time (as single number) +* Function __tz_lock:: Lock time zone global variables +* Function tzset:: Set timezone info @end menu @page diff --git a/newlib/libm/complex/complex.tex b/newlib/libm/complex/complex.tex index e91937aa22..4af4d02ddb 100644 --- a/newlib/libm/complex/complex.tex +++ b/newlib/libm/complex/complex.tex @@ -6,29 +6,29 @@ Functions and documentations are taken from NetBSD. @menu -* cabs:: Complex absolute value -* cacos:: Complex arc cosine -* cacosh:: Complex arc hyperbolic cosine -* carg:: Argument (also called phase angle) -* casin:: Complex arc sine -* casinh:: Complex arc hyperbolic sine -* catan:: Complex arc tangent -* catanh:: Complex arc hyperbolic tangent -* ccos:: Complex cosine -* ccosh:: Complex hyperbolic cosine -* cexp:: Complex exponent -* cimag:: Imaginary part -* clog:: Complex natural (base e) logarithm -* clog10:: Complex base 10 logarithm -* conj:: Complex conjugate -* cpow:: Complex power function -* cproj:: Compute a projection on the Riemann sphere -* creal:: Real part -* csin:: Complex sine -* csinh:: Complex hyperbolic sine -* csqrt:: Complex square root -* ctan:: Complex tangent -* ctanh:: Complex hyperbolic tangent +* Function cabs:: Complex absolute value +* Function cacos:: Complex arc cosine +* Function cacosh:: Complex arc hyperbolic cosine +* Function carg:: Argument (also called phase angle) +* Function casin:: Complex arc sine +* Function casinh:: Complex arc hyperbolic sine +* Function catan:: Complex arc tangent +* Function catanh:: Complex arc hyperbolic tangent +* Function ccos:: Complex cosine +* Function ccosh:: Complex hyperbolic cosine +* Function cexp:: Complex exponent +* Function cimag:: Imaginary part +* Function clog:: Complex natural (base e) logarithm +* Function clog10:: Complex base 10 logarithm +* Function conj:: Complex conjugate +* Function cpow:: Complex power function +* Function cproj:: Compute a projection on the Riemann sphere +* Function creal:: Real part +* Function csin:: Complex sine +* Function csinh:: Complex hyperbolic sine +* Function csqrt:: Complex square root +* Function ctan:: Complex tangent +* Function ctanh:: Complex hyperbolic tangent @end menu @page diff --git a/newlib/libm/fenv/fenv.tex b/newlib/libm/fenv/fenv.tex index 3b76003d35..567a6e90b0 100644 --- a/newlib/libm/fenv/fenv.tex +++ b/newlib/libm/fenv/fenv.tex @@ -8,17 +8,17 @@ The implementation of these methods is architecture specific. @menu -* feclearexcept:: Clear floating-point exception -* fegetenv:: Get current floating-point environment -* fegetexceptflag:: Get floating-point status flags -* fegetround:: Get current rounding direction -* feholdexcept:: Save current floating-point environment -* feraiseexcept:: Raise floating-point exception -* fesetenv:: Set current floating-point environment -* fesetexceptflag:: Set floating-point status flags -* fesetround:: Set current rounding direction -* fetestexcept:: Test floating-point exception flags -* feupdateenv:: Update current floating-point environment +* Function feclearexcept:: Clear floating-point exception +* Function fegetenv:: Get current floating-point environment +* Function fegetexceptflag:: Get floating-point status flags +* Function fegetround:: Get current rounding direction +* Function feholdexcept:: Save current floating-point environment +* Function feraiseexcept:: Raise floating-point exception +* Function fesetenv:: Set current floating-point environment +* Function fesetexceptflag:: Set floating-point status flags +* Function fesetround:: Set current rounding direction +* Function fetestexcept:: Test floating-point exception flags +* Function feupdateenv:: Update current floating-point environment @end menu @page diff --git a/newlib/libm/math/math.tex b/newlib/libm/math/math.tex index 92b384f630..5956a124b5 100644 --- a/newlib/libm/math/math.tex +++ b/newlib/libm/math/math.tex @@ -20,62 +20,62 @@ @menu * version:: Version of library -* acos:: Arccosine -* acosh:: Inverse hyperbolic cosine -* asin:: Arcsine -* asinh:: Inverse hyperbolic sine -* atan:: Arctangent -* atan2:: Arctangent of y/x -* atanh:: Inverse hyperbolic tangent -* jN:: Bessel functions (jN, yN) -* cbrt:: Cube root -* copysign:: Sign of Y, magnitude of X -* cosh:: Hyperbolic cosine -* erf:: Error function (erf, erfc) -* exp:: Exponential, base e -* exp10:: Exponential, base 10 -* exp2:: Exponential, base 2 -* expm1:: Exponential, base e, of x - 1 -* fabs:: Absolute value (magnitude) -* fdim:: Positive difference -* floor:: Floor and ceiling (floor, ceil) -* fma:: Floating multiply add -* fmax:: Maximum -* fmin:: Minimum -* fmod:: Floating-point remainder (modulo) -* fpclassify:: Floating-point classification macro -* frexp:: Split floating-point number -* gamma:: Logarithmic gamma function -* hypot:: Distance from origin -* ilogb:: Get exponent -* infinity:: Floating infinity -* isgreater:: Comparison macros -* ldexp:: Scale by a power of 2 -* log:: Natural logarithms -* log10:: Base 10 logarithms -* log1p:: Log of 1 + X -* log2:: Base 2 logarithms -* logb:: Get exponent -* lrint:: Round to integer -* lround:: Round to integer, away from zero (lround, llround) -* modf:: Split fractional and integer parts -* nan:: Floating Not a Number -* nearbyint:: Round to integer -* nextafter:: Get next representable number -* pow:: X to the power Y -* pow10:: 10 to the power X -* remainder:: remainder of X divided by Y -* remquo:: Remainder and part of quotient -* rint:: Round to integer -* round:: Round to integer, away from zero -* scalbn:: Scale by a power of FLT_RADIX (2) -* signbit:: Does floating-point number have negative sign? -* sin:: Sine or cosine (sin, cos) -* sinh:: Hyperbolic sine -* sqrt:: Positive square root -* tan:: Tangent -* tanh:: Hyperbolic tangent -* trunc:: Round to integer, towards zero +* Function acos:: Arccosine +* Function acosh:: Inverse hyperbolic cosine +* Function asin:: Arcsine +* Function asinh:: Inverse hyperbolic sine +* Function atan:: Arctangent +* Function atan2:: Arctangent of y/x +* Function atanh:: Inverse hyperbolic tangent +* Function jN:: Bessel functions (jN, yN) +* Function cbrt:: Cube root +* Function copysign:: Sign of Y, magnitude of X +* Function cosh:: Hyperbolic cosine +* Function erf:: Error function (erf, erfc) +* Function exp:: Exponential, base e +* Function exp10:: Exponential, base 10 +* Function exp2:: Exponential, base 2 +* Function expm1:: Exponential, base e, of x - 1 +* Function fabs:: Absolute value (magnitude) +* Function fdim:: Positive difference +* Function floor:: Floor and ceiling (floor, ceil) +* Function fma:: Floating multiply add +* Function fmax:: Maximum +* Function fmin:: Minimum +* Function fmod:: Floating-point remainder (modulo) +* Function fpclassify:: Floating-point classification macro +* Function frexp:: Split floating-point number +* Function gamma:: Logarithmic gamma function +* Function hypot:: Distance from origin +* Function ilogb:: Get exponent +* Function infinity:: Floating infinity +* Function isgreater:: Comparison macros +* Function ldexp:: Scale by a power of 2 +* Function log:: Natural logarithms +* Function log10:: Base 10 logarithms +* Function log1p:: Log of 1 + X +* Function log2:: Base 2 logarithms +* Function logb:: Get exponent +* Function lrint:: Round to integer +* Function lround:: Round to integer, away from zero (lround, llround) +* Function modf:: Split fractional and integer parts +* Function nan:: Floating Not a Number +* Function nearbyint:: Round to integer +* Function nextafter:: Get next representable number +* Function pow:: X to the power Y +* Function pow10:: 10 to the power X +* Function remainder:: remainder of X divided by Y +* Function remquo:: Remainder and part of quotient +* Function rint:: Round to integer +* Function round:: Round to integer, away from zero +* Function scalbn:: Scale by a power of FLT_RADIX (2) +* Function signbit:: Does floating-point number have negative sign? +* Function sin:: Sine or cosine (sin, cos) +* Function sinh:: Hyperbolic sine +* Function sqrt:: Positive square root +* Function tan:: Tangent +* Function tanh:: Hyperbolic tangent +* Function trunc:: Round to integer, towards zero @end menu @page diff --git a/newlib/libm/mathfp/mathfp.tex b/newlib/libm/mathfp/mathfp.tex index 0b9f085571..8c9e37c94a 100644 --- a/newlib/libm/mathfp/mathfp.tex +++ b/newlib/libm/mathfp/mathfp.tex @@ -37,45 +37,45 @@ @menu * version:: Version of library -* acos:: Arccosine -* acosh:: Inverse hyperbolic cosine -* asin:: Arcsine -* asinh:: Inverse hyperbolic sine -* atan:: Arctangent -* atan2:: Arctangent of y/x -* atanh:: Inverse hyperbolic tangent -* jN:: Bessel functions (jN, yN) -* cbrt:: Cube root -* copysign:: Sign of Y, magnitude of X -* cosh:: Hyperbolic cosine -* erf:: Error function (erf, erfc) -* exp:: Exponential -* expm1:: Exponential of x, - 1 -* fabs:: Absolute value (magnitude) -* floor:: Floor and ceiling (floor, ceil) -* fmod:: Floating-point remainder (modulo) -* frexp:: Split floating-point number -* gamma:: Logarithmic gamma function -* hypot:: Distance from origin -* ilogb:: Get exponent -* infinity:: Floating infinity -* isnan:: Check type of number -* ldexp:: Load exponent -* log:: Natural logarithms -* log10:: Base 10 logarithms -* log1p:: Log of 1 + X -* matherr:: Modifiable math error handler -* modf:: Split fractional and integer parts -* nan:: Floating Not a Number -* nextafter:: Get next representable number -* pow:: X to the power Y -* remainder:: remainder of X divided by Y -* scalbn:: scalbn -* sin:: Sine or cosine (sin, cos) -* sinh:: Hyperbolic sine -* sqrt:: Positive square root -* tan:: Tangent -* tanh:: Hyperbolic tangent +* Function acos:: Arccosine +* Function acosh:: Inverse hyperbolic cosine +* Function asin:: Arcsine +* Function asinh:: Inverse hyperbolic sine +* Function atan:: Arctangent +* Function atan2:: Arctangent of y/x +* Function atanh:: Inverse hyperbolic tangent +* Function jN:: Bessel functions (jN, yN) +* Function cbrt:: Cube root +* Function copysign:: Sign of Y, magnitude of X +* Function cosh:: Hyperbolic cosine +* Function erf:: Error function (erf, erfc) +* Function exp:: Exponential +* Function expm1:: Exponential of x, - 1 +* Function fabs:: Absolute value (magnitude) +* Function floor:: Floor and ceiling (floor, ceil) +* Function fmod:: Floating-point remainder (modulo) +* Function frexp:: Split floating-point number +* Function gamma:: Logarithmic gamma function +* Function hypot:: Distance from origin +* Function ilogb:: Get exponent +* Function infinity:: Floating infinity +* Function isnan:: Check type of number +* Function ldexp:: Load exponent +* Function log:: Natural logarithms +* Function log10:: Base 10 logarithms +* Function log1p:: Log of 1 + X +* Function matherr:: Modifiable math error handler +* Function modf:: Split fractional and integer parts +* Function nan:: Floating Not a Number +* Function nextafter:: Get next representable number +* Function pow:: X to the power Y +* Function remainder:: remainder of X divided by Y +* Function scalbn:: scalbn +* Function sin:: Sine or cosine (sin, cos) +* Function sinh:: Hyperbolic sine +* Function sqrt:: Positive square root +* Function tan:: Tangent +* Function tanh:: Hyperbolic tangent @end menu @page From 02572ff089dcefed1e2e25f420be975f1ee7340c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 22 Jan 2024 19:59:09 +0100 Subject: [PATCH 608/767] Cygwin: seekdir: don't set errno Commit 3f3bd1010455 ("* Throughout, use __try/__except/__endtry blocks [...]") introduced setting EINVAL, marked as "Diagnosis". The reason for this is lost in time and space, but looks very much like a debug helper which was supposed to be removed before release. It's rather pointless, so remove it. Fixes: 3f3bd1010455 ("* Throughout, use __try/__except/__endtry blocks [...]") Signed-off-by: Corinna Vinschen --- winsup/cygwin/dir.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index a181ce58c7..d67ac02d91 100644 --- a/winsup/cygwin/dir.cc +++ b/winsup/cygwin/dir.cc @@ -235,7 +235,6 @@ seekdir (DIR *dir, long loc) dir->__flags &= dirent_info_mask; ((fhandler_base *) dir->__fh)->seekdir (dir, loc); } - set_errno (EINVAL); /* Diagnosis */ } __except (EFAULT) {} __endtry From d5c4edca81c87c784b4420cc194bea07436e0ab7 Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Mon, 22 Jan 2024 18:11:35 +0200 Subject: [PATCH 609/767] libgloss: merge pru into top-level Makefile Avoid a recursive make to speed things up a bit. This change was inspired by the recent similar patch for c6x: https://sourceware.org/pipermail/newlib/2023/020869.html While at it, fork crt0-minrt.S into a separate source file instead of relying on a predefined macro to generate two different object files. This improves clarity, simplifies the build rules, and would allow further optimization in crt0-minrt.S to be implemented more cleanly. Signed-off-by: Dimitar Dimitrov --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 389 ++++++++++++++++++++++++-------------- libgloss/configure | 33 +++- libgloss/configure.ac | 7 +- libgloss/pru/Makefile.in | 145 -------------- libgloss/pru/Makefile.inc | 48 +++++ libgloss/pru/crt0-minrt.S | 59 ++++++ libgloss/pru/crt0.S | 6 - 8 files changed, 388 insertions(+), 302 deletions(-) delete mode 100644 libgloss/pru/Makefile.in create mode 100644 libgloss/pru/Makefile.inc create mode 100644 libgloss/pru/crt0-minrt.S diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 333ff846ae..084d433d3d 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -155,6 +155,9 @@ endif if CONFIG_OR1K include or1k/Makefile.inc endif +if CONFIG_PRU +include pru/Makefile.inc +endif if CONFIG_RISCV include riscv/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index 9b845538a7..bfaae80186 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -325,40 +325,49 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_OR1K_TRUE@ or1k/libboard-ordb1a3pe1500.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ordb2a.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-orpsocrefdesign.a -@CONFIG_RISCV_TRUE@am__append_91 = \ +@CONFIG_PRU_TRUE@am__append_91 = \ +@CONFIG_PRU_TRUE@ pru/crt0.o \ +@CONFIG_PRU_TRUE@ pru/crt0-minrt.o + +@CONFIG_PRU_TRUE@am__append_92 = \ +@CONFIG_PRU_TRUE@ pru/crt0.S \ +@CONFIG_PRU_TRUE@ pru/crt0-minrt.S + +@CONFIG_PRU_TRUE@am__append_93 = pru/libgloss.a +@CONFIG_RISCV_TRUE@am__append_94 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_92 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_95 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_93 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_96 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_94 = \ +@CONFIG_RL78_TRUE@am__append_97 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_95 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_96 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_98 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_99 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_97 = \ +@CONFIG_RX_TRUE@am__append_100 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_98 = rx/libsim.a -@CONFIG_SPARC_TRUE@am__append_99 = sparc/crt0.o sparc/erc32-crt0.o -@CONFIG_SPARC_TRUE@am__append_100 = sparc/crt0.S sparc/erc32-crt0.S -@CONFIG_SPARC_TRUE@am__append_101 = sparc/liberc32.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_102 = \ +@CONFIG_RX_TRUE@am__append_101 = rx/libsim.a +@CONFIG_SPARC_TRUE@am__append_102 = sparc/crt0.o sparc/erc32-crt0.o +@CONFIG_SPARC_TRUE@am__append_103 = sparc/crt0.S sparc/erc32-crt0.S +@CONFIG_SPARC_TRUE@am__append_104 = sparc/liberc32.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_105 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-crt0.o \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-salib.o -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_103 = sparc/cygmon-crt0.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_104 = sparc/libcygmon.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_105 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_106 = sparc/cygmon-crt0.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_107 = sparc/libcygmon.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_108 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex930.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex931.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex934.ld \ @@ -366,64 +375,64 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/elfsim.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/traps.o -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_106 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_109 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite930.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite931.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite934.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite86x.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_107 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_110 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/tsc701.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/crt0-701.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_108 = sparc/crt0-701.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_109 = sparc/libsplet701.a -@CONFIG_SPARC_TRUE@am__append_110 = sparc/erc32-test sparc/ex930-test \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_111 = sparc/crt0-701.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_112 = sparc/libsplet701.a +@CONFIG_SPARC_TRUE@am__append_113 = sparc/erc32-test sparc/ex930-test \ @CONFIG_SPARC_TRUE@ sparc/ex931-test sparc/ex934-test -@CONFIG_SPARC_LEON_TRUE@am__append_111 = sparc_leon/libleonbare.a \ +@CONFIG_SPARC_LEON_TRUE@am__append_114 = sparc_leon/libleonbare.a \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/liblbthread.a \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/libsmall.a -@CONFIG_SPARC_LEON_TRUE@am__append_112 = \ +@CONFIG_SPARC_LEON_TRUE@am__append_115 = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.o -@CONFIG_SPARC_LEON_TRUE@am__append_113 = \ +@CONFIG_SPARC_LEON_TRUE@am__append_116 = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.c \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.c \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.S -@CONFIG_TIC6X_TRUE@am__append_114 = tic6x/crt0.o -@CONFIG_TIC6X_TRUE@am__append_115 = tic6x/crt0.S -@CONFIG_TIC6X_TRUE@am__append_116 = tic6x/libsim.a -@CONFIG_V850_TRUE@am__append_117 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_118 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_119 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_120 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_121 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_122 = visium/libserial.a \ +@CONFIG_TIC6X_TRUE@am__append_117 = tic6x/crt0.o +@CONFIG_TIC6X_TRUE@am__append_118 = tic6x/crt0.S +@CONFIG_TIC6X_TRUE@am__append_119 = tic6x/libsim.a +@CONFIG_V850_TRUE@am__append_120 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_121 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_122 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_123 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_124 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_125 = visium/libserial.a \ @CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_123 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_124 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_125 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_126 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_127 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_128 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_126 = \ +@CONFIG_XSTORMY16_TRUE@am__append_129 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_127 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_130 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_128 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_129 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_130 = \ +@CONFIG_XSTORMY16_TRUE@am__append_131 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_132 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_133 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -432,29 +441,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_131 = \ +@CONFIG_XTENSA_TRUE@am__append_134 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_132 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_133 = \ +@CONFIG_XTENSA_TRUE@am__append_135 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_134 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_135 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_138 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_144 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_138 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_144 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_145 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_146 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_147 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -482,7 +491,7 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ crx/Makefile mep/Makefile mt/Makefile m32c/Makefile \ - spu/Makefile pru/Makefile sparc/libsys/Makefile + spu/Makefile sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -518,7 +527,8 @@ am__installdirs = "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(includemachinetooldir)" \ "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" \ "$(DESTDIR)$(includetoolasmleondir)" \ - "$(DESTDIR)$(multilibtooldir)" + "$(DESTDIR)$(multilibtooldir)" \ + "$(DESTDIR)$(pru_devicespecsdir)" LIBRARIES = $(multilibtool_LIBRARIES) $(noinst_LIBRARIES) ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) @@ -785,26 +795,28 @@ libobjs_a_LIBADD = @CONFIG_NDS32_TRUE@am__objects_20 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) @CONFIG_OR1K_TRUE@am__objects_21 = or1k/crt0.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_22 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_PRU_TRUE@am__objects_22 = pru/crt0.$(OBJEXT) \ +@CONFIG_PRU_TRUE@ pru/crt0-minrt.$(OBJEXT) +@CONFIG_RL78_TRUE@am__objects_23 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_23 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_24 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_SPARC_TRUE@am__objects_24 = sparc/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_25 = sparc/crt0.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-crt0.$(OBJEXT) -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_25 = sparc/cygmon-crt0.$(OBJEXT) -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_26 = sparc/crt0-701.$(OBJEXT) -@CONFIG_SPARC_LEON_TRUE@am__objects_27 = sparc_leon/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_26 = sparc/cygmon-crt0.$(OBJEXT) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_27 = sparc/crt0-701.$(OBJEXT) +@CONFIG_SPARC_LEON_TRUE@am__objects_28 = sparc_leon/crt0.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.$(OBJEXT) -@CONFIG_TIC6X_TRUE@am__objects_28 = tic6x/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_29 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_30 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_31 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@am__objects_29 = tic6x/crt0.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_30 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_31 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_32 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_32 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_33 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -817,7 +829,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ $(am__objects_26) $(am__objects_27) $(am__objects_28) \ $(am__objects_29) $(am__objects_30) $(am__objects_31) \ - $(am__objects_32) + $(am__objects_32) $(am__objects_33) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -826,7 +838,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_33 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_34 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -836,16 +848,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_33) +@CONFIG_M32R_TRUE@ $(am__objects_34) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_33) +@CONFIG_M32R_TRUE@ $(am__objects_34) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_34 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_35 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -857,12 +869,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_34) +@CONFIG_MCORE_TRUE@ $(am__objects_35) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_34) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_35) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) microblaze_libgloss_linux_a_AR = $(AR) $(ARFLAGS) microblaze_libgloss_linux_a_LIBADD = @@ -919,7 +931,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_35 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_36 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -938,12 +950,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_35) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_36) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_35) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_36) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1127,6 +1139,16 @@ or1k_libor1k_a_LIBADD = @CONFIG_OR1K_TRUE@ or1k/sbrk.$(OBJEXT) or1k/impure.$(OBJEXT) \ @CONFIG_OR1K_TRUE@ or1k/util.$(OBJEXT) or1k/sync-asm.$(OBJEXT) or1k_libor1k_a_OBJECTS = $(am_or1k_libor1k_a_OBJECTS) +pru_libgloss_a_AR = $(AR) $(ARFLAGS) +pru_libgloss_a_LIBADD = +@CONFIG_PRU_TRUE@am_pru_libgloss_a_OBJECTS = \ +@CONFIG_PRU_TRUE@ pru/do_global_dtors.$(OBJEXT) \ +@CONFIG_PRU_TRUE@ pru/gettimeofday.$(OBJEXT) \ +@CONFIG_PRU_TRUE@ pru/isatty.$(OBJEXT) pru/putnum.$(OBJEXT) \ +@CONFIG_PRU_TRUE@ pru/raise.$(OBJEXT) pru/inbyte.$(OBJEXT) \ +@CONFIG_PRU_TRUE@ pru/outbyte.$(OBJEXT) pru/sbrk.$(OBJEXT) \ +@CONFIG_PRU_TRUE@ pru/stat.$(OBJEXT) pru/syscalls.$(OBJEXT) +pru_libgloss_a_OBJECTS = $(am_pru_libgloss_a_OBJECTS) riscv_libgloss_a_AR = $(AR) $(ARFLAGS) riscv_libgloss_a_LIBADD = @CONFIG_RISCV_TRUE@am_riscv_libgloss_a_OBJECTS = riscv/riscv_libgloss_a-sys_access.$(OBJEXT) \ @@ -1193,7 +1215,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_36 = \ +@CONFIG_RISCV_TRUE@am__objects_37 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1226,7 +1248,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_36) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_37) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1268,14 +1290,14 @@ sparc_libcygmon_a_LIBADD = sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS) sparc_liberc32_a_AR = $(AR) $(ARFLAGS) sparc_liberc32_a_LIBADD = -@CONFIG_SPARC_TRUE@am__objects_37 = close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_38 = close.$(OBJEXT) fstat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) -@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_37) \ +@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_38) \ @CONFIG_SPARC_TRUE@ sparc/erc32-io.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/traps.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \ @@ -1283,18 +1305,18 @@ sparc_liberc32_a_LIBADD = sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS) sparc_libslite86x_a_AR = $(AR) $(ARFLAGS) sparc_libslite86x_a_LIBADD = -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_38 = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_39 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS) sparc_libslite930_a_AR = $(AR) $(ARFLAGS) sparc_libslite930_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_37) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @@ -1302,12 +1324,12 @@ sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS) sparc_libslite931_a_AR = $(AR) $(ARFLAGS) sparc_libslite931_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS) sparc_libslite934_a_AR = $(AR) $(ARFLAGS) sparc_libslite934_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS) sparc_libsplet701_a_AR = $(AR) $(ARFLAGS) sparc_libsplet701_a_LIBADD = @@ -1424,11 +1446,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_39 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_40 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_39) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_40) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1448,7 +1470,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_39) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_40) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1474,13 +1496,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_40 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_41 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_41 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_42 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_40) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_41) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_41) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_42) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1613,13 +1635,13 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(or1k_libboard_ordb1a3pe1500_a_SOURCES) \ $(or1k_libboard_ordb2a_a_SOURCES) \ $(or1k_libboard_orpsocrefdesign_a_SOURCES) \ - $(or1k_libor1k_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ - $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ - $(rl78_libsim_a_SOURCES) $(rx_libsim_a_SOURCES) \ - $(sparc_libcygmon_a_SOURCES) $(sparc_liberc32_a_SOURCES) \ - $(sparc_libslite86x_a_SOURCES) $(sparc_libslite930_a_SOURCES) \ - $(sparc_libslite931_a_SOURCES) $(sparc_libslite934_a_SOURCES) \ - $(sparc_libsplet701_a_SOURCES) \ + $(or1k_libor1k_a_SOURCES) $(pru_libgloss_a_SOURCES) \ + $(riscv_libgloss_a_SOURCES) $(riscv_libsemihost_a_SOURCES) \ + $(riscv_libsim_a_SOURCES) $(rl78_libsim_a_SOURCES) \ + $(rx_libsim_a_SOURCES) $(sparc_libcygmon_a_SOURCES) \ + $(sparc_liberc32_a_SOURCES) $(sparc_libslite86x_a_SOURCES) \ + $(sparc_libslite930_a_SOURCES) $(sparc_libslite931_a_SOURCES) \ + $(sparc_libslite934_a_SOURCES) $(sparc_libsplet701_a_SOURCES) \ $(sparc_leon_liblbthread_a_SOURCES) \ $(sparc_leon_libleonbare_a_SOURCES) \ $(sparc_leon_libsmall_a_SOURCES) $(tic6x_libsim_a_SOURCES) \ @@ -1689,7 +1711,7 @@ am__can_run_installinfo = \ DATA = $(aarch64_cpu_initcpuinit_DATA) $(arm_cpu_initcpuinit_DATA) \ $(includemachinetool_DATA) $(includesystool_DATA) \ $(includetool_DATA) $(includetoolasmleon_DATA) \ - $(multilibtool_DATA) + $(multilibtool_DATA) $(pru_devicespecs_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ @@ -1720,7 +1742,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_123) +VPATH = @srcdir@ $(am__append_126) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1830,6 +1852,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1846,7 +1869,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_129) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_132) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1864,11 +1887,12 @@ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_69) $(am__append_70) $(am__append_75) \ $(am__append_76) $(am__append_79) $(am__append_82) \ $(am__append_85) $(am__append_87) $(am__append_91) \ - $(am__append_93) $(am__append_96) $(am__append_99) \ - $(am__append_102) $(am__append_105) $(am__append_107) \ - $(am__append_112) $(am__append_114) $(am__append_117) \ - $(am__append_120) $(am__append_125) $(am__append_130) \ - $(am__append_133) $(am__append_135) $(am__append_140) + $(am__append_94) $(am__append_96) $(am__append_99) \ + $(am__append_102) $(am__append_105) $(am__append_108) \ + $(am__append_110) $(am__append_115) $(am__append_117) \ + $(am__append_120) $(am__append_123) $(am__append_128) \ + $(am__append_133) $(am__append_136) $(am__append_138) \ + $(am__append_143) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ $(am__append_21) $(am__append_25) $(am__append_28) \ @@ -1878,11 +1902,11 @@ multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_63) $(am__append_66) $(am__append_72) \ $(am__append_73) $(am__append_78) $(am__append_81) \ $(am__append_84) $(am__append_86) $(am__append_90) \ - $(am__append_92) $(am__append_95) $(am__append_98) \ - $(am__append_101) $(am__append_104) $(am__append_106) \ - $(am__append_109) $(am__append_111) $(am__append_116) \ - $(am__append_119) $(am__append_122) $(am__append_127) \ - $(am__append_132) $(am__append_134) + $(am__append_93) $(am__append_95) $(am__append_98) \ + $(am__append_101) $(am__append_104) $(am__append_107) \ + $(am__append_109) $(am__append_112) $(am__append_114) \ + $(am__append_119) $(am__append_122) $(am__append_125) \ + $(am__append_130) $(am__append_135) $(am__append_137) includetooldir = $(tooldir)/include includetool_DATA = $(am__append_16) $(am__append_89) includesystooldir = $(tooldir)/include/sys @@ -1904,10 +1928,11 @@ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ $(am__append_50) $(am__append_53) $(am__append_58) \ $(am__append_62) $(am__append_65) $(am__append_71) \ $(am__append_77) $(am__append_80) $(am__append_83) \ - $(am__append_88) $(am__append_94) $(am__append_97) \ - $(am__append_100) $(am__append_103) $(am__append_108) \ - $(am__append_113) $(am__append_115) $(am__append_118) \ - $(am__append_121) $(am__append_126) $(am__append_131) + $(am__append_88) $(am__append_92) $(am__append_97) \ + $(am__append_100) $(am__append_103) $(am__append_106) \ + $(am__append_111) $(am__append_116) $(am__append_118) \ + $(am__append_121) $(am__append_124) $(am__append_129) \ + $(am__append_134) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2447,6 +2472,20 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_OR1K_TRUE@or1k_libboard_ordb1a3pe1500_a_SOURCES = or1k/boards/ordb1a3pe1500.S @CONFIG_OR1K_TRUE@or1k_libboard_ordb2a_a_SOURCES = or1k/boards/ordb2a.S @CONFIG_OR1K_TRUE@or1k_libboard_orpsocrefdesign_a_SOURCES = or1k/boards/orpsocrefdesign.S +@CONFIG_PRU_TRUE@pru_libgloss_a_SOURCES = \ +@CONFIG_PRU_TRUE@ pru/do_global_dtors.c \ +@CONFIG_PRU_TRUE@ pru/gettimeofday.c \ +@CONFIG_PRU_TRUE@ pru/isatty.c \ +@CONFIG_PRU_TRUE@ pru/putnum.c \ +@CONFIG_PRU_TRUE@ pru/raise.c \ +@CONFIG_PRU_TRUE@ pru/inbyte.c \ +@CONFIG_PRU_TRUE@ pru/outbyte.c \ +@CONFIG_PRU_TRUE@ pru/sbrk.c \ +@CONFIG_PRU_TRUE@ pru/stat.c \ +@CONFIG_PRU_TRUE@ pru/syscalls.S + +@CONFIG_PRU_TRUE@pru_devicespecsdir = $(multilibtooldir)/device-specs +@CONFIG_PRU_TRUE@pru_devicespecs_DATA = pru/device-specs/sim @CONFIG_RISCV_TRUE@riscv_libgloss_a_CPPFLAGS = -I$(srcdir)/riscv @CONFIG_RISCV_TRUE@riscv_libgloss_a_SOURCES = \ @CONFIG_RISCV_TRUE@ riscv/sys_access.c \ @@ -2817,15 +2856,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_136) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_141) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_139) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_144) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_137) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_142) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_140) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_145) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_138) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_143) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_141) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_146) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2833,8 +2872,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_139) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_144) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_142) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_147) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2845,7 +2884,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/pru/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2867,7 +2906,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/pru/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2916,8 +2955,6 @@ m32c/Makefile: $(top_builddir)/config.status $(top_srcdir)/m32c/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ spu/Makefile: $(top_builddir)/config.status $(top_srcdir)/spu/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -pru/Makefile: $(top_builddir)/config.status $(top_srcdir)/pru/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ sparc/libsys/Makefile: $(top_builddir)/config.status $(top_srcdir)/sparc/libsys/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-multilibtoolLIBRARIES: $(multilibtool_LIBRARIES) @@ -3579,6 +3616,15 @@ or1k/$(DEPDIR)/$(am__dirstamp): @: > or1k/$(DEPDIR)/$(am__dirstamp) or1k/crt0.$(OBJEXT): or1k/$(am__dirstamp) \ or1k/$(DEPDIR)/$(am__dirstamp) +pru/$(am__dirstamp): + @$(MKDIR_P) pru + @: > pru/$(am__dirstamp) +pru/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) pru/$(DEPDIR) + @: > pru/$(DEPDIR)/$(am__dirstamp) +pru/crt0.$(OBJEXT): pru/$(am__dirstamp) pru/$(DEPDIR)/$(am__dirstamp) +pru/crt0-minrt.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) rl78/$(am__dirstamp): @$(MKDIR_P) rl78 @: > rl78/$(am__dirstamp) @@ -4219,6 +4265,28 @@ or1k/libor1k.a: $(or1k_libor1k_a_OBJECTS) $(or1k_libor1k_a_DEPENDENCIES) $(EXTRA $(AM_V_at)-rm -f or1k/libor1k.a $(AM_V_AR)$(or1k_libor1k_a_AR) or1k/libor1k.a $(or1k_libor1k_a_OBJECTS) $(or1k_libor1k_a_LIBADD) $(AM_V_at)$(RANLIB) or1k/libor1k.a +pru/do_global_dtors.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) +pru/gettimeofday.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) +pru/isatty.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) +pru/putnum.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) +pru/raise.$(OBJEXT): pru/$(am__dirstamp) pru/$(DEPDIR)/$(am__dirstamp) +pru/inbyte.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) +pru/outbyte.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) +pru/sbrk.$(OBJEXT): pru/$(am__dirstamp) pru/$(DEPDIR)/$(am__dirstamp) +pru/stat.$(OBJEXT): pru/$(am__dirstamp) pru/$(DEPDIR)/$(am__dirstamp) +pru/syscalls.$(OBJEXT): pru/$(am__dirstamp) \ + pru/$(DEPDIR)/$(am__dirstamp) + +pru/libgloss.a: $(pru_libgloss_a_OBJECTS) $(pru_libgloss_a_DEPENDENCIES) $(EXTRA_pru_libgloss_a_DEPENDENCIES) pru/$(am__dirstamp) + $(AM_V_at)-rm -f pru/libgloss.a + $(AM_V_AR)$(pru_libgloss_a_AR) pru/libgloss.a $(pru_libgloss_a_OBJECTS) $(pru_libgloss_a_LIBADD) + $(AM_V_at)$(RANLIB) pru/libgloss.a riscv/$(am__dirstamp): @$(MKDIR_P) riscv @: > riscv/$(am__dirstamp) @@ -5057,6 +5125,7 @@ mostlyclean-compile: -rm -f nios2/*.$(OBJEXT) -rm -f or1k/*.$(OBJEXT) -rm -f or1k/boards/*.$(OBJEXT) + -rm -f pru/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT) -rm -f rl78/*.$(OBJEXT) -rm -f rx/*.$(OBJEXT) @@ -5486,6 +5555,18 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/ordb1a3pe1500.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/ordb2a.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@or1k/boards/$(DEPDIR)/orpsocrefdesign.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/crt0-minrt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/crt0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/do_global_dtors.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/gettimeofday.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/inbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/outbyte.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/raise.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@pru/$(DEPDIR)/syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_access.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_chdir.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/riscv_libgloss_a-sys_chmod.Po@am__quote@ @@ -8415,6 +8496,27 @@ uninstall-multilibtoolDATA: @list='$(multilibtool_DATA)'; test -n "$(multilibtooldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(multilibtooldir)'; $(am__uninstall_files_from_dir) +install-pru_devicespecsDATA: $(pru_devicespecs_DATA) + @$(NORMAL_INSTALL) + @list='$(pru_devicespecs_DATA)'; test -n "$(pru_devicespecsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pru_devicespecsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pru_devicespecsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pru_devicespecsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pru_devicespecsdir)" || exit $$?; \ + done + +uninstall-pru_devicespecsDATA: + @$(NORMAL_UNINSTALL) + @list='$(pru_devicespecs_DATA)'; test -n "$(pru_devicespecsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pru_devicespecsdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. @@ -8528,7 +8630,7 @@ all-am: Makefile $(INFO_DEPS) $(LIBRARIES) $(PROGRAMS) $(DATA) \ config.h all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(includetoolasmleondir)" "$(DESTDIR)$(multilibtooldir)"; do \ + for dir in "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(aarch64_cpu_initcpuinitdir)" "$(DESTDIR)$(arm_cpu_initcpuinitdir)" "$(DESTDIR)$(includemachinetooldir)" "$(DESTDIR)$(includesystooldir)" "$(DESTDIR)$(includetooldir)" "$(DESTDIR)$(includetoolasmleondir)" "$(DESTDIR)$(multilibtooldir)" "$(DESTDIR)$(pru_devicespecsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -8611,6 +8713,8 @@ distclean-generic: -rm -f or1k/$(am__dirstamp) -rm -f or1k/boards/$(DEPDIR)/$(am__dirstamp) -rm -f or1k/boards/$(am__dirstamp) + -rm -f pru/$(DEPDIR)/$(am__dirstamp) + -rm -f pru/$(am__dirstamp) -rm -f riscv/$(DEPDIR)/$(am__dirstamp) -rm -f riscv/$(am__dirstamp) -rm -f rl78/$(DEPDIR)/$(am__dirstamp) @@ -8650,7 +8754,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -8672,7 +8776,7 @@ install-data-am: install-aarch64_cpu_initcpuinitDATA \ install-includesystoolDATA install-includetoolDATA \ install-includetoolasmleonDATA install-info-am \ install-multilibtoolDATA install-multilibtoolLIBRARIES \ - install-multilibtoolPROGRAMS + install-multilibtoolPROGRAMS install-pru_devicespecsDATA install-dvi: install-dvi-recursive @@ -8794,7 +8898,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local @@ -8819,7 +8923,7 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ uninstall-includetoolDATA uninstall-includetoolasmleonDATA \ uninstall-info-am uninstall-multilibtoolDATA \ uninstall-multilibtoolLIBRARIES uninstall-multilibtoolPROGRAMS \ - uninstall-pdf-am uninstall-ps-am + uninstall-pdf-am uninstall-pru_devicespecsDATA uninstall-ps-am .MAKE: $(am__recursive_targets) all check-am install-am install-strip @@ -8841,12 +8945,13 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ install-includetoolasmleonDATA install-info install-info-am \ install-man install-multilibtoolDATA \ install-multilibtoolLIBRARIES install-multilibtoolPROGRAMS \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-aminfo \ - maintainer-clean-generic maintainer-clean-local mostlyclean \ - mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ - mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \ + install-pdf install-pdf-am install-pru_devicespecsDATA \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-aminfo \ + mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ + pdf-am ps ps-am tags tags-am uninstall \ uninstall-aarch64_cpu_initcpuinitDATA uninstall-am \ uninstall-arm_cpu_initcpuinitDATA uninstall-binPROGRAMS \ uninstall-dvi-am uninstall-html-am \ @@ -8854,7 +8959,7 @@ uninstall-am: uninstall-aarch64_cpu_initcpuinitDATA \ uninstall-includetoolDATA uninstall-includetoolasmleonDATA \ uninstall-info-am uninstall-multilibtoolDATA \ uninstall-multilibtoolLIBRARIES uninstall-multilibtoolPROGRAMS \ - uninstall-pdf-am uninstall-ps-am + uninstall-pdf-am uninstall-pru_devicespecsDATA uninstall-ps-am .PRECIOUS: Makefile diff --git a/libgloss/configure b/libgloss/configure index fd5d9416ba..722106ae3a 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -672,6 +672,8 @@ CONFIG_RL78_FALSE CONFIG_RL78_TRUE CONFIG_RISCV_FALSE CONFIG_RISCV_TRUE +CONFIG_PRU_FALSE +CONFIG_PRU_TRUE CONFIG_OR1K_FALSE CONFIG_OR1K_TRUE CONFIG_NIOS2_FALSE @@ -790,6 +792,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -868,6 +871,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1120,6 +1124,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1257,7 +1270,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1410,6 +1423,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2989,9 +3003,7 @@ case "${target}" in config_or1k=true ;; pru-*-*) - ac_config_files="$ac_config_files pru/Makefile" - - subdirs="$subdirs pru" + config_pru=true ;; nios2-*-*) config_nios2=true @@ -3199,6 +3211,14 @@ else CONFIG_OR1K_FALSE= fi + if test x$config_pru = xtrue; then + CONFIG_PRU_TRUE= + CONFIG_PRU_FALSE='#' +else + CONFIG_PRU_TRUE='#' + CONFIG_PRU_FALSE= +fi + if test x$config_riscv = xtrue; then CONFIG_RISCV_TRUE= CONFIG_RISCV_FALSE='#' @@ -5879,6 +5899,10 @@ if test -z "${CONFIG_OR1K_TRUE}" && test -z "${CONFIG_OR1K_FALSE}"; then as_fn_error $? "conditional \"CONFIG_OR1K\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_PRU_TRUE}" && test -z "${CONFIG_PRU_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_PRU\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_RISCV_TRUE}" && test -z "${CONFIG_RISCV_FALSE}"; then as_fn_error $? "conditional \"CONFIG_RISCV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6595,7 +6619,6 @@ do "mt/Makefile") CONFIG_FILES="$CONFIG_FILES mt/Makefile" ;; "m32c/Makefile") CONFIG_FILES="$CONFIG_FILES m32c/Makefile" ;; "spu/Makefile") CONFIG_FILES="$CONFIG_FILES spu/Makefile" ;; - "pru/Makefile") CONFIG_FILES="$CONFIG_FILES pru/Makefile" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "sparc/libsys/Makefile") CONFIG_FILES="$CONFIG_FILES sparc/libsys/Makefile" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 55f4261d1a..79457cc794 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -207,8 +207,7 @@ case "${target}" in config_or1k=true ;; pru-*-*) - AC_CONFIG_FILES([pru/Makefile]) - subdirs="$subdirs pru" + config_pru=true ;; nios2-*-*) config_nios2=true @@ -222,8 +221,8 @@ m4_foreach_w([SUBDIR], [ aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 m32r mcore microblaze mn10200 mn10300 moxie msp430 - nds32 nios2 or1k riscv rl78 rx sparc sparc_leon tic6x v850 visium wince - xstormy16 xtensa + nds32 nios2 or1k pru riscv rl78 rx sparc sparc_leon tic6x v850 visium + wince xstormy16 xtensa ], [dnl AM_CONDITIONAL([CONFIG_]m4_toupper(SUBDIR), [test x$config_]SUBDIR = xtrue) ]) diff --git a/libgloss/pru/Makefile.in b/libgloss/pru/Makefile.in deleted file mode 100644 index fc5905a5ea..0000000000 --- a/libgloss/pru/Makefile.in +++ /dev/null @@ -1,145 +0,0 @@ -# SPDX-License-Identifier: BSD-2-Clause-FreeBSD -# -# Copyright 2018-2019 Dimitar Dimitrov -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -VPATH = @srcdir@ @srcdir@/.. - -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -tooldir = $(exec_prefix)/$(target_alias) - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ - -AR = @AR@ - -LD = @LD@ - -RANLIB = @RANLIB@ - -OBJDUMP = `t='$(program_transform_name)'; echo objdump | sed -e $$t` -OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t` - -# object files needed -OBJS = \ - do_global_dtors.o gettimeofday.o \ - isatty.o putnum.o raise.o \ - inbyte.o outbyte.o sbrk.o stat.o syscalls.o \ - do_global_dtors.o - -# Object files specific to particular targets. -EVALOBJS = ${OBJS} - -CRTOBJS = crt0.o crt0-minrt.o -OUTPUTS = libgloss.a $(CRTOBJS) - -INCLUDES = -I$(srcdir)/.. - -# Note that when building the library, ${MULTILIB} is not the way multilib -# options are passed; they're passed in $(CFLAGS). -CFLAGS_FOR_TARGET = ${MULTILIB} ${INCLUDES} -LDFLAGS_FOR_TARGET = ${MULTILIB} - -.c.o: - $(CC) $(CFLAGS_FOR_TARGET) -Os $(INCLUDES) -c $(CFLAGS) $< - -.C.o: - $(CC) $(CFLAGS_FOR_TARGET) -Os $(INCLUDES) -c $(CFLAGS) $< -.s.o: - $(AS) $(ASFLAGS_FOR_TARGET) $(ASFLAGS) -o $*.o $< - -# -# GCC knows to run the preprocessor on .S files before it assembles them. -# -.S.o: - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $< - -all: ${OUTPUTS} - -# -# here's where we build the library for each target -# - -libgloss.a: $(EVALOBJS) - ${AR} ${ARFLAGS} $@ $(EVALOBJS) - ${RANLIB} $@ - -# C Runtime Library startup code. -crt0.o: $(srcdir)/crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) $< -c -o $@ - -crt0-minrt.o: $(srcdir)/crt0.S - $(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -DMINRT $< -c -o $@ - -doc: - -clean mostlyclean: - rm -f $(OUTPUTS) *.i *~ *.o *-test *.srec *.dis *.map *.x - -distclean maintainer-clean realclean: clean - rm -f Makefile $(OUTPUTS) - -.PHONY: install info install-info clean-info -install: $(OUTPUTS) - for outputs in ${OUTPUTS}; do\ - ${INSTALL_DATA} $${outputs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}/$${outputs}; \ - done - for s in $(SCRIPTS); do \ - b=`basename $$s`; \ - ${INSTALL_DATA} $$s ${DESTDIR}${tooldir}/lib${MULTISUBDIR}/$$b ;\ - done - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR}/device-specs; \ - for s in ${srcdir}/device-specs/*; do \ - b=`basename $$s`; \ - $(INSTALL_DATA) $$s $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}/device-specs/$$b ;\ - done - -info: -install-info: -clean-info: - -Makefile: $(srcdir)/Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/pru/Makefile.inc b/libgloss/pru/Makefile.inc new file mode 100644 index 0000000000..f8408b28fd --- /dev/null +++ b/libgloss/pru/Makefile.inc @@ -0,0 +1,48 @@ +## SPDX-License-Identifier: BSD-2-Clause-FreeBSD +## +## Copyright 2018-2024 Dimitar Dimitrov +## All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions +## are met: +## 1. Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## 2. Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## +## THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +## IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +## OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +## INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +## THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +multilibtool_DATA += \ + %D%/crt0.o \ + %D%/crt0-minrt.o + +libobjs_a_SOURCES += \ + %D%/crt0.S \ + %D%/crt0-minrt.S + +multilibtool_LIBRARIES += %D%/libgloss.a +%C%_libgloss_a_SOURCES = \ + %D%/do_global_dtors.c \ + %D%/gettimeofday.c \ + %D%/isatty.c \ + %D%/putnum.c \ + %D%/raise.c \ + %D%/inbyte.c \ + %D%/outbyte.c \ + %D%/sbrk.c \ + %D%/stat.c \ + %D%/syscalls.S + +pru_devicespecsdir = $(multilibtooldir)/device-specs +pru_devicespecs_DATA = %D%/device-specs/sim diff --git a/libgloss/pru/crt0-minrt.S b/libgloss/pru/crt0-minrt.S new file mode 100644 index 0000000000..60647d372e --- /dev/null +++ b/libgloss/pru/crt0-minrt.S @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * crt0-minrt.S -- Minimal PRU startup code + * + * Copyright (c) 2024 Dimitar Dimitrov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "newlib.h" + + .extern main + + .text + .section .init0, "x" + .global _start +_start: + /* Initialize stack pointer. */ + ldi32 sp, _stack_top + + /* DATA and BSS are handled by the loader, so nothing to do here. */ + + /* Just in case main() tries to access argc, argv[] and envp. */ + zero r14, 3 * 4 + + /* Call main. */ + call main + + /* We should never reach here. */ +_crt_exit: + halt + jmp _crt_exit + + /* PRU obviously has no shared libraries, but dso_handle + helps to achieve better GCC test coverage. Besides, + it should be free with minrt. */ + .section .data + .global __dso_handle + .weak __dso_handle +__dso_handle: + .long 0 diff --git a/libgloss/pru/crt0.S b/libgloss/pru/crt0.S index b3f0d53a93..ad31cc9cc0 100644 --- a/libgloss/pru/crt0.S +++ b/libgloss/pru/crt0.S @@ -39,7 +39,6 @@ _start: /* DATA and BSS are handled by the loader, so nothing to do here. */ -#if !defined(MINRT) .extern _do_global_dtors /* Ensure destructors get called. Call is per GNU ABI (i.e. 32-bit function pointers). But it is also compatible with the TI ABI @@ -60,27 +59,22 @@ ctors_loop: add r5, r5, 2 jmp ctors_loop ctors_done: -#endif /* Just in case main() tries to access argc, argv[] and envp. */ zero r14, 3 * 4 -#if !defined(MINRT) .weak __c_args__ ldi32 r5, __c_args__ qbeq __skip_c_args, r5, 0 lbbo r14, r5, 0, 4 /* argc */ add r15, r5, 4 /* argv */ __skip_c_args: -#endif /* Call main */ call main -#if !defined(MINRT) /* Call exit */ call exit -#endif /* We should never reach here. */ _crt_exit: From 276dd12f69b1cf113a009da331d3bcfc4783fdce Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Mon, 22 Jan 2024 18:11:36 +0200 Subject: [PATCH 610/767] libgloss: pru: Trim crt0-minrt.o Strip a few more instructions from crt0-minrt.S: - Remove "halt" and rely on the infinite loop after main()'s return. - Remove main()'s argc and argv argument initialization. Host loader does not set them, and typical firmware does not use them, either. - Remove the __dso_handle symbol. This should be safe because the default crt0.S is fully standards compliant. Whereas crt0-minrt.S has been documented from the beginning to intentionally miss features in order to reduce firmware size, while still enabling typical PRU firmware to operate. Signed-off-by: Dimitar Dimitrov --- libgloss/pru/crt0-minrt.S | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/libgloss/pru/crt0-minrt.S b/libgloss/pru/crt0-minrt.S index 60647d372e..fa5e80af48 100644 --- a/libgloss/pru/crt0-minrt.S +++ b/libgloss/pru/crt0-minrt.S @@ -38,22 +38,9 @@ _start: /* DATA and BSS are handled by the loader, so nothing to do here. */ - /* Just in case main() tries to access argc, argv[] and envp. */ - zero r14, 3 * 4 - - /* Call main. */ + /* Call main. Assume argc and argv are not used with -minrt! */ call main /* We should never reach here. */ _crt_exit: - halt jmp _crt_exit - - /* PRU obviously has no shared libraries, but dso_handle - helps to achieve better GCC test coverage. Besides, - it should be free with minrt. */ - .section .data - .global __dso_handle - .weak __dso_handle -__dso_handle: - .long 0 From 90d6966b88392dbcef01c64766eb452c645a7bfe Mon Sep 17 00:00:00 2001 From: Neal Frager Date: Thu, 11 Jan 2024 18:30:19 +0000 Subject: [PATCH 611/767] configure.ac: configurable tooldir install path This patch is required to fix how the newlib headers are installed when using a sysroot install directory. The cross compiler expects headers to be in .../host/usr/arm-none-eabi/sysroot/usr/include/newlib.h by default newlib installed the headers into .../host/usr/arm-none-eabi/sysroot/usr/arm-none-eabi/include/newlib.h ${exec_prefix} provides the .../host/usr/arm-none-eabi/sysroot path ${target_noncanonical} provides an extra arm-none-eabi/ that must be removed. With this patch, users can specify the tooldir path that is needed. Signed-off-by: Neal Frager Co-developed-by: Chris Wardman --- configure | 32 ++++++++++++++++++++++++++++++-- configure.ac | 10 +++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/configure b/configure index eb0ba840b1..9477153056 100755 --- a/configure +++ b/configure @@ -755,6 +755,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -822,6 +823,7 @@ enable_stage1_languages enable_objc_gc with_build_sysroot with_debug_prefix_map +with_tooldir with_build_config enable_vtable_verify enable_serial_configure @@ -915,6 +917,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' @@ -1167,6 +1170,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1304,7 +1316,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1464,6 +1476,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1592,6 +1605,7 @@ Optional Packages: use sysroot as the system root during the build --with-debug-prefix-map='A=B C=D ...' map A to B, C to D ... in debug information + --with-tooldir=PATH use given path to install target tools after build --with-build-config='NAME NAME2...' use config/NAME.mk build configuration --with-build-time-tools=PATH @@ -7057,7 +7071,21 @@ esac # Some systems (e.g., one of the i386-aix systems the gas testers are # using) don't handle "\$" correctly, so don't use it here. -tooldir='${exec_prefix}'/${target_noncanonical} + +# Check whether --with-tooldir was given. +if test "${with_tooldir+set}" = set; then : + withval=$with_tooldir; case x"$withval" in #( + x/*) : + ;; #( + *) : + as_fn_error $? "argument to --with-tooldir must be an absolute path" "$LINENO" 5 ;; +esac + +else + with_tooldir='${exec_prefix}'/${target_noncanonical} +fi + +tooldir=${with_tooldir} build_tooldir=${tooldir} # Create a .gdbinit file which runs the one in srcdir diff --git a/configure.ac b/configure.ac index f1bb721006..05ddf69870 100644 --- a/configure.ac +++ b/configure.ac @@ -2599,7 +2599,15 @@ esac # Some systems (e.g., one of the i386-aix systems the gas testers are # using) don't handle "\$" correctly, so don't use it here. -tooldir='${exec_prefix}'/${target_noncanonical} +AC_ARG_WITH([tooldir], + [AS_HELP_STRING([--with-tooldir=PATH], + [use given path to install target tools after build])], + [AS_CASE([x"$withval"], + [x/*],, + [AC_MSG_ERROR([argument to --with-tooldir must be an absolute path])]) + ], + [with_tooldir='${exec_prefix}'/${target_noncanonical}]) +tooldir=${with_tooldir} build_tooldir=${tooldir} # Create a .gdbinit file which runs the one in srcdir From 752489c76e2a3c8f4b658597ff7956466366961c Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 20 Jan 2024 23:47:12 -0500 Subject: [PATCH 612/767] libgloss: merge cr16 into top-level Makefile Avoid a recursive make to speed things up a bit. A cr16-elf build shows installed objects & libs produce same code. The test targets were dropped as they didn't actually work -- there is no test.o rule in here. --- libgloss/Makefile.am | 3 + libgloss/Makefile.in | 640 +++++++++++++++++++++++-------------- libgloss/configure | 33 +- libgloss/configure.ac | 5 +- libgloss/cr16/Makefile.in | 158 --------- libgloss/cr16/Makefile.inc | 40 +++ 6 files changed, 458 insertions(+), 421 deletions(-) delete mode 100644 libgloss/cr16/Makefile.in create mode 100644 libgloss/cr16/Makefile.inc diff --git a/libgloss/Makefile.am b/libgloss/Makefile.am index 084d433d3d..77a199e965 100644 --- a/libgloss/Makefile.am +++ b/libgloss/Makefile.am @@ -92,6 +92,9 @@ endif if CONFIG_BFIN include bfin/Makefile.inc endif +if CONFIG_CR16 +include cr16/Makefile.inc +endif if CONFIG_CSKY include csky/Makefile.inc endif diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in index bfaae80186..a3e5bc4bfa 100644 --- a/libgloss/Makefile.in +++ b/libgloss/Makefile.in @@ -158,74 +158,82 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_16 = $(wildcard $(srcdir)/bfin/include/*.h) @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_17 = $(wildcard $(srcdir)/bfin/include/sys/*.h) -@CONFIG_CSKY_TRUE@am__append_18 = \ +@CONFIG_CR16_TRUE@am__append_18 = cr16/crti.o cr16/crtn.o cr16/crt1.o \ +@CONFIG_CR16_TRUE@ cr16/sim.ld +@CONFIG_CR16_TRUE@am__append_19 = \ +@CONFIG_CR16_TRUE@ cr16/crti.S \ +@CONFIG_CR16_TRUE@ cr16/crtn.S \ +@CONFIG_CR16_TRUE@ cr16/crt1.S + +@CONFIG_CR16_TRUE@am__append_20 = cr16/libh.a cr16/libsim.a +@CONFIG_CSKY_TRUE@am__append_21 = \ @CONFIG_CSKY_TRUE@ csky/crt0.o -@CONFIG_CSKY_TRUE@am__append_19 = \ +@CONFIG_CSKY_TRUE@am__append_22 = \ @CONFIG_CSKY_TRUE@ csky/crt0.S -@CONFIG_CSKY_TRUE@am__append_20 = csky/libsemi.a -@CONFIG_D30V_TRUE@am__append_21 = d30v/libsim.a -@CONFIG_D30V_TRUE@am__append_22 = \ +@CONFIG_CSKY_TRUE@am__append_23 = csky/libsemi.a +@CONFIG_D30V_TRUE@am__append_24 = d30v/libsim.a +@CONFIG_D30V_TRUE@am__append_25 = \ @CONFIG_D30V_TRUE@ d30v/crt0.o -@CONFIG_EPIPHANY_TRUE@am__append_23 = epiphany/crt0.o -@CONFIG_EPIPHANY_TRUE@am__append_24 = epiphany/crt0.S -@CONFIG_EPIPHANY_TRUE@am__append_25 = epiphany/libepiphany.a -@CONFIG_FR30_TRUE@am__append_26 = fr30/crt0.o -@CONFIG_FR30_TRUE@am__append_27 = fr30/crt0.s -@CONFIG_FR30_TRUE@am__append_28 = fr30/libsim.a -@CONFIG_FRV_TRUE@am__append_29 = frv/crt0.o -@CONFIG_FRV_TRUE@am__append_30 = frv/crt0.S -@CONFIG_FRV_TRUE@am__append_31 = frv/libsim.a -@CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_32 = \ +@CONFIG_EPIPHANY_TRUE@am__append_26 = epiphany/crt0.o +@CONFIG_EPIPHANY_TRUE@am__append_27 = epiphany/crt0.S +@CONFIG_EPIPHANY_TRUE@am__append_28 = epiphany/libepiphany.a +@CONFIG_FR30_TRUE@am__append_29 = fr30/crt0.o +@CONFIG_FR30_TRUE@am__append_30 = fr30/crt0.s +@CONFIG_FR30_TRUE@am__append_31 = fr30/libsim.a +@CONFIG_FRV_TRUE@am__append_32 = frv/crt0.o +@CONFIG_FRV_TRUE@am__append_33 = frv/crt0.S +@CONFIG_FRV_TRUE@am__append_34 = frv/libsim.a +@CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_35 = \ @CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@ ft32/sim.ld -@CONFIG_FT32_TRUE@am__append_33 = ft32/crt0.o -@CONFIG_FT32_TRUE@am__append_34 = ft32/crt0.S -@CONFIG_FT32_TRUE@am__append_35 = ft32/libsim.a -@CONFIG_I386_TRUE@am__append_36 = i386/cygmon.ld i386/cygmon-crt0.o -@CONFIG_I386_TRUE@am__append_37 = i386/cygmon-crt0.S -@CONFIG_I386_TRUE@am__append_38 = i386/libcygmon.a -@CONFIG_I960_TRUE@am__append_39 = i960/crt0.o i960/mon960.ld -@CONFIG_I960_TRUE@am__append_40 = \ +@CONFIG_FT32_TRUE@am__append_36 = ft32/crt0.o +@CONFIG_FT32_TRUE@am__append_37 = ft32/crt0.S +@CONFIG_FT32_TRUE@am__append_38 = ft32/libsim.a +@CONFIG_I386_TRUE@am__append_39 = i386/cygmon.ld i386/cygmon-crt0.o +@CONFIG_I386_TRUE@am__append_40 = i386/cygmon-crt0.S +@CONFIG_I386_TRUE@am__append_41 = i386/libcygmon.a +@CONFIG_I960_TRUE@am__append_42 = i960/crt0.o i960/mon960.ld +@CONFIG_I960_TRUE@am__append_43 = \ @CONFIG_I960_TRUE@ i960/crt0.c -@CONFIG_I960_TRUE@am__append_41 = i960/libmon960.a -@CONFIG_IQ2000_TRUE@am__append_42 = iq2000/crt0.o iq2000/sim.ld -@CONFIG_IQ2000_TRUE@am__append_43 = iq2000/libeval.a -@CONFIG_IQ2000_TRUE@am__append_44 = iq2000/crt0.S iq2000/test.o -@CONFIG_IQ2000_TRUE@am__append_45 = iq2000/test -@CONFIG_LIBNOSYS_TRUE@am__append_46 = libnosys/nosys.specs -@CONFIG_LIBNOSYS_TRUE@am__append_47 = libnosys/libnosys.a -@CONFIG_LM32_TRUE@am__append_48 = lm32/crt0.o lm32/sim.ld -@CONFIG_LM32_TRUE@am__append_49 = lm32/libgloss.a -@CONFIG_LM32_TRUE@am__append_50 = lm32/crt0.S -@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_51 = \ +@CONFIG_I960_TRUE@am__append_44 = i960/libmon960.a +@CONFIG_IQ2000_TRUE@am__append_45 = iq2000/crt0.o iq2000/sim.ld +@CONFIG_IQ2000_TRUE@am__append_46 = iq2000/libeval.a +@CONFIG_IQ2000_TRUE@am__append_47 = iq2000/crt0.S iq2000/test.o +@CONFIG_IQ2000_TRUE@am__append_48 = iq2000/test +@CONFIG_LIBNOSYS_TRUE@am__append_49 = libnosys/nosys.specs +@CONFIG_LIBNOSYS_TRUE@am__append_50 = libnosys/libnosys.a +@CONFIG_LM32_TRUE@am__append_51 = lm32/crt0.o lm32/sim.ld +@CONFIG_LM32_TRUE@am__append_52 = lm32/libgloss.a +@CONFIG_LM32_TRUE@am__append_53 = lm32/crt0.S +@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_54 = \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/eva-stub.ld \ @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@ m32r/mon.specs -@CONFIG_M32R_TRUE@am__append_52 = m32r/crt0.o m32r/m32r-lib.o \ +@CONFIG_M32R_TRUE@am__append_55 = m32r/crt0.o m32r/m32r-lib.o \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.o -@CONFIG_M32R_TRUE@am__append_53 = m32r/crt0.S m32r/m32r-lib.c \ +@CONFIG_M32R_TRUE@am__append_56 = m32r/crt0.S m32r/m32r-lib.c \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.c -@CONFIG_M32R_TRUE@am__append_54 = m32r/libgloss.a m32r/libmon.a -@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_55 = \ +@CONFIG_M32R_TRUE@am__append_57 = m32r/libgloss.a m32r/libmon.a +@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_58 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_56 = \ +@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_59 = \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.ld \ @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@ mcore/cmb.specs -@CONFIG_MCORE_TRUE@am__append_57 = mcore/crt0.o -@CONFIG_MCORE_TRUE@am__append_58 = mcore/crt0.S -@CONFIG_MCORE_TRUE@am__append_59 = mcore/libsim.a mcore/libcmb.a -@CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_60 = \ +@CONFIG_MCORE_TRUE@am__append_60 = mcore/crt0.o +@CONFIG_MCORE_TRUE@am__append_61 = mcore/crt0.S +@CONFIG_MCORE_TRUE@am__append_62 = mcore/libsim.a mcore/libcmb.a +@CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_63 = \ @CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@ microblaze/xilinx.ld -@CONFIG_MICROBLAZE_TRUE@am__append_61 = \ +@CONFIG_MICROBLAZE_TRUE@am__append_64 = \ @CONFIG_MICROBLAZE_TRUE@ microblaze/elf-gloss-linux.specs \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt0.o microblaze/crt1.o \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt2.o microblaze/crt3.o \ @@ -234,7 +242,7 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_MICROBLAZE_TRUE@ microblaze/sim-crtinit.o \ @CONFIG_MICROBLAZE_TRUE@ microblaze/sim-pgcrtinit.o \ @CONFIG_MICROBLAZE_TRUE@ microblaze/linux-crt0.o -@CONFIG_MICROBLAZE_TRUE@am__append_62 = \ +@CONFIG_MICROBLAZE_TRUE@am__append_65 = \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt0.S \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt1.S \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt2.S \ @@ -246,77 +254,77 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_MICROBLAZE_TRUE@ microblaze/sim-pgcrtinit.S \ @CONFIG_MICROBLAZE_TRUE@ microblaze/linux-crt0.S -@CONFIG_MICROBLAZE_TRUE@am__append_63 = microblaze/libgloss.a \ +@CONFIG_MICROBLAZE_TRUE@am__append_66 = microblaze/libgloss.a \ @CONFIG_MICROBLAZE_TRUE@ microblaze/libgloss-linux.a -@CONFIG_MN10200_TRUE@am__append_64 = mn10200/eval.ld mn10200/sim.ld \ +@CONFIG_MN10200_TRUE@am__append_67 = mn10200/eval.ld mn10200/sim.ld \ @CONFIG_MN10200_TRUE@ mn10200/crt0.o -@CONFIG_MN10200_TRUE@am__append_65 = mn10200/crt0.S -@CONFIG_MN10200_TRUE@am__append_66 = mn10200/libeval.a -@CONFIG_MN10200_TRUE@am__append_67 = mn10200/test -@CONFIG_MN10300_TRUE@am__append_68 = \ +@CONFIG_MN10200_TRUE@am__append_68 = mn10200/crt0.S +@CONFIG_MN10200_TRUE@am__append_69 = mn10200/libeval.a +@CONFIG_MN10200_TRUE@am__append_70 = mn10200/test +@CONFIG_MN10300_TRUE@am__append_71 = \ @CONFIG_MN10300_TRUE@ mn10300/eval.ld \ @CONFIG_MN10300_TRUE@ mn10300/sim.ld -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_69 = \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_72 = \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2303.ld \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/asb2305.ld -@CONFIG_MN10300_TRUE@am__append_70 = \ +@CONFIG_MN10300_TRUE@am__append_73 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.o \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.o -@CONFIG_MN10300_TRUE@am__append_71 = \ +@CONFIG_MN10300_TRUE@am__append_74 = \ @CONFIG_MN10300_TRUE@ mn10300/crt0.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.S \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.S -@CONFIG_MN10300_TRUE@am__append_72 = mn10300/libeval.a -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_73 = mn10300/libcygmon.a -@CONFIG_MN10300_TRUE@am__append_74 = mn10300/test -@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_75 = \ +@CONFIG_MN10300_TRUE@am__append_75 = mn10300/libeval.a +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_76 = mn10300/libcygmon.a +@CONFIG_MN10300_TRUE@am__append_77 = mn10300/test +@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_78 = \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxie-elf-common.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/qemu.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/sim.ld \ @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@ moxie/moxiebox.ld -@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_76 = moxie/crt0.o -@CONFIG_MOXIE_TRUE@am__append_77 = \ +@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_79 = moxie/crt0.o +@CONFIG_MOXIE_TRUE@am__append_80 = \ @CONFIG_MOXIE_TRUE@ moxie/crt0.S -@CONFIG_MOXIE_TRUE@am__append_78 = moxie/libsim.a moxie/libqemu.a -@CONFIG_MSP430_TRUE@am__append_79 = msp430/msp430-sim.ld \ +@CONFIG_MOXIE_TRUE@am__append_81 = moxie/libsim.a moxie/libqemu.a +@CONFIG_MSP430_TRUE@am__append_82 = msp430/msp430-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/msp430xl-sim.ld \ @CONFIG_MSP430_TRUE@ msp430/intr_vectors.ld msp430/gcrt0.o \ @CONFIG_MSP430_TRUE@ msp430/crt0.o -@CONFIG_MSP430_TRUE@am__append_80 = \ +@CONFIG_MSP430_TRUE@am__append_83 = \ @CONFIG_MSP430_TRUE@ msp430/gcrt0.S \ @CONFIG_MSP430_TRUE@ msp430/crt0.S -@CONFIG_MSP430_TRUE@am__append_81 = msp430/libsim.a msp430/libnosys.a \ +@CONFIG_MSP430_TRUE@am__append_84 = msp430/libsim.a msp430/libnosys.a \ @CONFIG_MSP430_TRUE@ msp430/libcrt.a -@CONFIG_NDS32_TRUE@am__append_82 = \ +@CONFIG_NDS32_TRUE@am__append_85 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.o \ @CONFIG_NDS32_TRUE@ nds32/crt1.o -@CONFIG_NDS32_TRUE@am__append_83 = \ +@CONFIG_NDS32_TRUE@am__append_86 = \ @CONFIG_NDS32_TRUE@ nds32/crt0.S \ @CONFIG_NDS32_TRUE@ nds32/crt1.S -@CONFIG_NDS32_TRUE@am__append_84 = nds32/libgloss.a -@CONFIG_NIOS2_TRUE@am__append_85 = \ +@CONFIG_NDS32_TRUE@am__append_87 = nds32/libgloss.a +@CONFIG_NIOS2_TRUE@am__append_88 = \ @CONFIG_NIOS2_TRUE@ nios2/qemu-hosted.ld -@CONFIG_NIOS2_TRUE@am__append_86 = nios2/libnios2.a -@CONFIG_OR1K_TRUE@am__append_87 = or1k/crt0.o -@CONFIG_OR1K_TRUE@am__append_88 = or1k/crt0.S -@CONFIG_OR1K_TRUE@am__append_89 = \ +@CONFIG_NIOS2_TRUE@am__append_89 = nios2/libnios2.a +@CONFIG_OR1K_TRUE@am__append_90 = or1k/crt0.o +@CONFIG_OR1K_TRUE@am__append_91 = or1k/crt0.S +@CONFIG_OR1K_TRUE@am__append_92 = \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-asm.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-nop.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-sprs.h \ @CONFIG_OR1K_TRUE@ or1k/include/or1k-support.h -@CONFIG_OR1K_TRUE@am__append_90 = or1k/libor1k.a or1k/libboard-atlys.a \ +@CONFIG_OR1K_TRUE@am__append_93 = or1k/libor1k.a or1k/libboard-atlys.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-de0_nano.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ml501.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-optimsoc.a \ @@ -325,49 +333,49 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_OR1K_TRUE@ or1k/libboard-ordb1a3pe1500.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-ordb2a.a \ @CONFIG_OR1K_TRUE@ or1k/libboard-orpsocrefdesign.a -@CONFIG_PRU_TRUE@am__append_91 = \ +@CONFIG_PRU_TRUE@am__append_94 = \ @CONFIG_PRU_TRUE@ pru/crt0.o \ @CONFIG_PRU_TRUE@ pru/crt0-minrt.o -@CONFIG_PRU_TRUE@am__append_92 = \ +@CONFIG_PRU_TRUE@am__append_95 = \ @CONFIG_PRU_TRUE@ pru/crt0.S \ @CONFIG_PRU_TRUE@ pru/crt0-minrt.S -@CONFIG_PRU_TRUE@am__append_93 = pru/libgloss.a -@CONFIG_RISCV_TRUE@am__append_94 = \ +@CONFIG_PRU_TRUE@am__append_96 = pru/libgloss.a +@CONFIG_RISCV_TRUE@am__append_97 = \ @CONFIG_RISCV_TRUE@ riscv/nano.specs \ @CONFIG_RISCV_TRUE@ riscv/sim.specs \ @CONFIG_RISCV_TRUE@ riscv/semihost.specs \ @CONFIG_RISCV_TRUE@ riscv/crt0.o -@CONFIG_RISCV_TRUE@am__append_95 = riscv/libgloss.a riscv/libsim.a \ +@CONFIG_RISCV_TRUE@am__append_98 = riscv/libgloss.a riscv/libsim.a \ @CONFIG_RISCV_TRUE@ riscv/libsemihost.a -@CONFIG_RL78_TRUE@am__append_96 = rl78/rl78.ld rl78/rl78-sim.ld \ +@CONFIG_RL78_TRUE@am__append_99 = rl78/rl78.ld rl78/rl78-sim.ld \ @CONFIG_RL78_TRUE@ rl78/gcrt0.o rl78/crt0.o rl78/crtn.o -@CONFIG_RL78_TRUE@am__append_97 = \ +@CONFIG_RL78_TRUE@am__append_100 = \ @CONFIG_RL78_TRUE@ rl78/gcrt0.S \ @CONFIG_RL78_TRUE@ rl78/crt0.S \ @CONFIG_RL78_TRUE@ rl78/crtn.S -@CONFIG_RL78_TRUE@am__append_98 = rl78/libsim.a -@CONFIG_RX_TRUE@am__append_99 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ +@CONFIG_RL78_TRUE@am__append_101 = rl78/libsim.a +@CONFIG_RX_TRUE@am__append_102 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \ @CONFIG_RX_TRUE@ rx/crt0.o rx/crtn.o -@CONFIG_RX_TRUE@am__append_100 = \ +@CONFIG_RX_TRUE@am__append_103 = \ @CONFIG_RX_TRUE@ rx/gcrt0.S \ @CONFIG_RX_TRUE@ rx/crt0.S \ @CONFIG_RX_TRUE@ rx/crtn.S -@CONFIG_RX_TRUE@am__append_101 = rx/libsim.a -@CONFIG_SPARC_TRUE@am__append_102 = sparc/crt0.o sparc/erc32-crt0.o -@CONFIG_SPARC_TRUE@am__append_103 = sparc/crt0.S sparc/erc32-crt0.S -@CONFIG_SPARC_TRUE@am__append_104 = sparc/liberc32.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_105 = \ +@CONFIG_RX_TRUE@am__append_104 = rx/libsim.a +@CONFIG_SPARC_TRUE@am__append_105 = sparc/crt0.o sparc/erc32-crt0.o +@CONFIG_SPARC_TRUE@am__append_106 = sparc/crt0.S sparc/erc32-crt0.S +@CONFIG_SPARC_TRUE@am__append_107 = sparc/liberc32.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_108 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-crt0.o \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@ sparc/cygmon-salib.o -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_106 = sparc/cygmon-crt0.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_107 = sparc/libcygmon.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_108 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_109 = sparc/cygmon-crt0.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_110 = sparc/libcygmon.a +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_111 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex930.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex931.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/ex934.ld \ @@ -375,64 +383,64 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/elfsim.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/traps.o -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_109 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_112 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite930.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite931.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite934.a \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/libslite86x.a -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_110 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_113 = \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/tsc701.ld \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@ sparc/crt0-701.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_111 = sparc/crt0-701.S -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_112 = sparc/libsplet701.a -@CONFIG_SPARC_TRUE@am__append_113 = sparc/erc32-test sparc/ex930-test \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_114 = sparc/crt0-701.S +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_115 = sparc/libsplet701.a +@CONFIG_SPARC_TRUE@am__append_116 = sparc/erc32-test sparc/ex930-test \ @CONFIG_SPARC_TRUE@ sparc/ex931-test sparc/ex934-test -@CONFIG_SPARC_LEON_TRUE@am__append_114 = sparc_leon/libleonbare.a \ +@CONFIG_SPARC_LEON_TRUE@am__append_117 = sparc_leon/libleonbare.a \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/liblbthread.a \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/libsmall.a -@CONFIG_SPARC_LEON_TRUE@am__append_115 = \ +@CONFIG_SPARC_LEON_TRUE@am__append_118 = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.o \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.o -@CONFIG_SPARC_LEON_TRUE@am__append_116 = \ +@CONFIG_SPARC_LEON_TRUE@am__append_119 = \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/crt0.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.c \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.c \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.S \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.S -@CONFIG_TIC6X_TRUE@am__append_117 = tic6x/crt0.o -@CONFIG_TIC6X_TRUE@am__append_118 = tic6x/crt0.S -@CONFIG_TIC6X_TRUE@am__append_119 = tic6x/libsim.a -@CONFIG_V850_TRUE@am__append_120 = v850/crt0.o -@CONFIG_V850_TRUE@am__append_121 = v850/crt0.S -@CONFIG_V850_TRUE@am__append_122 = v850/libsim.a -@CONFIG_VISIUM_TRUE@am__append_123 = visium/crt0.o -@CONFIG_VISIUM_TRUE@am__append_124 = visium/crt0.S -@CONFIG_VISIUM_TRUE@am__append_125 = visium/libserial.a \ +@CONFIG_TIC6X_TRUE@am__append_120 = tic6x/crt0.o +@CONFIG_TIC6X_TRUE@am__append_121 = tic6x/crt0.S +@CONFIG_TIC6X_TRUE@am__append_122 = tic6x/libsim.a +@CONFIG_V850_TRUE@am__append_123 = v850/crt0.o +@CONFIG_V850_TRUE@am__append_124 = v850/crt0.S +@CONFIG_V850_TRUE@am__append_125 = v850/libsim.a +@CONFIG_VISIUM_TRUE@am__append_126 = visium/crt0.o +@CONFIG_VISIUM_TRUE@am__append_127 = visium/crt0.S +@CONFIG_VISIUM_TRUE@am__append_128 = visium/libserial.a \ @CONFIG_VISIUM_TRUE@ visium/libsim.a visium/libdebug.a -@CONFIG_WINCE_TRUE@am__append_126 = $(gdbdir) -@CONFIG_WINCE_TRUE@am__append_127 = wince/stub.exe -@CONFIG_XSTORMY16_TRUE@am__append_128 = xstormy16/crt0.o \ +@CONFIG_WINCE_TRUE@am__append_129 = $(gdbdir) +@CONFIG_WINCE_TRUE@am__append_130 = wince/stub.exe +@CONFIG_XSTORMY16_TRUE@am__append_131 = xstormy16/crt0.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.o xstormy16/crtn.o \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_high.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/sim_rom.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_app.ld \ @CONFIG_XSTORMY16_TRUE@ xstormy16/eva_stub.hex -@CONFIG_XSTORMY16_TRUE@am__append_129 = \ +@CONFIG_XSTORMY16_TRUE@am__append_132 = \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crt0.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.s \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.s -@CONFIG_XSTORMY16_TRUE@am__append_130 = xstormy16/libsim.a \ +@CONFIG_XSTORMY16_TRUE@am__append_133 = xstormy16/libsim.a \ @CONFIG_XSTORMY16_TRUE@ xstormy16/libeva_app.a -@CONFIG_XSTORMY16_TRUE@am__append_131 = xstormy16/eva_stub.elf -@CONFIG_XSTORMY16_TRUE@am__append_132 = xstormy16/eva_stub.hex -@CONFIG_XTENSA_TRUE@am__append_133 = \ +@CONFIG_XSTORMY16_TRUE@am__append_134 = xstormy16/eva_stub.elf +@CONFIG_XSTORMY16_TRUE@am__append_135 = xstormy16/eva_stub.hex +@CONFIG_XTENSA_TRUE@am__append_136 = \ @CONFIG_XTENSA_TRUE@ xtensa/default.specs \ @CONFIG_XTENSA_TRUE@ xtensa/nano.specs \ @CONFIG_XTENSA_TRUE@ xtensa/sim.elf.specs \ @@ -441,29 +449,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7) @CONFIG_XTENSA_TRUE@ xtensa/sys.openocd.specs \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.o -@CONFIG_XTENSA_TRUE@am__append_134 = \ +@CONFIG_XTENSA_TRUE@am__append_137 = \ @CONFIG_XTENSA_TRUE@ xtensa/crt0.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.S \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.S -@CONFIG_XTENSA_TRUE@am__append_135 = xtensa/libgloss.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_136 = \ +@CONFIG_XTENSA_TRUE@am__append_138 = xtensa/libgloss.a +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/app.elf.ld \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-sim.o \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/crt1-boards.o -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_137 = xtensa/libsys_qemu.a \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = xtensa/libsys_qemu.a \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/libsys_openocd.a -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_138 = xtensa/boards/esp32/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = xtensa/boards/esp32/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = -I$(srcdir)/xtensa/boards/esp32/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = xtensa/boards/esp32s3/memory.elf.ld -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_144 = xtensa/boards/esp32s3/board.c -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_145 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_146 = -I$(srcdir)/xtensa/boards/esp32s3/include -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_147 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = xtensa/boards/esp32/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = xtensa/boards/esp32/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_144 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_145 = -I$(srcdir)/xtensa/boards/esp32/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_146 = xtensa/boards/esp32s3/memory.elf.ld +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_147 = xtensa/boards/esp32s3/board.c +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_148 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_149 = -I$(srcdir)/xtensa/boards/esp32s3/include +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_150 = -I$(srcdir)/xtensa/boards/esp32s3/include subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ @@ -489,9 +497,9 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = m68hc11/Makefile m68k/Makefile pa/Makefile \ - mips/Makefile rs6000/Makefile cr16/Makefile cris/Makefile \ - crx/Makefile mep/Makefile mt/Makefile m32c/Makefile \ - spu/Makefile sparc/libsys/Makefile + mips/Makefile rs6000/Makefile cris/Makefile crx/Makefile \ + mep/Makefile mt/Makefile m32c/Makefile spu/Makefile \ + sparc/libsys/Makefile CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -598,6 +606,27 @@ bfin_libsim_a_LIBADD = @CONFIG_BFIN_TRUE@am_bfin_libsim_a_OBJECTS = bfin/bfin_libsim_a-clear_cache_range.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/bfin_libsim_a-syscalls.$(OBJEXT) bfin_libsim_a_OBJECTS = $(am_bfin_libsim_a_OBJECTS) +cr16_libh_a_AR = $(AR) $(ARFLAGS) +cr16_libh_a_LIBADD = +@CONFIG_CR16_TRUE@am_cr16_libh_a_OBJECTS = cr16/intable.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/dvz_hndl.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/flg_hndl.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/iad_hndl.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/svc_hndl.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/und_hndl.$(OBJEXT) +cr16_libh_a_OBJECTS = $(am_cr16_libh_a_OBJECTS) +cr16_libsim_a_AR = $(AR) $(ARFLAGS) +cr16_libsim_a_LIBADD = +@CONFIG_CR16_TRUE@am_cr16_libsim_a_OBJECTS = cr16/_exit.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/close.$(OBJEXT) cr16/_getenv.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/lseek.$(OBJEXT) cr16/open.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/read.$(OBJEXT) cr16/_rename.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/sbrk.$(OBJEXT) cr16/time.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/unlink.$(OBJEXT) cr16/write.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/stat.$(OBJEXT) cr16/putnum.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/kill.$(OBJEXT) cr16/getpid.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/isatty.$(OBJEXT) cr16/fstat.$(OBJEXT) +cr16_libsim_a_OBJECTS = $(am_cr16_libsim_a_OBJECTS) csky_libsemi_a_AR = $(AR) $(ARFLAGS) csky_libsemi_a_LIBADD = @CONFIG_CSKY_TRUE@am_csky_libsemi_a_OBJECTS = \ @@ -762,20 +791,22 @@ libobjs_a_AR = $(AR) $(ARFLAGS) libobjs_a_LIBADD = @CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \ @CONFIG_BFIN_TRUE@ bfin/basiccrt.$(OBJEXT) -@CONFIG_CSKY_TRUE@am__objects_4 = csky/crt0.$(OBJEXT) -@CONFIG_EPIPHANY_TRUE@am__objects_5 = epiphany/crt0.$(OBJEXT) -@CONFIG_FR30_TRUE@am__objects_6 = fr30/crt0.$(OBJEXT) -@CONFIG_FRV_TRUE@am__objects_7 = frv/crt0.$(OBJEXT) -@CONFIG_FT32_TRUE@am__objects_8 = ft32/crt0.$(OBJEXT) -@CONFIG_I386_TRUE@am__objects_9 = i386/cygmon-crt0.$(OBJEXT) -@CONFIG_I960_TRUE@am__objects_10 = i960/crt0.$(OBJEXT) -@CONFIG_IQ2000_TRUE@am__objects_11 = iq2000/crt0.$(OBJEXT) -@CONFIG_LM32_TRUE@am__objects_12 = lm32/crt0.$(OBJEXT) -@CONFIG_M32R_TRUE@am__objects_13 = m32r/crt0.$(OBJEXT) \ +@CONFIG_CR16_TRUE@am__objects_4 = cr16/crti.$(OBJEXT) \ +@CONFIG_CR16_TRUE@ cr16/crtn.$(OBJEXT) cr16/crt1.$(OBJEXT) +@CONFIG_CSKY_TRUE@am__objects_5 = csky/crt0.$(OBJEXT) +@CONFIG_EPIPHANY_TRUE@am__objects_6 = epiphany/crt0.$(OBJEXT) +@CONFIG_FR30_TRUE@am__objects_7 = fr30/crt0.$(OBJEXT) +@CONFIG_FRV_TRUE@am__objects_8 = frv/crt0.$(OBJEXT) +@CONFIG_FT32_TRUE@am__objects_9 = ft32/crt0.$(OBJEXT) +@CONFIG_I386_TRUE@am__objects_10 = i386/cygmon-crt0.$(OBJEXT) +@CONFIG_I960_TRUE@am__objects_11 = i960/crt0.$(OBJEXT) +@CONFIG_IQ2000_TRUE@am__objects_12 = iq2000/crt0.$(OBJEXT) +@CONFIG_LM32_TRUE@am__objects_13 = lm32/crt0.$(OBJEXT) +@CONFIG_M32R_TRUE@am__objects_14 = m32r/crt0.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-lib.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/m32r-stub.$(OBJEXT) -@CONFIG_MCORE_TRUE@am__objects_14 = mcore/crt0.$(OBJEXT) -@CONFIG_MICROBLAZE_TRUE@am__objects_15 = microblaze/crt0.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_15 = mcore/crt0.$(OBJEXT) +@CONFIG_MICROBLAZE_TRUE@am__objects_16 = microblaze/crt0.$(OBJEXT) \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt1.$(OBJEXT) \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt2.$(OBJEXT) \ @CONFIG_MICROBLAZE_TRUE@ microblaze/crt3.$(OBJEXT) \ @@ -785,38 +816,38 @@ libobjs_a_LIBADD = @CONFIG_MICROBLAZE_TRUE@ microblaze/sim-crtinit.$(OBJEXT) \ @CONFIG_MICROBLAZE_TRUE@ microblaze/sim-pgcrtinit.$(OBJEXT) \ @CONFIG_MICROBLAZE_TRUE@ microblaze/linux-crt0.$(OBJEXT) -@CONFIG_MN10200_TRUE@am__objects_16 = mn10200/crt0.$(OBJEXT) -@CONFIG_MN10300_TRUE@am__objects_17 = mn10300/crt0.$(OBJEXT) \ +@CONFIG_MN10200_TRUE@am__objects_17 = mn10200/crt0.$(OBJEXT) +@CONFIG_MN10300_TRUE@am__objects_18 = mn10300/crt0.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_cygmon.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/crt0_redboot.$(OBJEXT) -@CONFIG_MOXIE_TRUE@am__objects_18 = moxie/crt0.$(OBJEXT) -@CONFIG_MSP430_TRUE@am__objects_19 = msp430/gcrt0.$(OBJEXT) \ +@CONFIG_MOXIE_TRUE@am__objects_19 = moxie/crt0.$(OBJEXT) +@CONFIG_MSP430_TRUE@am__objects_20 = msp430/gcrt0.$(OBJEXT) \ @CONFIG_MSP430_TRUE@ msp430/crt0.$(OBJEXT) -@CONFIG_NDS32_TRUE@am__objects_20 = nds32/crt0.$(OBJEXT) \ +@CONFIG_NDS32_TRUE@am__objects_21 = nds32/crt0.$(OBJEXT) \ @CONFIG_NDS32_TRUE@ nds32/crt1.$(OBJEXT) -@CONFIG_OR1K_TRUE@am__objects_21 = or1k/crt0.$(OBJEXT) -@CONFIG_PRU_TRUE@am__objects_22 = pru/crt0.$(OBJEXT) \ +@CONFIG_OR1K_TRUE@am__objects_22 = or1k/crt0.$(OBJEXT) +@CONFIG_PRU_TRUE@am__objects_23 = pru/crt0.$(OBJEXT) \ @CONFIG_PRU_TRUE@ pru/crt0-minrt.$(OBJEXT) -@CONFIG_RL78_TRUE@am__objects_23 = rl78/gcrt0.$(OBJEXT) \ +@CONFIG_RL78_TRUE@am__objects_24 = rl78/gcrt0.$(OBJEXT) \ @CONFIG_RL78_TRUE@ rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT) -@CONFIG_RX_TRUE@am__objects_24 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ +@CONFIG_RX_TRUE@am__objects_25 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \ @CONFIG_RX_TRUE@ rx/crtn.$(OBJEXT) -@CONFIG_SPARC_TRUE@am__objects_25 = sparc/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_26 = sparc/crt0.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-crt0.$(OBJEXT) -@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_26 = sparc/cygmon-crt0.$(OBJEXT) -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_27 = sparc/crt0-701.$(OBJEXT) -@CONFIG_SPARC_LEON_TRUE@am__objects_28 = sparc_leon/crt0.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_27 = sparc/cygmon-crt0.$(OBJEXT) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_28 = sparc/crt0-701.$(OBJEXT) +@CONFIG_SPARC_LEON_TRUE@am__objects_29 = sparc_leon/crt0.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/pnpinit_simple.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_svt.$(OBJEXT) \ @CONFIG_SPARC_LEON_TRUE@ sparc_leon/locore_mvt.$(OBJEXT) -@CONFIG_TIC6X_TRUE@am__objects_29 = tic6x/crt0.$(OBJEXT) -@CONFIG_V850_TRUE@am__objects_30 = v850/crt0.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am__objects_31 = visium/crt0.$(OBJEXT) -@CONFIG_XSTORMY16_TRUE@am__objects_32 = xstormy16/crt0.$(OBJEXT) \ +@CONFIG_TIC6X_TRUE@am__objects_30 = tic6x/crt0.$(OBJEXT) +@CONFIG_V850_TRUE@am__objects_31 = v850/crt0.$(OBJEXT) +@CONFIG_VISIUM_TRUE@am__objects_32 = visium/crt0.$(OBJEXT) +@CONFIG_XSTORMY16_TRUE@am__objects_33 = xstormy16/crt0.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crti.$(OBJEXT) \ @CONFIG_XSTORMY16_TRUE@ xstormy16/crtn.$(OBJEXT) -@CONFIG_XTENSA_TRUE@am__objects_33 = xtensa/crt0.$(OBJEXT) \ +@CONFIG_XTENSA_TRUE@am__objects_34 = xtensa/crt0.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-sim.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@ xtensa/crt1-boards.$(OBJEXT) am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ @@ -829,7 +860,7 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ $(am__objects_26) $(am__objects_27) $(am__objects_28) \ $(am__objects_29) $(am__objects_30) $(am__objects_31) \ - $(am__objects_32) $(am__objects_33) + $(am__objects_32) $(am__objects_33) $(am__objects_34) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_LIBADD = @@ -838,7 +869,7 @@ lm32_libgloss_a_LIBADD = lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS) m32r_libgloss_a_AR = $(AR) $(ARFLAGS) m32r_libgloss_a_LIBADD = -@CONFIG_M32R_TRUE@am__objects_34 = m32r/chmod.$(OBJEXT) \ +@CONFIG_M32R_TRUE@am__objects_35 = m32r/chmod.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \ @@ -848,16 +879,16 @@ m32r_libgloss_a_LIBADD = @CONFIG_M32R_TRUE@ m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \ @CONFIG_M32R_TRUE@ m32r/write.$(OBJEXT) @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_34) +@CONFIG_M32R_TRUE@ $(am__objects_35) m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS) m32r_libmon_a_AR = $(AR) $(ARFLAGS) m32r_libmon_a_LIBADD = @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \ -@CONFIG_M32R_TRUE@ $(am__objects_34) +@CONFIG_M32R_TRUE@ $(am__objects_35) m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS) mcore_libcmb_a_AR = $(AR) $(ARFLAGS) mcore_libcmb_a_LIBADD = -@CONFIG_MCORE_TRUE@am__objects_35 = mcore/fstat.$(OBJEXT) \ +@CONFIG_MCORE_TRUE@am__objects_36 = mcore/fstat.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \ @@ -869,12 +900,12 @@ mcore_libcmb_a_LIBADD = @CONFIG_MCORE_TRUE@ mcore/cmb-exit.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-inbyte.$(OBJEXT) \ @CONFIG_MCORE_TRUE@ mcore/cmb-outbyte.$(OBJEXT) \ -@CONFIG_MCORE_TRUE@ $(am__objects_35) +@CONFIG_MCORE_TRUE@ $(am__objects_36) mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS) mcore_libsim_a_AR = $(AR) $(ARFLAGS) mcore_libsim_a_LIBADD = @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS = \ -@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_35) +@CONFIG_MCORE_TRUE@ mcore/syscalls.$(OBJEXT) $(am__objects_36) mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS) microblaze_libgloss_linux_a_AR = $(AR) $(ARFLAGS) microblaze_libgloss_linux_a_LIBADD = @@ -931,7 +962,7 @@ mn10200_libeval_a_LIBADD = mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS) mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS) mn10300_libcygmon_a_LIBADD = -@CONFIG_MN10300_TRUE@am__objects_36 = mn10300/_exit.$(OBJEXT) \ +@CONFIG_MN10300_TRUE@am__objects_37 = mn10300/_exit.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/access.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/chmod.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/close.$(OBJEXT) \ @@ -950,12 +981,12 @@ mn10300_libcygmon_a_LIBADD = @CONFIG_MN10300_TRUE@ mn10300/unlink.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/utime.$(OBJEXT) \ @CONFIG_MN10300_TRUE@ mn10300/write.$(OBJEXT) -@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_36) \ +@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_37) \ @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@ mn10300/cygmon.$(OBJEXT) mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS) mn10300_libeval_a_AR = $(AR) $(ARFLAGS) mn10300_libeval_a_LIBADD = -@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_36) \ +@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_37) \ @CONFIG_MN10300_TRUE@ mn10300/trap.$(OBJEXT) mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS) moxie_libqemu_a_AR = $(AR) $(ARFLAGS) @@ -1215,7 +1246,7 @@ riscv_libsemihost_a_LIBADD = riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS) riscv_libsim_a_AR = $(AR) $(ARFLAGS) riscv_libsim_a_LIBADD = -@CONFIG_RISCV_TRUE@am__objects_37 = \ +@CONFIG_RISCV_TRUE@am__objects_38 = \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_access.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \ @@ -1248,7 +1279,7 @@ riscv_libsim_a_LIBADD = @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \ @CONFIG_RISCV_TRUE@ riscv/riscv_libsim_a-sys_write.$(OBJEXT) -@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_37) +@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_38) riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS) rl78_libsim_a_AR = $(AR) $(ARFLAGS) rl78_libsim_a_LIBADD = @@ -1290,14 +1321,14 @@ sparc_libcygmon_a_LIBADD = sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS) sparc_liberc32_a_AR = $(AR) $(ARFLAGS) sparc_liberc32_a_LIBADD = -@CONFIG_SPARC_TRUE@am__objects_38 = close.$(OBJEXT) fstat.$(OBJEXT) \ +@CONFIG_SPARC_TRUE@am__objects_39 = close.$(OBJEXT) fstat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ getpid.$(OBJEXT) isatty.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ kill.$(OBJEXT) lseek.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ open.$(OBJEXT) print.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ putnum.$(OBJEXT) read.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sbrk.$(OBJEXT) stat.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ unlink.$(OBJEXT) write.$(OBJEXT) -@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_38) \ +@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_39) \ @CONFIG_SPARC_TRUE@ sparc/erc32-io.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/traps.$(OBJEXT) \ @CONFIG_SPARC_TRUE@ sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \ @@ -1305,18 +1336,18 @@ sparc_liberc32_a_LIBADD = sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS) sparc_libslite86x_a_AR = $(AR) $(ARFLAGS) sparc_libslite86x_a_LIBADD = -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_39 = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_40 = \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_40) sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS) sparc_libslite930_a_AR = $(AR) $(ARFLAGS) sparc_libslite930_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_38) \ +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/salib.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/sparcl-stub.$(OBJEXT) \ @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ sparc/cache.$(OBJEXT) @@ -1324,12 +1355,12 @@ sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS) sparc_libslite931_a_AR = $(AR) $(ARFLAGS) sparc_libslite931_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_40) sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS) sparc_libslite934_a_AR = $(AR) $(ARFLAGS) sparc_libslite934_a_LIBADD = @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS = \ -@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_39) +@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@ $(am__objects_40) sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS) sparc_libsplet701_a_AR = $(AR) $(ARFLAGS) sparc_libsplet701_a_LIBADD = @@ -1446,11 +1477,11 @@ v850_libsim_a_LIBADD = v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS) visium_libdebug_a_AR = $(AR) $(ARFLAGS) visium_libdebug_a_LIBADD = -@CONFIG_VISIUM_TRUE@am__objects_40 = getpid.$(OBJEXT) kill.$(OBJEXT) \ +@CONFIG_VISIUM_TRUE@am__objects_41 = getpid.$(OBJEXT) kill.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-gdb.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/io-stubs.$(OBJEXT) \ @CONFIG_VISIUM_TRUE@ visium/sbrk.$(OBJEXT) -@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_40) \ +@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_41) \ @CONFIG_VISIUM_TRUE@ visium/syscalls.$(OBJEXT) visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS) visium_libserial_a_AR = $(AR) $(ARFLAGS) @@ -1470,7 +1501,7 @@ visium_libserial_a_LIBADD = visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS) visium_libsim_a_AR = $(AR) $(ARFLAGS) visium_libsim_a_LIBADD = -@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_40) \ +@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_41) \ @CONFIG_VISIUM_TRUE@ visium/sim-syscalls.$(OBJEXT) visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS) xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS) @@ -1496,13 +1527,13 @@ xstormy16_libsim_a_LIBADD = xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS) xtensa_libgloss_a_AR = $(AR) $(ARFLAGS) xtensa_libgloss_a_LIBADD = -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_41 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_42 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_42 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_43 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_41) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_42) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_42) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__objects_43) xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS) xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS) xtensa_libsys_openocd_a_LIBADD = @@ -1612,6 +1643,7 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ $(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \ $(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ + $(cr16_libh_a_SOURCES) $(cr16_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ $(epiphany_libepiphany_a_SOURCES) $(fr30_libsim_a_SOURCES) \ $(frv_libsim_a_SOURCES) $(ft32_libsim_a_SOURCES) \ @@ -1742,7 +1774,7 @@ ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -VPATH = @srcdir@ $(am__append_126) +VPATH = @srcdir@ $(am__append_129) AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1852,7 +1884,6 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ -runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -1869,7 +1900,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I . -I .. -I ../config info_TEXINFOS = $(am__append_1) -CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_132) +CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_135) PHONY = SUBDIRS = @subdirs@ . srcroot = $(top_srcdir)/.. @@ -1877,38 +1908,39 @@ tooldir = $(exec_prefix)/$(target_alias) multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ $(am__append_8) $(am__append_13) $(am__append_15) \ - $(am__append_18) $(am__append_22) $(am__append_23) \ + $(am__append_18) $(am__append_21) $(am__append_25) \ $(am__append_26) $(am__append_29) $(am__append_32) \ - $(am__append_33) $(am__append_36) $(am__append_39) \ - $(am__append_42) $(am__append_46) $(am__append_48) \ - $(am__append_51) $(am__append_52) $(am__append_55) \ - $(am__append_56) $(am__append_57) $(am__append_60) \ - $(am__append_61) $(am__append_64) $(am__append_68) \ - $(am__append_69) $(am__append_70) $(am__append_75) \ - $(am__append_76) $(am__append_79) $(am__append_82) \ - $(am__append_85) $(am__append_87) $(am__append_91) \ - $(am__append_94) $(am__append_96) $(am__append_99) \ + $(am__append_35) $(am__append_36) $(am__append_39) \ + $(am__append_42) $(am__append_45) $(am__append_49) \ + $(am__append_51) $(am__append_54) $(am__append_55) \ + $(am__append_58) $(am__append_59) $(am__append_60) \ + $(am__append_63) $(am__append_64) $(am__append_67) \ + $(am__append_71) $(am__append_72) $(am__append_73) \ + $(am__append_78) $(am__append_79) $(am__append_82) \ + $(am__append_85) $(am__append_88) $(am__append_90) \ + $(am__append_94) $(am__append_97) $(am__append_99) \ $(am__append_102) $(am__append_105) $(am__append_108) \ - $(am__append_110) $(am__append_115) $(am__append_117) \ - $(am__append_120) $(am__append_123) $(am__append_128) \ - $(am__append_133) $(am__append_136) $(am__append_138) \ - $(am__append_143) + $(am__append_111) $(am__append_113) $(am__append_118) \ + $(am__append_120) $(am__append_123) $(am__append_126) \ + $(am__append_131) $(am__append_136) $(am__append_139) \ + $(am__append_141) $(am__append_146) multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \ $(am__append_9) $(am__append_11) $(am__append_20) \ - $(am__append_21) $(am__append_25) $(am__append_28) \ - $(am__append_31) $(am__append_35) $(am__append_38) \ - $(am__append_41) $(am__append_43) $(am__append_47) \ - $(am__append_49) $(am__append_54) $(am__append_59) \ - $(am__append_63) $(am__append_66) $(am__append_72) \ - $(am__append_73) $(am__append_78) $(am__append_81) \ - $(am__append_84) $(am__append_86) $(am__append_90) \ - $(am__append_93) $(am__append_95) $(am__append_98) \ + $(am__append_23) $(am__append_24) $(am__append_28) \ + $(am__append_31) $(am__append_34) $(am__append_38) \ + $(am__append_41) $(am__append_44) $(am__append_46) \ + $(am__append_50) $(am__append_52) $(am__append_57) \ + $(am__append_62) $(am__append_66) $(am__append_69) \ + $(am__append_75) $(am__append_76) $(am__append_81) \ + $(am__append_84) $(am__append_87) $(am__append_89) \ + $(am__append_93) $(am__append_96) $(am__append_98) \ $(am__append_101) $(am__append_104) $(am__append_107) \ - $(am__append_109) $(am__append_112) $(am__append_114) \ - $(am__append_119) $(am__append_122) $(am__append_125) \ - $(am__append_130) $(am__append_135) $(am__append_137) + $(am__append_110) $(am__append_112) $(am__append_115) \ + $(am__append_117) $(am__append_122) $(am__append_125) \ + $(am__append_128) $(am__append_133) $(am__append_138) \ + $(am__append_140) includetooldir = $(tooldir)/include -includetool_DATA = $(am__append_16) $(am__append_89) +includetool_DATA = $(am__append_16) $(am__append_92) includesystooldir = $(tooldir)/include/sys includesystool_DATA = $(am__append_17) @@ -1922,17 +1954,17 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst / # A fake library so automake will generate rules for plain objects that we want # to install (e.g. our crt0.o objects). noinst_LIBRARIES = libobjs.a -libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_24) \ - $(am__append_27) $(am__append_30) $(am__append_34) \ - $(am__append_37) $(am__append_40) $(am__append_44) \ - $(am__append_50) $(am__append_53) $(am__append_58) \ - $(am__append_62) $(am__append_65) $(am__append_71) \ - $(am__append_77) $(am__append_80) $(am__append_83) \ - $(am__append_88) $(am__append_92) $(am__append_97) \ +libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_22) \ + $(am__append_27) $(am__append_30) $(am__append_33) \ + $(am__append_37) $(am__append_40) $(am__append_43) \ + $(am__append_47) $(am__append_53) $(am__append_56) \ + $(am__append_61) $(am__append_65) $(am__append_68) \ + $(am__append_74) $(am__append_80) $(am__append_83) \ + $(am__append_86) $(am__append_91) $(am__append_95) \ $(am__append_100) $(am__append_103) $(am__append_106) \ - $(am__append_111) $(am__append_116) $(am__append_118) \ - $(am__append_121) $(am__append_124) $(am__append_129) \ - $(am__append_134) + $(am__append_109) $(am__append_114) $(am__append_119) \ + $(am__append_121) $(am__append_124) $(am__append_127) \ + $(am__append_132) $(am__append_137) FLAGS_TO_PASS = \ "CC=$(CC)" \ "CFLAGS=$(CFLAGS)" \ @@ -2043,6 +2075,33 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_BFIN_TRUE@ $(AM_CPPFLAGS) \ @CONFIG_BFIN_TRUE@ $(bfin_CPPFLAGS) +@CONFIG_CR16_TRUE@cr16_libh_a_SOURCES = \ +@CONFIG_CR16_TRUE@ cr16/intable.c \ +@CONFIG_CR16_TRUE@ cr16/dvz_hndl.c \ +@CONFIG_CR16_TRUE@ cr16/flg_hndl.c \ +@CONFIG_CR16_TRUE@ cr16/iad_hndl.c \ +@CONFIG_CR16_TRUE@ cr16/svc_hndl.c \ +@CONFIG_CR16_TRUE@ cr16/und_hndl.c + +@CONFIG_CR16_TRUE@cr16_libsim_a_SOURCES = \ +@CONFIG_CR16_TRUE@ cr16/_exit.c \ +@CONFIG_CR16_TRUE@ cr16/close.c \ +@CONFIG_CR16_TRUE@ cr16/_getenv.c \ +@CONFIG_CR16_TRUE@ cr16/lseek.c \ +@CONFIG_CR16_TRUE@ cr16/open.c \ +@CONFIG_CR16_TRUE@ cr16/read.c \ +@CONFIG_CR16_TRUE@ cr16/_rename.c \ +@CONFIG_CR16_TRUE@ cr16/sbrk.c \ +@CONFIG_CR16_TRUE@ cr16/time.c \ +@CONFIG_CR16_TRUE@ cr16/unlink.c \ +@CONFIG_CR16_TRUE@ cr16/write.c \ +@CONFIG_CR16_TRUE@ cr16/stat.c \ +@CONFIG_CR16_TRUE@ cr16/putnum.c \ +@CONFIG_CR16_TRUE@ cr16/kill.c \ +@CONFIG_CR16_TRUE@ cr16/getpid.c \ +@CONFIG_CR16_TRUE@ cr16/isatty.c \ +@CONFIG_CR16_TRUE@ cr16/fstat.c + @CONFIG_CSKY_TRUE@csky_libsemi_a_SOURCES = \ @CONFIG_CSKY_TRUE@ csky/io-semi.S \ @CONFIG_CSKY_TRUE@ csky/sbrk.c \ @@ -2856,15 +2915,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_139) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_144) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_142) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_147) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_140) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_145) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_143) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_148) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DQEMU_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_141) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_146) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_144) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_149) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/sim-call.S \ @@ -2872,8 +2931,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ -DOPENOCD_SEMIHOSTING \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_142) \ -@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_147) +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_145) \ +@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ $(am__append_150) @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @@ -2884,7 +2943,7 @@ all: config.h .SUFFIXES: .S .c .dvi .o .obj .ps .s am--refresh: Makefile @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/pru/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/cr16/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/pru/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -2906,7 +2965,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/pru/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): +$(top_srcdir)/../multilib.am $(srcdir)/doc/Makefile.inc $(srcdir)/aarch64/Makefile.inc $(srcdir)/aarch64/cpu-init/Makefile.inc $(srcdir)/arc/Makefile.inc $(srcdir)/arm/Makefile.inc $(srcdir)/arm/cpu-init/Makefile.inc $(srcdir)/bfin/Makefile.inc $(srcdir)/cr16/Makefile.inc $(srcdir)/csky/Makefile.inc $(srcdir)/d30v/Makefile.inc $(srcdir)/epiphany/Makefile.inc $(srcdir)/fr30/Makefile.inc $(srcdir)/frv/Makefile.inc $(srcdir)/ft32/Makefile.inc $(srcdir)/i386/Makefile.inc $(srcdir)/i960/Makefile.inc $(srcdir)/iq2000/Makefile.inc $(srcdir)/libnosys/Makefile.inc $(srcdir)/lm32/Makefile.inc $(srcdir)/m32r/Makefile.inc $(srcdir)/mcore/Makefile.inc $(srcdir)/microblaze/Makefile.inc $(srcdir)/mn10200/Makefile.inc $(srcdir)/mn10300/Makefile.inc $(srcdir)/moxie/Makefile.inc $(srcdir)/msp430/Makefile.inc $(srcdir)/nds32/Makefile.inc $(srcdir)/nios2/Makefile.inc $(srcdir)/or1k/Makefile.inc $(srcdir)/pru/Makefile.inc $(srcdir)/riscv/Makefile.inc $(srcdir)/rl78/Makefile.inc $(srcdir)/rx/Makefile.inc $(srcdir)/sparc/Makefile.inc $(srcdir)/sparc_leon/Makefile.inc $(srcdir)/tic6x/Makefile.inc $(srcdir)/v850/Makefile.inc $(srcdir)/visium/Makefile.inc $(srcdir)/wince/Makefile.inc $(srcdir)/xstormy16/Makefile.inc $(srcdir)/xtensa/Makefile.inc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -2941,8 +3000,6 @@ mips/Makefile: $(top_builddir)/config.status $(top_srcdir)/mips/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ rs6000/Makefile: $(top_builddir)/config.status $(top_srcdir)/rs6000/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -cr16/Makefile: $(top_builddir)/config.status $(top_srcdir)/cr16/Makefile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ cris/Makefile: $(top_builddir)/config.status $(top_srcdir)/cris/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ crx/Makefile: $(top_builddir)/config.status $(top_srcdir)/crx/Makefile.in @@ -3125,6 +3182,68 @@ bfin/libsim.a: $(bfin_libsim_a_OBJECTS) $(bfin_libsim_a_DEPENDENCIES) $(EXTRA_bf $(AM_V_at)-rm -f bfin/libsim.a $(AM_V_AR)$(bfin_libsim_a_AR) bfin/libsim.a $(bfin_libsim_a_OBJECTS) $(bfin_libsim_a_LIBADD) $(AM_V_at)$(RANLIB) bfin/libsim.a +cr16/$(am__dirstamp): + @$(MKDIR_P) cr16 + @: > cr16/$(am__dirstamp) +cr16/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) cr16/$(DEPDIR) + @: > cr16/$(DEPDIR)/$(am__dirstamp) +cr16/intable.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/dvz_hndl.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/flg_hndl.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/iad_hndl.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/svc_hndl.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/und_hndl.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) + +cr16/libh.a: $(cr16_libh_a_OBJECTS) $(cr16_libh_a_DEPENDENCIES) $(EXTRA_cr16_libh_a_DEPENDENCIES) cr16/$(am__dirstamp) + $(AM_V_at)-rm -f cr16/libh.a + $(AM_V_AR)$(cr16_libh_a_AR) cr16/libh.a $(cr16_libh_a_OBJECTS) $(cr16_libh_a_LIBADD) + $(AM_V_at)$(RANLIB) cr16/libh.a +cr16/_exit.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/close.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/_getenv.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/lseek.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/open.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/read.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/_rename.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/sbrk.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/time.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/unlink.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/write.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/stat.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/putnum.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/kill.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/getpid.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/isatty.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/fstat.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) + +cr16/libsim.a: $(cr16_libsim_a_OBJECTS) $(cr16_libsim_a_DEPENDENCIES) $(EXTRA_cr16_libsim_a_DEPENDENCIES) cr16/$(am__dirstamp) + $(AM_V_at)-rm -f cr16/libsim.a + $(AM_V_AR)$(cr16_libsim_a_AR) cr16/libsim.a $(cr16_libsim_a_OBJECTS) $(cr16_libsim_a_LIBADD) + $(AM_V_at)$(RANLIB) cr16/libsim.a csky/$(am__dirstamp): @$(MKDIR_P) csky @: > csky/$(am__dirstamp) @@ -3491,6 +3610,12 @@ bfin/crt0.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \ bfin/$(DEPDIR)/$(am__dirstamp) +cr16/crti.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/crtn.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) +cr16/crt1.$(OBJEXT): cr16/$(am__dirstamp) \ + cr16/$(DEPDIR)/$(am__dirstamp) csky/crt0.$(OBJEXT): csky/$(am__dirstamp) \ csky/$(DEPDIR)/$(am__dirstamp) epiphany/crt0.$(OBJEXT): epiphany/$(am__dirstamp) \ @@ -5103,6 +5228,7 @@ mostlyclean-compile: -rm -f arc/*.$(OBJEXT) -rm -f arm/*.$(OBJEXT) -rm -f bfin/*.$(OBJEXT) + -rm -f cr16/*.$(OBJEXT) -rm -f csky/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT) -rm -f epiphany/*.$(OBJEXT) @@ -5198,6 +5324,32 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/bfin_libsim_a-syscalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@bfin/$(DEPDIR)/sim-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/_getenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/_rename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/crt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/crti.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/crtn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/dvz_hndl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/flg_hndl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/fstat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/getpid.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/iad_hndl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/intable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/isatty.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/kill.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/lseek.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/putnum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/read.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/sbrk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/stat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/svc_hndl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/time.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/und_hndl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/unlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cr16/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-getpid.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@csky/$(DEPDIR)/csky_libsemi_a-io-close.Po@am__quote@ @@ -8668,6 +8820,8 @@ distclean-generic: -rm -f arm/$(am__dirstamp) -rm -f bfin/$(DEPDIR)/$(am__dirstamp) -rm -f bfin/$(am__dirstamp) + -rm -f cr16/$(DEPDIR)/$(am__dirstamp) + -rm -f cr16/$(am__dirstamp) -rm -f csky/$(DEPDIR)/$(am__dirstamp) -rm -f csky/$(am__dirstamp) -rm -f d30v/$(DEPDIR)/$(am__dirstamp) @@ -8754,7 +8908,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) cr16/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-local distclean-tags @@ -8898,7 +9052,7 @@ installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) + -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) cr16/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-local diff --git a/libgloss/configure b/libgloss/configure index 722106ae3a..a49f586386 100755 --- a/libgloss/configure +++ b/libgloss/configure @@ -716,6 +716,8 @@ CONFIG_D30V_FALSE CONFIG_D30V_TRUE CONFIG_CSKY_FALSE CONFIG_CSKY_TRUE +CONFIG_CR16_FALSE +CONFIG_CR16_TRUE CONFIG_BFIN_FALSE CONFIG_BFIN_TRUE CONFIG_ARM_FALSE @@ -792,7 +794,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -871,7 +872,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1124,15 +1124,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1270,7 +1261,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1423,7 +1414,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -2905,9 +2895,7 @@ case "${target}" in config_bfin=true ;; cr16-*-*) - ac_config_files="$ac_config_files cr16/Makefile" - - subdirs="$subdirs cr16" + config_cr16=true ;; cris-*-* | crisv32-*-*) ac_config_files="$ac_config_files cris/Makefile" @@ -3043,6 +3031,14 @@ else CONFIG_BFIN_FALSE= fi + if test x$config_cr16 = xtrue; then + CONFIG_CR16_TRUE= + CONFIG_CR16_FALSE='#' +else + CONFIG_CR16_TRUE='#' + CONFIG_CR16_FALSE= +fi + if test x$config_csky = xtrue; then CONFIG_CSKY_TRUE= CONFIG_CSKY_FALSE='#' @@ -5815,6 +5811,10 @@ if test -z "${CONFIG_BFIN_TRUE}" && test -z "${CONFIG_BFIN_FALSE}"; then as_fn_error $? "conditional \"CONFIG_BFIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_CR16_TRUE}" && test -z "${CONFIG_CR16_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_CR16\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CONFIG_CSKY_TRUE}" && test -z "${CONFIG_CSKY_FALSE}"; then as_fn_error $? "conditional \"CONFIG_CSKY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6612,7 +6612,6 @@ do "pa/Makefile") CONFIG_FILES="$CONFIG_FILES pa/Makefile" ;; "mips/Makefile") CONFIG_FILES="$CONFIG_FILES mips/Makefile" ;; "rs6000/Makefile") CONFIG_FILES="$CONFIG_FILES rs6000/Makefile" ;; - "cr16/Makefile") CONFIG_FILES="$CONFIG_FILES cr16/Makefile" ;; "cris/Makefile") CONFIG_FILES="$CONFIG_FILES cris/Makefile" ;; "crx/Makefile") CONFIG_FILES="$CONFIG_FILES crx/Makefile" ;; "mep/Makefile") CONFIG_FILES="$CONFIG_FILES mep/Makefile" ;; diff --git a/libgloss/configure.ac b/libgloss/configure.ac index 79457cc794..be7cb1212f 100644 --- a/libgloss/configure.ac +++ b/libgloss/configure.ac @@ -116,8 +116,7 @@ case "${target}" in config_bfin=true ;; cr16-*-*) - AC_CONFIG_FILES([cr16/Makefile]) - subdirs="$subdirs cr16" + config_cr16=true ;; cris-*-* | crisv32-*-*) AC_CONFIG_FILES([cris/Makefile]) @@ -218,7 +217,7 @@ AC_SUBST(subdirs) dnl These subdirs have converted to non-recursive make. Hopefully someday all dnl the ports above will too! m4_foreach_w([SUBDIR], [ - aarch64 arc arm bfin csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 + aarch64 arc arm bfin cr16 csky d30v epiphany fr30 frv ft32 i386 i960 iq2000 libnosys lm32 m32r mcore microblaze mn10200 mn10300 moxie msp430 nds32 nios2 or1k pru riscv rl78 rx sparc sparc_leon tic6x v850 visium diff --git a/libgloss/cr16/Makefile.in b/libgloss/cr16/Makefile.in deleted file mode 100644 index 5416651880..0000000000 --- a/libgloss/cr16/Makefile.in +++ /dev/null @@ -1,158 +0,0 @@ -# -# - -DESTDIR = - -VPATH = @srcdir@ @srcdir@/.. -srcdir = @srcdir@ -objdir = . -srcroot = $(srcdir)/../.. -objroot = $(objdir)/../.. - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ - -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(exec_prefix)/$(target_alias) - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -# Multilib support variables. -# TOP is used instead of MULTI{BUILD,SRC}TOP. -MULTIDIRS = -MULTISUBDIR = - -SHELL = /bin/sh - -mkinstalldirs = $(SHELL) $(srcroot)/mkinstalldirs - -CC = @CC@ - -AS = @AS@ -AR = @AR@ -LD = @LD@ -RANLIB = @RANLIB@ - -OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \ - then echo ${objroot}/../binutils/objdump ; \ - else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi` -OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \ - then echo ${objroot}/../binutils/objcopy ; \ - else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi` - -# Here is all of the handlers stuff -H_SCRIPTS = -H_BSP = libh.a -H_OBJS = intable.o dvz_hndl.o flg_hndl.o iad_hndl.o svc_hndl.o und_hndl.o -H_TEST = hndl-test -H_INSTALL = install-hndl - -# Here is all of the simulator stuff -SIM_SCRIPTS = sim.ld -SIM_BSP = libsim.a -SIM_OBJS = _exit.o close.o _getenv.o lseek.o open.o read.o \ - _rename.o sbrk.o time.o unlink.o write.o \ - stat.o putnum.o kill.o getpid.o isatty.o fstat.o -SIM_TEST = sim-test -SIM_INSTALL = install-sim - -# Here is all of the CRT stuff -CRT = crti.o crtn.o crt1.o -CRT_INSTALL = install-crt - -# Host specific makefile fragment comes in here. -@host_makefile_frag@ - -# -# build a test program for each target board. Just trying to get -# it to link is a good test, so we ignore all the errors for now. -# -all: ${CRT} ${SIM_BSP} ${H_BSP} - -# -# here's where we build the board support packages for each target -# -${H_BSP}: ${H_OBJS} - ${AR} ${ARFLAGS} ${H_BSP} ${H_OBJS} - ${RANLIB} ${H_BSP} - -${SIM_BSP}: ${SIM_OBJS} - ${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS} - ${RANLIB} ${SIM_BSP} - -# -# here's where we build the test programs for each target -# -.PHONY: test -test: ${SIM_TEST} ${H_TEST} - -hndl-test: hndl-test.x hndl-test.dis - -hndl-test.x: test.o ${H_BSP} - ${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \ - test.o \ - -o hndl-test.x ${LIBS_FOR_TARGET} -lc ${H_BSP} -Wl,-T${SIM_SCRIPTS} - -hndl-test.dis: hndl-test.x - ${OBJDUMP} -d hndl-test.x > hndl-test.dis - - -sim-test: sim-test.x sim-test.dis - -sim-test.x: test.o ${SIM_BSP} - ${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \ - test.o \ - -o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP} -Wl,-T${SIM_SCRIPTS} - -sim-test.dis: sim-test.x - ${OBJDUMP} -d sim-test.x > sim-test.dis - -# -# -# -.c.S: - ${CC} ${CFLAGS_FOR_TARGET} -c $< - -clean mostlyclean: - rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(H_BSP) - -distclean maintainer-clean realclean: clean - rm -f Makefile *~ - -.PHONY: install info install-info clean-info -install: ${CRT_INSTALL} ${SIM_INSTALL} ${H_INSTALL} - -install-crt: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - set -e; for x in ${CRT} ; do\ - ${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - -install-sim: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - for x in ${SIM_BSP} ; do\ - ${INSTALL_PROGRAM} $${x} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - for x in ${SIM_SCRIPTS}; do\ - ${INSTALL_DATA} ${srcdir}/$${x} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - -install-hndl: - ${mkinstalldirs} ${DESTDIR}${tooldir}/lib${MULTISUBDIR} - for x in ${H_BSP}; do\ - ${INSTALL_PROGRAM} $${x} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \ - done - -doc: -info: -install-info: -clean-info: - -Makefile: Makefile.in ../config.status - cd .. && $(SHELL) config.status diff --git a/libgloss/cr16/Makefile.inc b/libgloss/cr16/Makefile.inc new file mode 100644 index 0000000000..d92302758f --- /dev/null +++ b/libgloss/cr16/Makefile.inc @@ -0,0 +1,40 @@ +multilibtool_DATA += \ + %D%/crti.o \ + %D%/crtn.o \ + %D%/crt1.o +libobjs_a_SOURCES += \ + %D%/crti.S \ + %D%/crtn.S \ + %D%/crt1.S + +multilibtool_LIBRARIES += %D%/libh.a +%C%_libh_a_SOURCES = \ + %D%/intable.c \ + %D%/dvz_hndl.c \ + %D%/flg_hndl.c \ + %D%/iad_hndl.c \ + %D%/svc_hndl.c \ + %D%/und_hndl.c + +multilibtool_DATA += \ + %D%/sim.ld + +multilibtool_LIBRARIES += %D%/libsim.a +%C%_libsim_a_SOURCES = \ + %D%/_exit.c \ + %D%/close.c \ + %D%/_getenv.c \ + %D%/lseek.c \ + %D%/open.c \ + %D%/read.c \ + %D%/_rename.c \ + %D%/sbrk.c \ + %D%/time.c \ + %D%/unlink.c \ + %D%/write.c \ + %D%/stat.c \ + %D%/putnum.c \ + %D%/kill.c \ + %D%/getpid.c \ + %D%/isatty.c \ + %D%/fstat.c From 15140d6df667a71e660dc9da9ca9071fa3c5dbbd Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 16 Jan 2024 16:12:51 +0000 Subject: [PATCH 613/767] Cygwin: Don't terminate via dumper A process which is exiting due to a core dumping signal doesn't propagate the correct exist status after dumping core, because 'dumper' itself forcibly terminates the process. Use 'dumper -n' to avoid killing the dumped process, so we continue to the end of signal_exit(), to exit with the 128+signal exit status. Busy-wait in exec_prepared_command() in an attempt to reliably notice the dumper attaching, so we don't get stuck there. Also: document these important facts for custom uses of error_start. --- winsup/cygwin/exceptions.cc | 7 +++---- winsup/doc/cygwinenv.xml | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 8b1c5493ef..0e1a804ca4 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -149,7 +149,7 @@ dumper_init (void) /* Calculate the length of the command, allowing for an appended DWORD PID and terminating null */ - int cmd_len = 1 + wcslen(dll_dir) + 11 + 2 + 1 + wcslen(global_progname) + 1 + 10 + 1; + int cmd_len = 1 + wcslen(dll_dir) + 11 + 5 + 1 + wcslen(global_progname) + 1 + 10 + 1; if (cmd_len > 32767) { /* If this comes to more than the 32,767 characters CreateProcess() can @@ -163,7 +163,7 @@ dumper_init (void) cp = wcpcpy (cp, L"\""); cp = wcpcpy (cp, dll_dir); cp = wcpcpy (cp, L"\\dumper.exe"); - cp = wcpcpy (cp, L"\" "); + cp = wcpcpy (cp, L"\" -n "); cp = wcpcpy (cp, L"\""); cp = wcpcpy (cp, global_progname); wcscat (cp, L"\""); @@ -570,9 +570,8 @@ int exec_prepared_command (PWCHAR command) system_printf ("Failed to start, %E"); else { - SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_IDLE); while (!being_debugged ()) - Sleep (1); + Sleep (0); Sleep (2000); } diff --git a/winsup/doc/cygwinenv.xml b/winsup/doc/cygwinenv.xml index d97f2b77d6..05672c404e 100644 --- a/winsup/doc/cygwinenv.xml +++ b/winsup/doc/cygwinenv.xml @@ -46,6 +46,12 @@ to the command as arguments. Note: This has no effect if a debugger is already attached when the fatal error occurs. + + Note: The command invoked must either (i) attach to the errored process with + DebugActiveProcess(), or (ii) forcibly terminate the + errored process (with TerminateProcess() or similar), as + otherwise the errored process will wait forever for a debugger to attach. + From 2c5433e5da8216aaf7458e50c63683c68fb0d3e8 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 24 Jan 2024 22:33:12 +0900 Subject: [PATCH 614/767] Cygwin: pthread: Fix handle leak in pthread_once. If pthread_once() is called with pthread_once_t initialized using PTREAD_ONCE_INIT, pthread_once does not release pthread_mutex used internally. This patch fixes that by calling pthread_mutex_destroy() in the thread which has called init_routine. Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/thread.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index 7bb4f9fc83..0f8327831d 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -2060,6 +2060,9 @@ pthread::once (pthread_once_t *once_control, void (*init_routine) (void)) { init_routine (); once_control->state = 1; + pthread_mutex_unlock (&once_control->mutex); + while (pthread_mutex_destroy (&once_control->mutex) == EBUSY); + return 0; } /* Here we must remove our cancellation handler */ pthread_mutex_unlock (&once_control->mutex); From 4d9808d404c21c73ff4f96547d2d5b6174323881 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 23 Jan 2024 23:32:32 -0500 Subject: [PATCH 615/767] libgloss: start a MAINTAINERS file --- libgloss/MAINTAINERS | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 libgloss/MAINTAINERS diff --git a/libgloss/MAINTAINERS b/libgloss/MAINTAINERS new file mode 100644 index 0000000000..7c64baabc1 --- /dev/null +++ b/libgloss/MAINTAINERS @@ -0,0 +1,13 @@ + libgloss Maintainers + +libgloss is part of Newlib project, so see the file newlib/MAINTAINERS +for more people. This file is intended to find libgloss-specific people +where it makes sense. + + + Blanket Write Privileges + +The official maintainers of libgloss: + +Jeff Johnston jjohnstn@redhat.com +Mike Frysinger vapier@gentoo.org From 1c13ca67b506df56c512d1a706eb6f45d9b4da38 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Tue, 23 Jan 2024 16:07:34 +0000 Subject: [PATCH 616/767] Cygwin: Add a timeout to ensure we don't wait forever for dumper --- winsup/cygwin/exceptions.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 0e1a804ca4..a2a6f9d4c5 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -540,6 +540,9 @@ int exec_prepared_command (PWCHAR command) } FreeEnvironmentStringsW (rawenv); + /* timeout from waiting for debugger to attach after 10 seconds */ + ULONGLONG timeout = GetTickCount64() + 10*1000; + console_printf ("*** starting '%W' for pid %u, tid %u\r\n", command, cygwin_pid (GetCurrentProcessId ()), GetCurrentThreadId ()); @@ -562,7 +565,8 @@ int exec_prepared_command (PWCHAR command) we continue or not. Note that this is still racy: if the error_start process does it's work too - fast, we don't notice that it attached and get stuck here. + fast, we don't notice that it attached and get stuck here. So we also + apply a timeout to ensure we exit eventually. */ *dbg_end = L'\0'; @@ -570,7 +574,7 @@ int exec_prepared_command (PWCHAR command) system_printf ("Failed to start, %E"); else { - while (!being_debugged ()) + while (!being_debugged () && GetTickCount64() < timeout) Sleep (0); Sleep (2000); } From 1f68e88f0dfdac54d71ed0fd2c3f9a9f65636e06 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 29 Jan 2024 13:33:05 +0100 Subject: [PATCH 617/767] Cygwin: redefine how to recognize forkee state So far the global variable in_forkee only indicated if the process is the child process during fork(2) itself. However, we need an indicator accessible from plain C code in newlib, allowing to check for a process being a forked process all the time, after fork(2) succeeded. Redefine bool in_forkee to int __in_forkee to allow exposing it to newlib. Redefine how it indicates fork state (not forked, forking, forked). Signed-off-by: Corinna Vinschen --- winsup/cygwin/dcrt0.cc | 18 ++++++++++-------- winsup/cygwin/dll_init.cc | 8 ++++---- winsup/cygwin/fork.cc | 2 +- winsup/cygwin/globals.cc | 13 +++++++++++-- winsup/cygwin/mm/heap.cc | 2 +- 5 files changed, 27 insertions(+), 16 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 17c9be731a..fc1eec76a4 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -64,7 +64,7 @@ do_global_dtors () static void do_global_ctors (void (**in_pfunc)(), int force) { - if (!force && in_forkee) + if (!force && __in_forkee == FORKING) return; // inherit constructed stuff from parent pid /* Run ctors backwards, so skip the first entry and find how many @@ -532,7 +532,7 @@ get_cygwin_startup_info () switch (res->type) { case _CH_FORK: - in_forkee = true; + __in_forkee = FORKING; should_be_cb = sizeof (child_info_fork); fallthrough; case _CH_SPAWN: @@ -803,7 +803,7 @@ dll_crt0_1 (void *) _my_tls.incyg++; /* Inherit "parent" exec'ed process sigmask */ - if (spawn_info && !in_forkee) + if (spawn_info && __in_forkee != FORKING) _my_tls.sigmask = spawn_info->sigmask; if (dynamically_loaded) @@ -840,7 +840,7 @@ dll_crt0_1 (void *) /* Initialize pthread mainthread when not forked and it is safe to call new, otherwise it is reinitalized in fixup_after_fork */ - if (!in_forkee) + if (__in_forkee != FORKING) { pthread::init_mainthread (); _pei386_runtime_relocator (user_data); @@ -851,7 +851,7 @@ dll_crt0_1 (void *) #endif cygbench ("pre-forkee"); - if (in_forkee) + if (__in_forkee == FORKING) { /* Make sure to restore the TEB's stack info. If guardsize is -1 the stack has been provided by the application and must not be deallocated @@ -1018,7 +1018,7 @@ _dll_crt0 () under our own control and avoids collision with the OS. */ if (!dynamically_loaded) { - if (!in_forkee) + if (__in_forkee != FORKING) { /* Must be static since it's referenced after the stack and frame pointer registers have been changed. */ @@ -1056,7 +1056,7 @@ void dll_crt0 (per_process *uptr) { /* Set the local copy of the pointer into the user space. */ - if (!in_forkee && uptr && uptr != user_data) + if (__in_forkee != FORKING && uptr && uptr != user_data) { memcpy (user_data, uptr, per_process_overwrite); *(user_data->impure_ptr_ptr) = _GLOBAL_REENT; @@ -1246,7 +1246,9 @@ extern "C" void vapi_fatal (const char *fmt, va_list ap) { char buf[4096]; - int n = __small_sprintf (buf, "%P: *** fatal error %s- ", in_forkee ? "in forked process " : ""); + int n = __small_sprintf (buf, "%P: *** fatal error %s- ", + (__in_forkee == FORKING) + ? "in forked process " : ""); __small_vsprintf (buf + n, fmt, ap); va_end (ap); strace.prntf (_STRACE_SYSTEM, NULL, "%s", buf); diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc index b486eaa1f8..1a047511f8 100644 --- a/winsup/cygwin/dll_init.cc +++ b/winsup/cygwin/dll_init.cc @@ -39,7 +39,7 @@ static bool dll_global_dtors_recorded; /* We need the in_load_after_fork flag so dll_dllcrt0_1 can decide at fork time if this is a linked DLL or a dynamically loaded DLL. In either case, - both, cygwin_finished_initializing and in_forkee are true, so they are not + both, cygwin_finished_initializing and __in_forkee are true, so they are not sufficient to discern the situation. */ static bool NO_COPY in_load_after_fork; @@ -161,7 +161,7 @@ dll_global_dtors () /* Don't attempt to call destructors if we're still in fork processing since that likely means fork is failing and everything will not have been set up. */ - if (in_forkee) + if (__in_forkee == FORKING) return; int recorded = dll_global_dtors_recorded; dll_global_dtors_recorded = false; @@ -205,7 +205,7 @@ dll::init () int ret = 1; /* Don't run constructors or the "main" if we've forked. */ - if (!in_forkee) + if (__in_forkee != FORKING) { /* global contructors */ p.run_ctors (); @@ -564,7 +564,7 @@ dll_list::detach (void *retaddr) /* Don't attempt to call destructors if we're still in fork processing since that likely means fork is failing and everything will not have been set up. */ - if (!myself || in_forkee) + if (!myself || __in_forkee == FORKING) return; guard (true); if ((d = find (retaddr))) diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index e553c015a3..0742ab3633 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -639,7 +639,7 @@ dofork (void **proc, bool *with_forkables) else { res = grouped.child (stackp); - in_forkee = false; + __in_forkee = FORKED; ischild = true; /* might have been reset by fork mem copy */ } } diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index c259ce18fc..a94aa5694e 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -73,8 +73,6 @@ bool wincmdln; winsym_t allow_winsymlinks = WSYM_default; bool disable_pcon; -bool NO_COPY in_forkee; - /* Taken from BSD libc: This variable is zero until a process has created a pthread. It is used to avoid calling locking functions in libc when they are not required. @@ -183,6 +181,17 @@ extern "C" { /* impure_ptr */ _GLOBAL_REENT, }; int _check_for_executable = true; + + /* This was a bool initially, just indicating if we're in the forked + child during fork(2). However, we need an indicator accessible from + plain C we can ask if we're in a forked child even after fork(2) + finished. Therefore redefined how we use this variable. */ + enum { + NOT_FORKED = 0, + FORKING = 1, + FORKED = 2 + }; + int NO_COPY __in_forkee; }; int NO_COPY __api_fatal_exit_val = 1; diff --git a/winsup/cygwin/mm/heap.cc b/winsup/cygwin/mm/heap.cc index 72ea486f38..267f4ffa7d 100644 --- a/winsup/cygwin/mm/heap.cc +++ b/winsup/cygwin/mm/heap.cc @@ -154,7 +154,7 @@ user_heap_info::init () if ((reserve_size -= page_const) < allocsize) break; } - if (!p && in_forkee && !fork_info->abort (NULL)) + if (!p && __in_forkee == FORKING && !fork_info->abort (NULL)) api_fatal ("couldn't allocate heap, %E, base %p, top %p, " "reserve_size %ld, allocsize %ld, page_const %d", base, top, From 030a762535c1e18bf5a7ecc73b0f49898a30b157 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 29 Jan 2024 13:38:14 +0100 Subject: [PATCH 618/767] Cygwin: fix arc4random after fork(2) After using fork(), arc4random does not reseed itself, which causes the results to become predictable. Activate droppingfork-recognition Fixes: e0fc33322d50 ("Delete Cygwin's arc4random in favor of new Newlib implementation") Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/machine/_arc4random.h | 11 +++++++++++ winsup/cygwin/release/3.5.0 | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/winsup/cygwin/include/machine/_arc4random.h b/winsup/cygwin/include/machine/_arc4random.h index 2078c35972..fd3970f64a 100644 --- a/winsup/cygwin/include/machine/_arc4random.h +++ b/winsup/cygwin/include/machine/_arc4random.h @@ -25,4 +25,15 @@ extern int __isthreaded; __lock_release (_arc4random_mutex); \ } while (0) +static inline void +_arc4random_forkdetect(void) +{ + extern int __in_forkee; + + if (__in_forkee) + rs = NULL; +} +#define _ARC4RANDOM_FORKDETECT() _arc4random_forkdetect () + +__END_DECLS #endif /* _MACHINE_ARC4RANDOM_H */ diff --git a/winsup/cygwin/release/3.5.0 b/winsup/cygwin/release/3.5.0 index 611636b902..d756c07853 100644 --- a/winsup/cygwin/release/3.5.0 +++ b/winsup/cygwin/release/3.5.0 @@ -67,3 +67,9 @@ What changed: - The default RLIMIT_CORE is now 0, disabling the generation of core dump or stackdump files. + +Fixes: +------ + +- Fix arc4random reseeding after fork(2). + Addresses: https://cygwin.com/pipermail/cygwin/2024-January/255245.html From 497e6eb2c0fadd0d4cb4ed418642832b020b19d4 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Fri, 26 Jan 2024 17:20:37 +0100 Subject: [PATCH 619/767] ssp: add support for _FORTIFY_SOURCE=3 If specified, use __builtin_dynamic_object_size() instead of __builtin_object_size() if supported (GCC 12.0 or later). This enables buffer overflow checks if the buffer size is non-const but known during runtime. Use new macro __ssp_bos_known() instead of the (bos(p) != (size_t)-1) checks. The latter is no longer a compile time constant in all cases. This avoids the generation of unused code. Signed-off-by: Christian Franke --- newlib/libc/include/ssp/ssp.h | 11 ++++++++++- newlib/libc/include/ssp/string.h | 4 ++-- newlib/libc/include/ssp/strings.h | 4 ++-- newlib/libc/include/sys/features.h | 12 +++++++++--- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/newlib/libc/include/ssp/ssp.h b/newlib/libc/include/ssp/ssp.h index 9229086599..49ea5f2dd8 100644 --- a/newlib/libc/include/ssp/ssp.h +++ b/newlib/libc/include/ssp/ssp.h @@ -43,11 +43,20 @@ #define __ssp_inline extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) +#if __SSP_FORTIFY_LEVEL > 2 +#define __ssp_bos(ptr) __builtin_dynamic_object_size(ptr, 1) +#define __ssp_bos0(ptr) __builtin_dynamic_object_size(ptr, 0) +#define __ssp_bos_known(ptr) \ + (__builtin_object_size(ptr, 0) != (size_t)-1 \ + || !__builtin_constant_p(__ssp_bos(ptr))) +#else #define __ssp_bos(ptr) __builtin_object_size(ptr, __SSP_FORTIFY_LEVEL > 1) #define __ssp_bos0(ptr) __builtin_object_size(ptr, 0) +#define __ssp_bos_known(ptr) (__ssp_bos0(ptr) != (size_t)-1) +#endif #define __ssp_check(buf, len, bos) \ - if (bos(buf) != (size_t)-1 && len > bos(buf)) \ + if (__ssp_bos_known(buf) && len > bos(buf)) \ __chk_fail() #define __ssp_decl(rtype, fun, args) \ rtype __ssp_real_(fun) args __asm__(__ASMNAME(#fun)); \ diff --git a/newlib/libc/include/ssp/string.h b/newlib/libc/include/ssp/string.h index 85c4512acf..22b52097cb 100644 --- a/newlib/libc/include/ssp/string.h +++ b/newlib/libc/include/ssp/string.h @@ -49,12 +49,12 @@ __END_DECLS #if __SSP_FORTIFY_LEVEL > 0 #define __ssp_bos_check3(fun, dst, src, len) \ - ((__ssp_bos0(dst) != (size_t)-1) ? \ + (__ssp_bos_known(dst) ? \ __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)) : \ __ ## fun ## _ichk(dst, src, len)) #define __ssp_bos_check2(fun, dst, src) \ - ((__ssp_bos0(dst) != (size_t)-1) ? \ + (__ssp_bos_known(dst) ? \ __builtin___ ## fun ## _chk(dst, src, __ssp_bos0(dst)) : \ __ ## fun ## _ichk(dst, src)) diff --git a/newlib/libc/include/ssp/strings.h b/newlib/libc/include/ssp/strings.h index 13adba1752..be59882ebc 100644 --- a/newlib/libc/include/ssp/strings.h +++ b/newlib/libc/include/ssp/strings.h @@ -37,11 +37,11 @@ #if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112 #define bcopy(src, dst, len) \ - ((__ssp_bos0(dst) != (size_t)-1) ? \ + (__ssp_bos_known(dst) ? \ __builtin___memmove_chk(dst, src, len, __ssp_bos0(dst)) : \ __memmove_ichk(dst, src, len)) #define bzero(dst, len) \ - ((__ssp_bos0(dst) != (size_t)-1) ? \ + (__ssp_bos_known(dst) ? \ __builtin___memset_chk(dst, 0, len, __ssp_bos0(dst)) : \ __memset_ichk(dst, 0, len)) #endif diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h index a7d4bc52d1..6a925c87e9 100644 --- a/newlib/libc/include/sys/features.h +++ b/newlib/libc/include/sys/features.h @@ -104,7 +104,7 @@ extern "C" { * _DEFAULT_SOURCE (or none of the above) * POSIX-1.2008 with BSD and SVr4 extensions * - * _FORTIFY_SOURCE = 1 or 2 + * _FORTIFY_SOURCE = 1, 2 or 3 * Object Size Checking function wrappers */ @@ -247,7 +247,7 @@ extern "C" { * GNU extensions; enabled with _GNU_SOURCE. * * __SSP_FORTIFY_LEVEL - * Object Size Checking; defined to 0 (off), 1, or 2. + * Object Size Checking; defined to 0 (off), 1, 2 or 3. * * In all cases above, "enabled by default" means either by defining * _DEFAULT_SOURCE, or by not defining any of the public feature test macros. @@ -335,7 +335,13 @@ extern "C" { #if _FORTIFY_SOURCE > 0 && !defined(__cplusplus) && !defined(__lint__) && \ (__OPTIMIZE__ > 0 || defined(__clang__)) && __GNUC_PREREQ__(4, 1) && \ !defined(_LIBC) -# if _FORTIFY_SOURCE > 1 +# if _FORTIFY_SOURCE > 2 && defined(__has_builtin) +# if __has_builtin(__builtin_dynamic_object_size) +# define __SSP_FORTIFY_LEVEL 3 +# else +# define __SSP_FORTIFY_LEVEL 2 +# endif +# elif _FORTIFY_SOURCE > 1 # define __SSP_FORTIFY_LEVEL 2 # else # define __SSP_FORTIFY_LEVEL 1 From 6252fd0265347032c46c95367895ddb838856bd2 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 29 Jan 2024 16:42:50 +0100 Subject: [PATCH 620/767] Cygwin: machine/_arc4random.h: Fix copy/paste bug Remove a stray __END_DECLS. It didn't hurt in the only (plain C) file including this header, but still... Fixes: 030a762535c1 ("Cygwin: fix arc4random after fork(2)") Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/machine/_arc4random.h | 1 - 1 file changed, 1 deletion(-) diff --git a/winsup/cygwin/include/machine/_arc4random.h b/winsup/cygwin/include/machine/_arc4random.h index fd3970f64a..2f3347e33a 100644 --- a/winsup/cygwin/include/machine/_arc4random.h +++ b/winsup/cygwin/include/machine/_arc4random.h @@ -35,5 +35,4 @@ _arc4random_forkdetect(void) } #define _ARC4RANDOM_FORKDETECT() _arc4random_forkdetect () -__END_DECLS #endif /* _MACHINE_ARC4RANDOM_H */ From 31f7cd1e433247015c08d43504f09aa70a94b76b Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Mon, 22 Jan 2024 19:11:20 +0100 Subject: [PATCH 621/767] Hide itoa, utoa, __itoa and __utoa in stdlib.h on Cygwin only These functions are non-standard and not exported by Cygwin. Signed-off-by: Christian Franke --- newlib/libc/include/stdlib.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/newlib/libc/include/stdlib.h b/newlib/libc/include/stdlib.h index 15b349440e..fd89f5ba7b 100644 --- a/newlib/libc/include/stdlib.h +++ b/newlib/libc/include/stdlib.h @@ -221,11 +221,13 @@ char * ecvtbuf (double, int, int*, int*, char *); char * fcvtbuf (double, int, int*, int*, char *); char * ecvtf (float,int,int *,int *); #endif +#ifndef __CYGWIN__ char * __itoa (int, char *, int); char * __utoa (unsigned, char *, int); -#if __MISC_VISIBLE +# if __MISC_VISIBLE char * itoa (int, char *, int); char * utoa (unsigned, char *, int); +# endif #endif #if __POSIX_VISIBLE int rand_r (unsigned *__seed); From 23737b04cc52a0473d524661a51779224c0d7b8b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 1 Feb 2024 11:09:16 +0100 Subject: [PATCH 622/767] bump DLL version to 3.5.1 Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 4122125a60..5998b75687 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -11,7 +11,7 @@ details. */ changes to the DLL and is mainly informative in nature. */ #define CYGWIN_VERSION_DLL_MAJOR 3005 -#define CYGWIN_VERSION_DLL_MINOR 0 +#define CYGWIN_VERSION_DLL_MINOR 1 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the combined DLL major and minor numbers. */ From aa73e115242612bf8b5f8670c0c7d398693d1d84 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 2 Feb 2024 13:59:19 +0900 Subject: [PATCH 623/767] Cygwin: console: Fix exit code for non-cygwin process. If non-cygwin process is executed in console, the exit code is not set correctly. This is because the stub process for non-cygwin app crashes in fhandler_console::set_disable_master_thread() due to NULL pointer dereference. This bug was introduced by the commit: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals."), that the pointer cons is accessed before fixing when it is NULL. This patch fixes the issue. Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Reported-by: Johannes Schindelin Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index b924a6bf31..6a42b49491 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -4537,9 +4537,6 @@ fhandler_console::need_console_handler () void fhandler_console::set_disable_master_thread (bool x, fhandler_console *cons) { - const _minor_t unit = cons->get_minor (); - if (con.disable_master_thread == x) - return; if (cons == NULL) { if (cygheap->ctty && cygheap->ctty->get_major () == DEV_CONS_MAJOR) @@ -4547,6 +4544,9 @@ fhandler_console::set_disable_master_thread (bool x, fhandler_console *cons) else return; } + const _minor_t unit = cons->get_minor (); + if (con.disable_master_thread == x) + return; cons->acquire_input_mutex (mutex_timeout); con.disable_master_thread = x; cons->release_input_mutex (); From 9bcfd0604533764f3ebfa5015e182f6db7c8922d Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 3 Feb 2024 00:54:23 +0900 Subject: [PATCH 624/767] Cygwin: console: Avoid slipping past disable_master_thread check. If disable_master_thread flag is set between the code checking that flag not be set and the code acquiring input_mutex, input record is processed once after setting disable_master_thread flag. This patch prevents that. Fixes: d4aacd50e6cf ("Cygwin: console: Add missing input_mutex guard.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 6a42b49491..1c8d383cdd 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -420,6 +420,12 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) } WaitForSingleObject (p->input_mutex, mutex_timeout); + /* Ensure accessing input recored is not disabled. */ + if (con.disable_master_thread) + { + ReleaseMutex (p->input_mutex); + continue; + } total_read = 0; switch (cygwait (p->input_handle, (DWORD) 0)) { @@ -4545,8 +4551,6 @@ fhandler_console::set_disable_master_thread (bool x, fhandler_console *cons) return; } const _minor_t unit = cons->get_minor (); - if (con.disable_master_thread == x) - return; cons->acquire_input_mutex (mutex_timeout); con.disable_master_thread = x; cons->release_input_mutex (); From aa22a43ec0408e6989ae539976f620c26a333a83 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 3 Feb 2024 23:37:46 +0900 Subject: [PATCH 625/767] Cygwin: Document recent bug fix in release note. --- winsup/cygwin/release/3.5.1 | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 winsup/cygwin/release/3.5.1 diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 new file mode 100644 index 0000000000..054988b90c --- /dev/null +++ b/winsup/cygwin/release/3.5.1 @@ -0,0 +1,5 @@ +Bug Fixes +--------- + +- Fix exit code for non-cygwin process running in console. The bug + was introduced in 3.5.0. From aa392df06bb3eb42e07dd68bda2443614ba6a051 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 3 Feb 2024 12:45:29 +0900 Subject: [PATCH 626/767] Cygwin: net: Make if_nametoindex, etc. consistent with if_nameindex. Currently, if_nametoindex() and if_indextoname() handle interface names such as "ethernet_32777", while if_nameindex() returns the names such as "{5AF7ACD0-D52E-4DFC-A4D0-54D3E6D6B2AC}". This patch unifies the interface names to the latter. Fixes: c356901f0d69 ("Rename if_indextoname to cygwin_if_indextoname (analag for if_nametoindex)") Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/autoload.cc | 2 -- winsup/cygwin/net.cc | 31 +++++++++++++++++++++++++++++-- winsup/cygwin/release/3.5.1 | 3 +++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index c1a124c1d1..7e610bdd01 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -462,8 +462,6 @@ LoadDLLfunc (GetNetworkParams, iphlpapi) LoadDLLfunc (GetTcpTable, iphlpapi) LoadDLLfunc (GetTcp6Table, iphlpapi) LoadDLLfunc (GetUdpTable, iphlpapi) -LoadDLLfunc (if_indextoname, iphlpapi) -LoadDLLfunc (if_nametoindex, iphlpapi) LoadDLLfuncEx2 (DiscardVirtualMemory, kernel32, 1, 127) LoadDLLfuncEx (ClosePseudoConsole, kernel32, 1) diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 8840d5ead3..08c584fe53 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -2001,13 +2001,40 @@ get_ifconf (struct ifconf *ifc, int what) extern "C" unsigned cygwin_if_nametoindex (const char *name) { - return (unsigned) ::if_nametoindex (name); + PIP_ADAPTER_ADDRESSES pa0 = NULL, pap; + if (get_adapters_addresses (&pa0, AF_UNSPEC)) + for (pap = pa0; pap; pap = pap->Next) + if (strcmp (name, pap->AdapterName) == 0) + { + free (pa0); + return pap->IfIndex; + } + if (pa0) + free (pa0); + return 0; } extern "C" char * cygwin_if_indextoname (unsigned ifindex, char *ifname) { - return ::if_indextoname (ifindex, ifname); + if (ifindex == 0 || ifname == NULL) + { + set_errno (ENXIO); + return NULL; + } + PIP_ADAPTER_ADDRESSES pa0 = NULL, pap; + if (get_adapters_addresses (&pa0, AF_UNSPEC)) + for (pap = pa0; pap; pap = pap->Next) + if (ifindex == pap->IfIndex) + { + strcpy (ifname, pap->AdapterName); + free (pa0); + return ifname; + } + if (pa0) + free (pa0); + set_errno (ENXIO); + return NULL; } extern "C" struct if_nameindex * diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index 054988b90c..7776d120fb 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -3,3 +3,6 @@ Bug Fixes - Fix exit code for non-cygwin process running in console. The bug was introduced in 3.5.0. + +- Make the interface names handled by if_nametoindex() and if_indextoname() + consistent with that of if_nameindex(). From 6d6e1e354d214ba70981afe8c92cb9c58d33ac54 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Wed, 31 Mar 2021 11:38:41 +0200 Subject: [PATCH 627/767] Cygwin: Do not show Error dialogs by default ...in a non-Cygwin child process. Backported from MSYS2. Downstream commit message follows. In https://github.com/msys2/msys2-runtime/pull/18, we discussed a change that would allow default Windows error handling of spawned processes to kick in (such as registered JIT debuggers). We even agreed that it would make sense to hide this functionality behind a flag, `winjitdebug`. However, when this got upstreamed as 21ec498d7f (cygwin: use CREATE_DEFAULT_ERROR_MODE in spawn, 2020-12-09), that flag was deemed unnecessary. But it would appear that it _is_ necessary: As reported in https://github.com/msys2/MSYS2-packages/pull/2414#issuecomment-810841296 this new behavior is pretty disruptive e.g. in CI scenarios. So let's introduce that `winjitdebug` flag (settable via the environment variable `MSYS`) at long last. Signed-off-by: Johannes Schindelin Signed-off-by: Corinna Vinschen --- winsup/cygwin/environ.cc | 1 + winsup/cygwin/globals.cc | 1 + winsup/cygwin/spawn.cc | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index dca5c5db05..d35b9564b6 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -122,6 +122,7 @@ static struct parse_thing {"wincmdln", {&wincmdln}, setbool, NULL, {{false}, {true}}}, {"winsymlinks", {func: set_winsymlinks}, isfunc, NULL, {{0}, {0}}}, {"disable_pcon", {&disable_pcon}, setbool, NULL, {{false}, {true}}}, + {"winjitdebug", {&winjitdebug}, setbool, NULL, {{false}, {true}}}, {NULL, {0}, setdword, 0, {{0}, {0}}} }; diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index a94aa5694e..d14ea593f6 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -72,6 +72,7 @@ bool reset_com; bool wincmdln; winsym_t allow_winsymlinks = WSYM_default; bool disable_pcon; +bool winjitdebug = false; /* Taken from BSD libc: This variable is zero until a process has created a pthread. It is used diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index dc1c4ac17c..77dc6dff48 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -413,7 +413,7 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, get the default error mode instead of inheriting the mode Cygwin uses. This allows things like Windows Error Reporting/JIT debugging to work with processes launched from a Cygwin shell. */ - if (!real_path.iscygexec ()) + if (winjitdebug && !real_path.iscygexec ()) c_flags |= CREATE_DEFAULT_ERROR_MODE; /* We're adding the CREATE_BREAKAWAY_FROM_JOB flag here to workaround From d56fb66d6f49ad6cba968150611c63f771d817c6 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 3 Feb 2024 19:54:04 +0100 Subject: [PATCH 628/767] Cygwin: reorder list of CYGWIN env var options alphabetically again This has been turned upside down for a short while. Signed-off-by: Corinna Vinschen --- winsup/cygwin/environ.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index d35b9564b6..d4cedcbdfe 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -113,6 +113,7 @@ static struct parse_thing } values[2]; } known[] NO_COPY = { + {"disable_pcon", {&disable_pcon}, setbool, NULL, {{false}, {true}}}, {"error_start", {func: error_start_init}, isfunc, NULL, {{0}, {0}}}, {"export", {&export_settings}, setbool, NULL, {{false}, {true}}}, {"glob", {func: glob_init}, isfunc, NULL, {{0}, {s: "normal"}}}, @@ -120,9 +121,8 @@ static struct parse_thing {"proc_retry", {func: set_proc_retry}, isfunc, NULL, {{0}, {5}}}, {"reset_com", {&reset_com}, setbool, NULL, {{false}, {true}}}, {"wincmdln", {&wincmdln}, setbool, NULL, {{false}, {true}}}, - {"winsymlinks", {func: set_winsymlinks}, isfunc, NULL, {{0}, {0}}}, - {"disable_pcon", {&disable_pcon}, setbool, NULL, {{false}, {true}}}, {"winjitdebug", {&winjitdebug}, setbool, NULL, {{false}, {true}}}, + {"winsymlinks", {func: set_winsymlinks}, isfunc, NULL, {{0}, {0}}}, {NULL, {0}, setdword, 0, {{0}, {0}}} }; From 10e221050fc3fc681e7737ee3925108993ed7eb7 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 3 Feb 2024 19:54:31 +0100 Subject: [PATCH 629/767] Cygwin: document new winjitdebug option Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.1 | 10 ++++++++-- winsup/doc/cygwinenv.xml | 10 ++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index 7776d120fb..81945dbda5 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -1,8 +1,14 @@ -Bug Fixes ---------- +Fixes: +------ - Fix exit code for non-cygwin process running in console. The bug was introduced in 3.5.0. - Make the interface names handled by if_nametoindex() and if_indextoname() consistent with that of if_nameindex(). + +- Revert error handling for non-Cygwin child processes to use Cygwin's + error mode by default. Resetting the error mode to the OS default + error mode is now possible by using the new CYGWIN environment variable + option "winjitdebug". + Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255305.html diff --git a/winsup/doc/cygwinenv.xml b/winsup/doc/cygwinenv.xml index 05672c404e..3c69d5e454 100644 --- a/winsup/doc/cygwinenv.xml +++ b/winsup/doc/cygwinenv.xml @@ -93,6 +93,16 @@ line (truncated to ~32K) will be passed on any processes that it creates in addition to the normal UNIX argv list. Defaults to not set. + +(no)winjitdebug - if set, non-Cygwin executables +started from a Cygwin process will have their error mode reset to the +system default. That means, if they don't call SetErrorMode() explicitl, +the OS will display error dialog boxes in the GUI if some fatal error +occurs. Defaults to not set, so fatal errors in a non-Cygwin child +process will just result in an error code be propagated back to the +parent process. + + winsymlinks:{lnk,native,nativestrict,sys} From 70371d610dde24b4ee8459912f6bfa48eef4b096 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 3 Feb 2024 20:28:46 +0100 Subject: [PATCH 630/767] Cygwin: fix typo in winjitdebug description Signed-off-by: Corinna Vinschen --- winsup/doc/cygwinenv.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/winsup/doc/cygwinenv.xml b/winsup/doc/cygwinenv.xml index 3c69d5e454..fcb6e22485 100644 --- a/winsup/doc/cygwinenv.xml +++ b/winsup/doc/cygwinenv.xml @@ -96,11 +96,11 @@ in addition to the normal UNIX argv list. Defaults to not set. (no)winjitdebug - if set, non-Cygwin executables started from a Cygwin process will have their error mode reset to the -system default. That means, if they don't call SetErrorMode() explicitl, -the OS will display error dialog boxes in the GUI if some fatal error -occurs. Defaults to not set, so fatal errors in a non-Cygwin child -process will just result in an error code be propagated back to the -parent process. +system default. That means, if they don't call SetErrorMode() +explicitly, the OS will display error dialog boxes in the GUI if some +fatal error occurs. Defaults to not set, so fatal errors in a +non-Cygwin child process will just result in an error code be propagated +back to the parent process. From a6ac7b413891b9fa4fce58bb1fb4729798b7c8a1 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 13 Feb 2024 11:17:46 +0900 Subject: [PATCH 631/767] Cygwin: pty: Fix handle leak in master process. If non-cygwin process is started in pty, closing from_master_nat pipe handle was missing in fhandler_pty_slave::input_transfer(). This occured because the handle was duplicated but not closed. https://github.com/msys2/msys2-runtime/issues/198 Fixes: 29431fcb5b14 ("Cygwin: pty: Inherit typeahead data between two input pipes.") Reported-by: Hakkin Lain Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 1 + winsup/cygwin/release/3.5.1 | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 3f4bc56b52..c5c7921443 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -3995,6 +3995,7 @@ fhandler_pty_slave::transfer_input (tty::xfer_dir dir, HANDLE from, tty *ttyp, transfered = true;; } } + CloseHandle (to); /* Fix input_available_event which indicates availability in cyg pipe. */ if (dir == tty::to_nat) /* all data is transfered to nat pipe, diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index 81945dbda5..715fcf74d4 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -12,3 +12,7 @@ Fixes: error mode is now possible by using the new CYGWIN environment variable option "winjitdebug". Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255305.html + +- Fix handle leak in pty master which occurs when non-cygwin process + is started in pty. + Addresses: https://github.com/msys2/msys2-runtime/issues/198 From 73cd80c976e1bc4af5f63c02be94a112dd2cfecc Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 13 Feb 2024 11:36:05 +0900 Subject: [PATCH 632/767] Cygwin: pty: Fix potential handle leak regarding CallNamedPipe(). In pty master_thread, 6 handles are duplicated when CallNamedPipe() requests that. Though some of them are not used so should be closed, they were not. This causes handle leak potentially. Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index c5c7921443..d31d30b1fc 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -936,6 +936,8 @@ fhandler_pty_slave::open (int flags, mode_t) errmsg = "can't call master, %E"; goto err; } + CloseHandle (repl.to_slave_nat); /* not used. */ + CloseHandle (repl.to_slave); /* not used. */ from_master_nat_local = repl.from_master_nat; from_master_local = repl.from_master; to_master_nat_local = repl.to_master_nat; @@ -1210,6 +1212,10 @@ fhandler_pty_slave::reset_switch_to_nat_pipe (void) if (!CallNamedPipe (pipe, &req, sizeof req, &repl, sizeof repl, &len, 500)) return; /* What can we do? */ + CloseHandle (repl.from_master); /* not used. */ + CloseHandle (repl.to_master); /* not used. */ + CloseHandle (repl.to_slave_nat); /* not used. */ + CloseHandle (repl.to_slave); /* not used. */ CloseHandle (get_handle_nat ()); set_handle_nat (repl.from_master_nat); CloseHandle (get_output_handle_nat ()); @@ -3861,10 +3867,20 @@ fhandler_pty_slave::transfer_input (tty::xfer_dir dir, HANDLE from, tty *ttyp, if (!CallNamedPipe (pipe, &req, sizeof req, &repl, sizeof repl, &len, 500)) return; /* What can we do? */ + CloseHandle (repl.from_master_nat); /* not used. */ + CloseHandle (repl.from_master); /* not used. */ + CloseHandle (repl.to_master_nat); /* not used. */ + CloseHandle (repl.to_master); /* not used. */ if (dir == tty::to_nat) - to = repl.to_slave_nat; + { + CloseHandle (repl.to_slave); /* not used. */ + to = repl.to_slave_nat; + } else - to = repl.to_slave; + { + CloseHandle (repl.to_slave_nat); /* not used. */ + to = repl.to_slave; + } } UINT cp_from = 0, cp_to = 0; From 02f7f6543abc35a25fd024d8a58f374a86633846 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 13 Feb 2024 11:42:42 +0900 Subject: [PATCH 633/767] Cygwin: console: Make VMIN and VTIME work. Previously, VMIN and VTIME did not work at all. This patch fixes that. Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 26 ++++++++++++++++++-------- winsup/cygwin/release/3.5.1 | 2 ++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 1c8d383cdd..b0907eb316 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -1131,10 +1131,14 @@ fhandler_console::read (void *pv, size_t& buflen) push_process_state process_state (PID_TTYIN); - int copied_chars = 0; + size_t copied_chars = 0; - DWORD timeout = is_nonblocking () ? 0 : INFINITE; + DWORD timeout = is_nonblocking () ? 0 : + (get_ttyp ()->ti.c_lflag & ICANON ? INFINITE : + (get_ttyp ()->ti.c_cc[VMIN] == 0 ? 0 : + (get_ttyp ()->ti.c_cc[VTIME]*100 ? : INFINITE))); +read_more: while (!input_ready && !get_cons_readahead_valid ()) { int bgres; @@ -1157,6 +1161,11 @@ fhandler_console::read (void *pv, size_t& buflen) pthread::static_cancel_self (); /*NOTREACHED*/ case WAIT_TIMEOUT: + if (copied_chars) + { + buflen = copied_chars; + return; + } set_sig_errno (EAGAIN); buflen = (size_t) -1; return; @@ -1204,19 +1213,20 @@ fhandler_console::read (void *pv, size_t& buflen) } /* Check console read-ahead buffer filled from terminal requests */ - while (con.cons_rapoi && *con.cons_rapoi && buflen) - { - buf[copied_chars++] = *con.cons_rapoi++; - buflen --; - } + while (con.cons_rapoi && *con.cons_rapoi && buflen > copied_chars) + buf[copied_chars++] = *con.cons_rapoi++; copied_chars += - get_readahead_into_buffer (buf + copied_chars, buflen); + get_readahead_into_buffer (buf + copied_chars, buflen - copied_chars); if (!con_ra.ralen) input_ready = false; release_input_mutex (); + if (buflen > copied_chars && !(get_ttyp ()->ti.c_lflag & ICANON) + && copied_chars < get_ttyp ()->ti.c_cc[VMIN]) + goto read_more; + #undef buf buflen = copied_chars; diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index 715fcf74d4..e041f98f38 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -16,3 +16,5 @@ Fixes: - Fix handle leak in pty master which occurs when non-cygwin process is started in pty. Addresses: https://github.com/msys2/msys2-runtime/issues/198 + +- Fix the problem that VMIN and VTIME does not work at all in console. From 0795afd68eceb0d81501e81d92d7adce2b2f1a92 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Tue, 13 Feb 2024 11:45:36 +0900 Subject: [PATCH 634/767] Cygwin: console: Fix a problem that minor ID is incorrect in ConEmu. Previously, minor device number of console was not assigned correctly in ConEmu environment. This is because console window of ConEmu is not enumerated by EnumWindows(). This patch fixes the issue. Signed-off-by: Takashi Yano --- winsup/cygwin/autoload.cc | 2 ++ winsup/cygwin/devices.cc | 7 +++++++ winsup/cygwin/devices.in | 7 +++++++ winsup/cygwin/fhandler/console.cc | 14 ++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index 7e610bdd01..65e906e8b9 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -548,7 +548,9 @@ LoadDLLfunc (DefWindowProcW, user32) LoadDLLfunc (DestroyWindow, user32) LoadDLLfunc (DispatchMessageW, user32) LoadDLLfunc (EmptyClipboard, user32) +LoadDLLfunc (EnumChildWindows, user32) LoadDLLfunc (EnumWindows, user32) +LoadDLLfunc (GetClassNameA, user32) LoadDLLfunc (GetClipboardData, user32) LoadDLLfunc (GetDC, user32) LoadDLLfunc (GetForegroundWindow, user32) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 167b0e4b4c..ca1fdf3be0 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -81,6 +81,13 @@ enum_cons_dev (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 == strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, enum_cons_dev, lp); + } return TRUE; } diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 48d3843fee..842f09c18f 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -77,6 +77,13 @@ enum_cons_dev (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 == strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, enum_cons_dev, lp); + } return TRUE; } diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index b0907eb316..70824e6949 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -250,6 +250,13 @@ enum_windows (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 == strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, enum_windows, lp); + } return TRUE; } @@ -656,6 +663,13 @@ scan_console (HWND hw, LPARAM lp) UnmapViewOfFile ((void *) cs); CloseHandle (h); } + else + { /* Only for ConEmu */ + char class_hw[32]; + if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) + && 0 == strcmp (class_hw, "VirtualConsoleClass")) + EnumChildWindows (hw, scan_console, lp); + } return TRUE; } From 79db49a1846dd15b4a9b6fc5606e402252d1d50e Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 14 Feb 2024 23:10:04 +0900 Subject: [PATCH 635/767] Cygwin: pty: Make GNU screen and tmux work in ConEmu cygwin-connector. Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index d31d30b1fc..e52590c9d2 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -970,7 +970,7 @@ fhandler_pty_slave::open (int flags, mode_t) set_output_handle (to_master_local); if (_major (myself->ctty) == DEV_CONS_MAJOR - && !(!pinfo (myself->ppid) && getenv ("ConEmuPID"))) + && !(!pinfo (myself->ppid) && GetModuleHandle ("ConEmuHk64.dll"))) /* This process is supposed to be a master process which is running on console. Invisible console will be created in primary slave process to prevent overriding code page @@ -1049,6 +1049,8 @@ fhandler_pty_slave::close () fhandler_pty_common::close (); if (!ForceCloseHandle (output_mutex)) termios_printf ("CloseHandle (output_mutex<%p>), %E", output_mutex); + if (!get_ttyp ()->invisible_console_pid && myself->ctty == CTTY_RELEASED) + FreeConsole(); if (get_ttyp ()->invisible_console_pid && !pinfo (get_ttyp ()->invisible_console_pid)) get_ttyp ()->invisible_console_pid = 0; From 309c1994526ff4d1a6c58765ed28442d1e59965f Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 14 Feb 2024 22:57:48 +0900 Subject: [PATCH 636/767] Cygwin: console: Unify EnumWindows() callback functions. Previously, three similar callback fuctions were used in console code. This patch unifies these functions to ease maintenance cost. Fixes: 8aad3a7edeb2 ("Cygwin: console: Fix a problem that minor ID is incorrect in ConEmu.") Suggested-by: Johannes Schindelin Signed-off-by: Takashi Yano --- winsup/cygwin/devices.cc | 25 +------- winsup/cygwin/devices.in | 25 +------- winsup/cygwin/fhandler/console.cc | 84 +++++++------------------ winsup/cygwin/local_includes/fhandler.h | 15 +++++ 4 files changed, 39 insertions(+), 110 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index ca1fdf3be0..b14613bc73 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -69,28 +69,6 @@ exists_ntdev_silent (const device& dev) return exists_ntdev (dev) ? -1 : false; } -static BOOL CALLBACK -enum_cons_dev (HWND hw, LPARAM lp) -{ - unsigned long *bitmask = (unsigned long *) lp; - HANDLE h = NULL; - fhandler_console::console_state *cs; - if ((cs = fhandler_console::open_shared_console (hw, h))) - { - *bitmask |= (1UL << cs->tty_min_state.getntty ()); - UnmapViewOfFile ((void *) cs); - CloseHandle (h); - } - else - { /* Only for ConEmu */ - char class_hw[32]; - if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) - && 0 == strcmp (class_hw, "VirtualConsoleClass")) - EnumChildWindows (hw, enum_cons_dev, lp); - } - return TRUE; -} - static int exists_console (const device& dev) { @@ -105,8 +83,7 @@ exists_console (const device& dev) default: if (dev.get_minor () < MAX_CONS_DEV) { - unsigned long bitmask = 0; - EnumWindows (enum_cons_dev, (LPARAM) &bitmask); + unsigned long bitmask = fhandler_console::console_unit (-1); return bitmask & (1UL << dev.get_minor ()); } return false; diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 842f09c18f..e15a35f251 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -65,28 +65,6 @@ exists_ntdev_silent (const device& dev) return exists_ntdev (dev) ? -1 : false; } -static BOOL CALLBACK -enum_cons_dev (HWND hw, LPARAM lp) -{ - unsigned long *bitmask = (unsigned long *) lp; - HANDLE h = NULL; - fhandler_console::console_state *cs; - if ((cs = fhandler_console::open_shared_console (hw, h))) - { - *bitmask |= (1UL << cs->tty_min_state.getntty ()); - UnmapViewOfFile ((void *) cs); - CloseHandle (h); - } - else - { /* Only for ConEmu */ - char class_hw[32]; - if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) - && 0 == strcmp (class_hw, "VirtualConsoleClass")) - EnumChildWindows (hw, enum_cons_dev, lp); - } - return TRUE; -} - static int exists_console (const device& dev) { @@ -101,8 +79,7 @@ exists_console (const device& dev) default: if (dev.get_minor () < MAX_CONS_DEV) { - unsigned long bitmask = 0; - EnumWindows (enum_cons_dev, (LPARAM) &bitmask); + unsigned long bitmask = fhandler_console::console_unit (-1); return bitmask & (1UL << dev.get_minor ()); } return false; diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 70824e6949..66b4905f46 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -224,49 +224,46 @@ fhandler_console::open_shared_console (HWND hw, HANDLE& h, bool& created) return res; } -class console_unit -{ - int n; - unsigned long bitmask; - HWND me; - -public: - operator int () const {return n;} - console_unit (HWND); - friend BOOL CALLBACK enum_windows (HWND, LPARAM); -}; - BOOL CALLBACK -enum_windows (HWND hw, LPARAM lp) +fhandler_console::enum_windows (HWND hw, LPARAM lp) { console_unit *this1 = (console_unit *) lp; - if (hw == this1->me) - return TRUE; HANDLE h = NULL; fhandler_console::console_state *cs; if ((cs = fhandler_console::open_shared_console (hw, h))) { - this1->bitmask ^= 1UL << cs->tty_min_state.getntty (); - UnmapViewOfFile ((void *) cs); CloseHandle (h); + if (major (cs->tty_min_state.getntty ()) == DEV_CONS_MAJOR) + this1->bitmask |= 1UL << minor (cs->tty_min_state.getntty ()); + if (this1->n == minor (cs->tty_min_state.getntty ())) + { + this1->shared_console_info = cs; + return FALSE; + } + UnmapViewOfFile ((void *) cs); } else { /* Only for ConEmu */ char class_hw[32]; if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) && 0 == strcmp (class_hw, "VirtualConsoleClass")) - EnumChildWindows (hw, enum_windows, lp); + EnumChildWindows (hw, fhandler_console::enum_windows, lp); } return TRUE; } -console_unit::console_unit (HWND me0): - bitmask (~0UL), me (me0) +fhandler_console::console_unit::console_unit (int n0): + n (n0), bitmask (0) { - EnumWindows (enum_windows, (LPARAM) this); - n = (_minor_t) ffs (bitmask) - 1; + EnumWindows (fhandler_console::enum_windows, (LPARAM) this); + if (n < 0) + n = (_minor_t) ffsl (~bitmask) - 1; if (n < 0) - api_fatal ("console device allocation failure - too many consoles in use, max consoles is 64"); + api_fatal (sizeof (bitmask) == 8 ? + "console device allocation failure - " + "too many consoles in use, max consoles is 64" : + "console device allocation failure - " + "too many consoles in use, max consoles is 32"); } static DWORD @@ -640,39 +637,6 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) free (input_tmp); } -struct scan_console_args_t -{ - _minor_t unit; - fhandler_console::console_state **shared_console_info; -}; - -BOOL CALLBACK -scan_console (HWND hw, LPARAM lp) -{ - scan_console_args_t *p = (scan_console_args_t *) lp; - HANDLE h = NULL; - fhandler_console::console_state *cs; - if ((cs = fhandler_console::open_shared_console (hw, h))) - { - if (p->unit == minor (cs->tty_min_state.getntty ())) - { - *p->shared_console_info = cs; - CloseHandle (h); - return FALSE; - } - UnmapViewOfFile ((void *) cs); - CloseHandle (h); - } - else - { /* Only for ConEmu */ - char class_hw[32]; - if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) - && 0 == strcmp (class_hw, "VirtualConsoleClass")) - EnumChildWindows (hw, scan_console, lp); - } - return TRUE; -} - bool fhandler_console::set_unit () { @@ -696,11 +660,7 @@ fhandler_console::set_unit () else { if (!generic_console && (dev_t) myself->ctty != get_device ()) - { - /* Scan for existing shared console info */ - scan_console_args_t arg = { unit, &shared_console_info[unit] }; - EnumWindows (scan_console, (LPARAM) &arg); - } + shared_console_info[unit] = console_unit (unit); if (generic_console || !shared_console_info[unit]) { me = GetConsoleWindow (); @@ -714,7 +674,7 @@ fhandler_console::set_unit () ProtectHandleINH (cygheap->console_h); if (created) { - unit = console_unit (me); + unit = console_unit (-1); cs->tty_min_state.setntty (DEV_CONS_MAJOR, unit); } else diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 1dc02608ba..15ea3f89fd 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2245,6 +2245,8 @@ class fhandler_console: public fhandler_termios static void set_output_mode (tty::cons_mode m, const termios *t, const handle_set_t *p); + static BOOL CALLBACK enum_windows (HWND hw, LPARAM lp); + public: pid_t tc_getpgid () { @@ -2366,6 +2368,19 @@ class fhandler_console: public fhandler_termios void wpbuf_send (); int fstat (struct stat *buf); + class console_unit + { + int n; + unsigned long bitmask; + console_state *shared_console_info; + public: + operator _minor_t () const {return n;} + operator console_state * () const {return shared_console_info;} + operator unsigned long () const {return bitmask;} + console_unit (int); + friend BOOL CALLBACK fhandler_console::enum_windows (HWND, LPARAM); + }; + friend tty_min * tty_list::get_cttyp (); }; From ffdc4e39def91f2209d6dc7efd11ef81cd350fab Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 12 Feb 2024 13:43:03 +0100 Subject: [PATCH 637/767] Cygwin: dumper: use void* in place of PTR The definition of PTR has been dropped from newer versions of ansidecl.h. Convert definition of print_section_name to use void * instead, as required by bfd_map_over_sections. Signed-off-by: Corinna Vinschen (cherry picked from commit dace0bfa6c8c0ee8e3acc190212e1dd9e5a19677) --- winsup/utils/dumper.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/utils/dumper.cc b/winsup/utils/dumper.cc index 1bbf394fd7..994f9b683c 100644 --- a/winsup/utils/dumper.cc +++ b/winsup/utils/dumper.cc @@ -142,7 +142,7 @@ dumper::sane () } void -print_section_name (bfd* abfd, asection* sect, PTR obj) +print_section_name (bfd* abfd, asection* sect, void* obj) { deb_printf (" %s", get_section_name (abfd, sect)); } From a85f1c3d0f22f0bf849f4040f04c5f9785e94feb Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 12 Feb 2024 13:45:10 +0100 Subject: [PATCH 638/767] include/ansidecl.h: import from binutils-gdb Import include/ansidecl.h version from 2024-01-04, binutils-gdb commit fd67aa1129fd. Signed-off-by: Corinna Vinschen (cherry picked from commit 10c8c1cf4f94ed42c59015d7e972269724c451bf) --- include/ansidecl.h | 129 +++++++++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 52 deletions(-) diff --git a/include/ansidecl.h b/include/ansidecl.h index 6e4bfc21f2..653d91869e 100644 --- a/include/ansidecl.h +++ b/include/ansidecl.h @@ -1,5 +1,5 @@ -/* ANSI and traditional C compatability macros - Copyright (C) 1991-2015 Free Software Foundation, Inc. +/* Compiler compatibility macros + Copyright (C) 1991-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. This program is free software; you can redistribute it and/or modify @@ -16,18 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -/* ANSI and traditional C compatibility macros - - ANSI C is assumed if __STDC__ is #defined. - - Macro ANSI C definition Traditional C definition - ----- ---- - ---------- ----------- - ---------- - PTR `void *' `char *' - const not defined `' - volatile not defined `' - signed not defined `' - - For ease of writing code which uses GCC extensions but needs to be +/* For ease of writing code which uses GCC extensions but needs to be portable to other compilers, we provide the GCC_VERSION macro that simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various wrappers around __attribute__. Also, __extension__ will be #defined @@ -62,24 +51,10 @@ So instead we use the macro below and test it against specific values. */ #define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) #endif /* GCC_VERSION */ -#if defined (__STDC__) || defined(__cplusplus) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32) -/* All known AIX compilers implement these things (but don't always - define __STDC__). The RISC/OS MIPS compiler defines these things - in SVR4 mode, but does not define __STDC__. */ -/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other - C++ compilers, does not define __STDC__, though it acts as if this - was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */ - -#define PTR void * - -#undef const -#undef volatile -#undef signed - /* inline requires special treatment; it's in C99, and GCC >=2.7 supports it too, but it's not in C89. */ #undef inline -#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__)) +#if (!defined(__cplusplus) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__)) /* it's a keyword */ #else # if GCC_VERSION >= 2007 @@ -89,22 +64,6 @@ So instead we use the macro below and test it against specific values. */ # endif #endif -#else /* Not ANSI C. */ - -#define PTR char * - -/* some systems define these in header files for non-ansi mode */ -#undef const -#undef volatile -#undef signed -#undef inline -#define const -#define volatile -#define signed -#define inline - -#endif /* ANSI C. */ - /* Define macros for some gcc attributes. This permits us to use the macros freely, and know that they will come into play for the version of gcc in which they are supported. */ @@ -252,7 +211,7 @@ So instead we use the macro below and test it against specific values. */ # endif /* GNUC >= 3.0 */ #endif /* ATTRIBUTE_ALIGNED_ALIGNOF */ -/* Useful for structures whose layout must much some binary specification +/* Useful for structures whose layout must match some binary specification regardless of the alignment and padding qualities of the compiler. */ #ifndef ATTRIBUTE_PACKED # define ATTRIBUTE_PACKED __attribute__ ((packed)) @@ -283,6 +242,49 @@ So instead we use the macro below and test it against specific values. */ # endif /* GNUC >= 4.9 */ #endif /* ATTRIBUTE_NO_SANITIZE_UNDEFINED */ +/* Attribute 'nonstring' was valid as of gcc 8. */ +#ifndef ATTRIBUTE_NONSTRING +# if GCC_VERSION >= 8000 +# define ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define ATTRIBUTE_NONSTRING +# endif +#endif + +/* Attribute `alloc_size' was valid as of gcc 4.3. */ +#ifndef ATTRIBUTE_RESULT_SIZE_1 +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_RESULT_SIZE_1 __attribute__ ((alloc_size (1))) +# else +# define ATTRIBUTE_RESULT_SIZE_1 +#endif +#endif + +#ifndef ATTRIBUTE_RESULT_SIZE_2 +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_RESULT_SIZE_2 __attribute__ ((alloc_size (2))) +# else +# define ATTRIBUTE_RESULT_SIZE_2 +#endif +#endif + +#ifndef ATTRIBUTE_RESULT_SIZE_1_2 +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_RESULT_SIZE_1_2 __attribute__ ((alloc_size (1, 2))) +# else +# define ATTRIBUTE_RESULT_SIZE_1_2 +#endif +#endif + +/* Attribute `warn_unused_result' was valid as of gcc 3.3. */ +#ifndef ATTRIBUTE_WARN_UNUSED_RESULT +# if GCC_VERSION >= 3003 +# define ATTRIBUTE_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +# else +# define ATTRIBUTE_WARN_UNUSED_RESULT +# endif +#endif + /* We use __extension__ in some places to suppress -pedantic warnings about GCC extensions. This feature didn't work properly before gcc 2.8. */ @@ -313,15 +315,38 @@ So instead we use the macro below and test it against specific values. */ #define ENUM_BITFIELD(TYPE) unsigned int #endif - /* This is used to mark a class or virtual function as final. */ -#if __cplusplus >= 201103L -#define GCC_FINAL final -#elif GCC_VERSION >= 4007 -#define GCC_FINAL __final +#if defined(__cplusplus) && __cpp_constexpr >= 200704 +#define CONSTEXPR constexpr #else -#define GCC_FINAL +#define CONSTEXPR #endif +/* A macro to disable the copy constructor and assignment operator. + When building with C++11 and above, the methods are explicitly + deleted, causing a compile-time error if something tries to copy. + For C++03, this just declares the methods, causing a link-time + error if the methods end up called (assuming you don't + define them). For C++03, for best results, place the macro + under the private: access specifier, like this, + + class name_lookup + { + private: + DISABLE_COPY_AND_ASSIGN (name_lookup); + }; + + so that most attempts at copy are caught at compile-time. */ + +#if defined(__cplusplus) && __cplusplus >= 201103 +#define DISABLE_COPY_AND_ASSIGN(TYPE) \ + TYPE (const TYPE&) = delete; \ + void operator= (const TYPE &) = delete + #else +#define DISABLE_COPY_AND_ASSIGN(TYPE) \ + TYPE (const TYPE&); \ + void operator= (const TYPE &) +#endif /* __cplusplus >= 201103 */ + #ifdef __cplusplus } #endif From 577673a1705398eccf8175228a58a6aa259341fd Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 16 Feb 2024 02:37:46 +0900 Subject: [PATCH 639/767] Cygwin: console: Fix a bug that cannot handle consoles more than 32. Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Signed-off-by: Takashi Yano --- winsup/cygwin/devices.cc | 2 +- winsup/cygwin/devices.in | 2 +- winsup/cygwin/release/3.5.1 | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index b14613bc73..5b67fd1dad 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -84,7 +84,7 @@ exists_console (const device& dev) if (dev.get_minor () < MAX_CONS_DEV) { unsigned long bitmask = fhandler_console::console_unit (-1); - return bitmask & (1UL << dev.get_minor ()); + return !!(bitmask & (1UL << dev.get_minor ())); } return false; } diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index e15a35f251..be54346fbe 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -80,7 +80,7 @@ exists_console (const device& dev) if (dev.get_minor () < MAX_CONS_DEV) { unsigned long bitmask = fhandler_console::console_unit (-1); - return bitmask & (1UL << dev.get_minor ()); + return !!(bitmask & (1UL << dev.get_minor ())); } return false; } diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index e041f98f38..96d2ad32fa 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -18,3 +18,5 @@ Fixes: Addresses: https://github.com/msys2/msys2-runtime/issues/198 - Fix the problem that VMIN and VTIME does not work at all in console. + +- Fix a bug that cannot handle consoles more than 32, rather than 64. From d8f6db2fffaed7e0faaa58e17dd089b5d9bbd3e2 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 16 Feb 2024 03:35:07 +0900 Subject: [PATCH 640/767] Cygwin: console: Fix a bug that 64th console cannot be handled. Fixes: 930e553da8e9 ("Cygwin: console: Unify EnumWindows() callback functions."); Signed-off-by: Takashi Yano --- winsup/cygwin/devices.cc | 2 +- winsup/cygwin/devices.in | 2 +- winsup/cygwin/fhandler/console.cc | 8 +++----- winsup/cygwin/local_includes/fhandler.h | 5 +++-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 5b67fd1dad..d4c003baca 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -83,7 +83,7 @@ exists_console (const device& dev) default: if (dev.get_minor () < MAX_CONS_DEV) { - unsigned long bitmask = fhandler_console::console_unit (-1); + unsigned long bitmask = fhandler_console::console_unit (CONS_LIST_USED); return !!(bitmask & (1UL << dev.get_minor ())); } return false; diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index be54346fbe..a86e5015f2 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -79,7 +79,7 @@ exists_console (const device& dev) default: if (dev.get_minor () < MAX_CONS_DEV) { - unsigned long bitmask = fhandler_console::console_unit (-1); + unsigned long bitmask = fhandler_console::console_unit (CONS_LIST_USED); return !!(bitmask & (1UL << dev.get_minor ())); } return false; diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 66b4905f46..c16ca3962c 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -253,12 +253,10 @@ fhandler_console::enum_windows (HWND hw, LPARAM lp) } fhandler_console::console_unit::console_unit (int n0): - n (n0), bitmask (0) + n (n0), bitmask (0), shared_console_info (NULL) { EnumWindows (fhandler_console::enum_windows, (LPARAM) this); - if (n < 0) - n = (_minor_t) ffsl (~bitmask) - 1; - if (n < 0) + if (n0 == CONS_SCAN_UNUSED && (n = ffsl (~bitmask) - 1) < 0) api_fatal (sizeof (bitmask) == 8 ? "console device allocation failure - " "too many consoles in use, max consoles is 64" : @@ -674,7 +672,7 @@ fhandler_console::set_unit () ProtectHandleINH (cygheap->console_h); if (created) { - unit = console_unit (-1); + unit = console_unit (CONS_SCAN_UNUSED); cs->tty_min_state.setntty (DEV_CONS_MAJOR, unit); } else diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 15ea3f89fd..a21aeb7d80 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2178,6 +2178,8 @@ class dev_console }; #define MAX_CONS_DEV (sizeof (unsigned long) * 8) +#define CONS_SCAN_UNUSED (-1) +#define CONS_LIST_USED (-2) /* This is a input and output console handle */ class fhandler_console: public fhandler_termios @@ -2374,9 +2376,8 @@ class fhandler_console: public fhandler_termios unsigned long bitmask; console_state *shared_console_info; public: - operator _minor_t () const {return n;} operator console_state * () const {return shared_console_info;} - operator unsigned long () const {return bitmask;} + operator unsigned long () const {return n == CONS_LIST_USED ? bitmask : n;} console_unit (int); friend BOOL CALLBACK fhandler_console::enum_windows (HWND, LPARAM); }; From 384ea1f53bdfc424c24b6956153bb08eab912483 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 16 Feb 2024 17:15:29 +0900 Subject: [PATCH 641/767] Cygwin: pty: Fix failure to revert from nat-pipe in disable_pcon. Fixes: a9038789488e ("Cygwin: pty: Additional fix for transferring input at exit."); Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index e52590c9d2..27a2c774a7 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -4108,8 +4108,6 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp, WaitForSingleObject (p->pipe_sw_mutex, INFINITE); if (!switch_to) switch_to = get_console_process_id (current_pid, false, true, true); - if (!switch_to) - switch_to = get_console_process_id (current_pid, false, true, false); if ((!switch_to && (ttyp->pcon_activated || stdin_is_ptys)) && ttyp->pty_input_state_eq (tty::to_nat)) { From 57b9425878dc796f5dd65970a3ee11fb6d973c45 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 16 Feb 2024 18:11:46 +0900 Subject: [PATCH 642/767] Cygwin: pty: Re-fix the last bug regarding nat-pipe. Fixes: f907b5f405a3 ("Cygwin: pty: Fix failure to revert from nat-pipe in disable_pcon.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 27a2c774a7..9d7ef3c9d1 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -4103,11 +4103,8 @@ fhandler_pty_slave::cleanup_for_non_cygwin_app (handle_set_t *p, tty *ttyp, DWORD force_switch_to) { ttyp->wait_fwd (); - DWORD current_pid = myself->exec_dwProcessId ?: myself->dwProcessId; - DWORD switch_to = force_switch_to; WaitForSingleObject (p->pipe_sw_mutex, INFINITE); - if (!switch_to) - switch_to = get_console_process_id (current_pid, false, true, true); + DWORD switch_to = get_winpid_to_hand_over (ttyp, force_switch_to); if ((!switch_to && (ttyp->pcon_activated || stdin_is_ptys)) && ttyp->pty_input_state_eq (tty::to_nat)) { From 12b85bec0e4db176cb5c6534f01bef62fb15c44b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Feb 2024 12:30:34 +0100 Subject: [PATCH 643/767] Cygwin: gettimeofday: allow tv NULL pointer Add a missing check for the struct timeval pointer being NULL. Reported-by: 109224573 <109224573@qq.com> Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.1 | 3 +++ winsup/cygwin/times.cc | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index 96d2ad32fa..f3983c450d 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -20,3 +20,6 @@ Fixes: - Fix the problem that VMIN and VTIME does not work at all in console. - Fix a bug that cannot handle consoles more than 32, rather than 64. + +- Fix gettimeofday not checking for a NULL pointer + Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255473.html diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index ddea061b89..68f7a4502c 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -172,10 +172,13 @@ gettimeofday (struct timeval *__restrict tv, void *__restrict tzvp) static bool tzflag; LONGLONG now = get_clock (CLOCK_REALTIME)->usecs (); - tv->tv_sec = now / USPERSEC; - tv->tv_usec = now % USPERSEC; + if (tv) + { + tv->tv_sec = now / USPERSEC; + tv->tv_usec = now % USPERSEC; + } - if (tz != NULL) + if (tz) { if (!tzflag) { From f0ab27c0954e9529109e00c905be2d1ea88a749a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 21 Feb 2024 19:39:37 +0100 Subject: [PATCH 644/767] Cygwin: strptime: make sure to fail on invalid input digits conv_num returns NULL if the input is invalid, e. g., the numbers are out of range. However, the code fails to test this in a lot of places. Rather than adding checks all over the place, rename conv_num to __conv_num and create a wrapper macro conv_num to perform the task of error checking. Signed-off-by: Corinna Vinschen --- winsup/cygwin/libc/strptime.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/libc/strptime.cc b/winsup/cygwin/libc/strptime.cc index dc55723101..353b8008a1 100644 --- a/winsup/cygwin/libc/strptime.cc +++ b/winsup/cygwin/libc/strptime.cc @@ -301,10 +301,19 @@ first_day (int year) return ret; } -/* This simplifies the calls to conv_num enormously. */ +/* This simplifies the calls to __conv_num enormously. */ #define ALT_DIGITS ((alt_format & ALT_O) ? *alt_digits : NULL) -static const unsigned char *conv_num(const unsigned char *, int *, uint, uint, +#define conv_num(_b,_d,_l,_u,_a) \ + ({ \ + const unsigned char *_ret; \ + _ret = __conv_num((_b),(_d),(_l),(_u),(_a)); \ + if (!_ret) \ + return NULL; \ + _ret; \ + }) + +static const unsigned char *__conv_num(const unsigned char *, int *, uint, uint, alt_digits_t *); static const unsigned char *find_string(const unsigned char *, int *, const char * const *, @@ -842,7 +851,7 @@ strptime (const char *__restrict buf, const char *__restrict fmt, } static const unsigned char * -conv_num(const unsigned char *buf, int *dest, uint llim, uint ulim, +__conv_num(const unsigned char *buf, int *dest, uint llim, uint ulim, alt_digits_t *alt_digits) { uint result = 0; From 4fe5b1d77bc60d2a44c7fcd9a0b7d66d0035cdea Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 21 Feb 2024 19:54:20 +0100 Subject: [PATCH 645/767] Cygwin: strptime: fix am/pm handling The %p format specifier is handled immediately. It requires that tm_hour is already set. This falls flat in case the am/pm marker preceeds the time specification. Locales with am/pm marker preceeding time spec by default exist (e. g. ko_KR). Also, the code expects that tm_hour might be set to an invalid value because the %p specifier is used in conjunction with %H. But this usage is invalid in itself and now catched as error condition after commit 343a2a558153 ("Cygwin: strptime: make sure to fail on invalid input digits"). Change the %H/%I/%p handling according to GLibC, i. e. - fix tm_hour for pm only if the time value has been specified as 12 hour time %I, and - perform the fixup only after the entire input has been scanned. This decouples the fixup from the %p position relativ to %I. Signed-off-by: Corinna Vinschen --- winsup/cygwin/libc/strptime.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/libc/strptime.cc b/winsup/cygwin/libc/strptime.cc index 353b8008a1..dc6771fe5e 100644 --- a/winsup/cygwin/libc/strptime.cc +++ b/winsup/cygwin/libc/strptime.cc @@ -335,6 +335,8 @@ __strptime(const char *buf, const char *fmt, struct tm *tm, const char *new_fmt; uint ulim; int ymd = 0; + bool got_I = false; + bool got_pm = false; bp = (const unsigned char *)buf; const struct lc_time_T *_CurrentTimeLocale = __get_time_locale (locale); @@ -537,6 +539,7 @@ again: switch (c = *fmt++) { case 'H': LEGAL_ALT(ALT_O); bp = conv_num(bp, &tm->tm_hour, 0, 23, ALT_DIGITS); + got_I = false; continue; case 'l': /* The hour (12-hour clock representation). */ @@ -547,6 +550,7 @@ again: switch (c = *fmt++) { bp = conv_num(bp, &tm->tm_hour, 1, 12, ALT_DIGITS); if (tm->tm_hour == 12) tm->tm_hour = 0; + got_I = true; continue; case 'j': /* The day of year. */ @@ -573,9 +577,7 @@ again: switch (c = *fmt++) { case 'p': /* The locale's equivalent of AM/PM. */ bp = find_string(bp, &i, _ctloc(am_pm), NULL, 2, locale); - if (tm->tm_hour > 11) - return NULL; - tm->tm_hour += i * 12; + got_pm = (i == 1); LEGAL_ALT(0); continue; @@ -751,8 +753,12 @@ again: switch (c = *fmt++) { default: /* Unknown/unsupported conversion. */ return NULL; } + } + if (got_I && got_pm) + tm->tm_hour += 12; + if (bp && (era || got_eoff)) { /* Default to current era. */ From 83967aa244a88f54a38b4bce6aa7c25e48e6c87f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 21 Feb 2024 20:00:29 +0100 Subject: [PATCH 646/767] Cygwin: strptime: add release note Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index f3983c450d..efea5ae2f1 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -23,3 +23,6 @@ Fixes: - Fix gettimeofday not checking for a NULL pointer Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255473.html + +- Fix two bugs in strptime, error checking of invalid numerical input and + %p handling. From 08df2e23a75190fced8c1a2446ebaee4f469eb96 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 24 Feb 2024 10:46:54 +0100 Subject: [PATCH 647/767] Cygwin: newgrp: fix invalid usage of argv Fix an error message accessing argv[1] even after it has been potentially moved. Print group name from group DB instead. Fixes: 8bd56ec873453 ("Cygwin: newgrp: first full version") Signed-off-by: Corinna Vinschen --- winsup/utils/newgrp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/utils/newgrp.c b/winsup/utils/newgrp.c index 88586352e1..e312a3c51d 100644 --- a/winsup/utils/newgrp.c +++ b/winsup/utils/newgrp.c @@ -160,6 +160,7 @@ main (int argc, const char **argv) if (argv[1] == NULL) { gid = pw->pw_gid; + gr = getgrgid (gid); } else { @@ -179,7 +180,7 @@ main (int argc, const char **argv) if (setgid (gid) != 0) { fprintf (stderr, "%s: can't switch primary group to '%s'\n", - program_invocation_short_name, argv[1]); + program_invocation_short_name, gr->gr_name); return 2; } From 32024ec7f723112a46dae8c7ff17b5ec1157021e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 24 Feb 2024 12:59:28 +0100 Subject: [PATCH 648/767] Cygwin: newgrp: only allow group from supplementary group list Windows only allows to set the primary group to a group already present in the TOKEN_GROUP list. Cygwin OTOH fakes success at setgid() time, to allow a subsequent call to setuid() to do the actual account switching. To have a sane behaviour in the command line tool, check group membership and disallow to switch to groups other than those already present in the user token. Fixes: 8bd56ec873453 ("Cygwin: newgrp: first full version") Signed-off-by: Corinna Vinschen --- winsup/doc/utils.xml | 8 +++----- winsup/utils/newgrp.c | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml index 692dae38f5..aae1ba6433 100644 --- a/winsup/doc/utils.xml +++ b/winsup/doc/utils.xml @@ -2116,11 +2116,9 @@ D: on /d type fat (binary,user,noumount) has been given as argument, a command and its arguments can be specified on the command line. - Please note that setting the primary group to any arbitrary group - is no privileged operation on Windows. However, even if this group is - not in your current user token, or if the group is in your user token - but marked as deny-only, no additional permissions - can be obtained by setting this group as primary group. + The new primary group must be either the old primary group, or + it must be part of the supplementary group list. Setting the primary + group to an arbitrary group is not allowed in Windows. diff --git a/winsup/utils/newgrp.c b/winsup/utils/newgrp.c index e312a3c51d..414e8cdf8e 100644 --- a/winsup/utils/newgrp.c +++ b/winsup/utils/newgrp.c @@ -136,6 +136,7 @@ main (int argc, const char **argv) char **child_env; bool new_child_env = false; gid_t gid; + int ngrps; setlocale (LC_ALL, ""); @@ -176,6 +177,29 @@ main (int argc, const char **argv) ++argv; } + /* Windows does not allow to set the primary group to another group if + it's not already part of the supplementary group list. However, our + setgid() allows this, otherwise OpenSSH and other account-switching + processes wouldn't work, given we only actually switch the user + context at setuid() time. Therefore we test this here and don't + allow other groups. */ + ngrps = getgroups (0, NULL); + if (ngrps > 0) + { + gid_t *glist = (gid_t *) alloca (ngrps * sizeof (gid_t)); + + ngrps = getgroups (ngrps, glist); + while (--ngrps >= 0) + if (gid == glist[ngrps]) + break; + if (ngrps < 0) + { + fprintf (stderr, "%s: can't switch primary group to '%s'\n", + program_invocation_short_name, gr->gr_name); + return 2; + } + } + /* Set primary group */ if (setgid (gid) != 0) { From 1f407990d291e9b99bd1393f772217331b97bd21 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sat, 24 Feb 2024 13:12:00 +0100 Subject: [PATCH 649/767] Cygwin: add newgrp release notes Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index efea5ae2f1..a7d74fa6b6 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -26,3 +26,6 @@ Fixes: - Fix two bugs in strptime, error checking of invalid numerical input and %p handling. + +- Fix newgrp(1) group handling. Only allow groups already in the user + token, as Windows doesn't allow otherwise. From ec5ef42f545699ba02f53ce5b89b7dfc7e92d7ca Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Fri, 23 Feb 2024 19:01:09 +0100 Subject: [PATCH 650/767] Cygwin: Map ERROR_NO_SUCH_DEVICE and ERROR_MEDIA_CHANGED to ENODEV If a removable (USB) device is disconnected after opening its raw device, R/W attempts fail with ERROR_NO_SUCH_DEVICE(433). If the raw device of a partition is used, ERROR_MEDIA_CHANGED(1110) is returned instead. Both are mapped to ENODEV(19) because does not offer a value which better matches ERROR_MEDIA_CHANGED. Signed-off-by: Christian Franke --- winsup/cygwin/local_includes/errmap.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/local_includes/errmap.h b/winsup/cygwin/local_includes/errmap.h index 326b35b6c2..a0b3ff4006 100644 --- a/winsup/cygwin/local_includes/errmap.h +++ b/winsup/cygwin/local_includes/errmap.h @@ -438,7 +438,7 @@ static const int errmap[] = 0, /* 430 */ 0, /* 431 */ 0, /* 432 */ - 0, /* 433 */ + ENODEV, /* ERROR_NO_SUCH_DEVICE */ 0, /* 434 */ 0, /* 435 */ 0, /* 436 */ @@ -1115,7 +1115,7 @@ static const int errmap[] = 0, /* ERROR_DEVICE_NOT_PARTITIONED */ 0, /* ERROR_UNABLE_TO_LOCK_MEDIA */ 0, /* ERROR_UNABLE_TO_UNLOAD_MEDIA */ - 0, /* ERROR_MEDIA_CHANGED */ + ENODEV, /* ERROR_MEDIA_CHANGED */ EIO, /* ERROR_BUS_RESET */ ENOMEDIUM, /* ERROR_NO_MEDIA_IN_DRIVE */ 0, /* ERROR_NO_UNICODE_TRANSLATION */ From 271f187b7b59a6645e24e9c36b60ba31f6527556 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Feb 2024 17:25:23 +0100 Subject: [PATCH 651/767] Cygwin: passwd/group: drop Capability SIDs Capability SIDs (S-1-15-3-...) have been introduced with Windows 10 1909. They don't resolve with LookupAccountSid. We don't need them and they don't map gracefully into out POSIX account namespace. Also, add code to make sure to filter them out *iff* they become resolvable at one point. While at it, slightly reorder code for non-resolving SIDs by authority values. Signed-off-by: Corinna Vinschen --- winsup/cygwin/uinfo.cc | 47 ++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 21d729d5dc..acbc945e41 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -2624,9 +2624,15 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) + (sid_sub_auth_rid (sid) & 0xff); #else if (sid_id_auth (sid) == 15 /* SECURITY_APP_PACKAGE_AUTHORITY */) - uid = 0x10000 + 0x100 * sid_id_auth (sid) - + 0x10 * sid_sub_auth (sid, 0) - + (sid_sub_auth_rid (sid) & 0xf); + { + /* Filter out all SIDs not referring to an App Package, for + instance, Capability SIDs (S-1-15-3-...) */ + if (sid_sub_auth (sid, 0) != SECURITY_APP_PACKAGE_BASE_RID) + return NULL; + uid = 0x10000 + 0x100 * sid_id_auth (sid) + + 0x10 * SECURITY_APP_PACKAGE_BASE_RID + + (sid_sub_auth_rid (sid) & 0xf); + } else if (sid_id_auth (sid) != 5 /* SECURITY_NT_AUTHORITY */) uid = 0x10000 + 0x100 * sid_id_auth (sid) + (sid_sub_auth_rid (sid) & 0xff); @@ -2682,21 +2688,8 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) fully_qualified_name = true; acc_type = SidTypeUnknown; } - else if (sid_id_auth (sid) == 12 && sid_sub_auth (sid, 0) == 1) - { - /* Special AzureAD group SID which can't be resolved by - LookupAccountSid (ERROR_NONE_MAPPED). This is only allowed - as group entry, not as passwd entry. */ - if (is_passwd ()) - return NULL; - uid = gid = 0x1001; - wcpcpy (dom, L"AzureAD"); - wcpcpy (name = namebuf, L"Group"); - fully_qualified_name = true; - acc_type = SidTypeUnknown; - } - else if (sid_id_auth (sid) == 5 && - sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID) + else if (sid_id_auth (sid) == 5 /* SECURITY_NT_AUTHORITY */ + && sid_sub_auth (sid, 0) == SECURITY_APPPOOL_ID_BASE_RID) { /* Special IIS APPPOOL group SID which can't be resolved by LookupAccountSid (ERROR_NONE_MAPPED). This is only allowed @@ -2728,6 +2721,24 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) } acc_type = SidTypeUnknown; } + else if (sid_id_auth (sid) == 12 /* AzureAD ID */ + && sid_sub_auth (sid, 0) == 1 /* Azure ID base RID */) + { + /* Special AzureAD group SID which can't be resolved by + LookupAccountSid (ERROR_NONE_MAPPED). This is only allowed + as group entry, not as passwd entry. */ + if (is_passwd ()) + return NULL; + uid = gid = 0x1001; + wcpcpy (dom, L"AzureAD"); + wcpcpy (name = namebuf, L"Group"); + fully_qualified_name = true; + acc_type = SidTypeUnknown; + } + else if (sid_id_auth (sid) == 15 /* SECURITY_APP_PACKAGE_AUTHORITY */ + && sid_sub_auth (sid, 0) == SECURITY_CAPABILITY_BASE_RID) + /* Filter out Capability SIDs */ + return NULL; else if (sid_id_auth (sid) == 22) { /* Samba UNIX Users/Groups From 50240f20ecfc7bc7a2961c25f96f5b9345c984ac Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Feb 2024 23:51:33 +0100 Subject: [PATCH 652/767] Cygwin: getgrent: fix local SAM enumeration on domain member machines Don't skip output of local SAM groups on domain member machines. They can have valid, user-defined groups in their SAM. Just skip builtin groups if we're enumerating AD as well. Signed-off-by: Corinna Vinschen --- winsup/cygwin/grp.cc | 12 +++++++++--- winsup/cygwin/passwd.cc | 2 -- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/grp.cc b/winsup/cygwin/grp.cc index b06ad37912..77cf6a72c6 100644 --- a/winsup/cygwin/grp.cc +++ b/winsup/cygwin/grp.cc @@ -424,9 +424,15 @@ gr_ent::enumerate_local () DWORD dlen = DNLEN + 1; SID_NAME_USE acc_type; - LookupAccountNameW (NULL, - ((PLOCALGROUP_INFO_0) buf)[cnt++].lgrpi0_name, - sid, &slen, dom, &dlen, &acc_type); + if (!LookupAccountNameW (NULL, + ((PLOCALGROUP_INFO_0) buf)[cnt++].lgrpi0_name, + sid, &slen, dom, &dlen, &acc_type)) + continue; + if (sid_id_auth (sid) == 5 /* SECURITY_NT_AUTHORITY */ + && sid_sub_auth (sid, 0) == SECURITY_BUILTIN_DOMAIN_RID + && cygheap->dom.member_machine () + && nss_db_enum_primary ()) + continue; fetch_user_arg_t arg; arg.type = SID_arg; arg.sid = &sid; diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc index d1708953d3..0be8aa6b8b 100644 --- a/winsup/cygwin/passwd.cc +++ b/winsup/cygwin/passwd.cc @@ -385,8 +385,6 @@ pg_ent::getent (void) case from_local: if (from_db && nss_db_enum_local () - && (!cygheap->dom.member_machine () - || !nss_db_enum_primary ()) && (entry = enumerate_local ())) return entry; state = from_sam; From 69aba646123cef13a6aa9dbec175f1e22357df2e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 20 Feb 2024 23:54:25 +0100 Subject: [PATCH 653/767] Cygwin: getgrent/getpwent: avoid local enumeration on DCs ...if we're supposed to enumerate the AD accounts anyway. This avoids some useless duplication. Signed-off-by: Corinna Vinschen --- winsup/cygwin/passwd.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc index 0be8aa6b8b..b8457a46f9 100644 --- a/winsup/cygwin/passwd.cc +++ b/winsup/cygwin/passwd.cc @@ -385,6 +385,11 @@ pg_ent::getent (void) case from_local: if (from_db && nss_db_enum_local () + /* Domain controller? If so, sam and ad are one and the same + and "local ad" would list all domain accounts twice without + this test. */ + && (cygheap->dom.account_flat_name ()[0] != L'@' + || !nss_db_enum_primary ()) && (entry = enumerate_local ())) return entry; state = from_sam; From a5744289b71a08e0cec284002629b82801813dc8 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 26 Feb 2024 10:15:06 +0100 Subject: [PATCH 654/767] Cygwin: add release text for getgrent local SAM enumeration patch Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/release/3.5.1 b/winsup/cygwin/release/3.5.1 index a7d74fa6b6..7ef55d17da 100644 --- a/winsup/cygwin/release/3.5.1 +++ b/winsup/cygwin/release/3.5.1 @@ -29,3 +29,5 @@ Fixes: - Fix newgrp(1) group handling. Only allow groups already in the user token, as Windows doesn't allow otherwise. + +- Fix getgrent enumeration of local SAM accounts on domain member machines. From b65153e50e9b6f336f8709dfa6a28c1fa69a1c77 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 27 Feb 2024 12:22:50 +0100 Subject: [PATCH 655/767] bump DLL version to 3.5.2 Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 5998b75687..48030b35d1 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -11,7 +11,7 @@ details. */ changes to the DLL and is mainly informative in nature. */ #define CYGWIN_VERSION_DLL_MAJOR 3005 -#define CYGWIN_VERSION_DLL_MINOR 1 +#define CYGWIN_VERSION_DLL_MINOR 2 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the combined DLL major and minor numbers. */ From cf121e088f928c68a8e3c799db97478c89b6dd96 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 1 Mar 2024 19:05:36 +0900 Subject: [PATCH 656/767] Cygwin: console: Do not unmap shared console memory belonging to ctty. In the condition that console setup for CTTY and close run at the sametime, accessing shared console memory which is already unmapped may occur. With this patch, to avoid this race issue, shared console memory which belongs to contorolling terminal (CTTY) is kept mapped as before. Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255561.html Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Reported-by: Kate Deplaix Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 8 +++++--- winsup/cygwin/release/3.5.2 | 7 +++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 winsup/cygwin/release/3.5.2 diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index c16ca3962c..67ea954663 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -1926,9 +1926,11 @@ fhandler_console::close () || get_device () == (dev_t) myself->ctty)) free_console (); - if (shared_console_info[unit]) - UnmapViewOfFile ((void *) shared_console_info[unit]); - shared_console_info[unit] = NULL; + if (shared_console_info[unit] && myself->ctty != tc ()->ntty) + { + UnmapViewOfFile ((void *) shared_console_info[unit]); + shared_console_info[unit] = NULL; + } return 0; } diff --git a/winsup/cygwin/release/3.5.2 b/winsup/cygwin/release/3.5.2 new file mode 100644 index 0000000000..7d8df9489d --- /dev/null +++ b/winsup/cygwin/release/3.5.2 @@ -0,0 +1,7 @@ +Fixes: +------ + +- Fix the problem that console setup accesses shared memory which + is already unmapped due to race condition. To avoid this issue, + shared console memory will be kept mapped if it belongs to CTTY. + Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255561.html From fc5e9525453fea7c27b0e13635ae54abaa0db69d Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 4 Mar 2024 11:32:34 +0900 Subject: [PATCH 657/767] Cygwin: console: Fix a race issue between close() and open(). The open() call for console sometimes fails if the console owner process is closing the console by close() at the same time. This is due to mismatch state of con.owner variable and attaching state to the console. With this patch, checking con.owner and attaching to con.owner sequence in open(), and resetting con.owner and freeing console sequence in close() are guarded by output_mutex to avoid such a race issue. Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255575.html Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Reported-by: Kate Deplaix Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 58 ++++++++++++++++++------------- winsup/cygwin/release/3.5.2 | 4 +++ 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 67ea954663..1c0d5c815c 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -687,14 +687,6 @@ fhandler_console::set_unit () { devset = (fh_devices) shared_console_info[unit]->tty_min_state.getntty (); _tc = &(shared_console_info[unit]->tty_min_state); - if (!created) - { - while (con.owner > MAX_PID) - Sleep (1); - pinfo p (con.owner); - if (!p) - con.owner = myself->pid; - } } dev ().parse (devset); @@ -1744,11 +1736,23 @@ fhandler_console::open (int flags, mode_t) set_handle (NULL); set_output_handle (NULL); + setup_io_mutex (); + acquire_output_mutex (mutex_timeout); + + do + { + pinfo p (con.owner); + if (!p) + con.owner = myself->pid; + } + while (false); + /* Open the input handle as handle_ */ bool err = false; DWORD resume_pid = attach_console (con.owner, &err); if (err) { + release_output_mutex (); set_errno (EACCES); return 0; } @@ -1759,6 +1763,7 @@ fhandler_console::open (int flags, mode_t) if (h == INVALID_HANDLE_VALUE) { + release_output_mutex (); __seterrno (); return 0; } @@ -1768,6 +1773,7 @@ fhandler_console::open (int flags, mode_t) resume_pid = attach_console (con.owner, &err); if (err) { + release_output_mutex (); set_errno (EACCES); return 0; } @@ -1778,14 +1784,16 @@ fhandler_console::open (int flags, mode_t) if (h == INVALID_HANDLE_VALUE) { + release_output_mutex (); __seterrno (); return 0; } set_output_handle (h); handle_set.output_handle = h; + release_output_mutex (); + wpbuf.init (); - setup_io_mutex (); handle_set.input_mutex = input_mutex; handle_set.output_mutex = output_mutex; @@ -1895,25 +1903,20 @@ fhandler_console::close () } } - release_output_mutex (); - - if (shared_console_info[unit] && con.owner == myself->pid - && master_thread_started) + if (shared_console_info[unit] && con.owner == myself->pid) { - char name[MAX_PATH]; - shared_name (name, CONS_THREAD_SYNC, get_minor ()); - thread_sync_event = OpenEvent (MAXIMUM_ALLOWED, FALSE, name); - con.owner = MAX_PID + 1; - WaitForSingleObject (thread_sync_event, INFINITE); - CloseHandle (thread_sync_event); + if (master_thread_started) + { + char name[MAX_PATH]; + shared_name (name, CONS_THREAD_SYNC, get_minor ()); + thread_sync_event = OpenEvent (MAXIMUM_ALLOWED, FALSE, name); + con.owner = MAX_PID + 1; + WaitForSingleObject (thread_sync_event, INFINITE); + CloseHandle (thread_sync_event); + } con.owner = 0; } - CloseHandle (input_mutex); - input_mutex = NULL; - CloseHandle (output_mutex); - output_mutex = NULL; - CloseHandle (get_handle ()); CloseHandle (get_output_handle ()); @@ -1926,6 +1929,13 @@ fhandler_console::close () || get_device () == (dev_t) myself->ctty)) free_console (); + release_output_mutex (); + + CloseHandle (input_mutex); + input_mutex = NULL; + CloseHandle (output_mutex); + output_mutex = NULL; + if (shared_console_info[unit] && myself->ctty != tc ()->ntty) { UnmapViewOfFile ((void *) shared_console_info[unit]); diff --git a/winsup/cygwin/release/3.5.2 b/winsup/cygwin/release/3.5.2 index 7d8df9489d..fd3c768ded 100644 --- a/winsup/cygwin/release/3.5.2 +++ b/winsup/cygwin/release/3.5.2 @@ -5,3 +5,7 @@ Fixes: is already unmapped due to race condition. To avoid this issue, shared console memory will be kept mapped if it belongs to CTTY. Addresses: https://cygwin.com/pipermail/cygwin/2024-February/255561.html + +- Fix a race issue between console open() and close() which is caused + by state mismatch between con.owner and console attaching state. + Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255575.html From f6be372ace889afa12163bd2c8a9cb717d7eff85 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 3 Mar 2024 13:44:17 +0900 Subject: [PATCH 658/767] Cygwin: pipe: Give up to use query_hdl for non-cygwin apps. Non-cygwin app may call ReadFile() for empty pipe, which makes NtQueryObject() for ObjectNameInformation block in fhandler_pipe:: get_query_hdl_per_process. Therefore, do not to try to get query_hdl for non-cygwin apps. Addresses: https://github.com/msys2/msys2-runtime/issues/202 Fixes: b531d6b06eeb ("Cygwin: pipe: Introduce temporary query_hdl.") Reported-by: Alisa Sireneva, Johannes Schindelin Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pipe.cc | 57 ++++++++-------------------------- winsup/cygwin/release/3.5.2 | 4 +++ 2 files changed, 17 insertions(+), 44 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 1a97108b5d..c877d89d7c 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -1197,53 +1197,24 @@ HANDLE fhandler_pipe::get_query_hdl_per_process (WCHAR *name, OBJECT_NAME_INFORMATION *ntfn) { - NTSTATUS status; - ULONG len; - DWORD n_process = 256; - PSYSTEM_PROCESS_INFORMATION spi; - do - { /* Enumerate processes */ - DWORD nbytes = n_process * sizeof (SYSTEM_PROCESS_INFORMATION); - spi = (PSYSTEM_PROCESS_INFORMATION) HeapAlloc (GetProcessHeap (), - 0, nbytes); - if (!spi) - return NULL; - status = NtQuerySystemInformation (SystemProcessInformation, - spi, nbytes, &len); - if (NT_SUCCESS (status)) - break; - HeapFree (GetProcessHeap (), 0, spi); - n_process *= 2; - } - while (n_process < (1L<<20) && status == STATUS_INFO_LENGTH_MISMATCH); - if (!NT_SUCCESS (status)) - return NULL; + winpids pids ((DWORD) 0); - /* In most cases, it is faster to check the processes in reverse order. - To do this, store PIDs into an array. */ - DWORD *proc_pids = (DWORD *) HeapAlloc (GetProcessHeap (), 0, - n_process * sizeof (DWORD)); - if (!proc_pids) + /* In most cases, it is faster to check the processes in reverse order. */ + for (LONG i = (LONG) pids.npids - 1; i >= 0; i--) { - HeapFree (GetProcessHeap (), 0, spi); - return NULL; - } - PSYSTEM_PROCESS_INFORMATION p = spi; - n_process = 0; - while (true) - { - proc_pids[n_process++] = (DWORD)(intptr_t) p->UniqueProcessId; - if (!p->NextEntryOffset) - break; - p = (PSYSTEM_PROCESS_INFORMATION) ((char *) p + p->NextEntryOffset); - } - HeapFree (GetProcessHeap (), 0, spi); + NTSTATUS status; + ULONG len; + + /* Non-cygwin app may call ReadFile() for empty pipe, which makes + NtQueryObject() for ObjectNameInformation block. Therefore, do + not try to get query_hdl for non-cygwin apps. */ + _pinfo *p = pids[i]; + if (!p || ISSTATE (p, PID_NOTCYGWIN)) + continue; - for (LONG i = (LONG) n_process - 1; i >= 0; i--) - { HANDLE proc = OpenProcess (PROCESS_DUP_HANDLE | PROCESS_QUERY_INFORMATION, - 0, proc_pids[i]); + 0, p->dwProcessId); if (!proc) continue; @@ -1307,7 +1278,6 @@ fhandler_pipe::get_query_hdl_per_process (WCHAR *name, query_hdl_proc = proc; query_hdl_value = (HANDLE)(intptr_t) phi->Handles[j].HandleValue; HeapFree (GetProcessHeap (), 0, phi); - HeapFree (GetProcessHeap (), 0, proc_pids); return h; } close_handle: @@ -1317,6 +1287,5 @@ fhandler_pipe::get_query_hdl_per_process (WCHAR *name, close_proc: CloseHandle (proc); } - HeapFree (GetProcessHeap (), 0, proc_pids); return NULL; } diff --git a/winsup/cygwin/release/3.5.2 b/winsup/cygwin/release/3.5.2 index fd3c768ded..e6782c1c00 100644 --- a/winsup/cygwin/release/3.5.2 +++ b/winsup/cygwin/release/3.5.2 @@ -9,3 +9,7 @@ Fixes: - Fix a race issue between console open() and close() which is caused by state mismatch between con.owner and console attaching state. Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255575.html + +- Fix a problem that select() call for write-side of a pipe possibly + hangs with non-cygwin reader. + Addresses: https://github.com/msys2/msys2-runtime/issues/202 From c1cf14a871528d1adba88a0128813b58d52ba926 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 8 Mar 2024 20:57:06 +0100 Subject: [PATCH 659/767] Cygwin: try to avoid recalling offline files Chances are high that Cygwin recalls offline files from remote storage, even if the file is only accessed during stat(2) or readdir(3). To avoid this - make sure Cygwin is placeholder-aware, - open files in path_conv handling, as well as in stat(2)/readdir(3) scenarios with FILE_OPEN_NO_RECALL, and - during symlink checking or testing for executablility, don't even try to open the file if one of the OFFLINE attributes is set. Reported-by: Marcin Wisnicki Signed-off-by: Corinna Vinschen --- winsup/cygwin/autoload.cc | 1 + winsup/cygwin/dcrt0.cc | 3 +++ winsup/cygwin/fhandler/disk_file.cc | 20 ++++++++++++++------ winsup/cygwin/local_includes/ntdll.h | 8 ++++++++ winsup/cygwin/local_includes/path.h | 16 +++++++++++++++- winsup/cygwin/local_includes/winlean.h | 7 +++++++ winsup/cygwin/path.cc | 17 +++++++++++++---- 7 files changed, 61 insertions(+), 11 deletions(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index 65e906e8b9..cc9dafe1b6 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -479,6 +479,7 @@ LoadDLLfuncEx (SetThreadDescription, KernelBase, 1) LoadDLLfunc (VirtualAlloc2, KernelBase) LoadDLLfunc (NtMapViewOfSectionEx, ntdll) +LoadDLLfuncEx (RtlSetProcessPlaceholderCompatibilityMode, ntdll, 1) LoadDLLfunc (ldap_bind_s, wldap32) LoadDLLfunc (ldap_count_entries, wldap32) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index fc1eec76a4..ea6a18b51d 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -809,6 +809,9 @@ dll_crt0_1 (void *) if (dynamically_loaded) sigproc_init (); + /* Call this before accessing any files. */ + RtlSetProcessPlaceholderCompatibilityMode (PHCM_EXPOSE_PLACEHOLDERS); + check_sanity_and_sync (user_data); /* Initialize malloc and then call user_shared_initialize since it relies diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index d08fe9160d..f3592148fc 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -176,7 +176,9 @@ readdir_check_reparse_point (POBJECT_ATTRIBUTES attr, bool remote) bool ret = false; status = NtOpenFile (&reph, READ_CONTROL, attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REPARSE_POINT); + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT + | FILE_OPEN_REPARSE_POINT); if (NT_SUCCESS (status)) { PREPARSE_DATA_BUFFER rp = (PREPARSE_DATA_BUFFER) tp.c_get (); @@ -328,6 +330,7 @@ fhandler_base::fstat_by_name (struct stat *buf) status = NtOpenFile (&dir, SYNCHRONIZE | FILE_LIST_DIRECTORY, &attr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT + | FILE_OPEN_NO_RECALL | FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE); if (!NT_SUCCESS (status)) @@ -616,7 +619,8 @@ fhandler_disk_file::fstatvfs (struct statvfs *sfs) opened = NT_SUCCESS (NtOpenFile (&fh, READ_CONTROL, pc.get_object_attr (attr, sec_none_nih), &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT)); + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT)); if (!opened) { /* Can't open file. Try again with parent dir. */ @@ -625,7 +629,8 @@ fhandler_disk_file::fstatvfs (struct statvfs *sfs) attr.ObjectName = &dirname; opened = NT_SUCCESS (NtOpenFile (&fh, READ_CONTROL, &attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT)); + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT)); if (!opened) goto out; } @@ -2323,7 +2328,8 @@ readdir_get_ino (const char *path, bool dot_dot) || NT_SUCCESS (NtOpenFile (&hdl, READ_CONTROL, pc.get_object_attr (attr, sec_none_nih), &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | (pc.is_known_reparse_point () ? FILE_OPEN_REPARSE_POINT : 0))) ) @@ -2372,8 +2378,9 @@ fhandler_disk_file::readdir_helper (DIR *dir, dirent *de, DWORD w32_err, Mountpoints and unknown or unhandled reparse points will be treated as normal file/directory/unknown. In all cases, returning the INO of the reparse point (not of the target) matches behavior of posix systems. + Unless the file is OFFLINE. *. */ - if (attr & FILE_ATTRIBUTE_REPARSE_POINT) + if ((attr & FILE_ATTRIBUTE_REPARSE_POINT) && !isoffline (attr)) { OBJECT_ATTRIBUTES oattr; @@ -2618,7 +2625,8 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de) &nfs_aol_ffei, sizeof nfs_aol_ffei) : NtOpenFile (&hdl, READ_CONTROL, &attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REPARSE_POINT); if (NT_SUCCESS (f_status)) { diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index 9605784e32..7737ae503c 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -169,6 +169,13 @@ extern GUID __cygwin_socket_guid; #define FILE_VC_QUOTAS_REBUILDING 0x00000200 #define FILE_VC_VALID_MASK 0x000003ff +#define PHCM_APPLICATION_DEFAULT 0 +#define PHCM_DISGUISE_PLACEHOLDER 1 +#define PHCM_EXPOSE_PLACEHOLDERS 2 +#define PHCM_MAX 2 +#define PHCM_ERROR_INVALID_PARAMETER -1 +#define PHCM_ERROR_NO_TEB -2 + /* IOCTL code to impersonate client of named pipe. */ #define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, \ @@ -1639,6 +1646,7 @@ extern "C" BOOLEAN); NTSTATUS RtlSetGroupSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID, BOOLEAN); NTSTATUS RtlSetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID, BOOLEAN); + CHAR RtlSetProcessPlaceholderCompatibilityMode (CHAR); PUCHAR RtlSubAuthorityCountSid (PSID); PULONG RtlSubAuthoritySid (PSID, ULONG); ULONG RtlUnicodeStringToAnsiSize (PUNICODE_STRING); diff --git a/winsup/cygwin/local_includes/path.h b/winsup/cygwin/local_includes/path.h index d19721e0cd..cd0cc8a412 100644 --- a/winsup/cygwin/local_includes/path.h +++ b/winsup/cygwin/local_includes/path.h @@ -23,6 +23,14 @@ has_attribute (DWORD attributes, DWORD attribs_to_test) && (attributes & attribs_to_test); } +extern inline bool +isoffline (DWORD attributes) +{ + return has_attribute (attributes, FILE_ATTRIBUTE_OFFLINE + | FILE_ATTRIBUTE_RECALL_ON_OPEN + | FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS); +} + enum executable_states { is_executable, @@ -236,6 +244,12 @@ class path_conv bool exists () const {return fileattr != INVALID_FILE_ATTRIBUTES;} bool has_attribute (DWORD x) const {return exists () && (fileattr & x);} int isdir () const {return has_attribute (FILE_ATTRIBUTE_DIRECTORY);} + bool isoffline () const + { + return has_attribute (FILE_ATTRIBUTE_OFFLINE + | FILE_ATTRIBUTE_RECALL_ON_OPEN + | FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS); + } executable_states exec_state () { extern int _check_for_executable; @@ -243,7 +257,7 @@ class path_conv return is_executable; if (mount_flags & MOUNT_NOTEXEC) return not_executable; - if (!_check_for_executable) + if (isoffline () || !_check_for_executable) return dont_care_if_executable; return dont_know_if_executable; } diff --git a/winsup/cygwin/local_includes/winlean.h b/winsup/cygwin/local_includes/winlean.h index 113b2c6b0d..947109bdee 100644 --- a/winsup/cygwin/local_includes/winlean.h +++ b/winsup/cygwin/local_includes/winlean.h @@ -97,6 +97,13 @@ details. */ #define FILE_SUPPORTS_GHOSTING 0x40000000 #endif +#ifndef FILE_ATTRIBUTE_RECALL_ON_OPEN +#define FILE_ATTRIBUTE_RECALL_ON_OPEN 0x00040000 +#endif +#ifndef FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS +#define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000 +#endif + /* So-called "Microsoft Account" SIDs (S-1-11-...) have a netbios domain name "MicrosoftAccounts". The new "Application Container SIDs" (S-1-15-...) have a netbios domain name "APPLICATION PACKAGE AUTHORITY" diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index b8e5746fdd..c0d62e5654 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -576,6 +576,7 @@ getfileattr (const char *path, bool caseinsensitive) /* path has to be always ab status = NtOpenFile (&dir, SYNCHRONIZE | FILE_LIST_DIRECTORY, &attr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT + | FILE_OPEN_NO_RECALL | FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE); if (NT_SUCCESS (status)) @@ -3191,7 +3192,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, } status = NtOpenFile (&h, READ_CONTROL | FILE_READ_ATTRIBUTES, &attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_REPARSE_POINT + FILE_OPEN_NO_RECALL + | FILE_OPEN_REPARSE_POINT | FILE_OPEN_FOR_BACKUP_INTENT); debug_printf ("%y = NtOpenFile (no-EAs %S)", status, &upath); } @@ -3319,6 +3321,7 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, status = NtOpenFile (&dir, SYNCHRONIZE | FILE_LIST_DIRECTORY, &dattr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT + | FILE_OPEN_NO_RECALL | FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE); if (!NT_SUCCESS (status)) @@ -3408,7 +3411,11 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, directory using a relative path, symlink evaluation goes totally awry. We never want a virtual drive evaluated as symlink. */ if (upath.Length <= 14) - goto file_not_symlink; + goto file_not_symlink; + + /* Offline files, even if reparse points, are not symlinks. */ + if (isoffline (fileattr)) + goto file_not_symlink; /* Reparse points are potentially symlinks. This check must be performed before checking the SYSTEM attribute for sysfile @@ -3454,7 +3461,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, status = NtOpenFile (&sym_h, SYNCHRONIZE | GENERIC_READ, &attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | FILE_SYNCHRONOUS_IO_NONALERT); if (!NT_SUCCESS (status)) res = 0; @@ -3508,7 +3516,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, status = NtOpenFile (&sym_h, SYNCHRONIZE | GENERIC_READ, &attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | FILE_SYNCHRONOUS_IO_NONALERT); if (!NT_SUCCESS (status)) From 66138cbee4ed784b4cafc00533ebb74b6cdbfff1 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 8 Mar 2024 21:30:57 +0100 Subject: [PATCH 660/767] Cygwin: get/set security descriptors using FILE_OPEN_NO_RECALL Add FILE_OPEN_NO_RECALL to NtOpenFile calls trying to fetch or write file security descriptors so as not to recall them from offline storage inadvertently. Signed-off-by: Corinna Vinschen --- winsup/cygwin/sec/base.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/sec/base.cc b/winsup/cygwin/sec/base.cc index 8b04b40b49..0fc8699bfc 100644 --- a/winsup/cygwin/sec/base.cc +++ b/winsup/cygwin/sec/base.cc @@ -65,7 +65,8 @@ get_file_sd (HANDLE fh, path_conv &pc, security_descriptor &sd, fh ? pc.init_reopen_attr (attr, fh) : pc.get_object_attr (attr, sec_none_nih), &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | pc.is_known_reparse_point () ? FILE_OPEN_REPARSE_POINT : 0); if (!NT_SUCCESS (status)) @@ -129,7 +130,8 @@ get_file_sd (HANDLE fh, path_conv &pc, security_descriptor &sd, NULL, NULL); status = NtOpenFile (&fh, READ_CONTROL, &attr, &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_REPARSE_POINT); if (!NT_SUCCESS (status)) { @@ -234,7 +236,8 @@ set_file_sd (HANDLE fh, path_conv &pc, security_descriptor &sd, bool is_chown) : pc.get_object_attr (attr, sec_none_nih), &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT + FILE_OPEN_NO_RECALL + | FILE_OPEN_FOR_BACKUP_INTENT | pc.is_known_reparse_point () ? FILE_OPEN_REPARSE_POINT : 0); if (!NT_SUCCESS (status)) From 66f7dd9ff676a17b877b7be12b3ad8d01c8eb3f3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 11 Mar 2024 12:38:39 +0100 Subject: [PATCH 661/767] Cygwin: getgrent: don't skip SAM-only builtin-accounts Since commit 15e82eef3a40b ("Cygwin: getgrent: fix local SAM enumeration on domain member machines") we skip enumerating local BUILTIN accounts if we also enumerate AD. However, there are two local accounts which are only available in local SAM, not in AD. Don't skip enumerating those. Fixes: 15e82eef3a40b ("Cygwin: getgrent: fix local SAM enumeration on domain member machines") Signed-off-by: Corinna Vinschen --- winsup/cygwin/grp.cc | 11 ++++++++--- winsup/cygwin/local_includes/winlean.h | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/grp.cc b/winsup/cygwin/grp.cc index 77cf6a72c6..5f80d7aa7e 100644 --- a/winsup/cygwin/grp.cc +++ b/winsup/cygwin/grp.cc @@ -428,10 +428,15 @@ gr_ent::enumerate_local () ((PLOCALGROUP_INFO_0) buf)[cnt++].lgrpi0_name, sid, &slen, dom, &dlen, &acc_type)) continue; - if (sid_id_auth (sid) == 5 /* SECURITY_NT_AUTHORITY */ + /* Skip builtin groups if we're enumerating AD as well to avoid + duplication. Don't skip "Power Users" and "Device Owners" + accounts, they don't show up in AD enumeration. */ + if (cygheap->dom.member_machine () + && nss_db_enum_primary () + && sid_id_auth (sid) == 5 /* SECURITY_NT_AUTHORITY */ && sid_sub_auth (sid, 0) == SECURITY_BUILTIN_DOMAIN_RID - && cygheap->dom.member_machine () - && nss_db_enum_primary ()) + && sid_sub_auth (sid, 1) != DOMAIN_ALIAS_RID_POWER_USERS + && sid_sub_auth (sid, 1) != DOMAIN_ALIAS_RID_DEVICE_OWNERS) continue; fetch_user_arg_t arg; arg.type = SID_arg; diff --git a/winsup/cygwin/local_includes/winlean.h b/winsup/cygwin/local_includes/winlean.h index 947109bdee..5bf1be262a 100644 --- a/winsup/cygwin/local_includes/winlean.h +++ b/winsup/cygwin/local_includes/winlean.h @@ -104,6 +104,10 @@ details. */ #define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000 #endif +#ifndef DOMAIN_ALIAS_RID_DEVICE_OWNERS +#define DOMAIN_ALIAS_RID_DEVICE_OWNERS (__MSABI_LONG(0x00000247)) +#endif + /* So-called "Microsoft Account" SIDs (S-1-11-...) have a netbios domain name "MicrosoftAccounts". The new "Application Container SIDs" (S-1-15-...) have a netbios domain name "APPLICATION PACKAGE AUTHORITY" From 83afe30071c0cb44db924892074010e78cb476a7 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 11 Mar 2024 12:53:24 +0100 Subject: [PATCH 662/767] Cygwin: add 3.5.2 release entries for latest commits Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.2 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/winsup/cygwin/release/3.5.2 b/winsup/cygwin/release/3.5.2 index e6782c1c00..449047d9c2 100644 --- a/winsup/cygwin/release/3.5.2 +++ b/winsup/cygwin/release/3.5.2 @@ -13,3 +13,10 @@ Fixes: - Fix a problem that select() call for write-side of a pipe possibly hangs with non-cygwin reader. Addresses: https://github.com/msys2/msys2-runtime/issues/202 + +- Avoid recalling offline files if the file is not explicitely opened + for reading or writing data. + Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255613.html + +- Don't skip inadvertently some local SAM accounts on domain member + machines. From 55431b408e7a6cb29d52ec619c38cdb6c40e2120 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 11 Mar 2024 22:08:00 +0900 Subject: [PATCH 663/767] Cygwin: pipe: Make sure to set read pipe non-blocking for cygwin apps. If pipe reader is a non-cygwin app first, and cygwin process reads the same pipe after that, the pipe has been set to bclocking mode for the cygwin app. However, the commit 9e4d308cd592 assumes the pipe for cygwin process always is non-blocking mode. With this patch, the pipe mode is reset to non-blocking when cygwin app is started. Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255644.html Fixes: 9e4d308cd592 ("Cygwin: pipe: Adopt FILE_SYNCHRONOUS_IO_NONALERT flag for read pipe.") Reported-by: wh Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pipe.cc | 63 +++++++++++++++++++++++++ winsup/cygwin/local_includes/fhandler.h | 3 ++ winsup/cygwin/spawn.cc | 34 +------------ 3 files changed, 68 insertions(+), 32 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index c877d89d7c..4c4ad03834 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -18,6 +18,7 @@ details. */ #include "pinfo.h" #include "shared_info.h" #include "tls_pbuf.h" +#include "sigproc.h" #include /* This is only to be used for writing. When reading, @@ -587,6 +588,17 @@ fhandler_pipe::fixup_after_fork (HANDLE parent) ReleaseMutex (hdl_cnt_mtx); } +void +fhandler_pipe::fixup_after_exec () +{ + /* Set read pipe itself always non-blocking for cygwin process. + Blocking/non-blocking is simulated in raw_read(). For write + pipe, follow is_nonblocking(). */ + bool mode = get_device () == FH_PIPEW ? is_nonblocking () : true; + set_pipe_non_blocking (mode); + fhandler_base::fixup_after_exec (); +} + int fhandler_pipe::dup (fhandler_base *child, int flags) { @@ -1289,3 +1301,54 @@ fhandler_pipe::get_query_hdl_per_process (WCHAR *name, } return NULL; } + +void +fhandler_pipe::spawn_worker (int fileno_stdin, int fileno_stdout, + int fileno_stderr) +{ + bool need_send_noncygchld_sig = false; + + /* spawn_worker() is called from spawn.cc only when non-cygwin app + is started. Set pipe mode blocking for the non-cygwin process. */ + int fd; + cygheap_fdenum cfd (false); + while ((fd = cfd.next ()) >= 0) + if (cfd->get_dev () == FH_PIPEW + && (fd == fileno_stdout || fd == fileno_stderr)) + { + fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; + pipe->set_pipe_non_blocking (false); + + /* Setup for query_ndl stuff. Read the comment below. */ + if (pipe->request_close_query_hdl ()) + need_send_noncygchld_sig = true; + } + else if (cfd->get_dev () == FH_PIPER && fd == fileno_stdin) + { + fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; + pipe->set_pipe_non_blocking (false); + } + + /* If multiple writers including non-cygwin app exist, the non-cygwin + app cannot detect pipe closure on the read side when the pipe is + created by system account or the pipe creator is running as service. + This is because query_hdl which is held in write side also is a read + end of the pipe, so the pipe is still alive for the non-cygwin app + even after the reader is closed. + + To avoid this problem, let all processes in the same process + group close query_hdl using internal signal __SIGNONCYGCHLD when + non-cygwin app is started. */ + if (need_send_noncygchld_sig) + { + tty_min dummy_tty; + dummy_tty.ntty = (fh_devices) myself->ctty; + dummy_tty.pgid = myself->pgid; + tty_min *t = cygwin_shared->tty.get_cttyp (); + if (!t) /* If tty is not allocated, use dummy_tty instead. */ + t = &dummy_tty; + /* Emit __SIGNONCYGCHLD to let all processes in the + process group close query_hdl. */ + t->kill_pgrp (__SIGNONCYGCHLD); + } +} diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index a21aeb7d80..87adca9629 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -1223,6 +1223,7 @@ class fhandler_pipe: public fhandler_pipe_fifo int open (int flags, mode_t mode = 0); bool open_setup (int flags); void fixup_after_fork (HANDLE); + void fixup_after_exec (); int dup (fhandler_base *child, int); void set_close_on_exec (bool val); int close (); @@ -1284,6 +1285,8 @@ class fhandler_pipe: public fhandler_pipe_fifo } return false; } + static void spawn_worker (int fileno_stdin, int fileno_stdout, + int fileno_stderr); }; #define CYGWIN_FIFO_PIPE_NAME_LEN 47 diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 77dc6dff48..d01f678c3b 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -588,38 +588,8 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, int fileno_stderr = 2; if (!iscygwin ()) - { - bool need_send_sig = false; - int fd; - cygheap_fdenum cfd (false); - while ((fd = cfd.next ()) >= 0) - if (cfd->get_dev () == FH_PIPEW - && (fd == fileno_stdout || fd == fileno_stderr)) - { - fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; - pipe->set_pipe_non_blocking (false); - if (pipe->request_close_query_hdl ()) - need_send_sig = true; - } - else if (cfd->get_dev () == FH_PIPER && fd == fileno_stdin) - { - fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; - pipe->set_pipe_non_blocking (false); - } - - if (need_send_sig) - { - tty_min dummy_tty; - dummy_tty.ntty = (fh_devices) myself->ctty; - dummy_tty.pgid = myself->pgid; - tty_min *t = cygwin_shared->tty.get_cttyp (); - if (!t) /* If tty is not allocated, use dummy_tty instead. */ - t = &dummy_tty; - /* Emit __SIGNONCYGCHLD to let all processes in the - process group close query_hdl. */ - t->kill_pgrp (__SIGNONCYGCHLD); - } - } + fhandler_pipe::spawn_worker (fileno_stdin, fileno_stdout, + fileno_stderr); bool no_pcon = mode != _P_OVERLAY && mode != _P_WAIT; term_spawn_worker.setup (iscygwin (), handle (fileno_stdin, false), From 70375b2205ba7cf5eddf4180b3d80ac8264c0e0a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 18 Mar 2024 10:50:30 +0100 Subject: [PATCH 664/767] Revert "Cygwin: glob: perform ignore_case_with_glob on input" This reverts commit a51147467e6cf58618433286f93d17043e00b0fc. Dumb thinko on my part. What was supposed to be an optimization actually broke caseinsensitive globbing in that the entire input of globbed expressions were downcased. Drop the unused CCHAR() macro nevertheless. Fixes: a51147467e6cf ("Cygwin: glob: perform ignore_case_with_glob on input") Reported-by: Michael Goldshteyn Signed-off-by: Corinna Vinschen --- winsup/cygwin/glob.cc | 22 +++------------------- winsup/cygwin/release/3.5.2 | 4 ++++ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/winsup/cygwin/glob.cc b/winsup/cygwin/glob.cc index 4730d09f55..90ec473aea 100644 --- a/winsup/cygwin/glob.cc +++ b/winsup/cygwin/glob.cc @@ -96,8 +96,6 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #ifdef __CYGWIN__ #define Cchar(c) (ignore_case_with_glob ? towlower (c) : (c)) -#else -#define Cchar(c) (c) #endif #undef MAXPATHLEN @@ -123,7 +121,6 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/glob.c,v 1.28 2010/05/12 17:44:00 gordon Ex #define SLASH '/' #define COMMA ',' -#undef DEBUG /* never define */ #ifndef DEBUG #define M_QUOTE 0x40000000U @@ -251,7 +248,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int return (GLOB_NOMATCH); else if (clen == 0) break; - *bufnext++ = Cchar(wc); + *bufnext++ = wc; patnext += clen; } } else { @@ -271,7 +268,7 @@ glob(const char *__restrict pattern, int flags, int (*errfunc)(const char *, int return (GLOB_NOMATCH); else if (clen == 0) break; - *bufnext++ = Cchar(wc) | prot; + *bufnext++ = wc | prot; patnext += clen; } } @@ -772,19 +769,6 @@ glob3(Char *pathbuf, Char *pathend, Char *pathend_last, break; sc += clen; } -#ifdef __CYGWIN__ - if (ignore_case_with_glob) { - wint_t lower_path[MAXPATHLEN]; - wint_t *lp = lower_path, *sp = pathend; - - while ((*lp++ = towlower(*sp++))) - ; - if (!match(lower_path, pattern, restpattern)) { - *pathend = EOS; - continue; - } - } else -#endif if (!match(pathend, pattern, restpattern)) { *pathend = EOS; continue; @@ -938,7 +922,7 @@ match(Char *name, Char *pat, Char *patend) return(0); break; default: - if (*name++ != *c) + if (Cchar(*name++) != Cchar(*c)) return(0); break; } diff --git a/winsup/cygwin/release/3.5.2 b/winsup/cygwin/release/3.5.2 index 449047d9c2..32137c2e68 100644 --- a/winsup/cygwin/release/3.5.2 +++ b/winsup/cygwin/release/3.5.2 @@ -20,3 +20,7 @@ Fixes: - Don't skip inadvertently some local SAM accounts on domain member machines. + +- Revert ill-advised optimization of glob(3) in case of caseinsensitive + globbing. + Addresses: https://cygwin.com/pipermail/cygwin/2024-March/255675.html From 18bd5d367131eeac7aa2804e9b0468a4b53e94e5 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 20 Mar 2024 22:59:37 +0100 Subject: [PATCH 665/767] Cygwin: tzmap-from-unicode.org: drop support for Vista/2008 Commit b794f2c6038f ("Cygwin: drop support for systems not supporting RFC 4646 locales") erroneously changed tzmap.h manually. Change the script accordingly. Fixes: b794f2c6038f ("Cygwin: drop support for systems not supporting RFC 4646 locales") Signed-off-by: Corinna Vinschen --- winsup/utils/tzmap-from-unicode.org | 8 -------- 1 file changed, 8 deletions(-) diff --git a/winsup/utils/tzmap-from-unicode.org b/winsup/utils/tzmap-from-unicode.org index 5f55a51e34..722d2ea522 100755 --- a/winsup/utils/tzmap-from-unicode.org +++ b/winsup/utils/tzmap-from-unicode.org @@ -40,13 +40,6 @@ echo " Kaliningrad Standard Time/BY" echo " SA Pacific Standard Time/HT " echo " South Africa Standard Time/LY" echo "" -echo " It also doesn't contain deprecated country codes used in older" -echo " OSes, namely:" -echo "" -echo " CS (Serbian and Montenegro, dissolved, now RS and ME) used in Vista" -echo " " -echo " While these are apparently old, they are required here to get a complete" -echo " mapping on all supported OSes. */" echo "struct" echo "{" echo " PCWSTR win_tzkey;" @@ -59,7 +52,6 @@ wget -O - "${ZONES_FILE}" | \ sed -n -e 's#territory="001"#territory=""# s#Asia/Calcutta#Asia/Kolkata# s#.*mapZone other=\("[^"]*"\) territory=\("[^"]*"\) type=\("[^"]*"\).*# { L\1, L\2, L\3 },#p' - echo ' { L"Central Europe Standard Time", L"CS", L"Europe/Belgrade" },' echo ' { L"E. Europe Standard Time", L"", L"Asia/Nicosia" },' echo ' { L"E. Europe Standard Time", L"CY", L"Asia/Nicosia" },' echo ' { L"Eastern Standard Time", L"TC", L"America/Grand_Turk" },' From 822eaf0ca8248882b6168495993caeb65218ce4f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 20 Mar 2024 23:00:02 +0100 Subject: [PATCH 666/767] Cygwin: utils: refresh tzmap.h Signed-off-by: Corinna Vinschen --- winsup/utils/tzmap.h | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/winsup/utils/tzmap.h b/winsup/utils/tzmap.h index 9021181a5b..c07a8ed1f1 100644 --- a/winsup/utils/tzmap.h +++ b/winsup/utils/tzmap.h @@ -28,8 +28,6 @@ SA Pacific Standard Time/HT South Africa Standard Time/LY - While these are apparently old, they are required here to get a complete - mapping on all supported OSes. */ struct { PCWSTR win_tzkey; @@ -103,12 +101,11 @@ struct { L"Central America Standard Time", L"NI", L"America/Managua" }, { L"Central America Standard Time", L"SV", L"America/El_Salvador" }, { L"Central America Standard Time", L"ZZ", L"Etc/GMT+6" }, - { L"Central Asia Standard Time", L"", L"Asia/Almaty" }, + { L"Central Asia Standard Time", L"", L"Asia/Bishkek" }, { L"Central Asia Standard Time", L"AQ", L"Antarctica/Vostok" }, { L"Central Asia Standard Time", L"CN", L"Asia/Urumqi" }, { L"Central Asia Standard Time", L"IO", L"Indian/Chagos" }, { L"Central Asia Standard Time", L"KG", L"Asia/Bishkek" }, - { L"Central Asia Standard Time", L"KZ", L"Asia/Almaty Asia/Qostanay" }, { L"Central Asia Standard Time", L"ZZ", L"Etc/GMT-6" }, { L"Central Brazilian Standard Time", L"", L"America/Cuiaba" }, { L"Central Brazilian Standard Time", L"BR", L"America/Cuiaba America/Campo_Grande" }, @@ -133,12 +130,12 @@ struct { L"Central Pacific Standard Time", L"VU", L"Pacific/Efate" }, { L"Central Pacific Standard Time", L"ZZ", L"Etc/GMT-11" }, { L"Central Standard Time", L"", L"America/Chicago" }, - { L"Central Standard Time", L"CA", L"America/Winnipeg America/Rainy_River America/Rankin_Inlet America/Resolute" }, - { L"Central Standard Time", L"MX", L"America/Matamoros" }, + { L"Central Standard Time", L"CA", L"America/Winnipeg America/Rankin_Inlet America/Resolute" }, + { L"Central Standard Time", L"MX", L"America/Matamoros America/Ojinaga" }, { L"Central Standard Time", L"US", L"America/Chicago America/Indiana/Knox America/Indiana/Tell_City America/Menominee America/North_Dakota/Beulah America/North_Dakota/Center America/North_Dakota/New_Salem" }, { L"Central Standard Time", L"ZZ", L"CST6CDT" }, { L"Central Standard Time (Mexico)", L"", L"America/Mexico_City" }, - { L"Central Standard Time (Mexico)", L"MX", L"America/Mexico_City America/Bahia_Banderas America/Merida America/Monterrey" }, + { L"Central Standard Time (Mexico)", L"MX", L"America/Mexico_City America/Bahia_Banderas America/Merida America/Monterrey America/Chihuahua " }, { L"Chatham Islands Standard Time", L"", L"Pacific/Chatham" }, { L"Chatham Islands Standard Time", L"NZ", L"Pacific/Chatham" }, { L"China Standard Time", L"", L"Asia/Shanghai" }, @@ -174,7 +171,7 @@ struct { L"Easter Island Standard Time", L"CL", L"Pacific/Easter" }, { L"Eastern Standard Time", L"", L"America/New_York" }, { L"Eastern Standard Time", L"BS", L"America/Nassau" }, - { L"Eastern Standard Time", L"CA", L"America/Toronto America/Iqaluit America/Montreal America/Nipigon America/Pangnirtung America/Thunder_Bay" }, + { L"Eastern Standard Time", L"CA", L"America/Toronto America/Iqaluit" }, { L"Eastern Standard Time", L"TC", L"America/Grand_Turk" }, { L"Eastern Standard Time", L"US", L"America/New_York America/Detroit America/Indiana/Petersburg America/Indiana/Vincennes America/Indiana/Winamac America/Kentucky/Monticello America/Louisville" }, { L"Eastern Standard Time", L"ZZ", L"EST5EDT" }, @@ -192,7 +189,7 @@ struct { L"FLE Standard Time", L"FI", L"Europe/Helsinki" }, { L"FLE Standard Time", L"LT", L"Europe/Vilnius" }, { L"FLE Standard Time", L"LV", L"Europe/Riga" }, - { L"FLE Standard Time", L"UA", L"Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye" }, + { L"FLE Standard Time", L"UA", L"Europe/Kiev" }, { L"Fiji Standard Time", L"", L"Pacific/Fiji" }, { L"Fiji Standard Time", L"FJ", L"Pacific/Fiji" }, { L"GMT Standard Time", L"", L"Europe/London" }, @@ -235,7 +232,6 @@ struct { L"Hawaiian Standard Time", L"CK", L"Pacific/Rarotonga" }, { L"Hawaiian Standard Time", L"PF", L"Pacific/Tahiti" }, { L"Hawaiian Standard Time", L"TK", L"Pacific/Fakaofo" }, - { L"Hawaiian Standard Time", L"UM", L"Pacific/Johnston" }, { L"Hawaiian Standard Time", L"US", L"Pacific/Honolulu" }, { L"Hawaiian Standard Time", L"ZZ", L"Etc/GMT+10" }, { L"India Standard Time", L"", L"Asia/Kolkata" }, @@ -278,12 +274,12 @@ struct { L"Morocco Standard Time", L"EH", L"Africa/El_Aaiun" }, { L"Morocco Standard Time", L"MA", L"Africa/Casablanca" }, { L"Mountain Standard Time", L"", L"America/Denver" }, - { L"Mountain Standard Time", L"CA", L"America/Edmonton America/Cambridge_Bay America/Inuvik America/Yellowknife" }, - { L"Mountain Standard Time", L"MX", L"America/Ojinaga" }, + { L"Mountain Standard Time", L"CA", L"America/Edmonton America/Cambridge_Bay America/Inuvik" }, + { L"Mountain Standard Time", L"MX", L"America/Ciudad_Juarez" }, { L"Mountain Standard Time", L"US", L"America/Denver America/Boise" }, { L"Mountain Standard Time", L"ZZ", L"MST7MDT" }, - { L"Mountain Standard Time (Mexico)", L"", L"America/Chihuahua" }, - { L"Mountain Standard Time (Mexico)", L"MX", L"America/Chihuahua America/Mazatlan" }, + { L"Mountain Standard Time (Mexico)", L"", L"America/Mazatlan" }, + { L"Mountain Standard Time (Mexico)", L"MX", L"America/Mazatlan" }, { L"Myanmar Standard Time", L"", L"Asia/Rangoon" }, { L"Myanmar Standard Time", L"CC", L"Indian/Cocos" }, { L"Myanmar Standard Time", L"MM", L"Asia/Rangoon" }, @@ -315,7 +311,7 @@ struct { L"Pacific Standard Time", L"US", L"America/Los_Angeles" }, { L"Pacific Standard Time", L"ZZ", L"PST8PDT" }, { L"Pacific Standard Time (Mexico)", L"", L"America/Tijuana" }, - { L"Pacific Standard Time (Mexico)", L"MX", L"America/Tijuana America/Santa_Isabel" }, + { L"Pacific Standard Time (Mexico)", L"MX", L"America/Tijuana" }, { L"Pakistan Standard Time", L"", L"Asia/Karachi" }, { L"Pakistan Standard Time", L"PK", L"Asia/Karachi" }, { L"Paraguay Standard Time", L"", L"America/Asuncion" }, @@ -433,7 +429,7 @@ struct { L"Taipei Standard Time", L"", L"Asia/Taipei" }, { L"Taipei Standard Time", L"TW", L"Asia/Taipei" }, { L"Tasmania Standard Time", L"", L"Australia/Hobart" }, - { L"Tasmania Standard Time", L"AU", L"Australia/Hobart Australia/Currie Antarctica/Macquarie" }, + { L"Tasmania Standard Time", L"AU", L"Australia/Hobart Antarctica/Macquarie" }, { L"Tocantins Standard Time", L"", L"America/Araguaina" }, { L"Tocantins Standard Time", L"BR", L"America/Araguaina" }, { L"Tokyo Standard Time", L"", L"Asia/Tokyo" }, @@ -534,7 +530,7 @@ struct { L"W. Mongolia Standard Time", L"MN", L"Asia/Hovd" }, { L"West Asia Standard Time", L"", L"Asia/Tashkent" }, { L"West Asia Standard Time", L"AQ", L"Antarctica/Mawson" }, - { L"West Asia Standard Time", L"KZ", L"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau" }, + { L"West Asia Standard Time", L"KZ", L"Asia/Oral Asia/Almaty Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qostanay" }, { L"West Asia Standard Time", L"MV", L"Indian/Maldives" }, { L"West Asia Standard Time", L"TF", L"Indian/Kerguelen" }, { L"West Asia Standard Time", L"TJ", L"Asia/Dushanbe" }, From c5882d818913b162bb83f49c66d47d1ebdd3bd32 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 3 Apr 2024 17:42:33 +0200 Subject: [PATCH 667/767] bump DLL version to 3.5.3 Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 48030b35d1..b39a7e5270 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -11,7 +11,7 @@ details. */ changes to the DLL and is mainly informative in nature. */ #define CYGWIN_VERSION_DLL_MAJOR 3005 -#define CYGWIN_VERSION_DLL_MINOR 2 +#define CYGWIN_VERSION_DLL_MINOR 3 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the combined DLL major and minor numbers. */ From 372eaba70d64596e2825ea2f454dd85de3e50c58 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 21 Mar 2024 21:22:49 +0100 Subject: [PATCH 668/767] Cygwin: fix tzmap-from-unicode.org The previous change introduced a missing end of comment Fixes: 60ea9c1c4b66 ("Cygwin: tzmap-from-unicode.org: drop support for Vista/2008") Signed-off-by: Corinna Vinschen --- winsup/utils/tzmap-from-unicode.org | 1 + 1 file changed, 1 insertion(+) diff --git a/winsup/utils/tzmap-from-unicode.org b/winsup/utils/tzmap-from-unicode.org index 722d2ea522..2264f02683 100755 --- a/winsup/utils/tzmap-from-unicode.org +++ b/winsup/utils/tzmap-from-unicode.org @@ -39,6 +39,7 @@ echo " Hawaiian Standard Time/TK" echo " Kaliningrad Standard Time/BY" echo " SA Pacific Standard Time/HT " echo " South Africa Standard Time/LY" +echo "*/" echo "" echo "struct" echo "{" From 6c0240b54539d5396df1c6ee0c75b213e57c67bc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 21 Mar 2024 21:24:11 +0100 Subject: [PATCH 669/767] Cygwin: tzset(1): use GetDynamicTimeZoneInformation Use official GetDynamicTimeZoneInformation() function instead of scanning the registry for the timezone keyname. Signed-off-by: Corinna Vinschen --- winsup/utils/tzset.c | 67 ++++---------------------------------------- 1 file changed, 5 insertions(+), 62 deletions(-) diff --git a/winsup/utils/tzset.c b/winsup/utils/tzset.c index d369ff7a2c..0660da7d1d 100644 --- a/winsup/utils/tzset.c +++ b/winsup/utils/tzset.c @@ -15,10 +15,6 @@ details. */ #include #include -#ifndef GEOID_NOT_AVAILABLE -#define GEOID_NOT_AVAILABLE -1 -#endif - /* The auto-generated tzmap.h contains the mapping table from Windows timezone and country per ISO 3166-1 to POSIX timezone. For more info, see the file itself. */ @@ -35,49 +31,6 @@ static struct option longopts[] = static char opts[] = "hV"; -#define REG_TZINFO L"SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation" -#define REG_TZDB L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones" - -static inline HKEY -reg_open (HKEY pkey, PCWSTR path, const char *msg) -{ - LONG ret; - HKEY hkey; - - ret = RegOpenKeyExW (pkey, path, 0, KEY_READ, &hkey); - if (ret == ERROR_SUCCESS) - return hkey; - if (msg) - fprintf (stderr, "%s: cannot open registry %s, error code %" PRIu32 "\n", - program_invocation_short_name, msg, (unsigned int) ret); - return NULL; -} - -/* For symmetry */ -#define reg_close(hkey) RegCloseKey(hkey) - -static inline BOOL -reg_query (HKEY hkey, PCWSTR value, PWCHAR buf, DWORD size, const char *msg) -{ - LONG ret; - DWORD type; - - ret = RegQueryValueExW (hkey, value, 0, &type, (LPBYTE) buf, &size); - if (ret == ERROR_SUCCESS) - return TRUE; - if (msg) - fprintf (stderr, "%s: cannot query registry %s, error code %" PRIu32 "\n", - program_invocation_short_name, msg, (unsigned int) ret); - return FALSE; -} - -static inline BOOL -reg_enum (HKEY hkey, int idx, PWCHAR name, DWORD size) -{ - return RegEnumKeyExW (hkey, idx, name, &size, NULL, NULL, NULL, NULL) - == ERROR_SUCCESS; -} - static void __attribute__ ((__noreturn__)) usage (FILE *stream) { @@ -119,8 +72,8 @@ print_version () int main (int argc, char **argv) { - HKEY hkey; - WCHAR keyname[256], country[10], *spc; + DYNAMIC_TIME_ZONE_INFORMATION tz; + WCHAR country[10], *spc; GEOID geo; int opt, idx, gotit = -1; @@ -141,18 +94,8 @@ main (int argc, char **argv) if (optind < argc) usage (stderr); - /* First fetch current timezone information from registry. */ - hkey = reg_open (HKEY_LOCAL_MACHINE, REG_TZINFO, "timezone information"); - if (!hkey) + if (GetDynamicTimeZoneInformation (&tz) == TIME_ZONE_ID_INVALID) return 1; - /* Vista introduced the TimeZoneKeyName value, which simplifies the - job a lot. */ - if (!reg_query (hkey, L"TimeZoneKeyName", keyname, sizeof keyname, NULL)) - { - reg_close (hkey); - return 1; - } - reg_close (hkey); /* We fetch the current Geo-location of the user and convert it to an ISO 3166-1 compatible nation code. */ @@ -169,7 +112,7 @@ main (int argc, char **argv) /* Now iterate over the mapping table and find the right entry. */ for (idx = 0; idx < TZMAP_SIZE; ++idx) { - if (!wcscasecmp (keyname, tzmap[idx].win_tzkey)) + if (!wcscasecmp (tz.TimeZoneKeyName, tzmap[idx].win_tzkey)) { if (gotit < 0) gotit = idx; @@ -189,7 +132,7 @@ main (int argc, char **argv) fprintf (stderr, "%s: can't find matching POSIX timezone for " "Windows timezone \"%ls\"\n", - program_invocation_short_name, keyname); + program_invocation_short_name, tz.TimeZoneKeyName); return 1; } idx = gotit; From bd11b2d97e3b164ad9d2404a6f8075459419b8d0 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 21 Mar 2024 21:43:10 +0100 Subject: [PATCH 670/767] Cygwin: tzmap-from-unicode.org: drop "E. Europe Standard Time" default E. Europe Standard Time is available in the unicode.org windowsZones.xml file, so we can drop the default handling. Fix a few comments. Signed-off-by: Corinna Vinschen --- winsup/utils/tzmap-from-unicode.org | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/utils/tzmap-from-unicode.org b/winsup/utils/tzmap-from-unicode.org index 2264f02683..6b7907a320 100755 --- a/winsup/utils/tzmap-from-unicode.org +++ b/winsup/utils/tzmap-from-unicode.org @@ -24,14 +24,15 @@ echo " This table maps Windows timezone keynames and countries per ISO 3166-1 echo " POSIX-compatible timezone IDs." echo "" echo " The mapping from unicode.org is just a bit incomplete. It doesn't contain" -echo " a few timezones available on Windows 8.1:" +echo " some (deprecated) timezones available since Windows 8.1:" echo "" -echo " E. Europe Standard Time" echo " Mid-Atlantic Standard Time" echo " Kamchatka Standard Time" echo "" echo " as well as a few combinations which got a new Windows timezone name" +echo " but may still be in use somewhere..." echo "" +echo " E. Europe Standard Time/CY" echo " Eastern Standard Time/TC" echo " Egypt Standard Time/PS" echo " Greenwich Standard Time/EH" @@ -53,7 +54,6 @@ wget -O - "${ZONES_FILE}" | \ sed -n -e 's#territory="001"#territory=""# s#Asia/Calcutta#Asia/Kolkata# s#.*mapZone other=\("[^"]*"\) territory=\("[^"]*"\) type=\("[^"]*"\).*# { L\1, L\2, L\3 },#p' - echo ' { L"E. Europe Standard Time", L"", L"Asia/Nicosia" },' echo ' { L"E. Europe Standard Time", L"CY", L"Asia/Nicosia" },' echo ' { L"Eastern Standard Time", L"TC", L"America/Grand_Turk" },' echo ' { L"Egypt Standard Time", L"PS", L"Asia/Gaza Asia/Hebron" },' From d8b21b8c77275941afcc5952fa3bb542413554ad Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 21 Mar 2024 21:43:45 +0100 Subject: [PATCH 671/767] Cygwin: utils: refresh tzmap.h Signed-off-by: Corinna Vinschen --- winsup/utils/tzmap.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/winsup/utils/tzmap.h b/winsup/utils/tzmap.h index c07a8ed1f1..7a8cf44cd9 100644 --- a/winsup/utils/tzmap.h +++ b/winsup/utils/tzmap.h @@ -12,14 +12,15 @@ POSIX-compatible timezone IDs. The mapping from unicode.org is just a bit incomplete. It doesn't contain - a few timezones available on Windows 8.1: + some (deprecated) timezones available since Windows 8.1: - E. Europe Standard Time Mid-Atlantic Standard Time Kamchatka Standard Time as well as a few combinations which got a new Windows timezone name + but may still be in use somewhere... + E. Europe Standard Time/CY Eastern Standard Time/TC Egypt Standard Time/PS Greenwich Standard Time/EH @@ -27,6 +28,7 @@ Kaliningrad Standard Time/BY SA Pacific Standard Time/HT South Africa Standard Time/LY +*/ struct { @@ -161,7 +163,6 @@ struct { L"E. Africa Standard Time", L"ZZ", L"Etc/GMT-3" }, { L"E. Australia Standard Time", L"", L"Australia/Brisbane" }, { L"E. Australia Standard Time", L"AU", L"Australia/Brisbane Australia/Lindeman" }, - { L"E. Europe Standard Time", L"", L"Asia/Nicosia" }, { L"E. Europe Standard Time", L"", L"Europe/Chisinau" }, { L"E. Europe Standard Time", L"CY", L"Asia/Nicosia" }, { L"E. Europe Standard Time", L"MD", L"Europe/Chisinau" }, From 774d20b458d04b880be8e6b0f7af349f04da7d03 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 3 Apr 2024 18:57:33 +0200 Subject: [PATCH 672/767] bump DLL version to 3.5.4 Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/cygwin/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index b39a7e5270..0f87fbc27f 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -11,7 +11,7 @@ details. */ changes to the DLL and is mainly informative in nature. */ #define CYGWIN_VERSION_DLL_MAJOR 3005 -#define CYGWIN_VERSION_DLL_MINOR 3 +#define CYGWIN_VERSION_DLL_MINOR 4 /* CYGWIN_VERSION_DLL_COMBINED gives us a single number representing the combined DLL major and minor numbers. */ From b896891b03c3ce9d385ca2343c0b526b5d7972a9 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 3 Apr 2024 19:47:13 +0200 Subject: [PATCH 673/767] Cygwin: add a fake 3.5.3 release file Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.3 | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 winsup/cygwin/release/3.5.3 diff --git a/winsup/cygwin/release/3.5.3 b/winsup/cygwin/release/3.5.3 new file mode 100644 index 0000000000..c860a86414 --- /dev/null +++ b/winsup/cygwin/release/3.5.3 @@ -0,0 +1,2 @@ +Fixing a build problem. +Refer to the 3.5.2 release file. From e00cb126944e4d4e4b5ca4a2710a52ef6503462b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 4 Apr 2024 17:36:01 +0200 Subject: [PATCH 674/767] Cygwin: FILE_OPEN_NO_RECALL is incompatible with FILE_DIRECTORY_FILE If FILE_DIRECTORY_FILE is given, FILE_OPEN_NO_RECALL is not allowed, otherwise NtCreateFile returns STATUS_INVALID_PARAMETER. Drop FILE_OPEN_NO_RECALL where FILE_DIRECTORY_FILE is specified. Fixes: f6b56abec186 ("Cygwin: try to avoid recalling offline files") Reported-by: Bruce Jerrick Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/disk_file.cc | 1 - winsup/cygwin/path.cc | 2 -- winsup/cygwin/release/3.5.4 | 6 ++++++ 3 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 winsup/cygwin/release/3.5.4 diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index f3592148fc..2cfac6be1e 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -330,7 +330,6 @@ fhandler_base::fstat_by_name (struct stat *buf) status = NtOpenFile (&dir, SYNCHRONIZE | FILE_LIST_DIRECTORY, &attr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT - | FILE_OPEN_NO_RECALL | FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE); if (!NT_SUCCESS (status)) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index c0d62e5654..1802e76f71 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -576,7 +576,6 @@ getfileattr (const char *path, bool caseinsensitive) /* path has to be always ab status = NtOpenFile (&dir, SYNCHRONIZE | FILE_LIST_DIRECTORY, &attr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT - | FILE_OPEN_NO_RECALL | FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE); if (NT_SUCCESS (status)) @@ -3321,7 +3320,6 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, status = NtOpenFile (&dir, SYNCHRONIZE | FILE_LIST_DIRECTORY, &dattr, &io, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT - | FILE_OPEN_NO_RECALL | FILE_OPEN_FOR_BACKUP_INTENT | FILE_DIRECTORY_FILE); if (!NT_SUCCESS (status)) diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 new file mode 100644 index 0000000000..e2bd025317 --- /dev/null +++ b/winsup/cygwin/release/3.5.4 @@ -0,0 +1,6 @@ +Fixes: +------ + +- Fix regression in 3.5.3 which fails to open files for stat(2) if the + file is opened exclusively by another process. + Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255811.html From 14216d5442e04f23f20318b434b3f2bc4c43ca90 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 9 Apr 2024 22:30:03 +0200 Subject: [PATCH 675/767] Cygwin: globify: read full 32 bit character While commit 0321fb573654 ("Cygwin: glob: convert wchar_t to wint_t") switched the entire glob mechanism from wchar_t to wint_t, the globify function calling glob on a DOS command line did not catch up and only checked for the next character constituting a 16 bit wchar_t. This broke reading surrogate pairs from incoming DOS command lines if the string had to go through glob(3). Check for an entire 32 bit unicode char instead. Fixes: 0321fb573654 ("Cygwin: glob: convert wchar_t to wint_t") Reported-by: David Allsopp Signed-off-by: Corinna Vinschen --- winsup/cygwin/dcrt0.cc | 3 ++- winsup/cygwin/release/3.5.4 | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index ea6a18b51d..ff7e6ec50f 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -236,12 +236,13 @@ globify (char *word, char **&argv, int &argc, int &argvlen) char quote = *s; while (*++s && *s != quote) { + mbstate_t mbs = { 0 }; if (dos_spec || *s != '\\') /* nothing */; else if (s[1] == quote || s[1] == '\\') s++; *p++ = '\\'; - size_t cnt = isascii (*s) ? 1 : mbtowc (NULL, s, MB_CUR_MAX); + size_t cnt = isascii (*s) ? 1 : mbrtowi (NULL, s, MB_CUR_MAX, &mbs); if (cnt <= 1 || cnt == (size_t)-1) *p++ = *s; else diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index e2bd025317..e1909865f3 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -4,3 +4,7 @@ Fixes: - Fix regression in 3.5.3 which fails to open files for stat(2) if the file is opened exclusively by another process. Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255811.html + +- Fix regression introduced in 3.5.0 when reading surrogate pairs (i.e., + unicode chars >= 0x10000) from the DOS command line. Addresses: + https://cygwin.com/pipermail/cygwin/2024-April/255807.html From e567e9f7c362a286fed6b378beb5f4a97b76230e Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 1 Jun 2024 15:23:37 +0900 Subject: [PATCH 676/767] Cygwin: mixer: Fix volume control for no WAVECAPS_LRVOLUME device Currently, if the device does not have capability WAVECAPS_LRVOLUME, the volume control does not work properly. This patch fixes that. Fixes: 2a4af3661470 ("Cygwin: Implement sound mixer device.") Signed-off-by: Takashi Yano --- winsup/cygwin/autoload.cc | 2 ++ winsup/cygwin/fhandler/mixer.cc | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc index cc9dafe1b6..54371d91d9 100644 --- a/winsup/cygwin/autoload.cc +++ b/winsup/cygwin/autoload.cc @@ -600,6 +600,8 @@ LoadDLLfuncEx3 (waveOutReset, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutSetVolume, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutUnprepareHeader, winmm, 1, 0, 1) LoadDLLfuncEx3 (waveOutWrite, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutMessage, winmm, 1, 0, 1) +LoadDLLfuncEx3 (waveOutGetDevCapsA, winmm, 1, 0, 1) LoadDLLfunc (accept, ws2_32) LoadDLLfunc (bind, ws2_32) diff --git a/winsup/cygwin/fhandler/mixer.cc b/winsup/cygwin/fhandler/mixer.cc index fabd397b74..f4997f952c 100644 --- a/winsup/cygwin/fhandler/mixer.cc +++ b/winsup/cygwin/fhandler/mixer.cc @@ -15,6 +15,7 @@ details. */ #include "fhandler.h" #include "dtable.h" #include "cygheap.h" +#include ssize_t fhandler_dev_mixer::write (const void *ptr, size_t len) @@ -88,7 +89,9 @@ int fhandler_dev_mixer::ioctl (unsigned int cmd, void *buf) { int ret = 0; + DWORD id, flag; DWORD vol; + WAVEOUTCAPS woc; switch (cmd) { case SOUND_MIXER_READ_DEVMASK: @@ -115,7 +118,12 @@ fhandler_dev_mixer::ioctl (unsigned int cmd, void *buf) *(int *) buf = 1 << rec_source; break; case MIXER_WRITE (SOUND_MIXER_VOLUME): + waveOutMessage ((HWAVEOUT)WAVE_MAPPER, DRVM_MAPPER_PREFERRED_GET, + (DWORD_PTR)&id, (DWORD_PTR)&flag); + waveOutGetDevCaps ((UINT)id, &woc, sizeof (woc)); vol = volume_oss_to_winmm (*(int *) buf); + if (!(woc.dwSupport & WAVECAPS_LRVOLUME)) + vol = max(vol & 0xffff, (vol >> 16) & 0xffff); if (waveOutSetVolume ((HWAVEOUT)WAVE_MAPPER, vol) != MMSYSERR_NOERROR) { set_errno (EINVAL); @@ -123,13 +131,17 @@ fhandler_dev_mixer::ioctl (unsigned int cmd, void *buf) } break; case MIXER_READ (SOUND_MIXER_VOLUME): - DWORD vol; + waveOutMessage ((HWAVEOUT)WAVE_MAPPER, DRVM_MAPPER_PREFERRED_GET, + (DWORD_PTR)&id, (DWORD_PTR)&flag); + waveOutGetDevCaps ((UINT)id, &woc, sizeof (woc)); if (waveOutGetVolume ((HWAVEOUT)WAVE_MAPPER, &vol) != MMSYSERR_NOERROR) { set_errno (EINVAL); ret = -1; break; } + if (!(woc.dwSupport & WAVECAPS_LRVOLUME)) + vol |= (vol & 0xffff) << 16; *(int *) buf = volume_winmm_to_oss (vol); break; default: From d49c6a70657ece3883c94977541deae868459f5b Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 29 May 2024 19:12:09 +0900 Subject: [PATCH 677/767] Cygwin: pthread: Fix a race issue introduced by the commit 2c5433e5da82 To avoid race issues, pthread::once() uses pthread_mutex. This caused the handle leak which was fixed by the commit 2c5433e5da82. However, this fix introduced another race issue, i.e., the mutex may be used after it is destroyed. This patch fixes the issue. Special thanks to Bruno Haible for discussing how to fix this. Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255987.html Reported-by: Bruno Haible Fixes: 2c5433e5da82 ("Cygwin: pthread: Fix handle leak in pthread_once.") Reviewed-by: Ken Brown Signed-off-by: Takashi Yano --- winsup/cygwin/local_includes/thread.h | 2 +- winsup/cygwin/release/3.5.4 | 4 +++ winsup/cygwin/thread.cc | 36 +++++++++++++++------------ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/winsup/cygwin/local_includes/thread.h b/winsup/cygwin/local_includes/thread.h index 9939c42245..b3496281ee 100644 --- a/winsup/cygwin/local_includes/thread.h +++ b/winsup/cygwin/local_includes/thread.h @@ -674,7 +674,7 @@ class pthread_once { public: pthread_mutex_t mutex; - int state; + volatile int state; }; /* shouldn't be here */ diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index e1909865f3..257e012fc6 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -8,3 +8,7 @@ Fixes: - Fix regression introduced in 3.5.0 when reading surrogate pairs (i.e., unicode chars >= 0x10000) from the DOS command line. Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255807.html + +- Fix regression of pthread::once() introduced in 3.5.0 (i.e., the race + issue regarding destroying mutex). + Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255987.html diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index 0f8327831d..0c6f570322 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -2045,27 +2045,31 @@ pthread::create (pthread_t *thread, const pthread_attr_t *attr, int pthread::once (pthread_once_t *once_control, void (*init_routine) (void)) { - // already done ? - if (once_control->state) + /* Sign bit of once_control->state is used as done flag. + Similarly, the next significant bit is used as destroyed flag. */ + const int32_t DONE = 0x80000000; + const int32_t DESTROYED = 0x40000000; + static_assert (sizeof (once_control->state) >= sizeof (int32_t)); + static_assert (sizeof (once_control->state) == sizeof (LONG)); + if (once_control->state & DONE) return 0; - pthread_mutex_lock (&once_control->mutex); - /* Here we must set a cancellation handler to unlock the mutex if needed */ - /* but a cancellation handler is not the right thing. We need this in the thread - *cleanup routine. Assumption: a thread can only be in one pthread_once routine - *at a time. Stote a mutex_t *in the pthread_structure. if that's non null unlock - *on pthread_exit (); - */ - if (!once_control->state) + /* The type of &once_control->state is int *, which is compatible with + LONG * (that is the type of the pointer argument of InterlockedXxx()). */ + if ((InterlockedIncrement (&once_control->state) & DONE) == 0) { - init_routine (); - once_control->state = 1; + pthread_mutex_lock (&once_control->mutex); + if (!(once_control->state & DONE)) + { + init_routine (); + InterlockedOr (&once_control->state, DONE); + } pthread_mutex_unlock (&once_control->mutex); - while (pthread_mutex_destroy (&once_control->mutex) == EBUSY); - return 0; } - /* Here we must remove our cancellation handler */ - pthread_mutex_unlock (&once_control->mutex); + InterlockedDecrement (&once_control->state); + if (InterlockedCompareExchange (&once_control->state, + DONE | DESTROYED, DONE) == DONE) + pthread_mutex_destroy (&once_control->mutex); return 0; } From 84dff09aa0d3ad998551e3f91c61dc0534b0b8bf Mon Sep 17 00:00:00 2001 From: Jeremy Drake via Cygwin-patches Date: Tue, 28 May 2024 10:19:22 -0700 Subject: [PATCH 678/767] Cygwin: disable high-entropy VA for ldh If ldd is run against a DLL which links to the Cygwin DLL, ldh will end up loading the Cygwin DLL dynamically, much like cygcheck or strace. Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255991.html Fixes: 60675f1a7eb2 ("Cygwin: decouple shared mem regions from Cygwin DLL") Reviewed-by: Ken Brown , Takashi Yano Signed-off-by: Jeremy Drake --- winsup/cygwin/release/3.5.4 | 3 +++ winsup/utils/mingw/Makefile.am | 1 + 2 files changed, 4 insertions(+) diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index 257e012fc6..2a5f2b1bda 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -12,3 +12,6 @@ Fixes: - Fix regression of pthread::once() introduced in 3.5.0 (i.e., the race issue regarding destroying mutex). Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255987.html + +- Fix a problem that ldd command against cygwin DLLs sometimes hangs. + Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255991.html diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am index d9557d8b50..7f7317ae15 100644 --- a/winsup/utils/mingw/Makefile.am +++ b/winsup/utils/mingw/Makefile.am @@ -38,6 +38,7 @@ cygcheck_LDADD = -lz -lwininet -lshlwapi -lpsapi -lntdll cygwin_console_helper_SOURCES = cygwin-console-helper.cc ldh_SOURCES = ldh.cc +ldh_LDFLAGS = ${AM_LDFLAGS} -Wl,--disable-high-entropy-va strace_SOURCES = \ path.cc \ From d1670f1e963039d0f16cfc30abdcea118b65504e Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Fri, 7 Jun 2024 17:29:10 +0100 Subject: [PATCH 679/767] Cygwin: suppress a warning generated with w32api >= 12.0.0 w32api 12.0.0 adds the returns_twice attribute to RtlCaptureContext(). There's some data-flow interaction with using it inside a while loop which causes a maybe-uninitialized warning. ../../../../winsup/cygwin/exceptions.cc: In member function 'int _cygtls::call_signal_handler()': ../../../../winsup/cygwin/exceptions.cc:1720:33: error: '' may be used uninitialized in this function [-Werror=maybe-uninitialized] (cherry picked from commit 7e3c833592b282355a57dd34459b152e4e078d19) --- winsup/cygwin/exceptions.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index a2a6f9d4c5..28d0431d52 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1717,7 +1717,10 @@ _cygtls::call_signal_handler () context, unwind to the caller and in case we're called from sigdelayed, fix the instruction pointer accordingly. */ context.uc_mcontext.ctxflags = CONTEXT_FULL; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" RtlCaptureContext ((PCONTEXT) &context.uc_mcontext); +#pragma GCC diagnostic pop __unwind_single_frame ((PCONTEXT) &context.uc_mcontext); if (stackptr > stack) { From 40f751e1f4bebfb6579291d6bf8d0bb32726c684 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 28 Jun 2024 13:42:03 +0900 Subject: [PATCH 680/767] Cygwin: dsp: Fix incorrect openflags when opening multiple /dev/dsp Previously, the following steps failed with error: 1) Open /dev/dsp with O_RDONLY 2) Open /dev/dsp with O_WRONLY 3) Issue SNDCTL_DSP_GETOSPACE ioctl() for 2) This is because IS_WRITE() returns false for 2) due to incorrect openflags handling in archetype instance. This patch fixes the issue by adding open_setup() to fhandler_dev_dsp to set openflags correctly for each instance. Fixes: 92ddb7429065 ("* fhandler_dsp.cc (fhandler_dev_dsp::open): Remove archetype handling.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/dsp.cc | 26 +++++++++++++++---------- winsup/cygwin/local_includes/fhandler.h | 7 ++++--- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/winsup/cygwin/fhandler/dsp.cc b/winsup/cygwin/fhandler/dsp.cc index 59c11ac230..605a048f39 100644 --- a/winsup/cygwin/fhandler/dsp.cc +++ b/winsup/cygwin/fhandler/dsp.cc @@ -1026,19 +1026,19 @@ fhandler_dev_dsp::fhandler_dev_dsp (): ssize_t fhandler_dev_dsp::write (const void *ptr, size_t len) { - return base ()->_write (ptr, len); + return base ()->_write (ptr, len, this); } void fhandler_dev_dsp::read (void *ptr, size_t& len) { - base ()->_read (ptr, len); + base ()->_read (ptr, len, this); } int fhandler_dev_dsp::ioctl (unsigned int cmd, void *buf) { - return base ()->_ioctl (cmd, buf); + return base ()->_ioctl (cmd, buf, this); } int @@ -1065,7 +1065,6 @@ fhandler_dev_dsp::open (int flags, mode_t mode) { int ret = -1, err = 0; UINT num_in = 0, num_out = 0; - set_flags ((flags & ~O_TEXT) | O_BINARY); // Work out initial sample format & frequency, /dev/dsp defaults audioformat_ = AFMT_U8; audiofreq_ = 8000; @@ -1105,11 +1104,11 @@ fhandler_dev_dsp::open (int flags, mode_t mode) return ret; } -#define IS_WRITE() ((get_flags() & O_ACCMODE) != O_RDONLY) -#define IS_READ() ((get_flags() & O_ACCMODE) != O_WRONLY) +#define IS_WRITE() ((fh->get_flags() & O_ACCMODE) != O_RDONLY) +#define IS_READ() ((fh->get_flags() & O_ACCMODE) != O_WRONLY) ssize_t -fhandler_dev_dsp::_write (const void *ptr, size_t len) +fhandler_dev_dsp::_write (const void *ptr, size_t len, fhandler_dev_dsp *fh) { debug_printf ("ptr=%p len=%ld", ptr, len); int len_s = len; @@ -1168,7 +1167,7 @@ fhandler_dev_dsp::_write (const void *ptr, size_t len) } void -fhandler_dev_dsp::_read (void *ptr, size_t& len) +fhandler_dev_dsp::_read (void *ptr, size_t& len, fhandler_dev_dsp *fh) { debug_printf ("ptr=%p len=%ld", ptr, len); @@ -1244,7 +1243,7 @@ fhandler_dev_dsp::close () } int -fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) +fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf, fhandler_dev_dsp *fh) { debug_printf ("audio_in=%p audio_out=%p", audio_in_, audio_out_); int *intbuf = (int *) buf; @@ -1349,7 +1348,7 @@ fhandler_dev_dsp::_ioctl (unsigned int cmd, void *buf) CASE (SNDCTL_DSP_STEREO) { int nChannels = *intbuf + 1; - int res = _ioctl (SNDCTL_DSP_CHANNELS, &nChannels); + int res = _ioctl (SNDCTL_DSP_CHANNELS, &nChannels, fh); *intbuf = nChannels - 1; return res; } @@ -1547,3 +1546,10 @@ fhandler_dev_dsp::read_ready () { return base ()->_read_ready (); } + +bool +fhandler_dev_dsp::open_setup (int flags) +{ + set_flags ((flags & ~O_TEXT) | O_BINARY); + return fhandler_base::open_setup (flags); +} diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 87adca9629..020b5ec072 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2870,11 +2870,12 @@ class fhandler_dev_dsp: public fhandler_base int close (); void fixup_after_fork (HANDLE); void fixup_after_exec (); + bool open_setup (int); private: - ssize_t _write (const void *, size_t); - void _read (void *, size_t&); - int _ioctl (unsigned int, void *); + ssize_t _write (const void *, size_t, fhandler_dev_dsp *); + void _read (void *, size_t&, fhandler_dev_dsp *); + int _ioctl (unsigned int, void *, fhandler_dev_dsp *); int _fcntl (int cmd, intptr_t); void _fixup_after_fork (HANDLE); void _fixup_after_exec (); From 936c0624462b4bfa023974e7dfa07a9d4c90f476 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 29 Jun 2024 19:03:20 +0900 Subject: [PATCH 681/767] Cygwin: console: Add error handling for thread_sync_event Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 51 ++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 1c0d5c815c..881445824a 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -272,17 +272,23 @@ cons_master_thread (VOID *arg) fhandler_console::handle_set_t handle_set; fh->get_duplicated_handle_set (&handle_set); HANDLE thread_sync_event; - DuplicateHandle (GetCurrentProcess (), fh->thread_sync_event, - GetCurrentProcess (), &thread_sync_event, - 0, FALSE, DUPLICATE_SAME_ACCESS); - SetEvent (thread_sync_event); - master_thread_started = true; - /* Do not touch class members after here because the class instance - may have been destroyed. */ - fhandler_console::cons_master_thread (&handle_set, ttyp); - fhandler_console::close_handle_set (&handle_set); - SetEvent (thread_sync_event); - CloseHandle (thread_sync_event); + if (DuplicateHandle (GetCurrentProcess (), fh->thread_sync_event, + GetCurrentProcess (), &thread_sync_event, + 0, FALSE, DUPLICATE_SAME_ACCESS)) + { + SetEvent (thread_sync_event); + master_thread_started = true; + /* Do not touch class members after here because the class instance + may have been destroyed. */ + fhandler_console::cons_master_thread (&handle_set, ttyp); + fhandler_console::close_handle_set (&handle_set); + SetEvent (thread_sync_event); + CloseHandle (thread_sync_event); + master_thread_started = false; + } + else + debug_printf ("cons_master_thread not started because thread_sync_event " + "could not be duplicated %08x", GetLastError ()); return 0; } @@ -451,6 +457,8 @@ fhandler_console::cons_master_thread (handle_set_t *p, tty *ttyp) case WAIT_CANCELED: break; default: /* Error */ + free (input_rec); + free (input_tmp); ReleaseMutex (p->input_mutex); return; } @@ -1847,9 +1855,12 @@ fhandler_console::open (int flags, mode_t) char name[MAX_PATH]; shared_name (name, CONS_THREAD_SYNC, get_minor ()); thread_sync_event = CreateEvent(NULL, FALSE, FALSE, name); - new cygthread (::cons_master_thread, this, "consm"); - WaitForSingleObject (thread_sync_event, INFINITE); - CloseHandle (thread_sync_event); + if (thread_sync_event) + { + new cygthread (::cons_master_thread, this, "consm"); + WaitForSingleObject (thread_sync_event, INFINITE); + CloseHandle (thread_sync_event); + } } return 1; } @@ -1910,9 +1921,15 @@ fhandler_console::close () char name[MAX_PATH]; shared_name (name, CONS_THREAD_SYNC, get_minor ()); thread_sync_event = OpenEvent (MAXIMUM_ALLOWED, FALSE, name); - con.owner = MAX_PID + 1; - WaitForSingleObject (thread_sync_event, INFINITE); - CloseHandle (thread_sync_event); + if (thread_sync_event) + { + con.owner = MAX_PID + 1; + WaitForSingleObject (thread_sync_event, INFINITE); + CloseHandle (thread_sync_event); + } + else + debug_printf ("Failed to open thread_sync_event %08x", + GetLastError ()); } con.owner = 0; } From a92abb528266649c7b805885568bccb2acea5769 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 30 Jun 2024 08:38:11 +0900 Subject: [PATCH 682/767] Cygwin: console: Add debug print on thread_sync_event creation error Fixes: 55baaac2ef5f ("Cygwin: console: Add error handling for thread_sync_event") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 881445824a..dbf6ce8a68 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -1861,6 +1861,9 @@ fhandler_console::open (int flags, mode_t) WaitForSingleObject (thread_sync_event, INFINITE); CloseHandle (thread_sync_event); } + else + debug_printf ("Failed to create thread_sync_event %08x", + GetLastError ()); } return 1; } From 49018bf5774fc90ddddc762a8462030c5d528643 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 1 Jul 2024 17:44:53 +0900 Subject: [PATCH 683/767] Cygwin: pty: Avoid client deadlock when pty master stops to read. Previsouly, the following commands hangs: mintty -e timeout 1 dash -c 'yes aaaaaaaaaaaaaaaaaaaaaaaaa | cat' The mechanism is as follows. When the child process (timeout) is terminated, mintty seems to stop reading pty master even if yes or cat still alive. If the the pipe used to transfer output from pty slave to pty master is full due to lack of master reader, WriteFile() to the pipe is blocked. WriteFile() cannot be canceled by cygwin signal, therefore, pty slave hangs. This patch avoids hanging by checking pipe space before calling WriteFile() and prevents writing data more than space. Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256178.html Reported-by: jojelino Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/pty.cc | 25 ++++++++++++++++++++++--- winsup/cygwin/release/3.5.4 | 4 ++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index 9d7ef3c9d1..fa6bf10961 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -3118,8 +3118,22 @@ fhandler_pty_common::process_opost_output (HANDLE h, const void *ptr, return res; /* Discard write data */ while (towrite) { + ssize_t space = towrite; if (!is_echo) { + IO_STATUS_BLOCK iosb = {{0}, 0}; + FILE_PIPE_LOCAL_INFORMATION fpli = {0}; + NTSTATUS status; + + status = NtQueryInformationFile (h, &iosb, &fpli, sizeof (fpli), + FilePipeLocalInformation); + if (!NT_SUCCESS (status)) + { + if (towrite < len) + break; + len = -1; + return FALSE; + } if (ttyp->output_stopped && is_nonblocking) { if (towrite < len) @@ -3131,13 +3145,18 @@ fhandler_pty_common::process_opost_output (HANDLE h, const void *ptr, return TRUE; } } - while (ttyp->output_stopped) - cygwait (10); + if (ttyp->output_stopped || fpli.WriteQuotaAvailable == 0) + { + cygwait (1); + continue; + } + space = fpli.WriteQuotaAvailable; } if (!(ttyp->ti.c_oflag & OPOST)) // raw output mode { DWORD n = MIN (OUT_BUFFER_SIZE, towrite); + n = MIN (n, space); res = WriteFile (h, ptr, n, &n, NULL); if (!res) break; @@ -3150,7 +3169,7 @@ fhandler_pty_common::process_opost_output (HANDLE h, const void *ptr, char *buf = (char *)ptr; DWORD n = 0; ssize_t rc = 0; - while (n < OUT_BUFFER_SIZE && rc < towrite) + while (n < OUT_BUFFER_SIZE && n < space && rc < towrite) { switch (buf[rc]) { diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index 2a5f2b1bda..17db611468 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -15,3 +15,7 @@ Fixes: - Fix a problem that ldd command against cygwin DLLs sometimes hangs. Addresses: https://cygwin.com/pipermail/cygwin/2024-May/255991.html + +- Fix a problem that pty slave hangs on writing when pty master stops + to read. + Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256178.html From a8300a6c4ee7c25582cd7b9b7e0136f5ff28ee54 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Wed, 3 Jul 2024 22:35:20 +0900 Subject: [PATCH 684/767] Cygwin: console: Fix conflict on shared names between sessions. Previously, shared names in the console were created using get_minor(). However, get_minor() was not unique to the console across sessions. This is because EnumWindows(), which is used to look for console windows, cannot enumerate windows across sessions. This causes conflict on the shared names between sessions (e.g. sessions of different users, different services, a service and a user session, etc.). With this patch, GetConsoleWindow() is used instead of get_minor(). GetConsoleWindow() has been used for the name of shared memory, which should be unique to each console. Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255893.html Fixes: ff4440fcf768 ("Cygwin: console: Introduce new thread which handles input signal."); Reported-by: Johannes Khoshnazar-Thoma Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 15 +++++++++++---- winsup/cygwin/release/3.5.4 | 3 +++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index dbf6ce8a68..7945a32eba 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -66,6 +66,13 @@ static struct fhandler_base::rabuf_t con_ra; in xterm compatible mode */ static wchar_t last_char; +static char * +cons_shared_name (char *ret_buf, const char *str, HWND hw) +{ + __small_sprintf (ret_buf, "%s.%p", str, hw); + return ret_buf; +} + DWORD fhandler_console::attach_console (pid_t owner, bool *err) { @@ -922,7 +929,7 @@ fhandler_console::setup_io_mutex (void) res = WAIT_FAILED; if (!input_mutex || WAIT_FAILED == (res = acquire_input_mutex (0))) { - shared_name (buf, "cygcons.input.mutex", get_minor ()); + cons_shared_name (buf, "cygcons.input.mutex", GetConsoleWindow ()); input_mutex = OpenMutex (MAXIMUM_ALLOWED, TRUE, buf); if (!input_mutex) input_mutex = CreateMutex (&sec_none, FALSE, buf); @@ -938,7 +945,7 @@ fhandler_console::setup_io_mutex (void) res = WAIT_FAILED; if (!output_mutex || WAIT_FAILED == (res = acquire_output_mutex (0))) { - shared_name (buf, "cygcons.output.mutex", get_minor ()); + cons_shared_name (buf, "cygcons.output.mutex", GetConsoleWindow ()); output_mutex = OpenMutex (MAXIMUM_ALLOWED, TRUE, buf); if (!output_mutex) output_mutex = CreateMutex (&sec_none, FALSE, buf); @@ -1853,7 +1860,7 @@ fhandler_console::open (int flags, mode_t) if (GetModuleHandle ("ConEmuHk64.dll")) hook_conemu_cygwin_connector (); char name[MAX_PATH]; - shared_name (name, CONS_THREAD_SYNC, get_minor ()); + cons_shared_name (name, CONS_THREAD_SYNC, GetConsoleWindow ()); thread_sync_event = CreateEvent(NULL, FALSE, FALSE, name); if (thread_sync_event) { @@ -1922,7 +1929,7 @@ fhandler_console::close () if (master_thread_started) { char name[MAX_PATH]; - shared_name (name, CONS_THREAD_SYNC, get_minor ()); + cons_shared_name (name, CONS_THREAD_SYNC, GetConsoleWindow ()); thread_sync_event = OpenEvent (MAXIMUM_ALLOWED, FALSE, name); if (thread_sync_event) { diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index 17db611468..c95ef4635b 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -19,3 +19,6 @@ Fixes: - Fix a problem that pty slave hangs on writing when pty master stops to read. Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256178.html + +- Fix conflict on shared name in console between sessions. + Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255893.html From 186ee9b67607deeb19993385bc2c07ba20050237 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 6 Jul 2024 13:50:51 +0900 Subject: [PATCH 685/767] Cygwin: console: Fixes an issue that tmux can not run on the console. After the commit c77a5689f7bd, tmux can not run on the console. This patch replaces the countermeasure for the race issue between console setup and close with another mechanism using a mutex. Fixes: c77a5689f7bd ("Cygwin: console: Do not unmap shared console memory belonging to ctty.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 7945a32eba..a870b741c0 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -48,6 +48,9 @@ details. */ con.b.srWindow.Top + con.scroll_region.Bottom) #define con_is_legacy (shared_console_info[unit] && con.is_legacy) +static HANDLE NO_COPY shared_info_mutex; +static int NO_COPY shared_info_state; + #define CONS_THREAD_SYNC "cygcons.thread_sync" static bool NO_COPY master_thread_started = false; @@ -665,6 +668,12 @@ fhandler_console::set_unit () else if (myself->ctty != CTTY_UNINITIALIZED) unit = device::minor (myself->ctty); + if (!shared_info_mutex) + shared_info_mutex = CreateMutex (&sec_none_nih, FALSE, NULL); + + WaitForSingleObject (shared_info_mutex, INFINITE); + shared_info_state++; + if (shared_console_info[unit]) ; /* Do nothing */ else if (generic_console @@ -698,6 +707,8 @@ fhandler_console::set_unit () } } } + ReleaseMutex (shared_info_mutex); + if (shared_console_info[unit]) { devset = (fh_devices) shared_console_info[unit]->tty_min_state.getntty (); @@ -1963,11 +1974,13 @@ fhandler_console::close () CloseHandle (output_mutex); output_mutex = NULL; - if (shared_console_info[unit] && myself->ctty != tc ()->ntty) + WaitForSingleObject (shared_info_mutex, INFINITE); + if (--shared_info_state == 0 && shared_console_info[unit]) { UnmapViewOfFile ((void *) shared_console_info[unit]); shared_console_info[unit] = NULL; } + ReleaseMutex (shared_info_mutex); return 0; } From ec71ae7a4bb1324ece373f9b4d67d84eabf1d7c6 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 7 Jul 2024 00:16:29 +0900 Subject: [PATCH 686/767] Cygwin: console: Bug fix for the last console code change The commit baf2764dca43 has a serious bug that shared_info_state is common for all console devices despite it should be individual for each console device. This patch fixes that. Fixes: baf2764dca43 ("Cygwin: console: Fixes an issue that tmux can not run on the console.") Signed-off-by: Takashi Yano --- winsup/cygwin/fhandler/console.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index a870b741c0..6028559b29 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -49,7 +49,7 @@ details. */ #define con_is_legacy (shared_console_info[unit] && con.is_legacy) static HANDLE NO_COPY shared_info_mutex; -static int NO_COPY shared_info_state; +static int NO_COPY shared_info_state[MAX_CONS_DEV]; #define CONS_THREAD_SYNC "cygcons.thread_sync" static bool NO_COPY master_thread_started = false; @@ -672,7 +672,6 @@ fhandler_console::set_unit () shared_info_mutex = CreateMutex (&sec_none_nih, FALSE, NULL); WaitForSingleObject (shared_info_mutex, INFINITE); - shared_info_state++; if (shared_console_info[unit]) ; /* Do nothing */ @@ -682,7 +681,10 @@ fhandler_console::set_unit () else { if (!generic_console && (dev_t) myself->ctty != get_device ()) - shared_console_info[unit] = console_unit (unit); + { + shared_console_info[unit] = console_unit (unit); + shared_info_state[unit]++; + } if (generic_console || !shared_console_info[unit]) { me = GetConsoleWindow (); @@ -693,6 +695,7 @@ fhandler_console::set_unit () created = true; fhandler_console::console_state *cs = open_shared_console (me, cygheap->console_h, created); + shared_info_state[unit]++; ProtectHandleINH (cygheap->console_h); if (created) { @@ -1975,7 +1978,7 @@ fhandler_console::close () output_mutex = NULL; WaitForSingleObject (shared_info_mutex, INFINITE); - if (--shared_info_state == 0 && shared_console_info[unit]) + if (--shared_info_state[unit] == 0 && shared_console_info[unit]) { UnmapViewOfFile ((void *) shared_console_info[unit]); shared_console_info[unit] = NULL; From cc9dcdb11583f9625c2a5ef2f99b588976452f29 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 7 Jul 2024 00:34:44 +0900 Subject: [PATCH 687/767] Cygwin: console: Fix race issue on allocating console simultaneously. Previously, if two or more processes request to allocate a console at the same time, the same device number could be accidentally allocated. This patch fixes the issue by creating a named mutex (input_mutex) and checking if GetLastError() is ERROR_ALREADY_EXIST or not to ensure the unit number will be allocated in an atomic way. Thanks to this, EnumWindow() is not necessary anymore to scan console units. This also makes minor device numbers unique and console devices visible across sessions. This disallows duplicated device number for different sessions, so the MAX_CONS_DEV has been increased from 64 to 128. Additionally, the console allocation and scanning will be faster as a side effect of eliminating EnumWindows(). Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Signed-off-by: Takashi Yano (cherry picked from commit 10477d95ec401213d5bded5ae3600ab0d2d5ed94) --- winsup/cygwin/devices.cc | 4 +- winsup/cygwin/devices.in | 4 +- winsup/cygwin/fhandler/console.cc | 84 +++++++++++----------- winsup/cygwin/local_includes/fhandler.h | 13 +--- winsup/cygwin/local_includes/shared_info.h | 3 +- winsup/cygwin/local_includes/tty.h | 5 ++ 6 files changed, 57 insertions(+), 56 deletions(-) diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index d4c003baca..6eb6a41d16 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -83,8 +83,8 @@ exists_console (const device& dev) default: if (dev.get_minor () < MAX_CONS_DEV) { - unsigned long bitmask = fhandler_console::console_unit (CONS_LIST_USED); - return !!(bitmask & (1UL << dev.get_minor ())); + int n = fhandler_console::console_unit (dev.get_minor ()); + return (n == dev.get_minor ()); } return false; } diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index a86e5015f2..ea9a70e1b5 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -79,8 +79,8 @@ exists_console (const device& dev) default: if (dev.get_minor () < MAX_CONS_DEV) { - unsigned long bitmask = fhandler_console::console_unit (CONS_LIST_USED); - return !!(bitmask & (1UL << dev.get_minor ())); + int n = fhandler_console::console_unit (dev.get_minor ()); + return (n == dev.get_minor ()); } return false; } diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 6028559b29..8c08a8af89 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -69,13 +69,6 @@ static struct fhandler_base::rabuf_t con_ra; in xterm compatible mode */ static wchar_t last_char; -static char * -cons_shared_name (char *ret_buf, const char *str, HWND hw) -{ - __small_sprintf (ret_buf, "%s.%p", str, hw); - return ret_buf; -} - DWORD fhandler_console::attach_console (pid_t owner, bool *err) { @@ -234,44 +227,52 @@ fhandler_console::open_shared_console (HWND hw, HANDLE& h, bool& created) return res; } -BOOL CALLBACK -fhandler_console::enum_windows (HWND hw, LPARAM lp) +fhandler_console::console_unit::console_unit (int n0, HANDLE *input_mutex) : + n (-1) { - console_unit *this1 = (console_unit *) lp; - HANDLE h = NULL; - fhandler_console::console_state *cs; - if ((cs = fhandler_console::open_shared_console (hw, h))) + char buf[MAX_PATH]; + for (int i = max(0, n0); i < MAX_CONS_DEV; i++) { - CloseHandle (h); - if (major (cs->tty_min_state.getntty ()) == DEV_CONS_MAJOR) - this1->bitmask |= 1UL << minor (cs->tty_min_state.getntty ()); - if (this1->n == minor (cs->tty_min_state.getntty ())) + shared_name (buf, "cygcons.input.mutex", i); + SetLastError (ERROR_SUCCESS); + HANDLE input_mutex0 = CreateMutex (&sec_none, FALSE, buf); + DWORD err = GetLastError (); + if (err == ERROR_ALREADY_EXISTS || err == ERROR_ACCESS_DENIED) { - this1->shared_console_info = cs; - return FALSE; + if (n0 >= 0) + n = i; } - UnmapViewOfFile ((void *) cs); + else if (n0 == CONS_SCAN_UNUSED) + { + n = i; + if (input_mutex) + *input_mutex = input_mutex0; + break; + } + if (input_mutex0) + CloseHandle (input_mutex0); + if (n0 >= 0) + break; } - else - { /* Only for ConEmu */ - char class_hw[32]; - if (19 == GetClassName (hw, class_hw, sizeof (class_hw)) - && 0 == strcmp (class_hw, "VirtualConsoleClass")) - EnumChildWindows (hw, fhandler_console::enum_windows, lp); + if (n0 == CONS_SCAN_UNUSED && n < 0) + { + __small_sprintf (buf, "console device allocation failure - " + "too many consoles in use, max consoles is %d", + MAX_CONS_DEV); + api_fatal (buf); } - return TRUE; } -fhandler_console::console_unit::console_unit (int n0): - n (n0), bitmask (0), shared_console_info (NULL) +fhandler_console::console_unit::operator console_state * () const { - EnumWindows (fhandler_console::enum_windows, (LPARAM) this); - if (n0 == CONS_SCAN_UNUSED && (n = ffsl (~bitmask) - 1) < 0) - api_fatal (sizeof (bitmask) == 8 ? - "console device allocation failure - " - "too many consoles in use, max consoles is 64" : - "console device allocation failure - " - "too many consoles in use, max consoles is 32"); + if (n < 0 || n >= MAX_CONS_DEV) + return NULL; + HANDLE h = NULL; + fhandler_console::console_state *cs; + HWND hw = cygwin_shared->cons_hwnd[n]; + if ((cs = fhandler_console::open_shared_console (hw, h))) + CloseHandle (h); + return cs; } static DWORD @@ -699,7 +700,8 @@ fhandler_console::set_unit () ProtectHandleINH (cygheap->console_h); if (created) { - unit = console_unit (CONS_SCAN_UNUSED); + unit = console_unit (CONS_SCAN_UNUSED, &input_mutex); + cygwin_shared->cons_hwnd[unit] = me; cs->tty_min_state.setntty (DEV_CONS_MAJOR, unit); } else @@ -943,7 +945,7 @@ fhandler_console::setup_io_mutex (void) res = WAIT_FAILED; if (!input_mutex || WAIT_FAILED == (res = acquire_input_mutex (0))) { - cons_shared_name (buf, "cygcons.input.mutex", GetConsoleWindow ()); + shared_name (buf, "cygcons.input.mutex", get_minor ()); input_mutex = OpenMutex (MAXIMUM_ALLOWED, TRUE, buf); if (!input_mutex) input_mutex = CreateMutex (&sec_none, FALSE, buf); @@ -959,7 +961,7 @@ fhandler_console::setup_io_mutex (void) res = WAIT_FAILED; if (!output_mutex || WAIT_FAILED == (res = acquire_output_mutex (0))) { - cons_shared_name (buf, "cygcons.output.mutex", GetConsoleWindow ()); + shared_name (buf, "cygcons.output.mutex", get_minor ()); output_mutex = OpenMutex (MAXIMUM_ALLOWED, TRUE, buf); if (!output_mutex) output_mutex = CreateMutex (&sec_none, FALSE, buf); @@ -1874,7 +1876,7 @@ fhandler_console::open (int flags, mode_t) if (GetModuleHandle ("ConEmuHk64.dll")) hook_conemu_cygwin_connector (); char name[MAX_PATH]; - cons_shared_name (name, CONS_THREAD_SYNC, GetConsoleWindow ()); + shared_name (name, CONS_THREAD_SYNC, get_minor ()); thread_sync_event = CreateEvent(NULL, FALSE, FALSE, name); if (thread_sync_event) { @@ -1943,7 +1945,7 @@ fhandler_console::close () if (master_thread_started) { char name[MAX_PATH]; - cons_shared_name (name, CONS_THREAD_SYNC, GetConsoleWindow ()); + shared_name (name, CONS_THREAD_SYNC, get_minor ()); thread_sync_event = OpenEvent (MAXIMUM_ALLOWED, FALSE, name); if (thread_sync_event) { diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 020b5ec072..3d819f49b5 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2180,10 +2180,6 @@ class dev_console friend class fhandler_console; }; -#define MAX_CONS_DEV (sizeof (unsigned long) * 8) -#define CONS_SCAN_UNUSED (-1) -#define CONS_LIST_USED (-2) - /* This is a input and output console handle */ class fhandler_console: public fhandler_termios { @@ -2376,13 +2372,10 @@ class fhandler_console: public fhandler_termios class console_unit { int n; - unsigned long bitmask; - console_state *shared_console_info; public: - operator console_state * () const {return shared_console_info;} - operator unsigned long () const {return n == CONS_LIST_USED ? bitmask : n;} - console_unit (int); - friend BOOL CALLBACK fhandler_console::enum_windows (HWND, LPARAM); + operator console_state * () const; + operator int () const { return n; } + console_unit (int, HANDLE *input_mutex = NULL); }; friend tty_min * tty_list::get_cttyp (); diff --git a/winsup/cygwin/local_includes/shared_info.h b/winsup/cygwin/local_includes/shared_info.h index cbe55a2788..4316717a98 100644 --- a/winsup/cygwin/local_includes/shared_info.h +++ b/winsup/cygwin/local_includes/shared_info.h @@ -33,7 +33,7 @@ class user_info /* Data accessible to all tasks */ -#define CURR_SHARED_MAGIC 0x9f33cc5dU +#define CURR_SHARED_MAGIC 0x205f4579U #define USER_VERSION 1 @@ -46,6 +46,7 @@ class shared_info DWORD cb; public: tty_list tty; + HWND cons_hwnd[MAX_CONS_DEV]; LONG last_used_bindresvport; DWORD obcaseinsensitive; mtinfo mt; diff --git a/winsup/cygwin/local_includes/tty.h b/winsup/cygwin/local_includes/tty.h index df3bf60bf4..53fa26b449 100644 --- a/winsup/cygwin/local_includes/tty.h +++ b/winsup/cygwin/local_includes/tty.h @@ -211,4 +211,9 @@ class lock_ttys }; extern "C" int ttyslot (void); + +/* Console stuff */ +#define MAX_CONS_DEV 128 +#define CONS_SCAN_UNUSED (-1) + #endif /*_TTY_H*/ From ce3889ad551503ddc511a7537360f93ba5ad2b25 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 8 Jul 2024 23:09:12 +0900 Subject: [PATCH 688/767] Cygwin: console: Fix for GNU screen/tmux in ConEmu If the master process of GNU screen or tmux is started in ConEmu and ConEmu is closed, reattaching to the GNU screen/tmux in another console will not work correctly. This is because the ConEmu master process was already closed even though some console APIs are hooked by ConEmuHk64.dll to communicate with ConEmu master process. With this patch, to make them unhooked, DllMain() of ConEmuHk64.dll is called with DLL_PROCESS_DETACH. Fixes: 3721a756b0d8 ("Cygwin: console: Make the console accessible from other terminals.") Signed-off-by: Takashi Yano (cherry picked from commit ac7c0e23d85a638e6f930aa9a0582812e886a688) --- winsup/cygwin/fhandler/console.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index 8c08a8af89..d4c3f1020b 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -33,6 +33,7 @@ details. */ #include "child_info.h" #include "cygwait.h" #include "winf.h" +#include "psapi.h" /* Don't make this bigger than NT_MAX_PATH as long as the temporary buffer is allocated using tmp_pathbuf!!! */ @@ -1970,7 +1971,23 @@ fhandler_console::close () if (!have_execed && !invisible_console && (!CTTY_IS_VALID (myself->ctty) || get_device () == (dev_t) myself->ctty)) - free_console (); + { + /* ConEmu hack. Detach from ConEmu to unhook console APIs. */ + HMODULE h = GetModuleHandle ("ConEmuHk64.dll"); + if (h) + { + MODULEINFO mi; + if (GetModuleInformation (GetCurrentProcess (), h, &mi, sizeof (mi))) + { + BOOL (*DllMain)(HINSTANCE, DWORD, LPVOID) = + (BOOL (*)(HINSTANCE, DWORD, LPVOID)) mi.EntryPoint; + DllMain (h, DLL_PROCESS_DETACH, NULL); + } + } + + /* Freeing console to detach the process from the console. */ + free_console (); + } release_output_mutex (); From a6ffd8301b1ab8f8493599fdb6798405144e93e3 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Mon, 8 Jul 2024 14:24:55 +0700 Subject: [PATCH 689/767] stdatomic: make atomics compatible with GCC-14 https://gcc.gnu.org/pipermail/gcc-patches/2023-September/631525.html brings c_atomic and cxx_atomic definitions into GCC. This patch makes atomics type detection correct for GCC. https://github.com/freebsd/freebsd-src/commit/680f40f38343de118d5b973129683804e496faaf --- newlib/libc/include/stdatomic.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/newlib/libc/include/stdatomic.h b/newlib/libc/include/stdatomic.h index d58e795eb9..af915145c1 100644 --- a/newlib/libc/include/stdatomic.h +++ b/newlib/libc/include/stdatomic.h @@ -33,7 +33,8 @@ #include #include -#if __has_extension(c_atomic) || __has_extension(cxx_atomic) +#if (__has_extension(c_atomic) || __has_extension(cxx_atomic)) && \ + defined(__clang__) #define __CLANG_ATOMICS #elif __GNUC_PREREQ__(4, 7) #define __GNUC_ATOMICS From 4f8668a5b944326fddb8748a1b6c367936d742e8 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 4 Aug 2024 15:51:07 +0100 Subject: [PATCH 690/767] Cygwin: Suppress array-bounds warning from NtCurrentTeb() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This disables a warning seen with gcc 12 caused by intrinsics used by the inline implementation of NtCurrentTeb() inside w32api headers. > In function ‘long long unsigned int __readgsqword(unsigned int)’, > inlined from ‘_TEB* NtCurrentTeb()’ at /usr/include/w32api/winnt.h:10020:86, > [...] > /usr/include/w32api/psdk_inc/intrin-impl.h:838:1: error: array subscript 0 is outside array bounds of ‘long long unsigned int [0]’ [-Werror=array-bounds] See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523#c6 Signed-off-by: Jon Turney --- winsup/cygwin/local_includes/winlean.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/local_includes/winlean.h b/winsup/cygwin/local_includes/winlean.h index 5bf1be262a..62b651be6e 100644 --- a/winsup/cygwin/local_includes/winlean.h +++ b/winsup/cygwin/local_includes/winlean.h @@ -53,7 +53,10 @@ details. */ #define __undef_CRITICAL #endif +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Warray-bounds" #include +#pragma GCC diagnostic pop #include #include #include From 6204d84db7855e944def8cda7feb676e836fc7ac Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 4 Aug 2024 16:30:16 +0100 Subject: [PATCH 691/767] Cygwin: Fix warnings about narrowing conversions of NTSTATUS constants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix warnings with gcc 12 about narrowing conversions of NTSTATUS constants when used as case labels, e.g: > ../../../../src/winsup/cygwin/exceptions.cc: In static member function ‘static int exception::handle(EXCEPTION_RECORD*, void*, CONTEXT*, PDISPATCHER_CONTEXT)’: > ../../../../src/winsup/cygwin/exceptions.cc:670:10: error: narrowing conversion of ‘-1073741682’ from ‘NTSTATUS’ {aka ‘int’} to ‘unsigned int’ [-Wnarrowing] See also: c5bdf60ac46401a51a7e974333d9622966e22d67 Signed-off-by: Jon Turney --- winsup/cygwin/exceptions.cc | 2 +- winsup/cygwin/local_includes/ntdll.h | 2 +- winsup/cygwin/pinfo.cc | 2 +- winsup/cygwin/sigproc.cc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 28d0431d52..3195d5719a 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -665,7 +665,7 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, siginfo_t si = {}; si.si_code = SI_KERNEL; /* Coerce win32 value to posix value. */ - switch (e->ExceptionCode) + switch ((NTSTATUS) e->ExceptionCode) { case STATUS_FLOAT_DIVIDE_BY_ZERO: si.si_signo = SIGFPE; diff --git a/winsup/cygwin/local_includes/ntdll.h b/winsup/cygwin/local_includes/ntdll.h index 7737ae503c..4497fe53f9 100644 --- a/winsup/cygwin/local_includes/ntdll.h +++ b/winsup/cygwin/local_includes/ntdll.h @@ -23,7 +23,7 @@ extern GUID __cygwin_socket_guid; /* Custom Cygwin-only status codes. */ #define STATUS_THREAD_SIGNALED ((NTSTATUS)0xe0000001) #define STATUS_THREAD_CANCELED ((NTSTATUS)0xe0000002) -#define STATUS_ILLEGAL_DLL_PSEUDO_RELOCATION ((DWORD) 0xe0000269) +#define STATUS_ILLEGAL_DLL_PSEUDO_RELOCATION ((NTSTATUS) 0xe0000269) /* Simplify checking for a transactional error code. */ #define NT_TRANSACTIONAL_ERROR(s) \ diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index bfd338e5b8..a5f5d6eb22 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -118,7 +118,7 @@ pinfo_init (char **envp, int envc) DWORD pinfo::status_exit (DWORD x) { - switch (x) + switch ((NTSTATUS) x) { case STATUS_DLL_NOT_FOUND: { diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 86e4e607ab..99fa3c3425 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1082,7 +1082,7 @@ child_info::proc_retry (HANDLE h) if (!exit_code) return EXITCODE_OK; sigproc_printf ("exit_code %y", exit_code); - switch (exit_code) + switch ((NTSTATUS) exit_code) { case STILL_ACTIVE: /* shouldn't happen */ sigproc_printf ("STILL_ACTIVE? How'd we get here?"); From 87b066b3f3d317ddbdb349da7c00175a090eadf6 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 4 Aug 2024 16:37:44 +0100 Subject: [PATCH 692/767] Cygwin: Fix warning about address known to be non-NULL in /proc/locales MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix a gcc 12 warning about an address known to be non-NULL in format_proc_locale_proc(). > ../../../../src/winsup/cygwin/fhandler/proc.cc: In function ‘BOOL format_proc_locale_proc(LPWSTR, DWORD, LPARAM)’: > ../../../../src/winsup/cygwin/fhandler/proc.cc:2156:11: error: the address of ‘iso15924’ will never be NULL [-Werror=address] > 2156 | if (iso15924) > | ^~~~~~~~ > ../../../../src/winsup/cygwin/fhandler/proc.cc:2133:11: note: ‘iso15924’ declared here > 2133 | wchar_t iso15924[ENCODING_LEN + 1] = { 0 }; > | ^~~~~~~~ Fixes: c42b98bdc665f ("Cygwin: introduce /proc/codesets and /proc/locales") Signed-off-by: Jon Turney --- winsup/cygwin/fhandler/proc.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/proc.cc b/winsup/cygwin/fhandler/proc.cc index be107cb8ea..fcd64417f4 100644 --- a/winsup/cygwin/fhandler/proc.cc +++ b/winsup/cygwin/fhandler/proc.cc @@ -2153,8 +2153,7 @@ format_proc_locale_proc (LPWSTR win_locale, DWORD info, LPARAM param) if (!(cp2 = wcschr (cp + 2, L'-'))) return TRUE; /* Otherwise, store in iso15924 */ - if (iso15924) - wcpcpy (wcpncpy (iso15924, cp, cp2 - cp), L";"); + wcpcpy (wcpncpy (iso15924, cp, cp2 - cp), L";"); } cp = wcsrchr (win_locale, L'-'); if (cp) From 25a0df8a70dfc886791e832f63c65aebe315c8cf Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 4 Aug 2024 17:01:38 +0100 Subject: [PATCH 693/767] Cygwin: Fix warning about narrowing conversions in tape options MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix a gcc 12 warning about a narrowing conversion in case labels for tape options. > In file included from /wip/cygwin/src/winsup/cygwin/include/sys/mtio.h:14, > from ../../../../src/winsup/cygwin/fhandler/tape.cc:13: > ../../../../src/winsup/cygwin/fhandler/tape.cc: In member function ‘int mtinfo_drive::set_options(HANDLE, int32_t)’: > ../../../../src/winsup/cygwin/fhandler/tape.cc:965:12: error: narrowing conversion of ‘4026531840’ from ‘unsigned int’ to ‘int’ [-Wnarrowing] Signed-off-by: Jon Turney --- winsup/cygwin/fhandler/tape.cc | 4 ++-- winsup/cygwin/local_includes/mtinfo.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/tape.cc b/winsup/cygwin/fhandler/tape.cc index 0e235f16c6..732fd1bb7f 100644 --- a/winsup/cygwin/fhandler/tape.cc +++ b/winsup/cygwin/fhandler/tape.cc @@ -894,9 +894,9 @@ mtinfo_drive::get_status (HANDLE mt, struct mtget *get) } int -mtinfo_drive::set_options (HANDLE mt, int32_t options) +mtinfo_drive::set_options (HANDLE mt, uint32_t options) { - int32_t what = (options & MT_ST_OPTIONS); + uint32_t what = (options & MT_ST_OPTIONS); bool call_setparams = false; bool set; TAPE_SET_DRIVE_PARAMETERS sdp = diff --git a/winsup/cygwin/local_includes/mtinfo.h b/winsup/cygwin/local_includes/mtinfo.h index 03aabbfd0e..46f8b1be95 100644 --- a/winsup/cygwin/local_includes/mtinfo.h +++ b/winsup/cygwin/local_includes/mtinfo.h @@ -101,7 +101,7 @@ class mtinfo_drive int set_compression (HANDLE mt, int32_t count); int set_blocksize (HANDLE mt, DWORD count); int get_status (HANDLE mt, struct mtget *get); - int set_options (HANDLE mt, int32_t options); + int set_options (HANDLE mt, uint32_t options); int async_wait (HANDLE mt, DWORD *bytes_written); public: From c75f3939d843fe80d13a8a2fc64c50f8ffed6f5a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 Aug 2024 17:09:44 +0200 Subject: [PATCH 694/767] Cygwin: asm/socket.h: drop outdated casts The _IOR anbd _IOW macros cast the sizeof of their third arg uselessly to long. The _IO definitions have been taken from BSD in 1995 and never changed again. The fact that the sizeof() gets cast to long is probably a remnant from the past when the stuff was supposed to be used on 16 bit machines, but the value was supposed to be 32 bit. Given that the values are not supposed to be ever bigger than 32 bit, we drop the (long) cast. Compare with current FreeBSD, which does not cast at all. Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/asm/socket.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/include/asm/socket.h b/winsup/cygwin/include/asm/socket.h index 9aeb889b87..276df3a0b5 100644 --- a/winsup/cygwin/include/asm/socket.h +++ b/winsup/cygwin/include/asm/socket.h @@ -17,8 +17,8 @@ details. */ #define IOC_IN 0x80000000 /* copy in parameters */ #define _IO(x,y) (IOC_VOID|(x<<8)|y) -#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) -#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) +#define _IOR(x,y,t) (IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) +#define _IOW(x,y,t) (IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) #define SIOCATMARK _IOR('s', 7, long) /* at oob mark? */ #define FIONREAD _IOR('f', 127, long) /* get # bytes to read */ From 510cbdf32abc5c9f3a2cbdb12930e27f0f6b54e1 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 4 Aug 2024 17:02:00 +0100 Subject: [PATCH 695/767] Cygwin: Fix warnings about narrowing conversions of socket ioctls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix gcc 12 warnings about narrowing conversions of socket ioctl constants when used as case labels, e.g: > ../../../../src/winsup/cygwin/net.cc: In function ‘int get_ifconf(ifconf*, int)’: > ../../../../src/winsup/cygwin/net.cc:1940:18: error: narrowing conversion of ‘2152756069’ from ‘long int’ to ‘int’ [-Wnarrowing] Signed-off-by: Jon Turney --- winsup/cygwin/fhandler/socket.cc | 2 +- winsup/cygwin/net.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/socket.cc b/winsup/cygwin/fhandler/socket.cc index f7c5ff6294..c0cef7d3ee 100644 --- a/winsup/cygwin/fhandler/socket.cc +++ b/winsup/cygwin/fhandler/socket.cc @@ -86,7 +86,7 @@ struct __old_ifreq { int fhandler_socket::ioctl (unsigned int cmd, void *p) { - extern int get_ifconf (struct ifconf *ifc, int what); /* net.cc */ + extern int get_ifconf (struct ifconf *ifc, unsigned int what); /* net.cc */ int res; struct ifconf ifc, *ifcp; struct ifreq *ifrp; diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 08c584fe53..737e494f8f 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -1912,7 +1912,7 @@ freeifaddrs (struct ifaddrs *ifp) } int -get_ifconf (struct ifconf *ifc, int what) +get_ifconf (struct ifconf *ifc, unsigned int what) { __try { From 65e3e2fd0593edbbe9a6757c188d9e1f39faa2f9 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 4 Aug 2024 17:15:50 +0100 Subject: [PATCH 696/767] Cygwin: Avoid use-after-free warnings in __set_lc_time_from_win() etc. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rewrite to avoid new use-after-free warnings about realloc(), seen with gcc 12, e.g.: > In function ‘void rebase_locale_buf(const void*, const void*, const char*, const char*, const char*)’, > inlined from ‘int __set_lc_time_from_win(const char*, const lc_time_T*, lc_time_T*, char**, wctomb_p, const char*)’ at ../../../../src/winsup/cygwin/nlsfuncs.cc:705:25: > ../../../../src/winsup/cygwin/nlsfuncs.cc:338:24: error: pointer ‘new_lc_time_buf’ may be used after ‘void* realloc(void*, size_t)’ [-Werror=use-after-free] > 338 | *ptrs += newbase - oldbase; > | ~~~~~~~~^~~~~~~~~ > ../../../../src/winsup/cygwin/nlsfuncs.cc: In function ‘int __set_lc_time_from_win(const char*, const lc_time_T*, lc_time_T*, char**, wctomb_p, const char*)’: > ../../../../src/winsup/cygwin/nlsfuncs.cc:699:44: note: call to ‘void* realloc(void*, size_t)’ here > 699 | char *tmp = (char *) realloc (new_lc_time_buf, len); Technically, it's UB to later refer to the realloced pointer (even just for offset computations, without deferencing it), so switch to using malloc() to create the resized copy. Signed-off-by: Jon Turney --- winsup/cygwin/nlsfuncs.cc | 95 +++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 54 deletions(-) diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index b32fecc8ec..f57465a4f2 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -319,8 +319,7 @@ locale_cmp (const void *a, const void *b) return strcmp (*la, *lb); } -/* Helper function to workaround reallocs which move blocks even if they shrink. - Cygwin's realloc is not doing this, but tcsh's, for instance. All lc_foo +/* Helper function to adjust pointers inside an lc_foo buffer. All lc_foo structures consist entirely of pointers so they are practically pointer arrays. What we do here is just treat the lc_foo pointers as char ** and rebase all char * pointers within, up to the given size of the structure. */ @@ -334,6 +333,28 @@ rebase_locale_buf (const void *ptrv, const void *ptrvend, const char *newbase, *ptrs += newbase - oldbase; } +/* Helper function to shrink an lc_foo buffer, adjusting pointers */ +static int +shrink_locale_buf (const void *ptrv, const void *ptrvend, + char *oldbase, const char *oldend, + char **result) +{ + size_t minsize = oldend - oldbase; + char *tmp = (char *) malloc (minsize); + if (!tmp) + { + free (oldbase); + return -1; + } + + memcpy (tmp, oldbase, minsize); + rebase_locale_buf (ptrv, ptrvend, tmp, oldbase, oldend); + free (oldbase); + + *result = tmp; + return 1; +} + static wchar_t * __getlocaleinfo (wchar_t *loc, LCTYPE type, char **ptr, size_t size) { @@ -687,19 +708,20 @@ __set_lc_time_from_win (const char *name, len += (wcslen (era->era_t_fmt) + 1) * sizeof (wchar_t); len += (wcslen (era->alt_digits) + 1) * sizeof (wchar_t); - /* Make sure data fits into the buffer */ + /* If necessary, grow the buffer to ensure data fits into it */ if (lc_time_ptr + len > lc_time_end) { len = lc_time_ptr + len - new_lc_time_buf; - char *tmp = (char *) realloc (new_lc_time_buf, len); + char *tmp = (char *) malloc (len); if (!tmp) era = NULL; else { - if (tmp != new_lc_time_buf) - rebase_locale_buf (_time_locale, _time_locale + 1, tmp, - new_lc_time_buf, lc_time_ptr); + memcpy (tmp, new_lc_time_buf, MAX_TIME_BUFFER_SIZE); + rebase_locale_buf (_time_locale, _time_locale + 1, tmp, + new_lc_time_buf, lc_time_ptr); lc_time_ptr = tmp + (lc_time_ptr - new_lc_time_buf); + free(new_lc_time_buf); new_lc_time_buf = tmp; lc_time_end = new_lc_time_buf + len; } @@ -752,17 +774,9 @@ __set_lc_time_from_win (const char *name, } } - char *tmp = (char *) realloc (new_lc_time_buf, lc_time_ptr - new_lc_time_buf); - if (!tmp) - { - free (new_lc_time_buf); - return -1; - } - if (tmp != new_lc_time_buf) - rebase_locale_buf (_time_locale, _time_locale + 1, tmp, - new_lc_time_buf, lc_time_ptr); - *lc_time_buf = tmp; - return 1; + return shrink_locale_buf(_time_locale, _time_locale + 1, + new_lc_time_buf, lc_time_ptr, + lc_time_buf); } /* Called from newlib's setlocale() via __ctype_load_locale() if category @@ -824,18 +838,9 @@ __set_lc_ctype_from_win (const char *name, } } - char *tmp = (char *) realloc (new_lc_ctype_buf, - lc_ctype_ptr - new_lc_ctype_buf); - if (!tmp) - { - free (new_lc_ctype_buf); - return -1; - } - if (tmp != new_lc_ctype_buf) - rebase_locale_buf (_ctype_locale, _ctype_locale + 1, tmp, - new_lc_ctype_buf, lc_ctype_ptr); - *lc_ctype_buf = tmp; - return 1; + return shrink_locale_buf(_ctype_locale, _ctype_locale + 1, + new_lc_ctype_buf, lc_ctype_ptr, + lc_ctype_buf); } /* Called from newlib's setlocale() via __numeric_load_locale() if category @@ -900,18 +905,9 @@ __set_lc_numeric_from_win (const char *name, _numeric_locale->codeset = lc_numeric_ptr; lc_numeric_ptr = stpcpy (lc_numeric_ptr, charset) + 1; - char *tmp = (char *) realloc (new_lc_numeric_buf, - lc_numeric_ptr - new_lc_numeric_buf); - if (!tmp) - { - free (new_lc_numeric_buf); - return -1; - } - if (tmp != new_lc_numeric_buf) - rebase_locale_buf (_numeric_locale, _numeric_locale + 1, tmp, - new_lc_numeric_buf, lc_numeric_ptr); - *lc_numeric_buf = tmp; - return 1; + return shrink_locale_buf(_numeric_locale, _numeric_locale + 1, + new_lc_numeric_buf, lc_numeric_ptr, + lc_numeric_buf); } /* Called from newlib's setlocale() via __monetary_load_locale() if category @@ -1039,18 +1035,9 @@ __set_lc_monetary_from_win (const char *name, _monetary_locale->codeset = lc_monetary_ptr; lc_monetary_ptr = stpcpy (lc_monetary_ptr, charset) + 1; - char *tmp = (char *) realloc (new_lc_monetary_buf, - lc_monetary_ptr - new_lc_monetary_buf); - if (!tmp) - { - free (new_lc_monetary_buf); - return -1; - } - if (tmp != new_lc_monetary_buf) - rebase_locale_buf (_monetary_locale, _monetary_locale + 1, tmp, - new_lc_monetary_buf, lc_monetary_ptr); - *lc_monetary_buf = tmp; - return 1; + return shrink_locale_buf(_monetary_locale, _monetary_locale + 1, + new_lc_monetary_buf, lc_monetary_ptr, + lc_monetary_buf); } extern "C" int From bc6fd1975ba46cd8aefa48b1cc95f4c257312e66 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 15 Aug 2024 20:50:40 +0200 Subject: [PATCH 697/767] Cygwin: getopt.h: fix a comment Signed-off-by: Corinna Vinschen --- winsup/cygwin/include/getopt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/include/getopt.h b/winsup/cygwin/include/getopt.h index c5af1acd46..63e068b5c8 100644 --- a/winsup/cygwin/include/getopt.h +++ b/winsup/cygwin/include/getopt.h @@ -85,4 +85,4 @@ int getopt_long_only (int, char *const *, const char *, const struct option *, i #endif /* __GETOPT_LONG_H__ */ #endif /* __UNISTD_GETOPT__ */ -#endif /*_INSIDE_NEWLIB*/ +#endif /*_LIBC */ From 54a6a902342c7a570579c7e027d53c51991fc404 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 15 Aug 2024 20:50:06 +0200 Subject: [PATCH 698/767] stdlib.h: define __itoa/__utoa while building newlib This avoids a `__utoa undefined' warning when building newlib for Cygwin. We still need to export the symbols for backward compatibility. Signed-off-by: Corinna Vinschen --- newlib/libc/include/stdlib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newlib/libc/include/stdlib.h b/newlib/libc/include/stdlib.h index fd89f5ba7b..0690a03773 100644 --- a/newlib/libc/include/stdlib.h +++ b/newlib/libc/include/stdlib.h @@ -221,7 +221,7 @@ char * ecvtbuf (double, int, int*, int*, char *); char * fcvtbuf (double, int, int*, int*, char *); char * ecvtf (float,int,int *,int *); #endif -#ifndef __CYGWIN__ +#if !defined (__CYGWIN__) || defined (_LIBC) char * __itoa (int, char *, int); char * __utoa (unsigned, char *, int); # if __MISC_VISIBLE From 3d9eb1b2c5cb75065d160200bd5288ded6a1a8cb Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 18 Aug 2024 21:40:51 +0200 Subject: [PATCH 699/767] Cygwin: pipe: handle signals explicitely in raw_write The simple cygwait call in fhandler_pipe_fifo::raw_write doesn't take the SA_RESTART setting into account. Move handling the signal into raw_write. Fixes: 4b25687ea3ee2 ("Cygwin: fhandler_pipe: add raw_read and raw_write") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pipe.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 4c4ad03834..6a0e07c16d 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -483,9 +483,16 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) (PVOID) ptr, len1, NULL, NULL); if (status == STATUS_PENDING) { - while (WAIT_TIMEOUT == - (waitret = cygwait (evt, (DWORD) 0, cw_cancel | cw_sig))) + do { + /* To allow constant reader_closed() checking even if the + signal has been set up with SA_RESTART, we're handling + the signal here --> cw_sig_eintr. */ + waitret = cygwait (evt, (DWORD) 0, cw_cancel | cw_sig_eintr); + /* Break out if no SA_RESTART. */ + if (waitret == WAIT_SIGNALED + && !_my_tls.call_signal_handler ()) + break; if (reader_closed ()) { CancelIo (get_handle ()); @@ -494,8 +501,10 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) goto out; } else - cygwait (select_sem, 10); + cygwait (select_sem, 10, cw_cancel); } + /* Loop in case of blocking write or SA_RESTART */ + while (waitret == WAIT_TIMEOUT || waitret == WAIT_SIGNALED); /* If io.Status is STATUS_CANCELLED after CancelIo, IO has actually been cancelled and io.Information contains the number of bytes processed so far. From 555afcb2f3a6638084912ce1011bd6acef59ea79 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 18 Aug 2024 21:55:52 +0200 Subject: [PATCH 700/767] Cygwin: select: set pipe writable only if PIPE_BUF bytes left Linux select(2) returns the pipe as writable if at least one free page (4K onl most systems) is left in a page-oriented buffer handling. This is the same as PIPE_BUF. Emulate this behaviour by only returning the pipe as writable if at least 4K space is left in the buffer. Signed-off-by: Corinna Vinschen --- winsup/cygwin/select.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 725aab90c7..db52ffcccf 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -591,7 +591,7 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) { DWORD nbytes_in_pipe; if (!writing && PeekNamedPipe (h, NULL, 0, NULL, &nbytes_in_pipe, NULL)) - return nbytes_in_pipe > 0; + return nbytes_in_pipe; return -1; } @@ -609,7 +609,7 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) access on the write end. */ select_printf ("fd %d, %s, NtQueryInformationFile failed, status %y", fd, fh->get_name (), status); - return writing ? 1 : -1; + return writing ? PIPE_BUF : -1; } if (writing) { @@ -644,14 +644,14 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) if (!query_hdl) query_hdl = ((fhandler_pipe *) fh)->temporary_query_hdl (); if (!query_hdl) - return 1; /* We cannot know actual write pipe space. */ + return PIPE_BUF; /* We cannot know actual write pipe space. */ DWORD nbytes_in_pipe; BOOL res = PeekNamedPipe (query_hdl, NULL, 0, NULL, &nbytes_in_pipe, NULL); if (!((fhandler_pipe *) fh)->get_query_handle ()) CloseHandle (query_hdl); /* Close temporary query_hdl */ if (!res) - return 1; + return PIPE_BUF; /* We cannot know actual write pipe space. */ fpli.WriteQuotaAvailable = fpli.InboundQuota - nbytes_in_pipe; } if (fpli.WriteQuotaAvailable > 0) @@ -659,7 +659,7 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) paranoid_printf ("fd %d, %s, write: size %u, avail %u", fd, fh->get_name (), fpli.InboundQuota, fpli.WriteQuotaAvailable); - return 1; + return fpli.WriteQuotaAvailable; } /* TODO: Buffer really full or non-Cygwin reader? */ } @@ -667,7 +667,7 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) { paranoid_printf ("fd %d, %s, read avail %u", fd, fh->get_name (), fpli.ReadDataAvailable); - return 1; + return fpli.ReadDataAvailable; } if (fpli.NamedPipeState & FILE_PIPE_CLOSING_STATE) return -1; @@ -761,7 +761,7 @@ peek_pipe (select_record *s, bool from_select) } int n = pipe_data_available (s->fd, fh, h, true); select_printf ("write: %s, n %d", fh->get_name (), n); - gotone += s->write_ready = n; + gotone += s->write_ready = (n >= PIPE_BUF); if (n < 0 && s->except_selected) gotone += s->except_ready = true; } @@ -974,7 +974,7 @@ peek_fifo (select_record *s, bool from_select) { int n = pipe_data_available (s->fd, fh, fh->get_handle (), true); select_printf ("write: %s, n %d", fh->get_name (), n); - gotone += s->write_ready = n; + gotone += s->write_ready = (n >= PIPE_BUF); if (n < 0 && s->except_selected) gotone += s->except_ready = true; } @@ -1400,7 +1400,7 @@ peek_pty_slave (select_record *s, bool from_select) { int n = pipe_data_available (s->fd, fh, h, true); select_printf ("write: %s, n %d", fh->get_name (), n); - gotone += s->write_ready = n; + gotone += s->write_ready = (n >= PIPE_BUF); if (n < 0 && s->except_selected) gotone += s->except_ready = true; } From ef844ce43323d23f6ab68aba1b891b32f6a8e5aa Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 18 Aug 2024 22:07:16 +0200 Subject: [PATCH 701/767] Cygwin: pipe: improve writing when pipe buffer is almost full So far fhandler_pipe_fifo::raw_write always returns -1/EINTR if a signal arrived. Linux does not do that if there's still space left in the pipe buffer. The Linux buffer handling can't be emulated by Cygwin, but we can do something similar which makes it much more likely to still write successfully even if the buffer is almost full. Utilize pipe_data_available to return valid pipe buffer usage to raw_write, allowing a more sophisticated way to fill the buffer while maintaining comaptibility with non-Cygwin pipes. Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pipe.cc | 44 ++++++++++++++++++++++++--- winsup/cygwin/local_includes/select.h | 5 +++ winsup/cygwin/select.cc | 44 ++++++++++++++++++--------- 3 files changed, 75 insertions(+), 18 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 6a0e07c16d..e0de157ef0 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -13,6 +13,7 @@ details. */ #include "security.h" #include "path.h" #include "fhandler.h" +#include "select.h" #include "dtable.h" #include "cygheap.h" #include "pinfo.h" @@ -418,6 +419,7 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) NTSTATUS status = STATUS_SUCCESS; IO_STATUS_BLOCK io; HANDLE evt; + bool short_write_once = false; if (!len) return 0; @@ -456,6 +458,7 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) len1 = chunk; else len1 = (ULONG) left; + /* NtWriteFile returns success with # of bytes written == 0 if writing on a non-blocking pipe fails because the pipe buffer doesn't have sufficient space. @@ -502,6 +505,13 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) } else cygwait (select_sem, 10, cw_cancel); + /* If we got a timeout in the blocking case, and we already + did a short write, we got a signal in the previous loop. */ + if (waitret == WAIT_TIMEOUT && short_write_once) + { + waitret = WAIT_SIGNALED; + break; + } } /* Loop in case of blocking write or SA_RESTART */ while (waitret == WAIT_TIMEOUT || waitret == WAIT_SIGNALED); @@ -518,13 +528,39 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) status = STATUS_THREAD_CANCELED; else if (waitret == WAIT_SIGNALED) status = STATUS_THREAD_SIGNALED; + else if (waitret == WAIT_TIMEOUT && io.Status == STATUS_CANCELLED) + status = STATUS_SUCCESS; else status = io.Status; } - if (!is_nonblocking () || !NT_SUCCESS (status) || io.Information > 0 - || len <= PIPE_BUF) + if (status != STATUS_THREAD_SIGNALED && !NT_SUCCESS (status)) break; - len1 >>= 1; + if (io.Information > 0 || len <= PIPE_BUF || short_write_once) + break; + /* Independent of being blocking or non-blocking, if we're here, + the pipe has less space than requested. If the pipe is a + non-Cygwin pipe, just try the old strategy of trying a half + write. If the pipe has at + least PIPE_BUF bytes available, try to write all matching + PIPE_BUF sized blocks. If it's less than PIPE_BUF, try + the next less power of 2 bytes. This is not really the Linux + strategy because Linux is filling the pages of a pipe buffer + in a very implementation-defined way we can't emulate, but it + resembles it closely enough to get useful results. */ + ssize_t avail = pipe_data_available (-1, this, get_handle (), + PDA_WRITE); + if (avail < 1) /* error or pipe closed */ + break; + if (avail >= len1) /* somebody read from the pipe */ + avail = len1; + if (avail == 1) /* 1 byte left or non-Cygwin pipe */ + len1 >>= 1; + else if (avail >= PIPE_BUF) + len1 = avail & ~(PIPE_BUF - 1); + else + len1 = 1 << (31 - __builtin_clzl (avail)); + if (!is_nonblocking ()) + short_write_once = true; } if (isclosed ()) /* A signal handler might have closed the fd. */ { @@ -554,7 +590,7 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) else __seterrno_from_nt_status (status); - if (nbytes_now == 0) + if (nbytes_now == 0 || short_write_once) break; } out: diff --git a/winsup/cygwin/local_includes/select.h b/winsup/cygwin/local_includes/select.h index 4e202128fe..dea023343f 100644 --- a/winsup/cygwin/local_includes/select.h +++ b/winsup/cygwin/local_includes/select.h @@ -139,4 +139,9 @@ class select_stuff extern "C" int cygwin_select (int , fd_set *, fd_set *, fd_set *, struct timeval *to); +ssize_t pipe_data_available (int, fhandler_base *, HANDLE, int); + +#define PDA_WRITE 0x01 +#define PDA_SELECT 0x02 + #endif /* _SELECT_H_ */ diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index db52ffcccf..bc02c3f9d4 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -584,13 +584,14 @@ no_verify (select_record *, fd_set *, fd_set *, fd_set *) return 0; } -static int -pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) +ssize_t +pipe_data_available (int fd, fhandler_base *fh, HANDLE h, int flags) { if (fh->get_device () == FH_PIPER) { DWORD nbytes_in_pipe; - if (!writing && PeekNamedPipe (h, NULL, 0, NULL, &nbytes_in_pipe, NULL)) + if (!(flags & PDA_WRITE) + && PeekNamedPipe (h, NULL, 0, NULL, &nbytes_in_pipe, NULL)) return nbytes_in_pipe; return -1; } @@ -609,9 +610,17 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) access on the write end. */ select_printf ("fd %d, %s, NtQueryInformationFile failed, status %y", fd, fh->get_name (), status); - return writing ? PIPE_BUF : -1; + switch (flags) + { + case PDA_WRITE: + return 1; + case PDA_SELECT | PDA_WRITE: + return PIPE_BUF; + default: + return -1; + } } - if (writing) + if (flags & PDA_WRITE) { /* If there is anything available in the pipe buffer then signal that. This means that a pipe could still block since you could @@ -638,20 +647,26 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing) /* Note: Do not use NtQueryInformationFile() for query_hdl because NtQueryInformationFile() seems to interfere with reading pipes in non-cygwin apps. Instead, use PeekNamedPipe() here. */ + /* Note 2: we return the number of available bytes. Select for writing + returns writable *only* if at least PIPE_BUF bytes are left in the + buffer. If we can't fetch the real number of available bytes, the + number of bytes returned depends on the caller. For select we return + PIPE_BUF to fake writability, for writing we return 1 to allow + handling this fact. */ if (fh->get_device () == FH_PIPEW && fpli.WriteQuotaAvailable == 0) { HANDLE query_hdl = ((fhandler_pipe *) fh)->get_query_handle (); if (!query_hdl) query_hdl = ((fhandler_pipe *) fh)->temporary_query_hdl (); - if (!query_hdl) - return PIPE_BUF; /* We cannot know actual write pipe space. */ + if (!query_hdl) /* We cannot know actual write pipe space. */ + return (flags & PDA_SELECT) ? PIPE_BUF : 1; DWORD nbytes_in_pipe; BOOL res = PeekNamedPipe (query_hdl, NULL, 0, NULL, &nbytes_in_pipe, NULL); if (!((fhandler_pipe *) fh)->get_query_handle ()) CloseHandle (query_hdl); /* Close temporary query_hdl */ - if (!res) - return PIPE_BUF; /* We cannot know actual write pipe space. */ + if (!res) /* We cannot know actual write pipe space. */ + return (flags & PDA_SELECT) ? PIPE_BUF : 1; fpli.WriteQuotaAvailable = fpli.InboundQuota - nbytes_in_pipe; } if (fpli.WriteQuotaAvailable > 0) @@ -715,10 +730,10 @@ peek_pipe (select_record *s, bool from_select) gotone = s->read_ready = true; goto out; } - int n = pipe_data_available (s->fd, fh, h, false); + ssize_t n = pipe_data_available (s->fd, fh, h, PDA_SELECT); /* On PTY masters, check if input from the echo pipe is available. */ if (n == 0 && fh->get_echo_handle ()) - n = pipe_data_available (s->fd, fh, fh->get_echo_handle (), false); + n = pipe_data_available (s->fd, fh, fh->get_echo_handle (), PDA_SELECT); if (n < 0) { @@ -759,7 +774,7 @@ peek_pipe (select_record *s, bool from_select) gotone += s->except_ready = true; return gotone; } - int n = pipe_data_available (s->fd, fh, h, true); + ssize_t n = pipe_data_available (s->fd, fh, h, PDA_SELECT | PDA_WRITE); select_printf ("write: %s, n %d", fh->get_name (), n); gotone += s->write_ready = (n >= PIPE_BUF); if (n < 0 && s->except_selected) @@ -972,7 +987,8 @@ peek_fifo (select_record *s, bool from_select) out: if (s->write_selected) { - int n = pipe_data_available (s->fd, fh, fh->get_handle (), true); + ssize_t n = pipe_data_available (s->fd, fh, fh->get_handle (), + PDA_SELECT | PDA_WRITE); select_printf ("write: %s, n %d", fh->get_name (), n); gotone += s->write_ready = (n >= PIPE_BUF); if (n < 0 && s->except_selected) @@ -1398,7 +1414,7 @@ peek_pty_slave (select_record *s, bool from_select) HANDLE h = ptys->get_output_handle (); if (s->write_selected) { - int n = pipe_data_available (s->fd, fh, h, true); + ssize_t n = pipe_data_available (s->fd, fh, h, PDA_SELECT | PDA_WRITE); select_printf ("write: %s, n %d", fh->get_name (), n); gotone += s->write_ready = (n >= PIPE_BUF); if (n < 0 && s->except_selected) From 61dc66d2f203517786151d4bcee685f1298068c4 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 19 Aug 2024 11:44:42 +0200 Subject: [PATCH 702/767] Cygwin: pipe: fix comparison There's no reason to overwrite len1 with align if they are the same value. Fixes: 170e6badb621 ("Cygwin: pipe: improve writing when pipe buffer is almost full") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pipe.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index e0de157ef0..3f8d5479c5 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -551,7 +551,7 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) PDA_WRITE); if (avail < 1) /* error or pipe closed */ break; - if (avail >= len1) /* somebody read from the pipe */ + if (avail > len1) /* somebody read from the pipe */ avail = len1; if (avail == 1) /* 1 byte left or non-Cygwin pipe */ len1 >>= 1; From d83183e4f73224210f4179cb96c0beff1d2605de Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 19 Aug 2024 11:51:14 +0200 Subject: [PATCH 703/767] Cygwin: pipe: do short writes only once in nonblocking case too If a nonblocking write requires short writes, just try it once as in the blocking case. After all, we are nonblocking, so don't loop unnecessarily. Fixes: 170e6badb621 ("Cygwin: pipe: improve writing when pipe buffer is almost full") Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler/pipe.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 3f8d5479c5..6658a23e7f 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -559,8 +559,7 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) len1 = avail & ~(PIPE_BUF - 1); else len1 = 1 << (31 - __builtin_clzl (avail)); - if (!is_nonblocking ()) - short_write_once = true; + short_write_once = true; } if (isclosed ()) /* A signal handler might have closed the fd. */ { From d14b65bdd5ba62a14a4b836c5a7881ab15eb257b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 22 Aug 2024 21:15:44 +0200 Subject: [PATCH 704/767] nl_langinfo_l: drop erroneus messages::codeset entry The nl_ext array contains offsets into the extended info of locale structures, the index being equivalent to the nl_item values in langinfo.h. For the lc_messages_T struct, nl_ext erroneusly contains an entry for the codeset member, which is in fact not part of the extended info in nl_item. However, due to that, the offsets for subsequent entries are off by one. Fix this by dropping the messages::codeset entry from nl_ext. Fixes: d47d5b850bed ("Extend locale support to maintain wide char values of native strings") Reported-by: Brian Inglis Signed-off-by: Corinna Vinschen --- newlib/libc/locale/nl_langinfo.c | 1 - 1 file changed, 1 deletion(-) diff --git a/newlib/libc/locale/nl_langinfo.c b/newlib/libc/locale/nl_langinfo.c index c34a7d1313..4477d833be 100644 --- a/newlib/libc/locale/nl_langinfo.c +++ b/newlib/libc/locale/nl_langinfo.c @@ -160,7 +160,6 @@ static struct _nl_item_t _NLITEM (monetary, wmon_thousands_sep), _NLITEM (monetary, wpositive_sign), _NLITEM (monetary, wnegative_sign), - _NLITEM (messages, codeset), _NLITEM (messages, wyesexpr), _NLITEM (messages, wnoexpr), _NLITEM (messages, wyesstr), From 1807336828d8b0d2092fc41003484ae2ba1d9e11 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 22 Aug 2024 21:21:51 +0200 Subject: [PATCH 705/767] locales: Fix definition of lc_messages_T::codeset nl_langinfo_l accesses lc_messages_T::codeset as soon as __HAVE_LOCALE_INFO__ is defined, but codeset only exists if __HAVE_LOCALE_INFO_EXTENDED__ is defined. Fix this by defining lc_messages_T::codeset depending on __HAVE_LOCALE_INFO__. Fixes: ac7f1d5e931c ("Get rid of LCID, reformat type definitions in setlocale.h") Reported-by: Inglis Signed-off-by: Corinna Vinschen --- newlib/libc/locale/setlocale.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/newlib/libc/locale/setlocale.h b/newlib/libc/locale/setlocale.h index 7abf92f7ec..e91034ac85 100644 --- a/newlib/libc/locale/setlocale.h +++ b/newlib/libc/locale/setlocale.h @@ -162,13 +162,15 @@ struct lc_messages_T const char *noexpr; const char *yesstr; const char *nostr; -#ifdef __HAVE_LOCALE_INFO_EXTENDED__ +#ifdef __HAVE_LOCALE_INFO__ const char *codeset; /* codeset for mbtowc conversion */ +#ifdef __HAVE_LOCALE_INFO_EXTENDED__ const wchar_t *wyesexpr; const wchar_t *wnoexpr; const wchar_t *wyesstr; const wchar_t *wnostr; #endif +#endif }; extern const struct lc_messages_T _C_messages_locale; From 74768ac417db0efa39479fecd6c5fde8cb8e1060 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 22 Aug 2024 21:22:41 +0200 Subject: [PATCH 706/767] Cygwin: Add locale patches to release message Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.4 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index c95ef4635b..fd3245aa55 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -22,3 +22,6 @@ Fixes: - Fix conflict on shared name in console between sessions. Addresses: https://cygwin.com/pipermail/cygwin/2024-April/255893.html + +- Fix an off-by-one in LC_MESSAGE wide character data. + Addresses: https://sourceware.org/pipermail/newlib/2024/021271.html From 0bc1222b78ed4edd6453e86aeb2ba28782c199a3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 22 Aug 2024 21:24:35 +0200 Subject: [PATCH 707/767] Cygwin: add release message for latest pipe changes Signed-off-by: Corinna Vinschen --- winsup/cygwin/release/3.5.4 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.5.4 b/winsup/cygwin/release/3.5.4 index fd3245aa55..90c324b23d 100644 --- a/winsup/cygwin/release/3.5.4 +++ b/winsup/cygwin/release/3.5.4 @@ -25,3 +25,6 @@ Fixes: - Fix an off-by-one in LC_MESSAGE wide character data. Addresses: https://sourceware.org/pipermail/newlib/2024/021271.html + +- Improve write pipe behaviour in case the pipe buffer is about to be + filled up. From 51380ec75b3f11228cb680f3a4d71fc1957e5aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 20:40:45 +0300 Subject: [PATCH 708/767] Add MSYS2 triplet --- compile | 4 ++-- config.guess | 3 +++ config.rpath | 8 +++---- config/dfp.m4 | 3 ++- config/elf.m4 | 2 +- config/lthostflags.m4 | 2 +- config/mmap.m4 | 4 ++-- config/picflag.m4 | 2 ++ config/tcl.m4 | 4 ++-- configure | 22 +++++++++--------- configure.ac | 20 ++++++++--------- libtool.m4 | 36 +++++++++++++++++------------- ltmain.sh | 52 +++++++++++++++++++++---------------------- ltoptions.m4 | 2 +- newlib/configure | 2 +- newlib/configure.host | 8 +++---- 16 files changed, 93 insertions(+), 81 deletions(-) diff --git a/compile b/compile index a85b723c7e..a4ecdb2519 100755 --- a/compile +++ b/compile @@ -53,7 +53,7 @@ func_file_conv () MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN*|MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ func_file_conv () mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/*|msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) diff --git a/config.guess b/config.guess index 1972fda8eb..a922fa3881 100755 --- a/config.guess +++ b/config.guess @@ -914,6 +914,9 @@ EOF amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-pc-cygwin exit ;; + amd64:MSYS*:*:* | x86_64:MSYS*:*:*) + echo x86_64-unknown-msys + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')" exit ;; diff --git a/config.rpath b/config.rpath index 4dea75957c..4f12c27e02 100755 --- a/config.rpath +++ b/config.rpath @@ -109,7 +109,7 @@ hardcode_direct=no hardcode_minus_L=no case "$host_os" in - cygwin* | mingw* | pw32*) + cygwin* | msys* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -149,7 +149,7 @@ if test "$with_gnu_ld" = yes; then ld_shlibs=no fi ;; - cygwin* | mingw* | pw32*) + cygwin* | msys* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' @@ -268,7 +268,7 @@ else ;; bsdi4*) ;; - cygwin* | mingw* | pw32*) + cygwin* | msys* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -437,7 +437,7 @@ case "$host_os" in ;; bsdi4*) ;; - cygwin* | mingw* | pw32*) + cygwin* | msys* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) diff --git a/config/dfp.m4 b/config/dfp.m4 index 5b29089cec..b03bcf0ccb 100644 --- a/config/dfp.m4 +++ b/config/dfp.m4 @@ -23,7 +23,8 @@ Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;; powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \ i?86*-*-elfiamcu | i?86*-*-gnu* | \ i?86*-*-mingw* | x86_64*-*-mingw* | \ - i?86*-*-cygwin* | x86_64*-*-cygwin*) + i?86*-*-cygwin* | x86_64*-*-cygwin* | \ + i?86*-*-msys* | x86_64*-*-msys*) enable_decimal_float=yes ;; *) diff --git a/config/elf.m4 b/config/elf.m4 index 5f5cd88da0..b8491de764 100644 --- a/config/elf.m4 +++ b/config/elf.m4 @@ -15,7 +15,7 @@ AC_REQUIRE([AC_CANONICAL_TARGET]) target_elf=no case $target in - *-darwin* | *-aix* | *-cygwin* | *-mingw* | *-aout* | *-*coff* | \ + *-darwin* | *-aix* | *-cygwin* | *-msys* | *-mingw* | *-aout* | *-*coff* | \ *-msdosdjgpp* | *-vms* | *-wince* | *-*-pe* | \ alpha*-dec-osf* | hppa[[12]]*-*-hpux* | \ nvptx-*-none) diff --git a/config/lthostflags.m4 b/config/lthostflags.m4 index bc0f59ee79..ad977d43dc 100644 --- a/config/lthostflags.m4 +++ b/config/lthostflags.m4 @@ -13,7 +13,7 @@ AC_DEFUN([ACX_LT_HOST_FLAGS], [ AC_REQUIRE([AC_CANONICAL_SYSTEM]) case $host in - *-cygwin* | *-mingw*) + *-cygwin* | *-msys* | *-mingw*) # 'host' will be top-level target in the case of a target lib, # we must compare to with_cross_host to decide if this is a native # or cross-compiler and select where to install dlls appropriately. diff --git a/config/mmap.m4 b/config/mmap.m4 index fba0d9d365..df2c778524 100644 --- a/config/mmap.m4 +++ b/config/mmap.m4 @@ -42,7 +42,7 @@ else # Systems known to be in this category are Windows (all variants), # VMS, and Darwin. case "$host_os" in - *vms* | cygwin* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) + *vms* | cygwin* | msys* | pe | mingw* | darwin* | ultrix* | hpux10* | hpux11.00) gcc_cv_func_mmap_dev_zero=no ;; *) gcc_cv_func_mmap_dev_zero=yes;; @@ -74,7 +74,7 @@ else # above for use of /dev/zero. # Systems known to be in this category are Windows, VMS, and SCO Unix. case "$host_os" in - *vms* | cygwin* | pe | mingw* | sco* | udk* ) + *vms* | cygwin* | msys* | pe | mingw* | sco* | udk* ) gcc_cv_func_mmap_anon=no ;; *) gcc_cv_func_mmap_anon=yes;; diff --git a/config/picflag.m4 b/config/picflag.m4 index 614421d2a9..9d507ba3f8 100644 --- a/config/picflag.m4 +++ b/config/picflag.m4 @@ -25,6 +25,8 @@ case "${$2}" in ;; i[[34567]]86-*-cygwin* | x86_64-*-cygwin*) ;; + i[[34567]]86-*-msys* | x86_64-*-msys*) + ;; i[[34567]]86-*-mingw* | x86_64-*-mingw*) ;; i[[34567]]86-*-nto-qnx*) diff --git a/config/tcl.m4 b/config/tcl.m4 index 4542a4b23d..209bd8d9b8 100644 --- a/config/tcl.m4 +++ b/config/tcl.m4 @@ -33,7 +33,7 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [ # First check to see if --with-tcl was specified. case "${host}" in - *-*-cygwin*) platDir="win" ;; + *-*-cygwin* | *-*-msys*) platDir="win" ;; *) platDir="unix" ;; esac if test x"${with_tclconfig}" != x ; then @@ -165,7 +165,7 @@ AC_DEFUN([SC_PATH_TKCONFIG], [ # then check for a private Tk library case "${host}" in - *-*-cygwin*) platDir="win" ;; + *-*-cygwin* | *-*-msys*) platDir="win" ;; *) platDir="unix" ;; esac if test x"${ac_cv_c_tkconfig}" = x ; then diff --git a/configure b/configure index 9477153056..1474838bd6 100755 --- a/configure +++ b/configure @@ -3088,7 +3088,7 @@ fi # Configure extra directories which are host specific case "${host}" in - *-cygwin*) + *-cygwin* | *-msys*) configdirs="$configdirs libtermcap" ;; esac @@ -3609,7 +3609,7 @@ esac # Disable the go frontend on systems where it is known to not work. Please keep # this in sync with contrib/config-list.mk. case "${target}" in -*-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*) +*-*-darwin* | *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-aix*) unsupported_languages="$unsupported_languages go" ;; esac @@ -3622,7 +3622,7 @@ if test x$enable_libgo = x; then # PR 46986 noconfigdirs="$noconfigdirs target-libgo" ;; - *-*-cygwin* | *-*-mingw*) + *-*-cygwin* | *-*-msys* | *-*-mingw*) noconfigdirs="$noconfigdirs target-libgo" ;; *-*-aix*) @@ -3894,7 +3894,7 @@ case "${target}" in i[3456789]86-*-mingw*) target_configdirs="$target_configdirs target-winsup" ;; - *-*-cygwin*) + *-*-cygwin* | *-*-msys*) target_configdirs="$target_configdirs target-libtermcap target-winsup" noconfigdirs="$noconfigdirs target-libgloss" # always build newlib if winsup directory is present. @@ -4038,7 +4038,7 @@ case "${host}" in i[3456789]86-*-msdosdjgpp*) host_makefile_frag="config/mh-djgpp" ;; - *-cygwin*) + *-cygwin* | *-msys*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if cat works as expected" >&5 $as_echo_n "checking to see if cat works as expected... " >&6; } @@ -6206,7 +6206,7 @@ fi target_elf=no case $target in - *-darwin* | *-aix* | *-cygwin* | *-mingw* | *-aout* | *-*coff* | \ + *-darwin* | *-aix* | *-cygwin* | *-msys* | *-mingw* | *-aout* | *-*coff* | \ *-msdosdjgpp* | *-vms* | *-wince* | *-*-pe* | \ alpha*-dec-osf* | hppa[12]*-*-hpux* | \ nvptx-*-none) @@ -6224,7 +6224,7 @@ if test $target_elf = yes; then : else if test x"$default_enable_lto" = x"yes" ; then case $target in - *-apple-darwin9* | *-cygwin* | *-mingw* | *djgpp*) ;; + *-apple-darwin9* | *-cygwin* | *-msys* | *-mingw* | *djgpp*) ;; # On other non-ELF platforms, LTO has yet to be validated. *) enable_lto=no ;; esac @@ -6235,7 +6235,7 @@ else # warn during gcc/ subconfigure; unless you're bootstrapping with # -flto it won't be needed until after installation anyway. case $target in - *-cygwin* | *-mingw* | *-apple-darwin* | *djgpp*) ;; + *-cygwin* | *-msys* | *-mingw* | *-apple-darwin* | *djgpp*) ;; *) if test x"$enable_lto" = x"yes"; then as_fn_error $? "LTO support is not enabled for this target." "$LINENO" 5 fi @@ -6245,7 +6245,7 @@ else # Among non-ELF, only Windows platforms support the lto-plugin so far. # Build it unless LTO was explicitly disabled. case $target in - *-cygwin* | *-mingw*) build_lto_plugin=$enable_lto ;; + *-cygwin* | *-msys* | *-mingw*) build_lto_plugin=$enable_lto ;; *) ;; esac @@ -7130,7 +7130,7 @@ rm -f conftest* case "${host}" in *-*-hpux*) RPATH_ENVVAR=SHLIB_PATH ;; *-*-darwin*) RPATH_ENVVAR=DYLD_LIBRARY_PATH ;; - *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;; + *-*-mingw* | *-*-cygwin | *-msys ) RPATH_ENVVAR=PATH ;; *) RPATH_ENVVAR=LD_LIBRARY_PATH ;; esac @@ -7648,7 +7648,7 @@ case " $target_configdirs " in case " $target_configargs " in *" --with-newlib "*) case "$target" in - *-cygwin*) + *-cygwin* | *-msys*) FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -isystem $$s/winsup/cygwin/include' ;; esac diff --git a/configure.ac b/configure.ac index 05ddf69870..3ed8a1b888 100644 --- a/configure.ac +++ b/configure.ac @@ -409,7 +409,7 @@ AC_ARG_ENABLE(compressed_debug_sections, # Configure extra directories which are host specific case "${host}" in - *-cygwin*) + *-cygwin* | *-msys*) configdirs="$configdirs libtermcap" ;; esac @@ -893,7 +893,7 @@ esac # Disable the go frontend on systems where it is known to not work. Please keep # this in sync with contrib/config-list.mk. case "${target}" in -*-*-darwin* | *-*-cygwin* | *-*-mingw* | *-*-aix*) +*-*-darwin* | *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-aix*) unsupported_languages="$unsupported_languages go" ;; esac @@ -906,7 +906,7 @@ if test x$enable_libgo = x; then # PR 46986 noconfigdirs="$noconfigdirs target-libgo" ;; - *-*-cygwin* | *-*-mingw*) + *-*-cygwin* | *-*-msys* | *-*-mingw*) noconfigdirs="$noconfigdirs target-libgo" ;; *-*-aix*) @@ -1178,7 +1178,7 @@ case "${target}" in i[[3456789]]86-*-mingw*) target_configdirs="$target_configdirs target-winsup" ;; - *-*-cygwin*) + *-*-cygwin* | *-*-msys*) target_configdirs="$target_configdirs target-libtermcap target-winsup" noconfigdirs="$noconfigdirs target-libgloss" # always build newlib if winsup directory is present. @@ -1322,7 +1322,7 @@ case "${host}" in i[[3456789]]86-*-msdosdjgpp*) host_makefile_frag="config/mh-djgpp" ;; - *-cygwin*) + *-cygwin* | *-msys*) ACX_CHECK_CYGWIN_CAT_WORKS host_makefile_frag="config/mh-cygwin" ;; @@ -1809,7 +1809,7 @@ ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always. build_lto_plugin=yes ],[if test x"$default_enable_lto" = x"yes" ; then case $target in - *-apple-darwin9* | *-cygwin* | *-mingw* | *djgpp*) ;; + *-apple-darwin9* | *-cygwin* | *-msys* | *-mingw* | *djgpp*) ;; # On other non-ELF platforms, LTO has yet to be validated. *) enable_lto=no ;; esac @@ -1820,7 +1820,7 @@ ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always. # warn during gcc/ subconfigure; unless you're bootstrapping with # -flto it won't be needed until after installation anyway. case $target in - *-cygwin* | *-mingw* | *-apple-darwin* | *djgpp*) ;; + *-cygwin* | *-msys*| *-mingw* | *-apple-darwin* | *djgpp*) ;; *) if test x"$enable_lto" = x"yes"; then AC_MSG_ERROR([LTO support is not enabled for this target.]) fi @@ -1830,7 +1830,7 @@ ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always. # Among non-ELF, only Windows platforms support the lto-plugin so far. # Build it unless LTO was explicitly disabled. case $target in - *-cygwin* | *-mingw*) build_lto_plugin=$enable_lto ;; + *-cygwin* | *-msys* | *-mingw*) build_lto_plugin=$enable_lto ;; *) ;; esac ]) @@ -2652,7 +2652,7 @@ rm -f conftest* case "${host}" in *-*-hpux*) RPATH_ENVVAR=SHLIB_PATH ;; *-*-darwin*) RPATH_ENVVAR=DYLD_LIBRARY_PATH ;; - *-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;; + *-*-mingw* | *-*-cygwin | *-*-msys ) RPATH_ENVVAR=PATH ;; *) RPATH_ENVVAR=LD_LIBRARY_PATH ;; esac @@ -3165,7 +3165,7 @@ case " $target_configdirs " in case " $target_configargs " in *" --with-newlib "*) case "$target" in - *-cygwin*) + *-cygwin* | *-msys*) FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -isystem $$s/winsup/cygwin/include' ;; esac diff --git a/libtool.m4 b/libtool.m4 index a216bb14e9..0d6d17a668 100644 --- a/libtool.m4 +++ b/libtool.m4 @@ -1521,7 +1521,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw* | cegcc*) + cygwin* | msys* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -1763,7 +1763,7 @@ else lt_cv_dlopen_libs= ;; - cygwin*) + cygwin* | msys*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; @@ -2234,14 +2234,14 @@ bsdi[[45]]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | msys* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + yes,cygwin* | yes,msys* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -2262,6 +2262,12 @@ cygwin* | mingw* | pw32* | cegcc*) cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + msys*) + # Msys DLLs use 'msys-' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/msys-/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; @@ -3021,7 +3027,7 @@ bsdi[[45]]*) lt_cv_file_magic_test_file=/shlib/libc.so ;; -cygwin*) +cygwin* | msys*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' @@ -3307,7 +3313,7 @@ AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-msys* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) @@ -3382,7 +3388,7 @@ case $host_os in aix*) symcode='[[BCDT]]' ;; -cygwin* | mingw* | pw32* | cegcc*) +cygwin* | msys* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) @@ -3629,7 +3635,7 @@ m4_if([$1], [CXX], [ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) + mingw* | cygwin* | msys* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -3942,7 +3948,7 @@ m4_if([$1], [CXX], [ # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -4025,7 +4031,7 @@ m4_if([$1], [CXX], [ fi ;; - mingw* | cygwin* | pw32* | os2* | cegcc*) + mingw* | cygwin* | msys* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], @@ -4258,7 +4264,7 @@ m4_if([$1], [CXX], [ pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; - cygwin* | mingw* | cegcc*) + cygwin* | msys* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) @@ -4310,7 +4316,7 @@ dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | msys* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -4425,7 +4431,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | msys* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' @@ -4798,7 +4804,7 @@ _LT_EOF _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | msys* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -5742,7 +5748,7 @@ if test "$_lt_caught_CXX_error" != yes; then esac ;; - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | msys* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' diff --git a/ltmain.sh b/ltmain.sh index 9503ec85d7..307a33979e 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -976,7 +976,7 @@ func_enable_tag () case $host in - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* ) + *cygwin* | *msys* | *mingw* | *pw32* | *cegcc* | *solaris2* ) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; @@ -1453,7 +1453,7 @@ func_mode_compile () # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) + cygwin* | msys* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac @@ -2279,7 +2279,7 @@ func_mode_install () 'exit $?' tstripme="$stripme" case $host_os in - cygwin* | mingw* | pw32* | cegcc*) + cygwin* | msys* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" @@ -2385,7 +2385,7 @@ func_mode_install () # Do a test to see if this is really a libtool program. case $host in - *cygwin* | *mingw*) + *cygwin* | *msys* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result @@ -2460,7 +2460,7 @@ func_mode_install () # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in - */usr/bin/install*,*cygwin*) + */usr/bin/install*,*cygwin*|*/usr/bin/install*,*msys*) case $file:$destfile in *.exe:*.exe) # this is ok @@ -2595,7 +2595,7 @@ extern \"C\" { $RM $export_symbols ${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' < "$nlist" > "$export_symbols" case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *msys* | *mingw* | *cegcc* ) echo EXPORTS > "$output_objdir/$outputname.def" cat "$export_symbols" >> "$output_objdir/$outputname.def" ;; @@ -2607,7 +2607,7 @@ extern \"C\" { $GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *msys* | *mingw* | *cegcc* ) echo EXPORTS > "$output_objdir/$outputname.def" cat "$nlist" >> "$output_objdir/$outputname.def" ;; @@ -2663,7 +2663,7 @@ typedef struct { } lt_dlsymlist; " case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *msys* | *mingw* | *cegcc* ) echo >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation @@ -2749,7 +2749,7 @@ static const void *lt_preloaded_setup() { # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in - *cygwin* | *mingw* | *cegcc* ) + *cygwin* | *msys* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` @@ -3192,7 +3192,7 @@ func_to_host_path () func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` ;; - *cygwin* ) + *cygwin* | *msys* ) func_to_host_path_result=`cygpath -w "$1" | $SED -e "$lt_sed_naive_backslashify"` ;; @@ -3265,7 +3265,7 @@ func_to_host_pathlist () ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` ;; - *cygwin* ) + *cygwin* | *msys* ) func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | $SED -e "$lt_sed_naive_backslashify"` ;; @@ -3571,7 +3571,7 @@ main (int argc, char *argv[]) { EOF case "$host" in - *mingw* | *cygwin* ) + *mingw* | *cygwin* | *msys* ) # make stdout use "unix" line endings echo " setmode(1,_O_BINARY);" ;; @@ -4233,7 +4233,7 @@ func_mode_link () { $opt_debug case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra @@ -4713,7 +4713,7 @@ func_mode_link () ;; esac case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; @@ -4733,7 +4733,7 @@ func_mode_link () -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; @@ -4813,7 +4813,7 @@ func_mode_link () -no-install) case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" @@ -5772,7 +5772,7 @@ func_mode_link () if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw* | *cegcc*) + *cygwin* | *msys* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no @@ -5842,7 +5842,7 @@ func_mode_link () elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw* | *cegcc*) + *cygwin* | msys* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" @@ -6693,7 +6693,7 @@ func_mode_link () if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) @@ -7194,7 +7194,7 @@ EOF orig_export_symbols= case $host_os in - cygwin* | mingw* | cegcc*) + cygwin* | msys* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then @@ -7710,7 +7710,7 @@ EOF prog) case $host in - *cygwin*) func_stripname '' '.exe' "$output" + *cygwin* | *msys*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ @@ -7823,7 +7823,7 @@ EOF esac fi case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + *-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; @@ -7901,7 +7901,7 @@ EOF # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; - *cygwin* | *mingw* ) + *cygwin* | *msys* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi @@ -8029,14 +8029,14 @@ EOF esac # test for cygwin because mv fails w/o .exe extensions case $host in - *cygwin*) + *cygwin* | *msys*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in - *cygwin* | *mingw* ) + *cygwin* | *msys* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result @@ -8343,7 +8343,7 @@ EOF # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + *cygwin*,*lai,yes,no,*.dll | *msys*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then diff --git a/ltoptions.m4 b/ltoptions.m4 index 5ef12ced2a..5e7bc34702 100644 --- a/ltoptions.m4 +++ b/ltoptions.m4 @@ -126,7 +126,7 @@ LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) +*-*-cygwin* | *-*-msys* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) diff --git a/newlib/configure b/newlib/configure index 6a542bb884..00de6b93a2 100755 --- a/newlib/configure +++ b/newlib/configure @@ -4283,7 +4283,7 @@ else fi -ac_ext=c +:cn ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' diff --git a/newlib/configure.host b/newlib/configure.host index 3861834663..2023e58f57 100644 --- a/newlib/configure.host +++ b/newlib/configure.host @@ -195,7 +195,7 @@ case "${host_cpu}" in shared_machine_dir=shared_x86 # Don't use for these since they provide their own setjmp. case ${host} in - *-*-sco* | *-*-cygwin*) + *-*-sco* | *-*-cygwin* | *-*-msys*) ;; *) mach_add_setjmp=true @@ -407,7 +407,7 @@ fi if [ "x${newlib_mb}" = "x" ]; then case "${host}" in - *-*-cygwin*) + *-*-cygwin*|*-*-msys*) newlib_mb=yes ;; esac @@ -426,7 +426,7 @@ fi # THIS TABLE IS ALPHA SORTED. KEEP IT THAT WAY. case "${host}" in - *-*-cygwin*) + *-*-cygwin* | *-*-msys*) posix_dir=posix xdr_dir=xdr ;; @@ -589,7 +589,7 @@ esac # THIS TABLE IS ALPHA SORTED. KEEP IT THAT WAY. case "${host}" in - *-*-cygwin*) + *-*-cygwin* | *-*-msys*) test -z "$cygwin_srcdir" && cygwin_srcdir="${abs_newlib_basedir}/../winsup/cygwin" export cygwin_srcdir default_newlib_io_c99_formats="yes" From a116f418453dc6b272c3b58fcb1498790efccd6f Mon Sep 17 00:00:00 2001 From: Kaleb Barrett Date: Sun, 14 Mar 2021 18:58:55 -0500 Subject: [PATCH 709/767] Fix msys library name in import libraries Cygwin's speclib doesn't handle dashes or dots. However, we are about to rename the output file name from `cygwin1.dll` to `msys-2.0.dll`. Let's preemptively fix up all the import libraries that would link against `msys_2_0.dll` to correctly link against `msys-2.0.dll` instead. --- winsup/cygwin/scripts/speclib | 1 + 1 file changed, 1 insertion(+) diff --git a/winsup/cygwin/scripts/speclib b/winsup/cygwin/scripts/speclib index 41a3a8e139..42a02c511b 100755 --- a/winsup/cygwin/scripts/speclib +++ b/winsup/cygwin/scripts/speclib @@ -38,6 +38,7 @@ while (<$nm_fd>) { study; if (/ I _?(.*)_dll_iname/o) { $dllname = $1; + $dllname =~ s/_2_0/-2.0/; } else { my ($file, $member, $symbol) = m%^([^:]*):([^:]*(?=:))?.* T (.*)%o; next if !defined($symbol) || $symbol =~ $exclude_regex; From f858c02bdb8d3444691dd99165718a1dd67ea753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:09:17 +0300 Subject: [PATCH 710/767] Rename dll from cygwin to msys --- winsup/cygserver/transport_pipes.h | 4 +++ winsup/cygwin/Makefile.am | 27 ++++++++++--------- winsup/cygwin/crt0.c | 8 ++++++ winsup/cygwin/cygwin.din | 6 ++--- winsup/cygwin/cygwin.sc.in | 4 +++ winsup/cygwin/dcrt0.cc | 4 +++ winsup/cygwin/dlfcn.cc | 5 ++++ winsup/cygwin/dll_init.cc | 4 +++ winsup/cygwin/dtable.cc | 6 +++++ winsup/cygwin/exceptions.cc | 4 +-- winsup/cygwin/fhandler/pipe.cc | 4 +++ winsup/cygwin/fhandler/pty.cc | 20 ++++++++++++++ winsup/cygwin/hookapi.cc | 4 +++ winsup/cygwin/include/cygwin/cygwin_dll.h | 10 +++---- winsup/cygwin/include/cygwin/version.h | 8 ++++++ winsup/cygwin/lib/_cygwin_crt0_common.cc | 4 +++ winsup/cygwin/lib/crt0.h | 4 +++ winsup/cygwin/lib/cygwin_attach_dll.c | 8 ++++++ winsup/cygwin/lib/cygwin_crt0.c | 8 ++++++ .../cygwin/local_includes/cygserver_setpwd.h | 4 +++ winsup/cygwin/scripts/mkvers.sh | 6 ++--- winsup/cygwin/sec/auth.cc | 8 +++--- winsup/cygwin/syscalls.cc | 4 +-- winsup/cygwin/syslog.cc | 4 +++ winsup/cygwin/winver.rc | 2 +- winsup/testsuite/winsup.api/cygload.cc | 10 +++---- winsup/testsuite/winsup.api/cygload.h | 2 +- winsup/utils/ldd.cc | 2 +- winsup/utils/loadlib.h | 6 ++--- winsup/utils/mingw/cygcheck.cc | 27 +++++++++---------- winsup/utils/mingw/strace.cc | 9 +++---- winsup/utils/path.cc | 12 ++++----- winsup/utils/ssp.c | 8 +++--- 33 files changed, 174 insertions(+), 72 deletions(-) diff --git a/winsup/cygserver/transport_pipes.h b/winsup/cygserver/transport_pipes.h index e101623d24..66272bc86c 100644 --- a/winsup/cygserver/transport_pipes.h +++ b/winsup/cygserver/transport_pipes.h @@ -11,7 +11,11 @@ details. */ #ifndef _TRANSPORT_PIPES_H #define _TRANSPORT_PIPES_H +#ifdef __MSYS__ +#define PIPE_NAME_PREFIX L"\\\\.\\pipe\\msys-" +#else #define PIPE_NAME_PREFIX L"\\\\.\\pipe\\cygwin-" +#endif #define PIPE_NAME_SUFFIX L"-lpc" /* Named pipes based transport, for security on NT */ diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 376c79fc3c..e65e675bcd 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -37,12 +37,12 @@ newlib_build=$(target_builddir)/newlib toollibdir=$(tooldir)/lib toolincludedir=$(tooldir)/include -# Parameters used in building the cygwin.dll. +# Parameters used in building the msys-2.0.dll. -DLL_NAME=cygwin1.dll -NEW_DLL_NAME=new-cygwin1.dll -DEF_FILE=cygwin.def -LIB_NAME=libcygwin.a +DLL_NAME=msys-2.0.dll +NEW_DLL_NAME=new-msys-2.0.dll +DEF_FILE=msys.def +LIB_NAME=libmsys-2.0.a # # sources @@ -584,16 +584,16 @@ LIBSERVER = $(cygserver_blddir)/libcygserver.a $(LIBSERVER): $(MAKE) -C $(cygserver_blddir) libcygserver.a -# We build as new-cygwin1.dll and rename at install time to overcome native +# We build as new-msys-2.0.dll and rename at install time to overcome native # rebuilding issues (we don't want the build tools to see a partially built -# cygwin1.dll and attempt to use it instead of the old one). +# msys-2.0.dll and attempt to use it instead of the old one). # linker script LDSCRIPT=cygwin.sc $(LDSCRIPT): $(LDSCRIPT).in $(AM_V_GEN)$(CC) -E - -P < $^ -o $@ -# cygwin dll +# msys-2.0 dll # Set PE and export table header timestamps to zero for reproducible builds. $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libm.a $(newlib_build)/libc.a @@ -602,18 +602,18 @@ $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ -Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) \ -Wl,--dynamicbase -static \ $${SOURCE_DATE_EPOCH:+-Wl,--no-insert-timestamp} \ - -Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \ + -Wl,--heap=0 -Wl,--out-implib,msysdll.a -shared -o $@ \ -e @DLL_ENTRY@ $(DEF_FILE) \ -Wl,-whole-archive libdll.a -Wl,-no-whole-archive \ $(VERSION_OFILES) \ $(LIBSERVER) \ $(newlib_build)/libm.a \ $(newlib_build)/libc.a \ - -lgcc -lkernel32 -lntdll -Wl,-Map,cygwin.map + -lgcc -lkernel32 -lntdll -Wl,-Map,msys.map @$(MKDIR_P) ${target_builddir}/winsup/testsuite/testinst/bin/ $(AM_V_at)$(INSTALL_PROGRAM) $(NEW_DLL_NAME) ${target_builddir}/winsup/testsuite/testinst/bin/$(DLL_NAME) -# cygwin import library +# msys-2.0 import library toolopts=--cpu=@target_cpu@ --ar=@AR@ --as=@AS@ --nm=@NM@ --objcopy=@OBJCOPY@ $(DEF_FILE): scripts/gendef cygwin.din @@ -626,13 +626,14 @@ sigfe.s: $(DEF_FILE) tlsoffsets LIBCOS=$(addsuffix .o,$(basename $(LIB_FILES))) $(LIB_NAME): $(DEF_FILE) $(LIBCOS) | $(NEW_DLL_NAME) - $(AM_V_GEN)$(srcdir)/scripts/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ cygdll.a $(wordlist 2,99,$^) + $(AM_V_GEN)$(srcdir)/scripts/mkimport $(toolopts) $(NEW_FUNCTIONS) $@ msysdll.a $(wordlist 2,99,$^) # sublibs # import libraries for some subset of symbols indicated by given objects speclib=\ $(srcdir)/scripts/speclib $(toolopts) \ --exclude='cygwin' \ + --exclude='msys' \ --exclude='(?i:dll)' \ --exclude='reloc' \ --exclude='^main$$' \ @@ -679,7 +680,7 @@ all-local: $(LIB_NAME) $(SUBLIBS) clean-local: -rm -f $(BUILT_SOURCES) -rm -f $(DEF_FILE) sigfe.s - -rm -f cygwin.sc cygdll.a cygwin.map + -rm -f cygwin.sc msysdll.a msys.map -rm -f $(NEW_DLL_NAME) -rm -f $(LIB_NAME) $(SUBLIBS) -rm -f version.cc diff --git a/winsup/cygwin/crt0.c b/winsup/cygwin/crt0.c index 1096e58970..3160df4491 100644 --- a/winsup/cygwin/crt0.c +++ b/winsup/cygwin/crt0.c @@ -9,12 +9,20 @@ details. */ extern int main (int argc, char **argv); +#ifdef __MSYS__ +void msys_crt0 (int (*main) (int, char **)); +#else void cygwin_crt0 (int (*main) (int, char **)); +#endif void mainCRTStartup () { +#ifdef __MSYS__ + msys_crt0 (main); +#else cygwin_crt0 (main); +#endif /* These are never actually called. They are just here to force the inclusion of things like -lbinmode. */ diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index 9e354acc61..76e88df2fc 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -1,4 +1,4 @@ -LIBRARY "cygwin1.dll" BASE=0x180040000 +LIBRARY "msys-2.0.dll" BASE=0x180040000 EXPORTS # Exported variables @@ -404,8 +404,8 @@ cygwin_attach_handle_to_fd SIGFE cygwin_conv_path SIGFE cygwin_conv_path_list SIGFE cygwin_create_path SIGFE -cygwin_detach_dll SIGFE_MAYBE -cygwin_dll_init NOSIGFE +msys_detach_dll SIGFE_MAYBE +msys_dll_init NOSIGFE cygwin_internal NOSIGFE cygwin_logon_user SIGFE cygwin_posix_path_list_p NOSIGFE diff --git a/winsup/cygwin/cygwin.sc.in b/winsup/cygwin/cygwin.sc.in index 69526f5d8a..4dc5daed8d 100644 --- a/winsup/cygwin/cygwin.sc.in +++ b/winsup/cygwin/cygwin.sc.in @@ -1,6 +1,10 @@ #ifdef __x86_64__ OUTPUT_FORMAT(pei-x86-64) +# ifdef __MSYS__ +SEARCH_DIR("/usr/x86_64-pc-msys/lib/w32api"); SEARCH_DIR("=/usr/lib/w32api"); +# else SEARCH_DIR("/usr/x86_64-pc-cygwin/lib/w32api"); SEARCH_DIR("=/usr/lib/w32api"); +# endif #else #error unimplemented for this target #endif diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index ff7e6ec50f..16b624eab5 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -1077,7 +1077,11 @@ dll_crt0 (per_process *uptr) See winsup/testsuite/cygload for an example of how to use cygwin1.dll from MSVC and non-cygwin MinGW applications. */ extern "C" void +#ifdef __MSYS__ +msys_dll_init () +#else cygwin_dll_init () +#endif { static int _fmode; diff --git a/winsup/cygwin/dlfcn.cc b/winsup/cygwin/dlfcn.cc index fb70524735..7367d29713 100644 --- a/winsup/cygwin/dlfcn.cc +++ b/winsup/cygwin/dlfcn.cc @@ -147,8 +147,13 @@ collect_basenames (pathfinder::basenamelist & basenames, /* If the basename starts with "lib", ... */ if (!strncmp (basename, "lib", 3)) { +#ifdef __MSYS__ + /* ... replace "lib" with "msys-", before ... */ + basenames.appendv ("msys-", 5, basename+3, baselen-3, ext, extlen, NULL); +#else /* ... replace "lib" with "cyg", before ... */ basenames.appendv ("cyg", 3, basename+3, baselen-3, ext, extlen, NULL); +#endif } /* ... using original basename with new suffix. */ basenames.appendv (basename, baselen, ext, extlen, NULL); diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc index 1a047511f8..7c5f8cc9fd 100644 --- a/winsup/cygwin/dll_init.cc +++ b/winsup/cygwin/dll_init.cc @@ -874,7 +874,11 @@ dll_dllcrt0_1 (VOID *x) } extern "C" void +#ifdef __MSYS__ +msys_detach_dll (dll *) +#else cygwin_detach_dll (dll *) +#endif { HANDLE retaddr; if (_my_tls.isinitialized ()) diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 9508f3e0bb..3c40e0fa3d 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -998,9 +998,15 @@ handle_to_fn (HANDLE h, char *posix_fn) if (wcsncasecmp (w32, DEV_NAMED_PIPE, DEV_NAMED_PIPE_LEN) == 0) { w32 += DEV_NAMED_PIPE_LEN; +#ifdef __MSYS__ + if (wcsncmp (w32, L"msys-", WCLEN (L"msys-")) != 0) + return false; + w32 += WCLEN (L"msys-"); +#else if (wcsncmp (w32, L"cygwin-", WCLEN (L"cygwin-")) != 0) return false; w32 += WCLEN (L"cygwin-"); +#endif /* Check for installation key and trailing dash. */ w32len = cygheap->installation_key.Length / sizeof (WCHAR); if (w32len diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 3195d5719a..18271f54eb 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -526,14 +526,14 @@ int exec_prepared_command (PWCHAR command) PWCHAR rawenv = GetEnvironmentStringsW () ; for (PWCHAR p = rawenv; *p != L'\0'; p = wcschr (p, L'\0') + 1) { - if (wcsncmp (p, L"CYGWIN=", wcslen (L"CYGWIN=")) == 0) + if (wcsncmp (p, L"MSYS=", wcslen (L"MSYS=")) == 0) { PWCHAR q = wcsstr (p, L"error_start") ; /* replace 'error_start=...' with '_rror_start=...' */ if (q) { *q = L'_' ; - SetEnvironmentVariableW (L"CYGWIN", p + wcslen (L"CYGWIN=")) ; + SetEnvironmentVariableW (L"MSYS", p + wcslen (L"MSYS=")) ; } break; } diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 6658a23e7f..5d2fe125a3 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -727,7 +727,11 @@ fhandler_pipe::close () return ret; } +#ifdef __MSYS__ +#define PIPE_INTRO "\\\\.\\pipe\\msys-" +#else #define PIPE_INTRO "\\\\.\\pipe\\cygwin-" +#endif /* Create a pipe, and return handles to the read and write ends, just like CreatePipe, but ensure that the write end permits diff --git a/winsup/cygwin/fhandler/pty.cc b/winsup/cygwin/fhandler/pty.cc index fa6bf10961..12a0ab377c 100644 --- a/winsup/cygwin/fhandler/pty.cc +++ b/winsup/cygwin/fhandler/pty.cc @@ -927,7 +927,11 @@ fhandler_pty_slave::open (int flags, mode_t) pipe_reply repl; DWORD len; +#ifdef __MSYS__ + __small_sprintf (buf, "\\\\.\\pipe\\msys-%S-pty%d-master-ctl", +#else __small_sprintf (buf, "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl", +#endif &cygheap->installation_key, get_minor ()); termios_printf ("dup handles via master control pipe %s", buf); if (!CallNamedPipe (buf, &req, sizeof req, &repl, sizeof repl, @@ -1206,7 +1210,11 @@ fhandler_pty_slave::reset_switch_to_nat_pipe (void) { char pipe[MAX_PATH]; __small_sprintf (pipe, +#ifdef __MSYS__ + "\\\\.\\pipe\\msys-%S-pty%d-master-ctl", +#else "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl", +#endif &cygheap->installation_key, get_minor ()); pipe_request req = { GetCurrentProcessId () }; pipe_reply repl; @@ -2090,7 +2098,11 @@ fhandler_pty_master::close () pipe_reply repl; DWORD len; +#ifdef __MSYS__ + __small_sprintf (buf, "\\\\.\\pipe\\msys-%S-pty%d-master-ctl", +#else __small_sprintf (buf, "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl", +#endif &cygheap->installation_key, get_minor ()); acquire_output_mutex (mutex_timeout); if (master_ctl) @@ -2996,7 +3008,11 @@ fhandler_pty_master::setup () /* Create master control pipe which allows the master to duplicate the pty pipe handles to processes which deserve it. */ +#ifdef __MSYS__ + __small_sprintf (buf, "\\\\.\\pipe\\msys-%S-pty%d-master-ctl", +#else __small_sprintf (buf, "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl", +#endif &cygheap->installation_key, unit); master_ctl = CreateNamedPipe (buf, PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE, @@ -3880,7 +3896,11 @@ fhandler_pty_slave::transfer_input (tty::xfer_dir dir, HANDLE from, tty *ttyp, { char pipe[MAX_PATH]; __small_sprintf (pipe, +#ifdef __MSYS__ + "\\\\.\\pipe\\msys-%S-pty%d-master-ctl", +#else "\\\\.\\pipe\\cygwin-%S-pty%d-master-ctl", +#endif &cygheap->installation_key, ttyp->get_minor ()); pipe_request req = { GetCurrentProcessId () }; pipe_reply repl; diff --git a/winsup/cygwin/hookapi.cc b/winsup/cygwin/hookapi.cc index ee2edbafee..9f31a716c4 100644 --- a/winsup/cygwin/hookapi.cc +++ b/winsup/cygwin/hookapi.cc @@ -379,7 +379,11 @@ hook_or_detect_cygwin (const char *name, const void *fn, WORD& subsys, HANDLE h) for (PIMAGE_IMPORT_DESCRIPTOR pd = pdfirst; pd->FirstThunk; pd++) { if (!ascii_strcasematch (rva (PSTR, map ?: (char *) hm, pd->Name - delta), +#ifdef __MSYS__ + "msys-2.0.dll")) +#else "cygwin1.dll")) +#endif continue; if (!fn) { diff --git a/winsup/cygwin/include/cygwin/cygwin_dll.h b/winsup/cygwin/include/cygwin/cygwin_dll.h index 1e4cf98ba5..b77598bb63 100644 --- a/winsup/cygwin/include/cygwin/cygwin_dll.h +++ b/winsup/cygwin/include/cygwin/cygwin_dll.h @@ -24,8 +24,8 @@ details. */ CDECL_BEGIN \ int Entry (HINSTANCE h, DWORD reason, void *ptr); \ typedef int (*mainfunc) (int, char **, char **); \ - extern PVOID cygwin_attach_dll (HMODULE, mainfunc); \ - extern void cygwin_detach_dll (PVOID); \ + extern PVOID msys_attach_dll (HMODULE, mainfunc); \ + extern void msys_detach_dll (PVOID); \ CDECL_END \ \ static HINSTANCE storedHandle; \ @@ -42,7 +42,7 @@ static int __dllMain (int a __attribute__ ((__unused__)), \ \ static PVOID dll_index; \ \ -int _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr) \ +int _msys_dll_entry (HINSTANCE h, DWORD reason, void *ptr) \ { \ int ret; \ ret = 1; \ @@ -55,7 +55,7 @@ int _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr) \ storedReason = reason; \ storedPtr = ptr; \ __dynamically_loaded = (ptr == NULL); \ - dll_index = cygwin_attach_dll (h, &__dllMain); \ + dll_index = msys_attach_dll (h, &__dllMain); \ if (dll_index == (PVOID) -1) \ ret = 0; \ } \ @@ -66,7 +66,7 @@ int _cygwin_dll_entry (HINSTANCE h, DWORD reason, void *ptr) \ ret = Entry (h, reason, ptr); \ if (ret) \ { \ - cygwin_detach_dll (dll_index); \ + msys_detach_dll (dll_index); \ dll_index = (PVOID) -1; \ } \ } \ diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 0f87fbc27f..2e624a968c 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -502,7 +502,11 @@ details. */ names include the CYGWIN_VERSION_SHARED_DATA version as well as this identifier. */ +#ifdef __MSYS__ +#define CYGWIN_VERSION_DLL_IDENTIFIER "msys-2.0" +#else #define CYGWIN_VERSION_DLL_IDENTIFIER "cygwin1" +#endif /* The Cygwin mount table interface in the Win32 registry also has a version number associated with it in case that is changed in a non-backwards @@ -518,7 +522,11 @@ details. */ /* Identifiers used in the Win32 registry. */ +#ifdef __MSYS__ +#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "MSYS" +#else #define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin" +#endif #define CYGWIN_INFO_INSTALLATIONS_NAME "Installations" /* The default cygdrive prefix. */ diff --git a/winsup/cygwin/lib/_cygwin_crt0_common.cc b/winsup/cygwin/lib/_cygwin_crt0_common.cc index d356a50fba..801b6f91ca 100644 --- a/winsup/cygwin/lib/_cygwin_crt0_common.cc +++ b/winsup/cygwin/lib/_cygwin_crt0_common.cc @@ -73,7 +73,11 @@ struct per_process_cxx_malloc __cygwin_cxx_malloc = and then jump to the dll. */ int +#ifdef __MSYS__ +_msys_crt0_common (MainFunc f, per_process *u) +#else _cygwin_crt0_common (MainFunc f, per_process *u) +#endif { per_process *newu = (per_process *) cygwin_internal (CW_USER_DATA); bool uwasnull; diff --git a/winsup/cygwin/lib/crt0.h b/winsup/cygwin/lib/crt0.h index e599b44934..e81750032b 100644 --- a/winsup/cygwin/lib/crt0.h +++ b/winsup/cygwin/lib/crt0.h @@ -13,7 +13,11 @@ extern "C" { #include "winlean.h" struct per_process; typedef int (*MainFunc) (int argc, char *argv[], char **env); +#ifdef __MSYS__ +int _msys_crt0_common (MainFunc, struct per_process *); +#else int _cygwin_crt0_common (MainFunc, struct per_process *); +#endif PVOID dll_dllcrt0 (HMODULE, struct per_process *); #ifdef __cplusplus diff --git a/winsup/cygwin/lib/cygwin_attach_dll.c b/winsup/cygwin/lib/cygwin_attach_dll.c index 866bfd80fa..82679c4a97 100644 --- a/winsup/cygwin/lib/cygwin_attach_dll.c +++ b/winsup/cygwin/lib/cygwin_attach_dll.c @@ -15,10 +15,18 @@ details. */ /* for a loaded dll */ PVOID +#ifdef __MSYS__ +msys_attach_dll (HMODULE h, MainFunc f) +#else cygwin_attach_dll (HMODULE h, MainFunc f) +#endif { static struct per_process u; +#ifdef __MSYS__ + (void) _msys_crt0_common (f, &u); +#else (void) _cygwin_crt0_common (f, &u); +#endif /* jump into the dll. */ return dll_dllcrt0 (h, &u); diff --git a/winsup/cygwin/lib/cygwin_crt0.c b/winsup/cygwin/lib/cygwin_crt0.c index 7020a639dd..396447e52e 100644 --- a/winsup/cygwin/lib/cygwin_crt0.c +++ b/winsup/cygwin/lib/cygwin_crt0.c @@ -14,8 +14,16 @@ extern void _dll_crt0 () /* for main module */ void +#ifdef __MSYS__ +msys_crt0 (MainFunc f) +#else cygwin_crt0 (MainFunc f) +#endif { +#ifdef __MSYS__ + _msys_crt0_common (f, NULL); +#else _cygwin_crt0_common (f, NULL); +#endif _dll_crt0 (); /* Jump into the dll, never to return */ } diff --git a/winsup/cygwin/local_includes/cygserver_setpwd.h b/winsup/cygwin/local_includes/cygserver_setpwd.h index fc1576b059..b2975111cf 100644 --- a/winsup/cygwin/local_includes/cygserver_setpwd.h +++ b/winsup/cygwin/local_includes/cygserver_setpwd.h @@ -12,7 +12,11 @@ details. */ #include #include "cygserver.h" +#ifdef __MSYS__ +#define CYGWIN_LSA_KEY_PREFIX L"L$MSYS_" +#else #define CYGWIN_LSA_KEY_PREFIX L"L$CYGWIN_" +#endif #ifndef __INSIDE_CYGWIN__ class transport_layer_base; diff --git a/winsup/cygwin/scripts/mkvers.sh b/winsup/cygwin/scripts/mkvers.sh index 38f439cd0d..a3d45c5db0 100755 --- a/winsup/cygwin/scripts/mkvers.sh +++ b/winsup/cygwin/scripts/mkvers.sh @@ -123,7 +123,7 @@ dir=$(echo $dir | sed -e 's%/include/cygwin.*$%%' -e 's%include/cygwin.*$%.%') ) | while read var; do read val cat <&9 @@ -135,9 +135,9 @@ trap "rm -f /tmp/mkvers.$$" 0 1 2 15 # cat <&9 #ifdef DEBUGGING - "%%% Cygwin shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "-$builddate\n" + "%%% MSYS shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "-$builddate\n" #else - "%%% Cygwin shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "\n" + "%%% MSYS shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "\n" #endif "END_CYGWIN_VERSION_INFO\n\0"; cygwin_version_info cygwin_version = diff --git a/winsup/cygwin/sec/auth.cc b/winsup/cygwin/sec/auth.cc index 43b5803893..db1d5c8977 100644 --- a/winsup/cygwin/sec/auth.cc +++ b/winsup/cygwin/sec/auth.cc @@ -462,7 +462,7 @@ verify_token (HANDLE token, cygsid &usersid, user_groups &groups, bool *pintern) if (!NT_SUCCESS (status)) debug_printf ("NtQueryInformationToken(), %y", status); else - *pintern = intern = !memcmp (ts.SourceName, "Cygwin.1", 8); + *pintern = intern = !memcmp (ts.SourceName, "MSYS.2", 6); } /* Verify usersid */ cygsid tok_usersid (NO_SID); @@ -747,7 +747,7 @@ s4uauth (bool logon, PCWSTR domain, PCWSTR user, NTSTATUS &ret_status) { /* Register as logon process. */ debug_printf ("Impersonation requested"); - RtlInitAnsiString (&name, "Cygwin"); + RtlInitAnsiString (&name, "MSYS"); status = LsaRegisterLogonProcess (&name, &lsa_hdl, &sec_mode); } else @@ -786,11 +786,11 @@ s4uauth (bool logon, PCWSTR domain, PCWSTR user, NTSTATUS &ret_status) } /* Create origin. */ - stpcpy (origin.buf, "Cygwin"); + stpcpy (origin.buf, "MSYS"); RtlInitAnsiString (&origin.str, origin.buf); /* Create token source. */ - memcpy (ts.SourceName, "Cygwin.1", 8); + memcpy (ts.SourceName, "MSYS.2", 6); ts.SourceIdentifier.HighPart = 0; ts.SourceIdentifier.LowPart = kerberos_auth ? 0x0105 : 0x0106; diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 9d88b60b0f..ed564c8740 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -339,7 +339,7 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, ULONG flags) } else { - /* Create unique filename. Start with a dot, followed by "cyg" + /* Create unique filename. Start with a dot, followed by "msys" transposed into the Unicode low surrogate area (U+dc00) on file systems supporting Unicode (except Samba), followed by the inode number in hex, followed by a path hash in hex. The combination @@ -347,7 +347,7 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, ULONG flags) RtlAppendUnicodeToString (&recycler, (pc.fs_flags () & FILE_UNICODE_ON_DISK && !pc.fs_is_samba ()) - ? L".\xdc63\xdc79\xdc67" : L".cyg"); + ? L".\xdc6d\xdc73\xdc79\xdc73" : L".msys"); pfii = (PFILE_INTERNAL_INFORMATION) infobuf; status = NtQueryInformationFile (fh, &io, pfii, sizeof *pfii, FileInternalInformation); diff --git a/winsup/cygwin/syslog.cc b/winsup/cygwin/syslog.cc index 6a295501f1..431f9d2396 100644 --- a/winsup/cygwin/syslog.cc +++ b/winsup/cygwin/syslog.cc @@ -26,7 +26,11 @@ details. */ #include "cygtls.h" #include "tls_pbuf.h" +#ifdef __MSYS__ +#define CYGWIN_LOG_NAME L"MSYS" +#else #define CYGWIN_LOG_NAME L"Cygwin" +#endif static struct { diff --git a/winsup/cygwin/winver.rc b/winsup/cygwin/winver.rc index 980d51204c..58878d41bd 100644 --- a/winsup/cygwin/winver.rc +++ b/winsup/cygwin/winver.rc @@ -35,7 +35,7 @@ BEGIN VALUE "InternalName", CYGWIN_DLL_NAME VALUE "LegalCopyright", "Copyright \251 Cygwin Authors 1996-" STRINGIFY(CYGWIN_BUILD_YEAR) VALUE "OriginalFilename", CYGWIN_DLL_NAME - VALUE "ProductName", "Cygwin" + VALUE "ProductName", "MSYS2" VALUE "ProductVersion", STRINGIFY(CYGWIN_VERSION) VALUE "APIVersion", CYGWIN_API_VERSION VALUE "SharedMemoryVersion", STRINGIFY(CYGWIN_VERSION_SHARED_DATA) diff --git a/winsup/testsuite/winsup.api/cygload.cc b/winsup/testsuite/winsup.api/cygload.cc index afd3ee90fc..1b2f79dc05 100644 --- a/winsup/testsuite/winsup.api/cygload.cc +++ b/winsup/testsuite/winsup.api/cygload.cc @@ -25,7 +25,7 @@ save for errors. -testinterrupts Pauses the program for 30 seconds so you can demonstrate that it handles ^C properly. - -cygwin Name of DLL to load. Defaults to "cygwin1.dll". */ + -cygwin Name of DLL to load. Defaults to "msys-2.0.dll". */ #include "cygload.h" #include @@ -154,13 +154,13 @@ cygwin::connector::connector (const char *dll) *out << "Initializing cygwin..." << endl; - // This calls dcrt0.cc:cygwin_dll_init(), which calls dll_crt0_1(), + // This calls dcrt0.cc:msys_dll_init(), which calls dll_crt0_1(), // which will, among other things: // * spawn the cygwin signal handling thread from sigproc_init() // * initialize the thread-local storage for this thread and overwrite // the first 4K of the stack void (*cyginit) (); - get_symbol ("cygwin_dll_init", cyginit); + get_symbol ("msys_dll_init", cyginit); (*cyginit) (); *out << "Loading symbols..." << endl; @@ -224,7 +224,7 @@ cygwin::connector::~connector () // This should call init.cc:dll_entry() with DLL_PROCESS_DETACH. if (!FreeLibrary (_library)) - throw windows_error ("FreeLibrary", "cygwin1.dll"); + throw windows_error ("FreeLibrary", "msys-2.0.dll"); } catch (std::exception &x) { @@ -490,7 +490,7 @@ main (int argc, char *argv[]) std::ostringstream output; bool verbose = false, testinterrupts = false; - const char *dll = "cygwin1.dll"; + const char *dll = "msys-2.0.dll"; out = &output; diff --git a/winsup/testsuite/winsup.api/cygload.h b/winsup/testsuite/winsup.api/cygload.h index 30154048b0..0f2aacda9a 100644 --- a/winsup/testsuite/winsup.api/cygload.h +++ b/winsup/testsuite/winsup.api/cygload.h @@ -76,7 +76,7 @@ namespace cygwin // spawns a thread to let you receive signals from cygwin. class connector { public: - connector (const char *dll = "cygwin1.dll"); + connector (const char *dll = "msys-2.0.dll"); ~connector (); // A wrapper around GetProcAddress() for fetching symbols from the diff --git a/winsup/utils/ldd.cc b/winsup/utils/ldd.cc index 0d073c2989..a31c4c6e44 100644 --- a/winsup/utils/ldd.cc +++ b/winsup/utils/ldd.cc @@ -249,7 +249,7 @@ tocyg (wchar_t *win_fn) return fn; } -#define CYGWIN_DLL_LEN (wcslen (L"\\cygwin1.dll")) +#define CYGWIN_DLL_LEN (wcslen (L"\\msys-2.0.dll")) static int print_dlls (dlls *dll, const wchar_t *dllfn, const wchar_t *process_fn) { diff --git a/winsup/utils/loadlib.h b/winsup/utils/loadlib.h index c83b76478f..42ffbfdc03 100644 --- a/winsup/utils/loadlib.h +++ b/winsup/utils/loadlib.h @@ -13,7 +13,7 @@ #include /* Load all system libs from the windows system directory by prepending the - full path. This doesn't work for loadling cygwin1.dll. For this case, + full path. This doesn't work for loadling msys-2.0.dll. For this case, instead of prepending the path, make sure that the CWD is removed from the DLL search path, if possible (XP SP1++, Vista++). */ static HMODULE _load_sys_library (const wchar_t *dll) __attribute__ ((used)); @@ -45,8 +45,8 @@ _load_sys_library (const wchar_t *dll) set_dll_directory (L""); } - if (wcscmp (dll, L"cygwin1.dll") == 0) - return LoadLibraryExW (L"cygwin1.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH); + if (wcscmp (dll, L"msys-2.0.dll") == 0) + return LoadLibraryExW (L"msys-2.0.dll", NULL, LOAD_WITH_ALTERED_SEARCH_PATH); wcscpy (dllpath, sysdir); wcscpy (dllpath + sysdir_len, dll); diff --git a/winsup/utils/mingw/cygcheck.cc b/winsup/utils/mingw/cygcheck.cc index 1dde2ecbab..7718ab9dc9 100644 --- a/winsup/utils/mingw/cygcheck.cc +++ b/winsup/utils/mingw/cygcheck.cc @@ -95,8 +95,7 @@ static const char *known_env_vars[] = { "c_include_path", "compiler_path", "cxx_include_path", - "cygwin", - "cygwin32", + "msys", "dejagnu", "expect", "gcc_default_options", @@ -554,7 +553,7 @@ struct ImpDirectory static bool track_down (const char *file, const char *suffix, int lvl); -#define CYGPREFIX (sizeof ("%%% Cygwin ") - 1) +#define CYGPREFIX (sizeof ("%%% Msys ") - 1) static void cygwin_info (HANDLE h) { @@ -586,7 +585,7 @@ cygwin_info (HANDLE h) while (buf < bufend) if ((buf = (char *) memchr (buf, '%', bufend - buf)) == NULL) break; - else if (strncmp ("%%% Cygwin ", buf, CYGPREFIX) != 0) + else if (strncmp ("%%% Msys ", buf, CYGPREFIX) != 0) buf++; else { @@ -780,7 +779,7 @@ dll_info (const char *path, HANDLE fh, int lvl, int recurse) } } } - if (strstr (path, "\\cygwin1.dll")) + if (strstr (path, "\\msys-2.0.dll")) cygwin_info (fh); } @@ -1027,7 +1026,7 @@ scan_registry (RegInfo * prev, HKEY hKey, char *name, int cygwin, bool wow64) char *cp; for (cp = name; *cp; cp++) - if (strncasecmp (cp, "Cygwin", 6) == 0) + if (strncasecmp (cp, "Msys", 4) == 0) cygwin = 1; DWORD num_subkeys, max_subkey_len, num_values; @@ -1309,7 +1308,7 @@ handle_reg_installation (handle_reg_t what) printf ("Cygwin installations found in the registry:\n"); for (int i = 0; i < 2; ++i) if (RegOpenKeyEx (i ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE, - "SOFTWARE\\Cygwin\\Installations", 0, + "SOFTWARE\\Msys\\Installations", 0, what == DELETE_KEY ? KEY_READ | KEY_WRITE : KEY_READ, &key) == ERROR_SUCCESS) @@ -1331,7 +1330,7 @@ handle_reg_installation (handle_reg_t what) if (what == PRINT_KEY) printf (" %s Key: %s Path: %s", i ? "User: " : "System:", name, path); - strcat (path, "\\bin\\cygwin1.dll"); + strcat (path, "\\bin\\msys-2.0.dll"); if (what == PRINT_KEY) printf ("%s\n", access (path, F_OK) ? " (ORPHANED)" : ""); else if (access (path, F_OK)) @@ -1783,7 +1782,7 @@ dump_sysinfo () if (registry) { if (givehelp) - printf ("Scanning registry for keys with 'Cygwin' in them...\n"); + printf ("Scanning registry for keys with 'Msys' in them...\n"); scan_registry (0, HKEY_CURRENT_USER, (char *) "HKEY_CURRENT_USER", 0, false); scan_registry (0, HKEY_LOCAL_MACHINE, @@ -1978,10 +1977,10 @@ dump_sysinfo () wcstombs (f, ffinfo.cFileName, sizeof f); if (strcasecmp (f + strlen (f) - 4, ".dll") == 0) { - if (strncasecmp (f, "cyg", 3) == 0) + if (strncasecmp (f, "msys-", 5) == 0) { sprintf (tmp, "%s%s", pth->dir, f); - if (strcasecmp (f, "cygwin1.dll") == 0) + if (strcasecmp (f, "msys-2.0.dll") == 0) { if (!cygwin_dll_count) strcpy (cygdll_path, pth->dir); @@ -2005,9 +2004,9 @@ dump_sysinfo () FindClose (ff); } if (cygwin_dll_count > 1) - puts ("Warning: There are multiple cygwin1.dlls on your path"); + puts ("Warning: There are multiple msys-2.0.dlls on your path"); if (!cygwin_dll_count) - puts ("Warning: cygwin1.dll not found on your path"); + puts ("Warning: msys-2.0.dll not found on your path"); dump_dodgy_apps (verbose); @@ -3021,7 +3020,7 @@ load_cygwin (int& argc, char **&argv) { HMODULE h; - if (!(h = LoadLibrary ("cygwin1.dll"))) + if (!(h = LoadLibrary ("msys-2.0.dll"))) return; GetModuleFileNameW (h, cygwin_dll_path, 32768); if ((cygwin_internal = (uintptr_t (*) (cygwin_getinfo_types, ...)) diff --git a/winsup/utils/mingw/strace.cc b/winsup/utils/mingw/strace.cc index c220643b33..29db640239 100644 --- a/winsup/utils/mingw/strace.cc +++ b/winsup/utils/mingw/strace.cc @@ -284,7 +284,7 @@ load_cygwin () if (h) return 0; - if (!(h = LoadLibrary ("cygwin1.dll"))) + if (!(h = LoadLibrary ("msys-2.0.dll"))) { errno = ENOENT; return 0; @@ -354,17 +354,16 @@ create_child (char **argv) make_command_line (one_line, argv); SetConsoleCtrlHandler (NULL, 0); - - const char *cygwin_env = getenv ("CYGWIN"); + const char *cygwin_env = getenv ("MSYS"); const char *space; if (cygwin_env && strlen (cygwin_env) <= 256) /* sanity check */ space = " "; else space = cygwin_env = ""; - char *newenv = (char *) malloc (sizeof ("CYGWIN=noglob") + char *newenv = (char *) malloc (sizeof ("MSYS=noglob") + strlen (space) + strlen (cygwin_env)); - sprintf (newenv, "CYGWIN=noglob%s%s", space, cygwin_env); + sprintf (newenv, "MSYS=noglob%s%s", space, cygwin_env); _putenv (newenv); ret = CreateProcess (0, one_line.buf, /* command line */ NULL, /* Security */ diff --git a/winsup/utils/path.cc b/winsup/utils/path.cc index fe55a646d9..323e4c784b 100644 --- a/winsup/utils/path.cc +++ b/winsup/utils/path.cc @@ -585,14 +585,14 @@ read_mounts () } max_mount_entry = 0; - /* First fetch the cygwin1.dll path from the LoadLibrary call in load_cygwin. - This utilizes the DLL search order to find a matching cygwin1.dll and to + /* First fetch the msys-2.0.dll path from the LoadLibrary call in load_cygwin. + This utilizes the DLL search order to find a matching msys-2.0.dll and to compute the installation path from that DLL's path. */ if (cygwin_dll_path[0]) wcscpy (path, cygwin_dll_path); - /* If we can't load cygwin1.dll, check where cygcheck is living itself and - try to fetch installation path from here. Does cygwin1.dll exist in the - same path? This should only kick in if the cygwin1.dll in the same path + /* If we can't load msys-2.0.dll, check where cygcheck is living itself and + try to fetch installation path from here. Does msys-2.0.dll exist in the + same path? This should only kick in if the msys-2.0.dll in the same path has been made non-executable for the current user accidentally. */ else if (!GetModuleFileNameW (NULL, path, 32768)) return; @@ -601,7 +601,7 @@ read_mounts () { if (!cygwin_dll_path[0]) { - wcscpy (path_end, L"\\cygwin1.dll"); + wcscpy (path_end, L"\\msys-2.0.dll"); DWORD attr = GetFileAttributesW (path); if (attr == (DWORD) -1 || (attr & (FILE_ATTRIBUTE_DIRECTORY diff --git a/winsup/utils/ssp.c b/winsup/utils/ssp.c index 96a90a1d98..95045e1e8b 100644 --- a/winsup/utils/ssp.c +++ b/winsup/utils/ssp.c @@ -710,15 +710,15 @@ usage (FILE * stream) "You must specify the range of memory addresses to keep track of\n" "manually, but it's not hard to figure out what to specify. Use the\n" "\"objdump\" program to determine the bounds of the target's \".text\"\n" - "section. Let's say we're profiling cygwin1.dll. Make sure you've\n" + "section. Let's say we're profiling msys-2.0.dll. Make sure you've\n" "built it with debug symbols (else gprof won't run) and run objdump\n" "like this:\n" "\n" - " objdump -h cygwin1.dll\n" + " objdump -h msys-2.0.dll\n" "\n" "It will print a report like this:\n" "\n" - "cygwin1.dll: file format pei-i386\n" + "msys-2.0.dll: file format pei-i386\n" "\n" "Sections:\n" "Idx Name Size VMA LMA File off Algn\n" @@ -749,7 +749,7 @@ usage (FILE * stream) "\"gmon.out\". You can turn this data file into a readable report with\n" "gprof:\n" "\n" - " gprof -b cygwin1.dll\n" + " gprof -b msys-2.0.dll\n" "\n" "The \"-b\" means 'skip the help pages'. You can omit this until you're\n" "familiar with the report layout. The gprof documentation explains\n" From b084abe0ec93354984d37d0ec09fab39984d1e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:17:46 +0300 Subject: [PATCH 711/767] Add functionality for converting UNIX paths in arguments and environment variables to Windows form for native Win32 applications. --- winsup/cygwin/Makefile.am | 1 + winsup/cygwin/environ.cc | 24 +- winsup/cygwin/external.cc | 2 +- winsup/cygwin/include/sys/cygwin.h | 6 + winsup/cygwin/local_includes/environ.h | 2 +- winsup/cygwin/local_includes/winf.h | 4 + winsup/cygwin/msys2_path_conv.cc | 699 +++++++++++++++++++++++++ winsup/cygwin/msys2_path_conv.h | 147 ++++++ winsup/cygwin/path.cc | 69 +++ winsup/cygwin/spawn.cc | 38 +- 10 files changed, 988 insertions(+), 4 deletions(-) create mode 100644 winsup/cygwin/msys2_path_conv.cc create mode 100644 winsup/cygwin/msys2_path_conv.h diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index e65e675bcd..b1b0df708e 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -312,6 +312,7 @@ DLL_FILES= \ miscfuncs.cc \ mktemp.cc \ msg.cc \ + msys2_path_conv.cc \ mount.cc \ net.cc \ netdb.cc \ diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index d4cedcbdfe..639e69393b 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -1046,7 +1046,7 @@ env_compare (const void *key, const void *memb) to the child. */ char ** build_env (const char * const *envp, PWCHAR &envblock, int &envc, - bool no_envblock, HANDLE new_token) + bool no_envblock, HANDLE new_token, bool keep_posix) { PWCHAR cwinenv = NULL; size_t winnum = 0; @@ -1139,6 +1139,19 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, for (srcp = envp, dstp = newenv, pass_dstp = pass_env; *srcp; srcp++) { bool calc_tl = !no_envblock; +#ifdef __MSYS__ + /* Don't pass timezone environment to non-msys applications */ + if (!keep_posix && ascii_strncasematch(*srcp, "TZ=", 3)) + { + const char *v = *srcp + 3; + if (*v == ':') + goto next1; + for (; *v; v++) + if (!isalpha(*v) && !isdigit(*v) && + *v != '-' && *v != '+' && *v != ':') + goto next1; + } +#endif /* Look for entries that require special attention */ for (unsigned i = 0; i < SPENVS_SIZE; i++) if (!saw_spenv[i] && (*dstp = spenvs[i].retrieve (no_envblock, *srcp))) @@ -1259,6 +1272,15 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, saw_PATH = true; } } +#ifdef __MSYS__ + else if (!keep_posix) { + char *win_arg = arg_heuristic(*srcp); + debug_printf("WIN32_PATH is %s", win_arg); + p = cstrdup1(win_arg); + if (win_arg != *srcp) + free (win_arg); + } +#endif else p = *srcp; /* Don't worry about it */ diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc index 97e4528741..33863d8001 100644 --- a/winsup/cygwin/external.cc +++ b/winsup/cygwin/external.cc @@ -141,7 +141,7 @@ create_winenv (const char * const *env) int unused_envc; PWCHAR envblock = NULL; char **envp = build_env (env ?: environ, envblock, unused_envc, false, - NULL); + NULL, true); PWCHAR p = envblock; if (envp) diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h index 2c5997b5e2..6383646cc7 100644 --- a/winsup/cygwin/include/sys/cygwin.h +++ b/winsup/cygwin/include/sys/cygwin.h @@ -60,6 +60,12 @@ extern ssize_t cygwin_conv_path_list (cygwin_conv_path_t what, const void *from, to one of the above values, or to ENOMEM if malloc fails. */ extern void *cygwin_create_path (cygwin_conv_path_t what, const void *from); +extern char * arg_heuristic_with_exclusions (char const * const arg, + char const * exclusions, + size_t exclusions_count); + +extern char * arg_heuristic (char const * const); + extern pid_t cygwin_winpid_to_pid (int); extern int cygwin_posix_path_list_p (const char *); extern void cygwin_split_path (const char *, char *, char *); diff --git a/winsup/cygwin/local_includes/environ.h b/winsup/cygwin/local_includes/environ.h index 86e64a72f9..0dd45359cc 100644 --- a/winsup/cygwin/local_includes/environ.h +++ b/winsup/cygwin/local_includes/environ.h @@ -34,7 +34,7 @@ win_env *getwinenv (const char *name, const char *posix = NULL, win_env * = NULL char *getwinenveq (const char *name, size_t len, int); char **build_env (const char * const *envp, PWCHAR &envblock, - int &envc, bool need_envblock, HANDLE new_token); + int &envc, bool need_envblock, HANDLE new_token, bool keep_posix); char **win32env_to_cygenv (PWCHAR rawenv, bool posify); diff --git a/winsup/cygwin/local_includes/winf.h b/winsup/cygwin/local_includes/winf.h index b586934410..bc53cd1aa3 100644 --- a/winsup/cygwin/local_includes/winf.h +++ b/winsup/cygwin/local_includes/winf.h @@ -56,6 +56,10 @@ class av calloced = 1; } } + void replace (int i, const char *arg) + { + argv[i] = cstrdup1 (arg); + } void dup_all () { for (int i = calloced; i < argc; i++) diff --git a/winsup/cygwin/msys2_path_conv.cc b/winsup/cygwin/msys2_path_conv.cc new file mode 100644 index 0000000000..c52728759e --- /dev/null +++ b/winsup/cygwin/msys2_path_conv.cc @@ -0,0 +1,699 @@ +/* + The MSYS2 Path conversion source code is licensed under: + + CC0 1.0 Universal + + Official translations of this legal tool are available + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + + Statement of Purpose + + The laws of most jurisdictions throughout the world automatically + confer exclusive Copyright and Related Rights (defined below) upon the + creator and subsequent owner(s) (each and all, an "owner") of an + original work of authorship and/or a database (each, a "Work"). + + Certain owners wish to permanently relinquish those rights to a Work + for the purpose of contributing to a commons of creative, cultural and + scientific works ("Commons") that the public can reliably and without + fear of later claims of infringement build upon, modify, incorporate + in other works, reuse and redistribute as freely as possible in any + form whatsoever and for any purposes, including without limitation + commercial purposes. These owners may contribute to the Commons to + promote the ideal of a free culture and the further production of + creative, cultural and scientific works, or to gain reputation or + greater distribution for their Work in part through the use and + efforts of others. + + For these and/or other purposes and motivations, and without any + expectation of additional consideration or compensation, the person + associating CC0 with a Work (the "Affirmer"), to the extent that he or + she is an owner of Copyright and Related Rights in the Work, + voluntarily elects to apply CC0 to the Work and publicly distribute + the Work under its terms, with knowledge of his or her Copyright and + Related Rights in the Work and the meaning and intended legal effect + of CC0 on those rights. + + 1. Copyright and Related Rights. A Work made available under CC0 may + be protected by copyright and related or neighboring rights + ("Copyright and Related Rights"). Copyright and Related Rights + include, but are not limited to, the following: + + the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + moral rights retained by the original author(s) and/or performer(s); + publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + rights protecting the extraction, dissemination, use and reuse of data + in a Work; + database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and + other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations + thereof. + + 2. Waiver. To the greatest extent permitted by, but not in + contravention of, applicable law, Affirmer hereby overtly, fully, + permanently, irrevocably and unconditionally waives, abandons, and + surrenders all of Affirmer's Copyright and Related Rights and + associated claims and causes of action, whether now known or unknown + (including existing as well as future claims and causes of action), in + the Work (i) in all territories worldwide, (ii) for the maximum + duration provided by applicable law or treaty (including future time + extensions), (iii) in any current or future medium and for any number + of copies, and (iv) for any purpose whatsoever, including without + limitation commercial, advertising or promotional purposes (the + "Waiver"). Affirmer makes the Waiver for the benefit of each member of + the public at large and to the detriment of Affirmer's heirs and + successors, fully intending that such Waiver shall not be subject to + revocation, rescission, cancellation, termination, or any other legal + or equitable action to disrupt the quiet enjoyment of the Work by the + public as contemplated by Affirmer's express Statement of Purpose. + + 3. Public License Fallback. Should any part of the Waiver for any + reason be judged legally invalid or ineffective under applicable law, + then the Waiver shall be preserved to the maximum extent permitted + taking into account Affirmer's express Statement of Purpose. In + addition, to the extent the Waiver is so judged Affirmer hereby grants + to each affected person a royalty-free, non transferable, non + sublicensable, non exclusive, irrevocable and unconditional license to + exercise Affirmer's Copyright and Related Rights in the Work (i) in + all territories worldwide, (ii) for the maximum duration provided by + applicable law or treaty (including future time extensions), (iii) in + any current or future medium and for any number of copies, and (iv) + for any purpose whatsoever, including without limitation commercial, + advertising or promotional purposes (the "License"). The License shall + be deemed effective as of the date CC0 was applied by Affirmer to the + Work. Should any part of the License for any reason be judged legally + invalid or ineffective under applicable law, such partial invalidity + or ineffectiveness shall not invalidate the remainder of the License, + and in such case Affirmer hereby affirms that he or she will not (i) + exercise any of his or her remaining Copyright and Related Rights in + the Work or (ii) assert any associated claims and causes of action + with respect to the Work, in either case contrary to Affirmer's + express Statement of Purpose. + + 4. Limitations and Disclaimers. + + No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + + Contributions thanks to: + niXman + Ely Arzhannikov + Alexey Pavlov + Ray Donnelly + Johannes Schindelin + +*/ + +#include "winsup.h" +#include "miscfuncs.h" +#include +#include +#include +#include +#include +#include "cygerrno.h" +#include "security.h" +#include "path.h" +#include "fhandler.h" +#include "dtable.h" +#include "cygheap.h" +#include "shared_info.h" +#include "cygtls.h" +#include "tls_pbuf.h" +#include "environ.h" +#include +#include +#include +#include + +#include "msys2_path_conv.h" + +typedef enum PATH_TYPE_E { + NONE = 0, + SIMPLE_WINDOWS_PATH, + ESCAPE_WINDOWS_PATH, + WINDOWS_PATH_LIST, + UNC, + ESCAPED_PATH, + ROOTED_PATH, + POSIX_PATH_LIST, + RELATIVE_PATH, + URL +} path_type; + +int is_special_posix_path(const char* from, const char* to, char** dst, const char* dstend); +void posix_to_win32_path(const char* from, const char* to, char** dst, const char* dstend); + + +path_type find_path_start_and_type(const char** src, int recurse, const char* end); +void copy_to_dst(const char* from, const char* to, char** dst, const char* dstend); +void convert_path(const char** from, const char* to, path_type type, char** dst, const char* dstend); + +//Transformations +//SIMPLE_WINDOWS_PATH converter. Copy as is. Hold C:\Something\like\this +void swp_convert(const char** from, const char* to, char** dst, const char* dstend); +//ESCAPE_WINDOWS_PATH converter. Turn backslashes to slashes and skip first /. Hold /C:\Somethind\like\this +void ewp_convert(const char** from, const char* to, char** dst, const char* dstend); +//WINDOWS_PATH_LIST converter. Copy as is. Hold /something/like/this; +void wpl_convert(const char** from, const char* to, char** dst, const char* dstend); +//UNC convert converter. Copy as is. Hold //somethig/like/this +void unc_convert(const char** from, const char* to, char** dst, const char* dstend); +//ESCAPED_PATH converter. Turn backslashes to slashes and skip first /. Hold //something\like\this +void ep_convert(const char** from, const char* to, char** dst, const char* dstend); +//ROOTED_PATH converter. Prepend root dir to front. Hold /something/like/this +void rp_convert(const char** from, const char* to, char** dst, const char* dstend); +//URL converter. Copy as is. +void url_convert(const char** from, const char* to, char** dst, const char* dstend); +//POSIX_PATH_LIST. Hold x::x/y:z +void ppl_convert(const char** from, const char* to, char** dst, const char* dstend); + + +void find_end_of_posix_list(const char** to, int* in_string) { + for (; **to != '\0' && (!in_string || **to != *in_string); ++*to) { + } + + if (**to == *in_string) { + *in_string = 0; + } +} + +void find_end_of_rooted_path(const char** from, const char** to, int* in_string) { + for (const char* it = *from; *it != '\0' && it != *to; ++it) + if (*it == '.' && *(it + 1) == '.' && *(it - 1) == '/') { + *to = it - 1; + return; + } + + for (; **to != '\0'; ++*to) { + if (*in_string == 0 && **to == ' ') { + return; + } + + if (**to == *in_string) { + *in_string = 0; + return; + } + + if (**to == '/') { + if (*(*to - 1) == ' ') { + *to -= 1; + return; + } + } + } +} + +void sub_convert(const char** from, const char** to, char** dst, const char* dstend, int* in_string) { + const char* copy_from = *from; + path_type type = find_path_start_and_type(from, false, *to); + debug_printf("found type %d for path %s", type, copy_from); + + if (type == POSIX_PATH_LIST) { + find_end_of_posix_list(to, in_string); + } + + if (type == ROOTED_PATH) { + find_end_of_rooted_path(from, to, in_string); + } + + copy_to_dst(copy_from, *from, dst, dstend); + + if (type != NONE) { + convert_path(from, *to, type, dst, dstend); + } + + if (*dst != dstend) { + **dst = **to; + *dst += 1; + } +} + +const char* convert(char *dst, size_t dstlen, const char *src) { + if (dst == NULL || dstlen == 0 || src == NULL) { + return dst; + } + + int need_convert = false; + for (const char* it = src; *it != '\0'; ++it) { + if (*it == '\\' || *it == '/') { + need_convert = true; + break; + } + if (isspace(*it)) { + need_convert = false; + break; + } + } + + char* dstit = dst; + char* dstend = dst + dstlen; + if (!need_convert) { + copy_to_dst(src, NULL, &dstit, dstend); + *dstit = '\0'; + return dst; + } + *dstend = '\0'; + + const char* srcit = src; + const char* srcbeg = src; + + int in_string = false; + + for (; *srcit != '\0'; ++srcit) { + if (*srcit == '\'' || *srcit == '"') { + if (in_string == *srcit) { + if (*(srcit + 1) != in_string) { + in_string = 0; + } + } else { + in_string = *srcit; + } + continue; + } + } + + sub_convert(&srcbeg, &srcit, &dstit, dstend, &in_string); + if (!*srcit) { + *dstit = '\0'; + return dst; + } + srcbeg = srcit + 1; + for (; *srcit != '\0'; ++srcit) { + continue; + } + copy_to_dst(srcbeg, srcit, &dstit, dstend); + *dstit = '\0'; + + /*if (dstit - dst < 2) { + dstit = dst; + copy_to_dst(src, NULL, &dstit, dstend); + *dstit = '\0'; + }*/ + + return dst; +} + +void copy_to_dst(const char* from, const char* to, char** dst, const char* dstend) { + for (; (*from != '\0') && (from != to) && (*dst != dstend); ++from, ++(*dst)) { + **dst = *from; + } +} + +const char** move(const char** p, int count) { + *p += count; + return p; +} + +path_type find_path_start_and_type(const char** src, int recurse, const char* end) { + const char* it = *src; + + if (*it == '\0' || it == end) return NONE; + + /* Let's not convert ~/.file to ~C:\msys64\.file */ + if (*it == '~') { +skip_p2w: + *src = end; + return NONE; + } + + /* + * Prevent Git's :file.txt and :/message syntax from beeing modified. + */ + if (*it == ':') + goto skip_p2w; + + while (it != end && *it) { + switch (*it) { + case '`': + case '\'': + case '*': + case '?': + case '[': + case ']': + goto skip_p2w; + case '/': + if (it + 1 < end && it[1] == '~') + goto skip_p2w; + break; + case ':': + // Avoid mangling IPv6 addresses + if (it + 1 < end && it[1] == ':') + goto skip_p2w; + + // Leave Git's :./name syntax alone + if (it + 1 < end && it[1] == '.') { + if (it + 2 < end && it[2] == '/') + goto skip_p2w; + if (it + 3 < end && it[2] == '.' && it[3] == '/') + goto skip_p2w; + } + break; + case '@': + // Paths do not contain '@@' + if (it + 1 < end && it[1] == '@') + goto skip_p2w; + } + ++it; + } + it = *src; + + while (!isalnum(*it) && *it != '/' && *it != '\\' && *it != ':' && *it != '-' && *it != '.') { + recurse = true; + it = ++*src; + if (it == end || *it == '\0') return NONE; + } + + path_type result = NONE; + + if (it + 1 == end) { + switch (*it) { + case '/': return ROOTED_PATH ; + default: return SIMPLE_WINDOWS_PATH; + } + } + + if (isalpha(*it) && *(it + 1) == ':') { + if (*(it + 2) == '\\') { + return SIMPLE_WINDOWS_PATH; + } + + if (*(it + 2) == '/' && memchr(it + 2, ':', end - (it + 2)) == NULL) { + return SIMPLE_WINDOWS_PATH; + } + + if (*(it + 2) == '/' && memchr(it + 2, ';', end - (it + 2))) { + return WINDOWS_PATH_LIST; + } + } + + if (*it == '.' && (*(it + 1) == '.' || *(it + 1) == '/') && memchr(it + 2, ':', end - (it + 2)) == NULL) { + return RELATIVE_PATH; + } + + if (*it == '/') { + it += 1; + + if (isalpha(*it) && *(it + 1) == ':') { + return ESCAPE_WINDOWS_PATH; + } + + if (*it == '.' && *(it + 1) == '.') { + return SIMPLE_WINDOWS_PATH; + } + + if (*it == '/') { + it += 1; + switch(*it) { + case ':': return URL; + case '/': return ESCAPED_PATH; + } + if (memchr(it, '/', end - it)) + return UNC; + else + return ESCAPED_PATH; + } + + for (; *it != '\0' && it != end; ++it) { + switch(*it) { + case ':': {char ch = *(it + 1); if (ch == '/' || ch == ':' || ch == '.') return POSIX_PATH_LIST;} return WINDOWS_PATH_LIST; + case ';': return WINDOWS_PATH_LIST; + } + } + + if (result != NONE) { + return result; + } + + return ROOTED_PATH; + } + + int starts_with_minus = 0; + int starts_with_minus_alpha = 0; + int only_dots = *it == '.'; + int has_slashes = 0; + if (*it == '-') { + starts_with_minus = 1; + it += 1; + if (isalpha(*it)) { + it += 1; + starts_with_minus_alpha = 1; + if (memchr(it, ';', end - it)) { + return WINDOWS_PATH_LIST; + } + } + } + + for (const char* it2 = it; *it2 != '\0' && it2 != end; ++it2) { + char ch = *it2; + if (starts_with_minus_alpha) { + if (isalpha(ch) && (*(it2+1) == ':') && (*(it2+2) == '/')) { + return SIMPLE_WINDOWS_PATH; + } + if (ch == '/'&& memchr(it2, ',', end - it2) == NULL) { + *src = it2; + return find_path_start_and_type(src, true, end); + } + starts_with_minus_alpha = 0; + } + if (ch == '\'' || ch == '"') + starts_with_minus = false; + if ((ch == '=') || (ch == ':' && starts_with_minus) || ((ch == '\'' || ch == '"') && result == NONE)) { + *src = it2 + 1; + return find_path_start_and_type(src, true, end); + } + + if (ch == ',' && starts_with_minus) { + *src = it2 + 1; + return find_path_start_and_type(src, true, end); + } + + if (ch == ':' && it2 + 1 != end) { + it2 += 1; + ch = *it2; + if (ch == '/' || ch == ':' || ch == '.') { + if (ch == '/' && *(it2 + 1) == '/') { + return URL; + } else { + if (!only_dots && !has_slashes) + goto skip_p2w; + return POSIX_PATH_LIST; + } + } else if (memchr(it2, '=', end - it2) == NULL) { + return SIMPLE_WINDOWS_PATH; + } + } else if (ch != '.') { + only_dots = 0; + if (ch == '/' || ch == '\\') + has_slashes = 1; + } + } + + if (result != NONE) { + *src = it; + return result; + } + + return SIMPLE_WINDOWS_PATH; +} + +void convert_path(const char** from, const char* to, path_type type, char** dst, const char* dstend) { + switch(type) { + case SIMPLE_WINDOWS_PATH: swp_convert(from, to, dst, dstend); break; + case ESCAPE_WINDOWS_PATH: ewp_convert(from, to, dst, dstend); break; + case WINDOWS_PATH_LIST: wpl_convert(from, to, dst, dstend); break; + case RELATIVE_PATH: swp_convert(from, to, dst, dstend); break; + case UNC: unc_convert(from, to, dst, dstend); break; + case ESCAPED_PATH: ep_convert(from, to, dst, dstend); break; + case ROOTED_PATH: rp_convert(from, to, dst, dstend); break; + case URL: url_convert(from, to, dst, dstend); break; + case POSIX_PATH_LIST: ppl_convert(from, to, dst, dstend); break; + case NONE: // prevent warnings; + default: + return; + } +} + +void swp_convert(const char** from, const char* to, char** dst, const char* dstend) { + copy_to_dst(*from, to, dst, dstend); +} + +void ewp_convert(const char** from, const char* to, char** dst, const char* dstend) { + *from += 1; + unc_convert(from, to, dst, dstend); +} + +void wpl_convert(const char** from, const char* to, char** dst, const char* dstend) { + swp_convert(from, to, dst, dstend); +} + +void unc_convert(const char** from, const char* to, char** dst, const char* dstend) { + const char* it = *from; + for (; (*it != '\0' && it != to) && (*dst != dstend); ++it, ++(*dst)) { + if (*it == '\\') { + **dst = '/'; + } else { + **dst = *it; + } + } +} + +void ep_convert(const char** from, const char* to, char** dst, const char* dstend) { + ewp_convert(from, to, dst, dstend); +} + +void rp_convert(const char** from, const char* to, char** dst, const char* dstend) { + const char* it = *from; + const char* real_to = to; + + if (*real_to == '\0') { + real_to -= 1; + if (*real_to != '\'' && *real_to != '"') { + real_to += 1; + } + } + + if (!is_special_posix_path(*from, real_to, dst, dstend)) { + posix_to_win32_path(it, real_to, dst, dstend); + } + + if (*dst != dstend && real_to != to) { + **dst = *real_to; + *dst += 1; + } +} + +void url_convert(const char** from, const char* to, char** dst, const char* dstend) { + unc_convert(from, to, dst, dstend); +} + +void subp_convert(const char** from, const char* end, int is_url, char** dst, const char* dstend) { + const char* begin = *from; + path_type type = is_url ? URL : find_path_start_and_type(from, 0, end); + copy_to_dst(begin, *from, dst, dstend); + + if (type == NONE) { + return; + } + + char* start = *dst; + convert_path(from, end, type, dst, dstend); + + if (!is_url) { + for (; start != *dst; ++start) { + if (*start == '/') { + *start = '\\'; + } + } + } +} + +void ppl_convert(const char** from, const char* to, char** dst, const char* dstend) { + const char *orig_dst = *dst; + const char* it = *from; + const char* beg = it; + int prev_was_simc = 0; + int is_url = 0; + for (; (*it != '\0' && it != to) && (*dst != dstend); ++it) { + if (*it == ':') { + if (prev_was_simc) { + continue; + } + if (*(it + 1) == '/' && *(it + 2) == '/' && isalpha(*beg)) { + is_url = 1; + /* double-check: protocol must be alnum (or +) */ + for (const char *p = beg; p != it; ++p) + if (!isalnum(*p) && *p != '+') { + is_url = 0; + break; + } + if (is_url) + continue; + } + prev_was_simc = 1; + subp_convert(&beg, it, is_url, dst, dstend); + is_url = 0; + + if (*dst == dstend) { + system_printf("Path cut off during conversion: %s\n", orig_dst); + break; + } + + **dst = ';'; + *dst += 1; + } + + if (*it != ':' && prev_was_simc) { + prev_was_simc = 0; + beg = it; + } + } + + if (!prev_was_simc) { + subp_convert(&beg, it, is_url, dst, dstend); + } +} + +int is_special_posix_path(const char* from, const char* to, char** dst, const char* dstend) { + const char dev_null[] = "/dev/null"; + + if ((to - from) == (sizeof(dev_null) - 1) && strncmp(from, "/dev/null", to - from) == 0) { + copy_to_dst("nul", NULL, dst, dstend); + return true; + } + return false; +} + +void posix_to_win32_path(const char* from, const char* to, char** dst, const char* dstend) { + if ( from != to ) { + tmp_pathbuf tp; + char *one_path = tp.c_get(); + strncpy(one_path, from, to-from); + one_path[to-from] = '\0'; + + path_conv conv (one_path, 0); + if (conv.error) + { + set_errno(conv.error); + copy_to_dst(one_path, NULL, dst, dstend); + } else { + char* win32_path = tp.c_get(); + stpcpy (win32_path, conv.get_win32 ()); + for (; (*win32_path != '\0') && (*dst != dstend); ++win32_path, ++(*dst)) { + **dst = (*win32_path == '\\') ? '/' : *win32_path; + } + } + } +} + diff --git a/winsup/cygwin/msys2_path_conv.h b/winsup/cygwin/msys2_path_conv.h new file mode 100644 index 0000000000..67d85ecb64 --- /dev/null +++ b/winsup/cygwin/msys2_path_conv.h @@ -0,0 +1,147 @@ +/* + The MSYS2 Path conversion source code is licensed under: + + CC0 1.0 Universal + + Official translations of this legal tool are available + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + + Statement of Purpose + + The laws of most jurisdictions throughout the world automatically + confer exclusive Copyright and Related Rights (defined below) upon the + creator and subsequent owner(s) (each and all, an "owner") of an + original work of authorship and/or a database (each, a "Work"). + + Certain owners wish to permanently relinquish those rights to a Work + for the purpose of contributing to a commons of creative, cultural and + scientific works ("Commons") that the public can reliably and without + fear of later claims of infringement build upon, modify, incorporate + in other works, reuse and redistribute as freely as possible in any + form whatsoever and for any purposes, including without limitation + commercial purposes. These owners may contribute to the Commons to + promote the ideal of a free culture and the further production of + creative, cultural and scientific works, or to gain reputation or + greater distribution for their Work in part through the use and + efforts of others. + + For these and/or other purposes and motivations, and without any + expectation of additional consideration or compensation, the person + associating CC0 with a Work (the "Affirmer"), to the extent that he or + she is an owner of Copyright and Related Rights in the Work, + voluntarily elects to apply CC0 to the Work and publicly distribute + the Work under its terms, with knowledge of his or her Copyright and + Related Rights in the Work and the meaning and intended legal effect + of CC0 on those rights. + + 1. Copyright and Related Rights. A Work made available under CC0 may + be protected by copyright and related or neighboring rights + ("Copyright and Related Rights"). Copyright and Related Rights + include, but are not limited to, the following: + + the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + moral rights retained by the original author(s) and/or performer(s); + publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + rights protecting the extraction, dissemination, use and reuse of data + in a Work; + database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and + other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations + thereof. + + 2. Waiver. To the greatest extent permitted by, but not in + contravention of, applicable law, Affirmer hereby overtly, fully, + permanently, irrevocably and unconditionally waives, abandons, and + surrenders all of Affirmer's Copyright and Related Rights and + associated claims and causes of action, whether now known or unknown + (including existing as well as future claims and causes of action), in + the Work (i) in all territories worldwide, (ii) for the maximum + duration provided by applicable law or treaty (including future time + extensions), (iii) in any current or future medium and for any number + of copies, and (iv) for any purpose whatsoever, including without + limitation commercial, advertising or promotional purposes (the + "Waiver"). Affirmer makes the Waiver for the benefit of each member of + the public at large and to the detriment of Affirmer's heirs and + successors, fully intending that such Waiver shall not be subject to + revocation, rescission, cancellation, termination, or any other legal + or equitable action to disrupt the quiet enjoyment of the Work by the + public as contemplated by Affirmer's express Statement of Purpose. + + 3. Public License Fallback. Should any part of the Waiver for any + reason be judged legally invalid or ineffective under applicable law, + then the Waiver shall be preserved to the maximum extent permitted + taking into account Affirmer's express Statement of Purpose. In + addition, to the extent the Waiver is so judged Affirmer hereby grants + to each affected person a royalty-free, non transferable, non + sublicensable, non exclusive, irrevocable and unconditional license to + exercise Affirmer's Copyright and Related Rights in the Work (i) in + all territories worldwide, (ii) for the maximum duration provided by + applicable law or treaty (including future time extensions), (iii) in + any current or future medium and for any number of copies, and (iv) + for any purpose whatsoever, including without limitation commercial, + advertising or promotional purposes (the "License"). The License shall + be deemed effective as of the date CC0 was applied by Affirmer to the + Work. Should any part of the License for any reason be judged legally + invalid or ineffective under applicable law, such partial invalidity + or ineffectiveness shall not invalidate the remainder of the License, + and in such case Affirmer hereby affirms that he or she will not (i) + exercise any of his or her remaining Copyright and Related Rights in + the Work or (ii) assert any associated claims and causes of action + with respect to the Work, in either case contrary to Affirmer's + express Statement of Purpose. + + 4. Limitations and Disclaimers. + + No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + + Contributions thanks to: + niXman + Ely Arzhannikov + Alexey Pavlov + Ray Donnelly + Johannes Schindelin + +*/ + +#ifndef PATH_CONV_H_DB4IQBH3 +#define PATH_CONV_H_DB4IQBH3 + +#include + +const char* convert(char *dst, size_t dstlen, const char *src); + +#endif /* end of include guard: PATH_CONV_H_DB4IQBH3 */ + diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 1802e76f71..84851a12f3 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -66,6 +66,7 @@ #include "shared_info.h" #include "tls_pbuf.h" #include "environ.h" +#include "msys2_path_conv.h" #undef basename suffix_info stat_suffixes[] = @@ -3870,6 +3871,74 @@ fchdir (int fd) return res; } +// +// Important: If returned pointer == arg, then this function +// did not malloc that pointer; otherwise free it. +// +extern "C" char * +arg_heuristic_with_exclusions (char const * const arg, char const * exclusions, size_t exclusions_count) +{ + char *arg_result; + + // Must return something .. + size_t arglen = (arg ? strlen (arg): 0); + + if (arglen == 0 || !arg) + { + arg_result = (char *)malloc (sizeof (char)); + arg_result[0] = '\0'; + return arg_result; + } + + debug_printf("Input value: (%s)", arg); + for (size_t excl = 0; excl < exclusions_count; ++excl) + { + /* Since we've got regex linked we should maybe switch to that, but + running regexes for every argument could be too slow. */ + if ( strcmp (exclusions, "*") == 0 || (strlen (exclusions) && strstr (arg, exclusions) == arg) ) + return (char*)arg; + exclusions += strlen (exclusions) + 1; + } + + // Leave enough room for at least 16 path elements; we might be converting + // a path list. + size_t stack_len = arglen + 16 * MAX_PATH; + char * stack_path = (char *)malloc (stack_len); + if (!stack_path) + { + debug_printf ("out of stack space?"); + return (char *)arg; + } + memset (stack_path, 0, MAX_PATH); + convert (stack_path, stack_len - 1, arg); + debug_printf ("convert()'ed: %s (length %d)\n.....->: %s", arg, arglen, stack_path); + // Don't allocate memory if no conversion happened. + if (!strcmp (arg, stack_path)) + { + if (arg != stack_path) + { + free (stack_path); + } + return ((char *)arg); + } + arg_result = (char *)realloc (stack_path, strlen (stack_path)+1); + // Windows doesn't like empty entries in PATH env. variables (;;) + char* semisemi = strstr(arg_result, ";;"); + while (semisemi) + { + memmove(semisemi, semisemi+1, strlen(semisemi)); + semisemi = strstr(semisemi, ";;"); + } + return arg_result; +} + +extern "C" char * +arg_heuristic (char const * const arg) +{ + return arg_heuristic_with_exclusions (arg, NULL, 0); +} + + /******************** Exported Path Routines *********************/ /* Cover functions to the path conversion routines. diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index d01f678c3b..845121fec8 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -292,6 +292,27 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, bool rc; int res = -1; + /* Environment variable MSYS2_ARG_CONV_EXCL contains a list + of ';' separated argument prefixes to pass un-modified.. + It isn't applied to env. variables; only spawn arguments. + A value of * means don't convert any arguments. */ + char* msys2_arg_conv_excl_env = getenv("MSYS2_ARG_CONV_EXCL"); + char* msys2_arg_conv_excl = NULL; + size_t msys2_arg_conv_excl_count = 0; + if (msys2_arg_conv_excl_env) + { + msys2_arg_conv_excl = (char*)alloca (strlen(msys2_arg_conv_excl_env)+1); + strcpy (msys2_arg_conv_excl, msys2_arg_conv_excl_env); + msys2_arg_conv_excl_count = 1; + msys2_arg_conv_excl_env = strchr ( msys2_arg_conv_excl, ';' ); + while (msys2_arg_conv_excl_env) + { + *msys2_arg_conv_excl_env = '\0'; + ++msys2_arg_conv_excl_count; + msys2_arg_conv_excl_env = strchr ( msys2_arg_conv_excl_env + 1, ';' ); + } + } + /* Check if we have been called from exec{lv}p or spawn{lv}p and mask mode to keep only the spawn mode. */ bool p_type_exec = !!(mode & _P_PATH_TYPE_EXEC); @@ -383,6 +404,20 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, moreinfo->argc = newargv.argc; moreinfo->argv = newargv; } + else + { + for (int i = 0; i < newargv.argc; i++) + { + //convert argv to win32 + int newargvlen = strlen (newargv[i]); + char *tmpbuf = (char *)malloc (newargvlen + 1); + memcpy (tmpbuf, newargv[i], newargvlen + 1); + tmpbuf = arg_heuristic_with_exclusions(tmpbuf, msys2_arg_conv_excl, msys2_arg_conv_excl_count); + debug_printf("newargv[%d] = %s", i, newargv[i]); + newargv.replace (i, tmpbuf); + free (tmpbuf); + } + } if ((wincmdln || !real_path.iscygexec ()) && !cmd.fromargv (newargv, real_path.get_win32 (), real_path.iscygexec ())) @@ -513,7 +548,8 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, moreinfo->envp = build_env (envp, envblock, moreinfo->envc, real_path.iscygexec (), switch_user ? ::cygheap->user.primary_token () - : NULL); + : NULL, + real_path.iscygexec ()); if (!moreinfo->envp || !envblock) { set_errno (E2BIG); From f16038529ae929ad0371de5b7a8ba651b1888e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:29:01 +0300 Subject: [PATCH 712/767] Add functionality for changing OS name via MSYSTEM environment variables. --- winsup/cygserver/cygserver-config | 4 ++-- winsup/cygwin/environ.cc | 34 ++++++++++++++++++++++++++--- winsup/cygwin/include/sys/utsname.h | 2 +- winsup/cygwin/uname.cc | 17 +++++++++++++-- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/winsup/cygserver/cygserver-config b/winsup/cygserver/cygserver-config index 373bfd24dd..c902857ea7 100755 --- a/winsup/cygserver/cygserver-config +++ b/winsup/cygserver/cygserver-config @@ -86,7 +86,7 @@ done # Check if running on NT _sys="`uname`" -_nt=`expr "${_sys}" : "CYGWIN_NT"` +_nt=`expr "${_sys}" : "MSYS_NT"` # Check for running cygserver processes first. if ps -ef | grep -v grep | grep -q ${service_name} @@ -178,7 +178,7 @@ then echo "Do you want to install cygserver as service?" if request "(Say \"no\" if it's already installed as service)" then - if ! cygrunsrv -I ${service_name} -d "CYGWIN cygserver" -p /usr/sbin/cygserver + if ! cygrunsrv -I ${service_name} -d "MSYS cygserver" -p /usr/sbin/cygserver then echo echo "Installation of cygserver as service failed. Please check the" diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 639e69393b..b9f7e05452 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -192,7 +192,11 @@ parse_options (const char *inbuf) if (export_settings) { debug_printf ("%s", newbuf + 1); +#ifdef __MSYS__ + setenv ("MSYS", newbuf + 1, 1); +#else setenv ("CYGWIN", newbuf + 1, 1); +#endif } return; } @@ -651,7 +655,7 @@ _addenv (const char *name, const char *value, int overwrite) win_env *spenv; if ((spenv = getwinenv (envhere))) spenv->add_cache (value); - if (strcmp (name, "CYGWIN") == 0) + if (strcmp (name, "MSYS") == 0) parse_options (value); return 0; @@ -754,6 +758,9 @@ static struct renv { } renv_arr[] = { { NL("COMMONPROGRAMFILES=") }, // 0 { NL("COMSPEC=") }, +#ifdef __MSYS__ + { NL("MSYSTEM=") }, // 2 +#endif /* __MSYS__ */ { NL("PATH=") }, // 2 { NL("PROGRAMFILES=") }, { NL("SYSTEMDRIVE=") }, // 4 @@ -765,10 +772,21 @@ static struct renv { #define RENV_SIZE (sizeof (renv_arr) / sizeof (renv_arr[0])) /* Set of first characters of the above list of variables. */ -static const char idx_arr[] = "CPSTW"; +static const char idx_arr[] = +#ifdef __MSYS__ + "CMPSTW"; +#else + "CPSTW"; +#endif /* Index into renv_arr at which the variables with this specific character starts. */ -static const int start_at[] = { 0, 2, 4, 6, 8 }; +static const int start_at[] = { +#ifdef __MSYS__ + 0, 2, 3, 5, 7, 9 +#else + 0, 2, 4, 6, 8 +#endif + }; /* Turn environment variable part of a=b string into uppercase - for some environment variables only. */ @@ -836,7 +854,11 @@ environ_init (char **envp, int envc) dumper_init (); if (envp_passed_in) { +#ifdef __MSYS__ + p = getenv ("MSYS"); +#else p = getenv ("CYGWIN"); +#endif if (p) parse_options (p); } @@ -883,8 +905,13 @@ win32env_to_cygenv (PWCHAR rawenv, bool posify) ucenv (newp, eq); /* uppercase env vars which need it */ if (*newp == 'T' && strncmp (newp, "TERM=", 5) == 0) sawTERM = 1; +#ifdef __MSYS__ + else if (*newp == 'M' && strncmp (newp, "MSYS=", 5) == 0) + parse_options (newp + 5); +#else else if (*newp == 'C' && strncmp (newp, "CYGWIN=", 7) == 0) parse_options (newp + 7); +#endif if (*eq && posify) posify_maybe (envp + i, *++eq ? eq : --eq, tmpbuf); debug_printf ("%p: %s", envp[i], envp[i]); @@ -959,6 +986,7 @@ static NO_COPY spenv spenvs[] = {NL ("HOMEPATH="), false, false, &cygheap_user::env_homepath}, {NL ("LOGONSERVER="), false, false, &cygheap_user::env_logsrv}, {NL ("PATH="), false, true, NULL}, + {NL ("MSYSTEM="), true, true, NULL}, {NL ("SYSTEMDRIVE="), false, true, NULL}, {NL ("SYSTEMROOT="), true, true, &cygheap_user::env_systemroot}, {NL ("USERDOMAIN="), false, false, &cygheap_user::env_domain}, diff --git a/winsup/cygwin/include/sys/utsname.h b/winsup/cygwin/include/sys/utsname.h index d6b3be96f7..730cb731a5 100644 --- a/winsup/cygwin/include/sys/utsname.h +++ b/winsup/cygwin/include/sys/utsname.h @@ -17,7 +17,7 @@ extern "C" { struct utsname { - char sysname[_UTSNAME_LENGTH]; + char sysname[_UTSNAME_LENGTH + 1]; char nodename[_UTSNAME_LENGTH]; char release[_UTSNAME_LENGTH]; char version[_UTSNAME_LENGTH]; diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc index dd4160189c..0d0c5aa52a 100644 --- a/winsup/cygwin/uname.cc +++ b/winsup/cygwin/uname.cc @@ -36,7 +36,12 @@ uname_x (struct utsname *name) memset (name, 0, sizeof (*name)); /* sysname */ - __small_sprintf (name->sysname, "CYGWIN_%s-%u", + char* msystem = getenv("MSYSTEM"); + const char* msystem_sysname = "MSYS"; + if (msystem != NULL && *msystem && strcmp(msystem, "MSYS") != 0) + msystem_sysname = (strstr(msystem, "32") != NULL) ? "MINGW32" : "MINGW64";; + __small_sprintf (name->sysname, "%s_%s-%u", + msystem_sysname, wincap.osname (), wincap.build_number ()); /* nodename */ memset (buf, 0, sizeof buf); @@ -88,7 +93,7 @@ uname_x (struct utsname *name) /* Old entrypoint for applications up to API 334 */ struct old_utsname { - char sysname[20]; + char sysname[21]; char nodename[20]; char release[20]; char version[20]; @@ -102,7 +107,15 @@ uname (struct utsname *in_name) __try { memset (name, 0, sizeof (*name)); +#ifdef __MSYS__ + char* msystem = getenv("MSYSTEM"); + const char* msystem_sysname = "MSYS"; + if (msystem != NULL && *msystem && strcmp(msystem, "MSYS") != 0) + msystem_sysname = (strstr(msystem, "32") != NULL) ? "MINGW32" : "MINGW64"; + __small_sprintf (name->sysname, "%s_%s", msystem_sysname, wincap.osname ()); +#else __small_sprintf (name->sysname, "CYGWIN_%s", wincap.osname ()); +#endif /* Computer name */ cygwin_gethostname (name->nodename, sizeof (name->nodename) - 1); From 6393488c9d7048ba7081374b806397c74ee2def6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:45:06 +0300 Subject: [PATCH 713/767] - Move root to /usr. - Change sorting mount points. - By default mount without ACLs. - Can read /etc/fstab with short mount point format. --- winsup/cygwin/local_includes/mount.h | 3 +- winsup/cygwin/mm/cygheap.cc | 12 +- winsup/cygwin/mount.cc | 185 +++++++++++++++++++++++---- winsup/cygwin/uinfo.cc | 2 +- 4 files changed, 174 insertions(+), 28 deletions(-) diff --git a/winsup/cygwin/local_includes/mount.h b/winsup/cygwin/local_includes/mount.h index b2acdf08b4..1fc5c39b76 100644 --- a/winsup/cygwin/local_includes/mount.h +++ b/winsup/cygwin/local_includes/mount.h @@ -172,7 +172,6 @@ class mount_info mount_item mount[MAX_MOUNTS]; static bool got_usr_bin; - static bool got_usr_lib; static int root_idx; /* cygdrive_prefix is used as the root of the path automatically @@ -184,6 +183,8 @@ class mount_info private: int posix_sorted[MAX_MOUNTS]; int native_sorted[MAX_MOUNTS]; + int longest_posix_sorted[MAX_MOUNTS]; + int shortest_native_sorted[MAX_MOUNTS]; public: void init (bool); diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index 3dc0c011fa..bf4d82f07c 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -220,14 +220,22 @@ init_cygheap::init_installation_root () /* Strip off last path component ("\\cygwin1.dll") */ PWCHAR w = wcsrchr (installation_root_buf, L'\\'); +#ifdef __MSYS__ + /* Back two folders to get root as we have all stuff in usr subfolder */ + for (int i=1; i >=0; --i) + { +#endif if (w) { *w = L'\0'; w = wcsrchr (installation_root_buf, L'\\'); } if (!w) - api_fatal ("Can't initialize Cygwin installation root dir.\n" + api_fatal ("Can't initialize MSYS2 installation root dir.\n" "Invalid DLL path"); +#ifdef __MSYS__ + } +#endif /* Copy result into installation_dir before stripping off "bin" dir and revert to Win32 path. This path is added to the Windows environment @@ -252,6 +260,7 @@ init_cygheap::init_installation_root () RtlInitUnicodeString (&installation_root, installation_root_buf); RtlInitUnicodeString (&installation_dir, installation_dir_buf); +#ifndef __MSYS__ for (int i = 1; i >= 0; --i) { reg_key r (i, KEY_WRITE, _WIDE (CYGWIN_INFO_INSTALLATIONS_NAME), @@ -260,6 +269,7 @@ init_cygheap::init_installation_root () installation_root_buf))) break; } +#endif } /* Initialize bucket_val. The value is the max size of a block diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index bf26c4af3e..eff9803241 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -42,7 +42,6 @@ details. */ (path_prefix_p (proc, (path), proc_len, false)) bool NO_COPY mount_info::got_usr_bin; -bool NO_COPY mount_info::got_usr_lib; int NO_COPY mount_info::root_idx = -1; /* is_native_path: Return non-zero if PATH starts with \??\[a-zA-Z] or @@ -395,7 +394,6 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) #define MINIMAL_WIN_NTFS_FLAGS (FILE_CASE_SENSITIVE_SEARCH \ | FILE_CASE_PRESERVED_NAMES \ | FILE_UNICODE_ON_DISK \ - | FILE_PERSISTENT_ACLS \ | FILE_FILE_COMPRESSION \ | FILE_VOLUME_QUOTAS \ | FILE_SUPPORTS_SPARSE_FILES \ @@ -552,13 +550,13 @@ mount_info::create_root_entry (const PWCHAR root) sys_wcstombs (native_root, PATH_MAX, root); assert (*native_root != '\0'); if (add_item (native_root, "/", - MOUNT_SYSTEM | MOUNT_IMMUTABLE | MOUNT_AUTOMATIC) + MOUNT_SYSTEM | MOUNT_IMMUTABLE | MOUNT_AUTOMATIC | MOUNT_NOACL) < 0) api_fatal ("add_item (\"%s\", \"/\", ...) failed, errno %d", native_root, errno); /* Create a default cygdrive entry. Note that this is a user entry. This allows to override it with mount, unless the sysadmin created a cygdrive entry in /etc/fstab. */ - cygdrive_flags = MOUNT_NOPOSIX | MOUNT_CYGDRIVE; + cygdrive_flags = MOUNT_NOPOSIX | MOUNT_CYGDRIVE | MOUNT_NOACL; strcpy (cygdrive, CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/"); cygdrive_len = strlen (cygdrive); } @@ -578,22 +576,14 @@ mount_info::init (bool user_init) pathend = wcpcpy (pathend, L"\\etc\\fstab"); from_fstab (user_init, path, pathend); - if (!user_init && (!got_usr_bin || !got_usr_lib)) + if (!user_init && !got_usr_bin) { char native[PATH_MAX]; if (root_idx < 0) - api_fatal ("root_idx %d, user_shared magic %y, nmounts %d", root_idx, user_shared->version, nmounts); + api_fatal ("root_idx %d, user_shared magic %y, nmounts %d", root_idx, user_shared->version, nmounts); char *p = stpcpy (native, mount[root_idx].native_path); - if (!got_usr_bin) - { - stpcpy (p, "\\bin"); - add_item (native, "/usr/bin", MOUNT_SYSTEM | MOUNT_AUTOMATIC); - } - if (!got_usr_lib) - { - stpcpy (p, "\\lib"); - add_item (native, "/usr/lib", MOUNT_SYSTEM | MOUNT_AUTOMATIC); - } + stpcpy (p, "\\usr\\bin"); + add_item (native, "/bin", MOUNT_SYSTEM | MOUNT_AUTOMATIC | MOUNT_NOACL); } } @@ -674,6 +664,7 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, device& dev, /* See if this is a cygwin "device" */ if (win32_device_name (src_path, dst, dev)) { + debug_printf ("win32_device_name (%s)", src_path); *flags = 0; rc = 0; goto out_no_chroot_check; @@ -711,6 +702,7 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, device& dev, } if (isproc (src_path)) { + debug_printf ("isproc (%s)", src_path); dev = *proc_dev; dev = fhandler_proc::get_proc_fhandler (src_path); if (dev == FH_NADA) @@ -732,6 +724,7 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, device& dev, off the prefix and transform it into an MS-DOS path. */ else if (iscygdrive (src_path)) { + debug_printf ("iscygdrive (%s) mount_table->cygdrive %s", src_path, mount_table->cygdrive); int n = mount_table->cygdrive_len - 1; int unit; @@ -743,11 +736,15 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, device& dev, } else if (cygdrive_win32_path (src_path, dst, unit)) { + debug_printf ("cygdrive_win32_path (%s)", src_path); *flags = cygdrive_flags; goto out; } else if (mount_table->cygdrive_len > 1) - return ENOENT; + { + debug_printf ("mount_table->cygdrive_len > 1 (%s)", src_path); + return ENOENT; + } } int chroot_pathlen; @@ -758,7 +755,9 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, device& dev, const char *path; int len; - mi = mount + posix_sorted[i]; + mi = mount + shortest_native_sorted[i]; + debug_printf (" mount[%d] .. checking %s -> %s ", i, mi->posix_path, mi->native_path); + if (!cygheap->root.exists () || (mi->posix_pathlen == 1 && mi->posix_path[0] == '/')) { @@ -998,7 +997,8 @@ mount_info::conv_to_posix_path (const char *src_path, char *posix_path, int pathbuflen = tail - pathbuf; for (int i = 0; i < nmounts; ++i) { - mount_item &mi = mount[native_sorted[i]]; + mount_item &mi = mount[longest_posix_sorted[i]]; + debug_printf (" mount[%d] .. checking %s -> %s ", i, mi.posix_path, mi.native_path); if (!path_prefix_p (mi.native_path, pathbuf, mi.native_pathlen, mi.flags & MOUNT_NOPOSIX)) continue; @@ -1211,8 +1211,17 @@ mount_info::from_fstab_line (char *line, bool user) if (!*c) return true; cend = find_ws (c); - *cend = '\0'; posix_path = conv_fstab_spaces (c); + if (!*cend) + { + unsigned mount_flags = MOUNT_SYSTEM | MOUNT_NOPOSIX | MOUNT_NOACL; + + int res = mount_table->add_item (native_path, posix_path, mount_flags); + if (res && get_errno () == EMFILE) + return false; + return true; + } + *cend = '\0'; /* Third field: FS type. */ c = skip_ws (cend + 1); if (!*c) @@ -1441,16 +1450,145 @@ sort_by_native_name (const void *a, const void *b) return res; } +/* sort_by_longest_posix_name: qsort callback to sort the mount entries. + Sort user mounts ahead of system mounts to the same POSIX path. */ +/* FIXME: should the user should be able to choose whether to + prefer user or system mounts??? */ +static int +sort_by_longest_posix_name (const void *a, const void *b) +{ + mount_item *ap = mounts_for_sort + (*((int*) a)); + mount_item *bp = mounts_for_sort + (*((int*) b)); + + /* Base weighting on the conversion that would give the longest + posix path. */ + ssize_t alen = (ssize_t) strlen (ap->posix_path) - (ssize_t) strlen (ap->native_path); + ssize_t blen = (ssize_t) strlen (bp->posix_path) - (ssize_t) strlen (bp->native_path); + + int res = blen - alen; + + if (res) + return res; /* Path lengths differed */ + + /* The two paths were the same length, so just determine normal + lexical sorted order. */ + res = strcmp (ap->posix_path, bp->posix_path); + + if (res == 0) + { + /* need to select between user and system mount to same POSIX path */ + if (!(bp->flags & MOUNT_SYSTEM)) /* user mount */ + return 1; + else + return -1; + } + + return res; +} + +/* sort_by_shortest_native_name: qsort callback to sort the mount entries. + Sort user mounts ahead of system mounts to the same POSIX path. */ +/* FIXME: should the user should be able to choose whether to + prefer user or system mounts??? */ +static int +sort_by_shortest_native_name (const void *a, const void *b) +{ + mount_item *ap = mounts_for_sort + (*((int*) a)); + mount_item *bp = mounts_for_sort + (*((int*) b)); + + /* Base weighting on the conversion that would give the shortest + native path. */ + ssize_t alen = (ssize_t) strlen (ap->native_path); + ssize_t blen = (ssize_t) strlen (bp->native_path); + + int res = alen - blen; + + if (res) + return res; /* Path lengths differed */ + + /* The two paths were the same length, so just determine normal + lexical sorted order. */ + res = strcmp (ap->native_path, bp->native_path); + + if (res == 0) + { + /* need to select between user and system mount to same POSIX path */ + if (!(bp->flags & MOUNT_SYSTEM)) /* user mount */ + return 1; + else + return -1; + } + + return res; +} + +static int +sort_posix_subdirs_before_parents (const void *a, const void *b) +{ + mount_item *ap = mounts_for_sort + (*((int*) a)); + mount_item *bp = mounts_for_sort + (*((int*) b)); + + if (ap->posix_pathlen > bp->posix_pathlen) + { + if (!memcmp (bp->posix_path, ap->posix_path, bp->posix_pathlen)) + { + // bp is a subdir of ap (bp must be moved in-front) + return -1; + } + } + else if (ap->posix_pathlen < bp->posix_pathlen) + { + if (!memcmp (ap->posix_path, bp->posix_path, ap->posix_pathlen)) + { + // ap is a subdir of bp (good as we are) + return 1; + } + } + return 0; +} + +#define DISABLE_NEW_STUFF 0 +#define ONLY_USE_NEW_STUFF 1 + void mount_info::sort () { for (int i = 0; i < nmounts; i++) - native_sorted[i] = posix_sorted[i] = i; + native_sorted[i] = posix_sorted[i] = shortest_native_sorted[i] = longest_posix_sorted[i] = i; /* Sort them into reverse length order, otherwise we won't be able to look for /foo in /. */ mounts_for_sort = mount; /* ouch. */ qsort (posix_sorted, nmounts, sizeof (posix_sorted[0]), sort_by_posix_name); qsort (native_sorted, nmounts, sizeof (native_sorted[0]), sort_by_native_name); + qsort (longest_posix_sorted, nmounts, sizeof (longest_posix_sorted[0]), sort_by_longest_posix_name); + qsort (shortest_native_sorted, nmounts, sizeof (shortest_native_sorted[0]), sort_by_shortest_native_name); + qsort (shortest_native_sorted, nmounts, sizeof (shortest_native_sorted[0]), sort_posix_subdirs_before_parents); + /* Disabling my new crap. */ + #if DISABLE_NEW_STUFF + for (int i = 0; i < nmounts; i++) + { + longest_posix_sorted[i] = native_sorted[i]; + shortest_native_sorted[i] = posix_sorted[i]; + } + #else + #if ONLY_USE_NEW_STUFF + for (int i = 0; i < nmounts; i++) + { + native_sorted[i] = longest_posix_sorted[i]; + posix_sorted[i] = shortest_native_sorted[i]; + } + #endif + #endif + for (int i = 0; i < nmounts; i++) + { + mount_item *mi = mount + shortest_native_sorted[i]; + debug_printf ("shortest_native_sorted (subdirs before parents)[%d] %12s %12s", i, mi->native_path, mi->posix_path); + } + for (int i = 0; i < nmounts; i++) + { + mount_item *mi = mount + longest_posix_sorted[i]; + debug_printf ("longest_posix_sorted[%d] %12s %12s", i, mi->native_path, mi->posix_path); + } } /* Add an entry to the mount table. @@ -1541,12 +1679,9 @@ mount_info::add_item (const char *native, const char *posix, if (i == nmounts) nmounts++; - if (strcmp (posixtmp, "/usr/bin") == 0) + if (strcmp (posixtmp, "/bin") == 0) got_usr_bin = true; - if (strcmp (posixtmp, "/usr/lib") == 0) - got_usr_lib = true; - if (posixtmp[0] == '/' && posixtmp[1] == '\0' && !(mountflags & MOUNT_CYGDRIVE)) root_idx = i; diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index acbc945e41..81d9529824 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -2827,7 +2827,7 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) dom, name, sid.string ((char *) sidstr), home ?: "/home/", home ? L"" : name, - shell ?: "/bin/bash"); + shell ?: "/usr/bin/bash"); if (gecos) free (gecos); if (home) From 06ea20e4eceef17d67a404d670b439e87f282450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:47:21 +0300 Subject: [PATCH 714/767] Instead of creating Cygwin symlinks, use deep copy by default The new `winsymlinks` mode `deepcopy` (which is made the default) lets calls to `symlink()` create (deep) copies of the source file/directory. This is necessary because unlike Cygwin, MSYS2 does not try to be its own little ecosystem that lives its life separate from regular Win32 programs: the latter have _no idea_ about Cygwin-emulated symbolic links (i.e. system files whose contents start with `!\xff\xfe` and the remainder consists of the NUL-terminated, UTF-16LE-encoded symlink target). To support Cygwin-style symlinks, the new mode `sysfile` is introduced. Co-authored-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 4 + winsup/cygwin/globals.cc | 3 +- winsup/cygwin/path.cc | 154 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index b9f7e05452..5fb3f53ef5 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -88,6 +88,10 @@ set_winsymlinks (const char *buf) else if (ascii_strncasematch (buf, "native", 6)) allow_winsymlinks = ascii_strcasematch (buf + 6, "strict") ? WSYM_nativestrict : WSYM_native; + else if (ascii_strncasematch (buf, "deepcopy", 8)) + allow_winsymlinks = WSYM_deepcopy; + else + allow_winsymlinks = WSYM_sysfile; } /* The structure below is used to set up an array which is used to diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index d14ea593f6..0c21fa624e 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -57,6 +57,7 @@ enum winsym_t WSYM_nativestrict, WSYM_nfs, WSYM_sysfile, + WSYM_deepcopy }; exit_states NO_COPY exit_state; @@ -70,7 +71,7 @@ bool ignore_case_with_glob; bool pipe_byte = true; /* Default to byte mode so that C# programs work. */ bool reset_com; bool wincmdln; -winsym_t allow_winsymlinks = WSYM_default; +winsym_t allow_winsymlinks = WSYM_deepcopy; bool disable_pcon; bool winjitdebug = false; diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 84851a12f3..8615386aff 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1682,6 +1682,89 @@ conv_path_list (const char *src, char *dst, size_t size, /********************** Symbolic Link Support **************************/ +/* + Create a deep copy of src as dst, while avoiding descending in origpath. +*/ +static int +recursiveCopy (char * src, char * dst, const char * origpath) +{ + WIN32_FIND_DATA dHfile; + HANDLE dH = INVALID_HANDLE_VALUE; + BOOL findfiles; + int srcpos = strlen (src); + int dstpos = strlen (dst); + int res = -1; + + debug_printf("recursiveCopy (%s, %s)", src, dst); + + /* Create the destination directory */ + if (!CreateDirectoryEx (src, dst, NULL)) + { + debug_printf("CreateDirectoryEx(%s, %s, 0) failed", src, dst); + __seterrno (); + goto done; + } + /* Descend into the source directory */ + if (srcpos + 2 >= MAX_PATH || dstpos + 1 >= MAX_PATH) + { + set_errno (ENAMETOOLONG); + goto done; + } + strcat (src, "\\*"); + strcat (dst, "\\"); + dH = FindFirstFile (src, &dHfile); + debug_printf("dHfile(1): %s", dHfile.cFileName); + findfiles = FindNextFile (dH, &dHfile); + debug_printf("dHfile(2): %s", dHfile.cFileName); + findfiles = FindNextFile (dH, &dHfile); + while (findfiles) + { + /* Append the directory item filename to both source and destination */ + int filelen = strlen (dHfile.cFileName); + debug_printf("dHfile(3): %s", dHfile.cFileName); + if (srcpos + 1 + filelen >= MAX_PATH || + dstpos + 1 + filelen >= MAX_PATH) + { + set_errno (ENAMETOOLONG); + goto done; + } + strcpy (&src[srcpos+1], dHfile.cFileName); + strcpy (&dst[dstpos+1], dHfile.cFileName); + debug_printf("%s -> %s", src, dst); + if (dHfile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + /* Recurse into the child directory */ + debug_printf("%s <-> %s", src, origpath); + if (strcmp (src, origpath)) // avoids endless recursion + if (recursiveCopy (src, dst, origpath)) + goto done; + } + else + { + /* Just copy the file */ + if (!CopyFile (src, dst, FALSE)) + { + __seterrno (); + goto done; + } + } + findfiles = FindNextFile (dH, &dHfile); + } + if (GetLastError() != ERROR_NO_MORE_FILES) + { + __seterrno (); + goto done; + } + res = 0; + +done: + + if (dH != INVALID_HANDLE_VALUE) + FindClose (dH); + + return res; +} + /* Create a symlink from FROMPATH to TOPATH. */ extern "C" int @@ -2219,6 +2302,77 @@ symlink_worker (const char *oldpath, path_conv &win32_newpath, bool isdevice) } else /* wsym_type == WSYM_sysfile */ { + if (wsym_type == WSYM_deepcopy) + { + path_conv src_path; + src_path.check (oldpath, PC_SYM_NOFOLLOW, stat_suffixes); + if (src_path.error) + { + set_errno (src_path.error); + __leave; + } + if (!src_path.isdevice () && !src_path.is_fs_special ()) + { + /* MSYS copy file instead make symlink */ + + char * real_oldpath; + if (isabspath (oldpath)) + strcpy (real_oldpath = tp.c_get (), oldpath); + else + /* Find the real source path, relative + to the directory of the destination */ + { + /* Determine the character position of the last path component */ + const char *newpath = win32_newpath.get_posix(); + int pos = strlen (newpath); + while (--pos >= 0) + if (isdirsep (newpath[pos])) + break; + /* Append the source path to the directory + component of the destination */ + if (pos+1+strlen(oldpath) >= MAX_PATH) + { + set_errno(ENAMETOOLONG); + __leave; + } + strcpy (real_oldpath = tp.c_get (), newpath); + strcpy (&real_oldpath[pos+1], oldpath); + } + + /* As a MSYS limitation, the source path must exist. */ + path_conv win32_oldpath; + win32_oldpath.check (real_oldpath, PC_SYM_NOFOLLOW, stat_suffixes); + if (!win32_oldpath.exists ()) + { + set_errno (ENOENT); + __leave; + } + + char *w_newpath; + char *w_oldpath; + stpcpy (w_newpath = tp.c_get (), win32_newpath.get_win32()); + stpcpy (w_oldpath = tp.c_get (), win32_oldpath.get_win32()); + if (win32_oldpath.isdir()) + { + char *origpath; + strcpy (origpath = tp.c_get (), w_oldpath); + res = recursiveCopy (w_oldpath, w_newpath, origpath); + } + else + { + if (!CopyFile (w_oldpath, w_newpath, FALSE)) + { + __seterrno (); + } + else + { + res = 0; + } + } + __leave; + } + } + /* Default technique creating a symlink. */ buf = tp.t_get (); cp = stpcpy (buf, SYMLINK_COOKIE); From 222fd37c0b4f4502a0dd67ab3369fb630ded3420 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:48:54 +0300 Subject: [PATCH 715/767] Automatically rewrite TERM=msys to TERM=cygwin With MSys1, it was necessary to set the TERM variable to "msys". To allow for a smooth transition from MSys1 to MSys2, let's simply handle TERM=msys as if the user had not specified TERM at all and wanted us to use our preferred TERM value. --- winsup/cygwin/environ.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 5fb3f53ef5..117531367e 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -908,7 +908,16 @@ win32env_to_cygenv (PWCHAR rawenv, bool posify) char *eq = strchrnul (newp, '='); ucenv (newp, eq); /* uppercase env vars which need it */ if (*newp == 'T' && strncmp (newp, "TERM=", 5) == 0) - sawTERM = 1; + { + /* backwards compatibility: override TERM=msys by TERM=cygwin */ + if (strcmp (newp + 5, "msys") == 0) + { + free(newp); + i--; + continue; + } + sawTERM = 1; + } #ifdef __MSYS__ else if (*newp == 'M' && strncmp (newp, "MSYS=", 5) == 0) parse_options (newp + 5); From 41e8ada0d105959dfd3a1665875a09b64ceb06a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 21:50:55 +0300 Subject: [PATCH 716/767] Do not convert environment for strace Strace is a Windows program so MSYS2 will convert all arguments and environment vars and that makes debugging msys2 software with strace very tricky. --- winsup/cygwin/spawn.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 845121fec8..ace43db0a7 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -545,11 +545,13 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, bool switch_user = ::cygheap->user.issetuid () && (::cygheap->user.saved_uid != ::cygheap->user.real_uid); + bool keep_posix = (iscmd (argv[0], "strace.exe") + || iscmd (argv[0], "strace")) ? true : real_path.iscygexec (); moreinfo->envp = build_env (envp, envblock, moreinfo->envc, real_path.iscygexec (), switch_user ? ::cygheap->user.primary_token () : NULL, - real_path.iscygexec ()); + keep_posix); if (!moreinfo->envp || !envblock) { set_errno (E2BIG); From 766e55c1bea155c16b8fe28506b86f661c292dc6 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Sun, 23 Aug 2015 20:47:30 +0100 Subject: [PATCH 717/767] strace.cc: Don't set MSYS=noglob Commit message for this code was: * strace.cc (create_child): Set CYGWIN=noglob when starting new process so that Cygwin will leave already-parsed the command line alonw." I can see no reason for it and it badly breaks the ability to use strace.exe to investigate calling a Cygwin program from a Windows program, for example: strace mingw32-make.exe .. where mingw32-make.exe finds sh.exe and uses it as the shell. The reason it badly breaks this use-case is because dcrt0.cc depends on globbing to happen to parse commandlines from Windows programs; irrespective of whether they contain any glob patterns or not. See quoted () comment: "This must have been run from a Windows shell, so preserve quotes for globify to play with later." --- winsup/utils/mingw/strace.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/winsup/utils/mingw/strace.cc b/winsup/utils/mingw/strace.cc index 29db640239..25adf4e8dd 100644 --- a/winsup/utils/mingw/strace.cc +++ b/winsup/utils/mingw/strace.cc @@ -354,10 +354,28 @@ create_child (char **argv) make_command_line (one_line, argv); SetConsoleCtrlHandler (NULL, 0); +/* Commit message for this code was: +"* strace.cc (create_child): Set CYGWIN=noglob when starting new process so that + + Cygwin will leave already-parsed the command line alonw." + + I can see no reason for it and it badly breaks the ability to use + strace.exe to investigate calling a Cygwin program from a Windows + program, for example: + strace mingw32-make.exe + .. where mingw32-make.exe finds sh.exe and uses it as the shell. + The reason it badly breaks this use-case is because dcrt0.cc depends + on globbing to happen to parse commandlines from Windows programs; + irrespective of whether they contain any glob patterns or not. + + See quoted () comment: + "This must have been run from a Windows shell, so preserve + quotes for globify to play with later." + const char *cygwin_env = getenv ("MSYS"); const char *space; - if (cygwin_env && strlen (cygwin_env) <= 256) /* sanity check */ + if (cygwin_env && strlen (cygwin_env) <= 256) // sanity check space = " "; else space = cygwin_env = ""; @@ -365,6 +383,7 @@ create_child (char **argv) + strlen (space) + strlen (cygwin_env)); sprintf (newenv, "MSYS=noglob%s%s", space, cygwin_env); _putenv (newenv); +*/ ret = CreateProcess (0, one_line.buf, /* command line */ NULL, /* Security */ NULL, /* thread */ From 4f01c3f5c7c3201c46d682f378d8b1ddbd7a0d87 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Fri, 21 Aug 2015 09:52:47 +0100 Subject: [PATCH 718/767] Add debugging for strace make_command_line --- winsup/utils/mingw/strace.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/winsup/utils/mingw/strace.cc b/winsup/utils/mingw/strace.cc index 25adf4e8dd..d346abc4e7 100644 --- a/winsup/utils/mingw/strace.cc +++ b/winsup/utils/mingw/strace.cc @@ -352,6 +352,7 @@ create_child (char **argv) flags |= CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP; make_command_line (one_line, argv); + printf ("create_child: %s\n", one_line.buf); SetConsoleCtrlHandler (NULL, 0); /* Commit message for this code was: From d43f1eebf2fed9c1c9321eecae12b4830fc19b92 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Wed, 17 May 2017 18:13:32 +0200 Subject: [PATCH 719/767] strace --quiet: be *really* quiet The biggest problem with strace spitting out `create_child: ...` despite being asked to be real quiet is that its output can very well interfere with scripts' operations. For example, when running any of Git for Windows' shell scripts with `GIT_STRACE_COMMANDS=/path/to/logfile` (which is sadly an often needed debugging technique while trying to address the many MSYS2 issues Git for Windows faces), any time the output of any command is redirected into a variable, it will include that `create_child: ...` line, wreaking havoc with Git's expectations. So let's just really be quiet when we're asked to be quiet. Signed-off-by: Johannes Schindelin --- winsup/utils/mingw/strace.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/utils/mingw/strace.cc b/winsup/utils/mingw/strace.cc index d346abc4e7..a6b2e5d548 100644 --- a/winsup/utils/mingw/strace.cc +++ b/winsup/utils/mingw/strace.cc @@ -352,7 +352,8 @@ create_child (char **argv) flags |= CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP; make_command_line (one_line, argv); - printf ("create_child: %s\n", one_line.buf); + if (!quiet) + printf ("create_child: %s\n", one_line.buf); SetConsoleCtrlHandler (NULL, 0); /* Commit message for this code was: From 0053f7b38e025ef1358958232e0231c455cc2bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B8=CC=86=20=D0=9F?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BE=D0=B2?= Date: Sun, 14 Apr 2019 22:13:51 +0300 Subject: [PATCH 720/767] path_conv: special-case root directory to have trailing slash When converting `/c/` to `C:\`, the trailing slash is actually really necessary, as `C:` is not an absolute path. We must be very careful to do this only for root directories, though. If we kept the trailing slash also for, say, `/y/directory/`, we would run into the following issue: On FAT file systems, the normalized path is used to fake inode numbers. As a result, `Y:\directory\` and `Y:\directory` have different inode numbers!!! This would result in very non-obvious symptoms. Back when we were too careless about keeping the trailing slash, it was reported to the Git for Windows project that the `find` and `rm` commands can error out on FAT file systems with very confusing "No such file or directory" errors, for no good reason. During the original investigation, Vasil Minkov pointed out in https://github.com/git-for-windows/git/issues/1497#issuecomment-372665870, that this bug had been fixed in Cygwin as early as 1997... and the bug was unfortunately reintroduced into early MSYS2 versions. Signed-off-by: Johannes Schindelin --- winsup/cygwin/path.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 8615386aff..b1a088a9fd 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -709,6 +709,12 @@ path_conv::check (const char *src, unsigned opt, need_directory = 1; *--tail = '\0'; } + /* Special case for "/" must set need_directory, without removing + trailing slash */ + else if (tail == path_copy + 1 && isslash (tail[-1])) + { + need_directory = 1; + } path_end = tail; /* Scan path_copy from right to left looking either for a symlink @@ -1248,6 +1254,7 @@ path_conv::check (const char *src, unsigned opt, cfree (wide_path); wide_path = NULL; } + if (need_directory) { size_t n = strlen (this->path); From 1e8a891f5ec4bb1b96f18c07b7180999c14b8ce0 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 8 Nov 2022 16:24:20 +0100 Subject: [PATCH 721/767] When converting to a Unix path, avoid double trailing slashes When calling `cygpath -u C:/msys64/` in an MSYS2 setup that was installed into `C:/msys64/`, the result should be `/`, not `//`. Let's ensure that we do not append another trailing slash if the converted path already ends in a slash. This fixes https://github.com/msys2/msys2-runtime/issues/112 Signed-off-by: Johannes Schindelin --- winsup/cygwin/mount.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index eff9803241..bd6ec2a7a1 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -1018,6 +1018,9 @@ mount_info::conv_to_posix_path (const char *src_path, char *posix_path, nextchar = 1; int addslash = nextchar > 0 ? 1 : 0; + /* avoid appending a slash if the result already has a trailing slash */ + if (append_slash && mi.posix_pathlen && mi.posix_path[mi.posix_pathlen-1] == '/') + append_slash = addslash = 0; if ((mi.posix_pathlen + (pathbuflen - mi.native_pathlen) + addslash) >= NT_MAX_PATH) return ENAMETOOLONG; strcpy (posix_path, mi.posix_path); From 673065dd1eeedc82dda43aaeb435040be2703ea4 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 20 Nov 2022 13:57:36 +0100 Subject: [PATCH 722/767] msys2_path_conv: pass PC_NOFULL to path_conv In theory this doesn't make a difference because posix_to_win32_path() is only called with rooted/absolute paths, but as pointed out in https://github.com/msys2/msys2-runtime/pull/103 PC_NOFULL will preserve the trailing slash of unix paths (for some reason). See "cygpath -m /bin/" (preserved) vs "cygpath -am /bin/" (dropped) One use case where we need to trailing slashes to be preserved is the GCC build system: https://github.com/gcc-mirror/gcc/blob/6d82e0fea5f988e829912a/gcc/Makefile.in#L2314 The Makefile appends a slash to the prefixes and the C code doing relocation will treat the path as a directory if there is a trailing slash. See https://github.com/msys2/MINGW-packages/issues/14173 for details. With this change all our MSYS2 path_conv tests pass again. --- winsup/cygwin/msys2_path_conv.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/msys2_path_conv.cc b/winsup/cygwin/msys2_path_conv.cc index c52728759e..d584800c00 100644 --- a/winsup/cygwin/msys2_path_conv.cc +++ b/winsup/cygwin/msys2_path_conv.cc @@ -682,7 +682,7 @@ void posix_to_win32_path(const char* from, const char* to, char** dst, const cha strncpy(one_path, from, to-from); one_path[to-from] = '\0'; - path_conv conv (one_path, 0); + path_conv conv (one_path, PC_NOFULL); if (conv.error) { set_errno(conv.error); From e1db14849f307053cf0728f385fd8e2c884b4d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A7=88=EB=88=84=EC=97=98?= Date: Wed, 17 Jun 2015 09:30:41 +0200 Subject: [PATCH 723/767] path-conversion: Introduce ability to switch off conversion. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When calling windows native apps from MSYS2, the runtime tries to convert commandline arguments by a specific set of rules. This idea was inherited from the MSys/MinGW project (which is now seemingly stale, yet must be credited with championing this useful feature, see MinGW wiki https://web.archive.org/web/20201112005258/http://www.mingw.org/wiki/Posix_path_conversion). If the user does not want that behavior on a big scale, e.g. inside a Bash script, with the changes introduced in this commit, the user can now set the the environment variable `MSYS_NO_PATHCONV` when calling native windows commands. This is a feature that has been introduced in Git for Windows via https://github.com/git-for-windows/msys2-runtime/pull/11 and it predates support for the `MSYS2_ENV_CONV_EXCL` and `MSYS2_ARG_CONV_EXCL` environment variables in the MSYS2 runtime; Many users find the simplicity of `MSYS_NO_PATHCONV` appealing. So let's teach MSYS2 proper this simple trick that still allows using the sophisticated `MSYS2_*_CONV_EXCL` facilities but also offers a convenient catch-all "just don't convert anything" knob. Signed-off-by: 마누엘 Signed-off-by: Johannes Schindelin --- winsup/cygwin/msys2_path_conv.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/winsup/cygwin/msys2_path_conv.cc b/winsup/cygwin/msys2_path_conv.cc index d584800c00..4c0cc82cf2 100644 --- a/winsup/cygwin/msys2_path_conv.cc +++ b/winsup/cygwin/msys2_path_conv.cc @@ -341,6 +341,16 @@ path_type find_path_start_and_type(const char** src, int recurse, const char* en if (*it == '\0' || it == end) return NONE; + /* + * Skip path mangling when environment indicates it. + */ + const char *no_pathconv = getenv ("MSYS_NO_PATHCONV"); + + if (no_pathconv) { + *src = end; + return NONE; + } + /* Let's not convert ~/.file to ~C:\msys64\.file */ if (*it == '~') { skip_p2w: From f6e516da390ea3f729132274db1303ab95a61e7c Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Fri, 21 Aug 2015 12:52:09 +0100 Subject: [PATCH 724/767] dcrt0.cc: Untangle allow_glob from winshell Otherwise if globbing is allowed and we get called from a Windows program, build_argv thinks we've been called from a Cygwin program. --- winsup/cygwin/dcrt0.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 16b624eab5..3536e80730 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -154,12 +154,12 @@ isquote (char c) /* Step over a run of characters delimited by quotes */ static /*__inline*/ char * -quoted (char *cmd, int winshell) +quoted (char *cmd, int winshell, int glob) { char *p; char quote = *cmd; - if (!winshell) + if (!winshell || !glob) { char *p; strcpy (cmd, cmd + 1); @@ -169,8 +169,8 @@ quoted (char *cmd, int winshell) } const char *s = quote == '\'' ? "'" : "\\\""; - /* This must have been run from a Windows shell, so preserve - quotes for globify to play with later. */ + /* This must have been run from a Windows shell and globbing is enabled, + so preserve quotes for globify to play with later. */ while (*cmd && *++cmd) if ((p = strpbrk (cmd, s)) == NULL) { @@ -292,7 +292,7 @@ globify (char *word, char **&argv, int &argc, int &argvlen) /* Build argv, argc from string passed from Windows. */ static void -build_argv (char *cmd, char **&argv, int &argc, int winshell) +build_argv (char *cmd, char **&argv, int &argc, int winshell, int glob) { int argvlen = 0; int nesting = 0; // monitor "nesting" from insert_file @@ -326,7 +326,7 @@ build_argv (char *cmd, char **&argv, int &argc, int winshell) a Cygwin process, or if the word starts with a '@'. In this case, the insert_file function needs an unquoted DOS filename and globbing isn't performed anyway. */ - cmd = quoted (cmd, winshell && argc > 0 && *word != '@'); + cmd = quoted (cmd, winshell && argc > 0 && *word != '@', glob); } if (issep (*cmd)) // End of argument if space break; @@ -352,7 +352,7 @@ build_argv (char *cmd, char **&argv, int &argc, int winshell) } /* Add word to argv file after (optional) wildcard expansion. */ - if (!winshell || !argc || !globify (word, argv, argc, argvlen)) + if (!glob || !argc || !globify (word, argv, argc, argvlen)) { debug_printf ("argv[%d] = '%s'", argc, word); argv[argc++] = word; @@ -907,6 +907,7 @@ dll_crt0_1 (void *) /* Scan the command line and build argv. Expand wildcards if not called from another cygwin process. */ build_argv (line, __argv, __argc, + NOTSTATE (myself, PID_CYGPARENT), NOTSTATE (myself, PID_CYGPARENT) && allow_glob); /* Convert argv[0] to posix rules if it's currently blatantly From 1059fbbdea827dc369d76eb59d2c2bf087faa84b Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Mon, 24 Aug 2015 00:48:06 +0100 Subject: [PATCH 725/767] dcrt0.cc (globify): Don't quote literal strings differently when dos_spec Reverts 25ba8f306f3099caf8397859019e936b90510e8d. I can't figure out what the intention was. I'm sure I'll find out soon enough when everything breaks. This change means that input of: '"C:/test.exe SOME_VAR=\"literal quotes\""' becomes: 'C:/test.exe SOME_VAR="literal quotes"' instead of: 'C:/test.exe SOME_VAR=\literal quotes\' .. which is at least consistent with the result for: '"no_drive_or_colon SOME_VAR=\"literal quotes\""' The old result of course resulted in the quoted string being split into two arguments at the space which is clearly not intended. I *guess* backslashes in dos paths may have been the issue here? If so I don't care since we should not use them, ever, esp. not at the expense of sensible forward-slash-containing input. --- winsup/cygwin/dcrt0.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 3536e80730..81031cae8a 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -237,10 +237,20 @@ globify (char *word, char **&argv, int &argc, int &argvlen) while (*++s && *s != quote) { mbstate_t mbs = { 0 }; + /* This used to be: if (dos_spec || *s != '\\') - /* nothing */; + // nothing else if (s[1] == quote || s[1] == '\\') s++; + With commit message: + dcrt0.cc (globify): Don't use \ quoting when apparently quoting a DOS path + spec, even within a quoted string. + But that breaks the "literal quotes" part of '"C:/test.exe SOME_VAR=\"literal quotes\""' + giving: 'C:/test.exe SOME_VAR=\literal quotes\' (with \'s between each character) + instead of 'C:/test.exe SOME_VAR="literal quotes"' (with \'s between each character) + */ + if (*s == '\\' && (s[1] == quote || s[1] == '\\')) + s++; *p++ = '\\'; size_t cnt = isascii (*s) ? 1 : mbrtowi (NULL, s, MB_CUR_MAX, &mbs); if (cnt <= 1 || cnt == (size_t)-1) From f8da08fd7e82b038fe2e278153bc6545dae232b0 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Fri, 21 Aug 2015 12:18:52 +0100 Subject: [PATCH 726/767] Add debugging for build_argv --- winsup/cygwin/dcrt0.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 81031cae8a..0a5c817b3c 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -311,6 +311,8 @@ build_argv (char *cmd, char **&argv, int &argc, int winshell, int glob) argvlen = 0; argv = NULL; + debug_printf ("cmd = '%s', winshell = %d, glob = %d", cmd, winshell, glob); + /* Scan command line until there is nothing left. */ while (*cmd) { From 03d6fe120a36c805008cc611ad140e2a222dc8b0 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Sun, 10 Apr 2016 21:47:41 +0100 Subject: [PATCH 727/767] environ.cc: New facility/environment variable MSYS2_ENV_CONV_EXCL Works very much like MSYS2_ARG_CONV_EXCL. In fact it uses the same function, arg_heuristic_with_exclusions (). Also refactors parsing the env. variables to use new function, string_split_delimited (). The env. that is searched through is the merged (POSIX + Windows) one. It remains to be seen if this should be made an option or not. This feature was prompted because the R language (Windows exe) calls bash to run configure.win, which then calls back into R to read its config variables (LOCAL_SOFT) and when this happens, msys2-runtime converts R_ARCH from "/x64" to an absolute Windows path and appends it to another absolute path, R_HOME, forming an invalid path. --- winsup/cygwin/environ.cc | 34 +++++++++++++++++------- winsup/cygwin/local_includes/miscfuncs.h | 2 ++ winsup/cygwin/miscfuncs.cc | 20 ++++++++++++++ winsup/cygwin/path.cc | 1 - winsup/cygwin/spawn.cc | 12 ++------- 5 files changed, 48 insertions(+), 21 deletions(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 117531367e..a9cce9645a 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -1173,6 +1173,10 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, int tl = 0; char **pass_dstp; +#ifdef __MSYS__ + char *msys2_env_conv_excl_env = NULL; + size_t msys2_env_conv_excl_count = 0; +#endif char **pass_env = (char **) alloca (sizeof (char *) * (n + winnum + SPENVS_SIZE + 1)); /* Iterate over input list, generating a new environment list and refreshing @@ -1181,16 +1185,25 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, { bool calc_tl = !no_envblock; #ifdef __MSYS__ - /* Don't pass timezone environment to non-msys applications */ - if (!keep_posix && ascii_strncasematch(*srcp, "TZ=", 3)) + if (!keep_posix) { - const char *v = *srcp + 3; - if (*v == ':') - goto next1; - for (; *v; v++) - if (!isalpha(*v) && !isdigit(*v) && - *v != '-' && *v != '+' && *v != ':') - goto next1; + /* Don't pass timezone environment to non-msys applications */ + if (ascii_strncasematch(*srcp, "TZ=", 3)) + { + const char *v = *srcp + 3; + if (*v == ':') + goto next1; + for (; *v; v++) + if (!isalpha(*v) && !isdigit(*v) && + *v != '-' && *v != '+' && *v != ':') + goto next1; + } + else if (ascii_strncasematch(*srcp, "MSYS2_ENV_CONV_EXCL=", 20)) + { + msys2_env_conv_excl_env = (char*)alloca (strlen(&(*srcp)[20])+1); + strcpy (msys2_env_conv_excl_env, &(*srcp)[20]); + msys2_env_conv_excl_count = string_split_delimited (msys2_env_conv_excl_env, ';'); + } } #endif /* Look for entries that require special attention */ @@ -1315,7 +1328,8 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, } #ifdef __MSYS__ else if (!keep_posix) { - char *win_arg = arg_heuristic(*srcp); + char *win_arg = arg_heuristic_with_exclusions + (*srcp, msys2_env_conv_excl_env, msys2_env_conv_excl_count); debug_printf("WIN32_PATH is %s", win_arg); p = cstrdup1(win_arg); if (win_arg != *srcp) diff --git a/winsup/cygwin/local_includes/miscfuncs.h b/winsup/cygwin/local_includes/miscfuncs.h index d52debad1a..c4dbe0235b 100644 --- a/winsup/cygwin/local_includes/miscfuncs.h +++ b/winsup/cygwin/local_includes/miscfuncs.h @@ -81,6 +81,8 @@ void backslashify (const char *, char *, bool); void slashify (const char *, char *, bool); #define isslash(c) ((c) == '/') +size_t string_split_delimited (char * string, char delimiter); + extern void transform_chars (PWCHAR, PWCHAR); extern inline void transform_chars (PUNICODE_STRING upath, USHORT start_idx) diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 767384faa9..160c996116 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -311,6 +311,26 @@ NT_readline::gets () } } +/* Searches through string for delimiter replacing each instance with '\0' + and returning the number of such delimited substrings. This function + Will return 0 for the NULL string and at least 1 otherwise. */ + +size_t +string_split_delimited (char * string, char delimiter) +{ + if ( string == NULL ) + return 0; + size_t count = 1; + string = strchr ( string, delimiter ); + while (string) + { + *string = '\0'; + ++count; + string = strchr ( string + 1, delimiter ); + } + return count; +} + /* Signal the thread name to any attached debugger (See "How to: Set a Thread Name in Native Code" diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index b1a088a9fd..39819dc694 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -4051,7 +4051,6 @@ arg_heuristic_with_exclusions (char const * const arg, char const * exclusions, return arg_result; } - debug_printf("Input value: (%s)", arg); for (size_t excl = 0; excl < exclusions_count; ++excl) { /* Since we've got regex linked we should maybe switch to that, but diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index ace43db0a7..57231b3c2e 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -293,8 +293,7 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, int res = -1; /* Environment variable MSYS2_ARG_CONV_EXCL contains a list - of ';' separated argument prefixes to pass un-modified.. - It isn't applied to env. variables; only spawn arguments. + of ';' separated argument prefixes to pass un-modified. A value of * means don't convert any arguments. */ char* msys2_arg_conv_excl_env = getenv("MSYS2_ARG_CONV_EXCL"); char* msys2_arg_conv_excl = NULL; @@ -303,14 +302,7 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv, { msys2_arg_conv_excl = (char*)alloca (strlen(msys2_arg_conv_excl_env)+1); strcpy (msys2_arg_conv_excl, msys2_arg_conv_excl_env); - msys2_arg_conv_excl_count = 1; - msys2_arg_conv_excl_env = strchr ( msys2_arg_conv_excl, ';' ); - while (msys2_arg_conv_excl_env) - { - *msys2_arg_conv_excl_env = '\0'; - ++msys2_arg_conv_excl_count; - msys2_arg_conv_excl_env = strchr ( msys2_arg_conv_excl_env + 1, ';' ); - } + msys2_arg_conv_excl_count = string_split_delimited (msys2_arg_conv_excl, ';'); } /* Check if we have been called from exec{lv}p or spawn{lv}p and mask From 90d66ee649c0b2f265583942352725e9fac74aa9 Mon Sep 17 00:00:00 2001 From: SquallATF Date: Mon, 10 Sep 2018 11:32:18 +0300 Subject: [PATCH 728/767] Fix native symbolic link spawn passing wrong arg0 --- winsup/cygwin/spawn.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 57231b3c2e..9d2a0164e4 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -50,7 +50,7 @@ perhaps_suffix (const char *prog, path_conv& buf, int& err, unsigned opt) err = 0; debug_printf ("prog '%s'", prog); - buf.check (prog, PC_SYM_FOLLOW | PC_NULLEMPTY | PC_POSIX, + buf.check (prog, PC_SYM_FOLLOW | PC_SYM_NOFOLLOW_REP | PC_NULLEMPTY | PC_POSIX, (opt & FE_DLL) ? stat_suffixes : exe_suffixes); if (buf.isdir ()) From 7b84fed8f06744f2d308c6ace42275b4941cb90c Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 19 May 2020 13:49:37 +0200 Subject: [PATCH 729/767] Introduce the `enable_pcon` value for `MSYS` It is simply the negation of `disable_pcon`, i.e. `MSYS=enable_pcon` is equivalent to `MSYS=nodisable_pcon` (the former is slightly more intuitive than the latter) and likewise `MSYS=noenable_pcon` is equivalent to `MSYS=disable_pcon` (here, the latter is definitely more intuitive than the former). This is needed because we just demoted the pseudo console feature to be opt-in instead of opt-out, and it would be awkward to recommend to users to use "nodisable_pcon"... "nodisable" is not even a verb. Signed-off-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index a9cce9645a..b9600ef9a8 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -42,6 +42,7 @@ enum settings isfunc, setdword, setbool, + setnegbool, setbit }; @@ -118,6 +119,7 @@ static struct parse_thing } known[] NO_COPY = { {"disable_pcon", {&disable_pcon}, setbool, NULL, {{false}, {true}}}, + {"enable_pcon", {&disable_pcon}, setnegbool, NULL, {{true}, {false}}}, {"error_start", {func: error_start_init}, isfunc, NULL, {{0}, {0}}}, {"export", {&export_settings}, setbool, NULL, {{false}, {true}}}, {"glob", {func: glob_init}, isfunc, NULL, {{0}, {s: "normal"}}}, @@ -244,6 +246,13 @@ parse_options (const char *inbuf) *k->setting.b = !!strtol (eq, NULL, 0); debug_printf ("%s%s", *k->setting.b ? "" : "no", k->name); break; + case setnegbool: + if (!istrue || !eq) + *k->setting.b = k->values[istrue].i; + else + *k->setting.b = !strtol (eq, NULL, 0); + debug_printf ("%s%s", !*k->setting.b ? "" : "no", k->name); + break; case setbit: *k->setting.x &= ~k->values[istrue].i; if (istrue || (eq && strtol (eq, NULL, 0))) From 6f87e23bae318aa95fefe6d40a6630901d91c2aa Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 5 Jun 2020 20:09:11 +0200 Subject: [PATCH 730/767] popen: call /usr/bin/sh instead of /bin/sh We mount /usr/bin to /bin, but in a chroot this is broken and we have no /bin, so try to use the real path. chroot is used by pacman to run install scripts when called with --root and this broke programs in install scripts calling popen() (install-info from texinfo for example) There are more paths hardcoded to /bin in cygwin which might also be broken in this scenario, so this maybe should be extended to all of them. --- winsup/cygwin/syscalls.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index ed564c8740..fe4b9cb73d 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -4423,7 +4423,7 @@ popen (const char *command, const char *in_type) fcntl (stdchild, F_SETFD, stdchild_state | FD_CLOEXEC); /* Start a shell process to run the given command without forking. */ - pid_t pid = ch_spawn.worker ("/bin/sh", argv, environ, _P_NOWAIT, + pid_t pid = ch_spawn.worker ("/usr/bin/sh", argv, environ, _P_NOWAIT, __std[0], __std[1]); /* Reinstate the close-on-exec state */ From df7a56eeaa148c5b0cb2d48ae9a6fd3187a8f0d6 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Wed, 17 Mar 2021 17:41:02 +0100 Subject: [PATCH 731/767] Disable the 'cygwin' GitHub workflow It does not work at all. For example, `rpm -E %fedora` says that there should be version 33 of rpmsphere at https://github.com/rpmsphere/noarch/tree/master/r, but there is only version 32. Another thing that is broken: Cygwin now assumes that a recent mingw-w64-headers version is available, but Fedora apparently only offers v7.0.0, which is definitely too old to accommodate for the expectation of https://github.com/cygwin/cygwin/commit/c1f7c4d1b6d7. Signed-off-by: Johannes Schindelin --- .github/workflows/cygwin.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index be377bb3b1..5ae4ef9d59 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -1,12 +1,6 @@ name: cygwin -on: - push: - # since master is a symbolic reference to main, don't run for both - branches-ignore: - - 'master' - tags: - - '*' +on: workflow_dispatch jobs: fedora-build: From cf56ccdb648f870b7f770c21d0a9874e2c21dffb Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 9 Aug 2020 14:02:51 +0200 Subject: [PATCH 732/767] CI: add a GHA for doing a basic build test Build with --disable-dependency-tracking because we only build once and this saves 3-4 minutes in CI. --- .github/workflows/build.yaml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000000..1775bb9117 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,36 @@ +name: build + +on: [push, pull_request] + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: setup-msys2 + uses: msys2/setup-msys2@v2 + with: + msystem: MSYS + update: true + install: msys2-devel base-devel autotools cocom diffutils gcc gettext-devel libiconv-devel make mingw-w64-cross-crt mingw-w64-cross-gcc mingw-w64-cross-zlib perl zlib-devel xmlto docbook-xsl + + - name: Build + shell: msys2 {0} + run: | + (cd winsup && ./autogen.sh) + ./configure --disable-dependency-tracking + make -j8 + + - name: Install + shell: msys2 {0} + run: | + make DESTDIR="$(pwd)"/_dest install + + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: install + path: _dest/ From 083c245339ee5e0dd245f20a90bfceafe8517ae5 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 10 Nov 2023 15:31:10 +0100 Subject: [PATCH 733/767] CI: fix the build with gcc 13 --- .github/workflows/build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1775bb9117..e8307b325d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -20,6 +20,9 @@ jobs: - name: Build shell: msys2 {0} run: | + # XXX: cygwin still uses gcc v11 so we get new warnings with v13, + # resulting in errors due to -Werror. Disable them for now. + export CXXFLAGS="-Wno-error=stringop-truncation -Wno-error=array-bounds -Wno-error=overloaded-virtual -Wno-narrowing -Wno-use-after-free" (cd winsup && ./autogen.sh) ./configure --disable-dependency-tracking make -j8 From 91f46dfb4bdcce3421e085489b48214c95e929b7 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 22 Nov 2019 11:20:22 +0100 Subject: [PATCH 734/767] Set up a GitHub Action to keep in sync with Cygwin This will help us by automating an otherwise tedious task. Signed-off-by: Johannes Schindelin --- .github/workflows/sync-with-cygwin.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/sync-with-cygwin.yml diff --git a/.github/workflows/sync-with-cygwin.yml b/.github/workflows/sync-with-cygwin.yml new file mode 100644 index 0000000000..57bd30e5da --- /dev/null +++ b/.github/workflows/sync-with-cygwin.yml @@ -0,0 +1,24 @@ +name: sync-with-cygwin + +# File: .github/workflows/repo-sync.yml + +on: + workflow_dispatch: + schedule: + - cron: "42 * * * *" +jobs: + repo-sync: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Fetch Cygwin's latest master and tags + run: | + git init --bare + # Potentially use git://sourceware.org/git/newlib-cygwin.git directly, but GitHub seems more reliable + git fetch https://github.com/cygwin/cygwin master:refs/heads/cygwin/master 'refs/tags/*:refs/tags/*' + - name: Push to our fork + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git push https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY refs/heads/cygwin/master 'refs/tags/*:refs/tags/*' From 4dd6aad8634373e09d218628eea91f02840e014a Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Wed, 12 Aug 2020 12:22:38 +0200 Subject: [PATCH 735/767] Expose full command-lines to other Win32 processes by default In the Cygwin project, it was decided that the command-line of Cygwin processes, as shown in the output of `wmic process list`, would suffer from being truncated to 32k (and is transmitted to the child process via a different mechanism, anyway), and therefore only the absolute path of the executable is shown by default. Users who would like to see the full command-line (even if it is truncated) are expected to set `CYGWIN=wincmdln` (or, in MSYS2's case, `MSYS=wincmdln`). Seeing as MSYS2 tries to integrate much better with the surrounding Win32 ecosystem than Cygwin, it makes sense to turn this on by default. Users who wish to suppress it can still set `MSYS=nowincmdln`. Signed-off-by: Johannes Schindelin --- winsup/cygwin/globals.cc | 2 +- winsup/doc/cygwinenv.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index 0c21fa624e..b3b77de405 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -70,7 +70,7 @@ bool allow_glob = true; bool ignore_case_with_glob; bool pipe_byte = true; /* Default to byte mode so that C# programs work. */ bool reset_com; -bool wincmdln; +bool wincmdln = true; winsym_t allow_winsymlinks = WSYM_deepcopy; bool disable_pcon; bool winjitdebug = false; diff --git a/winsup/doc/cygwinenv.xml b/winsup/doc/cygwinenv.xml index fcb6e22485..4ea63b407a 100644 --- a/winsup/doc/cygwinenv.xml +++ b/winsup/doc/cygwinenv.xml @@ -90,7 +90,7 @@ time and when handles are inherited. Defaults to set. (no)wincmdln - if set, the windows complete command line (truncated to ~32K) will be passed on any processes that it creates -in addition to the normal UNIX argv list. Defaults to not set. +in addition to the normal UNIX argv list. Defaults to set. From 6ef58ed329d4d1b59091471a575a5c0af3ac192d Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 16 Apr 2018 14:59:39 +0200 Subject: [PATCH 736/767] Add a helper to obtain a function's address in kernel32.dll In particular, we are interested in the address of the CtrlRoutine and the ExitProcess functions. Since kernel32.dll is loaded first thing, the addresses will be the same for all processes (matching the CPU architecture, of course). This will help us with emulating SIGINT properly (by not sending signals to *all* processes attached to the same Console, as GenerateConsoleCtrlEvent() would do). Co-authored-by: Naveen M K Signed-off-by: Johannes Schindelin --- winsup/configure.ac | 5 + winsup/utils/mingw/Makefile.am | 15 ++ winsup/utils/mingw/getprocaddr.c | 310 +++++++++++++++++++++++++++++++ 3 files changed, 330 insertions(+) create mode 100644 winsup/utils/mingw/getprocaddr.c diff --git a/winsup/configure.ac b/winsup/configure.ac index 9b9b59dbcb..b9e3977fcf 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -106,6 +106,11 @@ if test "x$with_cross_bootstrap" != "xyes"; then test -n "$MINGW_CXX" || AC_MSG_ERROR([no acceptable MinGW g++ found in \$PATH]) AC_CHECK_PROGS(MINGW_CC, ${target_cpu}-w64-mingw32-gcc) test -n "$MINGW_CC" || AC_MSG_ERROR([no acceptable MinGW gcc found in \$PATH]) + + AC_CHECK_PROGS(MINGW32_CC, i686-w64-mingw32-gcc) + test -n "$MINGW32_CC" || AC_MSG_ERROR([no acceptable mingw32 gcc found in \$PATH]) + AC_CHECK_PROGS(MINGW64_CC, x86_64-w64-mingw32-gcc) + test -n "$MINGW64_CC" || AC_MSG_ERROR([no acceptable mingw64 gcc found in \$PATH]) fi AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" != "xyes"]) diff --git a/winsup/utils/mingw/Makefile.am b/winsup/utils/mingw/Makefile.am index 7f7317ae15..07b9f928d4 100644 --- a/winsup/utils/mingw/Makefile.am +++ b/winsup/utils/mingw/Makefile.am @@ -26,6 +26,21 @@ bin_PROGRAMS = \ ldh \ strace +libexec_PROGRAMS = getprocaddr32 getprocaddr64 + +# Must *not* use -O2 here, as it screws up the stack backtrace +getprocaddr32.o: %32.o: %.c + $(MINGW32_CC) -c -o $@ $< + +getprocaddr32.exe: %.exe: %.o + $(MINGW32_CC) -o $@ $^ -static -ldbghelp + +getprocaddr64.o: %64.o: %.c + $(MINGW64_CC) -c -o $@ $< + +getprocaddr64.exe: %.exe: %.o + $(MINGW64_CC) -o $@ $^ -static -ldbghelp + cygcheck_SOURCES = \ bloda.cc \ cygcheck.cc \ diff --git a/winsup/utils/mingw/getprocaddr.c b/winsup/utils/mingw/getprocaddr.c new file mode 100644 index 0000000000..25814c7bdd --- /dev/null +++ b/winsup/utils/mingw/getprocaddr.c @@ -0,0 +1,310 @@ +/* getprocaddr.c + +This program is a helper for getting the pointers for the +functions in kernel32 module, and optionally injects a remote +thread that runs those functions given a pid and exit code. + +We use dbghelp.dll to get the pointer to kernel32!CtrlRoutine +because it isn't exported. For that, we try to generate console +event (Ctrl+Break) ourselves, to find the pointer, and it is +printed if asked to, or a remote thread is injected to run the +given function. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#include +#include + +/* Include dbghelp.h after windows.h */ +#include + +static DWORD pid; +static uintptr_t exit_code; +static HANDLE CtrlEvent; + +static int +inject_remote_thread_into_process (HANDLE process, + LPTHREAD_START_ROUTINE address, + uintptr_t exit_code, + DWORD *thread_return) +{ + int res = -1; + + if (!address) + return res; + DWORD thread_id; + HANDLE thread = CreateRemoteThread (process, NULL, 1024 * 1024, address, + (PVOID)exit_code, 0, &thread_id); + if (thread) + { + /* + * Wait up to 10 seconds (arbitrary constant) for the thread to finish; + * Maybe we should wait forever? I have seen Cmd does so, but well... + */ + if (WaitForSingleObject (thread, 10000) == WAIT_OBJECT_0) + res = 0; + /* + According to the docs at MSDN for GetExitCodeThread, it will + get the return value from the function, here CtrlRoutine. So, this + checks if the Ctrl Event is handled correctly by the process. + + By some testing I could see CtrlRoutine returns 0 in case where + CtrlEvent set by SetConsoleCtrlHandler is handled correctly, in all + other cases it returns something non-zero(not sure what it that). + */ + if (thread_return != NULL) + GetExitCodeThread (thread, thread_return); + + CloseHandle (thread); + } + + return res; +} + +/* Here, we send a CtrlEvent to the current process for the + * sole purpose of capturing the address of the CtrlRoutine + * function, by looking the stack trace. + * + * This hack is needed because we cannot use GetProcAddress() + * as we do for ExitProcess(), because CtrlRoutine is not + * exported (although the .pdb files ensure that we can see + * it in a debugger). + */ +static WINAPI BOOL +ctrl_handler (DWORD ctrl_type) +{ + unsigned short count; + void *address; + HANDLE process; + PSYMBOL_INFOW info; + DWORD64 displacement; + DWORD thread_return = 0; + + count = CaptureStackBackTrace (1l /* skip this function */, + 1l /* return only one trace item */, &address, + NULL); + if (count != 1) + { + fprintf (stderr, "Could not capture backtrace\n"); + return FALSE; + } + + process = GetCurrentProcess (); + if (!SymInitialize (process, NULL, TRUE)) + { + fprintf (stderr, "Could not initialize symbols\n"); + return FALSE; + } + + info = (PSYMBOL_INFOW)malloc (sizeof (*info) + + MAX_SYM_NAME * sizeof (wchar_t)); + if (!info) + { + fprintf (stderr, "Could not allocate symbol info structure\n"); + return FALSE; + } + info->SizeOfStruct = sizeof (*info); + info->MaxNameLen = MAX_SYM_NAME; + + if (!SymFromAddrW (process, (DWORD64) (intptr_t)address, &displacement, + info)) + { + fprintf (stderr, "Could not get symbol info\n"); + SymCleanup (process); + return FALSE; + } + + if (pid == 0) + { + printf ("%p\n", (void *)(intptr_t)info->Address); + } + else + { + LPTHREAD_START_ROUTINE address = + (LPTHREAD_START_ROUTINE) (intptr_t)info->Address; + HANDLE h = OpenProcess (PROCESS_CREATE_THREAD | + PROCESS_QUERY_INFORMATION | + PROCESS_VM_OPERATION | + PROCESS_VM_WRITE | + PROCESS_VM_READ, FALSE, pid); + if (h == NULL) + { + fprintf (stderr, "OpenProcess failed: %ld\n", GetLastError ()); + return 1; + } + /* Inject the remote thread only when asked to */ + if (inject_remote_thread_into_process (h, address, exit_code, + &thread_return) < 0) + { + fprintf (stderr, + "Error while injecting remote thread for pid(%lu)\n", pid); + exit (1); /*We should exit immediately or else there will a 10s hang + waiting for the event to happen.*/ + } + if (thread_return) + fprintf (stderr, + "Injected remote thread for pid(%lu) returned %lu\n", pid, + thread_return); + } + SymCleanup (process); + if (!SetEvent (CtrlEvent)) + { + fprintf (stderr, "SetEvent failed (%ld)\n", GetLastError ()); + return 1; + } + exit (thread_return != 0); +} + +/* The easy route for finding the address of CtrlRoutine + * would be use GetProcAddress() but this isn't viable + * here because that symbol isn't exported. + */ +static int +find_ctrl_routine_the_hard_way () +{ + /* + * Avoid terminating all processes attached to the current console; + * This would happen if we used the same console as the caller, though, + * because we are sending a CtrlEvent on purpose (which _is_ sent to + * all processes connected to the same console, and the other processes + * are most likely unprepared for that CTRL_BREAK_EVENT and would be + * terminated as a consequence, _including the caller_). + * + * In case we get only one result from GetConsoleProcessList(), we don't + * need to create and allocate a new console, and it could avoid a console + * window popping up. + */ + DWORD proc_lists; + if (GetConsoleProcessList (&proc_lists, 5) > 1) + { + if (!FreeConsole () && GetLastError () != ERROR_INVALID_PARAMETER) + { + fprintf (stderr, "Could not detach from current Console: %ld\n", + GetLastError ()); + return 1; + } + if (!AllocConsole ()) + { + fprintf (stderr, "Could not allocate a new Console\n"); + return 1; + } + } + + CtrlEvent = CreateEvent (NULL, // default security attributes + TRUE, // manual-reset event + FALSE, // initial state is nonsignaled + NULL // object name + ); + + if (CtrlEvent == NULL) + { + fprintf (stderr, "CreateEvent failed (%ld)\n", GetLastError ()); + return 1; + } + + + if (!SetConsoleCtrlHandler (ctrl_handler, TRUE)) + { + fprintf (stderr, "Could not register Ctrl handler\n"); + return 1; + } + + if (!GenerateConsoleCtrlEvent (CTRL_BREAK_EVENT, 0)) + { + fprintf (stderr, "Could not simulate Ctrl+Break\n"); + return 1; + } + + if (WaitForSingleObject (CtrlEvent, 10000 /* 10 seconds*/) != WAIT_OBJECT_0) + { + fprintf (stderr, "WaitForSingleObject failed (%ld)\n", GetLastError ()); + return 1; + } + return 0; +} + +static void * +get_proc_addr (const char * module_name, const char * function_name) +{ + HMODULE module = GetModuleHandle (module_name); + if (!module) + return NULL; + return (void *)GetProcAddress (module, function_name); +} + +int +main (int argc, char **argv) +{ + char *end; + void *address; + BOOL is_ctrl_routine; + DWORD thread_return = 0; + + if (argc == 4) + { + exit_code = atoi (argv[2]); + pid = strtoul (argv[3], NULL, 0); + } + else if (argc == 2) + { + pid = 0; + } + else + { + fprintf (stderr, "Need a function name, exit code and pid\n" + "Or needs a function name.\n"); + return 1; + } + + is_ctrl_routine = strcmp (argv[1], "CtrlRoutine") == 0; + address = get_proc_addr ("kernel32", argv[1]); + if (is_ctrl_routine && !address) + { + /* CtrlRoutine is undocumented, and has been seen in both + * kernel32 and kernelbase + */ + address = get_proc_addr ("kernelbase", argv[1]); + if (!address) + return find_ctrl_routine_the_hard_way (); + } + + if (!address) + { + fprintf (stderr, "Could not get proc address\n"); + return 1; + } + + if (pid == 0) + { + printf ("%p\n", address); + fflush (stdout); + return 0; + } + HANDLE h = OpenProcess (PROCESS_CREATE_THREAD | + PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | + PROCESS_VM_WRITE | PROCESS_VM_READ, FALSE, pid); + if (h == NULL) + { + fprintf (stderr, "OpenProcess failed: %ld\n", GetLastError ()); + return 1; + } + /* Inject the remote thread */ + if (inject_remote_thread_into_process (h, (LPTHREAD_START_ROUTINE)address, + exit_code, &thread_return) < 0) + { + fprintf (stderr, "Could not inject thread into process %lu\n", pid); + return 1; + } + + if (is_ctrl_routine && thread_return) + { + fprintf (stderr, + "Injected remote thread for pid %lu returned %lu\n", pid, + thread_return); + return 1; + } + + return 0; +} From 38a8880717c5431c2c4d596dc0aa22c6906059f9 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 20 Mar 2015 09:56:28 +0000 Subject: [PATCH 737/767] Emulate GenerateConsoleCtrlEvent() upon Ctrl+C This patch is heavily inspired by the Git for Windows' strategy in handling Ctrl+C. When a process is terminated via TerminateProcess(), it has no chance to do anything in the way of cleaning up. This is particularly noticeable when a lengthy Git for Windows process tries to update Git's index file and leaves behind an index.lock file. Git's idea is to remove the stale index.lock file in that case, using the signal and atexit handlers available in Linux. But those signal handlers never run. Note: this is not an issue for MSYS2 processes because MSYS2 emulates Unix' signal system accurately, both for the process sending the kill signal and the process receiving it. Win32 processes do not have such a signal handler, though, instead MSYS2 shuts them down via `TerminateProcess()`. For a while, Git for Windows tried to use a gentler method, described in the Dr Dobb's article "A Safer Alternative to TerminateProcess()" by Andrew Tucker (July 1, 1999), http://www.drdobbs.com/a-safer-alternative-to-terminateprocess/184416547 Essentially, we injected a new thread into the running process that does nothing else than running the ExitProcess() function. However, this was still not in line with the way CMD handles Ctrl+C: it gives processes a chance to do something upon Ctrl+C by calling SetConsoleCtrlHandler(), and ExitProcess() simply never calls that handler. So for a while we tried to handle SIGINT/SIGTERM by attaching to the console of the command to interrupt, and generating the very same event as CMD does via GenerateConsoleCtrlEvent(). This method *still* was not correct, though, as it would interrupt *every* process attached to that Console, not just the process (and its children) that we wanted to signal. A symptom was that hitting Ctrl+C while `git log` was shown in the pager would interrupt *the pager*. The method we settled on is to emulate what GenerateConsoleCtrlEvent() does, but on a process by process basis: inject a remote thread and call the (private) function kernel32!CtrlRoutine. To obtain said function's address, we use the dbghelp API to generate a stack trace from a handler configured via SetConsoleCtrlHandler() and triggered via GenerateConsoleCtrlEvent(). To avoid killing each and all processes attached to the same Console as the MSYS2 runtime, we modify the cygwin-console-helper to optionally print the address of kernel32!CtrlRoutine to stdout, and then spawn it with a new Console. Note that this also opens the door to handling 32-bit process from a 64-bit MSYS2 runtime and vice versa, by letting the MSYS2 runtime look for the cygwin-console-helper.exe of the "other architecture" in a specific place (we choose /usr/libexec/, as it seems to be the convention for helper .exe files that are not intended for public consumption). The 32-bit helper implicitly links to libgcc_s_dw2.dll and libwinpthread-1.dll, so to avoid cluttering /usr/libexec/, we look for the helped of the "other" architecture in the corresponding mingw32/ or mingw64/ subdirectory. Among other bugs, this strategy to handle Ctrl+C fixes the MSYS2 side of the bug where interrupting `git clone https://...` would send the spawned-off `git remote-https` process into the background instead of interrupting it, i.e. the clone would continue and its progress would be reported mercilessly to the console window without the user being able to do anything about it (short of firing up the task manager and killing the appropriate task manually). Note that this special-handling is only necessary when *MSYS2* handles the Ctrl+C event, e.g. when interrupting a process started from within MinTTY or any other non-cmd-based terminal emulator. If the process was started from within `cmd.exe`'s terminal window, child processes are already killed appropriately upon Ctrl+C, by `cmd.exe` itself. Also, we can't trust the processes to end it's subprocesses upon receiving Ctrl+C. For example, `pip.exe` from `python-pip` doesn't kill the python it lauches (it tries to but fails), and I noticed that in cmd it kills python also correctly, which mean we should kill all the process using `exit_process_tree`. Co-authored-by: Naveen M K Signed-off-by: Johannes Schindelin --- winsup/cygwin/exceptions.cc | 24 +- winsup/cygwin/include/cygwin/exit_process.h | 364 ++++++++++++++++++++ 2 files changed, 384 insertions(+), 4 deletions(-) create mode 100644 winsup/cygwin/include/cygwin/exit_process.h diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 18271f54eb..f6b62552ed 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -29,6 +29,7 @@ details. */ #include "exception.h" #include "posix_timer.h" #include "gcc_seh.h" +#include "cygwin/exit_process.h" /* Define macros for CPU-agnostic register access. The _CX_foo macros are for access into CONTEXT, the _MC_foo ones for access into @@ -1598,10 +1599,25 @@ sigpacket::process () dosig: if (have_execed) { - sigproc_printf ("terminating captive process"); - if (::cygheap->ctty) - ::cygheap->ctty->cleanup_before_exit (); - TerminateProcess (ch_spawn, sigExeced = si.si_signo); + switch (si.si_signo) + { + case SIGUSR1: + case SIGUSR2: + case SIGCONT: + case SIGSTOP: + case SIGTSTP: + case SIGTTIN: + case SIGTTOU: + system_printf ("Suppressing signal %d to win32 process (pid %u)", + (int)si.si_signo, (unsigned int)GetProcessId(ch_spawn)); + goto done; + default: + sigproc_printf ("terminating captive process"); + if (::cygheap->ctty) + ::cygheap->ctty->cleanup_before_exit (); + rc = exit_process_tree (ch_spawn, 128 + (sigExeced = si.si_signo)); + goto done; + } } /* Dispatch to the appropriate function. */ sigproc_printf ("signal %d, signal handler %p", si.si_signo, handler); diff --git a/winsup/cygwin/include/cygwin/exit_process.h b/winsup/cygwin/include/cygwin/exit_process.h new file mode 100644 index 0000000000..0486a0c74a --- /dev/null +++ b/winsup/cygwin/include/cygwin/exit_process.h @@ -0,0 +1,364 @@ +#ifndef EXIT_PROCESS_H +#define EXIT_PROCESS_H + +/* + * This file contains functions to terminate a Win32 process, as gently as + * possible. + * + * If appropriate, we will attempt to emulate a console Ctrl event for the + * process. Otherwise we will fall back to terminating the process. + * + * As we do not want to export this function in the MSYS2 runtime, these + * functions are marked as file-local. + * + * The idea is to inject a thread into the given process that runs either + * kernel32!CtrlRoutine() (i.e. the work horse of GenerateConsoleCtrlEvent()) + * for SIGINT (Ctrl+C) and SIGQUIT (Ctrl+Break), or ExitProcess() for SIGTERM. + * This is handled through the console helpers. + * + * For SIGKILL, we run TerminateProcess() without injecting anything, and this + * is also the fall-back when the previous methods are unavailable. + * + * Note: as kernel32.dll is loaded before any process, the other process and + * this process will have ExitProcess() at the same address. The same holds + * true for kernel32!CtrlRoutine(), of course, but it is an internal API + * function, so we cannot look it up directly. Instead, we launch + * getprocaddr.exe to find out and inject the remote thread. + * + * This function expects the process handle to have the access rights for + * CreateRemoteThread(): PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, + * PROCESS_VM_OPERATION, PROCESS_VM_WRITE, and PROCESS_VM_READ. + * + * The idea for the injected remote thread comes from the Dr Dobb's article "A + * Safer Alternative to TerminateProcess()" by Andrew Tucker (July 1, 1999), + * http://www.drdobbs.com/a-safer-alternative-to-terminateprocess/184416547. + * + * The idea to use kernel32!CtrlRoutine for the other signals comes from + * SendSignal (https://github.com/AutoSQA/SendSignal/ and + * http://stanislavs.org/stopping-command-line-applications-programatically-with-ctrl-c-events-from-net/). + */ + +#include +#include + +#ifndef __INSIDE_CYGWIN__ +/* To help debugging via kill.exe */ +#define small_printf(...) fprintf (stderr, __VA_ARGS__) +#endif + +static BOOL get_wow (HANDLE process, BOOL &is_wow, USHORT &process_arch); +static int exit_process_tree (HANDLE main_process, int exit_code); + +static BOOL +kill_via_console_helper (HANDLE process, wchar_t *function_name, int exit_code, + DWORD pid) +{ + BOOL is_wow; + USHORT process_arch; + if (!get_wow (process, is_wow, process_arch)) + { + return FALSE; + } + + const char *name; + switch (process_arch) + { + case IMAGE_FILE_MACHINE_I386: + name = "/usr/libexec/getprocaddr32.exe"; + break; + case IMAGE_FILE_MACHINE_AMD64: + name = "/usr/libexec/getprocaddr64.exe"; + break; + /* TODO: provide exes for these */ + case IMAGE_FILE_MACHINE_ARMNT: + name = "/usr/libexec/getprocaddrarm32.exe"; + break; + case IMAGE_FILE_MACHINE_ARM64: + name = "/usr/libexec/getprocaddrarm64.exe"; + break; + default: + return FALSE; /* what?!? */ + } + wchar_t wbuf[PATH_MAX]; + + if (cygwin_conv_path (CCP_POSIX_TO_WIN_W, name, wbuf, PATH_MAX) + || GetFileAttributesW (wbuf) == INVALID_FILE_ATTRIBUTES) + return FALSE; + + STARTUPINFOW si = {}; + PROCESS_INFORMATION pi; + size_t len = wcslen (wbuf) + 1 /* space */ + wcslen (function_name) + + 1 /* space */ + 3 /* exit code */ + 1 /* space */ + + 10 /* process ID, i.e. DWORD */ + 1 /* NUL */; + WCHAR cmd[len + 1]; + WCHAR title[] = L"cygwin-console-helper"; + DWORD process_exit; + + swprintf (cmd, len + 1, L"%S %S %d %u", wbuf, function_name, exit_code, + pid); + + si.cb = sizeof (si); + si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; + si.wShowWindow = SW_HIDE; + si.lpTitle = title; + si.hStdInput = si.hStdError = si.hStdOutput = INVALID_HANDLE_VALUE; + + /* Create a new hidden process. */ + if (!CreateProcessW (NULL, cmd, NULL, NULL, TRUE, + CREATE_NO_WINDOW | CREATE_NEW_PROCESS_GROUP, NULL, NULL, + &si, &pi)) + { + return FALSE; + } + else + { + /* Wait for the process to complete for 10 seconds */ + WaitForSingleObject (pi.hProcess, 10000); + } + + if (!GetExitCodeProcess (pi.hProcess, &process_exit)) + process_exit = -1; + + CloseHandle (pi.hThread); + CloseHandle (pi.hProcess); + + return process_exit == 0 ? TRUE : FALSE; +} + +static int current_is_wow = -1; +static int is_32_bit_os = -1; + +typedef BOOL (WINAPI * IsWow64Process2_t) (HANDLE, USHORT *, USHORT *); +static bool wow64process2initialized = false; +static IsWow64Process2_t pIsWow64Process2 /* = NULL */; + +typedef BOOL (WINAPI * GetProcessInformation_t) (HANDLE, + PROCESS_INFORMATION_CLASS, + LPVOID, DWORD); +static bool getprocessinfoinitialized = false; +static GetProcessInformation_t pGetProcessInformation /* = NULL */; + +static BOOL +get_wow (HANDLE process, BOOL &is_wow, USHORT &process_arch) +{ + USHORT native_arch = IMAGE_FILE_MACHINE_UNKNOWN; + if (!wow64process2initialized) + { + pIsWow64Process2 = (IsWow64Process2_t) + GetProcAddress (GetModuleHandle ("KERNEL32"), + "IsWow64Process2"); + MemoryBarrier (); + wow64process2initialized = true; + } + if (!pIsWow64Process2) + { + if (is_32_bit_os == -1) + { + SYSTEM_INFO info; + + GetNativeSystemInfo (&info); + if (info.wProcessorArchitecture == 0) + is_32_bit_os = 1; + else if (info.wProcessorArchitecture == 9) + is_32_bit_os = 0; + else + is_32_bit_os = -2; + } + + if (current_is_wow == -1 + && !IsWow64Process (GetCurrentProcess (), ¤t_is_wow)) + current_is_wow = -2; + + if (is_32_bit_os == -2 || current_is_wow == -2) + return FALSE; + + if (!IsWow64Process (process, &is_wow)) + return FALSE; + + process_arch = is_32_bit_os || is_wow ? IMAGE_FILE_MACHINE_I386 : + IMAGE_FILE_MACHINE_AMD64; + return TRUE; + } + + if (!pIsWow64Process2 (process, &process_arch, &native_arch)) + return FALSE; + + /* The value will be IMAGE_FILE_MACHINE_UNKNOWN if the target process + * is not a WOW64 process + */ + if (process_arch == IMAGE_FILE_MACHINE_UNKNOWN) + { + struct /* _PROCESS_MACHINE_INFORMATION */ + { + /* 0x0000 */ USHORT ProcessMachine; + /* 0x0002 */ USHORT Res0; + /* 0x0004 */ DWORD MachineAttributes; + } /* size: 0x0008 */ process_machine_info; + + is_wow = FALSE; + /* However, x86_64 on ARM64 claims not to be WOW64, so we have to + * dig harder... */ + if (!getprocessinfoinitialized) + { + pGetProcessInformation = (GetProcessInformation_t) + GetProcAddress (GetModuleHandle ("KERNEL32"), + "GetProcessInformation"); + MemoryBarrier (); + getprocessinfoinitialized = true; + } + /*#define ProcessMachineTypeInfo 9*/ + if (pGetProcessInformation && + pGetProcessInformation (process, (PROCESS_INFORMATION_CLASS)9, + &process_machine_info, sizeof (process_machine_info))) + process_arch = process_machine_info.ProcessMachine; + else + process_arch = native_arch; + } + else + { + is_wow = TRUE; + } + return TRUE; +} + +/** + * Terminates the process corresponding to the process ID + * + * This way of terminating the processes is not gentle: the process gets + * no chance of cleaning up after itself (closing file handles, removing + * .lock files, terminating spawned processes (if any), etc). + */ +static int +exit_process (HANDLE process, int exit_code) +{ + LPTHREAD_START_ROUTINE address = NULL; + DWORD pid = GetProcessId (process), code; + int signo = exit_code & 0x7f; + switch (signo) + { + case SIGINT: + case SIGQUIT: + /* We are not going to kill them but simply say that Ctrl+C + is pressed. If the processes want they can exit or else + just wait.*/ + if (kill_via_console_helper ( + process, L"CtrlRoutine", + signo == SIGINT ? CTRL_C_EVENT : CTRL_BREAK_EVENT, pid)) + return 0; + /* fall-through */ + case SIGTERM: + if (kill_via_console_helper (process, L"ExitProcess", exit_code, pid)) + return 0; + break; + default: + break; + } + + return int (TerminateProcess (process, exit_code)); +} + +#include +#include + +/** + * Terminates the process corresponding to the process ID and all of its + * directly and indirectly spawned subprocesses using the + * TerminateProcess() function. + */ +static int +exit_process_tree (HANDLE main_process, int exit_code) +{ + HANDLE snapshot = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0); + PROCESSENTRY32 entry; + DWORD pids[16384]; + int max_len = sizeof (pids) / sizeof (*pids), i, len, ret = 0; + DWORD pid = GetProcessId (main_process); + int signo = exit_code & 0x7f; + + pids[0] = pid; + len = 1; + + /* + * Even if Process32First()/Process32Next() seem to traverse the + * processes in topological order (i.e. parent processes before + * child processes), there is nothing in the Win32 API documentation + * suggesting that this is guaranteed. + * + * Therefore, run through them at least twice and stop when no more + * process IDs were added to the list. + */ + for (;;) + { + memset (&entry, 0, sizeof (entry)); + entry.dwSize = sizeof (entry); + + if (!Process32First (snapshot, &entry)) + break; + + int orig_len = len; + do + { + /** + * Look for the parent process ID in the list of pids to kill, and if + * found, add it to the list. + */ + for (i = len - 1; i >= 0; i--) + { + if (pids[i] == entry.th32ProcessID) + break; + if (pids[i] != entry.th32ParentProcessID) + continue; + + /* We found a process to kill; is it an MSYS2 process? */ + pid_t cyg_pid = cygwin_winpid_to_pid (entry.th32ProcessID); + if (cyg_pid > -1) + { + if (cyg_pid == getpgid (cyg_pid)) + kill (cyg_pid, signo); + break; + } + pids[len++] = entry.th32ProcessID; + break; + } + } + while (len < max_len && Process32Next (snapshot, &entry)); + + if (orig_len == len || len >= max_len) + break; + } + + CloseHandle (snapshot); + + for (i = len - 1; i >= 0; i--) + { + HANDLE process; + + if (!i) + process = main_process; + else + { + process = OpenProcess ( + PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION + | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, + FALSE, pids[i]); + if (!process) + process = OpenProcess ( + PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE, + FALSE, pids[i]); + } + DWORD code; + + if (process + && (!GetExitCodeProcess (process, &code) || code == STILL_ACTIVE)) + { + if (!exit_process (process, exit_code)) + ret = -1; + } + if (process && process != main_process) + CloseHandle (process); + } + + return ret; +} + +#endif From b9d1fadafe592ced300e80ddfa1f6358a46ecdb5 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 20 Mar 2015 10:01:50 +0000 Subject: [PATCH 738/767] kill: kill Win32 processes more gently This change is the equivalent to the change to the Ctrl+C handling we just made. Co-authored-by: Naveen M K Signed-off-by: Johannes Schindelin --- winsup/utils/kill.cc | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/winsup/utils/kill.cc b/winsup/utils/kill.cc index fb45e4c9dc..28473d1ef8 100644 --- a/winsup/utils/kill.cc +++ b/winsup/utils/kill.cc @@ -17,6 +17,7 @@ details. */ #include #include #include +#include static char *prog_name; @@ -300,10 +301,20 @@ forcekill (pid_t pid, DWORD winpid, int sig, int wait) return; } if (!wait || WaitForSingleObject (h, 200) != WAIT_OBJECT_0) - if (sig && !TerminateProcess (h, sig << 8) - && WaitForSingleObject (h, 200) != WAIT_OBJECT_0) - fprintf (stderr, "%s: couldn't kill pid %u, %u\n", - prog_name, (unsigned int) dwpid, (unsigned int) GetLastError ()); + { + HANDLE cur = GetCurrentProcess (), h2; + /* duplicate handle with access rights required for exit_process_tree() */ + if (DuplicateHandle (cur, h, cur, &h2, PROCESS_CREATE_THREAD | + PROCESS_QUERY_INFORMATION | + PROCESS_VM_OPERATION | + PROCESS_VM_WRITE | PROCESS_VM_READ | + PROCESS_TERMINATE, FALSE, 0)) + { + CloseHandle(h); + h = h2; + } + exit_process_tree (h, 128 + sig); + } CloseHandle (h); } From 715f6ce8910a7ccfedb90a021ead592ec8e62be7 Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Thu, 22 Jul 2021 11:59:16 -0700 Subject: [PATCH 739/767] Cygwin: make option for native inner link handling. This code has been causing issues with SUBST and mapped network drives, so add an option (defaulted to on) which can be used to disable it where needed. MSYS=nonativeinnerlinks --- winsup/cygwin/environ.cc | 1 + winsup/cygwin/globals.cc | 1 + winsup/cygwin/path.cc | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index b9600ef9a8..06b1111f51 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -123,6 +123,7 @@ static struct parse_thing {"error_start", {func: error_start_init}, isfunc, NULL, {{0}, {0}}}, {"export", {&export_settings}, setbool, NULL, {{false}, {true}}}, {"glob", {func: glob_init}, isfunc, NULL, {{0}, {s: "normal"}}}, + {"nativeinnerlinks", {&nativeinnerlinks}, setbool, NULL, {{false}, {true}}}, {"pipe_byte", {&pipe_byte}, setbool, NULL, {{false}, {true}}}, {"proc_retry", {func: set_proc_retry}, isfunc, NULL, {{0}, {5}}}, {"reset_com", {&reset_com}, setbool, NULL, {{false}, {true}}}, diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index b3b77de405..ab2c205609 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -74,6 +74,7 @@ bool wincmdln = true; winsym_t allow_winsymlinks = WSYM_deepcopy; bool disable_pcon; bool winjitdebug = false; +bool nativeinnerlinks = true; /* Taken from BSD libc: This variable is zero until a process has created a pthread. It is used diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 39819dc694..b0c45fa55c 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3722,7 +3722,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, fs_info &fs, differ, return the final path as symlink content and set symlen to a negative value. This forces path_conv::check to restart symlink evaluation with the new path. */ - if ((pc_flags & (PC_SYM_FOLLOW | PC_SYM_NOFOLLOW_REP)) == PC_SYM_FOLLOW) + if (nativeinnerlinks + && (pc_flags & (PC_SYM_FOLLOW | PC_SYM_NOFOLLOW_REP)) == PC_SYM_FOLLOW) { PWCHAR fpbuf = tp.w_get (); DWORD ret; From abeeb31b2b49921b01d4ce7cfbac82dfa6c292bb Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Nov 2021 14:20:07 +0100 Subject: [PATCH 740/767] docs: skip building texinfo and PDF files The MSYS2 packages lack the infrastructure to build those. Signed-off-by: Johannes Schindelin --- winsup/configure.ac | 7 +++---- winsup/doc/Makefile.am | 9 +++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/winsup/configure.ac b/winsup/configure.ac index b9e3977fcf..b88f3ade29 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -84,11 +84,10 @@ AM_CONDITIONAL(BUILD_DOC, [test $enable_doc != "no"]) AC_CHECK_PROGS([DOCBOOK2XTEXI], [docbook2x-texi db2x_docbook2texi]) if test -z "$DOCBOOK2XTEXI" ; then if test "x$enable_doc" != "xno"; then - AC_MSG_ERROR([docbook2texi is required to build documentation]) - else - unset DOCBOOK2XTEXI - AM_MISSING_PROG([DOCBOOK2XTEXI], [docbook2texi]) + AC_MSG_WARN([docbook2texi is required to build documentation]) fi + unset DOCBOOK2XTEXI + AM_MISSING_PROG([DOCBOOK2XTEXI], [docbook2texi]) fi AC_CHECK_PROGS([XMLTO], [xmlto]) diff --git a/winsup/doc/Makefile.am b/winsup/doc/Makefile.am index 650e0c9247..55e9b95e78 100644 --- a/winsup/doc/Makefile.am +++ b/winsup/doc/Makefile.am @@ -10,9 +10,7 @@ man1_MANS = man3_MANS = man5_MANS = -doc_DATA = \ - cygwin-ug-net/cygwin-ug-net.pdf \ - cygwin-api/cygwin-api.pdf +doc_DATA = htmldir = $(datarootdir)/doc @@ -35,8 +33,7 @@ all-local: Makefile.dep \ cygwin-ug-net/cygwin-ug-net.html \ faq/faq.html faq/faq.body \ cygwin-ug-net/cygwin-ug-net-nochunks.html.gz \ - api2man.stamp intro2man.stamp utils2man.stamp \ - cygwin-api.info cygwin-ug-net.info + api2man.stamp intro2man.stamp utils2man.stamp clean-local: rm -f Makefile.dep @@ -76,7 +73,7 @@ install-etc: @$(MKDIR_P) $(DESTDIR)$(sysconfdir)/preremove $(INSTALL_SCRIPT) $(srcdir)/etc.preremove.cygwin-doc.sh $(DESTDIR)$(sysconfdir)/preremove/cygwin-doc.sh -install-data-hook: install-extra-man install-html-local install-info-local install-etc +install-data-hook: install-extra-man install-html-local install-etc uninstall-extra-man: for i in *.1 ; do \ From fbe8ae30a3ea6af5541cf9f412f601bca963aa6f Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 8 Nov 2021 16:22:57 +0100 Subject: [PATCH 741/767] install-libs: depend on the "toollibs" Before symlinking libg.a, we need the symlink source `libmsys-2.0.a`: in MSYS2, we copy by default (if we were creating Unix-style symlinks, the target would not have to exist before symlinking, but when copying we do need the source _right away_). Signed-off-by: Johannes Schindelin --- winsup/cygwin/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index b1b0df708e..1064b416b7 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -699,7 +699,7 @@ man_MANS = regex/regex.3 regex/regex.7 install-exec-hook: install-libs install-data-local: install-headers install-ldif -install-libs: +install-libs: install-toollibDATA @$(MKDIR_P) $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) $(NEW_DLL_NAME) $(DESTDIR)$(bindir)/$(DLL_NAME) @$(MKDIR_P) $(DESTDIR)$(toollibdir) From 38abc7cfff7f580c7563b90dc799ae28e6338bf5 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 23 Nov 2015 20:03:11 +0100 Subject: [PATCH 742/767] POSIX-ify the SHELL variable When calling a non-MSys2 binary, all of the environment is converted from POSIX to Win32, including the SHELL environment variable. In Git for Windows, for example, `SHELL=/usr/bin/bash` is converted to `SHELL=C:\Program Files\Git\usr\bin\bash.exe` when calling the `git.exe` binary. This is appropriate because non-MSys2 binaries would not handle POSIX paths correctly. Under certain circumstances, however, `git.exe` calls an *MSys2* binary in turn, such as `git config --edit` calling `vim.exe` unless Git is configured to use another editor specifically. Now, when this "improved vi" calls shell commands, it uses that $SHELL variable *without quoting*, resulting in a nasty error: C:\Program: No such file or directory Many other programs behave in the same manner, assuming that $SHELL does not contain spaces and hence needs no quoting, unfortunately including some of Git's own scripts. Therefore let's make sure that $SHELL gets "posified" again when entering MSys2 programs. Earlier attempts by Git for Windows contributors claimed that adding `SHELL` to the `conv_envvars` array does not have the intended effect. These reports just missed that the `conv_start_chars` array (which makes the code more performant) needs to be adjusted, too. Note that we set the `immediate` flag to `true` so that the environment variable is set immediately by the MSys2 runtime, i.e. not only spawned processes will see the POSIX-ified `SHELL` variable, but the MSys2 runtime *itself*, too. This fixes https://github.com/git-for-windows/git/issues/542, https://github.com/git-for-windows/git/issues/498, and https://github.com/git-for-windows/git/issues/468. Signed-off-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 8 +++++++- winsup/cygwin/local_includes/environ.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 06b1111f51..e21c8fddb9 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -323,6 +323,7 @@ static win_env conv_envvars[] = {NL ("HOME="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, {NL ("LD_LIBRARY_PATH="), NULL, NULL, env_plist_to_posix, env_plist_to_win32, true}, + {NL ("SHELL="), NULL, NULL, env_path_to_posix, env_path_to_win32, true, true}, {NL ("TMPDIR="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, {NL ("TMP="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, {NL ("TEMP="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, @@ -351,7 +352,7 @@ static const unsigned char conv_start_chars[256] = WC, 0, 0, 0, WC, 0, 0, 0, /* 80 */ /* P Q R S T U V W */ - WC, 0, 0, 0, WC, 0, 0, 0, + WC, 0, 0, WC, WC, 0, 0, 0, /* 88 */ /* x Y Z */ 0, 0, 0, 0, 0, 0, 0, 0, @@ -380,6 +381,7 @@ win_env::operator = (struct win_env& x) toposix = x.toposix; towin32 = x.towin32; immediate = false; + skip_if_empty = x.skip_if_empty; return *this; } @@ -401,6 +403,8 @@ win_env::add_cache (const char *in_posix, const char *in_native) native = (char *) realloc (native, namelen + 1 + strlen (in_native)); stpcpy (stpcpy (native, name), in_native); } + else if (skip_if_empty && !*in_posix) + native = (char *) calloc(1, 1); else { tmp_pathbuf tp; @@ -466,6 +470,8 @@ posify_maybe (char **here, const char *value, char *outenv) return; int len = strcspn (src, "=") + 1; + if (conv->skip_if_empty && !src[len]) + return; /* Turn all the items from c:; into their mounted equivalents - if there is one. */ diff --git a/winsup/cygwin/local_includes/environ.h b/winsup/cygwin/local_includes/environ.h index 0dd45359cc..fd6ca466e8 100644 --- a/winsup/cygwin/local_includes/environ.h +++ b/winsup/cygwin/local_includes/environ.h @@ -21,7 +21,7 @@ struct win_env char *native; ssize_t (*toposix) (const void *, void *, size_t); ssize_t (*towin32) (const void *, void *, size_t); - bool immediate; + bool immediate, skip_if_empty; void add_cache (const char *in_posix, const char *in_native = NULL); const char * get_native () const {return native ? native + namelen : NULL;} const char * get_posix () const {return posix ? posix : NULL;} From 9c758e8f9cb30d58e5499eed5154a4266d335be1 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 21 Mar 2017 13:18:38 +0100 Subject: [PATCH 743/767] Handle ORIGINAL_PATH just like PATH MSYS2 recently introduced that hack where the ORIGINAL_PATH variable is set to the original PATH value in /etc/profile, unless previously set. In Git for Windows' default mode, that ORIGINAL_PATH value is the used to define the PATH variable explicitly. So far so good. The problem: when calling from inside an MSYS2 process (such as Bash) a MINGW executable (such as git.exe) that then calls another MSYS2 executable (such as bash.exe), that latter call will try to re-convert ORIGINAL_PATH after the previous call converted ORIGINAL_PATH from POSIX to Windows paths. And this conversion may very well fail, e.g. when the path list contains mixed semicolons and colons. So let's just *force* the MSYS2 runtime to handle ORIGINAL_PATH in the same way as the PATH variable (which conversion works, as we know). Signed-off-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index e21c8fddb9..031db039ea 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -323,6 +323,7 @@ static win_env conv_envvars[] = {NL ("HOME="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, {NL ("LD_LIBRARY_PATH="), NULL, NULL, env_plist_to_posix, env_plist_to_win32, true}, + {NL ("ORIGINAL_PATH="), NULL, NULL, env_PATH_to_posix, env_plist_to_win32, true}, {NL ("SHELL="), NULL, NULL, env_path_to_posix, env_path_to_win32, true, true}, {NL ("TMPDIR="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, {NL ("TMP="), NULL, NULL, env_path_to_posix, env_path_to_win32, false}, @@ -349,7 +350,7 @@ static const unsigned char conv_start_chars[256] = 0, 0, 0, 0, 0, 0, 0, 0, /* 72 */ /* H I J K L M N O */ - WC, 0, 0, 0, WC, 0, 0, 0, + WC, 0, 0, 0, WC, 0, 0, WC, /* 80 */ /* P Q R S T U V W */ WC, 0, 0, WC, WC, 0, 0, 0, From 312f7660cc8f4690f30327994212ec890df09e28 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 3 Jul 2022 22:39:32 +0200 Subject: [PATCH 744/767] uname: allow setting the system name to CYGWIN We are currently trying to move our cygwin build environment closer to cygwin and some autotools/bash based build systems call "uname -s" to figure out the OS and in many cases only handle the cygwin case, so we have to patch them. With this instead of patching we can set MSYSTEM=CYGWIN and change uname output that way. The next step would be to always output CYGWIN in an msys env by default, but for now this allows us to get rid of all the patches without affecting users. --- winsup/cygwin/uname.cc | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc index 0d0c5aa52a..a4ac0e304d 100644 --- a/winsup/cygwin/uname.cc +++ b/winsup/cygwin/uname.cc @@ -24,6 +24,24 @@ extern "C" int getdomainname (char *__name, size_t __len); #define ATTRIBUTE_NONSTRING #endif +static const char* +get_sysname() +{ +#ifdef __MSYS__ + char* msystem = getenv("MSYSTEM"); + if (!msystem || strcmp(msystem, "MSYS") == 0) + return "MSYS"; + else if (strcmp(msystem, "CYGWIN") == 0) + return "CYGWIN"; + else if (strstr(msystem, "32") != NULL) + return "MINGW32"; + else + return "MINGW64"; +#else + return "CYGWIN"; +#endif +} + /* uname: POSIX 4.4.1.1 */ /* New entrypoint for applications since API 335 */ @@ -36,12 +54,9 @@ uname_x (struct utsname *name) memset (name, 0, sizeof (*name)); /* sysname */ - char* msystem = getenv("MSYSTEM"); - const char* msystem_sysname = "MSYS"; - if (msystem != NULL && *msystem && strcmp(msystem, "MSYS") != 0) - msystem_sysname = (strstr(msystem, "32") != NULL) ? "MINGW32" : "MINGW64";; + const char* sysname = get_sysname(); __small_sprintf (name->sysname, "%s_%s-%u", - msystem_sysname, + sysname, wincap.osname (), wincap.build_number ()); /* nodename */ memset (buf, 0, sizeof buf); @@ -107,15 +122,8 @@ uname (struct utsname *in_name) __try { memset (name, 0, sizeof (*name)); -#ifdef __MSYS__ - char* msystem = getenv("MSYSTEM"); - const char* msystem_sysname = "MSYS"; - if (msystem != NULL && *msystem && strcmp(msystem, "MSYS") != 0) - msystem_sysname = (strstr(msystem, "32") != NULL) ? "MINGW32" : "MINGW64"; - __small_sprintf (name->sysname, "%s_%s", msystem_sysname, wincap.osname ()); -#else - __small_sprintf (name->sysname, "CYGWIN_%s", wincap.osname ()); -#endif + const char* sysname = get_sysname(); + __small_sprintf (name->sysname, "%s_%s", sysname, wincap.osname ()); /* Computer name */ cygwin_gethostname (name->nodename, sizeof (name->nodename) - 1); From e19af2018e02eb7365c931d63748b2bad021855e Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Wed, 18 Feb 2015 12:32:17 +0000 Subject: [PATCH 745/767] Pass environment variables with empty values There is a difference between an empty value and an unset environment variable. We should not confuse both; If the user wants to unset an environment variable, they can certainly do so (unsetenv(3), or in the shell: 'unset ABC'). This fixes Git's t3301-notes.sh, which overrides environment variables with empty values. Signed-off-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 031db039ea..6b385cd03d 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -1326,11 +1326,11 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, Note that this doesn't stop invalid strings without '=' in it etc., but we're opting for speed here for now. Adding complete checking would be pretty expensive. */ - if (len == 1 || !*rest) + if (len == 1) continue; /* See if this entry requires posix->win32 conversion. */ - conv = getwinenv (*srcp, rest, &temp); + conv = !*rest ? NULL : getwinenv (*srcp, rest, &temp); if (conv) { p = conv->native; /* Use win32 path */ @@ -1344,7 +1344,7 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, } } #ifdef __MSYS__ - else if (!keep_posix) { + else if (!keep_posix && *rest) { char *win_arg = arg_heuristic_with_exclusions (*srcp, msys2_env_conv_excl_env, msys2_env_conv_excl_count); debug_printf("WIN32_PATH is %s", win_arg); From 4deb751587f85296e3b0a06f89860ad2e18b8c29 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 6 Sep 2022 10:40:58 +0200 Subject: [PATCH 746/767] Optionally disallow empty environment values again We just disabled the code that skips environment variables whose values are empty. However, this code was introduced a long time ago into Cygwin in d6b1ac7faa (* environ.cc (build_env): Don't put an empty environment variable into the environment. Optimize use of "len". * errno.cc (ERROR_MORE_DATA): Translate to EMSGSIZE rather than EAGAIN., 2006-09-07), seemingly without any complaints. Meaning: There might very well be use cases out there where it makes sense to skip empty-valued environment variables. Therefore, it seems like a good idea to have a "knob" to turn it back on. With this commit, we introduce such a knob: by setting `noemptyenvvalues` the `MSYS` variable (or appending it if that variable is already set), users can tell the MSYS2 runtime to behave just like in the olden times. Signed-off-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 6b385cd03d..12b4d57563 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -36,6 +36,7 @@ static char **lastenviron; /* Parse CYGWIN options */ static NO_COPY bool export_settings = false; +static bool emptyenvvalues = true; enum settings { @@ -119,6 +120,7 @@ static struct parse_thing } known[] NO_COPY = { {"disable_pcon", {&disable_pcon}, setbool, NULL, {{false}, {true}}}, + {"emptyenvvalues", {&emptyenvvalues}, setbool, NULL, {{false}, {true}}}, {"enable_pcon", {&disable_pcon}, setnegbool, NULL, {{true}, {false}}}, {"error_start", {func: error_start_init}, isfunc, NULL, {{0}, {0}}}, {"export", {&export_settings}, setbool, NULL, {{false}, {true}}}, @@ -1326,7 +1328,7 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, Note that this doesn't stop invalid strings without '=' in it etc., but we're opting for speed here for now. Adding complete checking would be pretty expensive. */ - if (len == 1) + if (len == 1 || (!emptyenvvalues && !*rest)) continue; /* See if this entry requires posix->win32 conversion. */ From a1f282d18d19df8a864df70b9d05bc4b9d18ce1c Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 6 Sep 2022 12:18:18 +0200 Subject: [PATCH 747/767] build_env(): respect the `MSYS` environment variable With this commit, you can call MSYS=noemptyenvvalues my-command and it does what is expected: to pass no empty-valued environment variables to `my-command`. Signed-off-by: Johannes Schindelin --- winsup/cygwin/environ.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 12b4d57563..4e049211e9 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -1204,7 +1204,11 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, { bool calc_tl = !no_envblock; #ifdef __MSYS__ - if (!keep_posix) + if (ascii_strncasematch(*srcp, "MSYS=", 5)) + { + parse_options (*srcp + 5); + } + else if (!keep_posix) { /* Don't pass timezone environment to non-msys applications */ if (ascii_strncasematch(*srcp, "TZ=", 3)) From d1b382b8d646c8f8cae10ebeb87d6b593df586fd Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sat, 17 Dec 2022 20:14:49 +0100 Subject: [PATCH 748/767] Revert "Cygwin: Enable dynamicbase on the Cygwin DLL by default" This reverts commit 943433b00cacdde0cb9507d0178770a2fb67bd71. This seems to fix fork errors under Docker, see https://cygwin.com/pipermail/cygwin/2022-December/252711.html --- winsup/cygwin/Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 1064b416b7..76b54eba4f 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -600,8 +600,7 @@ $(NEW_DLL_NAME): $(LDSCRIPT) libdll.a $(VERSION_OFILES) $(LIBSERVER)\ $(newlib_build)/libm.a $(newlib_build)/libc.a $(AM_V_CXXLD)$(CXX) $(CXXFLAGS) \ -mno-use-libstdc-wrappers \ - -Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) \ - -Wl,--dynamicbase -static \ + -Wl,--gc-sections -nostdlib -Wl,-T$(LDSCRIPT) -static \ $${SOURCE_DATE_EPOCH:+-Wl,--no-insert-timestamp} \ -Wl,--heap=0 -Wl,--out-implib,msysdll.a -shared -o $@ \ -e @DLL_ENTRY@ $(DEF_FILE) \ From 997f6f3ea07737f2d14411866f21119970fa18f9 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Fri, 17 May 2024 19:37:45 +0200 Subject: [PATCH 749/767] CI: set -Wno-error=maybe-uninitialized After the update of msys2-w32api from v11.0.1 to current master (and soon to be v12) we get: winsup/cygwin/exceptions.cc:1736:33: error: '' may be used uninitialized [-Werror=maybe-uninitialized] Ignore it like the rest. Fixes #214 --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e8307b325d..e7024093a8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -22,7 +22,7 @@ jobs: run: | # XXX: cygwin still uses gcc v11 so we get new warnings with v13, # resulting in errors due to -Werror. Disable them for now. - export CXXFLAGS="-Wno-error=stringop-truncation -Wno-error=array-bounds -Wno-error=overloaded-virtual -Wno-narrowing -Wno-use-after-free" + export CXXFLAGS="-Wno-error=stringop-truncation -Wno-error=array-bounds -Wno-error=overloaded-virtual -Wno-narrowing -Wno-use-after-free -Wno-error=maybe-uninitialized" (cd winsup && ./autogen.sh) ./configure --disable-dependency-tracking make -j8 From e347515e99ad03ef377bd9c255ec1dd4037fbb54 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 30 Jan 2023 23:22:22 +0100 Subject: [PATCH 750/767] Avoid sharing cygheaps across Cygwin versions It frequently leads to problems when trying, say, to call from MSYS2's Bash into Cygwin's or Git for Windows', merely because sharing that data is pretty finicky. For example, using the MSYS2' Bash using the MSYS2 runtime version that is current at time of writing, trying to call Cygwin's programs fails in manners like this: $ /c/cygwin64/bin/uname -r 0 [main] uname (9540) child_copy: cygheap read copy failed, 0x800000000..0x800010BE0, done 0, windows pid 9540, Win32 error 6 680 [main] uname 880 C:\cygwin64\bin\uname.exe: *** fatal error - couldn't create signal pipe, Win32 error 5 with the rather misleading exit code 127 (a code which is reserved to indicate that a command was not found). Let's just treat the MSYS2 runtime and the Cygwin runtime as completely incompatible with one another, by virtue of using a different magic constant than merely `CHILD_INFO_MAGIC`. By using the msys2-runtime commit to modify that magic constant, we can even spawn programs using a different MSYS2 runtime (such as Git for Windows') because the commit serves as the tell-tale whether two MSYS2 runtime versions are compatible with each other. To support building in the MSYS2-packages repository (where we do not check out the `msys2-runtime` but instead check out Cygwin and apply patches on top), let's accept a hard-coded commit hash as `./configure` option. One consequence is that spawned MSYS processes using a different MSYS2 runtime will not be visible as such to the parent process, i.e. they cannot share any resources such as pseudo terminals. But that's okay, they are simply treated as if they were regular Win32 programs. Note: We have to use a very rare form of encoding the brackets in the `expr` calls: quadrigraphs (for a thorough explanation, see https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.70/html_node/Quadrigraphs.html#Quadrigraphs). This is necessary because it is apparently impossible to encode brackets in `configure.ac` files otherwise. Signed-off-by: Johannes Schindelin --- winsup/configure.ac | 28 ++++++++++++++++++++++++++++ winsup/cygwin/Makefile.am | 3 +++ winsup/cygwin/dcrt0.cc | 2 +- winsup/cygwin/sigproc.cc | 2 +- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/winsup/configure.ac b/winsup/configure.ac index b88f3ade29..eb9890acec 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -57,6 +57,34 @@ AC_CHECK_TOOL(RANLIB, ranlib, ranlib) AC_CHECK_TOOL(STRIP, strip, strip) AC_CHECK_TOOL(WINDRES, windres, windres) +# Record msys2-runtime commit +AC_ARG_WITH([msys2-runtime-commit], + [AS_HELP_STRING([--with-msys2-runtime-commit=COMMIT], + [indicate the msys2-runtime commit corresponding to this build])], + [MSYS2_RUNTIME_COMMIT=$withval], [MSYS2_RUNTIME_COMMIT=yes]) +case "$MSYS2_RUNTIME_COMMIT" in +no) + MSYS2_RUNTIME_COMMIT= + MSYS2_RUNTIME_COMMIT_HEX=0 + ;; +yes|auto) + if MSYS2_RUNTIME_COMMIT="$(git --git-dir="$srcdir/../.git" rev-parse HEAD)" + then + MSYS2_RUNTIME_COMMIT_HEX="0x$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')ull" + else + AC_MSG_WARN([Could not determine msys2-runtime commit"]) + MSYS2_RUNTIME_COMMIT= + MSYS2_RUNTIME_COMMIT_HEX=0 + fi + ;; +*) + expr "$MSYS2_RUNTIME_COMMIT" : '@<:@0-9a-f@:>@\{6,64\}$' || + AC_MSG_ERROR([Invalid commit name: "$MSYS2_RUNTIME_COMMIT"]) + MSYS2_RUNTIME_COMMIT_HEX="0x$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')ull" + ;; +esac +AC_SUBST(MSYS2_RUNTIME_COMMIT_HEX) + AC_ARG_ENABLE(debugging, [AS_HELP_STRING([--enable-debugging],[Build a cygwin DLL which has more consistency checking for debugging])], [case "${enableval}" in diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 76b54eba4f..774e562f51 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -17,6 +17,9 @@ if TARGET_X86_64 COMMON_CFLAGS+=-mcmodel=small endif +VERSION_CFLAGS = -DMSYS2_RUNTIME_COMMIT_HEX="@MSYS2_RUNTIME_COMMIT_HEX@" +COMMON_CFLAGS += $(VERSION_CFLAGS) + AM_CFLAGS=$(cflags_common) $(COMMON_CFLAGS) AM_CXXFLAGS=$(cxxflags_common) $(COMMON_CFLAGS) -fno-threadsafe-statics diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 0a5c817b3c..351d32d8e3 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -531,7 +531,7 @@ get_cygwin_startup_info () child_info *res = (child_info *) si.lpReserved2; if (si.cbReserved2 < EXEC_MAGIC_SIZE || !res - || res->intro != PROC_MAGIC_GENERIC || res->magic != CHILD_INFO_MAGIC) + || res->intro != PROC_MAGIC_GENERIC || res->magic != (CHILD_INFO_MAGIC ^ MSYS2_RUNTIME_COMMIT_HEX)) { strace.activate (false); res = NULL; diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 99fa3c3425..a89f09d087 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -811,7 +811,7 @@ int child_info::retry_count = 0; child_info::child_info (unsigned in_cb, child_info_types chtype, bool need_subproc_ready): msv_count (0), cb (in_cb), intro (PROC_MAGIC_GENERIC), - magic (CHILD_INFO_MAGIC), type (chtype), cygheap (::cygheap), + magic (CHILD_INFO_MAGIC ^ MSYS2_RUNTIME_COMMIT_HEX), type (chtype), cygheap (::cygheap), cygheap_max (::cygheap_max), flag (0), retry (child_info::retry_count), rd_proc_pipe (NULL), wr_proc_pipe (NULL), sigmask (_my_tls.sigmask) { From dd9d970a97430c3b2e287598e07dd06dd3a70ff0 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 21 Feb 2023 16:36:36 +0100 Subject: [PATCH 751/767] uname: report msys2-runtime commit hash, too Having just Cygwin's version in the output of `uname` is not helpful, as both MSYS2 as well as Git for Windows release intermediate versions of the MSYS2 runtime much more often than Cygwin runtime versions are released. Signed-off-by: Johannes Schindelin --- winsup/configure.ac | 10 ++++++++-- winsup/cygwin/Makefile.am | 6 ++++-- winsup/cygwin/scripts/mkvers.sh | 8 ++++++++ winsup/cygwin/uname.cc | 16 +++++++++------- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/winsup/configure.ac b/winsup/configure.ac index eb9890acec..0fc607aad5 100644 --- a/winsup/configure.ac +++ b/winsup/configure.ac @@ -65,24 +65,30 @@ AC_ARG_WITH([msys2-runtime-commit], case "$MSYS2_RUNTIME_COMMIT" in no) MSYS2_RUNTIME_COMMIT= + MSYS2_RUNTIME_COMMIT_SHORT= MSYS2_RUNTIME_COMMIT_HEX=0 ;; yes|auto) if MSYS2_RUNTIME_COMMIT="$(git --git-dir="$srcdir/../.git" rev-parse HEAD)" then - MSYS2_RUNTIME_COMMIT_HEX="0x$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')ull" + MSYS2_RUNTIME_COMMIT_SHORT="$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')" + MSYS2_RUNTIME_COMMIT_HEX="0x${MSYS2_RUNTIME_COMMIT_SHORT}ul" else AC_MSG_WARN([Could not determine msys2-runtime commit"]) MSYS2_RUNTIME_COMMIT= + MSYS2_RUNTIME_COMMIT_SHORT= MSYS2_RUNTIME_COMMIT_HEX=0 fi ;; *) expr "$MSYS2_RUNTIME_COMMIT" : '@<:@0-9a-f@:>@\{6,64\}$' || AC_MSG_ERROR([Invalid commit name: "$MSYS2_RUNTIME_COMMIT"]) - MSYS2_RUNTIME_COMMIT_HEX="0x$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')ull" + MSYS2_RUNTIME_COMMIT_SHORT="$(expr "$MSYS2_RUNTIME_COMMIT" : '\(.\{,8\}\)')" + MSYS2_RUNTIME_COMMIT_HEX="0x${MSYS2_RUNTIME_COMMIT_SHORT}ul" ;; esac +AC_SUBST(MSYS2_RUNTIME_COMMIT) +AC_SUBST(MSYS2_RUNTIME_COMMIT_SHORT) AC_SUBST(MSYS2_RUNTIME_COMMIT_HEX) AC_ARG_ENABLE(debugging, diff --git a/winsup/cygwin/Makefile.am b/winsup/cygwin/Makefile.am index 774e562f51..abcb32360d 100644 --- a/winsup/cygwin/Makefile.am +++ b/winsup/cygwin/Makefile.am @@ -17,7 +17,9 @@ if TARGET_X86_64 COMMON_CFLAGS+=-mcmodel=small endif -VERSION_CFLAGS = -DMSYS2_RUNTIME_COMMIT_HEX="@MSYS2_RUNTIME_COMMIT_HEX@" +VERSION_CFLAGS = -DMSYS2_RUNTIME_COMMIT="\"@MSYS2_RUNTIME_COMMIT@\"" +VERSION_CFLAGS += -DMSYS2_RUNTIME_COMMIT_SHORT="\"@MSYS2_RUNTIME_COMMIT_SHORT@\"" +VERSION_CFLAGS += -DMSYS2_RUNTIME_COMMIT_HEX="@MSYS2_RUNTIME_COMMIT_HEX@" COMMON_CFLAGS += $(VERSION_CFLAGS) AM_CFLAGS=$(cflags_common) $(COMMON_CFLAGS) @@ -452,7 +454,7 @@ uname_version.c: .FORCE version.cc: scripts/mkvers.sh include/cygwin/version.h winver.rc $(src_files) @echo "Making version.cc and winver.o";\ export CC="$(CC)";\ - /bin/sh $(word 1,$^) $(word 2,$^) $(word 3,$^) $(WINDRES) $(CFLAGS) + /bin/sh $(word 1,$^) $(word 2,$^) $(word 3,$^) $(WINDRES) $(CFLAGS) $(VERSION_CFLAGS) winver.o: version.cc diff --git a/winsup/cygwin/scripts/mkvers.sh b/winsup/cygwin/scripts/mkvers.sh index a3d45c5db0..34d8d6dce1 100755 --- a/winsup/cygwin/scripts/mkvers.sh +++ b/winsup/cygwin/scripts/mkvers.sh @@ -16,6 +16,7 @@ incfile="$1"; shift rcfile="$1"; shift windres="$1"; shift iflags= +msys2_runtime_commit= # Find header file locations while [ -n "$*" ]; do case "$1" in @@ -26,6 +27,9 @@ while [ -n "$*" ]; do shift iflags="$iflags -I$1" ;; + -DMSYS2_RUNTIME_COMMIT=*) + msys2_runtime_commit="${1#*=}" + ;; esac shift done @@ -168,6 +172,10 @@ then cvs_tag="$(echo $wv_cvs_tag | sed -e 's/-branch.*//')" cygwin_ver="$cygwin_ver-$cvs_tag" fi +if [ -n "$msys2_runtime_commit" ] +then + cygwin_ver="$cygwin_ver-$msys2_runtime_commit" +fi echo "Version $cygwin_ver" set -$- $builddate diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc index a4ac0e304d..a978363f1c 100644 --- a/winsup/cygwin/uname.cc +++ b/winsup/cygwin/uname.cc @@ -76,18 +76,19 @@ uname_x (struct utsname *name) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-truncation=" #ifdef CYGPORT_RELEASE_INFO - snprintf (name->release, _UTSNAME_LENGTH, "%s.%s", - __XSTRING (CYGPORT_RELEASE_INFO), name->machine); + snprintf (name->release, _UTSNAME_LENGTH, "%s-%s.%s", + __XSTRING (CYGPORT_RELEASE_INFO), MSYS2_RUNTIME_COMMIT_SHORT, name->machine); #else extern const char *uname_dev_version; if (uname_dev_version && uname_dev_version[0]) - snprintf (name->release, _UTSNAME_LENGTH, "%s.%s", - uname_dev_version, name->machine); + snprintf (name->release, _UTSNAME_LENGTH, "%s-%s.%s", + uname_dev_version, MSYS2_RUNTIME_COMMIT_SHORT, name->machine); else - __small_sprintf (name->release, "%d.%d.%d-api-%d.%s", + __small_sprintf (name->release, "%d.%d.%d-%s-api-%d.%s", cygwin_version.dll_major / 1000, cygwin_version.dll_major % 1000, cygwin_version.dll_minor, + MSYS2_RUNTIME_COMMIT_SHORT, cygwin_version.api_minor, name->machine); #endif @@ -129,14 +130,15 @@ uname (struct utsname *in_name) cygwin_gethostname (name->nodename, sizeof (name->nodename) - 1); /* Cygwin dll release */ - __small_sprintf (name->release, "%d.%d.%d(%d.%d/%d/%d)", + __small_sprintf (name->release, "%d.%d.%d(%d.%d/%d/%d/%s)", cygwin_version.dll_major / 1000, cygwin_version.dll_major % 1000, cygwin_version.dll_minor, cygwin_version.api_major, cygwin_version.api_minor, cygwin_version.shared_data, - cygwin_version.mount_registry); + cygwin_version.mount_registry, + MSYS2_RUNTIME_COMMIT_SHORT); /* Cygwin "version" aka build date */ strcpy (name->version, cygwin_version.dll_build_date); From 2bfb7739dadf6a27f9b4c006adfd69944f3df2f1 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 1 Sep 2024 04:31:03 +0900 Subject: [PATCH 752/767] Cygwin: pipe: Fix a regression that raw_write() slows down After the commit 7f3c22532577, writing to pipe extremely slows down. This is because cygwait(select_sem, 10, cw_cancel) is called even when write operation is already completed. With this patch, the cygwait() is called only if the write operation is not completed. Backported-from: 37ab3e0d55 (Cygwin: pipe: Fix a regression that raw_write() slows down, 2024-09-01) Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256398.html Fixes: 7f3c22532577 ("Cygwin: pipe: handle signals explicitely in raw_write") Reported-by: Jim Reisert AD1C Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano Signed-off-by: Johannes Schindelin --- winsup/cygwin/fhandler/pipe.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 5d2fe125a3..040176ea48 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -503,8 +503,9 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) raise (SIGPIPE); goto out; } - else - cygwait (select_sem, 10, cw_cancel); + /* Break out on completion */ + if (waitret == WAIT_OBJECT_0) + break; /* If we got a timeout in the blocking case, and we already did a short write, we got a signal in the previous loop. */ if (waitret == WAIT_TIMEOUT && short_write_once) @@ -512,6 +513,7 @@ fhandler_pipe_fifo::raw_write (const void *ptr, size_t len) waitret = WAIT_SIGNALED; break; } + cygwait (select_sem, 10, cw_cancel); } /* Loop in case of blocking write or SA_RESTART */ while (waitret == WAIT_TIMEOUT || waitret == WAIT_SIGNALED); From c325a46f442129edc526959f20d4638c2aad8781 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 30 Aug 2024 11:05:19 +0200 Subject: [PATCH 753/767] fixup!!! CI: add a GHA for doing a basic build test This updates a GitHub Action's version to stay up to date. Signed-off-by: Johannes Schindelin --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e7024093a8..a38d5c3f9e 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -33,7 +33,7 @@ jobs: make DESTDIR="$(pwd)"/_dest install - name: Upload - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: install path: _dest/ From 3cf583c2418a3a7d80052d32e2579ab6fd586bf2 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 20 Feb 2015 13:56:22 +0000 Subject: [PATCH 754/767] Handle 8-bit characters under LOCALE=C Even when the character set is specified as ASCII, we should handle data outside the 7-bit range gracefully by simply copying it, even if it is technically no longer ASCII. This fixes several of Git for Windows' tests, e.g. t7400. Signed-off-by: Johannes Schindelin --- winsup/cygwin/strfuncs.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc index 66667bdb3a..54b9ba7aea 100644 --- a/winsup/cygwin/strfuncs.cc +++ b/winsup/cygwin/strfuncs.cc @@ -1146,7 +1146,11 @@ _sys_mbstowcs (mbtowc_p f_mbtowc, wchar_t *dst, size_t dlen, const char *src, to store them in a symmetric way. */ bytes = 1; if (dst) +#ifdef STRICTLY_7BIT_ASCII *ptr = L'\xf000' | *pmbs; +#else + *ptr = *pmbs; +#endif memset (&ps, 0, sizeof ps); } From 23958eba866a8ac1d272137caa6ce62eae0f018f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Feb 2024 07:37:45 +0000 Subject: [PATCH 755/767] Bump actions/checkout from 2 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yaml | 2 +- .github/workflows/cygwin.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a38d5c3f9e..57ee6639f5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -8,7 +8,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: setup-msys2 uses: msys2/setup-msys2@v2 diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml index 5ae4ef9d59..e780428035 100644 --- a/.github/workflows/cygwin.yml +++ b/.github/workflows/cygwin.yml @@ -18,7 +18,7 @@ jobs: HAS_SSH_KEY: ${{ secrets.SSH_KEY != '' }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # install build tools - name: Install build tools @@ -99,7 +99,7 @@ jobs: # endings, but this could still be dangerous e.g if we need symlinks in the # repo) - run: git config --global core.autocrlf input - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # install cygwin and build tools - name: Install Cygwin From 51d19bba89795d970210f9fc8bc0a66db51b0415 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 20 Feb 2015 11:54:47 +0000 Subject: [PATCH 756/767] Mention the extremely useful small_printf() function It came in real handy while debugging an issue that strace 'fixed'. Signed-off-by: Johannes Schindelin --- winsup/cygwin/DevDocs/how-to-debug-cygwin.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/winsup/cygwin/DevDocs/how-to-debug-cygwin.txt b/winsup/cygwin/DevDocs/how-to-debug-cygwin.txt index 61e91c88d5..953d375864 100644 --- a/winsup/cygwin/DevDocs/how-to-debug-cygwin.txt +++ b/winsup/cygwin/DevDocs/how-to-debug-cygwin.txt @@ -126,3 +126,9 @@ set CYGWIN_DEBUG=cat.exe:gdb.exe program will crash, probably in small_printf. At that point, a 'bt' command should show you the offending call to strace_printf with the improper format string. + +9. Debug output without strace + + If you cannot use gdb, or if the program behaves differently using strace + for whatever reason, you can still use the small_printf() function to + output debugging messages directly to stderr. From 699c5731441767536b11b91a4b0e685789de7a18 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 6 Feb 2024 18:45:41 +0100 Subject: [PATCH 757/767] dependabot: help keeping GitHub Actions versions up to date See https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot#enabling-dependabot-version-updates-for-actions for details. Signed-off-by: Johannes Schindelin --- .github/dependabot.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..22d5376407 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file +# especially +# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot#enabling-dependabot-version-updates-for-actions + +version: 2 +updates: + - package-ecosystem: "github-actions" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From 885c2fa0baa2bb15d50f23b67082e9d6e99a33cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=A7=88=EB=88=84=EC=97=98?= Date: Mon, 9 Mar 2015 16:24:43 +0100 Subject: [PATCH 758/767] Fixed path converting with non ascii char. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a non ascii char is at the beginning of a path the current conversion destroys the path. This fix will prevent this with an extra check for non-ascii UTF-8 characters. Helped-by: Johannes Schindelin Signed-off-by: 마누엘 --- winsup/cygwin/msys2_path_conv.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/msys2_path_conv.cc b/winsup/cygwin/msys2_path_conv.cc index 4c0cc82cf2..0dc086aae9 100644 --- a/winsup/cygwin/msys2_path_conv.cc +++ b/winsup/cygwin/msys2_path_conv.cc @@ -399,7 +399,7 @@ path_type find_path_start_and_type(const char** src, int recurse, const char* en } it = *src; - while (!isalnum(*it) && *it != '/' && *it != '\\' && *it != ':' && *it != '-' && *it != '.') { + while (!isalnum(*it) && !(0x80 & *it) && *it != '/' && *it != '\\' && *it != ':' && *it != '-' && *it != '.') { recurse = true; it = ++*src; if (it == end || *it == '\0') return NONE; From 76c8b244f3e9d00a86210d31b0b52c1a256ce143 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 20 Aug 2020 12:22:05 +0200 Subject: [PATCH 759/767] Do not try to sync with Cygwin This is a forked repository... Signed-off-by: Johannes Schindelin --- .github/workflows/sync-with-cygwin.yml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .github/workflows/sync-with-cygwin.yml diff --git a/.github/workflows/sync-with-cygwin.yml b/.github/workflows/sync-with-cygwin.yml deleted file mode 100644 index 57bd30e5da..0000000000 --- a/.github/workflows/sync-with-cygwin.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: sync-with-cygwin - -# File: .github/workflows/repo-sync.yml - -on: - workflow_dispatch: - schedule: - - cron: "42 * * * *" -jobs: - repo-sync: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Fetch Cygwin's latest master and tags - run: | - git init --bare - # Potentially use git://sourceware.org/git/newlib-cygwin.git directly, but GitHub seems more reliable - git fetch https://github.com/cygwin/cygwin master:refs/heads/cygwin/master 'refs/tags/*:refs/tags/*' - - name: Push to our fork - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git push https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY refs/heads/cygwin/master 'refs/tags/*:refs/tags/*' From 70b4715d0f4d38e951f01471393b5c3f254363f7 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 18 Dec 2015 20:19:57 +0100 Subject: [PATCH 760/767] Make paths' WCS->MBS conversion explicit * dcrt0.cc (dll_crt0_1), dtable.cc (handle_to_fn), environ.cc (environ_init, getwinenveq, build_env), external.cc (fillout_pinfo), fhandler_disk_file.cc (__DIR_mounts::eval_ino, fhandler_disk_file::readdir_helper), fhandler_netdrive.cc (fhandler_netdrive::readdir), fhandler_process.cc (format_process_winexename, format_process_maps, format_process_stat, format_process_status), fhandler_procsys.cc (fill_filebuf, fhandler_procsys::readdir), mount.cc (fs_info::update, mount_info::create_root_entry, mount_info::conv_to_posix_path, mount_info::from_fstab_line), nlsfuncs.cc (internal_setlocale), path.cc (path_conv::check, sysmlink_info::check_shortcut, symlink_info::check_sysfile, symlink_info::check_reparse_point, symlink_info::check_nfs_symlink, cygwin_conv_path, cygwin_conv_path_list, cwdstuff::get_error_desc, cwdstuff::get), strfuncs.cc (sys_wcstombs_no_path, sys_wcstombs_alloc_no_path), uinfo.cc (ontherange, fetch_from_path, cygheap_pwdgrp::get_home, cygheap_pwdgrp::get_shell, cygheap_pwdgrp::get_gecos), wchar.h (sys_wcstombs_no_path, sys_wcstombs_alloc_no_path): Convert call sites of the sys_wcstombs*() family to specify explicitly when the parameter refers to a path or file name, to avoid future misconversions. Detailed explanation: The sys_wcstombs() function contains special handling for paths/file names, to work around file name restriction on Windows that are unexpected in the POSIX context of Cygwin. We actually do not want that special handling for WCS strings that do *not* refer to paths or file names. Neither do we want to convert those special file names unless they come from inside Cygwin: if the source of the string value is the Windows API, we *know* it cannot be such a special file name because Windows itself would not be able to handle it in the way Cygwin does. So let's switch the previous sys_wcstombs()/sys_wcstombs_no_path() (and the *_alloc* variant) around to sys_wcstombs_path()/sys_wcstombs(). We do this for several reasons: - whenever a call site wants to convert a WCS representation of a path or file name to an MBS one, it should be made very clear that we *want* the special file name conversion to happen. - it is shorter to read and write. - future calls to sys_wcstombs() will not incur unwanted conversion by accident (it is easy for unsuspecting programmers to assume that the function name "sys_wcstombs()" refers to a regular text conversion that has nothing to do with paths or filenames). By keeping the name sys_wcstombs() (and not switching to sys_wcstombs_path()), the following call sites are implicitly changed to *exclude* the special path/file name conversion: cygheap.h (get_drive): Cannot contain special characters external.cc (cygwin_internal): Refers to user/domain names, not paths fhandler_clipboard.cc (fhandler_dev_clipboard::read): Is not a path or file name but characters from the Windows clipboard fhandler_console.cc: (dev_console::con_to_str): Is not a path or file name but characters from the console fhandler_registry.cc (encode_regname): Is a registry key, not a path or filename fhandler_registry.cc (multi_wcstombs): All call sites pass registry values, not paths or filenames fhandler_registry.cc (fstat): Is a registry value, not a path or filename fhandler_registry.cc (fill_filebuf): Is a registry value, not a path or filename net.cc (get_ipv4fromreg): Is a registry value, not a path or filename net.cc (get_friendlyname): Is a device name, not a path or filename netdb.cc (open_system_file): Is from outside Cygwin smallprint.cc (__small_vsprintf): Is a free text, not a path or filename strfuncs.cc (strlwr): Should preserve the characters from the private page if there are any strfuncs.cc (strupr): Should preserve the characters from the private page if there are any uinfo.cc (cygheap_user::init): Refers to a user name, not a path or filename uinfo.cc (pwdgrp::fetch_account_from_windows): Refers to value from outside Cygwin By keeping the function name sys_wcstombs_alloc() (and not changing it to sys_wcstombs_alloc_path()), the following call sites are implicitly changed to *exclude* the special path/file name conversion: ldap.cc (cyg_ldap::remap_uid): Refers to a user name, not a path or filename ldap.cc (cyg_ldap::remap_gid): Refers to a group name, not a path or filename pinfo.cc (_pinfo::cmdline): Refers to a command line from Windows, outside Cygwin uinfo.cc (cygheap_user::env_logsrv): Is a server name, not a path or filename uinfo.cc (cygheap_user::env_domain): Refers to the user/domain name, not a path or filename uinfo.cc (cygheap_user::env_userprofile): Refers to Windows' idea of a path, outside Cygwin uinfo.cc (cygheap_user::env_systemroot): Refers to Windows' idea of a path, outside Cygwin uinfo.cc (fetch_from_description): Refers to values from outside of Cygwin uinfo.cc (cygheap_pwdgrp::get_gecos): Refers to user/domain name and email address, not path nor filename Signed-off-by: Johannes Schindelin --- winsup/cygwin/dcrt0.cc | 4 ++-- winsup/cygwin/dtable.cc | 2 +- winsup/cygwin/environ.cc | 8 ++++---- winsup/cygwin/external.cc | 2 +- winsup/cygwin/fhandler/disk_file.cc | 4 ++-- winsup/cygwin/fhandler/netdrive.cc | 6 +++--- winsup/cygwin/fhandler/process.cc | 11 ++++++----- winsup/cygwin/fhandler/procsys.cc | 11 ++++++----- winsup/cygwin/local_includes/wchar.h | 16 +++++++-------- winsup/cygwin/mount.cc | 8 ++++---- winsup/cygwin/nlsfuncs.cc | 2 +- winsup/cygwin/path.cc | 29 ++++++++++++++-------------- winsup/cygwin/uinfo.cc | 20 +++++++++---------- 13 files changed, 63 insertions(+), 60 deletions(-) diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 351d32d8e3..049e003796 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -912,9 +912,9 @@ dll_crt0_1 (void *) if (!__argc) { PWCHAR wline = GetCommandLineW (); - size_t size = sys_wcstombs_no_path (NULL, 0, wline) + 1; + size_t size = sys_wcstombs (NULL, 0, wline) + 1; char *line = (char *) alloca (size); - sys_wcstombs_no_path (line, size, wline); + sys_wcstombs (line, size, wline); /* Scan the command line and build argv. Expand wildcards if not called from another cygwin process. */ diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 3c40e0fa3d..141029f811 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -1028,7 +1028,7 @@ handle_to_fn (HANDLE h, char *posix_fn) if (wcsncasecmp (w32, DEVICE_PREFIX, DEVICE_PREFIX_LEN) != 0 || !QueryDosDeviceW (NULL, fnbuf, sizeof (fnbuf) / sizeof (WCHAR))) { - sys_wcstombs (posix_fn, NT_MAX_PATH, w32, w32len); + sys_wcstombs_path (posix_fn, NT_MAX_PATH, w32, w32len); return false; } diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index 4e049211e9..529535a580 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -918,7 +918,7 @@ win32env_to_cygenv (PWCHAR rawenv, bool posify) eventually want to use them). */ for (i = 0, w = rawenv; *w != L'\0'; w = wcschr (w, L'\0') + 1, i++) { - sys_wcstombs_alloc_no_path (&newp, HEAP_NOTHEAP, w); + sys_wcstombs_alloc (&newp, HEAP_NOTHEAP, w); if (i >= envc) envp = (char **) realloc (envp, (4 + (envc += 100)) * sizeof (char *)); envp[i] = newp; @@ -978,7 +978,7 @@ getwinenveq (const char *name, size_t namelen, int x) int totlen = GetEnvironmentVariableW (name0, valbuf, 32768); if (totlen > 0) { - totlen = sys_wcstombs_no_path (NULL, 0, valbuf) + 1; + totlen = sys_wcstombs (NULL, 0, valbuf) + 1; if (x == HEAP_1_STR) totlen += namelen; else @@ -986,7 +986,7 @@ getwinenveq (const char *name, size_t namelen, int x) char *p = (char *) cmalloc_abort ((cygheap_types) x, totlen); if (namelen) strcpy (p, name); - sys_wcstombs_no_path (p + namelen, totlen, valbuf); + sys_wcstombs (p + namelen, totlen, valbuf); debug_printf ("using value from GetEnvironmentVariable for '%W'", name0); return p; } @@ -1144,7 +1144,7 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc, for (winnum = 0, var = cwinenv; *var; ++winnum, var = wcschr (var, L'\0') + 1) - sys_wcstombs_alloc_no_path (&winenv[winnum], HEAP_NOTHEAP, var); + sys_wcstombs_alloc (&winenv[winnum], HEAP_NOTHEAP, var); } DestroyEnvironmentBlock (cwinenv); /* Eliminate variables which are already available in envp, as well as diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc index 33863d8001..353375a984 100644 --- a/winsup/cygwin/external.cc +++ b/winsup/cygwin/external.cc @@ -92,7 +92,7 @@ fillout_pinfo (pid_t pid, int winpid) ep.rusage_self = p->rusage_self; ep.rusage_children = p->rusage_children; ep.progname[0] = '\0'; - sys_wcstombs(ep.progname, MAX_PATH, p->progname); + sys_wcstombs_path (ep.progname, MAX_PATH, p->progname); ep.strace_mask = 0; ep.version = EXTERNAL_PINFO_VERSION; diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc index 2cfac6be1e..5359e13e89 100644 --- a/winsup/cygwin/fhandler/disk_file.cc +++ b/winsup/cygwin/fhandler/disk_file.cc @@ -2409,7 +2409,7 @@ fhandler_disk_file::readdir_helper (DIR *dir, dirent *de, DWORD w32_err, char *p = stpcpy (file, pc.get_posix ()); if (p[-1] != '/') *p++ = '/'; - sys_wcstombs (p, NT_MAX_PATH - (p - file), + sys_wcstombs_path (p, NT_MAX_PATH - (p - file), fname->Buffer, fname->Length / sizeof (WCHAR)); path_conv fpath (file, PC_SYM_NOFOLLOW); if (fpath.issymlink ()) @@ -2430,7 +2430,7 @@ fhandler_disk_file::readdir_helper (DIR *dir, dirent *de, DWORD w32_err, } } - sys_wcstombs (de->d_name, NAME_MAX + 1, fname->Buffer, + sys_wcstombs_path (de->d_name, NAME_MAX + 1, fname->Buffer, fname->Length / sizeof (WCHAR)); /* Don't try to optimize relative to dir->__d_position. On several diff --git a/winsup/cygwin/fhandler/netdrive.cc b/winsup/cygwin/fhandler/netdrive.cc index 58ab8811b0..0b71d4ba29 100644 --- a/winsup/cygwin/fhandler/netdrive.cc +++ b/winsup/cygwin/fhandler/netdrive.cc @@ -283,15 +283,15 @@ fhandler_netdrive::readdir (DIR *dir, dirent *de) tp.u_get (&ds); RtlInitUnicodeString (&ss, bs); RtlDowncaseUnicodeString (&ds, &ss, FALSE); - sys_wcstombs (de->d_name, sizeof de->d_name, + sys_wcstombs_path (de->d_name, sizeof de->d_name, ds.Buffer, ds.Length / sizeof (WCHAR)); de->d_ino = hash_path_name (get_ino (), de->d_name); } else { - sys_wcstombs (de->d_name, sizeof de->d_name, bs); + sys_wcstombs_path (de->d_name, sizeof de->d_name, bs); char *rpath = tp.c_get (); - sys_wcstombs (rpath, NT_MAX_PATH, nro->lpRemoteName); + sys_wcstombs_path (rpath, NT_MAX_PATH, nro->lpRemoteName); de->d_ino = readdir_get_ino (rpath, false); /* We can't trust remote inode numbers of only 32 bit. That means, remote NT4 NTFS, as well as shares of Samba version < 3.0. */ diff --git a/winsup/cygwin/fhandler/process.cc b/winsup/cygwin/fhandler/process.cc index 1e5e83b4ab..a63030b65c 100644 --- a/winsup/cygwin/fhandler/process.cc +++ b/winsup/cygwin/fhandler/process.cc @@ -574,10 +574,10 @@ static off_t format_process_winexename (void *data, char *&destbuf) { _pinfo *p = (_pinfo *) data; - size_t len = sys_wcstombs (NULL, 0, p->progname); + size_t len = sys_wcstombs_path (NULL, 0, p->progname); destbuf = (char *) crealloc_abort (destbuf, len + 1); /* With trailing \0 for backward compat reasons. */ - sys_wcstombs (destbuf, len + 1, p->progname); + sys_wcstombs_path (destbuf, len + 1, p->progname); return len; } @@ -1051,7 +1051,7 @@ format_process_maps (void *data, char *&destbuf) drive_maps.fixup_if_match (msi->SectionFileName.Buffer); if (mount_table->conv_to_posix_path (dosname, posix_modname, 0)) - sys_wcstombs (posix_modname, NT_MAX_PATH, dosname); + sys_wcstombs_path (posix_modname, NT_MAX_PATH, dosname); stat (posix_modname, &st); } else if (!threads.fill_if_match (cur.abase, mb.Type, @@ -1108,7 +1108,7 @@ format_process_stat (void *data, char *&destbuf) else { PWCHAR last_slash = wcsrchr (p->progname, L'\\'); - sys_wcstombs (cmd, NAME_MAX + 1, + sys_wcstombs_path (cmd, NAME_MAX + 1, last_slash ? last_slash + 1 : p->progname); int len = strlen (cmd); if (len > 4) @@ -1215,7 +1215,8 @@ format_process_status (void *data, char *&destbuf) bool fetch_siginfo = false; PWCHAR last_slash = wcsrchr (p->progname, L'\\'); - sys_wcstombs (cmd, NAME_MAX + 1, last_slash ? last_slash + 1 : p->progname); + sys_wcstombs_path (cmd, NAME_MAX + 1, + last_slash ? last_slash + 1 : p->progname); int len = strlen (cmd); if (len > 4) { diff --git a/winsup/cygwin/fhandler/procsys.cc b/winsup/cygwin/fhandler/procsys.cc index 4fa00481ad..2f957beb5b 100644 --- a/winsup/cygwin/fhandler/procsys.cc +++ b/winsup/cygwin/fhandler/procsys.cc @@ -236,10 +236,11 @@ fhandler_procsys::fill_filebuf () NtClose (h); if (!NT_SUCCESS (status)) goto unreadable; - len = sys_wcstombs (NULL, 0, target.Buffer, target.Length / sizeof (WCHAR)); + len = sys_wcstombs_path (NULL, 0, + target.Buffer, target.Length / sizeof (WCHAR)); filebuf = (char *) crealloc_abort (filebuf, procsys_len + len + 1); - sys_wcstombs (fnamep = stpcpy (filebuf, procsys), len + 1, target.Buffer, - target.Length / sizeof (WCHAR)); + sys_wcstombs_path (fnamep = stpcpy (filebuf, procsys), len + 1, + target.Buffer, target.Length / sizeof (WCHAR)); while ((fnamep = strchr (fnamep, '\\'))) *fnamep = '/'; return true; @@ -377,8 +378,8 @@ fhandler_procsys::readdir (DIR *dir, dirent *de) res = ENMFILE; else { - sys_wcstombs (de->d_name, NAME_MAX + 1, dbi->ObjectName.Buffer, - dbi->ObjectName.Length / sizeof (WCHAR)); + sys_wcstombs_path (de->d_name, NAME_MAX + 1, dbi->ObjectName.Buffer, + dbi->ObjectName.Length / sizeof (WCHAR)); de->d_ino = hash_path_name (get_ino (), de->d_name); if (RtlEqualUnicodeString (&dbi->ObjectTypeName, &ro_u_natdir, FALSE)) de->d_type = DT_DIR; diff --git a/winsup/cygwin/local_includes/wchar.h b/winsup/cygwin/local_includes/wchar.h index 606559a6ab..c6ec5d8758 100644 --- a/winsup/cygwin/local_includes/wchar.h +++ b/winsup/cygwin/local_includes/wchar.h @@ -173,29 +173,29 @@ extern size_t _sys_wcstombs_alloc (char **dst_p, int type, const wchar_t *src, size_t nwc, bool is_path); static inline size_t -sys_wcstombs (char *dst, size_t len, const wchar_t * src, - size_t nwc = (size_t) -1) +sys_wcstombs_path (char *dst, size_t len, const wchar_t * src, + size_t nwc = (size_t) -1) { return _sys_wcstombs (dst, len, src, nwc, true); } static inline size_t -sys_wcstombs_no_path (char *dst, size_t len, const wchar_t * src, - size_t nwc = (size_t) -1) +sys_wcstombs (char *dst, size_t len, const wchar_t * src, + size_t nwc = (size_t) -1) { return _sys_wcstombs (dst, len, src, nwc, false); } static inline size_t -sys_wcstombs_alloc (char **dst_p, int type, const wchar_t *src, - size_t nwc = (size_t) -1) +sys_wcstombs_alloc_path (char **dst_p, int type, const wchar_t *src, + size_t nwc = (size_t) -1) { return _sys_wcstombs_alloc (dst_p, type, src, nwc, true); } static inline size_t -sys_wcstombs_alloc_no_path (char **dst_p, int type, const wchar_t *src, - size_t nwc = (size_t) -1) +sys_wcstombs_alloc (char **dst_p, int type, const wchar_t *src, + size_t nwc = (size_t) -1) { return _sys_wcstombs_alloc (dst_p, type, src, nwc, false); } diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index bd6ec2a7a1..8ebfb14034 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -506,7 +506,7 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) { /* The filesystem name is only used in fillout_mntent and only if the filesystem isn't one of the well-known filesystems anyway. */ - sys_wcstombs (fsn, sizeof fsn, ffai_buf.ffai.FileSystemName, + sys_wcstombs_path (fsn, sizeof fsn, ffai_buf.ffai.FileSystemName, ffai_buf.ffai.FileSystemNameLength / sizeof (WCHAR)); strlwr (fsn); } @@ -547,7 +547,7 @@ mount_info::create_root_entry (const PWCHAR root) /* Create a default root dir derived from the location of the Cygwin DLL. The entry is immutable, unless the "override" option is given in /etc/fstab. */ char native_root[PATH_MAX]; - sys_wcstombs (native_root, PATH_MAX, root); + sys_wcstombs_path (native_root, PATH_MAX, root); assert (*native_root != '\0'); if (add_item (native_root, "/", MOUNT_SYSTEM | MOUNT_IMMUTABLE | MOUNT_AUTOMATIC | MOUNT_NOACL) @@ -941,7 +941,7 @@ mount_info::conv_to_posix_path (PWCHAR src_path, char *posix_path, } tmp_pathbuf tp; char *buf = tp.c_get (); - sys_wcstombs (buf, NT_MAX_PATH, src_path); + sys_wcstombs_path (buf, NT_MAX_PATH, src_path); int ret = conv_to_posix_path (buf, posix_path, ccp_flags); if (changed) src_path[0] = L'C'; @@ -1275,7 +1275,7 @@ mount_info::from_fstab_line (char *line, bool user) { tmp_pathbuf tp; char *mb_tmp = tp.c_get (); - sys_wcstombs (mb_tmp, PATH_MAX, tmp); + sys_wcstombs_path (mb_tmp, PATH_MAX, tmp); mount_flags |= MOUNT_USER_TEMP; int res = mount_table->add_item (mb_tmp, posix_path, mount_flags); diff --git a/winsup/cygwin/nlsfuncs.cc b/winsup/cygwin/nlsfuncs.cc index f57465a4f2..57af967c1a 100644 --- a/winsup/cygwin/nlsfuncs.cc +++ b/winsup/cygwin/nlsfuncs.cc @@ -1776,7 +1776,7 @@ internal_setlocale () if (w_path) { char *c_path = tp.c_get (); - sys_wcstombs (c_path, 32768, w_path); + sys_wcstombs_path (c_path, 32768, w_path); setenv ("PATH", c_path, 1); } } diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index b0c45fa55c..01c784053c 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -621,7 +621,8 @@ path_conv::check (const UNICODE_STRING *src, unsigned opt, char *path = tp.c_get (); user_shared->warned_msdos = true; - sys_wcstombs (path, NT_MAX_PATH, src->Buffer, src->Length / sizeof (WCHAR)); + sys_wcstombs_path (path, NT_MAX_PATH, + src->Buffer, src->Length / sizeof (WCHAR)); path_conv::check (path, opt, suffixes); } @@ -2550,7 +2551,7 @@ symlink_info::check_shortcut (HANDLE h) if (*(PWCHAR) cp == 0xfeff) /* BOM */ { char *tmpbuf = tp.c_get (); - if (sys_wcstombs (tmpbuf, NT_MAX_PATH, (PWCHAR) (cp + 2)) + if (sys_wcstombs_path (tmpbuf, NT_MAX_PATH, (PWCHAR) (cp + 2)) > SYMLINK_MAX) return 0; res = posixify (tmpbuf); @@ -2631,7 +2632,7 @@ symlink_info::check_sysfile (HANDLE h) else srcbuf += 2; char *tmpbuf = tp.c_get (); - if (sys_wcstombs (tmpbuf, NT_MAX_PATH, (PWCHAR) srcbuf) + if (sys_wcstombs_path (tmpbuf, NT_MAX_PATH, (PWCHAR) srcbuf) > SYMLINK_MAX) debug_printf ("symlink string too long"); else @@ -2899,8 +2900,8 @@ symlink_info::check_reparse_point (HANDLE h, bool remote) path_flags |= ret; if (ret & PATH_SYMLINK) { - sys_wcstombs (srcbuf, SYMLINK_MAX + 7, symbuf.Buffer, - symbuf.Length / sizeof (WCHAR)); + sys_wcstombs_path (srcbuf, SYMLINK_MAX + 7, symbuf.Buffer, + symbuf.Length / sizeof (WCHAR)); /* A symlink is never a directory. */ fileattr &= ~FILE_ATTRIBUTE_DIRECTORY; return posixify (srcbuf); @@ -2934,7 +2935,7 @@ symlink_info::check_nfs_symlink (HANDLE h) { PWCHAR spath = (PWCHAR) (pffei->EaName + pffei->EaNameLength + 1); - res = sys_wcstombs (contents, SYMLINK_MAX + 1, + res = sys_wcstombs_path (contents, SYMLINK_MAX + 1, spath, pffei->EaValueLength); path_flags |= PATH_SYMLINK; } @@ -4151,7 +4152,7 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to, } PUNICODE_STRING up = p.get_nt_native_path (); buf = tp.c_get (); - sys_wcstombs (buf, NT_MAX_PATH, + sys_wcstombs_path (buf, NT_MAX_PATH, up->Buffer, up->Length / sizeof (WCHAR)); /* Convert native path to standard DOS path. */ if (!strncmp (buf, "\\??\\", 4)) @@ -4164,11 +4165,11 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to, { /* Device name points to somewhere else in the NT namespace. Use GLOBALROOT prefix to convert to Win32 path. */ - char *p = buf + sys_wcstombs (buf, NT_MAX_PATH, + char *p = buf + sys_wcstombs_path (buf, NT_MAX_PATH, ro_u_globalroot.Buffer, ro_u_globalroot.Length / sizeof (WCHAR)); - sys_wcstombs (p, NT_MAX_PATH - (p - buf), + sys_wcstombs_path (p, NT_MAX_PATH - (p - buf), up->Buffer, up->Length / sizeof (WCHAR)); } lsiz = strlen (buf) + 1; @@ -4478,8 +4479,8 @@ cygwin_conv_path_list (cygwin_conv_path_t what, const void *from, void *to, switch (what & CCP_CONVTYPE_MASK) { case CCP_WIN_W_TO_POSIX: - if (!sys_wcstombs_alloc (&winp, HEAP_NOTHEAP, (const wchar_t *) from, - (size_t) -1)) + if (!sys_wcstombs_alloc_path (&winp, HEAP_NOTHEAP, + (const wchar_t *) from, (size_t) -1)) return -1; what = (what & ~CCP_CONVTYPE_MASK) | CCP_WIN_A_TO_POSIX; from = (const void *) winp; @@ -5257,9 +5258,9 @@ cwdstuff::get_error_desc () const void cwdstuff::reset_posix (wchar_t *w_cwd) { - size_t len = sys_wcstombs (NULL, (size_t) -1, w_cwd); + size_t len = sys_wcstombs_path (NULL, (size_t) -1, w_cwd); posix = (char *) crealloc_abort (posix, len + 1); - sys_wcstombs (posix, len + 1, w_cwd); + sys_wcstombs_path (posix, len + 1, w_cwd); } char * @@ -5284,7 +5285,7 @@ cwdstuff::get (char *buf, int need_posix, int with_chroot, unsigned ulen) if (!need_posix) { tocopy = tp.c_get (); - sys_wcstombs (tocopy, NT_MAX_PATH, win32.Buffer, + sys_wcstombs_path (tocopy, NT_MAX_PATH, win32.Buffer, win32.Length / sizeof (WCHAR)); } else diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 81d9529824..9e7c239437 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -385,12 +385,12 @@ cygheap_user::ontherange (homebodies what, struct passwd *pw) { if (ui->usri3_home_dir_drive && *ui->usri3_home_dir_drive) { - sys_wcstombs (homepath_env_buf, NT_MAX_PATH, + sys_wcstombs_path (homepath_env_buf, NT_MAX_PATH, ui->usri3_home_dir_drive); strcat (homepath_env_buf, "\\"); } else if (ui->usri3_home_dir && *ui->usri3_home_dir) - sys_wcstombs (homepath_env_buf, NT_MAX_PATH, + sys_wcstombs_path (homepath_env_buf, NT_MAX_PATH, ui->usri3_home_dir); } if (ui) @@ -400,7 +400,7 @@ cygheap_user::ontherange (homebodies what, struct passwd *pw) if (!homepath_env_buf[0] && get_user_profile_directory (get_windows_id (win_id), profile, MAX_PATH)) - sys_wcstombs (homepath_env_buf, NT_MAX_PATH, profile); + sys_wcstombs_path (homepath_env_buf, NT_MAX_PATH, profile); /* Last fallback: Cygwin root dir. */ if (!homepath_env_buf[0]) cygwin_conv_path (CCP_POSIX_TO_WIN_A | CCP_ABSOLUTE, @@ -919,7 +919,7 @@ fetch_from_path (cyg_ldap *pldap, PUSER_INFO_3 ui, cygpsid &sid, PCWSTR str, } } *w = L'\0'; - sys_wcstombs_alloc (&ret, HEAP_NOTHEAP, wpath); + sys_wcstombs_alloc_path (&ret, HEAP_NOTHEAP, wpath); return ret; } @@ -987,7 +987,7 @@ cygheap_pwdgrp::get_home (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, { val = pldap->get_string_attribute (L"cygwinHome"); if (val && *val) - sys_wcstombs_alloc (&home, HEAP_NOTHEAP, val); + sys_wcstombs_alloc_path (&home, HEAP_NOTHEAP, val); } break; case NSS_SCHEME_UNIX: @@ -995,7 +995,7 @@ cygheap_pwdgrp::get_home (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, { val = pldap->get_string_attribute (L"unixHomeDirectory"); if (val && *val) - sys_wcstombs_alloc (&home, HEAP_NOTHEAP, val); + sys_wcstombs_alloc_path (&home, HEAP_NOTHEAP, val); } break; case NSS_SCHEME_DESC: @@ -1020,7 +1020,7 @@ cygheap_pwdgrp::get_home (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, home = (char *) cygwin_create_path (CCP_WIN_W_TO_POSIX, val); else - sys_wcstombs_alloc (&home, HEAP_NOTHEAP, val); + sys_wcstombs_alloc_path (&home, HEAP_NOTHEAP, val); } } break; @@ -1090,7 +1090,7 @@ cygheap_pwdgrp::get_shell (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, { val = pldap->get_string_attribute (L"cygwinShell"); if (val && *val) - sys_wcstombs_alloc (&shell, HEAP_NOTHEAP, val); + sys_wcstombs_alloc_path (&shell, HEAP_NOTHEAP, val); } break; case NSS_SCHEME_UNIX: @@ -1098,7 +1098,7 @@ cygheap_pwdgrp::get_shell (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, { val = pldap->get_string_attribute (L"loginShell"); if (val && *val) - sys_wcstombs_alloc (&shell, HEAP_NOTHEAP, val); + sys_wcstombs_alloc_path (&shell, HEAP_NOTHEAP, val); } break; case NSS_SCHEME_DESC: @@ -1123,7 +1123,7 @@ cygheap_pwdgrp::get_shell (cyg_ldap *pldap, cygpsid &sid, PCWSTR dom, shell = (char *) cygwin_create_path (CCP_WIN_W_TO_POSIX, val); else - sys_wcstombs_alloc (&shell, HEAP_NOTHEAP, val); + sys_wcstombs_alloc_path (&shell, HEAP_NOTHEAP, val); } } break; From 96143778d49b5514a2d308c48ede28a058ee2f5f Mon Sep 17 00:00:00 2001 From: Karsten Blees Date: Wed, 20 May 2015 16:32:52 +0200 Subject: [PATCH 761/767] Allow native symlinks to non-existing targets in 'nativestrict' mode Windows native symlinks must match the type of their target (file or directory), otherwise native Windows tools will fail. Creating symlinks in 'nativestrict' mode currently requires the target to exist in order to check its type. However, the target of a symlink can change at any time after the symlink has been created. Thus users of native symlinks must be prepared to deal with type mismatches anyway. Checking the target type at symlink creation time is not a good reason to violate the symlink() API specification. In 'nativestrict' mode, always create native symlinks. Choose the symlink type according to the target if it exists. Otherwise check the target path for a trailing '/' as hint to create a directory symlink. This allows callers to explicitly specify the expected target type, e.g.: $ ln -s test/ link-to-test $ mkdir test Signed-off-by: Karsten Blees Signed-off-by: Johannes Schindelin --- winsup/cygwin/path.cc | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index b0c45fa55c..1e0fa045b0 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1865,7 +1865,7 @@ symlink_native (const char *oldpath, path_conv &win32_newpath) path_conv win32_oldpath; PUNICODE_STRING final_oldpath, final_newpath; UNICODE_STRING final_oldpath_buf; - DWORD flags; + DWORD flags = 0; if (isabspath (oldpath)) { @@ -1926,14 +1926,39 @@ symlink_native (const char *oldpath, path_conv &win32_newpath) wcpcpy (e_old, c_old); } } - /* If the symlink target doesn't exist, don't create native symlink. - Otherwise the directory flag in the symlink is potentially wrong - when the target comes into existence, and native tools will fail. - This is so screwball. This is no problem on AFS, fortunately. */ - if (!win32_oldpath.exists () && !win32_oldpath.fs_is_afs ()) + + /* The directory flag in the symlink must match the target type, + otherwise native tools will fail (fortunately this is no problem + on AFS). Do our best to guess the symlink type correctly. */ + if (win32_oldpath.exists () || win32_oldpath.fs_is_afs ()) { - SetLastError (ERROR_FILE_NOT_FOUND); - return -1; + /* If the target exists (or on AFS), check the target type. Note + that this may still be wrong if the target is changed after + creating the symlink (e.g. in bulk operations such as rsync, + unpacking archives or VCS checkouts). */ + if (win32_oldpath.isdir ()) + flags |= SYMBOLIC_LINK_FLAG_DIRECTORY; + } + else + { + if (allow_winsymlinks == WSYM_nativestrict) + { + /* In nativestrict mode, if the target does not exist, use + trailing '/' in the target path as hint to create a + directory symlink. */ + ssize_t len = strlen(oldpath); + if (len && isdirsep(oldpath[len - 1])) + flags |= SYMBOLIC_LINK_FLAG_DIRECTORY; + } + else + { + /* In native mode, if the target does not exist, fall back + to creating a Cygwin symlink file (or in case of MSys: + try to copy the (non-existing) target, which will of + course fail). */ + SetLastError (ERROR_FILE_NOT_FOUND); + return -1; + } } /* Don't allow native symlinks to Cygwin special files. However, the caller shoud know because this case shouldn't be covered by the @@ -1962,7 +1987,6 @@ symlink_native (const char *oldpath, path_conv &win32_newpath) final_oldpath->Buffer[1] = L'\\'; } /* Try to create native symlink. */ - flags = win32_oldpath.isdir () ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0; if (wincap.has_unprivileged_createsymlink ()) flags |= SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE; if (!CreateSymbolicLinkW (final_newpath->Buffer, final_oldpath->Buffer, From 97cefff70c0abe58010c10319e9d4aed6101fdc9 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 21 Nov 2019 14:21:01 +0100 Subject: [PATCH 762/767] Use MB_CUR_MAX == 6 by default Internally, Cygwin already uses __utf8_mbtowc(), even if it still claims to use the "ASCII" charset. But the `MB_CUR_MAX` value (which is not actually a constant, but dependent on the current locale) was still 1, which broke the initial `globify()` call while parsing the the command-line in `build_argv()` for non-ASCII arguments. This fixes https://github.com/git-for-windows/git/issues/2189 Signed-off-by: Johannes Schindelin --- newlib/libc/locale/lctype.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/newlib/libc/locale/lctype.c b/newlib/libc/locale/lctype.c index a07ab68124..3f118e98c7 100644 --- a/newlib/libc/locale/lctype.c +++ b/newlib/libc/locale/lctype.c @@ -25,7 +25,12 @@ #define LCCTYPE_SIZE (sizeof(struct lc_ctype_T) / sizeof(char *)) +#ifdef __CYGWIN__ +/* Cygwin uses __utf8_mbtowc() by default, therefore mb_cur_max := 6 */ +static char numone[] = { '\x06', '\0'}; +#else static char numone[] = { '\1', '\0'}; +#endif const struct lc_ctype_T _C_ctype_locale = { "ASCII", /* codeset */ From 0472dec062c16b8860814c157d13be045fed235f Mon Sep 17 00:00:00 2001 From: Mikael Larsson <95430516+chirpnot@users.noreply.github.com> Date: Thu, 10 Mar 2022 17:26:42 +0000 Subject: [PATCH 763/767] Change the default base address for x86_64 This might break things, but it turns out several Windows libraries like to be loaded at 0x180000000. This causes a problem, because `msys-2.0.dll` loads at `0x180040000` and expects `0x180000000-0x180040000` to be available. A problem arises when Antiviruses (or other DLL hooking mechanisms) load a DLL whose preferred load address is `0x180000000` and fits in size before `0x180010000`: 1. `msys-2.0.dll` loads and fills `0x180010000-0x180040000` assuming no shared console structure is going to be needed. 2. Another DLL loads and fills `0x180000000-0x18000xxxx` 3. `msys-2.0.dll` tries to load `0x180000000-0x180010000` but it's not available. It falls back to another address, but down the line something else fails. This bug triggers when using subshells (e.g.: `git clone --recursive`). The MSYS2 runtime should be able to work around the address conflict, but the code is failing in some way or other... Signed-off-by: Johannes Schindelin Signed-off-by: Mikael Larsson <95430516+chirpnot@users.noreply.github.com> --- winsup/cygwin/cygwin.din | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index 76e88df2fc..f9d458e40e 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -1,4 +1,4 @@ -LIBRARY "msys-2.0.dll" BASE=0x180040000 +LIBRARY "msys-2.0.dll" BASE=0x210040000 EXPORTS # Exported variables From 900a410ab854ee698b3aebe85b799c14398c41c2 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sat, 31 Aug 2024 18:32:00 +0900 Subject: [PATCH 764/767] Cygwin: console: Disable cons_master_thread in win32-input-mode When win32-input-mode (which is supported by Windows Termainal) is set by "\033[?9001h", cons_master_thread does not work properly and consumes larger and larger memory space. This is because sending event by WriteConsoleInput() is translated into the sequence that is used by win32-input-mode. Due to this behaviour, write-back of the INPUT_RECORDs does not work as expected. With this patch, cons_master_thread is disabled on win32-input-mode where the signal keys such as Ctrl-C, Ctrl-Z etc. never comes. Backported-from: 68a14b66ff (Cygwin: console: Disable cons_master_thread in win32-input-mode, 2024-08-31) Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256380.html Fixes: ff4440fcf768 ("Cygwin: console: Introduce new thread which handles input signal.") Reported-by: Adamyg Mob Signed-off-by: Takashi Yano (cherry picked from commit 84d77e5918e18170c393407d477140fcf5d3e432) Signed-off-by: Johannes Schindelin --- winsup/cygwin/fhandler/console.cc | 8 ++++++-- winsup/cygwin/local_includes/fhandler.h | 2 ++ winsup/cygwin/release/3.5.5 | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 winsup/cygwin/release/3.5.5 diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index d4c3f1020b..dc43cd9f59 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -818,6 +818,7 @@ fhandler_console::set_input_mode (tty::cons_mode m, const termios *t, GetConsoleMode (p->input_handle, &oflags); DWORD flags = oflags & (ENABLE_EXTENDED_FLAGS | ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE); + con.curr_input_mode = m; switch (m) { case tty::restore: @@ -867,6 +868,7 @@ fhandler_console::set_output_mode (tty::cons_mode m, const termios *t, if (con.orig_virtual_terminal_processing_mode) flags |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; WaitForSingleObject (p->output_mutex, mutex_timeout); + con.curr_output_mode = m; switch (m) { case tty::restore: @@ -1109,12 +1111,12 @@ fhandler_console::bg_check (int sig, bool dontsignal) /* Setting-up console mode for cygwin app. This is necessary if the cygwin app and other non-cygwin apps are started simultaneously in the same process group. */ - if (sig == SIGTTIN) + if (sig == SIGTTIN && con.curr_input_mode != tty::cygwin) { set_input_mode (tty::cygwin, &tc ()->ti, get_handle_set ()); set_disable_master_thread (false, this); } - if (sig == SIGTTOU) + if (sig == SIGTTOU && con.curr_output_mode != tty::cygwin) set_output_mode (tty::cygwin, &tc ()->ti, get_handle_set ()); return fhandler_termios::bg_check (sig, dontsignal); @@ -2921,6 +2923,8 @@ fhandler_console::char_command (char c) } if (con.args[i] == 1) /* DECCKM */ con.cursor_key_app_mode = (c == 'h'); + if (con.args[i] == 9001) /* win32-input-mode (https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md) */ + set_disable_master_thread (c == 'h', this); } /* Call fix_tab_position() if screen has been alternated. */ if (need_fix_tab_position) diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 3d819f49b5..10bc9c7ec8 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -2160,6 +2160,8 @@ class dev_console char *cons_rapoi; bool cursor_key_app_mode; bool disable_master_thread; + tty::cons_mode curr_input_mode; + tty::cons_mode curr_output_mode; bool master_thread_suspended; int num_processed; /* Number of input events in the current input buffer already processed by cons_master_thread(). */ diff --git a/winsup/cygwin/release/3.5.5 b/winsup/cygwin/release/3.5.5 new file mode 100644 index 0000000000..a98687c26e --- /dev/null +++ b/winsup/cygwin/release/3.5.5 @@ -0,0 +1,6 @@ +Fixes: +------ + +- Fix undesired behaviour of console master thread in win32-input-mode + which is supported by Windows Termainal. + Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256380.html From 8854bb46dbb94ca567430b8340ed12a21e4b8737 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 1 Sep 2024 04:31:03 +0900 Subject: [PATCH 765/767] Cygwin: pipe: Fix a regression that raw_write() slows down After the commit 7f3c22532577, writing to pipe extremely slows down. This is because cygwait(select_sem, 10, cw_cancel) is called even when write operation is already completed. With this patch, the cygwait() is called only if the write operation is not completed. Backported-from: 37ab3e0d55 (Cygwin: pipe: Fix a regression that raw_write() slows down, 2024-09-01) Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256398.html Fixes: 7f3c22532577 ("Cygwin: pipe: handle signals explicitely in raw_write") Reported-by: Jim Reisert AD1C Reviewed-by: Corinna Vinschen Signed-off-by: Takashi Yano (cherry picked from commit f78009cb1ccf84cc343cf2441c76196461d87532) Signed-off-by: Johannes Schindelin --- winsup/cygwin/release/3.5.5 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winsup/cygwin/release/3.5.5 b/winsup/cygwin/release/3.5.5 index a98687c26e..904119a387 100644 --- a/winsup/cygwin/release/3.5.5 +++ b/winsup/cygwin/release/3.5.5 @@ -4,3 +4,6 @@ Fixes: - Fix undesired behaviour of console master thread in win32-input-mode which is supported by Windows Termainal. Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256380.html + +- Fix a regression in 3.5.4 that writing to pipe extremely slows down. + Addresses: https://cygwin.com/pipermail/cygwin/2024-August/256398.html From f4fb5643004a64c7dbe7148bea064607e70ed80b Mon Sep 17 00:00:00 2001 From: Richard Glidden Date: Thu, 24 Aug 2023 13:36:10 -0400 Subject: [PATCH 766/767] msys2-runtime: restore fast path for current user primary group Commit a5bcfe616c7e removed an optimization that fetches the default group from the current user token, as it is sometimes not accurate such as when groups like the builtin Administrators group is the primary group. However, removing this optimization causes extremely poor performance when connected to some Active Directory environments. Restored this optimization as the default behaviour, and added a `group: db-accurate` option to `nsswitch.conf` that can be used to disable the optimization in cases where accurate group information is required. This fixes https://github.com/git-for-windows/git/issues/4459 Signed-off-by: Richard Glidden --- winsup/cygwin/include/sys/cygwin.h | 3 ++- winsup/cygwin/local_includes/cygheap.h | 1 + winsup/cygwin/uinfo.cc | 30 ++++++++++++++++++++------ winsup/doc/ntsec.xml | 20 ++++++++++++++++- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/include/sys/cygwin.h b/winsup/cygwin/include/sys/cygwin.h index 6383646cc7..6b2f647724 100644 --- a/winsup/cygwin/include/sys/cygwin.h +++ b/winsup/cygwin/include/sys/cygwin.h @@ -219,7 +219,8 @@ enum enum { NSS_SRC_FILES = 1, - NSS_SRC_DB = 2 + NSS_SRC_DB = 2, + NSS_SRC_DB_ACCURATE = 4 }; /* Enumeration source constants for CW_SETENT called from mkpasswd/mkgroup. */ diff --git a/winsup/cygwin/local_includes/cygheap.h b/winsup/cygwin/local_includes/cygheap.h index b6acdf7f18..b38cb9d1d7 100644 --- a/winsup/cygwin/local_includes/cygheap.h +++ b/winsup/cygwin/local_includes/cygheap.h @@ -406,6 +406,7 @@ class cygheap_pwdgrp inline int nss_pwd_src () const { return pwd_src; } /* CW_GETNSS_PWD_SRC */ inline bool nss_grp_files () const { return !!(grp_src & NSS_SRC_FILES); } inline bool nss_grp_db () const { return !!(grp_src & NSS_SRC_DB); } + inline bool nss_grp_db_accurate () const { return !!(grp_src & NSS_SRC_DB_ACCURATE); } inline int nss_grp_src () const { return grp_src; } /* CW_GETNSS_GRP_SRC */ inline bool nss_cygserver_caching () const { return caching; } inline void nss_disable_cygserver_caching () { caching = false; } diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 9e7c239437..71234c18ae 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -637,6 +637,11 @@ cygheap_pwdgrp::nss_init_line (const char *line) *src |= NSS_SRC_DB; c += 2; } + else if (NSS_CMP ("db-accurate")) + { + *src |= NSS_SRC_DB | NSS_SRC_DB_ACCURATE; + c += 11; + } else { c += strcspn (c, " \t"); @@ -1952,6 +1957,7 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) gid_t gid = ILLEGAL_GID; bool is_domain_account = true; PCWSTR domain = NULL; + bool get_default_group_from_current_user_token = false; char *shell = NULL; char *home = NULL; char *gecos = NULL; @@ -2449,9 +2455,19 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) uid = posix_offset + sid_sub_auth_rid (sid); if (!is_group () && acc_type == SidTypeUser) { - /* Default primary group. Make the educated guess that the user - is in group "Domain Users" or "None". */ - gid = posix_offset + DOMAIN_GROUP_RID_USERS; + /* Default primary group. If the sid is the current user, and + we are not configured for accurate mode, fetch + the default group from the current user token, otherwise make + the educated guess that the user is in group "Domain Users" + or "None". */ + if (!cygheap->pg.nss_grp_db_accurate() && sid == cygheap->user.sid ()) + { + get_default_group_from_current_user_token = true; + gid = posix_offset + + sid_sub_auth_rid (cygheap->user.groups.pgsid); + } + else + gid = posix_offset + DOMAIN_GROUP_RID_USERS; } if (is_domain_account) @@ -2462,9 +2478,11 @@ pwdgrp::fetch_account_from_windows (fetch_user_arg_t &arg, cyg_ldap *pldap) /* On AD machines, use LDAP to fetch domain account infos. */ if (cygheap->dom.primary_dns_name ()) { - /* Fetch primary group from AD and overwrite the one we - just guessed above. */ - if (cldap->fetch_ad_account (sid, false, domain)) + /* For the current user we got correctly cased username and + the primary group via process token. For any other user + we fetch it from AD and overwrite it. */ + if (!get_default_group_from_current_user_token + && cldap->fetch_ad_account (sid, false, domain)) { if ((val = cldap->get_account_name ())) wcscpy (name, val); diff --git a/winsup/doc/ntsec.xml b/winsup/doc/ntsec.xml index 687789076c..fd5b472b61 100644 --- a/winsup/doc/ntsec.xml +++ b/winsup/doc/ntsec.xml @@ -930,7 +930,16 @@ The two lines starting with the keywords passwd: and information from. files means, fetch the information from the corresponding file in the /etc directory. db means, fetch the information from the Windows account databases, the SAM -for local accounts, Active Directory for domain account. Examples: +for local accounts, Active Directory for domain account. For the current +user, the default group is obtained from the current user token to avoid +additional lookups to the group database. db-accurate +is only valid on group: line, and performs the same +lookups as the db option, but disables using the +current user token to retrieve the default group as this optimization +is not accurate in all cases. For example, if you run a native process +with the primary group set to the Administrators builtin group, the +db option will return a non-existent group as primary +group. Examples: @@ -949,6 +958,15 @@ Read passwd entries only from /etc/passwd. Read group entries only from SAM/AD. + + group: db-accurate + + + +Read group entries only from SAM/AD. Force the use of the group database +for the current user. + + group: files # db From 9d0d6e12ecd99082219677a5437b3604e4292077 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 6 Sep 2024 14:19:44 +0900 Subject: [PATCH 767/767] Cygwin: pipe: Restore blocking mode of read pipe on close()/raw_read() If a cygwin app is executed from a non-cygwin app and the cygwin app exits, the read pipe remains in the non-blocking mode because of the commit fc691d0246b9. Due to this behaviour, the non-cygwin app cannot read the pipe correctly after that. Similarly, if a non-cygwin app is executed from a cygwin app and the non-cygwin app exits, the read pipe remains in the blocking mode. With this patch, the blocking mode of the read pipe is stored into a variable was_blocking_read_pipe on set_pipe_non_blocking() when the cygwin app starts and restored on close(). In addition, the pipe mode is set to non-blocking mode in raw_read() if the mode is blocking mode by referring the variable is_blocking_read_pipe as well. is_blocking_read_pipe is a member of fhandler_pipe class and is set by set_pipe_non_blocking(), so if other process sets the pipe mode to blocking mode, the current process cannot know the pipe is blocking mode. Therefore, is_blocking_read_pipe is also set on the signal __SIGNONCYGCHLD, which is sent to the process group when non-cygwin app is started. Backported-from: c7fe29f5cb (Cygwin: pipe: Restore blocking mode of read pipe on close()/raw_read(), 2024-09-06) Addresses: https://github.com/git-for-windows/git/issues/5115 Fixes: fc691d0246b9 ("Cygwin: pipe: Make sure to set read pipe non-blocking for cygwin apps."); Reported-by: isaacag, Johannes Schindelin Reviewed-by: Corinna Vinschen , Ken Brown Signed-off-by: Takashi Yano Signed-off-by: Johannes Schindelin --- winsup/cygwin/fhandler/pipe.cc | 41 +++++++++++++++++++++++++ winsup/cygwin/local_includes/fhandler.h | 3 ++ winsup/cygwin/sigproc.cc | 9 +----- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc index 040176ea48..8077082ee1 100644 --- a/winsup/cygwin/fhandler/pipe.cc +++ b/winsup/cygwin/fhandler/pipe.cc @@ -54,6 +54,16 @@ fhandler_pipe::set_pipe_non_blocking (bool nonblocking) NTSTATUS status; IO_STATUS_BLOCK io; FILE_PIPE_INFORMATION fpi; + bool was_blocking_read_pipe_new = was_blocking_read_pipe; + + if (get_device () == FH_PIPER && nonblocking && !was_blocking_read_pipe) + { + status = NtQueryInformationFile (get_handle (), &io, &fpi, sizeof fpi, + FilePipeInformation); + if (NT_SUCCESS (status)) + was_blocking_read_pipe_new = + (fpi.CompletionMode == FILE_PIPE_QUEUE_OPERATION); + } fpi.ReadMode = FILE_PIPE_BYTE_STREAM_MODE; fpi.CompletionMode = nonblocking ? FILE_PIPE_COMPLETE_OPERATION @@ -62,6 +72,11 @@ fhandler_pipe::set_pipe_non_blocking (bool nonblocking) FilePipeInformation); if (!NT_SUCCESS (status)) debug_printf ("NtSetInformationFile(FilePipeInformation): %y", status); + else + { + was_blocking_read_pipe = was_blocking_read_pipe_new; + is_blocking_read_pipe = !nonblocking; + } } int @@ -95,6 +110,8 @@ fhandler_pipe::init (HANDLE f, DWORD a, mode_t mode, int64_t uniq_id) even with FILE_SYNCHRONOUS_IO_NONALERT. */ set_pipe_non_blocking (get_device () == FH_PIPER ? true : is_nonblocking ()); + was_blocking_read_pipe = false; + return 1; } @@ -289,6 +306,9 @@ fhandler_pipe::raw_read (void *ptr, size_t& len) if (!len) return; + if (is_blocking_read_pipe) + set_pipe_non_blocking (true); + DWORD timeout = is_nonblocking () ? 0 : INFINITE; DWORD waitret = cygwait (read_mtx, timeout); switch (waitret) @@ -721,6 +741,8 @@ fhandler_pipe::close () CloseHandle (query_hdl); if (query_hdl_close_req_evt) CloseHandle (query_hdl_close_req_evt); + if (was_blocking_read_pipe) + set_pipe_non_blocking (false); int ret = fhandler_base::close (); ReleaseMutex (hdl_cnt_mtx); CloseHandle (hdl_cnt_mtx); @@ -1377,6 +1399,7 @@ fhandler_pipe::spawn_worker (int fileno_stdin, int fileno_stdout, { fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; pipe->set_pipe_non_blocking (false); + need_send_noncygchld_sig = true; } /* If multiple writers including non-cygwin app exist, the non-cygwin @@ -1402,3 +1425,21 @@ fhandler_pipe::spawn_worker (int fileno_stdin, int fileno_stdout, t->kill_pgrp (__SIGNONCYGCHLD); } } + +void +fhandler_pipe::sigproc_worker (void) +{ + cygheap_fdenum cfd (false); + while (cfd.next () >= 0) + if (cfd->get_dev () == FH_PIPEW) + { + fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; + if (pipe->need_close_query_hdl ()) + pipe->close_query_handle (); + } + else if (cfd->get_dev () == FH_PIPER) + { + fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; + pipe->is_blocking_read_pipe = true; + } +} diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h index 10bc9c7ec8..000004479b 100644 --- a/winsup/cygwin/local_includes/fhandler.h +++ b/winsup/cygwin/local_includes/fhandler.h @@ -1197,6 +1197,8 @@ class fhandler_pipe: public fhandler_pipe_fifo private: HANDLE read_mtx; pid_t popen_pid; + bool was_blocking_read_pipe; + bool is_blocking_read_pipe; HANDLE query_hdl; HANDLE hdl_cnt_mtx; HANDLE query_hdl_proc; @@ -1287,6 +1289,7 @@ class fhandler_pipe: public fhandler_pipe_fifo } static void spawn_worker (int fileno_stdin, int fileno_stdout, int fileno_stderr); + static void sigproc_worker (void); }; #define CYGWIN_FIFO_PIPE_NAME_LEN 47 diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index a89f09d087..5c5ff73f0a 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1475,14 +1475,7 @@ wait_sig (VOID *) } break; case __SIGNONCYGCHLD: - cygheap_fdenum cfd (false); - while (cfd.next () >= 0) - if (cfd->get_dev () == FH_PIPEW) - { - fhandler_pipe *pipe = (fhandler_pipe *)(fhandler_base *) cfd; - if (pipe->need_close_query_hdl ()) - pipe->close_query_handle (); - } + fhandler_pipe::sigproc_worker (); break; } if (clearwait && !have_execed)