Two minor changes to the adaptation for NetBSD/powerpc, resulting

in no code change and adding portability to NetBSD 3.x, so no
revision bump:

 o Let the workaround for missing R_PPC_ADDR16{HI,LO} work for other
   systems who also define R_PPC_16_{HI,LO} instead.

 o Add portability to NetBSD/powerpc 3.x, which has a very minimalist
   <powerpc/elf_machdep.h> file.
This commit is contained in:
he 2009-04-17 19:54:39 +00:00
parent c7101d28d1
commit b64c66edf5
2 changed files with 28 additions and 11 deletions

View file

@ -1,10 +1,10 @@
$NetBSD: distinfo,v 1.8 2009/04/14 23:50:19 he Exp $
$NetBSD: distinfo,v 1.9 2009/04/17 19:54:39 he Exp $
SHA1 (parrot-1.0.0.tar.gz) = 9e028f5fff38a332c13ad4389652a016d7a824f7
RMD160 (parrot-1.0.0.tar.gz) = 46f60accd33f16cc910f4ea03840badc358d22c7
Size (parrot-1.0.0.tar.gz) = 3908888 bytes
SHA1 (patch-aa) = b3ad6ae9acbd8f25682395933fe48209b50a9752
SHA1 (patch-ab) = 4ecbae193b0bfe47daa8d4dd69468d298137c03a
SHA1 (patch-ab) = d00168e31daff02ca0ccaec532f029ff7d0126e6
SHA1 (patch-ac) = 5e2875b46aa390fc512bf22001146a4a470ae192
SHA1 (patch-ad) = 9002a7ca55f8f960bea669e383431b3eeb83a878
SHA1 (patch-ae) = 72e4752112dab2f0b72ede5c45b77fd5b5554606

View file

@ -1,18 +1,35 @@
$NetBSD: patch-ab,v 1.4 2009/03/25 23:01:48 he Exp $
$NetBSD: patch-ab,v 1.5 2009/04/17 19:54:39 he Exp $
Handle a few ELF-related symbols named differently in NetBSD
compared to Linux.
The R_PPC_ADDR16{HI,LO} constants are named something else on
NetBSD, and might be elsewhere.
Also add workarounds for NetBSD/powerpc 3.x, which has a minimal
<powerpc/elf_machdep.h> file.
--- src/exec_save.c.orig 2009-03-08 21:32:43.000000000 +0100
--- src/exec_save.c.orig 2009-03-08 20:32:43.000000000 +0000
+++ src/exec_save.c
@@ -30,6 +30,11 @@ static void save_int(FILE *fp, int i);
@@ -30,6 +30,26 @@ static void save_int(FILE *fp, int i);
static void save_short(FILE *fp, short s);
static void save_struct(FILE *fp, void *sp, size_t size);
+#if defined(PARROT_PPC) && defined(__NetBSD__)
+#define R_PPC_ADDR16_HI R_PPC_16_HI
+#define R_PPC_ADDR16_LO R_PPC_16_LO
+#endif /* PARROT_PPC && __NetBSD__ */
+#if defined(PARROT_PPC)
+#if !defined(R_PPC_ADDR16_HI) && !defined(R_PPC_ADDR16_LO) && \
+ defined(R_PPC_16_HI) && defined(R_PPC_16_LO)
+# define R_PPC_ADDR16_HI R_PPC_16_HI
+# define R_PPC_ADDR16_LO R_PPC_16_LO
+#endif
+/*
+ * NetBSD/powerpc 3.x doesn't define these constants,
+ * so add some workarounds for it.
+ */
+#if !defined(R_PPC_ADDR16_HI) && !defined(R_PPC_ADDR16_LO) && \
+ defined(__NetBSD__)
+# define R_PPC_ADDR16_HI 5
+# define R_PPC_ADDR16_LO 4
+#endif
+#if !defined(R_PPC_REL24) && defined(__NetBSD__)
+# define R_PPC_REL24 10
+#endif
+#endif /* PARROT_PPC */
+
#ifdef EXEC_A_OUT