On Sun, Apr 21, 2013 at 4:04 AM, Shalev, Tomer <tomer.sha...@intel.com> wrote: > Ø I previously reported that GCC46 (namely 4.6) has a bug with this > conventions and should be used with the follow definition > > Ø DEFINE GCC46_X64_CC_FLAGS = DEF(GCC45_X64_CC_FLAGS) > -Wno-unused-but-set-variable -mabi=ms
This is not a bug. It indicates that some function declaration or prototype is not using EFIAPI properly. So, basically it points out that there is a bug somewhere else in the source tree. Your CC_FLAGS change would just hide that other source code bug. -Jordan > I reported this too: http://sourceforge.net/apps/trac/edk2/ticket/590 > > > > From: Sergey Isakov [mailto:isakov...@bk.ru] > Sent: Friday, March 22, 2013 8:06 AM > To: edk2-devel@lists.sourceforge.net > Subject: Re: [edk2] [edk2-buildtools] UEFI function is broken when compiled > by GCC > > > > Hi, > > > > I previously reported that GCC46 (namely 4.6) has a bug with this > conventions and should be used with the follow definition > > DEFINE GCC46_X64_CC_FLAGS = DEF(GCC45_X64_CC_FLAGS) > -Wno-unused-but-set-variable -mabi=ms > > > > Hope it helps, > > Sergey > > > > 21.03.2013, в 20:23, Andrew Fish написал(а): > > > > Tomer, > > > > It is a bug in your code. You need to use the correct function prototypes, > and you especially need to use EFIAPI correctly. > > > > This is bad: > > (EFI_AP_PROCEDURE)GetThread, > > > > You need to make GetThead() have the proper prototype. > > > > For GCC 4.6 the generic calling convention is the Unix ABI for X64. This > means the 1st 6 args are passed in registers and the register sequence is > different than the 4 register used in EFIABI (Microsoft X64 ABI subset). GCC > only generates EFIABI if the function has the EFIABI qualifier in its > definition. > > > > So any indirect function call needs to have EFIABI. Thus any protocol member > function, pointer to function, EFI Event function, and function passed via > an API needs to have the EFIABI qualifier. Also any assembly code C function > prototype needs to have EFIABI so it gets called correctly. > > > > Andrew Fish > > > > > > > > > > On Mar 21, 2013, at 2:36 AM, "Shalev, Tomer" <tomer.sha...@intel.com> wrote: > > > > Hi There, > > > > Calls to StartupThisAP() does not work as expected when I build my UEFI > application from GCC 4.6 under Linux. If I build it under Windows using > Visual Studio 2010, it works… > > > > In GCC built application, The GetThread application receives a different > value in its argument list than expected, according to what was passed to > StartupThisAP(). I actually get 1, 4 and 5 for Ap's 1, 2 and 3, > respectively, which might indicate that I get their APIC ID numbers. > > > > I suspect there are other functionality that doesn't work as expected in > such situation, such as Int86(). > > > > I would be thankful if you can help me with this. > > Attached is a sample application that works when compiled in Windows but > fails when compiled by GCC in Linux. Password is 12345678 > > > > Thanks, > > Tomer > > > > > > > > <MpTestPkg.zip> > > --------------------------------------------------------------------- > Intel Israel (74) Limited > > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ > edk2-buildtools-devel mailing list > edk2-buildtools-de...@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-buildtools-devel > > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_mar_______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > > > --------------------------------------------------------------------- > Intel Israel (74) Limited > > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > > > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced > analytics on semi-structured data. The platform includes APIs for building > apps and a phenomenal toolset for data science. Developers can use > our toolset for easy data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel