* targets.c, Makefile.in: comment out tekhex for the moment.
* ieee.c: if some places where null pointers were used instead of &bfd_abs_section. * configure.in: tandem target is st2000 * coff-m68k.c: rename static howto_table to global m68kcoff_howto_table. * bout.c: remove unnecessary abort
This commit is contained in:
parent
e14a43bfaf
commit
69e0d34d4d
|
@ -1,5 +1,11 @@
|
||||||
Fri May 1 12:58:34 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
Fri May 1 12:58:34 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||||
|
|
||||||
|
* targets.c, Makefile.in: comment out tekhex for the moment.
|
||||||
|
* ieee.c: if some places where null pointers were used instead of &bfd_abs_section.
|
||||||
|
* configure.in: tandem target is st2000
|
||||||
|
* coff-m68k.c: rename static howto_table to global
|
||||||
|
m68kcoff_howto_table.
|
||||||
|
* bout.c: remove unnecessary abort
|
||||||
* coff-a29k.c: various changes to the way relocations work to cope
|
* coff-a29k.c: various changes to the way relocations work to cope
|
||||||
with the "new order" and latent bugs.
|
with the "new order" and latent bugs.
|
||||||
* coffcode.h: lint
|
* coffcode.h: lint
|
||||||
|
|
|
@ -77,7 +77,7 @@ BFD_LIBS = libbfd.o opncls.o bfd.o archive.o targets.o cache.o \
|
||||||
BFD_MACHINES = cpu-h8300.o cpu-i960.o cpu-sparc.o cpu-m68k.o cpu-m88k.o \
|
BFD_MACHINES = cpu-h8300.o cpu-i960.o cpu-sparc.o cpu-m68k.o cpu-m88k.o \
|
||||||
cpu-vax.o cpu-mips.o cpu-a29k.o cpu-i386.o cpu-rs6000.o
|
cpu-vax.o cpu-mips.o cpu-a29k.o cpu-i386.o cpu-rs6000.o
|
||||||
|
|
||||||
BFD_BACKENDS = oasys.o ieee.o srec.o tekhex.o elf.o stab-syms.o\
|
BFD_BACKENDS = oasys.o ieee.o srec.o elf.o stab-syms.o\
|
||||||
aout64.o aout32.o demo64.o sunos.o newsos3.o i386aout.o bout.o \
|
aout64.o aout32.o demo64.o sunos.o newsos3.o i386aout.o bout.o \
|
||||||
coff-i960.o coff-a29k.o coff-m68k.o coff-i386.o coff-m88k.o \
|
coff-i960.o coff-a29k.o coff-m68k.o coff-i386.o coff-m88k.o \
|
||||||
coff-mips.o coff-rs6000.o coff-h8300.o coff-msym.o
|
coff-mips.o coff-rs6000.o coff-h8300.o coff-msym.o
|
||||||
|
@ -302,7 +302,7 @@ sunos.o : sunos.c aoutf1.h $(INCDIR)/bfd.h $(INCDIR)/obstack.h \
|
||||||
demo64.o : demo64.c
|
demo64.o : demo64.c
|
||||||
|
|
||||||
srec.o : srec.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h
|
srec.o : srec.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h
|
||||||
tekhex.o : tekhex.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h
|
|
||||||
oasys.o : oasys.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h \
|
oasys.o : oasys.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h \
|
||||||
$(INCDIR)/oasys.h liboasys.h
|
$(INCDIR)/oasys.h liboasys.h
|
||||||
ieee.o : ieee.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h \
|
ieee.o : ieee.c $(INCDIR)/bfd.h $(INCDIR)/obstack.h libbfd.h \
|
||||||
|
|
160
bfd/ieee.c
160
bfd/ieee.c
|
@ -185,58 +185,63 @@ DEFUN(read_id,(ieee),
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DEFUN(ieee_write_expression,(abfd, value,/* section,*/ symbol, pcrel, index),
|
DEFUN(ieee_write_expression,(abfd, value, symbol, pcrel, index),
|
||||||
bfd*abfd AND
|
bfd*abfd AND
|
||||||
bfd_vma value AND
|
bfd_vma value AND
|
||||||
/* asection *section AND*/
|
|
||||||
asymbol *symbol AND
|
asymbol *symbol AND
|
||||||
boolean pcrel AND
|
boolean pcrel AND
|
||||||
unsigned int index)
|
unsigned int index)
|
||||||
{
|
{
|
||||||
asection *section;
|
unsigned int term_count = 0;
|
||||||
|
|
||||||
unsigned int plus_count = 0;
|
|
||||||
if (value != 0)
|
if (value != 0)
|
||||||
|
{
|
||||||
ieee_write_int(abfd, value);
|
ieee_write_int(abfd, value);
|
||||||
|
term_count++;
|
||||||
if (section != &bfd_abs_section) {
|
|
||||||
plus_count++;
|
|
||||||
ieee_write_byte(abfd, ieee_variable_R_enum);
|
|
||||||
ieee_write_byte(abfd, section->index +IEEE_SECTION_NUMBER_BASE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (symbol != (asymbol *)NULL) {
|
if (symbol->section == &bfd_com_section
|
||||||
plus_count++;
|
|| symbol->section == &bfd_und_section)
|
||||||
if ((symbol->section == &bfd_und_section) ||
|
{
|
||||||
(symbol->section == &bfd_com_section)) {
|
/* Def of a common symbol */
|
||||||
ieee_write_byte(abfd, ieee_variable_X_enum);
|
ieee_write_byte(abfd, ieee_variable_X_enum);
|
||||||
ieee_write_int(abfd, symbol->value);
|
ieee_write_int(abfd, symbol->value);
|
||||||
|
term_count++;
|
||||||
}
|
}
|
||||||
else if (symbol->flags & BSF_GLOBAL) {
|
else if (symbol->section != &bfd_abs_section)
|
||||||
|
{
|
||||||
|
/* Ref to defined symbol - */
|
||||||
|
|
||||||
|
ieee_write_byte(abfd, ieee_variable_R_enum);
|
||||||
|
ieee_write_byte(abfd, symbol->section->index + IEEE_SECTION_NUMBER_BASE);
|
||||||
|
term_count++;
|
||||||
|
if (symbol->flags & BSF_GLOBAL)
|
||||||
|
{
|
||||||
ieee_write_byte(abfd, ieee_variable_I_enum);
|
ieee_write_byte(abfd, ieee_variable_I_enum);
|
||||||
ieee_write_int(abfd, symbol->value);
|
ieee_write_int(abfd, symbol->value);
|
||||||
|
term_count++;
|
||||||
}
|
}
|
||||||
else if (symbol->flags & BSF_LOCAL) {
|
else if (symbol->flags & ( BSF_LOCAL | BSF_SECTION_SYM))
|
||||||
|
{
|
||||||
/* This is a reference to a defined local symbol,
|
/* This is a reference to a defined local symbol,
|
||||||
We can easily do a local as a section+offset */
|
We can easily do a local as a section+offset */
|
||||||
if (bfd_symbol_is_absolute(symbol) == false) {
|
|
||||||
/* If this symbol is not absolute, add the base of it */
|
|
||||||
ieee_write_byte(abfd, ieee_variable_R_enum); /* or L */
|
ieee_write_byte(abfd, ieee_variable_R_enum); /* or L */
|
||||||
ieee_write_byte(abfd, symbol->section->index +
|
ieee_write_byte(abfd, symbol->section->index +
|
||||||
IEEE_SECTION_NUMBER_BASE);
|
IEEE_SECTION_NUMBER_BASE);
|
||||||
plus_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
ieee_write_int(abfd, symbol->value);
|
ieee_write_int(abfd, symbol->value);
|
||||||
|
term_count++;
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
BFD_FAIL();
|
BFD_FAIL();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(pcrel) {
|
if(pcrel) {
|
||||||
/* subtract the pc from here by asking for PC of this section*/
|
/* subtract the pc from here by asking for PC of this section*/
|
||||||
ieee_write_byte(abfd, ieee_variable_P_enum);
|
ieee_write_byte(abfd, ieee_variable_P_enum);
|
||||||
|
@ -244,19 +249,19 @@ DEFUN(ieee_write_expression,(abfd, value,/* section,*/ symbol, pcrel, index),
|
||||||
ieee_write_byte(abfd, ieee_function_minus_enum);
|
ieee_write_byte(abfd, ieee_function_minus_enum);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value != 0){
|
if (term_count == 1)
|
||||||
while (plus_count > 0) {
|
{
|
||||||
ieee_write_byte(abfd, ieee_function_plus_enum);
|
|
||||||
plus_count--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (!plus_count)
|
|
||||||
ieee_write_byte(abfd,0);
|
ieee_write_byte(abfd,0);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
while (term_count > 1) {
|
||||||
|
ieee_write_byte(abfd, ieee_function_plus_enum);
|
||||||
|
term_count--;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -371,10 +376,9 @@ static ieee_symbol_index_type NOSYMBOL = { 0, 0};
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
DEFUN(parse_expression,(ieee, value, symbol, pcrel, extra),
|
||||||
ieee_data_type *ieee AND
|
ieee_data_type *ieee AND
|
||||||
bfd_vma *value AND
|
bfd_vma *value AND
|
||||||
/* asection **section AND*/
|
|
||||||
ieee_symbol_index_type *symbol AND
|
ieee_symbol_index_type *symbol AND
|
||||||
boolean *pcrel AND
|
boolean *pcrel AND
|
||||||
unsigned int *extra)
|
unsigned int *extra)
|
||||||
|
@ -385,7 +389,7 @@ DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
||||||
#define NOS sp[-1]
|
#define NOS sp[-1]
|
||||||
#define INC sp++;
|
#define INC sp++;
|
||||||
#define DEC sp--;
|
#define DEC sp--;
|
||||||
asection **section;
|
|
||||||
|
|
||||||
boolean loop = true;
|
boolean loop = true;
|
||||||
ieee_value_type stack[10];
|
ieee_value_type stack[10];
|
||||||
|
@ -405,7 +409,7 @@ DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
||||||
next_byte(&(ieee->h));
|
next_byte(&(ieee->h));
|
||||||
*pcrel = true;
|
*pcrel = true;
|
||||||
section_n = must_parse_int(&(ieee->h));
|
section_n = must_parse_int(&(ieee->h));
|
||||||
PUSH(NOSYMBOL, 0,
|
PUSH(NOSYMBOL, &bfd_abs_section,
|
||||||
TOS.value = ieee->section_table[section_n]->vma +
|
TOS.value = ieee->section_table[section_n]->vma +
|
||||||
ieee_per_section(ieee->section_table[section_n])->pc);
|
ieee_per_section(ieee->section_table[section_n])->pc);
|
||||||
break;
|
break;
|
||||||
|
@ -426,7 +430,7 @@ DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
||||||
next_byte(&(ieee->h));
|
next_byte(&(ieee->h));
|
||||||
PUSH(NOSYMBOL,
|
PUSH(NOSYMBOL,
|
||||||
0,
|
0,
|
||||||
ieee->section_table[must_parse_int(&(ieee->h))]->_cooked_size);
|
ieee->section_table[must_parse_int(&(ieee->h))]->_raw_size);
|
||||||
break;
|
break;
|
||||||
case ieee_variable_I_enum:
|
case ieee_variable_I_enum:
|
||||||
case ieee_variable_X_enum:
|
case ieee_variable_X_enum:
|
||||||
|
@ -437,7 +441,7 @@ DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
||||||
sy.index = (int)(must_parse_int(&(ieee->h))) ;
|
sy.index = (int)(must_parse_int(&(ieee->h))) ;
|
||||||
sy.letter = 'X';
|
sy.letter = 'X';
|
||||||
|
|
||||||
PUSH(sy, 0, 0);
|
PUSH(sy, &bfd_und_section, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ieee_function_minus_enum:
|
case ieee_function_minus_enum:
|
||||||
|
@ -473,7 +477,7 @@ DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
||||||
|| this_byte(&(ieee->h)) > (int)ieee_variable_Z_enum);
|
|| this_byte(&(ieee->h)) > (int)ieee_variable_Z_enum);
|
||||||
if (parse_int(&(ieee->h), &va))
|
if (parse_int(&(ieee->h), &va))
|
||||||
{
|
{
|
||||||
PUSH(NOSYMBOL,0, va);
|
PUSH(NOSYMBOL, &bfd_abs_section, va);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/*
|
/*
|
||||||
|
@ -491,8 +495,12 @@ DEFUN(parse_expression,(ieee, value,/* section,*/ symbol, pcrel, extra),
|
||||||
ieee_symbol_index_type sy1;
|
ieee_symbol_index_type sy1;
|
||||||
POP(sy1, section1, *extra);
|
POP(sy1, section1, *extra);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
asection *dummy;
|
||||||
|
|
||||||
|
POP(*symbol, dummy, *value);
|
||||||
|
}
|
||||||
|
|
||||||
POP(*symbol, *section, *value);
|
|
||||||
loop = false;
|
loop = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -631,7 +639,7 @@ DEFUN(ieee_slurp_external_symbols,(abfd),
|
||||||
symbol_name_index = must_parse_int(&(ieee->h));
|
symbol_name_index = must_parse_int(&(ieee->h));
|
||||||
parse_expression(ieee,
|
parse_expression(ieee,
|
||||||
&symbol->symbol.value,
|
&symbol->symbol.value,
|
||||||
/* &symbol->symbol.section,*/
|
&symbol->symbol.section,
|
||||||
&symbol_ignore,
|
&symbol_ignore,
|
||||||
&pcrel_ignore,
|
&pcrel_ignore,
|
||||||
&extra);
|
&extra);
|
||||||
|
@ -747,7 +755,7 @@ DEFUN(ieee_get_symtab,(abfd, location),
|
||||||
ieee_symbol_type *symp;
|
ieee_symbol_type *symp;
|
||||||
static bfd dummy_bfd;
|
static bfd dummy_bfd;
|
||||||
static asymbol empty_symbol =
|
static asymbol empty_symbol =
|
||||||
{ &dummy_bfd," ieee empty",(symvalue)0,BSF_DEBUGGING };
|
{ &dummy_bfd," ieee empty",(symvalue)0,BSF_DEBUGGING , &bfd_abs_section};
|
||||||
|
|
||||||
if (abfd->symcount) {
|
if (abfd->symcount) {
|
||||||
|
|
||||||
|
@ -975,7 +983,7 @@ DEFUN(ieee_archive_p,(abfd),
|
||||||
uint8e_type buffer[512];
|
uint8e_type buffer[512];
|
||||||
|
|
||||||
int buffer_offset = 0;
|
int buffer_offset = 0;
|
||||||
ieee_ar_data_type *save = IEEE_AR_DATA(abfd);
|
ieee_ar_data_type *save = abfd->tdata.ieee_ar_data;
|
||||||
ieee_ar_data_type *ieee ;
|
ieee_ar_data_type *ieee ;
|
||||||
abfd->tdata.ieee_ar_data = (ieee_ar_data_type *)bfd_alloc(abfd, sizeof(ieee_ar_data_type));
|
abfd->tdata.ieee_ar_data = (ieee_ar_data_type *)bfd_alloc(abfd, sizeof(ieee_ar_data_type));
|
||||||
ieee= IEEE_AR_DATA(abfd);
|
ieee= IEEE_AR_DATA(abfd);
|
||||||
|
@ -988,7 +996,11 @@ uint8e_type buffer[512];
|
||||||
|
|
||||||
ieee->h.abfd = abfd;
|
ieee->h.abfd = abfd;
|
||||||
|
|
||||||
if (this_byte(&(ieee->h)) != Module_Beginning) return (bfd_target*)NULL;
|
if (this_byte(&(ieee->h)) != Module_Beginning) {
|
||||||
|
abfd->tdata.ieee_ar_data = save;
|
||||||
|
return (bfd_target*)NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
next_byte(&(ieee->h));
|
next_byte(&(ieee->h));
|
||||||
library= read_id(&(ieee->h));
|
library= read_id(&(ieee->h));
|
||||||
|
@ -1253,7 +1265,7 @@ DEFUN(do_one,(ieee, current_map, location_ptr,s),
|
||||||
{
|
{
|
||||||
unsigned int extra = 4;
|
unsigned int extra = 4;
|
||||||
boolean pcrel = false;
|
boolean pcrel = false;
|
||||||
|
asection *section;
|
||||||
ieee_reloc_type *r =
|
ieee_reloc_type *r =
|
||||||
(ieee_reloc_type *) bfd_alloc(ieee->h.abfd,
|
(ieee_reloc_type *) bfd_alloc(ieee->h.abfd,
|
||||||
sizeof(ieee_reloc_type));
|
sizeof(ieee_reloc_type));
|
||||||
|
@ -1262,15 +1274,18 @@ DEFUN(do_one,(ieee, current_map, location_ptr,s),
|
||||||
current_map->reloc_tail_ptr= &r->next;
|
current_map->reloc_tail_ptr= &r->next;
|
||||||
r->next = (ieee_reloc_type *)NULL;
|
r->next = (ieee_reloc_type *)NULL;
|
||||||
next_byte(&(ieee->h));
|
next_byte(&(ieee->h));
|
||||||
abort();
|
/* abort();*/
|
||||||
|
|
||||||
parse_expression(ieee,
|
parse_expression(ieee,
|
||||||
&r->relent.addend,
|
&r->relent.addend,
|
||||||
/* &r->relent.section,*/
|
§ion,
|
||||||
&r->symbol,
|
&r->symbol,
|
||||||
&pcrel, &extra);
|
&pcrel, &extra);
|
||||||
r->relent.address = current_map->pc;
|
r->relent.address = current_map->pc;
|
||||||
s->reloc_count++;
|
s->reloc_count++;
|
||||||
|
if (r->relent.sym_ptr_ptr == 0) {
|
||||||
|
r->relent.sym_ptr_ptr = section->symbol_ptr_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
if (this_byte(&(ieee->h)) == (int)ieee_comma) {
|
if (this_byte(&(ieee->h)) == (int)ieee_comma) {
|
||||||
next_byte(&(ieee->h));
|
next_byte(&(ieee->h));
|
||||||
|
@ -1453,7 +1468,7 @@ DEFUN(ieee_slurp_section_data,(abfd),
|
||||||
next_byte(&(ieee->h));
|
next_byte(&(ieee->h));
|
||||||
must_parse_int(&(ieee->h)); /* Thow away section #*/
|
must_parse_int(&(ieee->h)); /* Thow away section #*/
|
||||||
parse_expression(ieee, &value,
|
parse_expression(ieee, &value,
|
||||||
/* &dsection, */
|
&dsection,
|
||||||
&symbol,
|
&symbol,
|
||||||
&pcrel, &extra);
|
&pcrel, &extra);
|
||||||
current_map->pc = value;
|
current_map->pc = value;
|
||||||
|
@ -1570,7 +1585,7 @@ DEFUN(ieee_canonicalize_reloc,(abfd, section, relptr, symbols),
|
||||||
symbols + src->symbol.index + ieee->external_reference_base_offset;
|
symbols + src->symbol.index + ieee->external_reference_base_offset;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
src->relent.sym_ptr_ptr = (asymbol **)NULL;
|
src->relent.sym_ptr_ptr = bfd_abs_section.symbol_ptr_ptr;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
@ -1657,7 +1672,7 @@ DEFUN(ieee_write_section_part,(abfd),
|
||||||
/* Size */
|
/* Size */
|
||||||
ieee_write_2bytes(abfd, ieee_section_size_enum);
|
ieee_write_2bytes(abfd, ieee_section_size_enum);
|
||||||
ieee_write_byte(abfd, s->index + IEEE_SECTION_NUMBER_BASE);
|
ieee_write_byte(abfd, s->index + IEEE_SECTION_NUMBER_BASE);
|
||||||
ieee_write_int(abfd, s->_cooked_size);
|
ieee_write_int(abfd, s->_raw_size);
|
||||||
if (abfd->flags & EXEC_P) {
|
if (abfd->flags & EXEC_P) {
|
||||||
/* Relocateable sections don't have asl records */
|
/* Relocateable sections don't have asl records */
|
||||||
/* Vma */
|
/* Vma */
|
||||||
|
@ -1696,19 +1711,19 @@ DEFUN(do_with_relocs,(abfd, s),
|
||||||
|
|
||||||
ieee_write_twobyte(abfd, ieee_set_current_pc_enum);
|
ieee_write_twobyte(abfd, ieee_set_current_pc_enum);
|
||||||
ieee_write_byte(abfd, s->index + IEEE_SECTION_NUMBER_BASE);
|
ieee_write_byte(abfd, s->index + IEEE_SECTION_NUMBER_BASE);
|
||||||
ieee_write_expression(abfd, 0,/* s,!!!!*/ 0, 0, 0);
|
ieee_write_expression(abfd, 0, s->symbol, 0, 0);
|
||||||
|
|
||||||
if (relocs_to_go == 0)
|
if (relocs_to_go == 0)
|
||||||
{
|
{
|
||||||
/* If there arn't any relocations then output the load constant byte
|
/* If there arn't any relocations then output the load constant byte
|
||||||
opcode rather than the load with relocation opcode */
|
opcode rather than the load with relocation opcode */
|
||||||
|
|
||||||
while (current_byte_index < s->_cooked_size) {
|
while (current_byte_index < s->_raw_size) {
|
||||||
bfd_size_type run;
|
bfd_size_type run;
|
||||||
unsigned int MAXRUN = 32;
|
unsigned int MAXRUN = 32;
|
||||||
run = MAXRUN;
|
run = MAXRUN;
|
||||||
if (run > s->_cooked_size - current_byte_index) {
|
if (run > s->_raw_size - current_byte_index) {
|
||||||
run = s->_cooked_size - current_byte_index;
|
run = s->_raw_size - current_byte_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (run != 0) {
|
if (run != 0) {
|
||||||
|
@ -1734,10 +1749,10 @@ DEFUN(do_with_relocs,(abfd, s),
|
||||||
|
|
||||||
if ((PTR)stream == (PTR)NULL) {
|
if ((PTR)stream == (PTR)NULL) {
|
||||||
/* Outputting a section without data, fill it up */
|
/* Outputting a section without data, fill it up */
|
||||||
stream = (uint8e_type *)(bfd_alloc(abfd, s->_cooked_size));
|
stream = (uint8e_type *)(bfd_alloc(abfd, s->_raw_size));
|
||||||
memset((PTR)stream, 0, s->_cooked_size);
|
memset((PTR)stream, 0, s->_raw_size);
|
||||||
}
|
}
|
||||||
while (current_byte_index < s->_cooked_size) {
|
while (current_byte_index < s->_raw_size) {
|
||||||
bfd_size_type run;
|
bfd_size_type run;
|
||||||
unsigned int MAXRUN = 32;
|
unsigned int MAXRUN = 32;
|
||||||
if (relocs_to_go) {
|
if (relocs_to_go) {
|
||||||
|
@ -1746,8 +1761,8 @@ DEFUN(do_with_relocs,(abfd, s),
|
||||||
else {
|
else {
|
||||||
run = MAXRUN;
|
run = MAXRUN;
|
||||||
}
|
}
|
||||||
if (run > s->_cooked_size - current_byte_index) {
|
if (run > s->_raw_size - current_byte_index) {
|
||||||
run = s->_cooked_size - current_byte_index;
|
run = s->_raw_size - current_byte_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (run != 0) {
|
if (run != 0) {
|
||||||
|
@ -1798,13 +1813,11 @@ DEFUN(do_with_relocs,(abfd, s),
|
||||||
|
|
||||||
if (r->sym_ptr_ptr != (asymbol **)NULL) {
|
if (r->sym_ptr_ptr != (asymbol **)NULL) {
|
||||||
ieee_write_expression(abfd, r->addend + ov,
|
ieee_write_expression(abfd, r->addend + ov,
|
||||||
/* !!! r->section,*/
|
|
||||||
*(r->sym_ptr_ptr),
|
*(r->sym_ptr_ptr),
|
||||||
r->howto->pc_relative, s->index);
|
r->howto->pc_relative, s->index);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ieee_write_expression(abfd, r->addend + ov,
|
ieee_write_expression(abfd, r->addend + ov,
|
||||||
/*!!! r->section,*/
|
|
||||||
(asymbol *)NULL,
|
(asymbol *)NULL,
|
||||||
r->howto->pc_relative, s->index);
|
r->howto->pc_relative, s->index);
|
||||||
}
|
}
|
||||||
|
@ -1842,7 +1855,7 @@ DEFUN(do_as_repeat, (abfd, s),
|
||||||
ieee_write_int(abfd, s->vma );
|
ieee_write_int(abfd, s->vma );
|
||||||
|
|
||||||
ieee_write_byte(abfd,ieee_repeat_data_enum);
|
ieee_write_byte(abfd,ieee_repeat_data_enum);
|
||||||
ieee_write_int(abfd, s->_cooked_size);
|
ieee_write_int(abfd, s->_raw_size);
|
||||||
ieee_write_byte(abfd, ieee_load_constant_bytes_enum);
|
ieee_write_byte(abfd, ieee_load_constant_bytes_enum);
|
||||||
ieee_write_byte(abfd, 1);
|
ieee_write_byte(abfd, 1);
|
||||||
ieee_write_byte(abfd, 0);
|
ieee_write_byte(abfd, 0);
|
||||||
|
@ -1862,7 +1875,7 @@ DEFUN(do_without_relocs, (abfd, s),
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
for (i = 0; i < s->_cooked_size; i++) {
|
for (i = 0; i < s->_raw_size; i++) {
|
||||||
if (stream[i] != 0) {
|
if (stream[i] != 0) {
|
||||||
do_with_relocs(abfd, s);
|
do_with_relocs(abfd, s);
|
||||||
return;
|
return;
|
||||||
|
@ -2434,10 +2447,11 @@ DEFUN(ieee_write_debug_part, (abfd),
|
||||||
ieee_write_byte(abfd, 0);
|
ieee_write_byte(abfd, 0);
|
||||||
ieee_write_byte(abfd, 1);
|
ieee_write_byte(abfd, 1);
|
||||||
ieee_write_byte(abfd, i + IEEE_SECTION_NUMBER_BASE);
|
ieee_write_byte(abfd, i + IEEE_SECTION_NUMBER_BASE);
|
||||||
ieee_write_expression(abfd, 0, s, 0, 0, 0);
|
ieee_write_expression(abfd, 0, s->symbol, 0, 0, 0);
|
||||||
ieee_write_byte(abfd,0);
|
ieee_write_byte(abfd,0);
|
||||||
ieee_write_byte(abfd, 0xf9);
|
ieee_write_byte(abfd, 0xf9);
|
||||||
ieee_write_expression(abfd, s->size, 0, 0, 0, 0);
|
ieee_write_expression(abfd, s->size,
|
||||||
|
bfd_abs_section.symbol, 0, 0, 0);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2501,8 +2515,8 @@ DEFUN(init_for_output,(abfd),
|
||||||
{
|
{
|
||||||
asection *s;
|
asection *s;
|
||||||
for (s = abfd->sections; s != (asection *)NULL; s = s->next) {
|
for (s = abfd->sections; s != (asection *)NULL; s = s->next) {
|
||||||
if (s->_cooked_size != 0) {
|
if (s->_raw_size != 0) {
|
||||||
ieee_per_section(s)->data = (bfd_byte *)(bfd_alloc(abfd, s->_cooked_size));
|
ieee_per_section(s)->data = (bfd_byte *)(bfd_alloc(abfd, s->_raw_size));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2602,16 +2616,16 @@ DEFUN(ieee_write_external_part,(abfd),
|
||||||
else {
|
else {
|
||||||
ieee_write_expression(abfd,
|
ieee_write_expression(abfd,
|
||||||
p->value + p->section->output_offset,
|
p->value + p->section->output_offset,
|
||||||
/*!!! p->section->output_section,*/
|
p->section->output_section->symbol
|
||||||
(asymbol *)NULL, false, 0);
|
, false, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ieee_write_expression(abfd,
|
ieee_write_expression(abfd,
|
||||||
p->value,
|
p->value,
|
||||||
/*!!! (asection *)NULL,*/
|
bfd_abs_section.symbol,
|
||||||
(asymbol *)NULL, false, 0);
|
false, 0);
|
||||||
}
|
}
|
||||||
p->value = public_index;
|
p->value = public_index;
|
||||||
public_index++;
|
public_index++;
|
||||||
|
@ -2628,7 +2642,7 @@ DEFUN(ieee_write_external_part,(abfd),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CONST static char exten[] =
|
CONST static unsigned char exten[] =
|
||||||
{
|
{
|
||||||
0xf0, 0x20, 0x00,
|
0xf0, 0x20, 0x00,
|
||||||
0xf1, 0xce, 0x20, 0x00, 37, 3, 3, /* Set version 3 rev 3 */
|
0xf1, 0xce, 0x20, 0x00, 37, 3, 3, /* Set version 3 rev 3 */
|
||||||
|
@ -2636,7 +2650,7 @@ CONST static char exten[] =
|
||||||
0xf1, 0xce, 0x20, 0x00, 38 /* set object type relocateable to x */
|
0xf1, 0xce, 0x20, 0x00, 38 /* set object type relocateable to x */
|
||||||
};
|
};
|
||||||
|
|
||||||
CONST static char envi[] =
|
CONST static unsigned char envi[] =
|
||||||
{
|
{
|
||||||
0xf0, 0x21, 0x00,
|
0xf0, 0x21, 0x00,
|
||||||
|
|
||||||
|
@ -2704,14 +2718,14 @@ DEFUN(ieee_write_object_contents,(abfd),
|
||||||
|
|
||||||
|
|
||||||
ieee->w.r.extension_record = bfd_tell(abfd);
|
ieee->w.r.extension_record = bfd_tell(abfd);
|
||||||
bfd_write(exten, 1, sizeof(exten), abfd);
|
bfd_write((char *)exten, 1, sizeof(exten), abfd);
|
||||||
if (abfd->flags & EXEC_P)
|
if (abfd->flags & EXEC_P)
|
||||||
ieee_write_byte(abfd, 0x1); /* Absolute */
|
ieee_write_byte(abfd, 0x1); /* Absolute */
|
||||||
else
|
else
|
||||||
ieee_write_byte(abfd, 0x2); /* Relocateable */
|
ieee_write_byte(abfd, 0x2); /* Relocateable */
|
||||||
|
|
||||||
ieee->w.r.environmental_record = bfd_tell(abfd);
|
ieee->w.r.environmental_record = bfd_tell(abfd);
|
||||||
bfd_write(envi, 1, sizeof(envi), abfd);
|
bfd_write((char *)envi, 1, sizeof(envi), abfd);
|
||||||
output_bfd = abfd;
|
output_bfd = abfd;
|
||||||
flush();
|
flush();
|
||||||
|
|
||||||
|
@ -2927,7 +2941,7 @@ DEFUN(ieee_bfd_debug_info_accumulate,(abfd, section),
|
||||||
#define ieee_close_and_cleanup bfd_generic_close_and_cleanup
|
#define ieee_close_and_cleanup bfd_generic_close_and_cleanup
|
||||||
#define ieee_set_arch_mach bfd_default_set_arch_mach
|
#define ieee_set_arch_mach bfd_default_set_arch_mach
|
||||||
#define ieee_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
|
#define ieee_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
|
||||||
|
#define ieee_bfd_relax_section bfd_generic_relax_section
|
||||||
/*SUPPRESS 460 */
|
/*SUPPRESS 460 */
|
||||||
bfd_target ieee_vec =
|
bfd_target ieee_vec =
|
||||||
{
|
{
|
||||||
|
|
|
@ -140,6 +140,7 @@ of a file.
|
||||||
. bfd_target_elf_flavour,
|
. bfd_target_elf_flavour,
|
||||||
. bfd_target_ieee_flavour,
|
. bfd_target_ieee_flavour,
|
||||||
. bfd_target_oasys_flavour,
|
. bfd_target_oasys_flavour,
|
||||||
|
. bfd_target_tekhex_flavour,
|
||||||
. bfd_target_srec_flavour} flavour;
|
. bfd_target_srec_flavour} flavour;
|
||||||
|
|
||||||
The order of bytes within the data area of a file.
|
The order of bytes within the data area of a file.
|
||||||
|
@ -268,7 +269,7 @@ Symbols and reloctions
|
||||||
. SDEF (void, _bfd_debug_info_end, (bfd *));
|
. SDEF (void, _bfd_debug_info_end, (bfd *));
|
||||||
. SDEF (void, _bfd_debug_info_accumulate, (bfd *, struct sec *));
|
. SDEF (void, _bfd_debug_info_accumulate, (bfd *, struct sec *));
|
||||||
. SDEF (bfd_byte *, _bfd_get_relocated_section_contents, (bfd*,struct bfd_seclet_struct *));
|
. SDEF (bfd_byte *, _bfd_get_relocated_section_contents, (bfd*,struct bfd_seclet_struct *));
|
||||||
. SDEF (boolean,_bfd_relax_section,(bfd *, struct sec *, struct symbol_cache_entry **, struct bfd_seclet_struct *));
|
. SDEF (boolean,_bfd_relax_section,(bfd *, struct sec *, struct symbol_cache_entry **));
|
||||||
Special entry points for gdb to swap in coff symbol table parts
|
Special entry points for gdb to swap in coff symbol table parts
|
||||||
|
|
||||||
. SDEF(void, _bfd_coff_swap_aux_in,(
|
. SDEF(void, _bfd_coff_swap_aux_in,(
|
||||||
|
@ -354,6 +355,7 @@ extern bfd_target ecoff_big_vec;
|
||||||
extern bfd_target sunos_big_vec;
|
extern bfd_target sunos_big_vec;
|
||||||
extern bfd_target demo_64_vec;
|
extern bfd_target demo_64_vec;
|
||||||
extern bfd_target srec_vec;
|
extern bfd_target srec_vec;
|
||||||
|
extern bfd_target tekhex_vec;
|
||||||
extern bfd_target b_out_vec_little_host;
|
extern bfd_target b_out_vec_little_host;
|
||||||
extern bfd_target b_out_vec_big_host;
|
extern bfd_target b_out_vec_big_host;
|
||||||
extern bfd_target icoff_little_vec;
|
extern bfd_target icoff_little_vec;
|
||||||
|
@ -408,6 +410,7 @@ bfd_target *target_vector[] = {
|
||||||
&h8300coff_vec,
|
&h8300coff_vec,
|
||||||
&m88kbcs_vec,
|
&m88kbcs_vec,
|
||||||
&srec_vec,
|
&srec_vec,
|
||||||
|
/* &tekhex_vec,*/
|
||||||
&icoff_little_vec,
|
&icoff_little_vec,
|
||||||
&icoff_big_vec,
|
&icoff_big_vec,
|
||||||
&elf_little_vec,
|
&elf_little_vec,
|
||||||
|
@ -496,7 +499,7 @@ DESCRIPTION
|
||||||
modify the names
|
modify the names
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
CONST char **bfd_target_list();
|
CONST char **bfd_target_list(void);
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue