This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Where do number suffixes in symbol names come from?


On Thu, Jun 30, 2016 at 11:55:27AM +0200, john smith wrote:
> All static symbol have a short number attached to its name, for example:
> 
> static const int def[9999999] = {1};
> 
> shows up as:
> 
> 0000000000400920 r def.2802
> 
> What does this number represent? I know I can change it using
> __asm__("def").
> 
> I read this https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40831 and
> this https://patchwork.ozlabs.org/patch/118607/ but I couldn't find a
> definitive explanations of what these numbers mean.

I'm guessing that is just a unique number generated to avoid name
colisions in the binary. Think about this:

Say you have two compilation units (files) and both have:

    static const int def[9999999] = {1};

Since the variable is static you actually do have 2 separate variables
called "def" and that is perfectly alright. But you can not have two
symbols called "def" in the binary. The extra ".xxxx" keeps them
distinct.

MfG
	Goswin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]