projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Makefile.am: "make dep-am".
[deliverable/binutils-gdb.git]
/
bfd
/
sparclinux.c
diff --git
a/bfd/sparclinux.c
b/bfd/sparclinux.c
index 86d4e7e9444277964fb9a3f9faed51866501c998..28ff8c800a3470928b3465f3676146872c18520a 100644
(file)
--- a/
bfd/sparclinux.c
+++ b/
bfd/sparclinux.c
@@
-1,5
+1,6
@@
/* BFD back-end for linux flavored sparc a.out binaries.
/* BFD back-end for linux flavored sparc a.out binaries.
- Copyright (C) 1992, 93, 94, 95, 96, 1997, 1998 Free Software Foundation, Inc.
+ Copyright 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2001
+ Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This file is part of BFD, the Binary File Descriptor library.
@@
-36,7
+37,10
@@
USA. */
#include "libaout.h" /* BFD a.out internal data structures */
#define DEFAULT_ARCH bfd_arch_sparc
#include "libaout.h" /* BFD a.out internal data structures */
#define DEFAULT_ARCH bfd_arch_sparc
-#define MY(OP) CAT(sparclinux_,OP)
+/* Do not "beautify" the CONCAT* macro args. Traditional C will not
+ remove whitespace added here, and thus will fail to concatenate
+ the tokens. */
+#define MY(OP) CONCAT2 (sparclinux_,OP)
#define TARGETNAME "a.out-sparc-linux"
extern const bfd_target MY(vec);
#define TARGETNAME "a.out-sparc-linux"
extern const bfd_target MY(vec);
@@
-94,7
+98,7
@@
sparclinux_write_object_contents (abfd)
#define IS_GOT_SYM(name) \
(strncmp (name, GOT_REF_PREFIX, sizeof GOT_REF_PREFIX - 1) == 0)
#define IS_GOT_SYM(name) \
(strncmp (name, GOT_REF_PREFIX, sizeof GOT_REF_PREFIX - 1) == 0)
-/* See if a symbol name is a reference to the procedure linkage table. */
+/* See if a symbol name is a reference to the procedure linkage table.
*/
#ifndef PLT_REF_PREFIX
#define PLT_REF_PREFIX "__PLT_"
#ifndef PLT_REF_PREFIX
#define PLT_REF_PREFIX "__PLT_"
@@
-224,9
+228,9
@@
linux_link_hash_table_create (abfd)
bfd *abfd;
{
struct linux_link_hash_table *ret;
bfd *abfd;
{
struct linux_link_hash_table *ret;
+ bfd_size_type amt = sizeof (struct linux_link_hash_table);
- ret = ((struct linux_link_hash_table *)
- bfd_alloc (abfd, sizeof (struct linux_link_hash_table)));
+ ret = (struct linux_link_hash_table *) bfd_alloc (abfd, amt);
if (ret == (struct linux_link_hash_table *) NULL)
return (struct bfd_link_hash_table *) NULL;
if (! NAME(aout,link_hash_table_init) (&ret->root, abfd,
if (ret == (struct linux_link_hash_table *) NULL)
return (struct bfd_link_hash_table *) NULL;
if (! NAME(aout,link_hash_table_init) (&ret->root, abfd,
@@
-299,7
+303,7
@@
new_fixup (info, h, value, builtin)
static boolean
linux_link_create_dynamic_sections (abfd, info)
bfd *abfd;
static boolean
linux_link_create_dynamic_sections (abfd, info)
bfd *abfd;
- struct bfd_link_info *info;
+ struct bfd_link_info *info
ATTRIBUTE_UNUSED
;
{
flagword flags;
register asection *s;
{
flagword flags;
register asection *s;
@@
-406,7
+410,8
@@
linux_add_one_symbol (info, abfd, name, flags, section, value, string,
if (! (_bfd_generic_link_add_one_symbol
(info, linux_hash_table (info)->dynobj, SHARABLE_CONFLICTS,
if (! (_bfd_generic_link_add_one_symbol
(info, linux_hash_table (info)->dynobj, SHARABLE_CONFLICTS,
- BSF_GLOBAL | BSF_CONSTRUCTOR, s, 0, NULL, false, false, NULL)))
+ BSF_GLOBAL | BSF_CONSTRUCTOR, s, (bfd_vma) 0, NULL,
+ false, false, NULL)))
return false;
}
return false;
}
@@
-445,7
+450,7
@@
linux_tally_symbols (h, data)
name = h->root.root.root.string + sizeof NEEDS_SHRLIB - 1;
p = strrchr (name, '_');
if (p != NULL)
name = h->root.root.root.string + sizeof NEEDS_SHRLIB - 1;
p = strrchr (name, '_');
if (p != NULL)
- alloc = (char *) bfd_malloc (strlen (name) + 1);
+ alloc = (char *) bfd_malloc (
(bfd_size_type)
strlen (name) + 1);
if (p == NULL || alloc == NULL)
(*_bfd_error_handler) (_("Output file requires shared library `%s'\n"),
if (p == NULL || alloc == NULL)
(*_bfd_error_handler) (_("Output file requires shared library `%s'\n"),
@@
-477,7
+482,7
@@
linux_tally_symbols (h, data)
(h->root.root.root.string
+ sizeof PLT_REF_PREFIX - 1),
false, false, true);
(h->root.root.root.string
+ sizeof PLT_REF_PREFIX - 1),
false, false, true);
- /* h2 does not follow indirect symbols. */
+ /* h2 does not follow indirect symbols.
*/
h2 = linux_link_hash_lookup (linux_hash_table (info),
(h->root.root.root.string
+ sizeof PLT_REF_PREFIX - 1),
h2 = linux_link_hash_lookup (linux_hash_table (info),
(h->root.root.root.string
+ sizeof PLT_REF_PREFIX - 1),
@@
-534,7
+539,7
@@
linux_tally_symbols (h, data)
}
/* Quick and dirty way of stripping these symbols from the
}
/* Quick and dirty way of stripping these symbols from the
- symtab. */
+ symtab.
*/
if (bfd_is_abs_section (h->root.root.u.def.section))
h->root.written = true;
}
if (bfd_is_abs_section (h->root.root.u.def.section))
h->root.written = true;
}
@@
-559,7
+564,7
@@
bfd_sparclinux_size_dynamic_sections (output_bfd, info)
if (output_bfd->xvec != &MY(vec))
return true;
if (output_bfd->xvec != &MY(vec))
return true;
- /* First find the fixups... */
+ /* First find the fixups...
*/
linux_link_hash_traverse (linux_hash_table (info),
linux_tally_symbols,
(PTR) info);
linux_link_hash_traverse (linux_hash_table (info),
linux_tally_symbols,
(PTR) info);
@@
-589,7
+594,8
@@
bfd_sparclinux_size_dynamic_sections (output_bfd, info)
".linux-dynamic");
if (s != NULL)
{
".linux-dynamic");
if (s != NULL)
{
- s->_raw_size = 8 + linux_hash_table (info)->fixup_count * 8;
+ s->_raw_size = linux_hash_table (info)->fixup_count + 1;
+ s->_raw_size *= 8;
s->contents = (bfd_byte *) bfd_alloc (output_bfd, s->_raw_size);
if (s->contents == NULL)
return false;
s->contents = (bfd_byte *) bfd_alloc (output_bfd, s->_raw_size);
if (s->contents == NULL)
return false;
@@
-632,7
+638,8
@@
linux_finish_dynamic_link (output_bfd, info)
#endif
fixup_table = s->contents;
#endif
fixup_table = s->contents;
- bfd_put_32 (output_bfd, linux_hash_table (info)->fixup_count, fixup_table);
+ bfd_put_32 (output_bfd,
+ (bfd_vma) linux_hash_table (info)->fixup_count, fixup_table);
fixup_table += 4;
/* Fill in fixup table. */
fixup_table += 4;
/* Fill in fixup table. */
@@
-663,14
+670,14
@@
linux_finish_dynamic_link (output_bfd, info)
{
/* Relative address */
new_addr = new_addr - (f->value + 5);
{
/* Relative address */
new_addr = new_addr - (f->value + 5);
- bfd_put_32 (output_bfd, new_addr, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
new_addr, fixup_table);
fixup_table += 4;
bfd_put_32 (output_bfd, f->value + 1, fixup_table);
fixup_table += 4;
}
else
{
fixup_table += 4;
bfd_put_32 (output_bfd, f->value + 1, fixup_table);
fixup_table += 4;
}
else
{
- bfd_put_32 (output_bfd, new_addr, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
new_addr, fixup_table);
fixup_table += 4;
bfd_put_32 (output_bfd, f->value, fixup_table);
fixup_table += 4;
fixup_table += 4;
bfd_put_32 (output_bfd, f->value, fixup_table);
fixup_table += 4;
@@
-681,9
+688,9
@@
linux_finish_dynamic_link (output_bfd, info)
if (linux_hash_table (info)->local_builtins != 0)
{
/* Special marker so we know to switch to the other type of fixup */
if (linux_hash_table (info)->local_builtins != 0)
{
/* Special marker so we know to switch to the other type of fixup */
- bfd_put_32 (output_bfd, 0, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
0, fixup_table);
fixup_table += 4;
fixup_table += 4;
- bfd_put_32 (output_bfd, 0, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
0, fixup_table);
fixup_table += 4;
++fixups_written;
for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next)
fixup_table += 4;
++fixups_written;
for (f = linux_hash_table (info)->fixup_list; f != NULL; f = f->next)
@@
-709,7
+716,7
@@
linux_finish_dynamic_link (output_bfd, info)
new_addr, f->value);
#endif
new_addr, f->value);
#endif
- bfd_put_32 (output_bfd, new_addr, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
new_addr, fixup_table);
fixup_table += 4;
bfd_put_32 (output_bfd, f->value, fixup_table);
fixup_table += 4;
fixup_table += 4;
bfd_put_32 (output_bfd, f->value, fixup_table);
fixup_table += 4;
@@
-722,9
+729,9
@@
linux_finish_dynamic_link (output_bfd, info)
(*_bfd_error_handler) (_("Warning: fixup count mismatch\n"));
while (linux_hash_table (info)->fixup_count > fixups_written)
{
(*_bfd_error_handler) (_("Warning: fixup count mismatch\n"));
while (linux_hash_table (info)->fixup_count > fixups_written)
{
- bfd_put_32 (output_bfd, 0, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
0, fixup_table);
fixup_table += 4;
fixup_table += 4;
- bfd_put_32 (output_bfd, 0, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
0, fixup_table);
fixup_table += 4;
++fixups_written;
}
fixup_table += 4;
++fixups_written;
}
@@
-746,15
+753,16
@@
linux_finish_dynamic_link (output_bfd, info)
printf ("Builtin fixup table at %x\n", new_addr);
#endif
printf ("Builtin fixup table at %x\n", new_addr);
#endif
- bfd_put_32 (output_bfd, new_addr, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
new_addr, fixup_table);
}
else
}
else
- bfd_put_32 (output_bfd, 0, fixup_table);
+ bfd_put_32 (output_bfd,
(bfd_vma)
0, fixup_table);
- if (bfd_seek (output_bfd, os->filepos + s->output_offset, SEEK_SET) != 0)
+ if (bfd_seek (output_bfd, (file_ptr) (os->filepos + s->output_offset),
+ SEEK_SET) != 0)
return false;
return false;
- if (bfd_
write ((PTR) s->contents, 1
, s->_raw_size, output_bfd)
+ if (bfd_
bwrite ((PTR) s->contents
, s->_raw_size, output_bfd)
!= s->_raw_size)
return false;
!= s->_raw_size)
return false;
This page took
0.026274 seconds
and
4
git commands to generate.