Local variable in a C function is not getting created in stack when its compiled with GCC


 
Thread Tools Search this Thread
Top Forums Programming Local variable in a C function is not getting created in stack when its compiled with GCC
# 1  
Old 03-08-2017
Local variable in a C function is not getting created in stack when its compiled with GCC

Hi,

I am working in UEFI EDK2 Bios source. We created a platform related new package in the EDK2 source. I find a strange issue with the platform related code we added.

When I did source level debugging I noticed the
local variable in a C function is not getting created in stack when its compiled with GCC.

The same UEFI code when compiled with visual studio then local variable in a C function is getting created in stack.

I am executing this code on a Simulation environment where I can see the Stack Base, all segment registers, Current executing code, memory etc..

Its Multi core system but only Boot Strap processors in enabled

Any suggestions?

Thanks,
Divya R
# 2  
Old 03-08-2017
Depending on how the code is optimized, the variable may be put on the stack, or might only exist in a register, or might not exist at all (i.e. pruning unused things, building constants into instructions for variables which do not change, etc).

Last edited by Corona688; 03-08-2017 at 11:27 AM..
# 3  
Old 03-09-2017
Thanks Corona,

I have created a variable for a structure. And this variable is getting updated.
the code segment region address is assigned to the Variable.

I am surprised why a code segment address is assigned to a local variable.

When this local variable is getting updated its corrupting the code in Code segment, and system boot is failing.
# 4  
Old 03-09-2017
It is difficult to diagnose problems in code we haven't seen. If you show us the original code and the modifications you have made to it, we would have a MUCH better chance of helping you.
# 5  
Old 03-09-2017
Thanks Don Cragun.

Sorry I cannot share the source its confidential.

Thanks,
Divya
# 6  
Old 03-09-2017
Although uncommon, I've seen variables (constants) allocated in the code segment, admittedly some (decent) time ago. And, updating it shouldn't corrupt the code nor crash the boot, provided it's size is respected and no adjacent memory is overwritten. Checksums of the code could fail, but they are done upfront, usually, before an update occurred. Or, do you have an unmet condition with the new value and no error handler for such?
# 7  
Old 03-09-2017
Trampolines are required when booting SMP machines with multiple CPUs. When the OS is initializing, only one bootstrap CPU runs. Then an embedded function ( a trampoline) is invoked. The function and variables are in the code not the stack. The function inits the remaining CPU's.

What you describe sounds like that is what may be happening.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to make nested function local?

Hi, If I declare a function inside another function, it overwrites any previously declared function with the same name. This is NOT what I want. Example: #!/bin/bash _test() { echo test; } _myf() { # I'm using the same name as the other function. _test() { echo local test; }... (8 Replies)
Discussion started by: chebarbudo
8 Replies

2. Programming

[MSYS2/GCC-TDM] Compiler not finding headers in /usr/local/include

I hope it's okay to post this here. I'm working on Windows computer but using the Unix-like environment MSYS2 (https://sourceforge.net/projects/msys2). My problem is that I can't get the compiler to find headers located in /usr/local/include. I am trying to compile libpng which wants the header... (1 Reply)
Discussion started by: AntumDeluge
1 Replies

3. Solaris

Newly Compiled GCC 4.4.4 on Solaris sparc gives problem with -m32/-m64 flags

Hello experts, This issue has kept me busy all day long. It started off with openssl compilation which was giving linking error with following message: /usr/local/bin/ld: target elf32-sparc not found collect2: ld returned 1 exit status I tried every step possible thing that I could think... (2 Replies)
Discussion started by: d_shanke
2 Replies

4. Programming

Using ANSI color codes in gcc compiled program

I have put some yellow color codes and works well. I call the funstion using print_usage(stderr, 0); I would like to know if there is any way, to store the ansi color codes in variables and then call them inside fprintf. Or have a format followed by the strings I want to output. ... (5 Replies)
Discussion started by: kristinu
5 Replies

5. Programming

Created a wrapper for a function in a class.

I have a class called Parsing with the following function. I want to create a wrapper for it, so that I call it using GetReal rather than GetFloat. Bit confused on how to do this. class Parsing { private: int Length; // int Ptr; ... (3 Replies)
Discussion started by: kristinu
3 Replies

6. UNIX for Dummies Questions & Answers

How to call a local function within Awk

Hi, I have the following statement which parses a string for me and prints it out: l_comp="dc000.runksh.test.ksh| $g_sql/dc0000.runksh_test.sql|new.dat|control.ctl" echo $l_comp | awk -F"|" '{ for ( i = 1; i <= NF; i++) { print $i; } } ' Rather then printing the data, I would like to... (5 Replies)
Discussion started by: CAGIRL
5 Replies

7. Linux

gcc compiled executable not working across x86_64 linux platforms

Hi I compiled a hello world program on two different 64-bit Linux machines, named quimby and node0331. When I compile on quimby and run on node0331 I get a "Floating exception (core dumped)" error. But if I do it in reverse, things work fine. Here's my compilation on quimby: $ uname -a... (3 Replies)
Discussion started by: same1290
3 Replies

8. BSD

stack overflow in function psync_status Abort (core dumped)

I am running Open BSD 3.8 (3.5 upgrade) on a Pent Pro. 200, 64 Megs Ram, Nvedia Vanta TNT 16 Megs, Realtech 8139 Nic. When running ifconfig -a I get this error back. I've run searches on google no deal. I can get Stack overflow or psync, but not both. So I would really like to know how to fix it. ... (0 Replies)
Discussion started by: jmcpreach
0 Replies

9. Shell Programming and Scripting

Passing a variable name to be created within a function

Is it possible to pass a variable name, as a parameter to a function, so it can be created within this function ? Something like this: func_uppercase abcdefgh var_name where the 1st parameter is the string I want to convert and the 2nd is the desired variable name... $2=`echo "$1" |... (2 Replies)
Discussion started by: 435 Gavea
2 Replies

10. Programming

gcc warnings: implicit declaration of function...

I am having strange warnings from gcc compiler, which I don't think should come while cmpiling. Can anyone help? The warnings are: - warning: implicit declaration of function 'bzero' - warning: implicit declaration of function 'inet_addr' The code is as below: int main(int argc, char... (2 Replies)
Discussion started by: Ahsan
2 Replies
Login or Register to Ask a Question