Remove bp-start.h and INIT_ARGV_and_ENVIRON.

This commit is contained in:
Joseph Myers 2013-02-01 00:06:18 +00:00
parent f3499f95c8
commit 3a7ac8a0f5
4 changed files with 9 additions and 74 deletions

View File

@ -1,5 +1,13 @@
2013-01-31 Joseph Myers <joseph@codesourcery.com>
[BZ #13550]
* sysdeps/generic/bp-start.h: Remove file.
* csu/libc-start.c: Don't include <bp-start.h>.
(LIBC_START_MAIN): Set up __environ directly instead of using
INIT_ARGV_and_ENVIRON.
* sysdeps/unix/sysv/linux/powerpc/libc-start.c: Don't include
<bp-start.h>.
[BZ #13550]
* sysdeps/generic/bp-checks.h (CHECK_IOCTL): Remove both
definitions.

View File

@ -19,7 +19,6 @@
#include <stdio.h>
#include <unistd.h>
#include <ldsodefs.h>
#include <bp-start.h>
#include <bp-sym.h>
extern void __libc_init_first (int argc, char **argv, char **envp);
@ -140,7 +139,7 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
#ifndef SHARED
char *__unbounded *__unbounded ubp_ev = &ubp_av[argc + 1];
INIT_ARGV_and_ENVIRON;
__environ = ubp_ev;
/* Store the lowest stack address. This is done in ld.so if this is
the code for the DSO. */

View File

@ -1,71 +0,0 @@
/* Bounded-pointer checking macros for C.
Copyright (C) 2000-2013 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Greg McGary <greg@mcgary.org>
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#if __BOUNDED_POINTERS__
/* The command-line arg vector and environment vector come to us from
the OS as an unbounded pointer to an array of unbounded strings.
The user's main expects argv and __environ to be bounded pointers
to arrays of bounded strings. */
# define INIT_ARGV_and_ENVIRON \
do { \
int envc; \
for (envc = 0; *ubp_ev; ubp_ev++, envc++) \
; \
ubp_ev -= envc; \
\
/* GKM FIXME: we could save some space by allocating only enough for \
the additional low & high words, and destructively rewriting \
argv in place. */ \
__ptrvalue (argv) = __ptrlow (argv) \
= alloca ((argc + envc + 2) * sizeof (*argv)); \
__ptrhigh (argv) = __ptrvalue (argv) + argc + 1; \
__ptrvalue (__environ) = __ptrlow (__environ) = __ptrhigh (argv); \
__ptrhigh (__environ) = __ptrvalue (__environ) + envc + 1; \
boundify_vector (__environ, ubp_ev); \
boundify_vector (argv, ubp_av); \
} while (0)
/* Copy an unbounded vector of unbounded strings into a bounded
counterpart. */
static void
boundify_vector (char **dest, char *__unbounded *__unbounded src)
{
char *__unbounded s;
for (; *src; src++, dest++)
{
__ptrvalue (*dest) = __ptrlow (*dest) = *src;
__ptrhigh (*dest) = src[1];
}
*dest = 0;
/* The OS lays out strings contiguously in vector order,
so */
for (s = __ptrvalue (dest[-1]); *s; s++)
;
__ptrhigh (dest[-1]) = ++s;
}
#else
# define INIT_ARGV_and_ENVIRON __environ = ubp_ev
#endif

View File

@ -19,7 +19,6 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <sysdep.h>
#include <bp-start.h>
#include <bp-sym.h>