Where do number suffixes in symbol names come from?
Goswin von Brederlow
goswin-v-b@web.de
Thu Jun 30 10:34:00 GMT 2016
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
More information about the Gcc-help
mailing list