#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
}
#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
}
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 }
};
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. */
++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, '@'))
{
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);