From a2186dfed798530d10d84c543fb345ef065c0823 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 9 Dec 1999 17:42:25 +0000 Subject: [PATCH] Pass -mpacs-26 by default to arm assembler. Add arm-epoc target support. Do no mangle null page entries. --- binutils/ChangeLog | 6 ++++++ binutils/dlltool.c | 28 +++++++++++++++++++++------- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 4ef55ce7399..39806f58dcb 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +1999-12-09 Nick Clifton + + * dlltool.c (mtable): Add epoc-arm specific entry. + Make default arm entry pass -mpacs-26 to assembler. + (flush_page): Do not mangle null entries. + 1999-12-07 H . J . Lu hjl@valinux.com * readelf.c: Fix compile time warnings. Support more than 999 diff --git a/binutils/dlltool.c b/binutils/dlltool.c index 23206a6209f..cfed2c6f237 100644 --- a/binutils/dlltool.c +++ b/binutils/dlltool.c @@ -512,7 +512,7 @@ mtable[] = #define MARM 0 "arm", ".byte", ".short", ".long", ".asciz", "@", "ldr\tip,[pc]\n\tldr\tpc,[ip]\n\t.long", - ".global", ".space", ".align\t2",".align\t4", "", + ".global", ".space", ".align\t2",".align\t4", "-mapcs-26", "pe-arm-little", bfd_arch_arm, arm_jtab, sizeof (arm_jtab), 8 } @@ -537,7 +537,7 @@ mtable[] = #define MTHUMB 3 "thumb", ".byte", ".short", ".long", ".asciz", "@", "push\t{r6}\n\tldr\tr6, [pc, #8]\n\tldr\tr6, [r6]\n\tmov\tip, r6\n\tpop\t{r6}\n\tbx\tip", - ".global", ".space", ".align\t2",".align\t4", "=mthumb-interwork", + ".global", ".space", ".align\t2",".align\t4", "-mthumb-interwork", "pe-arm-little", bfd_arch_arm, thumb_jtab, sizeof (thumb_jtab), 12 } @@ -587,6 +587,15 @@ mtable[] = mcore_le_jtab, sizeof (mcore_le_jtab), 8 } , + { +#define MARM_EPOC 9 + "arm", ".byte", ".short", ".long", ".asciz", "@", + "ldr\tip,[pc]\n\tldr\tpc,[ip]\n\t.long", + ".global", ".space", ".align\t2",".align\t4", "", + "epoc-pe-arm-little", bfd_arch_arm, + arm_jtab, sizeof (arm_jtab), 8 + } + , { 0 } }; @@ -1248,7 +1257,6 @@ scan_drectve_symbols (abfd) flags &= ~BSF_FUNCTION; } - /* FIXME: The 5th arg is for the `constant' field. What should it be? Not that it matters since it's not currently useful. */ @@ -1302,7 +1310,7 @@ scan_filtered_symbols (abfd, minisyms, symcount, size) ++symbol_name; def_exports (xstrdup (symbol_name) , 0, -1, 0, 0, - ! (sym->flags & BSF_FUNCTION)); + ! (sym->flags & BSF_FUNCTION)); if (add_stdcall_alias && strchr (symbol_name, '@')) { @@ -1574,9 +1582,15 @@ flush_page (f, need, page_addr, on_page) ASM_C); for (i = 0; i < on_page; i++) - fprintf (f, "\t%s\t0x%lx\n", ASM_SHORT, - ((need[i] - page_addr) | 0x3000) & 0xffff); - + { + long needed = need[i]; + + if (needed) + needed = ((needed - page_addr) | 0x3000) & 0xffff; + + fprintf (f, "\t%s\t0x%lx\n", ASM_SHORT, needed); + } + /* And padding */ if (on_page & 1) fprintf (f, "\t%s\t0x%x\n", ASM_SHORT, 0 | 0x0000); -- 2.30.2