Just another angle on this FYI:
I encountered this problem building kexts against the 10.2.8 SDK in
10.4.1, but only with projects of ProjectBuilder vintage.
I solved it by specifying the header path '$(SDKROOT)/usr/include'
explicitly. The ansi.h found in there worked fine and I didn't have to
copy any files anywhere.
Previously, I had had to specify the header path
'$(SDKROOT)/S/L/F/Kernel.framework/Headers' or else it was still finding
the 10.4.1 IOService class and I was getting the load errors described
below.
This was with gcc 3.3. Projects created in Xcode didn't have these
problems at all - simply selecting the cross-development target was all
that was required for them.
{P^/
On Tue, 24 May 2005, Filip Aben wrote:
>
> Hi,
>
> I had the same problem today: switched to 10.4, tried to build my
> project in Xcode 2.0 against
> MacOSX10.3.9 and got the same error complaining about missing "ppc/
> ansi.h".
> I switched to GCC 3.3 and the problem dissappeared.
>
> I'm wondering if i'm hiding a potential problem by just switching to
> 3.3 or is 4.0 just not good
> enough yet?
>
> regards,
>
> filip-
>
>
>
> ---------------------------------------
> Filip Aben
> Firmware Design Engineer
> Option International
>
>
> On 20 May 2005, at 14:36, Ron Duritsch wrote:
>
> > Godfrey,
> >
> > Yes, there is an IOService subclass, but the macro appears to be
> > defined
> > properly. Here's my entry, with some old comments:
> >
> > // REQUIRED! This macro defines the class's constructors, destructors,
> > // and several other I/O Kit requires. Do NOT use super as the
> > // second parameter. You must use the literal name of the superclass
> > OSDefineMetaClassAndStructors(com_diaginc_iokit_SpotPCI, IOService)
> >
> > But all problems disappeared when I placed a copy of the ansi file in:
> >
> > /Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/
> > Kernel.framework/
> > Headers/ppc/ansi.h
> >
> > Ron
> >
> > On 5/19/05 6:05 PM, "Godfrey van der Linden" <email@hidden> wrote:
> >
> >
> >> The ansi file is a red herring I'm afraid.
> >>
> >> My best guess (they are usually pretty accurate guesses too ;-), is
> >> that you have an IOService subclass in your driver. IOService hasn't
> >> changed for quite a long time but it finally changed in 10.4. This
> >> means that we need to do a binary compatibility on all drivers
> >> compiled with a pre-10.4 IOService. For some reason your driver is
> >> not patching. This is usually because you haven't used the macro :-
> >>
> >> OSDefineMetaClassAndStructors(<com_diaginc_ourdiagclass>, IOService);
> >>
> >> Or you have the wrong 'superclass' name in it. Check it out.
> >>
> >> Godfrey
> >>
> >> On 05/19/2005, at 10:06 , Ron Duritsch wrote:
> >>
> >>
> >>> Dean,
> >>>
> >>> After more searching (still not quite used to new search in 10.4) I
> >>> did find
> >>> the ppc/ansi.h file in the 10.2.8 SDK, but the compiler can't seem
> >>> to find
> >>> it, as shown by the error message in Xcode:
> >>>
> >>> "/Developer/SDKs/MacOSX10.2.8.sdk/System/Library/Frameworks/
> >>> Kernel.framewor
> >>> k/Headers/machine/ansi.h:33:22: error: ppc/ansi.h: No such file or
> >>> directory
> >>>
> >>>
> >>> Ron
> >>>
> >>>
> >>> On 5/19/05 12:32 PM, "Ron Duritsch" <email@hidden> wrote:
> >>>
> >>>
> >>>
> >>>> More information, and problems: After reading up a bit more in the
> >>>> darwin
> >>>> mailing list archives I saw where a couple of years ago there was
> >>>> a similar
> >>>> problem whose root cause was that the original project file
> >>>> emanated from
> >>>> the old ProjectBuilder application, and there were flags problems.
> >>>> That's
> >>>> the case here in that the project file has moved along from
> >>>> Project builder
> >>>> through Xcode 1.0, 1.5, and now 2.0. So I decided to create a new
> >>>> project
> >>>> file in Xcode 2.0. This was done quickly and easily, and compiled
> >>>> against
> >>>> the Current SDK in GCC 4.0. The resultant PCI kext runs fine in
> >>>> Tiger. I
> >>>> then tried to target the 10.2.8 SDK. The kext would not build
> >>>> because it
> >>>> can't find the "ppc/ansi.h" file, referenced from "machine/ansi.h"
> >>>> in the
> >>>> 10.2.8 SDK:
> >>>>
> >>>> #if defined (__ppc__)
> >>>> #include "ppc/ansi.h"
> >>>> #elif defined (__i386__)
> >>>> #include "i386/ansi.h"
> >>>> #else
> >>>> #error architecture not supported
> >>>> #endif
> >>>>
> >>>> Indeed, this "ppc/ansi.h" file is not on my machine. The same
> >>>> missing file
> >>>> problem occurs when I target the 10.3.9 SDK.
> >>>>
> >>>> So I tried kextload on the kext I built targeting the 10.4 SDK
> >>>> onto a 10.3.9
> >>>> system, and I get the original "... is not compatible with its
> >>>> superclass"
> >>>> error message.
> >>>>
> >>>> Still hoping for some clues,
> >>>>
> >>>> Ron Duritsch
> >>>> Diagnostic Instruments, Inc.
> >>>>
> >>>>
> >>>> On 5/19/05 10:03 AM, "Ron Duritsch" <email@hidden> wrote:
> >>>>
> >>>>
> >>>>
> >>>>> I am maintaining a PCI kext for a digital camera that operates on
> >>>>> 10.2,
> >>>>> 10.3, and now 10.4.1. If I build the kext in Xcode 1.5 it will
> >>>>> load and work
> >>>>> fine on all three operating systems. If, however, I build it on
> >>>>> Xcode 2.0
> >>>>> in Tiger, it will only load and run on Tiger. It will not load at
> >>>>> boot time
> >>>>> on 10.3.9. If I try kextload in Terminal on 10.3.9 I get the
> >>>>> following error
> >>>>> message:
> >>>>>
> >>>>> 25com_diaginc_iokit_SpotPCI is not compatible with its superclass,
> >>>>> 9IOService superclass changed?
> >>>>> kextload: a link/load error occured for kernel extension
> >>>>> /System/Library/Extensions/SpotPCI.kext
> >>>>> load failed for extension /System/Library/Extensions/SpotPCI.kext
> >>>>>
> >>>>> I am building against the 10.2.8 SDK. I get the same load error
> >>>>> whether I
> >>>>> compile using GCC 4.0 or 3.3 in Xcode 2.0.
> >>>>>
> >>>>> In the Xcode 2.0 release notes "About Xcode Tools", under the
> >>>>> section
> >>>>> entitled "Compatibility of Built Binaries" it reads "IOKit-based
> >>>>> device
> >>>>> drivers built with the GCC 3.3 or GCC 4.0 compilers will run on
> >>>>> Mac OS X
> >>>>> v10.2 (Jaguar), Mac OS X v10.3 (Panther), and Mac OS X v10.4
> >>>>> (Tiger)
> >>>>> systems."
> >>>>>
> >>>>> Any clues or hints as to what I need to change to get this to
> >>>>> work?
> >>>>>
> >>>>> Thanks,
> >>>>>
> >>>>> Ron Duritsch
> >>>>> Diagnostic Instruments, Inc.
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> Do not post admin requests to the list. They will be ignored.
> >>>>> Darwin-drivers mailing list (email@hidden)
> >>>>> Help/Unsubscribe/Update your Subscription:
> >>>>> http://lists.apple.com/mailman/options/darwin-drivers/rduritsch%
> >>>>> 40diaginc.com
> >>>>>
> >>>>> This email sent to email@hidden
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> _______________________________________________
> >>>> Do not post admin requests to the list. They will be ignored.
> >>>> Darwin-drivers mailing list (email@hidden)
> >>>> Help/Unsubscribe/Update your Subscription:
> >>>> http://lists.apple.com/mailman/options/darwin-drivers/rduritsch%
> >>>> 40diaginc.com
> >>>>
> >>>> This email sent to email@hidden
> >>>>
> >>>>
> >>>>
> >>>
> >>> _______________________________________________
> >>> Do not post admin requests to the list. They will be ignored.
> >>> Darwin-drivers mailing list (email@hidden)
> >>> Help/Unsubscribe/Update your Subscription:
> >>> http://lists.apple.com/mailman/options/darwin-drivers/gvdl%
> >>> 40apple.com
> >>>
> >>> This email sent to email@hidden
> >>>
> >>>
> >>
> >>
> >
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Darwin-drivers mailing list (email@hidden)
> > Help/Unsubscribe/Update your Subscription:
> > http://lists.apple.com/mailman/options/darwin-drivers/f.aben%
> > 40option.com
> >
> > This email sent to email@hidden
> >
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Darwin-drivers mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/darwin-drivers/email@hidden
>
> This email sent to email@hidden
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-drivers mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-drivers/email@hidden
This email sent to email@hidden