* aoutx.h (NAME(aout,final_link)): Don't emit the string table if
there are no symbols.
This commit is contained in:
parent
69f78b0e41
commit
6ccdc203e6
2 changed files with 37 additions and 7 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Mon Aug 11 12:45:43 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* aoutx.h (NAME(aout,final_link)): Don't emit the string table if
|
||||||
|
there are no symbols.
|
||||||
|
|
||||||
Sun Aug 10 14:45:56 1997 Ian Lance Taylor <ian@cygnus.com>
|
Sun Aug 10 14:45:56 1997 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
* coff-stgo32.c: Rename from coff-stubgo32.c to avoid old System V
|
* coff-stgo32.c: Rename from coff-stubgo32.c to avoid old System V
|
||||||
|
|
39
bfd/aoutx.h
39
bfd/aoutx.h
|
@ -136,6 +136,9 @@ static boolean translate_from_native_sym_flags
|
||||||
PARAMS ((bfd *, aout_symbol_type *));
|
PARAMS ((bfd *, aout_symbol_type *));
|
||||||
static boolean translate_to_native_sym_flags
|
static boolean translate_to_native_sym_flags
|
||||||
PARAMS ((bfd *, asymbol *, struct external_nlist *));
|
PARAMS ((bfd *, asymbol *, struct external_nlist *));
|
||||||
|
static void adjust_o_magic PARAMS ((bfd *, struct internal_exec *));
|
||||||
|
static void adjust_z_magic PARAMS ((bfd *, struct internal_exec *));
|
||||||
|
static void adjust_n_magic PARAMS ((bfd *, struct internal_exec *));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SUBSECTION
|
SUBSECTION
|
||||||
|
@ -582,9 +585,20 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
|
||||||
guess at whether the file is executable. If the entry point
|
guess at whether the file is executable. If the entry point
|
||||||
is within the text segment, assume it is. (This makes files
|
is within the text segment, assume it is. (This makes files
|
||||||
executable even if their entry point address is 0, as long as
|
executable even if their entry point address is 0, as long as
|
||||||
their text starts at zero.). */
|
their text starts at zero.).
|
||||||
if ((execp->a_entry >= obj_textsec(abfd)->vma) &&
|
|
||||||
(execp->a_entry < obj_textsec(abfd)->vma + obj_textsec(abfd)->_raw_size))
|
This test had to be changed to deal with systems where the text segment
|
||||||
|
runs at a different location than the default. The problem is that the
|
||||||
|
entry address can appear to be outside the text segment, thus causing an
|
||||||
|
erroneous conclusion that the file isn't executable.
|
||||||
|
|
||||||
|
To fix this, we now accept any non-zero entry point as an indication of
|
||||||
|
executability. This will work most of the time, since only the linker
|
||||||
|
sets the entry point, and that is likely to be non-zero for most systems. */
|
||||||
|
|
||||||
|
if (execp->a_entry != 0
|
||||||
|
|| (execp->a_entry >= obj_textsec(abfd)->vma
|
||||||
|
&& execp->a_entry < obj_textsec(abfd)->vma + obj_textsec(abfd)->_raw_size))
|
||||||
abfd->flags |= EXEC_P;
|
abfd->flags |= EXEC_P;
|
||||||
#ifdef STAT_FOR_EXEC
|
#ifdef STAT_FOR_EXEC
|
||||||
else
|
else
|
||||||
|
@ -1941,6 +1955,9 @@ NAME(aout,get_symtab) (abfd, location)
|
||||||
/* Standard reloc stuff */
|
/* Standard reloc stuff */
|
||||||
/* Output standard relocation information to a file in target byte order. */
|
/* Output standard relocation information to a file in target byte order. */
|
||||||
|
|
||||||
|
extern void NAME(aout,swap_std_reloc_out)
|
||||||
|
PARAMS ((bfd *, arelent *, struct reloc_std_external *));
|
||||||
|
|
||||||
void
|
void
|
||||||
NAME(aout,swap_std_reloc_out) (abfd, g, natptr)
|
NAME(aout,swap_std_reloc_out) (abfd, g, natptr)
|
||||||
bfd *abfd;
|
bfd *abfd;
|
||||||
|
@ -2036,6 +2053,9 @@ NAME(aout,swap_std_reloc_out) (abfd, g, natptr)
|
||||||
/* Extended stuff */
|
/* Extended stuff */
|
||||||
/* Output extended relocation information to a file in target byte order. */
|
/* Output extended relocation information to a file in target byte order. */
|
||||||
|
|
||||||
|
extern void NAME(aout,swap_ext_reloc_out)
|
||||||
|
PARAMS ((bfd *, arelent *, struct reloc_ext_external *));
|
||||||
|
|
||||||
void
|
void
|
||||||
NAME(aout,swap_ext_reloc_out) (abfd, g, natptr)
|
NAME(aout,swap_ext_reloc_out) (abfd, g, natptr)
|
||||||
bfd *abfd;
|
bfd *abfd;
|
||||||
|
@ -3860,10 +3880,15 @@ NAME(aout,final_link) (abfd, info, callback)
|
||||||
obj_datasec (abfd)->reloc_count =
|
obj_datasec (abfd)->reloc_count =
|
||||||
exec_hdr (abfd)->a_drsize / obj_reloc_entry_size (abfd);
|
exec_hdr (abfd)->a_drsize / obj_reloc_entry_size (abfd);
|
||||||
|
|
||||||
/* Write out the string table. */
|
/* Write out the string table, unless there are no symbols. */
|
||||||
if (bfd_seek (abfd, obj_str_filepos (abfd), SEEK_SET) != 0)
|
if (abfd->symcount > 0)
|
||||||
goto error_return;
|
{
|
||||||
return emit_stringtab (abfd, aout_info.strtab);
|
if (bfd_seek (abfd, obj_str_filepos (abfd), SEEK_SET) != 0
|
||||||
|
|| ! emit_stringtab (abfd, aout_info.strtab))
|
||||||
|
goto error_return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
error_return:
|
error_return:
|
||||||
if (aout_info.contents != NULL)
|
if (aout_info.contents != NULL)
|
||||||
|
|
Loading…
Add table
Reference in a new issue