According to a discussion on ipxe mailing list[1], binutils 2.31.0
generates R_X86_64_PLT32 instead of R_X86_64_PC32.

This change fixes building wimboot on systems with binutils >= 2.31.0

[1] http://lists.ipxe.org/pipermail/ipxe-devel/2018-August/006255.html

Signed-off-by: Alif M. Ahmad <alive4e...@live.com>
---
 src/efireloc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/efireloc.c b/src/efireloc.c
index 519dd75..e0736cd 100644
--- a/src/efireloc.c
+++ b/src/efireloc.c
@@ -326,7 +326,8 @@ static void process_reloc ( bfd *bfd __unused, asection 
*section, arelent *rel,
                /* Generate a 2-byte PE relocation */
                generate_pe_reloc ( pe_reltab, offset, 2 );
        } else if ( ( strcmp ( howto->name, "R_386_PC32" ) == 0 ) ||
-                   ( strcmp ( howto->name, "R_X86_64_PC32" ) == 0 ) ) {
+                   ( strcmp ( howto->name, "R_X86_64_PC32" ) == 0 ) ||
+                   ( strcmp ( howto->name, "R_X86_64_PLT32" ) == 0 ) ) {
                /* Skip PC-relative relocations; all relative offsets
                 * remain unaltered when the object is loaded.
                 */
-- 
2.20.1

_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to