[binutils-gdb] x86: GOT is an ELF-only entity

Jan Beulich jbeulich@sourceware.org
Fri Feb 21 09:30:11 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0e79ff9f50afcb9b92770ab5df4adfdc3b61a0e0

commit 0e79ff9f50afcb9b92770ab5df4adfdc3b61a0e0
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Feb 21 10:28:24 2025 +0100

    x86: GOT is an ELF-only entity
    
    Make md_undefined_symbol() conditional upon dealing with ELF, much like
    other architectures (e.g. Arm32 and Arm64) have it. This avoids errors
    in gas and even assertions in libbfd when "accidentally" e.g. a COFF-
    targeting source file uses "_GLOBAL_OFFSET_TABLE_" for whatever reason.
    
    While there also convert the final return statement to properly use
    NULL.
    
    NB: In principle 64-bit Mach-O knows GOT, too. Yet only an i?86-macho
    assembler can be built right now, as per configure.tgt. Pretty clearly
    adjustments to gotrel[] would also be necessary before these targets
    could actually work reasonably cleanly.

Diff:
---
 gas/config/tc-i386.c | 4 +++-
 gas/config/tc-i386.h | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 9adb96ff433..1d07c2f1e37 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -18033,6 +18033,7 @@ i386_target_format (void)
 
 #endif /* ELF / PE / MACH_O  */
 

+#ifdef OBJ_ELF
 symbolS *
 md_undefined_symbol (char *name)
 {
@@ -18050,8 +18051,9 @@ md_undefined_symbol (char *name)
 	};
       return GOT_symbol;
     }
-  return 0;
+  return NULL;
 }
+#endif
 
 #ifdef OBJ_AOUT
 /* Round up a section size to the appropriate boundary.  */
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index 7cef12123e9..3fb7920d608 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -144,6 +144,7 @@ int i386_validate_fix (struct fix *);
 extern int tc_i386_fix_adjustable (struct fix *);
 #else
 #define tc_fix_adjustable(X)  ((void)(X), 1)
+#define md_undefined_symbol(N) ((void)(N), NULL)
 #endif
 
 /* Values passed to md_apply_fix don't include the symbol value.  */


More information about the Binutils-cvs mailing list