From fbcfed7c2d27496063d79e4d2a2a694d0fe67209 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 21 Apr 2014 19:52:24 -0400 Subject: [PATCH] further micro-optimize startup code for size there is no reason (and seemingly there never was any) for __init_security to be its own function. it's linked unconditionally so it can just be placed inline in __init_libc. --- src/env/__init_security.c | 21 --------------------- src/env/__libc_start_main.c | 16 ++++++++++++++-- 2 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 src/env/__init_security.c diff --git a/src/env/__init_security.c b/src/env/__init_security.c deleted file mode 100644 index ae623955..00000000 --- a/src/env/__init_security.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include -#include -#include "syscall.h" -#include "libc.h" -#include "atomic.h" - -void __init_security(size_t *aux) -{ - struct pollfd pfd[3] = { {.fd=0}, {.fd=1}, {.fd=2} }; - int i; - - if (aux[AT_UID]==aux[AT_EUID] && aux[AT_GID]==aux[AT_EGID] - && !aux[AT_SECURE]) return; - - __syscall(SYS_poll, pfd, 3, 0); - for (i=0; i<3; i++) if (pfd[i].revents&POLLNVAL) - if (__syscall(SYS_open, "/dev/null", O_RDWR|O_LARGEFILE)<0) - a_crash(); - libc.secure = 1; -} diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index 539f72e5..d7ec3abd 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -1,8 +1,11 @@ #include +#include +#include +#include "syscall.h" +#include "atomic.h" #include "libc.h" void __init_tls(size_t *); -void __init_security(size_t *); #ifndef SHARED static void dummy() {} @@ -37,7 +40,16 @@ void __init_libc(char **envp, char *pn) __init_tls(aux); __init_ssp((void *)aux[AT_RANDOM]); - __init_security(aux); + + if (aux[AT_UID]==aux[AT_EUID] && aux[AT_GID]==aux[AT_EGID] + && !aux[AT_SECURE]) return; + + struct pollfd pfd[3] = { {.fd=0}, {.fd=1}, {.fd=2} }; + __syscall(SYS_poll, pfd, 3, 0); + for (i=0; i<3; i++) if (pfd[i].revents&POLLNVAL) + if (__syscall(SYS_open, "/dev/null", O_RDWR|O_LARGEFILE)<0) + a_crash(); + libc.secure = 1; } int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv) -- 2.25.1