This is the mail archive of the
mailing list for the Cygwin project.
Re: Why /usr/bin/*.dll must be executable?
On 2012-4-21 1:40, Larry Hall (Cygwin) wrote:
On 4/20/2012 1:32 PM, De-Jian Zhao wrote:
On 2012-4-21 0:27, Corinna Vinschen wrote:
On Apr 21 00:17, De-Jian Zhao wrote:
On 2012-4-20 21:07, VÃclav Zeman wrote:
On 20 April 2012 15:02, De-Jian Zhao wrote:
Hi,DLLs are executables thus they need the +x bit. This is a Windows
When I type "cyg" and Tab, many executables starting with "cyg"
(Display all 262 possibilities? (y or n) y). I find that many of
*.dll libraries under /usr/bin/. This is inconvenient to find the
executable applications (*.exe). Since *.dll files are only
are not necessary to have the attribute of "x". Thus, I run the
"chmod a-x /usr/bin/*.dll". Unexpectedly, cygwin is corrupted. I
terminal and failed to restart Cygwin. I started my older version of
(I did not deleted it after installing a new version), and added
previous *.dll files. The dead Cygwin revived.
I am confused why /usr/bin/*.dll should be executable. I thought
only library files. When I tried to run a dll file, bash says
execute binary file". Are there some hidden stories?
If this is a windows thing, removing the x bit should not affect
Cygwin. Instead, Cygwin is corrupted after removing the x bit.
Windows requires the x bit for DLLs to be loadable as executable code
into the address space of a process. As VÃclav wrote, it's a Windows
Can Windows see the rwx bits assigned by Cygwin to the files? I tried
removing the x bit of an executable file blastall.exe (chmod a-x
blastall.exe); the file can not be executed under Cygwin, but still
executed under cmd console of Windows. It seems that Windows does not
the rwx bits assigned by Cygwin.
Is there a detailed description of the starting process of Cygwin
Or, how does Cygwin interact with *.dll files?
After starting Cygwin, I ran "chmod a-x /usr/bin/cygperl5_10.dll" and
could not be started any more. This could be cured by ran "chmod a+x
/usr/bin/cygperl5_10.dll". It seems to me that the Cygwin binary
will communicate with their corresponding *.dll files when executed. The
*.dll provide the required functions and subroutines and that's enough.
There is no need to mark *.dll with an x bit.
I have no strong background of computer science. Maybe there is some
knowledge beyond my imagination. Hope you can help disclose it to me.
Cygwin DLLs are no different than native Windows DLLs when it comes to
loading them. The Windows loader is responsible for loading them. So
we're stuck with whatever restrictions the Windows loader imposes on
Yes. But does Windows loader can see the x bit assigned by Cygwin, a
quite different OS?
At least, *.exe does not respect or even is blind to the -x operation of
Cygwin, as abovementioned.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple