aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1999-12-09 17:42:25 +0000
committerNick Clifton <nickc@redhat.com>1999-12-09 17:42:25 +0000
commita2186dfed798530d10d84c543fb345ef065c0823 (patch)
tree1488edac7cc397fbe5b0e3e00d9711c93bbbd1ec
parentde57eccd12a59b2ccb9700dca5c6e86d5c6425ad (diff)
downloadgdb-a2186dfed798530d10d84c543fb345ef065c0823.zip
gdb-a2186dfed798530d10d84c543fb345ef065c0823.tar.gz
gdb-a2186dfed798530d10d84c543fb345ef065c0823.tar.bz2
Pass -mpacs-26 by default to arm assembler.
Add arm-epoc target support. Do no mangle null page entries.
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/dlltool.c28
2 files changed, 27 insertions, 7 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 4ef55ce..39806f5 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+1999-12-09 Nick Clifton <nickc@cygnus.com>
+
+ * 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 23206a6..cfed2c6 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);