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/