mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Fix localplt check for GNU_IFUNC
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.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
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>
|
2014-03-25 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||||
|
|
||||||
* nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Revert
|
* nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Revert
|
||||||
|
@ -32,9 +32,15 @@ $1 == "Offset" && $2 == "Info" { in_relocs = 1; next }
|
|||||||
NF == 0 { in_relocs = 0 }
|
NF == 0 { in_relocs = 0 }
|
||||||
|
|
||||||
in_relocs && relocs_offset == jmprel_offset && NF >= 5 {
|
in_relocs && relocs_offset == jmprel_offset && NF >= 5 {
|
||||||
symval = strtonum("0x" $4);
|
# Relocations against GNU_IFUNC symbols are not shown as an hexadecimal
|
||||||
if (symval != 0)
|
# value, but rather as the resolver symbol followed by ().
|
||||||
|
if ($4 ~ /\(\)/) {
|
||||||
print whatfile, $5
|
print whatfile, $5
|
||||||
|
} else {
|
||||||
|
symval = strtonum("0x" $4);
|
||||||
|
if (symval != 0)
|
||||||
|
print whatfile, $5
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
in_relocs { next }
|
in_relocs { next }
|
||||||
|
Reference in New Issue
Block a user