On Aug 28, 2014, at 9:11 PM, Scott Duplichan <[email protected]> wrote:
> Hello Deric,
>
> You are right about the possibility of redefining STATIC. The problem with
> doing so is that STATIC is used in 3 unrelated ways:
>
> 1) static functions
> 2) static variables declared inside of a function
Maybe we should just use static for this.
> 3) static variables declared outside of functions
>
> If STATIC is defined as nothing, all 3 uses have problems:
>
> 1) The few static (STATIC) functions that remain in EDK2 become public
> functions and can clash with existing public functions with the same name.
> Example: AllocateMemoryBelow4G() in LockBoxDxe.c becomes public and clashes
> with the one in AcpiS3SaveDxe.lib.
> 2) Static variables declared inside a function become local variables,
> something entirely different than intended. Example, line 48 of
> EmbeddedPkg\Ebl\HwDebug.c.
> 3) Static variables declared outside of functions become public, making a
> clash possible.
>
The global variable naming convention should prevent this, if followed. Prefix
m or g on the global.
> A workaround would be to make a new preprocessor macro name such as
> STATIC_FUNCTION:
>
> #if defined (WORKAROUND)
> #define STATIC_FUNCTION
> #else
> #define STATIC_FUNCTION static
> #endif
>
> STATIC_FUNCTION void helper (void)
> {
> }
>
> Workable, but pretty ugly to look at.
>
Maybe we should figure out if any currently supported debuggers have an issue
with static, and if they don’t drop the STATIC from the coding style
requirements.
For Xcode/clang, I know that lldb does not have any issues debugging static
functions for global variables.
Thanks,
Andrew Fish
> Thanks,
> Scott
>
> From: Deric Cole [mailto:[email protected]]
> Sent: Thursday, August 28, 2014 04:08 PM
> To: [email protected]; Qiu, Shumin
> Subject: Re: [edk2] [Patch]ShellPkg: Remove 'STATIC' from function
> declarations to avoid source level debugging problem
>
> Is this the whole point of defining “STATIC” rather than using the keyword
> “static”, that it can be redefined (locally) if it causes problems like this?
>
>
> From: Carsey, Jaben [mailto:[email protected]]
> Sent: Thursday, August 28, 2014 1:11 PM
> To: Qiu, Shumin
> Cc: [email protected]
> Subject: Re: [edk2] [Patch]ShellPkg: Remove 'STATIC' from function
> declarations to avoid source level debugging problem
>
> Reviewed-by: Jaben Carsey <[email protected]>
>
> From: Qiu, Shumin
> Sent: Wednesday, August 27, 2014 7:40 PM
> To: Carsey, Jaben
> Cc: [email protected]
> Subject: [edk2][Patch]ShellPkg: Remove 'STATIC' from function declarations to
> avoid source level debugging problem
> Importance: High
>
> Hi Jaben,
> Can you help to review this patch? Internal linkage (ie. STATIC) functions
> have caused problems with source level debugging before, so we generally
> avoid STATIC in ShellPkg.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Qiu Shumin <[email protected]>
>
> Thanks
> Shumin
>
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds. Stuff that matters.
> http://tv.slashdot.org/_______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel