diff options
author | Nick Clifton <nickc@redhat.com> | 1999-12-09 17:42:25 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 1999-12-09 17:42:25 +0000 |
commit | a2186dfed798530d10d84c543fb345ef065c0823 (patch) | |
tree | 1488edac7cc397fbe5b0e3e00d9711c93bbbd1ec /binutils/dlltool.c | |
parent | de57eccd12a59b2ccb9700dca5c6e86d5c6425ad (diff) | |
download | gdb-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.
Diffstat (limited to 'binutils/dlltool.c')
-rw-r--r-- | binutils/dlltool.c | 28 |
1 files changed, 21 insertions, 7 deletions
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); |