public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Sergey Bugaev <bugaevc@gmail.com>
To: libc-alpha@sourceware.org, bug-hurd@gnu.org
Cc: Samuel Thibault <samuel.thibault@gnu.org>,
	Sergey Bugaev <bugaevc@gmail.com>
Subject: [RFC PATCH glibc 08/34] hurd: Disable O_TRUNC and FS_RETRY_MAGICAL in rtld
Date: Sun, 19 Mar 2023 18:09:51 +0300	[thread overview]
Message-ID: <20230319151017.531737-9-bugaevc@gmail.com> (raw)
In-Reply-To: <20230319151017.531737-1-bugaevc@gmail.com>

hurd/lookup-retry.c is compiled into rtld, the dynamic linker/loader. To
avoid pulling in file_set_size, file_utimens, tty/ctty stuff, more
string/memory code (memmove, strncpy, strcpy), and more strtoul/itoa
code, compile out support for O_TRUNC and FS_RETRY_MAGICAL when building
hurd/lookup-retry.c for rtld. None of that functionality is useful to
rtld during startup anyway. Keep support for FS_RETRY_MAGICAL("/"),
since that does not pull in much, and is required for following absolute
symlinks.

The large number of extra code being pulled into rtld was noticed by
reviewing librtld.map & elf/librtld.os.map in the build tree.

It is worth noting that once libc.so is loaded, the real __open, __stat,
etc. replace the minimal versions used initially by rtld -- this is
especially important in the Hurd port, where the minimal rtld versions
do not use the dtable and just pass real Mach port names as fds. Thus,
once libc.so is loaded, rtld will gain access to the full
__hurd_file_name_lookup_retry () version, complete with FS_RETRY_MAGICAL
support, which is important in case the program decides to
dlopen ("/proc/self/fd/...") or some such.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
 hurd/lookup-retry.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/hurd/lookup-retry.c b/hurd/lookup-retry.c
index 8850c4fd..99c98104 100644
--- a/hurd/lookup-retry.c
+++ b/hurd/lookup-retry.c
@@ -177,7 +177,7 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
 
 	      /* We got a successful translation.  Now apply any open-time
 		 action flags we were passed.  */
-
+#if !IS_IN (rtld)
 	      if (!err && (flags & O_TRUNC))
 		{
 		  /* Asked to truncate the file.  */
@@ -189,6 +189,7 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
 		      __file_utimens (*result, atime, mtime);
 		    }
 		}
+#endif
 
 	      if (err)
 		__mach_port_deallocate (__mach_task_self (), *result);
@@ -214,6 +215,7 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
 	      file_name = &retryname[1];
 	      break;
 
+#if !IS_IN (rtld)
 	    case 'f':
 	      if (retryname[1] == 'd' && retryname[2] == '/')
 		{
@@ -358,8 +360,9 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port)
 		goto bad_magic;
 	      break;
 
-	    default:
 	    bad_magic:
+#endif /* !IS_IN (rtld) */
+	    default:
 	      err = EGRATUITOUS;
 	      goto out;
 	    }
-- 
2.39.2


  parent reply	other threads:[~2023-03-19 15:11 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-19 15:09 [RFC PATCH 00/34] The rest of the x86_64-gnu port Sergey Bugaev
2023-03-19 15:09 ` [RFC PATCH gnumach 01/34] Add i386_fsgs_base_state Sergey Bugaev
2023-04-02 22:43   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH gnumach 02/34] Remove bootstrap.defs Sergey Bugaev
2023-04-02 22:43   ` Samuel Thibault
2023-04-03  9:39     ` Sergey Bugaev
2023-03-19 15:09 ` [RFC PATCH gnumach 03/34] Make exception subcode a long Sergey Bugaev
2023-04-02 22:45   ` Samuel Thibault
2023-04-03  9:32     ` Sergey Bugaev
2023-04-06  2:11       ` Flávio Cruz
2023-04-10 23:52         ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 04/34] hurd: " Sergey Bugaev
2023-04-02 22:52   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 05/34] hurd: Remove __hurd_threadvar_stack_{offset,mask} Sergey Bugaev
2023-04-02 22:53   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 06/34] hurd: Swap around two function calls Sergey Bugaev
2023-04-02 22:54   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 07/34] hurd: Fix file name in #error Sergey Bugaev
2023-04-02 22:55   ` Samuel Thibault
2023-03-19 15:09 ` Sergey Bugaev [this message]
2023-04-02 22:57   ` [RFC PATCH glibc 08/34] hurd: Disable O_TRUNC and FS_RETRY_MAGICAL in rtld Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 09/34] hurd: Fix _hurd_setup_sighandler () signature Sergey Bugaev
2023-04-02 22:58   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 10/34] stdio-common: Fix building when !IS_IN (libc) Sergey Bugaev
2023-04-02 23:01   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 11/34] mach, hurd: Drop __libc_lock_self0 Sergey Bugaev
2023-04-02 23:02   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 12/34] hurd: More 64-bit integer casting fixes Sergey Bugaev
2023-04-02 23:03   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 13/34] x86-64: Disable prefer_map_32bit_exec tunable on non-Linux Sergey Bugaev
2023-04-02 23:09   ` Samuel Thibault
2023-04-03 10:10     ` Sergey Bugaev
2023-04-03 19:02       ` H.J. Lu
2023-04-03 20:11         ` Sergey Bugaev
2023-03-19 15:09 ` [RFC PATCH glibc 14/34] hurd: Move rtld-strncpy-c.c out of mach/hurd/ Sergey Bugaev
2023-04-02 23:10   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 15/34] hurd: Use uintptr_t for register values in trampoline.c Sergey Bugaev
2023-04-02 23:13   ` Samuel Thibault
2023-03-19 15:09 ` [RFC PATCH glibc 16/34] hurd: Add sys/ucontext.h and sigcontext.h for x86_64 Sergey Bugaev
2023-04-10 18:39   ` Samuel Thibault
2023-04-10 19:07     ` Sergey Bugaev
2023-04-10 19:21       ` Samuel Thibault
2023-04-10 18:58   ` Samuel Thibault
2023-04-10 19:13     ` Sergey Bugaev
2023-04-10 19:21       ` Samuel Thibault
2023-04-10 21:50         ` Sergey Bugaev
2023-04-10 22:23           ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 17/34] hurd: Implement x86_64/intr-msg.h Sergey Bugaev
2023-04-10 18:41   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 18/34] hurd: Port trampoline.c to x86_64 Sergey Bugaev
2023-04-03 11:56   ` [PATCH v2 18.0/34] Alignment-respecting x86_64 trampoline.c Sergey Bugaev
2023-04-03 11:56     ` [PATCH v2 18.1/34] hurd: Do not declare local variables volatile Sergey Bugaev
2023-04-10 18:42       ` Samuel Thibault
2023-04-03 11:56     ` [PATCH v2 18.2/34] hurd: Port trampoline.c to x86_64 Sergey Bugaev
2023-04-10 19:04       ` Samuel Thibault
2023-04-10 21:33         ` Sergey Bugaev
2023-03-19 15:10 ` [RFC PATCH glibc 19/34] hurd: Move a couple of singal-related files to x86 Sergey Bugaev
2023-04-02 23:15   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 20/34] htl: Add tcb-offsets.sym for x86_64 Sergey Bugaev
2023-04-02 23:16   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 21/34] x86_64: Add rtld-stpncpy & rtld-strncpy Sergey Bugaev
2023-04-02 23:18   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 22/34] htl: Implement thread_set_pcsptp for x86_64 Sergey Bugaev
2023-04-02 23:19   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 23/34] elf: Stop including tls.h in ldsodefs.h Sergey Bugaev
2023-04-02 23:20   ` Samuel Thibault
2023-04-03  9:26     ` Sergey Bugaev
2023-04-10 21:26   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 24/34] hurd: Only check for TLS initialization inside rtld or in static builds Sergey Bugaev
2023-04-10 21:33   ` Samuel Thibault
2023-04-11 18:57   ` Samuel Thibault
2023-04-11 19:18     ` Samuel Thibault
2023-04-11 20:03     ` Samuel Thibault
2023-04-11 20:27     ` Sergey Bugaev
2023-04-11 21:23       ` Samuel Thibault
2023-04-12  8:36         ` Sergey Bugaev
2023-04-12  9:00           ` Samuel Thibault
2023-04-12 10:42             ` Sergey Bugaev
2023-04-12 10:45               ` Samuel Thibault
2023-04-12 17:18                 ` Sergey Bugaev
2023-04-12 23:46               ` Samuel Thibault
2023-04-13 10:02                 ` Sergey Bugaev
2023-04-13 10:10                   ` Samuel Thibault
2023-04-13 12:17                     ` Sergey Bugaev
2023-04-13 21:47                       ` Samuel Thibault
2023-04-13 22:21                         ` Samuel Thibault
2023-04-14  8:29                         ` Sergey Bugaev
2023-04-14  8:36                           ` Samuel Thibault
2023-04-14  8:53                             ` Sergey Bugaev
2023-04-14  9:09                               ` Samuel Thibault
2023-04-14  9:23                                 ` Sergey Bugaev
2023-04-14  9:31                                   ` Samuel Thibault
2023-04-17  7:16                               ` Samuel Thibault
2023-04-14 17:34   ` Samuel Thibault
2023-04-14 19:52     ` Sergey Bugaev
2023-03-19 15:10 ` [RFC PATCH glibc 25/34] hurd: Improve reply port handling when exiting signal handlers Sergey Bugaev
2023-04-10 22:03   ` Samuel Thibault
2023-04-11  7:44     ` Sergey Bugaev
2023-04-11 20:15       ` Samuel Thibault
2023-04-11 20:35         ` Sergey Bugaev
2023-04-12 22:54   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 26/34] hurd: Remove __hurd_local_reply_port Sergey Bugaev
2023-04-10 22:07   ` Samuel Thibault
2023-04-10 22:35     ` Samuel Thibault
2023-04-11  8:00     ` Sergey Bugaev
2023-04-11 20:18       ` Samuel Thibault
2023-04-13 11:58         ` [RFC PATCH glibc v2 " Sergey Bugaev
2023-04-13 13:12           ` Samuel Thibault
2023-04-13 13:20             ` Sergey Bugaev
2023-04-13 21:28               ` Samuel Thibault
2023-04-14 17:33           ` Samuel Thibault
2023-04-14 20:29             ` Sergey Bugaev
2023-04-15  6:45               ` Samuel Thibault
2023-04-15  7:34                 ` Sergey Bugaev
2023-04-15  7:42                   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 27/34] hurd: Don't leak __hurd_reply_port0 Sergey Bugaev
2023-04-10 22:25   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 28/34] hurd: Implement _hurd_longjmp_thread_state for x86_64 Sergey Bugaev
2023-04-02 23:23   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 29/34] hurd: Add vm_param.h " Sergey Bugaev
2023-04-02 23:24   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 30/34] hurd: Implement longjmp " Sergey Bugaev
2023-03-19 15:10 ` [RFC PATCH glibc 31/34] hurd: Microoptimize _hurd_self_sigstate () Sergey Bugaev
2023-04-02 23:26   ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 32/34] hurd: Implement sigreturn for x86_64 Sergey Bugaev
2023-04-03 11:47   ` [PATCH v2] " Sergey Bugaev
2023-03-19 15:10 ` [RFC PATCH glibc 33/34] hurd: Create abilist files for lib{mach,hurd}user Sergey Bugaev
2023-03-19 15:19   ` Samuel Thibault
2023-03-19 15:39     ` Sergey Bugaev
2023-03-19 15:43       ` Samuel Thibault
2023-03-19 15:10 ` [RFC PATCH glibc 34/34] hurd: Add expected abilist files for x86_64 Sergey Bugaev
2023-03-19 18:04   ` Florian Weimer
2023-03-19 20:14     ` [PATCH v2] " Sergey Bugaev
2023-03-20  6:30       ` Florian Weimer
2023-03-19 16:44 ` [RFC PATCH 00/34] The rest of the x86_64-gnu port Luca
2023-03-20  5:03   ` Flávio Cruz
2023-04-02 23:30 ` Samuel Thibault
2023-04-10 19:20 ` Samuel Thibault
2023-04-10 21:24   ` Sergey Bugaev
2023-04-10 21:27     ` Samuel Thibault

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230319151017.531737-9-bugaevc@gmail.com \
    --to=bugaevc@gmail.com \
    --cc=bug-hurd@gnu.org \
    --cc=libc-alpha@sourceware.org \
    --cc=samuel.thibault@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).