* Makefile.in (DLL_OFILES): Add tls_pbuf.o.

* autoload.cc (CreateDesktopW): Replace CreateDesktopA.
	(CreateWindowStationW): Replace CreateWindowStationA.
	(GetUserObjectInformationW): Replace GetUserObjectInformationA.
	* cygheap.h (cwdstuff::get): Assume default buffer size NT_MAX_PATH.
	* cygtls.cc (_cygtls::remove): Free temporary TLS path buffers.
	* cygtls.h (TP_NUM_C_BUFS): Define.
	(TP_NUM_W_BUFS): Define.
	(class tls_pathbuf): New class to store pointers to thread local
	temporary path buffers.
	(_local_storage::pathbufs): New member.
	* environ.cc (win_env::add_cache): Use temporary TLS path buffer instead
	of stack based buffer.
	(posify): Get temporary outenv buffer from calling function.
	(environ_init): Create temporary TLS path buffer for posify.
	(build_env): Create Windows environment block as WCHAR buffer.
	* environ.h (build_env): Change declaration accordingly.
	* external.cc (sync_winenv): Accommodate build_env change.
	* fhandler_console.cc (fhandler_console::need_invisible): Use
	GetUserObjectInformationW and CreateWindowStationW.
	* fhandler_process.cc (format_process_maps): Use temporary TLS path
	buffer instead of stack based buffer.
	* fork.cc (frok::parent): Convert to use CreateProcessW.
	* path.cc: Throughout use temporary TLS path buffers instead of stack
	based buffer.  Replace checks for CYG_MAX_PATH by checks for
	NT_MAX_PATH.
	(getfileattr): New function to replace GetFileAttributesA.
	(normalize_win32_path): Remove Win32 and NT long path prefixes.
	(getwd): Assume PATH_MAX + 1 buffer per SUSv3.
	* path.h (class path_conv): Set path buffer to size NT_MAX_PATH.
	(iswdrive): Define.
	* pinfo.cc (commune_process): Use temporary TLS path buffer instead of
	stack based buffer.
	* registry.cc (get_registry_hive_path): Ditto.
	(load_registry_hive): Ditto.
	* spawn.cc (spawn_guts): Convert to use CreateProcessW and
	CreateProcessAsUserW.
	(av::fixup): Open/close file using NtOpenFile/NtClose.
	* syscalls.cc (mknod_worker): Allow PATH_MAX file name.
	(mknod32): Ditto.
	(getusershell): Ditto.
	* tls_pbuf.cc: New file implementing tls_pathbuf and tmp_pathbuf
	methods.
	* tls_pbuf.h: New header for files using tmp_pathbuf.
	* tlsoffsets.h: Regenerate.
	* winsup.h (NT_MAX_PATH): Define as 32767 to avoid USHORT overflow.
This commit is contained in:
Corinna Vinschen
2008-03-07 11:24:51 +00:00
parent d8e218442b
commit 752b16ce35
22 changed files with 467 additions and 203 deletions

View File

@@ -1,6 +1,6 @@
//;# autogenerated: Do not edit.
//; $tls::sizeof__cygtls = 4196;
//; $tls::sizeof__cygtls = 4284;
//; $tls::func = -12700;
//; $tls::pfunc = 0;
//; $tls::el = -12696;
@@ -39,30 +39,30 @@
//; $tls::p__dontuse = 420;
//; $tls::locals = -11216;
//; $tls::plocals = 1484;
//; $tls::_ctinfo = -9600;
//; $tls::p_ctinfo = 3100;
//; $tls::andreas = -9596;
//; $tls::pandreas = 3104;
//; $tls::wq = -9588;
//; $tls::pwq = 3112;
//; $tls::prev = -9560;
//; $tls::pprev = 3140;
//; $tls::next = -9556;
//; $tls::pnext = 3144;
//; $tls::sig = -9552;
//; $tls::psig = 3148;
//; $tls::incyg = -9548;
//; $tls::pincyg = 3152;
//; $tls::spinning = -9544;
//; $tls::pspinning = 3156;
//; $tls::stacklock = -9540;
//; $tls::pstacklock = 3160;
//; $tls::stackptr = -9536;
//; $tls::pstackptr = 3164;
//; $tls::stack = -9532;
//; $tls::pstack = 3168;
//; $tls::initialized = -8508;
//; $tls::pinitialized = 4192;
//; $tls::_ctinfo = -9512;
//; $tls::p_ctinfo = 3188;
//; $tls::andreas = -9508;
//; $tls::pandreas = 3192;
//; $tls::wq = -9500;
//; $tls::pwq = 3200;
//; $tls::prev = -9472;
//; $tls::pprev = 3228;
//; $tls::next = -9468;
//; $tls::pnext = 3232;
//; $tls::sig = -9464;
//; $tls::psig = 3236;
//; $tls::incyg = -9460;
//; $tls::pincyg = 3240;
//; $tls::spinning = -9456;
//; $tls::pspinning = 3244;
//; $tls::stacklock = -9452;
//; $tls::pstacklock = 3248;
//; $tls::stackptr = -9448;
//; $tls::pstackptr = 3252;
//; $tls::stack = -9444;
//; $tls::pstack = 3256;
//; $tls::initialized = -8420;
//; $tls::pinitialized = 4280;
//; __DATA__
#define tls_func (-12700)
@@ -103,27 +103,27 @@
#define tls_p__dontuse (420)
#define tls_locals (-11216)
#define tls_plocals (1484)
#define tls__ctinfo (-9600)
#define tls_p_ctinfo (3100)
#define tls_andreas (-9596)
#define tls_pandreas (3104)
#define tls_wq (-9588)
#define tls_pwq (3112)
#define tls_prev (-9560)
#define tls_pprev (3140)
#define tls_next (-9556)
#define tls_pnext (3144)
#define tls_sig (-9552)
#define tls_psig (3148)
#define tls_incyg (-9548)
#define tls_pincyg (3152)
#define tls_spinning (-9544)
#define tls_pspinning (3156)
#define tls_stacklock (-9540)
#define tls_pstacklock (3160)
#define tls_stackptr (-9536)
#define tls_pstackptr (3164)
#define tls_stack (-9532)
#define tls_pstack (3168)
#define tls_initialized (-8508)
#define tls_pinitialized (4192)
#define tls__ctinfo (-9512)
#define tls_p_ctinfo (3188)
#define tls_andreas (-9508)
#define tls_pandreas (3192)
#define tls_wq (-9500)
#define tls_pwq (3200)
#define tls_prev (-9472)
#define tls_pprev (3228)
#define tls_next (-9468)
#define tls_pnext (3232)
#define tls_sig (-9464)
#define tls_psig (3236)
#define tls_incyg (-9460)
#define tls_pincyg (3240)
#define tls_spinning (-9456)
#define tls_pspinning (3244)
#define tls_stacklock (-9452)
#define tls_pstacklock (3248)
#define tls_stackptr (-9448)
#define tls_pstackptr (3252)
#define tls_stack (-9444)
#define tls_pstack (3256)
#define tls_initialized (-8420)
#define tls_pinitialized (4280)