This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]