<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/coroutine/amd64/Context.S, branch v4.0.3</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Substitute `coroutine_transfer` with prefixed symbol in Makefile</title>
<updated>2024-10-08T14:29:49+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-10-08T07:12:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1f39184bc7e564eefc9c6e09e038e20e112bef20'/>
<id>1f39184bc7e564eefc9c6e09e038e20e112bef20</id>
<content type='text'>
```
coroutine/arm64/Context.S:31:57: error: invoking macro TOKEN_PASTE argument 1: empty macro arguments are undefined in ISO C90 [-Wpedantic]
   31 | .global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
      |                                                         ^
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
```
coroutine/arm64/Context.S:31:57: error: invoking macro TOKEN_PASTE argument 1: empty macro arguments are undefined in ISO C90 [-Wpedantic]
   31 | .global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
      |                                                         ^
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't emit ELF notes on non-ELF platforms</title>
<updated>2024-08-22T07:35:43+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>ktsanaktsidis@zendesk.com</email>
</author>
<published>2024-08-19T06:25:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=86c2724e75375ceb165c378ed4261c551136e593'/>
<id>86c2724e75375ceb165c378ed4261c551136e593</id>
<content type='text'>
These apparently break compilation on old MacOS toolchains, because the
MachO section name is capped to 16 chars (although, on my MacOS, at
least, the section name just gets truncated). Nevertheless, these serve
no purpose on non-ELF platforms (they're part of the LSB Linux ABI).

[Bug #20677]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These apparently break compilation on old MacOS toolchains, because the
MachO section name is capped to 16 chars (although, on my MacOS, at
least, the section name just gets truncated). Nevertheless, these serve
no purpose on non-ELF platforms (they're part of the LSB Linux ABI).

[Bug #20677]
</pre>
</div>
</content>
</entry>
<entry>
<title>Do not define SHSTK feature for amd64 Context.S</title>
<updated>2024-07-07T10:14:44+00:00</updated>
<author>
<name>KJ Tsanaktsidis</name>
<email>kj@kjtsanaktsidis.id.au</email>
</author>
<published>2024-07-06T05:00:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8ec67052e67dff62b828820e381a94a3acc73459'/>
<id>8ec67052e67dff62b828820e381a94a3acc73459</id>
<content type='text'>
We do not implement CET shadow-stack switching in amd64 Context.S. If
you compile Ruby with `-fcf-protection=full` and run it with
`GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK` exported, it will crash with a
control flow exception.

Configure the appropriate notes at the end of Context.S

[Bug #18061]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We do not implement CET shadow-stack switching in amd64 Context.S. If
you compile Ruby with `-fcf-protection=full` and run it with
`GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK` exported, it will crash with a
control flow exception.

Configure the appropriate notes at the end of Context.S

[Bug #18061]
</pre>
</div>
</content>
</entry>
<entry>
<title>Use `__CET__` macro to enable IBT support. (#11081)</title>
<updated>2024-07-03T23:37:41+00:00</updated>
<author>
<name>Vít Ondruch</name>
<email>vondruch@redhat.com</email>
</author>
<published>2024-07-03T23:37:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d9398ac430062891185afe34b37dd293615af941'/>
<id>d9398ac430062891185afe34b37dd293615af941</id>
<content type='text'>
According to the GCC documentation [1], the macro `__CET__` is dfined
when `-fcf-protection` compiler option is used. Therefore use this macro
to enable IBT support instead of special casing for `__OpenBSD__`.

[1]: https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fcf-protection</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to the GCC documentation [1], the macro `__CET__` is dfined
when `-fcf-protection` compiler option is used. Therefore use this macro
to enable IBT support instead of special casing for `__OpenBSD__`.

[1]: https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fcf-protection</pre>
</div>
</content>
</entry>
<entry>
<title>Use ENDBR instruction in amd64 coroutine on OpenBSD</title>
<updated>2024-06-13T14:28:59+00:00</updated>
<author>
<name>Jeremy Evans</name>
<email>code@jeremyevans.net</email>
</author>
<published>2024-06-12T23:32:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a60831f9b6ce7ab7bddc4cb32a04b2bb2e987c0d'/>
<id>a60831f9b6ce7ab7bddc4cb32a04b2bb2e987c0d</id>
<content type='text'>
When running on newer Intel processors supporting the feature,
OpenBSD enforces indirect branch tracking.  Without this endbr64
instruction, jumps to the coroutine_transfer function result
in SIGILL on OpenBSD/amd64 when using such processors.

The OpenBSD Ruby ports have been using a patch similar to this
for the past two months.

From some research, cet.h has been supported by GCC for about
6 years and LLVM for about 4 years.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When running on newer Intel processors supporting the feature,
OpenBSD enforces indirect branch tracking.  Without this endbr64
instruction, jumps to the coroutine_transfer function result
in SIGILL on OpenBSD/amd64 when using such processors.

The OpenBSD Ruby ports have been using a patch similar to this
for the past two months.

From some research, cet.h has been supported by GCC for about
6 years and LLVM for about 4 years.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid memory dependency between instructions. (#8284)</title>
<updated>2023-08-25T01:28:33+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2023-08-25T01:28:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=40d774bec68de3f252c0b252d9d0303a67bee0cb'/>
<id>40d774bec68de3f252c0b252d9d0303a67bee0cb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Generating note.GNU-stack section for FreeBSD on x86.</title>
<updated>2021-03-05T01:33:52+00:00</updated>
<author>
<name>David Carlier</name>
<email>devnexen@gmail.com</email>
</author>
<published>2021-03-04T22:12:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0ead818d81c975275238878c81f300dd404e0722'/>
<id>0ead818d81c975275238878c81f300dd404e0722</id>
<content type='text'>
Not enabling for ELF in general as not all platform support it
 (e.g. NetBSD, implictly stack never executable).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Not enabling for ELF in general as not all platform support it
 (e.g. NetBSD, implictly stack never executable).
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove "All Rights Reserved." from Copyright statement.</title>
<updated>2019-12-27T23:41:47+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2019-12-27T23:41:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f96216df8dfd2d1e206150572912289f4dda7386'/>
<id>f96216df8dfd2d1e206150572912289f4dda7386</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add `ucontext` coroutine implementation for generic fallback.</title>
<updated>2019-06-26T08:19:53+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2019-06-24T11:54:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6c6bf9ffcbfeb8be9d9c342e7604b74ec819e88a'/>
<id>6c6bf9ffcbfeb8be9d9c342e7604b74ec819e88a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unused symbols</title>
<updated>2019-05-16T12:58:42+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2019-05-16T09:58:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e0f0ab959e9a0fa3db8dfdb2a493b057d6e7541b'/>
<id>e0f0ab959e9a0fa3db8dfdb2a493b057d6e7541b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
