+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * archures.c (bfd_octets_per_byte): Return unsigned int.
+ (bfd_arch_mach_octets_per_byte): Ditto.
+ * libbfd.c (bfd_read, bfd_seek): Quell signed vs. unsigned
+ comparison warning.
+ * section.c (bfd_get_section_size_before_reloc): Quell signed
+ vs. unsigned comparison warning.
+ (bfd_get_section_size_after_reloc): Same here. Fix parentheses too.
+ * trad-core.c (trad_unix_core_file_p): Correct 2000-01-27
+ change. What was I thinking?
+ * bfd-in2.h: Regenerate.
+
+ * elflink.h (elf_gc_sweep): Skip non-elf input bfds.
+ (elf_gc_sections): Same here.
+ (elf_gc_common_finalize_got_offsets): And here.
+
2000-02-21 Ian Lance Taylor <ian@zembu.com>
ELF HPPA doesn't work at present; remove it until it does.
bfd_octets_per_byte
SYNOPSIS
- int bfd_octets_per_byte(bfd *abfd);
+ unsigned int bfd_octets_per_byte(bfd *abfd);
DESCRIPTION
Return the number of octets (8-bit quantities) per target byte
*/
-int
+unsigned int
bfd_octets_per_byte (abfd)
bfd * abfd;
{
bfd_arch_mach_octets_per_byte
SYNOPSIS
- int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch,
- unsigned long machine);
+ unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch,
+ unsigned long machine);
DESCRIPTION
See bfd_octets_per_byte.
available
*/
-int
+unsigned int
bfd_arch_mach_octets_per_byte (arch, mach)
enum bfd_architecture arch;
unsigned long mach;
return ap->bits_per_byte / 8;
return 1;
}
-
extern const struct symbol_cache_entry * const bfd_und_symbol;
extern const struct symbol_cache_entry * const bfd_ind_symbol;
#define bfd_get_section_size_before_reloc(section) \
- (section->reloc_done ? (abort(),1): (section)->_raw_size)
+ ((section)->reloc_done ? (abort (), (bfd_size_type) 1) \
+ : (section)->_raw_size)
#define bfd_get_section_size_after_reloc(section) \
- ((section->reloc_done) ? (section)->_cooked_size: (abort(),1))
+ ((section)->reloc_done ? (section)->_cooked_size \
+ : (abort (), (bfd_size_type) 1))
asection *
bfd_get_section_by_name PARAMS ((bfd *abfd, CONST char *name));
bfd_printable_arch_mach
PARAMS ((enum bfd_architecture arch, unsigned long machine));
-int
+unsigned int
bfd_octets_per_byte PARAMS ((bfd *abfd));
-int
+unsigned int
bfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch,
unsigned long machine));
{
asection *o;
+ if (bfd_get_flavour (sub) != bfd_target_elf_flavour)
+ continue;
+
for (o = sub->sections; o != NULL; o = o->next)
{
/* Keep special sections. Keep .debug sections. */
for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
{
asection *o;
+
+ if (bfd_get_flavour (sub) != bfd_target_elf_flavour)
+ continue;
+
for (o = sub->sections; o != NULL; o = o->next)
{
if (o->flags & SEC_KEEP)
/* Do the local .got entries first. */
for (i = info->input_bfds; i; i = i->link_next)
{
- bfd_signed_vma *local_got = elf_local_got_refcounts (i);
+ bfd_signed_vma *local_got;
bfd_size_type j, locsymcount;
Elf_Internal_Shdr *symtab_hdr;
+ if (bfd_get_flavour (i) != bfd_target_elf_flavour)
+ continue;
+
+ local_got = elf_local_got_refcounts (i);
if (!local_got)
continue;
get = size * nitems;
if (abfd->where + get > bim->size)
{
- if (bim->size < abfd->where)
+ if (bim->size < (bfd_size_type) abfd->where)
get = 0;
else
get = bim->size - abfd->where;
else
abfd->where += position;
- if (abfd->where > bim->size)
+ if ((bfd_size_type) abfd->where > bim->size)
{
abfd->where = bim->size;
bfd_set_error (bfd_error_file_truncated);
.extern const struct symbol_cache_entry * const bfd_und_symbol;
.extern const struct symbol_cache_entry * const bfd_ind_symbol;
.#define bfd_get_section_size_before_reloc(section) \
-. (section->reloc_done ? (abort(),1): (section)->_raw_size)
+. ((section)->reloc_done ? (abort (), (bfd_size_type) 1) \
+. : (section)->_raw_size)
.#define bfd_get_section_size_after_reloc(section) \
-. ((section->reloc_done) ? (section)->_cooked_size: (abort(),1))
+. ((section)->reloc_done ? (section)->_cooked_size \
+. : (abort (), (bfd_size_type) 1))
*/
/* We use a macro to initialize the static asymbol structures because
0 is at the place pointed to by u_ar0 (by setting the vma of the start
of the section to -u_ar0). GDB uses this info to locate the regs,
using minor trickery to get around the offset-or-absolute-addr problem. */
- core_regsec (abfd)->vma = (asection *) (0 - (bfd_vma) u.u_ar0);
+ core_regsec (abfd)->vma = - (bfd_vma) u.u_ar0;
core_datasec (abfd)->filepos = NBPG * UPAGES;
core_stacksec (abfd)->filepos = (NBPG * UPAGES) + NBPG * u.u_dsize
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * objdump.c (dump_section_header): Change `opb' to unsigned.
+ (find_symbol_for_address): Same here.
+ (disassemble_data): And here. Change `addr_offset',
+ `stop_offset', `nextstop_offset' to unsigned long.
+ (dump_data): Change opb to unsigned.
+
2000-02-18 Frank Ch. Eigler <fche@redhat.com>
* resrc.c: Remove unmatched #if for cygwin.
PTR ignored ATTRIBUTE_UNUSED;
{
char *comma = "";
- int opb = bfd_octets_per_byte (abfd);
+ unsigned int opb = bfd_octets_per_byte (abfd);
printf ("%3d %-13s %08lx ", section->index,
bfd_get_section_name (abfd, section),
long min = 0;
long max = sorted_symcount;
long thisplace;
- int opb = bfd_octets_per_byte (abfd);
+ unsigned int opb = bfd_octets_per_byte (abfd);
if (sorted_symcount < 1)
return NULL;
disassemble_data (abfd)
bfd *abfd;
{
- long addr_offset;
+ unsigned long addr_offset;
disassembler_ftype disassemble_fn;
struct disassemble_info disasm_info;
struct objdump_disasm_info aux;
asection *section;
- int opb = bfd_octets_per_byte (abfd);
+ unsigned int opb = bfd_octets_per_byte (abfd);
print_files = NULL;
prev_functionname = NULL;
arelent **relbuf = NULL;
arelent **relpp = NULL;
arelent **relppend = NULL;
- long stop_offset;
+ unsigned long stop_offset;
asymbol *sym = NULL;
long place = 0;
while (addr_offset < stop_offset)
{
asymbol *nextsym;
- long nextstop_offset;
+ unsigned long nextstop_offset;
boolean insns;
if (sym != NULL && bfd_asymbol_value (sym) <= section->vma + addr_offset)
bfd_size_type datasize = 0;
bfd_size_type addr_offset;
bfd_size_type start_offset, stop_offset;
- int opb = bfd_octets_per_byte (abfd);
+ unsigned int opb = bfd_octets_per_byte (abfd);
for (section = abfd->sections; section != NULL; section =
section->next)
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * listing.c (print_lines): Remove unused variable `end'.
+
+ * config/tc-i386.c (md_assemble): Use `reloc()' to select reloc
+ type for JumpInterSegment output. Use enum bfd_reloc_code_real for
+ reloc_type when BFD_ASSEMBLER.
+ (md_estimate_size_before_relax): Use enum bfd_reloc_code_real for
+ reloc_type when BFD_ASSEMBLER. Move common code out of switch
+ statement and quell signed vs. unsigned comparison warning.
+
2000-02-18 Nick Clifton <nickc@cygnus.com>
* config/tc-d10v.c (find_opcode): Add a symbol's value to
return 0;
#else
/* For COFF */
- return fixp->fx_r_type==7;
+ return fixp->fx_r_type == 7;
#endif
}
else if (i.tm.opcode_modifier & JumpInterSegment)
{
int size;
- int reloc_type;
int prefix;
int code16;
}
size = 4;
- reloc_type = BFD_RELOC_32;
if (code16)
- {
- size = 2;
- reloc_type = BFD_RELOC_16;
- }
+ size = 2;
if (i.prefixes != 0 && !intel_syntax)
as_warn (_("skipping prefixes on this instruction"));
}
else
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.imms[1], 0, reloc_type);
+ i.imms[1], 0, reloc (size, 0, i.disp_reloc[0]));
if (i.imms[0]->X_op != O_constant)
as_bad (_("can't handle non absolute segment in `%s'"),
i.tm.name);
/* Need a 32-bit fixup (don't support 8bit
non-absolute ims). Try to support other
sizes ... */
- int r_type;
+#ifdef BFD_ASSEMBLER
+ enum bfd_reloc_code_real reloc_type;
+#else
+ int reloc_type;
+#endif
int size;
int pcrel = 0;
size = 4;
insn_size += size;
p = frag_more (size);
- r_type = reloc (size, 0, i.disp_reloc[0]);
+ reloc_type = reloc (size, 0, i.disp_reloc[0]);
#ifdef BFD_ASSEMBLER
- if (r_type == BFD_RELOC_32
+ if (reloc_type == BFD_RELOC_32
&& GOT_symbol
&& GOT_symbol == i.imms[n]->X_add_symbol
&& (i.imms[n]->X_op == O_symbol
(i.imms[n]->X_op_symbol)->X_op)
== O_subtract))))
{
- r_type = BFD_RELOC_386_GOTPC;
+ reloc_type = BFD_RELOC_386_GOTPC;
i.imms[n]->X_add_number += 3;
}
#endif
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.imms[n], pcrel, r_type);
+ i.imms[n], pcrel, reloc_type);
}
}
}
/* symbol is undefined in this segment */
int code16 = fragP->fr_subtype & CODE16;
int size = code16 ? 2 : 4;
- int pcrel_reloc = code16 ? BFD_RELOC_16_PCREL : BFD_RELOC_32_PCREL;
+#ifdef BFD_ASSEMBLER
+ enum bfd_reloc_code_real reloc_type;
+#else
+ int reloc_type;
+#endif
+
+ if (GOT_symbol /* Not quite right - we should switch on presence of
+ @PLT, but I cannot see how to get to that from
+ here. We should have done this in md_assemble to
+ really get it right all of the time, but I think it
+ does not matter that much, as this will be right
+ most of the time. ERY */
+ && S_GET_SEGMENT(fragP->fr_symbol) == undefined_section)
+ reloc_type = BFD_RELOC_386_PLT32;
+ else if (code16)
+ reloc_type = BFD_RELOC_16_PCREL;
+ else
+ reloc_type = BFD_RELOC_32_PCREL;
switch (opcode[0])
{
fix_new (fragP, old_fr_fix, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
- (GOT_symbol && /* Not quite right - we should switch on
- presence of @PLT, but I cannot see how
- to get to that from here. We should have
- done this in md_assemble to really
- get it right all of the time, but I
- think it does not matter that much, as
- this will be right most of the time. ERY*/
- S_GET_SEGMENT(fragP->fr_symbol) == undefined_section)
- ? BFD_RELOC_386_PLT32 : pcrel_reloc);
+ reloc_type);
break;
default:
/* This changes the byte-displacement jump 0x7N
- to the dword-displacement jump 0x0f8N. */
+ to the dword-displacement jump 0x0f,0x8N. */
opcode[1] = opcode[0] + 0x10;
- opcode[0] = TWO_BYTE_OPCODE_ESCAPE; /* two-byte escape */
+ opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
fragP->fr_fix += 1 + size; /* we've added an opcode byte */
fix_new (fragP, old_fr_fix + 1, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
- (GOT_symbol && /* Not quite right - we should switch on
- presence of @PLT, but I cannot see how
- to get to that from here. ERY */
- S_GET_SEGMENT(fragP->fr_symbol) == undefined_section)
- ? BFD_RELOC_386_PLT32 : pcrel_reloc);
+ reloc_type);
break;
}
frag_wane (fragP);
unsigned int lines;
unsigned int octet_in_word = 0;
char *src = data_buffer;
- int end = strlen(src);
int cur;
/* Print the stuff on the first line */
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * dis-asm.h (struct disassemble_info): Change `length' param of
+ read_memory_func to unsigned. Change type of `buffer_length' and
+ `octets_per_byte' to unsigned.
+ (buffer_read_memory): Change `length' param to unsigned.
+
2000-02-16 Nick Clifton <nickc@cygnus.com>
* dis-asm.h: Add prototypes for ARM register name functions.
INFO is a pointer to this struct.
Returns an errno value or 0 for success. */
int (*read_memory_func)
- PARAMS ((bfd_vma memaddr, bfd_byte *myaddr, int length,
+ PARAMS ((bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
struct disassemble_info *info));
/* Function which should be called if we get an error that we can't
/* These are for buffer_read_memory. */
bfd_byte *buffer;
bfd_vma buffer_vma;
- int buffer_length;
+ unsigned int buffer_length;
/* This variable may be set by the instruction decoder. It suggests
the number of bytes objdump should display on a single line. If
/* Number of octets per incremented target address
Normally one, but some DSPs have byte sizes of 16 or 32 bits
*/
- int octets_per_byte;
+ unsigned int octets_per_byte;
/* Results from instruction decoders. Not all decoders yet support
this information. This info is set each time an instruction is
/* Here is a function which callers may wish to use for read_memory_func.
It gets bytes from a buffer. */
extern int buffer_read_memory
- PARAMS ((bfd_vma, bfd_byte *, int, struct disassemble_info *));
+ PARAMS ((bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *));
/* This function goes with buffer_read_memory.
It prints a message using info->fprintf_func and info->stream. */
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * ldlang.c (print_input_section, print_data_statement,
+ print_reloc_statement, print_padding_statement, insert_pad,
+ size_input_section, lang_check_section_addresses,
+ lang_size_sections, lang_do_assignments, lang_set_startof,
+ lang_one_common): Change `opb' to unsigned.
+ (lang_do_assignments): Also change `size' to unsigned.
+
2000-02-16 Richard Henderson <rth@cygnus.com>
* scripttempl/elf.sc: Place OTHER_PLT_RELOC_SECTION.
{
asection *i = in->section;
bfd_size_type size = i->_cooked_size != 0 ? i->_cooked_size : i->_raw_size;
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
if (size != 0)
{
print_space ();
bfd_vma addr;
bfd_size_type size;
const char *name;
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
for (i = 0; i < SECTION_NAME_MAP_LENGTH; i++)
print_space ();
int i;
bfd_vma addr;
bfd_size_type size;
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
for (i = 0; i < SECTION_NAME_MAP_LENGTH; i++)
print_space ();
{
int len;
bfd_vma addr;
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
minfo (" *fill*");
inserting a magic 'padding' statement.
*/
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
unsigned int alignment_needed = align_power (dot, power) - dot;
if (alignment_needed != 0)
{
lang_input_section_type *is = &((*this_ptr)->input_section);
asection *i = is->section;
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
if (is->ifile->just_syms_flag == false)
{
lang_check_section_addresses ()
{
asection * s;
- int opb = bfd_octets_per_byte (output_bfd);
+ unsigned opb = bfd_octets_per_byte (output_bfd);
/* Scan all sections in the output list. */
for (s = output_bfd->sections; s != NULL; s = s->next)
bfd_vma dot;
boolean relax;
{
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
/* Size up the sections from their constituent parts. */
for (; s != (lang_statement_union_type *) NULL; s = s->next)
fill_type fill;
bfd_vma dot;
{
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
for (; s != (lang_statement_union_type *) NULL; s = s->next)
{
einfo (_("%F%P: invalid data statement\n"));
}
{
- int size;
+ unsigned int size;
switch (s->data_statement.type)
{
default:
h = bfd_link_hash_lookup (link_info.hash, buf, false, false, true);
if (h != NULL && h->type == bfd_link_hash_undefined)
{
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
h->type = bfd_link_hash_defined;
if (s->_cooked_size != 0)
h->u.def.value = s->_cooked_size / opb;
unsigned int power_of_two;
bfd_vma size;
asection *section;
- int opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
if (h->type != bfd_link_hash_common)
return true;
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * dis-buf.c (buffer_read_memory): Change `length' param and all int
+ vars to unsigned.
+
Thu Feb 17 00:18:12 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh-dis.c (print_movxy, print_insn_ddt, print_dsp_reg): New functions.
buffer_read_memory (memaddr, myaddr, length, info)
bfd_vma memaddr;
bfd_byte *myaddr;
- int length;
+ unsigned int length;
struct disassemble_info *info;
{
- int opb = info->octets_per_byte;
- int end_addr_offset = length / opb;
- int max_addr_offset = info->buffer_length / opb;
- int octets = (memaddr - info->buffer_vma) * opb;
+ unsigned int opb = info->octets_per_byte;
+ unsigned int end_addr_offset = length / opb;
+ unsigned int max_addr_offset = info->buffer_length / opb;
+ unsigned int octets = (memaddr - info->buffer_vma) * opb;
if (memaddr < info->buffer_vma
|| memaddr - info->buffer_vma + end_addr_offset > max_addr_offset)