summaryrefslogtreecommitdiffstats
path: root/binutils/dlltool.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils/dlltool.c')
-rw-r--r--binutils/dlltool.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index 23206a6209..cfed2c6f23 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);
OpenPOWER on IntegriCloud