diff mbox series

misc: Turn sstk into a compat symbol

Message ID 87wo61xm8b.fsf@mid.deneb.enyo.de
State New
Headers show
Series misc: Turn sstk into a compat symbol | expand

Commit Message

Florian Weimer April 27, 2020, 10:21 a.m. UTC
It is not implemented anywhere.  There is an osf_sstk system call on
alpha, but it is not used to implement sstk, and the system call
is not implemented on Linux, either.

-----
 misc/sstk.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

Comments

Andreas Schwab April 27, 2020, 10:38 a.m. UTC | #1
On Apr 27 2020, Florian Weimer wrote:

> It is not implemented anywhere.  There is an osf_sstk system call on
> alpha, but it is not used to implement sstk, and the system call
> is not implemented on Linux, either.

Ok.

Andreas.
Zack Weinberg April 27, 2020, 12:38 p.m. UTC | #2
On Mon, Apr 27, 2020 at 7:01 AM Florian Weimer <fw@deneb.enyo.de> wrote:
>
> It is not implemented anywhere.  There is an osf_sstk system call on
> alpha, but it is not used to implement sstk, and the system call
> is not implemented on Linux, either.

Maybe you should also remove the entry for sstk from sysdeps/unix/syscalls.list?

zw
Florian Weimer April 27, 2020, 12:52 p.m. UTC | #3
* Zack Weinberg:

> On Mon, Apr 27, 2020 at 7:01 AM Florian Weimer <fw@deneb.enyo.de> wrote:
>>
>> It is not implemented anywhere.  There is an osf_sstk system call on
>> alpha, but it is not used to implement sstk, and the system call
>> is not implemented on Linux, either.
>
> Maybe you should also remove the entry for sstk from
> sysdeps/unix/syscalls.list?

Indeed, and I also forgot to add attribute_compat_text_section.

8<------------------------------------------------------------------8<
Subject: misc: Remove sstk from the autogenerated system call list
    
This change should not have an effect because the system call was
never defined.  Also add the misssing attribute_compat_text_section
attribute to the sstk function (a minor optimization).

Fixes commit 9cc93ba0973ad04ee26c515a1552afb85e73c6ba
("misc: Turn sstk into a compat symbol").

diff --git a/misc/sstk.c b/misc/sstk.c
index 0a2a967917..dda6f7b426 100644
--- a/misc/sstk.c
+++ b/misc/sstk.c
@@ -19,7 +19,7 @@
 #include <shlib-compat.h>
 
 #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
-void *
+void * attribute_compat_text_section
 sstk (int increment)
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 01c4a0e6b1..e8f8718b04 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -78,7 +78,6 @@ sigaction	-	sigaction	i:ipp	__sigaction	sigaction
 sigsuspend	-	sigsuspend	Ci:p	sigsuspend
 socket		-	socket		i:iii	__socket	socket
 socketpair	-	socketpair	i:iiif	socketpair
-sstk		-	sstk		b:i	sstk
 statfs		-	statfs		i:sp	__statfs	statfs
 swapoff		-	swapoff		i:s	swapoff
 swapon		-	swapon		i:s	swapon
Joseph Myers April 27, 2020, 8:31 p.m. UTC | #4
In general making something (in the user namespace, not necessarily in the 
case of a symbol starting _) into a compat symbol should get an entry in 
NEWS under "Deprecated and removed features, and other changes affecting 
compatibility:".  We've done this even for functions that could not 
actually work at runtime (e.g. the wrappers for various obsolete Linux 
kernel syscalls removed from the kernel before the oldest kernel version 
supported by glibc at the time of making the symbols into compat symbols).
Florian Weimer April 28, 2020, 10:11 a.m. UTC | #5
* Joseph Myers:

> In general making something (in the user namespace, not necessarily in the 
> case of a symbol starting _) into a compat symbol should get an entry in 
> NEWS under "Deprecated and removed features, and other changes affecting 
> compatibility:".  We've done this even for functions that could not 
> actually work at runtime (e.g. the wrappers for various obsolete Linux 
> kernel syscalls removed from the kernel before the oldest kernel version 
> supported by glibc at the time of making the symbols into compat symbols).

Thanks.  Like this?

8<------------------------------------------------------------------8<
Subject: misc: Remove sstk from the autogenerated system call list

This change should not have an effect because the system call was
never defined.  Also add the misssing attribute_compat_text_section
attribute to the sstk function (a minor optimization).  Also update the
NEWS file to document the change.

Fixes commit 9cc93ba0973ad04ee26c515a1552afb85e73c6ba
("misc: Turn sstk into a compat symbol").

-----
 NEWS                       | 4 ++++
 misc/sstk.c                | 2 +-
 sysdeps/unix/syscalls.list | 1 -
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index 0e627b3405..834de03bda 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,10 @@ Deprecated and removed features, and other changes affecting compatibility:
   but always fails with ENOSYS.  This reflects the removal of the system
   call from all architectures, starting with Linux 5.5.
 
+* The sstk function is no longer available to newly linked binaries.
+  Its implementation always returned an array, and the function was not
+  declared in any header file.
+
 Changes to build and runtime requirements:
 
   [Add changes to build and runtime requirements here]
diff --git a/misc/sstk.c b/misc/sstk.c
index 0a2a967917..dda6f7b426 100644
--- a/misc/sstk.c
+++ b/misc/sstk.c
@@ -19,7 +19,7 @@
 #include <shlib-compat.h>
 
 #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
-void *
+void * attribute_compat_text_section
 sstk (int increment)
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 01c4a0e6b1..e8f8718b04 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -78,7 +78,6 @@ sigaction	-	sigaction	i:ipp	__sigaction	sigaction
 sigsuspend	-	sigsuspend	Ci:p	sigsuspend
 socket		-	socket		i:iii	__socket	socket
 socketpair	-	socketpair	i:iiif	socketpair
-sstk		-	sstk		b:i	sstk
 statfs		-	statfs		i:sp	__statfs	statfs
 swapoff		-	swapoff		i:s	swapoff
 swapon		-	swapon		i:s	swapon
Florian Weimer April 28, 2020, 10:35 a.m. UTC | #6
* Florian Weimer:

> * Joseph Myers:
>
>> In general making something (in the user namespace, not necessarily in the 
>> case of a symbol starting _) into a compat symbol should get an entry in 
>> NEWS under "Deprecated and removed features, and other changes affecting 
>> compatibility:".  We've done this even for functions that could not 
>> actually work at runtime (e.g. the wrappers for various obsolete Linux 
>> kernel syscalls removed from the kernel before the oldest kernel version 
>> supported by glibc at the time of making the symbols into compat symbols).
>
> Thanks.  Like this?

Now with the weird typo fixed (sorry).

8<------------------------------------------------------------------8<
This change should not have an effect because the system call was
never defined.  Also add the misssing attribute_compat_text_section
attribute to the sstk function (a minor optimization).  Also update the
NEWS file to document the change.

Fixes commit 9cc93ba0973ad04ee26c515a1552afb85e73c6ba
("misc: Turn sstk into a compat symbol").

-----
 NEWS                       | 4 ++++
 misc/sstk.c                | 2 +-
 sysdeps/unix/syscalls.list | 1 -
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index 0e627b3405..f58436c91a 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,10 @@ Deprecated and removed features, and other changes affecting compatibility:
   but always fails with ENOSYS.  This reflects the removal of the system
   call from all architectures, starting with Linux 5.5.
 
+* The sstk function is no longer available to newly linked binaries.
+  Its implementation always returned with a failure, and the function
+  was not declared in any header file.
+
 Changes to build and runtime requirements:
 
   [Add changes to build and runtime requirements here]
diff --git a/misc/sstk.c b/misc/sstk.c
index 0a2a967917..dda6f7b426 100644
--- a/misc/sstk.c
+++ b/misc/sstk.c
@@ -19,7 +19,7 @@
 #include <shlib-compat.h>
 
 #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
-void *
+void * attribute_compat_text_section
 sstk (int increment)
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 01c4a0e6b1..e8f8718b04 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -78,7 +78,6 @@ sigaction	-	sigaction	i:ipp	__sigaction	sigaction
 sigsuspend	-	sigsuspend	Ci:p	sigsuspend
 socket		-	socket		i:iii	__socket	socket
 socketpair	-	socketpair	i:iiif	socketpair
-sstk		-	sstk		b:i	sstk
 statfs		-	statfs		i:sp	__statfs	statfs
 swapoff		-	swapoff		i:s	swapoff
 swapon		-	swapon		i:s	swapon
Joseph Myers April 28, 2020, 2:57 p.m. UTC | #7
On Tue, 28 Apr 2020, Florian Weimer wrote:

> Now with the weird typo fixed (sorry).
> 
> 8<------------------------------------------------------------------8<
> This change should not have an effect because the system call was
> never defined.  Also add the misssing attribute_compat_text_section
> attribute to the sstk function (a minor optimization).  Also update the
> NEWS file to document the change.
> 
> Fixes commit 9cc93ba0973ad04ee26c515a1552afb85e73c6ba
> ("misc: Turn sstk into a compat symbol").

This version is OK.
diff mbox series

Patch

diff --git a/misc/sstk.c b/misc/sstk.c
index ad2010b5dd..0a2a967917 100644
--- a/misc/sstk.c
+++ b/misc/sstk.c
@@ -16,17 +16,14 @@ 
    <https://www.gnu.org/licenses/>.  */
 
 #include <errno.h>
+#include <shlib-compat.h>
 
-/* Increase the size of the stack by INCREMENT,
-   and return the address of the bottom of the stack.  */
-
-void *sstk (int increment) __THROW;
-
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_32)
 void *
 sstk (int increment)
 {
   __set_errno (ENOSYS);
   return (void *) -1;
 }
-
-stub_warning (sstk)
+compat_symbol (libc, sstk, sstk, GLIBC_2_0);
+#endif