OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [config/] [obj-macho.h] - Diff between revs 16 and 166

Show entire file | Details | Blame | View Log

Rev 16 Rev 166
Line 1... Line 1...
/* Mach-O object file format for gas, the assembler.
/* Mach-O object file format for gas, the assembler.
   Copyright 2009 Free Software Foundation, Inc.
   Copyright 2009, 2011, 2012 Free Software Foundation, Inc.
 
 
   This file is part of GAS, the GNU Assembler.
   This file is part of GAS, the GNU Assembler.
 
 
   GAS is free software; you can redistribute it and/or modify
   GAS is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as
   it under the terms of the GNU General Public License as
Line 16... Line 16...
   You should have received a copy of the GNU General Public License
   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
   along with GAS; see the file COPYING.  If not, write to the Free
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
   02110-1301, USA.  */
   02110-1301, USA.  */
 
 
 
#ifndef _OBJ_MACH_O_H
 
#define _OBJ_MACH_O_H
 
 
/* Tag to validate Mach-O object file format processing */
/* Tag to validate Mach-O object file format processing */
#define OBJ_MACH_O 1
#define OBJ_MACH_O 1
 
 
 
#include "bfd/mach-o.h"
 
 
#include "targ-cpu.h"
#include "targ-cpu.h"
 
 
#define OUTPUT_FLAVOR bfd_target_mach_o_flavour
#define OUTPUT_FLAVOR bfd_target_mach_o_flavour
 
 
 
/* We want to control how the sections are pre-defined on startup.  */
 
#define obj_begin() mach_o_begin ()
 
extern void mach_o_begin (void);
 
 
 
/* All our align expressions are power of two.  */
 
#define USE_ALIGN_PTWO 1
 
 
 
/* Common symbols can carry alignment information.  */
 
#ifndef S_SET_ALIGN
 
#define S_SET_ALIGN(S,V) do {\
 
  bfd_mach_o_asymbol *___s = (bfd_mach_o_asymbol *) symbol_get_bfdsym (S);\
 
  ___s->n_desc = (___s->n_desc & 0xf0ff) | (((V) & 0x0f) << 8);\
 
} while (0)
 
#endif
 
 
extern const pseudo_typeS mach_o_pseudo_table[];
extern const pseudo_typeS mach_o_pseudo_table[];
 
 
#ifndef obj_pop_insert
#ifndef obj_pop_insert
#define obj_pop_insert() pop_insert (mach_o_pseudo_table)
#define obj_pop_insert() pop_insert (mach_o_pseudo_table)
#endif
#endif
Line 36... Line 56...
#define obj_read_begin_hook()   {;}
#define obj_read_begin_hook()   {;}
#define obj_symbol_new_hook(s)  {;}
#define obj_symbol_new_hook(s)  {;}
 
 
#define EMIT_SECTION_SYMBOLS            0
#define EMIT_SECTION_SYMBOLS            0
 
 
 No newline at end of file
 No newline at end of file
 
struct obj_mach_o_symbol_data
 
{
 
  /* If the symbol represents a subsection, this is the size of the subsection.
 
     This is used to check whether a local symbol belongs to a subsection.  */
 
  valueT subsection_size;
 
};
 
#define OBJ_SYMFIELD_TYPE struct obj_mach_o_symbol_data
 
 
 
#define obj_frob_colon obj_mach_o_frob_colon
 
extern void obj_mach_o_frob_colon (const char *);
 
 
 
/* Called when a label is defined.  Mach-O uses this to create subsections.  */
 
#define obj_frob_label obj_mach_o_frob_label
 
extern void obj_mach_o_frob_label (symbolS *);
 
 
 
#define obj_frob_symbol(s, punt) punt = obj_mach_o_frob_symbol(s)
 
extern int obj_mach_o_frob_symbol (struct symbol *);
 
 
 
#define OBJ_PROCESS_STAB(SEG,W,S,T,O,D) obj_mach_o_process_stab(W,S,T,O,D)
 
extern void obj_mach_o_process_stab (int, const char *,int, int, int);
 
 
 
struct obj_mach_o_frag_data
 
{
 
  /* Symbol that corresponds to the subsection.  */
 
  symbolS *subsection;
 
};
 
 
 
#define OBJ_FRAG_TYPE struct obj_mach_o_frag_data
 
 
 
#define md_pre_output_hook obj_mach_o_pre_output_hook()
 
extern void obj_mach_o_pre_output_hook(void);
 
 
 
#define md_pre_relax_hook obj_mach_o_pre_relax_hook()
 
extern void obj_mach_o_pre_relax_hook (void);
 
 
 
#define md_post_relax_hook obj_mach_o_post_relax_hook()
 
extern void obj_mach_o_post_relax_hook (void);
 
 
 
#define obj_frob_file_after_relocs obj_mach_o_frob_file_after_relocs
 
extern void obj_mach_o_frob_file_after_relocs (void);
 
 
 
#define SET_SECTION_RELOCS(sec, relocs, n) \
 
  obj_mach_o_reorder_section_relocs (sec, relocs, n)
 
extern void obj_mach_o_reorder_section_relocs (asection *, arelent **,
 
                                               unsigned int);
 
 
 
/* Emit relocs for local subtracts, to cater for subsections-via-symbols.  */
 
#define md_allow_local_subtract(LEFT, RIGHT, SECTION) \
 
 obj_mach_o_allow_local_subtract (LEFT, RIGHT, SECTION)
 
extern int obj_mach_o_allow_local_subtract (expressionS *, expressionS *,
 
                                            segT);
 
 
 
struct fix;
 
extern int obj_mach_o_in_different_subsection (symbolS *a, symbolS *b);
 
extern int obj_mach_o_force_reloc (struct fix *fix);
 
extern int obj_mach_o_force_reloc_sub_same (struct fix *fix, segT seg);
 
extern int obj_mach_o_force_reloc_sub_local (struct fix *fix, segT seg);
 
 
 
#endif /* _OBJ_MACH_O_H */
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.