Messages in this thread | | | Date | Sun, 3 Feb 2008 13:08:44 +0000 | From | Al Viro <> | Subject | section breakage on ppc64 (aka __devinitconst is broken by design) |
| |
; cat >a.c <<'EOF' const char foo[] __attribute__ ((__section__(".blah"))) = ""; const char * const bar __attribute__((__section__(".blah"))) = ""; EOF ; gcc -m32 -S a.c ; gcc -m64 -S a.c a.c:2: error: bar causes a section type conflict ;
That's 4.1.2 on ppc. What happens is that the second declaration wants to make .blah writable. We actually trigger that in ppc64 builds on drivers/net/natsemi.c.
Note that on ppc64 without explicit sections you have the second one land in .data.rel.ro.local, which is "aw",progbits.
The reason why it didn't visibly bite us before is that usually __devinit... just expanded to nothing (unless you disable HOTPLUG, which requires EMBEDDED, which wasn't apparently common enough for ppc64 builds).
Suggestions?
| |