* Re[2]: Cygwin tester? Was: [rfa] Add bfd-in-memory io vector @ 2004-05-03 22:48 Danny Smith 2004-05-05 11:09 ` Re[3]: " Danny Smith 0 siblings, 1 reply; 3+ messages in thread From: Danny Smith @ 2004-05-03 22:48 UTC (permalink / raw) To: Andrew Cagney; +Cc: binutils From: "Danny Smith" | | | > On Sat, May 01, 2004 at 02:10:31PM -0400, Andrew Cagney wrote: | | > | | >>> The testing comment still applies though. | | > | | > | | > Given DJ's comment, I think you should test this on cygwin before | | > committing. If you can't do this yourself, convince someone else | | > to do so for you. OK to commit once you've done this. | | > | | > | | I get this on mingw: | | ../bfd/.libs/libbfd.a(opncls.o)(.text+0x5ba):opncls.c: undefined reference to `getuid' | ../bfd/.libs/libbfd.a(opncls.o)(.text+0x5c6):opncls.c: undefined reference to `getgid' | | | Configure already tests for getgid, but not getuid | Oops, configure already does test for both. Danny | Addinging this (and appropriate autoconfigury) works on mingw | | #ifndef HAVE_GETGID | #define getgid() 0 | #endif | #ifndef HAVE_GETUID | #define getuid() 0 | #endif | | Danny | ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re[3]: Cygwin tester? Was: [rfa] Add bfd-in-memory io vector 2004-05-03 22:48 Re[2]: Cygwin tester? Was: [rfa] Add bfd-in-memory io vector Danny Smith @ 2004-05-05 11:09 ` Danny Smith 2004-05-05 15:57 ` Andrew Cagney 0 siblings, 1 reply; 3+ messages in thread From: Danny Smith @ 2004-05-05 11:09 UTC (permalink / raw) To: Andrew Cagney; +Cc: binutils ----- Original Message ----- From: "Danny Smith" | | From: "Danny Smith" | | | | | | > On Sat, May 01, 2004 at 02:10:31PM -0400, Andrew Cagney wrote: | | | > | | | >>> The testing comment still applies though. | | | > | | | > | | | > Given DJ's comment, I think you should test this on cygwin before | | | > committing. If you can't do this yourself, convince someone else | | | > to do so for you. OK to commit once you've done this. | | | > Hi, Although the patchset works fine (if I add the checks for HAVE_GET[GU]ID) when building .exe files on pe targets, it fails when building dll's (segfault in bfd/bfdio.c:bfd_bread when forwarding args to iovec->bread) With binutils built with CFLAGS="-g -O2", gcc-3.4.0, mingw32: cat > foo.c int foo = 1; ^Z gcc -shared -ofoo.dll foo.c raises the segfault in bfd_bread. Actually, the above testcase fails since your 21-April patch. The problem occurs when pe-dll.c code calls bread with a NULL file, asking for zero bytes (see comment in cache.c:cache_bread). The problem can be avoided by doing the cache_bread FIXME in bfd_bread, ie: *** bfdio.c.cagney Mon May 03 10:02:13 2004 --- bfdio.c Tue May 04 11:26:40 2004 *************** bfd_bread (void *ptr, bfd_size_type size *** 104,109 **** --- 104,113 ---- { size_t nread; + /* See FIXME in cache.c:cache_bread(). */ + if (size == 0) + return 0; + nread = abfd->iovec->bread (abfd, ptr, size); if (nread != (size_t) -1) abfd->where += nread; With above patch, simple dll build is okay. But this looks a bit strange in peicode.h:pe_ILF_build_a_bfd() + vars.bim = _bfd_in_memory (abfd, abfd->flags, vars.bim->buffer, + vars.bim->size); Should that be: vars.bim = _bfd_in_memory (abfd, abfd->flags, bim.buffer, bim.size); Danny ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Cygwin tester? Was: [rfa] Add bfd-in-memory io vector 2004-05-05 11:09 ` Re[3]: " Danny Smith @ 2004-05-05 15:57 ` Andrew Cagney 0 siblings, 0 replies; 3+ messages in thread From: Andrew Cagney @ 2004-05-05 15:57 UTC (permalink / raw) To: Danny Smith, dk; +Cc: binutils Dave, Danny, thanks! > From: "Danny Smith" > | > | From: "Danny Smith" > | > | | > | | | > On Sat, May 01, 2004 at 02:10:31PM -0400, Andrew Cagney wrote: > | | | > > | | | >>> The testing comment still applies though. > | | | > > | | | > > | | | > Given DJ's comment, I think you should test this on cygwin before > | | | > committing. If you can't do this yourself, convince someone else > | | | > to do so for you. OK to commit once you've done this. > | | | > > > Hi, > > Although the patchset works fine (if I add the checks for HAVE_GET[GU]ID) > when building .exe files on pe targets, it fails when building dll's > (segfault in bfd/bfdio.c:bfd_bread when forwarding args to iovec->bread) I'll add this to the patch. > With binutils built with CFLAGS="-g -O2", gcc-3.4.0, mingw32: > > cat > foo.c > int foo = 1; > ^Z > gcc -shared -ofoo.dll foo.c > > raises the segfault in bfd_bread. > > Actually, the above testcase fails since your 21-April patch. > > The problem occurs when pe-dll.c code calls bread with a NULL file, asking for zero bytes > (see comment in cache.c:cache_bread). > > The problem can be avoided by doing the cache_bread FIXME in bfd_bread, ie: > > *** bfdio.c.cagney Mon May 03 10:02:13 2004 > --- bfdio.c Tue May 04 11:26:40 2004 > *************** bfd_bread (void *ptr, bfd_size_type size > *** 104,109 **** > --- 104,113 ---- > { > size_t nread; > > + /* See FIXME in cache.c:cache_bread(). */ > + if (size == 0) > + return 0; > + > nread = abfd->iovec->bread (abfd, ptr, size); > if (nread != (size_t) -1) > abfd->where += nread; Outch, thanks. I think I'll move the fixme as well as a separate patch. > With above patch, simple dll build is okay. > But this looks a bit strange in peicode.h:pe_ILF_build_a_bfd() > > + vars.bim = _bfd_in_memory (abfd, abfd->flags, vars.bim->buffer, > + vars.bim->size); Oops, yes. Andrew > Should that be: > > vars.bim = _bfd_in_memory (abfd, abfd->flags, bim.buffer, bim.size); > > > Danny ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-05-05 15:57 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-05-03 22:48 Re[2]: Cygwin tester? Was: [rfa] Add bfd-in-memory io vector Danny Smith 2004-05-05 11:09 ` Re[3]: " Danny Smith 2004-05-05 15:57 ` Andrew Cagney
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).