glibc's implementation of getopt includes code to parse an environment
variable named _XXX_GNU_nonoption_argv_flags_ (where XXX is the
current process's PID in decimal); but all of it has been #ifdefed out
since 2001, with no official way to turn it back on.
According to commentary in our config.h.in, bash version 2.0 set this
environment variable to indicate argv elements that were the result of
glob expansion and therefore should not be treated as options, but the
feature was "disabled later" because "it caused problems". According
to bash's CHANGES file, "later" was release 2.01; it gives no more
detail about what the problems were.
Version 2.0 of bash was released on the last day of 1996, and version
2.01 in June of 1997. Twenty years later, I think it is safe to
assume that this environment variable isn't coming back.
* config.h.in (USE_NONOPTION_FLAGS): Remove.
* csu/init-first.c: Remove all #ifdef USE_NONOPTION_FLAGS blocks.
* sysdeps/mach/hurd/i386/init-first.c: Likewise.
* posix/getopt_int.h: Likewise.
* posix/getopt.c: Likewise. Also remove SWAP_FLAGS and the
__libc_argc and __libc_argv externs, which were only used by
#ifdef USE_NONOPTION_FLAGS blocks.
* posix/getopt_init.c: Remove file.
* posix/Makefile (routines): Remove getopt_init.
* include/getopt.h: Don't declare __getopt_initialize_environment.
* manual/getopt.texi: Remove mention of USE_NONOPTION_FLAGS in
a comment.
dlopening libraries from a static program would dlopen libc.so,
which thus needs its own initialization, done in posixland_init,
which was missing initializing RPCs so far.
ChangeLog:
2014-11-23 Samuel Thibault <samuel.thibault@ens-lyon.org>
* sysdeps/mach/hurd/i386/init-first.c (posixland_init): Call
__mach_init in dlopened libc.
2005-10-16 Roland McGrath <roland@frob.com>
[BZ #1253]
* sysdeps/mach/hurd/i386/init-first.c (init): Make cast kosher.
(_hurd_stack_setup): Don't declare with arguments and ellipsis.
Use __builtin_frame_address and __builtin_return_address.
(_dl_init_first): Likewise.
* sysdeps/mach/hurd/i386/init-first.c (_cthread_init_routine): Declare
as weak extern.
(init): Check for it being undefined.
clobber the `ebp' register.
* sysdeps/mach/hurd/i386/Makefile (CFLAGS-init-first.c): Removed.
Reverts change from 2004-05-07 by Jeroen Dekkers.
* sysdeps/mach/hurd/i386/init-first.c (init): Changed the type of
NEWSP from `void *' to `int *'. Changed all casts accordingly.
just return &_nl_C_locobj instead of copying it.
* locale/freelocale.c (__freelocale): Check for &_nl_C_locobj.
* locale/duplocale.c (__duplocale): Likewise.
2002-10-07 Roland McGrath <roland@frob.com>
* config.h.in (HAVE_I386_SET_GDT): New #undef.
* sysdeps/mach/configure.in: Define it with new check for i386_set_gdt.
* sysdeps/mach/configure: Regenerated.
2002-10-06 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (INLINE_SYSCALL):
Add all necessary register outputs for syscall-clobbered registers.
2002-10-02 David Mosberger <davidm@hpl.hp.com>
* sysdeps/ia64/bzero.S: Rewritten by Sverre Jarp to tune for
Itanium 2 (and Itanium).
Fix unwind directives and make it fit in 80 columns.
* sysdeps/ia64/memset.S: Ditto.
* sysdeps/ia64/memcpy.S: Ditto.
Move jump table to .rodata section.
2002-10-03 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/i386/init-first.c (_hurd_stack_setup): Add
clobbers to asm.
Change argument type from int to intptr_t.
* locale/global-locale.c (__libc_tsd_LOCALE_data): Conditionalize the
initializer on [! _HURD_THREADVAR_H] (bad kludge).
* sysdeps/mach/hurd/i386/init-first.c (init): Initialize
_HURD_THREADVAR_LOCALE slot to &_nl_global_locale.
* hurd/hurdsig.c (_hurdsig_init): Likewise. Zero other slots.
`default:' to silence new GCC warning.
Rewrite cast of lvalue to silence new GCC warning.
* sysdeps/mach/hurd/i386/init-first.c: Avoid multi-line strings in asm.
2001-08-18 Mark Kettenis <kettenis@gnu.org>
* sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ
before calling the cthreads initialization code.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2001-03-24 Mark Kettenis <kettenis@gnu.org>
* sysdeps/mach/hurd/i386/init-first.c: Include <assert.h>.
(_dl_argv): Declare.
(init) [SHARED]: Readjust _dl_argv if we switched to a new stack.
* sysdeps/mach/hurd/i386/init-first.c (init): Don't set __environ
here, before we might move the stack.
(posixland_init): Set __libc_argc, __libc_argc, and __environ here.
(init1): And not here.
(init1): Don't initialize __environ here, since init already does it.
(first_init): New function, broken out of _init.
(_hurd_stack_setup): Use it.
[SHARED] (_dl_init_first): New function, renamed from old _init.
(init1) [SHARED]: Don't call posixland_init here.
(posixland_init): Take ENVP arg, so signature is usual for initializer.
[SHARED] (_init): Define as alias for posixland_init.
[! SHARED] (__libc_first_init): Define as alias for posixland_init.
* sysdeps/i386/dl-machine.h (RTLD_START): Insert the macro
RTLD_START_SPECIAL_INIT before calling initializers.
(RTLD_START_SPECIAL_INIT): Define to empty if undefined.
* sysdeps/mach/hurd/i386/dl-machine.h: New file.
* sysdeps/mach/hurd/dl-sysdep.c (_dl_init_first): New weak function.
* elf/Versions ({libc,ld.so}: GLIBC_2.2): Add _dl_init_first.
* sysdeps/mach/hurd/i386/init-first.c (init): Move the inline
assembler code to switch stacks and call init1 outside this
function. Inside `init' the code was optimized away by gcc
2.95 since it was "clearly" unreachable.
* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
Do something similar for the trampoline code.
* sysdeps/mach/hurd/i386/init-first.c (init): Restored as inline fn.
Use constant _HURD_THREADVARS_MAX for temporary array size.
* Makeconfig ($(common-objpfx)sysd-sorted): Use @ instead of / as sed
s separator, since $(..) might contain a /.
* sysdeps/mach/hurd/i386/init-first.c (init): Provide temporary storage
for the per-thread variables of the main user thread to make it
possible to use malloc as soon as _hurd_preinit_hook has been run.
For cthreads, copy values to new stack from there.
For non-cthreads, malloc threadvar array here and copy from temp space.
(init1): No longer initialize threadvars here.
(doinit1): Made static void at top level.
(init): Folded into [PIC] _init or [!PIC] doinit1, since GCC cannot
inline a function that uses dynamic auto arrays.
* mach/Versions: Add evc_wait, mach_error, mach_error_string,
mach_error_type, mach_msg_destroy, mig_deallocate_reply_port.
Remove __mach_host_self, __mach_reply_port, __mach_setup_thread,
__mach_port_allocate, __mach_port_allocate_name,
__mach_port_deallocate, __mach_port_insert_right, __mutex_init,
__mutex_trylock, __mutex_lock, __mutex_unlock, __swtch, __switch,
__task_create, __task_suspend, __task_set_special_port,
__task_terminate, __thread_depress_abort, __thread_switch,
__vm_allocate, __vm_deallocate, __vm_map. These functions are not
used outside libc.
* sysdeps/mach/hurd/Versions: New file.
[libc, GLIBC_2.0]: Add _cthread_exit_routine and
_cthread_init_routine. These are set by the Hurd cthreads library.
Add __getcwd, __mmap. If we don't add these, the weak definitions in
the dynamic linker will not be replaced by the corresponding shared
library routines once they are loaded.
1998-10-21 Mark Kettenis <kettenis@phys.uva.nl>
* sysdeps/mach/hurd/i386/init-first.c: Only define
__libc_enable_secure if PIC is not defined.
1998-10-25 Roland McGrath <roland@baalperazim.frob.com>
* argp/Versions: Add _argp_unlock_xxx. Lock-savvy functions call this
to recurse into argp.
* sysdeps/mach/hurd/i386/init-first.c (init1): Don't call
__libc_init_secure. Instead set __libc_enable_secure here from
the exec flags.
(__libc_enable_secure): New variable it.
* sysdeps/mach/hurd/enbl-secure.c: New file, empty placeholder module.