This is the mail archive of the 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:

- (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_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()

#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.

David Brennan

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