Red Hat Bugzilla – Bug 208669
&&label uses generate references to unknown symbols
Last modified: 2007-11-30 17:11:44 EST
Description of problem:
I'm trying to create instances of a structure into a section; those structures
contain references to &&labels. For some reason, I'm getting these being
emitted with references to unknown labels.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1.compile attached .i file with gcc -c -O filemap.i
2.nm -u filemap.o shows unknown symbol .L1020 (or similar)
Undefined local symbol:
$ nm -u filemap.o|grep '\.L'
No undefined local symbols
This is what happens when I use the asm("" : : "m" (foo)) workaround for bug
#208667 (without this workaround, nothing is emitted into the __bug_table
section at all). I suspect this is something to do with entries being emitted
into __bug_table even though the corresponding code has been optimised out.
Created attachment 137453 [details]
filemap.i exhibits this problem when compiled with gcc -c -O filemap.i
Created attachment 137454 [details]
output assembler, showing dangling reference to .L1020
static inline __attribute__((always_inline))
void bar (void)
static const unsigned long b __attribute__((__used__))
= (unsigned long) &&addr;
asm ("" : : "m" (b));
void foo (void)
even on GCC trunk, the tree inliner doesn't correctly remap the static variable
Tracking this upstream, but I believe your testcase is invalid and GCC should
issue an error on it (because of always_inline attribute).