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] |
On Wed, Oct 13, 2004 at 05:51:06AM -0700, David Brennan wrote: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.
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.
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/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.
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.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.
Thanks David Brennan
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |