This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: [ANNOUNCEMENT] [1.7] Updated: file-5.00-1
Corinna Vinschen wrote:
> On Feb 19 23:03, Charles Wilson wrote:
>> Corinna Vinschen wrote:
>>> I've updated the Cygwin 1.7 version of file to 5.00-1.
>> Odd behavior: after I did a rebaseall, I was consistently seeing
>> coredumps using this version of file. Reverting to the older version of
>> file fixed it, as did re-installing the new version.
>>
>> I haven't rebased again, but is there any reason to suspect that
>> cygmagic-1.dll is not rebaseable?
>
> Apparently. I rebased the DLL alone and afterwards file simply stopped
> working. The DLL has a base address of 0x6a500000. Even rebasing to
> the very same address results in a coredump!
>
> The DLL has been built with -static-libgcc. Assuming that this might
> have been the reason I rebuilt the file package without -static-libgcc,
> so the DLL now depends on cyggcc_s.dll. And, guess what, afterwards
> the DLL is rebaseable just fine.
>
> Dave? Any idea why this occurs? The crash happens when the Cygwin DLL
> is running the ctors list. Given that the file package is using plain
> C, it seems that a static libgcc is non-relocatable for whatever reason.
Investigating. While I do that, I noticed a bug:
libtool: compile: gcc-4 -DHAVE_CONFIG_H -I. -I..
-DMAGIC=\"/usr/local/share/file/magic\" -Wall -Wstrict-prototypes
-Wmissing-prototypes -Wpointer-arith -Wmissing-declarations -Wredundant-decls
-Wnested-externs -Wsign-compare -Wreturn-type -Wswitch -Wshadow -Wcast-qual
-Wwrite-strings -Wextra -Wunused-parameter -g -O2 -MT magic.lo -MD -MP -MF
.deps/magic.Tpo -c magic.c -o magic.o
magic.c: In function 'file_or_fd':
magic.c:304: warning: passing argument 1 of 'strlcat' makes pointer from
integer without a cast
304 (void)strlcat(strlcpy(tmp, inname, len), ".exe", len);
That sort of construct works for "strcat (strcpy ())" but not for the 'l'
versions, they aren't drop-in replacements.
<suddenly does HUGE double-take on seeing surrounding code>
251 public const char *
252 magic_file(struct magic_set *ms, const char *inname)
...
257 private const char *
258 file_or_fd(struct magic_set *ms, const char *inname, int fd)
/sighs *facepalm* <hurried grep>
68 #define private static
69 #ifndef protected
70 #define protected
71 #endif
72 #define public
*headdesk* *facepalm* *headdesk* *facepalm* *headdesk*
cheers,
DaveK
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/