2009-07-02 Tristan Gingold <gingold@adacore.com>
* Makefile.am (OBJ_FORMATS): Add macho. (CPU_OBJ_VALID): Ditto. (OBJ_FORMAT_CFILES): Add config/obj-macho.c (OBJ_FORMAT_HFILES): Add config/obj-macho.h (obj-macho.o): New rule. * Makefile.in: Regenerated. * configure.tgt (generic_target): Add i386-*-darwin*. * config/tc-i386.h: Use i386_target_format for Mach-O. * config/tc-i386.c (i386_target_format): Define it for Mach-O. (i386_target_format): Add a case for bfd_target_mach_o_flavour. * config/obj-macho.h: New file. * config/obj-macho.c: New file.
This commit is contained in:
parent
16fb2c8c42
commit
e57f8c655c
@ -1,3 +1,18 @@
|
||||
2009-07-02 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* Makefile.am (OBJ_FORMATS): Add macho.
|
||||
(CPU_OBJ_VALID): Ditto.
|
||||
(OBJ_FORMAT_CFILES): Add config/obj-macho.c
|
||||
(OBJ_FORMAT_HFILES): Add config/obj-macho.h
|
||||
(obj-macho.o): New rule.
|
||||
* Makefile.in: Regenerated.
|
||||
* configure.tgt (generic_target): Add i386-*-darwin*.
|
||||
* config/tc-i386.h: Use i386_target_format for Mach-O.
|
||||
* config/tc-i386.c (i386_target_format): Define it for Mach-O.
|
||||
(i386_target_format): Add a case for bfd_target_mach_o_flavour.
|
||||
* config/obj-macho.h: New file.
|
||||
* config/obj-macho.c: New file.
|
||||
|
||||
2009-07-01 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 10168
|
||||
|
@ -109,7 +109,8 @@ OBJ_FORMATS = \
|
||||
coff \
|
||||
ecoff \
|
||||
elf \
|
||||
evax
|
||||
evax \
|
||||
macho
|
||||
|
||||
# This is an sh case which sets valid according to whether the CPU
|
||||
# type in the shell variable c and the OS type in the shell variable o
|
||||
@ -142,6 +143,10 @@ CPU_OBJ_VALID = \
|
||||
case $$c in \
|
||||
alpha) valid=yes ;; \
|
||||
esac ;; \
|
||||
macho) \
|
||||
case $$c in \
|
||||
i386) valid=yes ;; \
|
||||
esac ;; \
|
||||
vms) \
|
||||
case $$c in \
|
||||
vax) valid=yes ;; \
|
||||
@ -368,6 +373,7 @@ OBJ_FORMAT_CFILES = \
|
||||
config/obj-elf.c \
|
||||
config/obj-evax.c \
|
||||
config/obj-fdpicelf.c \
|
||||
config/obj-macho.c \
|
||||
config/obj-som.c
|
||||
|
||||
OBJ_FORMAT_HFILES = \
|
||||
@ -377,6 +383,7 @@ OBJ_FORMAT_HFILES = \
|
||||
config/obj-elf.h \
|
||||
config/obj-evax.h \
|
||||
config/obj-fdpicelf.h \
|
||||
config/obj-macho.h \
|
||||
config/obj-som.h
|
||||
|
||||
# Emulation header files in config
|
||||
@ -594,6 +601,8 @@ obj-evax.o : $(srcdir)/config/obj-evax.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-evax.c
|
||||
obj-fdpicelf.o : $(srcdir)/config/obj-fdpicelf.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-fdpicelf.c
|
||||
obj-macho.o : $(srcdir)/config/obj-macho.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-macho.c
|
||||
obj-multi.o : $(srcdir)/config/obj-multi.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-multi.c
|
||||
obj-som.o : $(srcdir)/config/obj-som.c
|
||||
|
@ -372,7 +372,8 @@ OBJ_FORMATS = \
|
||||
coff \
|
||||
ecoff \
|
||||
elf \
|
||||
evax
|
||||
evax \
|
||||
macho
|
||||
|
||||
|
||||
# This is an sh case which sets valid according to whether the CPU
|
||||
@ -405,6 +406,10 @@ CPU_OBJ_VALID = \
|
||||
case $$c in \
|
||||
alpha) valid=yes ;; \
|
||||
esac ;; \
|
||||
macho) \
|
||||
case $$c in \
|
||||
i386) valid=yes ;; \
|
||||
esac ;; \
|
||||
vms) \
|
||||
case $$c in \
|
||||
vax) valid=yes ;; \
|
||||
@ -629,6 +634,7 @@ OBJ_FORMAT_CFILES = \
|
||||
config/obj-elf.c \
|
||||
config/obj-evax.c \
|
||||
config/obj-fdpicelf.c \
|
||||
config/obj-macho.c \
|
||||
config/obj-som.c
|
||||
|
||||
OBJ_FORMAT_HFILES = \
|
||||
@ -638,6 +644,7 @@ OBJ_FORMAT_HFILES = \
|
||||
config/obj-elf.h \
|
||||
config/obj-evax.h \
|
||||
config/obj-fdpicelf.h \
|
||||
config/obj-macho.h \
|
||||
config/obj-som.h
|
||||
|
||||
|
||||
@ -4680,6 +4687,8 @@ obj-evax.o : $(srcdir)/config/obj-evax.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-evax.c
|
||||
obj-fdpicelf.o : $(srcdir)/config/obj-fdpicelf.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-fdpicelf.c
|
||||
obj-macho.o : $(srcdir)/config/obj-macho.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-macho.c
|
||||
obj-multi.o : $(srcdir)/config/obj-multi.c
|
||||
$(COMPILE) -c $(srcdir)/config/obj-multi.c
|
||||
obj-som.o : $(srcdir)/config/obj-som.c
|
||||
|
57
gas/config/obj-macho.c
Normal file
57
gas/config/obj-macho.c
Normal file
@ -0,0 +1,57 @@
|
||||
/* Mach-O object file format
|
||||
Copyright 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 3,
|
||||
or (at your option) any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
#define OBJ_HEADER "obj-macho.h"
|
||||
|
||||
#include "as.h"
|
||||
#include "mach-o.h"
|
||||
|
||||
static void
|
||||
obj_mach_o_weak (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *name;
|
||||
int c;
|
||||
symbolS *symbolP;
|
||||
|
||||
do
|
||||
{
|
||||
/* Get symbol name. */
|
||||
name = input_line_pointer;
|
||||
c = get_symbol_end ();
|
||||
symbolP = symbol_find_or_make (name);
|
||||
S_SET_WEAK (symbolP);
|
||||
*input_line_pointer = c;
|
||||
SKIP_WHITESPACE ();
|
||||
|
||||
if (c != ',')
|
||||
break;
|
||||
input_line_pointer++;
|
||||
SKIP_WHITESPACE ();
|
||||
}
|
||||
while (*input_line_pointer != '\n');
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
const pseudo_typeS mach_o_pseudo_table[] =
|
||||
{
|
||||
{"weak", obj_mach_o_weak, 0},
|
||||
|
||||
{NULL, NULL, 0}
|
||||
};
|
39
gas/config/obj-macho.h
Normal file
39
gas/config/obj-macho.h
Normal file
@ -0,0 +1,39 @@
|
||||
/* Mach-O object file format for gas, the assembler.
|
||||
Copyright 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
GAS is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 3,
|
||||
or (at your option) any later version.
|
||||
|
||||
GAS is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GAS; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
02110-1301, USA. */
|
||||
|
||||
/* Tag to validate Mach-O object file format processing */
|
||||
#define OBJ_MACH_O 1
|
||||
|
||||
#include "targ-cpu.h"
|
||||
|
||||
#define OUTPUT_FLAVOR bfd_target_mach_o_flavour
|
||||
|
||||
extern const pseudo_typeS mach_o_pseudo_table[];
|
||||
|
||||
#ifndef obj_pop_insert
|
||||
#define obj_pop_insert() pop_insert (mach_o_pseudo_table)
|
||||
#endif
|
||||
|
||||
#define obj_sec_sym_ok_for_reloc(SEC) 1
|
||||
|
||||
#define obj_read_begin_hook() {;}
|
||||
#define obj_symbol_new_hook(s) {;}
|
||||
|
||||
#define EMIT_SECTION_SYMBOLS 0
|
@ -7881,7 +7881,7 @@ md_show_usage (stream)
|
||||
|
||||
#if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
|
||||
|| defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) \
|
||||
|| defined (TE_PE) || defined (TE_PEP))
|
||||
|| defined (TE_PE) || defined (TE_PEP) || defined (OBJ_MACH_O))
|
||||
|
||||
/* Pick the target format to use. */
|
||||
|
||||
@ -7960,6 +7960,10 @@ i386_target_format (void)
|
||||
}
|
||||
return flag_code == CODE_64BIT ? ELF_TARGET_FORMAT64 : ELF_TARGET_FORMAT;
|
||||
}
|
||||
#endif
|
||||
#if defined (OBJ_MACH_O)
|
||||
case bfd_target_mach_o_flavour:
|
||||
return flag_code == CODE_64BIT ? "mach-o-x86-64" : "mach-o-i386";
|
||||
#endif
|
||||
default:
|
||||
abort ();
|
||||
|
@ -72,7 +72,7 @@ extern unsigned long i386_mach (void);
|
||||
|
||||
#if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
|
||||
|| defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) \
|
||||
|| defined (TE_PE) || defined (TE_PEP))
|
||||
|| defined (TE_PE) || defined (TE_PEP) || defined (OBJ_MACH_O))
|
||||
extern const char *i386_target_format (void);
|
||||
#define TARGET_FORMAT i386_target_format ()
|
||||
#else
|
||||
|
@ -233,6 +233,7 @@ case ${generic_target} in
|
||||
i386-*-*nt*) fmt=coff em=pe ;;
|
||||
i386-*-chaos) fmt=elf ;;
|
||||
i386-*-rdos*) fmt=elf ;;
|
||||
i386-*-darwin*) fmt=macho ;;
|
||||
|
||||
i860-*-*) fmt=elf endian=little ;;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user