mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 14:39:09 +08:00
* config/tc-i386.h (md_end): Define.
(i386_elf_emit_arch_note): Declare. (CpuUnknown): Delete. * config/tc-i386.c (default_arch): Constify. (smallest_imm_type): Remove CpuUnknown test. (md_assemble): Don't bother checking cpu_arch_flags non-zero. (i386_elf_emit_arch_note): New function.
This commit is contained in:
@ -1,5 +1,13 @@
|
|||||||
2001-11-15 Alan Modra <amodra@bigpond.net.au>
|
2001-11-15 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* config/tc-i386.h (md_end): Define.
|
||||||
|
(i386_elf_emit_arch_note): Declare.
|
||||||
|
(CpuUnknown): Delete.
|
||||||
|
* config/tc-i386.c (default_arch): Constify.
|
||||||
|
(smallest_imm_type): Remove CpuUnknown test.
|
||||||
|
(md_assemble): Don't bother checking cpu_arch_flags non-zero.
|
||||||
|
(i386_elf_emit_arch_note): New function.
|
||||||
|
|
||||||
* po/POTFILES.in: Regenerate.
|
* po/POTFILES.in: Regenerate.
|
||||||
|
|
||||||
2001-11-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
2001-11-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||||
|
@ -77,7 +77,7 @@ static bfd_reloc_code_real_type reloc
|
|||||||
#ifndef DEFAULT_ARCH
|
#ifndef DEFAULT_ARCH
|
||||||
#define DEFAULT_ARCH "i386"
|
#define DEFAULT_ARCH "i386"
|
||||||
#endif
|
#endif
|
||||||
static char *default_arch = DEFAULT_ARCH;
|
static const char *default_arch = DEFAULT_ARCH;
|
||||||
|
|
||||||
/* 'md_assemble ()' gathers together information and puts it into a
|
/* 'md_assemble ()' gathers together information and puts it into a
|
||||||
i386_insn. */
|
i386_insn. */
|
||||||
@ -539,8 +539,7 @@ static int
|
|||||||
smallest_imm_type (num)
|
smallest_imm_type (num)
|
||||||
offsetT num;
|
offsetT num;
|
||||||
{
|
{
|
||||||
if (cpu_arch_flags != (Cpu086 | Cpu186 | Cpu286 | Cpu386 | Cpu486 | CpuNo64)
|
if (cpu_arch_flags != (Cpu086 | Cpu186 | Cpu286 | Cpu386 | Cpu486 | CpuNo64))
|
||||||
&& !(cpu_arch_flags & (CpuUnknown)))
|
|
||||||
{
|
{
|
||||||
/* This code is disabled on the 486 because all the Imm1 forms
|
/* This code is disabled on the 486 because all the Imm1 forms
|
||||||
in the opcode table are slower on the i486. They're the
|
in the opcode table are slower on the i486. They're the
|
||||||
@ -1393,18 +1392,15 @@ md_assemble (line)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check if instruction is supported on specified architecture. */
|
/* Check if instruction is supported on specified architecture. */
|
||||||
if (cpu_arch_flags != 0)
|
if ((current_templates->start->cpu_flags & ~(Cpu64 | CpuNo64))
|
||||||
|
& ~(cpu_arch_flags & ~(Cpu64 | CpuNo64)))
|
||||||
{
|
{
|
||||||
if ((current_templates->start->cpu_flags & ~(Cpu64 | CpuNo64))
|
as_warn (_("`%s' is not supported on `%s'"),
|
||||||
& ~(cpu_arch_flags & ~(Cpu64 | CpuNo64)))
|
current_templates->start->name, cpu_arch_name);
|
||||||
{
|
}
|
||||||
as_warn (_("`%s' is not supported on `%s'"),
|
else if ((Cpu386 & ~cpu_arch_flags) && (flag_code != CODE_16BIT))
|
||||||
current_templates->start->name, cpu_arch_name);
|
{
|
||||||
}
|
as_warn (_("use .code16 to ensure correct addressing mode"));
|
||||||
else if ((Cpu386 & ~cpu_arch_flags) && (flag_code != CODE_16BIT))
|
|
||||||
{
|
|
||||||
as_warn (_("use .code16 to ensure correct addressing mode"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for rep/repne without a string instruction. */
|
/* Check for rep/repne without a string instruction. */
|
||||||
@ -4661,6 +4657,48 @@ i386_target_format ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* OBJ_MAYBE_ more than one */
|
#endif /* OBJ_MAYBE_ more than one */
|
||||||
|
|
||||||
|
#if (defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))
|
||||||
|
void i386_elf_emit_arch_note ()
|
||||||
|
{
|
||||||
|
if (OUTPUT_FLAVOR == bfd_target_elf_flavour
|
||||||
|
&& cpu_arch_name != NULL)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
asection *seg = now_seg;
|
||||||
|
subsegT subseg = now_subseg;
|
||||||
|
Elf_Internal_Note i_note;
|
||||||
|
Elf_External_Note e_note;
|
||||||
|
asection *note_secp;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
/* Create the .note section. */
|
||||||
|
note_secp = subseg_new (".note", 0);
|
||||||
|
bfd_set_section_flags (stdoutput,
|
||||||
|
note_secp,
|
||||||
|
SEC_HAS_CONTENTS | SEC_READONLY);
|
||||||
|
|
||||||
|
/* Process the arch string. */
|
||||||
|
len = strlen (cpu_arch_name);
|
||||||
|
|
||||||
|
i_note.namesz = len + 1;
|
||||||
|
i_note.descsz = 0;
|
||||||
|
i_note.type = NT_ARCH;
|
||||||
|
p = frag_more (sizeof (e_note.namesz));
|
||||||
|
md_number_to_chars (p, (valueT) i_note.namesz, sizeof (e_note.namesz));
|
||||||
|
p = frag_more (sizeof (e_note.descsz));
|
||||||
|
md_number_to_chars (p, (valueT) i_note.descsz, sizeof (e_note.descsz));
|
||||||
|
p = frag_more (sizeof (e_note.type));
|
||||||
|
md_number_to_chars (p, (valueT) i_note.type, sizeof (e_note.type));
|
||||||
|
p = frag_more (len + 1);
|
||||||
|
strcpy (p, cpu_arch_name);
|
||||||
|
|
||||||
|
frag_align (2, 0, 0);
|
||||||
|
|
||||||
|
subseg_set (seg, subseg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif /* BFD_ASSEMBLER */
|
#endif /* BFD_ASSEMBLER */
|
||||||
|
|
||||||
symbolS *
|
symbolS *
|
||||||
|
@ -111,6 +111,11 @@ extern const char *i386_target_format PARAMS ((void));
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (defined (OBJ_MAYBE_ELF) || defined (OBJ_ELF))
|
||||||
|
#define md_end i386_elf_emit_arch_note
|
||||||
|
extern void i386_elf_emit_arch_note PARAMS ((void));
|
||||||
|
#endif
|
||||||
|
|
||||||
#else /* ! BFD_ASSEMBLER */
|
#else /* ! BFD_ASSEMBLER */
|
||||||
|
|
||||||
/* COFF STUFF */
|
/* COFF STUFF */
|
||||||
@ -293,7 +298,6 @@ typedef struct
|
|||||||
#define CpuSSE 0x1000 /* Streaming SIMD extensions required */
|
#define CpuSSE 0x1000 /* Streaming SIMD extensions required */
|
||||||
#define CpuSSE2 0x2000 /* Streaming SIMD extensions 2 required */
|
#define CpuSSE2 0x2000 /* Streaming SIMD extensions 2 required */
|
||||||
#define Cpu3dnow 0x4000 /* 3dnow! support required */
|
#define Cpu3dnow 0x4000 /* 3dnow! support required */
|
||||||
#define CpuUnknown 0x8000 /* The CPU is unknown, be on the safe side. */
|
|
||||||
|
|
||||||
/* These flags are set by gas depending on the flag_code. */
|
/* These flags are set by gas depending on the flag_code. */
|
||||||
#define Cpu64 0x4000000 /* 64bit support required */
|
#define Cpu64 0x4000000 /* 64bit support required */
|
||||||
|
Reference in New Issue
Block a user