if (state->format == AS_OUTPUT_I386_ELKS || state->format == AS_OUTPUT_IA16_ELKS) {
output_elks (state->ofp);
- } else if (state->format == AS_OUTPUT_WIN32 || state->format == AS_OUTPUT_WIN64) {
+ } else if (state->format == AS_OUTPUT_COFF || state->format == AS_OUTPUT_WIN32 || state->format == AS_OUTPUT_WIN64) {
output_coff (state->ofp);
}
#define AS_OUTPUT_IA16_ELKS 0x00
#define AS_OUTPUT_I386_ELKS 0x01
-
-#define AS_OUTPUT_WIN32 0x02
-#define AS_OUTPUT_WIN64 0x03
+#define AS_OUTPUT_COFF 0x02
+#define AS_OUTPUT_WIN32 0x03
+#define AS_OUTPUT_WIN64 0x04
struct as_state {
}
- } else if (state->format == AS_OUTPUT_WIN32) {
+ } else {
switch (fixup->reloc_type) {
machine_dependent_set_march ("generic64");
machine_dependent_set_bits (64, 1);
- } else if (state->format == AS_OUTPUT_I386_ELKS || state->format == AS_OUTPUT_WIN32) {
+ } else if (state->format == AS_OUTPUT_I386_ELKS || state->format == AS_OUTPUT_COFF || state->format == AS_OUTPUT_WIN32) {
machine_dependent_set_march ("i386");
machine_dependent_set_bits (32, 1);
fixup->done = 1;
}
- if (state->format == AS_OUTPUT_WIN32 || state->format == AS_OUTPUT_WIN64) {
+ if (state->format == AS_OUTPUT_COFF || state->format == AS_OUTPUT_WIN32 || state->format == AS_OUTPUT_WIN64) {
/* Not sure why but COFF requires this adjustment. */
if (fixup->pcrel && fixup->add_symbol && symbol_get_section (fixup->add_symbol) != current_section) {
fprintf (stderr, " -f FORMAT Specify the format of object file (default elks-ia16)\n");
fprintf (stderr, " Supported formats are:\n");
fprintf (stderr, " elks-ia16, elks-i386,\n");
- fprintf (stderr, " win32, win64\n");
+ fprintf (stderr, " coff, win32, win64\n");
fprintf (stderr, " -l FILE Print listings to file FILE.\n");
fprintf (stderr, " -o OBJFILE Name the object-file output OBJFILE (default a.out).\n");
}
+ if (xstrcasecmp (optarg, "coff") == 0) {
+
+ state->format = AS_OUTPUT_COFF;
+ break;
+
+ }
+
if (xstrcasecmp (optarg, "win32") == 0) {
state->format = AS_OUTPUT_WIN32;