Messages in this thread | | | Date | Tue, 29 Oct 1996 02:24:17 -0500 (EST) | From | Jordan Ritter <> | Subject | IPX and 2.1.5 |
| |
Alright, I hacked around a little bit with the af_ipx.c stuff in net/ipx/.
My problem was the fact that, right off the bat, I couldn't compile the 2.1.5 kernel (as opposed to the 2.1.3) because when ipx.o was made, the macros for get_fs_byte and get_fs_long (defined in asm/segment.h) were not being recognized (and thusly being declared implicitly, so when ipx.o was included in network.a, the symbol didn't match anything).
2.1.3 compiles fine, so I did a diff on the .3 version of af_ipx.c and the .5 version.
Aside from the few changes of memcpy_fromfs() to copy_from_user() and all likenesses, nothing referring to the two instances of get_fs_byte() and get_fs_long() were changed.
Of course, asm/segment.h is included, and this is a problem I have had in the past, in other situations - some symbols get clobbered or macros get ignored. Will someone explain this to me?
I added (a direct cut from segment.h):
> #define put_user(x,ptr) do { (*(ptr)=(x)); } while (0) > #define get_user(ptr) (*(ptr)) > > #define get_fs_byte(addr) get_user((const unsigned char *)(addr)) > #define get_fs_long(addr) get_user((const unsigned int *)(addr))
to net/ipx/af_ipx.c.
This *did* generate a warning about where it was previously defined (making me wonder why it didn't use the macro in the first place), but it still plodded on and DID compile with no ERRORS.
All I have to say is, WHY was this necessary? I'm using the new gcc (2.7.2.1.f.1). Any ideas?
Jordan Ritter Human Touch Technologies
| |