This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos 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: Fix for misc compiler warnings




Andrew Lunn wrote:

On Wed, Oct 13, 2004 at 05:51:06AM -0700, David Brennan wrote:


CYG_ASSERT(
- (CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE <= (int)i82559_heap_free)
+ ((cyg_uint8 *)CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE <= i82559_heap_free)
&&
- ((CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE +
- CYGHWR_INTEL_I82559_PCI_MEM_MAP_SIZE) > (int)i82559_heap_free)
- &&
- (0 < i82559_heap_size)
+ ((cyg_uint8 *)(CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE +
+ CYGHWR_INTEL_I82559_PCI_MEM_MAP_SIZE) > i82559_heap_free)
&&
(CYGHWR_INTEL_I82559_PCI_MEM_MAP_SIZE >= i82559_heap_size)
&&
- (CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE == (int)i82559_heap_base),
+ ((cyg_uint8 *)CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE == i82559_heap_base),
"Heap variables corrupted" );


p_memory = (void *)0;
size = (size + 3) & ~3;
if ( (i82559_heap_free+size) < (i82559_heap_base+i82559_heap_size) ) {



What version of GCC are you using. I don't get warnings in the
ethernet driver. The code looks OK to me
too. CYGHWR_INTEL_I82559_PCI_MEM_MAP_* will be int so casting
i82559_heap_free to int should be enough.


Yes I agree that casting i82559_heap_free to an int should be enough. I am using gcc 3.2.3. And I guess it is possible that the gcc folks made a mistake with this warning. However, I submitted this to get rid of it.



Index: io/fileio/current/src/file.cxx
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/fileio/current/src/file.cxx,v
retrieving revision 1.10
diff -U5 -r1.10 file.cxx
--- io/fileio/current/src/file.cxx 15 Mar 2004 15:41:36 -0000 1.10
+++ io/fileio/current/src/file.cxx 13 Oct 2004 05:06:45 -0000
@@ -570,10 +599,13 @@
}
info.buf = buf;
info.size = size;


+ CYG_CHECK_DATA_PTR(mte,"Invalid MTAB entry for current directory");
+ CYG_CHECK_DATA_PTR(mte->fs,"Invalid File System entry for current directory");
+
LOCK_FS( mte );
err = mte->fs->getinfo( mte, dir, "",
FS_INFO_GETCWD, (char *)&info, sizeof(info) );



This does not really fit. LOCK_FS already checks mte. I get the feeling this is just leftover from debugging a problem you had at some time.



Ok, the whole point of the CYG_CHECK is to protect programmers from themselves. And I agree tat the first check might not be necessary. But I am trying to get my i386-pc ide driver working on a different machine than my usual target. I am testing it with fs/fat/fileio1.c. If the mount fails, (which it currently is on my hardware), and you try and getcwd, you will get a SIGILL because mte->fs is null. (I originally thought the roblem was that mte was NULL, that is the reason the first is in there.) So I think there is value in the second check, but if you insist on removing the first, I am ok with that.

Index: io/fileio/current/tests/select.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/io/fileio/current/tests/select.c,v
retrieving revision 1.6
diff -U5 -r1.6 select.c
--- io/fileio/current/tests/select.c    11 Nov 2002 23:58:54 -0000    1.6
+++ io/fileio/current/tests/select.c    13 Oct 2004 05:06:46 -0000
@@ -81,10 +81,11 @@
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>
+#include <sys/select.h>                // select()

#ifdef CYGPKG_NET
#include <network.h>
#include <arpa/inet.h>
#define TEST_NET



Again, i don't get a warning.


I "think" I was only getting this warning on my "NoNet" configuration. It could be that either network.h or arpa/inet.h is including sys/select for you.

If you need me to, I will reverse the patch out and double check which configuration was causing this warning. Then I can post my exported ecm file for you to duplicate the problem.

Thanks
David Brennan


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