From: Jan Beulich Date: Fri, 21 Feb 2025 09:28:24 +0000 (+0100) Subject: x86: GOT is an ELF-only entity X-Git-Tag: binutils-2_45~1511 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e79ff9f50afcb9b92770ab5df4adfdc3b61a0e0;p=thirdparty%2Fbinutils-gdb.git 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 --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. */