GNU_IFUNC are shown by readelf in 'Relocation section' value as
"symbol()" instead of expected hexadecimal value. This causes the
check-localplt script to ignore potential PLT stub begin generated
by wrong IFUNC usage. This patch changes the localplt script to
emit such PLT cases.
+2014-03-25 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ * scripts/localplt.awk: Check for PLT generated by internal IFUNC
+ calls.
+
2014-03-25 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Revert
NF == 0 { in_relocs = 0 }
in_relocs && relocs_offset == jmprel_offset && NF >= 5 {
- symval = strtonum("0x" $4);
- if (symval != 0)
+ # Relocations against GNU_IFUNC symbols are not shown as an hexadecimal
+ # value, but rather as the resolver symbol followed by ().
+ if ($4 ~ /\(\)/) {
print whatfile, $5
+ } else {
+ symval = strtonum("0x" $4);
+ if (symval != 0)
+ print whatfile, $5
+ }
}
in_relocs { next }