[前][次][番号順一覧][スレッド一覧]

ruby-changes:63213

From: nagachika <ko1@a...>
Date: Wed, 30 Sep 2020 19:24:35 +0900 (JST)
Subject: [ruby-changes:63213] f469298339 (ruby_2_7): merge revision(s) f96216df8dfd2d1e206150572912289f4dda7386,0091fac1d8de07e86fef8315ba77609bed9dd7f5,04c704c5c967ea9bded6bf645439fe59c7d9f7d6,23655e6de5ee989feb8c65c7061fe9a71579dc54,7cb8904a12c850ee30dcd67817fa2f9dc3fee813,41168f69fbeb32cfc88210911d62e419b8116589,87f6154bb4c67ca77ee353bb1fe25a922036c0e5: [Backport #17202]

https://git.ruby-lang.org/ruby.git/commit/?id=f469298339

From f46929833923d96e4dc706945fd537a1caaebe66 Mon Sep 17 00:00:00 2001
From: nagachika <nagachika@r...>
Date: Wed, 30 Sep 2020 19:24:17 +0900
Subject: merge revision(s)
 f96216df8dfd2d1e206150572912289f4dda7386,0091fac1d8de07e86fef8315ba77609bed9dd7f5,04c704c5c967ea9bded6bf645439fe59c7d9f7d6,23655e6de5ee989feb8c65c7061fe9a71579dc54,7cb8904a12c850ee30dcd67817fa2f9dc3fee813,41168f69fbeb32cfc88210911d62e419b8116589,87f6154bb4c67ca77ee353bb1fe25a922036c0e5:
 [Backport #17202]

	Remove "All Rights Reserved." from Copyright statement.

	Patch assembly so that it aligns properly

	Removed trailing spaces [ci skip]

	Fix build error on Apple silicon macOS

	This patch will fix following build error on macOS 11.0 + Xcode 12 beta.

	```
	$ ./configure
	$ make V=1
		BASERUBY = /Users/watson/.rbenv/shims/ruby --disable=gems
		CC = clang -fdeclspec
		LD = ld
		LDSHARED = clang -fdeclspec -dynamiclib
		CFLAGS = -O3 -ggdb3 -Wall -Wextra -Werror=deprecated-declarations -Werror=division-by-zero -Werror=implicit-function-declaration -Werror=implicit-int -Werror=misleading-indentation -Werror=pointer-arith -Werror=shorten-64-to-32 -Werror=write-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Werror=extra-tokens -std=gnu99  -pipe
		XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -DRUBY_EXPORT -fPIE -DCANONICALIZATION_FOR_MATHN -I. -I.ext/include/arm64-darwin20 -I./include -I. -I./enc/unicode/12.1.0
		CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT
		DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -fstack-protector-strong -Wl,-pie -framework Security -framework Foundation
		SOLIBS = -lpthread -ldl -lobjc
		LANG = ja_JP.UTF-8
		LC_ALL =
		LC_CTYPE =
		MFLAGS =
	Apple clang version 12.0.0 (clang-1200.0.22.19)
	Target: arm64-apple-darwin20.0.0
	Thread model: posix
	InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
	clang -fdeclspec -O3 -ggdb3 -Wall -Wextra -Werror=deprecated-declarations -Werror=division-by-zero -Werror=implicit-function-declaration -Werror=implicit-int -Werror=misleading-indentation -Werror=pointer-arith -Werror=shorten-64-to-32 -Werror=write-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Werror=extra-tokens -std=gnu99  -pipe  -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -DRUBY_EXPORT -fPIE -DCANONICALIZATION_FOR_MATHN -I. -I.ext/include/arm64-darwin20 -I./include -I. -I./enc/unicode/12.1.0 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT    -o cont.o -c cont.c
	In file included from cont.c:19:
	./coroutine/ucontext/Context.h:32:5: error: 'getcontext' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations]
	    getcontext(&context->state);
	    ^
	/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ucontext.h:37:6: note: 'getcontext' has been
	      explicitly marked deprecated here
	int  getcontext(ucontext_t *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_2_0, __IPHONE_2_0) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
	     ^
	In file included from cont.c:19:
	./coroutine/ucontext/Context.h:51:5: error: 'makecontext' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations]
	    makecontext(&context->state, (void(*)(void))coroutine_trampoline, 2, (void*)start, (void*)context);
	    ^
	/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ucontext.h:38:6: note: 'makecontext' has been
	      explicitly marked deprecated here
	void makecontext(ucontext_t *, void (*)(), int, ...) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_2_0, __IPHONE_2_0) __WATCHOS_PROHI...
	     ^
	In file included from cont.c:19:
	./coroutine/ucontext/Context.h:59:5: error: 'swapcontext' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations]
	    swapcontext(&current->state, &target->state);
	    ^
	/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ucontext.h:40:6: note: 'swapcontext' has been
	      explicitly marked deprecated here
	int  swapcontext(ucontext_t * __restrict, const ucontext_t * __restrict) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_2_0, __IPHONE_...
	     ^
	3 errors generated.
	make: *** [cont.o] Error 1
	```

	Extract correct processor name for ARM64 Macs

	Prefix export symbol prefix to coroutine_transfer

	Revert "Revert "[ruby/fiddle] Use ffi_closure_free by default.
	 (#20)""

	This reverts commit efd641ffab34e433a8d8a7d78914576f2425aa90.

	This changeset seems to be needed to suppress a warning on Ubuntu 20.04
	https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu/ruby-master/log/20200304T033004Z.log.html.gz
	```
	closure.c:264:5: warning: 'ffi_prep_closure' is deprecated: use ffi_prep_closure_loc instead [-Wdeprecated-declarations]
	  264 |     result = ffi_prep_closure(pcl, cif, callback, (void *)self);
	      |     ^~~~~~
	```

	I guess there was a reason why the commit was reverted (maybe some CIs
	failed?), so try it again.

diff --git a/configure.ac b/configure.ac
index ccf47a1..6766df2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2309,6 +2309,9 @@ AS_CASE([$rb_cv_coroutine], [yes|''], [ https://github.com/ruby/ruby/blob/trunk/configure.ac#L2309
         [x*64-darwin*], [
             rb_cv_coroutine=amd64
         ],
+        [arm64-darwin*], [
+            rb_cv_coroutine=arm64
+        ],
         [x*64-linux*], [
             AS_CASE(["$ac_cv_sizeof_voidp"],
                 [8], [ rb_cv_coroutine=amd64 ],
diff --git a/coroutine/amd64/Context.S b/coroutine/amd64/Context.S
index ac986b2..051db1c 100644
--- a/coroutine/amd64/Context.S
+++ b/coroutine/amd64/Context.S
@@ -2,7 +2,7 @@ https://github.com/ruby/ruby/blob/trunk/coroutine/amd64/Context.S#L2
 ##  This file is part of the "Coroutine" project and released under the MIT License.
 ##
 ##  Created by Samuel Williams on 10/5/2018.
-##  Copyright, 2018, by Samuel Williams. All rights reserved.
+##  Copyright, 2018, by Samuel Williams.
 ##
 
 #define TOKEN_PASTE(x,y) x##y
diff --git a/coroutine/amd64/Context.h b/coroutine/amd64/Context.h
index 8fe323c..352ed55 100644
--- a/coroutine/amd64/Context.h
+++ b/coroutine/amd64/Context.h
@@ -2,7 +2,7 @@ https://github.com/ruby/ruby/blob/trunk/coroutine/amd64/Context.h#L2
  *  This file is part of the "Coroutine" project and released under the MIT License.
  *
  *  Created by Samuel Williams on 10/5/2018.
- *  Copyright, 2018, by Samuel Williams. All rights reserved.
+ *  Copyright, 2018, by Samuel Williams.
 */
 
 #pragma once
diff --git a/coroutine/arm32/Context.S b/coroutine/arm32/Context.S
index 4308e1d..c5338f0 100644
--- a/coroutine/arm32/Context.S
+++ b/coroutine/arm32/Context.S
@@ -2,21 +2,28 @@ https://github.com/ruby/ruby/blob/trunk/coroutine/arm32/Context.S#L2
 ##  This file is part of the "Coroutine" project and released under the MIT License.
 ##
 ##  Created by Samuel Williams on 10/5/2018.
-##  Copyright, 2018, by Samuel Williams. All rights reserved.
+##  Copyright, 2018, by Samuel Williams.
 ##
 
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
+.file "Context.S"
 .text
+.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+.align 2
+.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer),%function
+.syntax unified
 
-.globl coroutine_transfer
-coroutine_transfer:
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
 	# Save caller state (8 registers + return address)
 	push {r4-r11,lr}
-	
+
 	# Save caller stack pointer
 	str sp, [r0]
-	
+
 	# Restore callee stack pointer
 	ldr sp, [r1]
-	
+
 	# Restore callee state (8 registers program counter)
 	pop {r4-r11,pc}
diff --git a/coroutine/arm32/Context.h b/coroutine/arm32/Context.h
index e29fe1b..6b68079 100644
--- a/coroutine/arm32/Context.h
+++ b/coroutine/arm32/Context.h
@@ -2,7 +2,7 @@ https://github.com/ruby/ruby/blob/trunk/coroutine/arm32/Context.h#L2
  *  This file is part of the "Coroutine" project and released under the MIT License.
  *
  *  Created by Samuel Williams on 10/5/2018.
- *  Copyright, 2018, by Samuel Williams. All rights reserved.
+ *  Copyright, 2018, by Samuel Williams.
 */
 
 #pragma once
diff --git a/coroutine/arm64/Context.S b/coroutine/arm64/Context.S
index f6e5f0a..04e3f6d 100644
--- a/coroutine/arm64/Context.S
+++ b/coroutine/arm64/Context.S
@@ -2,18 +2,21 @@ https://github.com/ruby/ruby/blob/trunk/coroutine/arm64/Context.S#L2
 ##  This file is part of the "Coroutine" project and released under the MIT License.
 ##
 ##  Created by Samuel Williams on 10/5/2018.
-##  Copyright, 2018, by Samuel Williams. All rights reserved.
+##  Copyright, 2018, by Samuel Williams.
 ##
 
+#define TOKEN_PASTE(x,y) x##y
+#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
+
 .text
 .align 2
 
-.global coroutine_transfer
-coroutine_transfer:
+.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
+PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
 
 	# Make space on the stack for caller registers
 	sub sp, sp, 0xb0
-	
+
 	# Save caller registers
 	stp d8, d9, [sp, 0x00]
 	stp d10, d11, [sp, 0x10]
diff --git a/coroutine/arm64/Context.h b/coroutine/arm64/Context.h
index a1ae921..3bc19b1 100644
--- a/coroutine/arm64/Context.h
+++ b/coroutine/arm64/Context.h
@@ -2,7 +2,7 @@ https://github.com/ruby/ruby/bl (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]