40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
$NetBSD: patch-src_unexelf.c,v 1.1 2017/11/15 14:53:27 hauke Exp $
|
|
|
|
Enhance ELF macros to deal with 32/64 bit arches
|
|
Special-case alpha
|
|
|
|
Was patch-ad
|
|
|
|
--- src/unexelf.c.orig 2013-08-21 17:43:45.000000000 +0000
|
|
+++ src/unexelf.c
|
|
@@ -490,10 +490,19 @@ typedef struct {
|
|
|
|
#ifndef ElfW
|
|
# ifdef __STDC__
|
|
-# define ElfW(type) Elf32_##type
|
|
+# define ElfBitsW(bits, type) Elf##bits##_##type
|
|
# else
|
|
-# define ElfW(type) Elf32_/**/type
|
|
+# define ElfBitsW(bits, type) Elf/**/bits/**/_/**/type
|
|
# endif
|
|
+# if defined (_LP64) || defined(__alpha__)
|
|
+# define ELFSIZE 64
|
|
+# else
|
|
+# define ELFSIZE 32
|
|
+# endif
|
|
+ /* This macro expands `bits' before invoking ElfBitsW. */
|
|
+# define ElfExpandBitsW(bits, type) ElfBitsW (bits, type)
|
|
+# define ElfW(type) ElfExpandBitsW (ELFSIZE, type)
|
|
+
|
|
#endif
|
|
|
|
#ifndef ELF_BSS_SECTION_NAME
|
|
@@ -959,7 +968,7 @@ unexec (Extbyte *new_name, Extbyte *old_
|
|
memcpy (NEW_SECTION_H (nn).sh_offset + new_base, src,
|
|
NEW_SECTION_H (nn).sh_size);
|
|
|
|
-#ifdef __alpha__
|
|
+#if defined(__alpha__) && !defined(__NetBSD__)
|
|
/* Update Alpha COFF symbol table: */
|
|
if (strcmp (old_section_names + OLD_SECTION_H (n).sh_name, ".mdebug")
|
|
== 0)
|