Skip to contentSkip to conversation

Fix endianess in modpost when cross-compiling for sparc on i386

PATCH New Mathieu Chouquet-Stringer 1 participant 1 message May 12, 2004

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix endianess in modpost when cross-compiling for sparc on i386

	Hi,

this simple patch makes the following code work again:

#ifdef STT_REGISTER
                if (info->hdr->e_machine = EM_SPARC ||
                    info->hdr->e_machine = EM_SPARCV9) {
                        /* Ignore register directives. */
                        if (ELF_ST_TYPE(sym->st_info) = STT_REGISTER)
                                break;
                }

#endif

This portion of code is sparc specific and nothing else in modpost.c uses e_machine meaning cross-compiling for sparc on i386 (or any little endian machine) is the only way to experience the bug.

Without it, e_machine has the wrong value and modpost then generates a lot of "*** Warning: \"symbol\" [filename.ko] undefined" messages.

modpost.c renamed from modpost.c.orig +1 -0
@@ -267,6 +267,7 @@
 	hdr->e_shoff    = TO_NATIVE(hdr->e_shoff);
 	hdr->e_shstrndx = TO_NATIVE(hdr->e_shstrndx);
 	hdr->e_shnum    = TO_NATIVE(hdr->e_shnum);
+	hdr->e_machine  = TO_NATIVE(hdr->e_machine);
 	sechdrs = (void *)hdr + hdr->e_shoff;
 	info->sechdrs = sechdrs;
 
Signature · 4 lines
Mathieu Chouquet-Stringer                 E-Mail: [email protected]
       Never attribute to malice that which can be adequately
                    explained by stupidity.
                     -- Hanlon's Razor --