projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Provide stat function for spu overlay manager iovec
[binutils-gdb.git]
/
binutils
/
nlmconv.c
diff --git
a/binutils/nlmconv.c
b/binutils/nlmconv.c
index 44593c1212f1a4146ebdbe50a3bb3629e0a4f660..0513f291494494c9da7f192e7b9b04882d84d879 100644
(file)
--- a/
binutils/nlmconv.c
+++ b/
binutils/nlmconv.c
@@
-1,12
+1,11
@@
/* nlmconv.c -- NLM conversion program
/* nlmconv.c -- NLM conversion program
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1993-2014 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-16,7
+15,9
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
/* Written by Ian Lance Taylor <ian@cygnus.com>.
/* Written by Ian Lance Taylor <ian@cygnus.com>.
@@
-32,15
+33,14
@@
#endif
#endif
#endif
#endif
+#include "sysdep.h"
#include "bfd.h"
#include "libiberty.h"
#include "bfd.h"
#include "libiberty.h"
-#include "
bucomm
.h"
+#include "
filenames
.h"
#include "safe-ctype.h"
#include "ansidecl.h"
#include <time.h>
#include "safe-ctype.h"
#include "ansidecl.h"
#include <time.h>
-#include <sys/stat.h>
-#include <sys/file.h>
#include <assert.h>
#include "getopt.h"
#include <assert.h>
#include "getopt.h"
@@
-53,6
+53,8
@@
#include "coff/ecoff.h"
#endif
#include "coff/ecoff.h"
#endif
+#include "bucomm.h"
+
/* If strerror is just a macro, we want to use the one from libiberty
since it will handle undefined values. */
#undef strerror
/* If strerror is just a macro, we want to use the one from libiberty
since it will handle undefined values. */
#undef strerror
@@
-193,7
+195,7
@@
main (int argc, char **argv)
bfd *sharedbfd;
size_t shared_offset = 0;
size_t shared_size = 0;
bfd *sharedbfd;
size_t shared_offset = 0;
size_t shared_size = 0;
- Nlm_Internal_Fixed_Header sharedhdr;
+
static
Nlm_Internal_Fixed_Header sharedhdr;
int len;
char *modname;
char **matching;
int len;
char *modname;
char **matching;
@@
-210,6
+212,8
@@
main (int argc, char **argv)
program_name = argv[0];
xmalloc_set_program_name (program_name);
program_name = argv[0];
xmalloc_set_program_name (program_name);
+ expandargv (&argc, &argv);
+
bfd_init ();
set_default_bfd_target ();
bfd_init ();
set_default_bfd_target ();
@@
-262,7
+266,7
@@
main (int argc, char **argv)
++optind;
if (optind < argc)
show_usage (stderr, 1);
++optind;
if (optind < argc)
show_usage (stderr, 1);
- if (
str
cmp (input_file, output_file) == 0)
+ if (
filename_
cmp (input_file, output_file) == 0)
{
fatal (_("input and output files must be different"));
}
{
fatal (_("input and output files must be different"));
}
@@
-389,9
+393,10
@@
main (int argc, char **argv)
bss_sec = bfd_get_section_by_name (outbfd, NLM_UNINITIALIZED_DATA_NAME);
if (bss_sec == NULL)
{
bss_sec = bfd_get_section_by_name (outbfd, NLM_UNINITIALIZED_DATA_NAME);
if (bss_sec == NULL)
{
- bss_sec = bfd_make_section (outbfd, NLM_UNINITIALIZED_DATA_NAME);
+ bss_sec = bfd_make_section_with_flags (outbfd,
+ NLM_UNINITIALIZED_DATA_NAME,
+ SEC_ALLOC);
if (bss_sec == NULL
if (bss_sec == NULL
- || ! bfd_set_section_flags (outbfd, bss_sec, SEC_ALLOC)
|| ! bfd_set_section_alignment (outbfd, bss_sec, 1))
bfd_fatal (_("make .bss section"));
}
|| ! bfd_set_section_alignment (outbfd, bss_sec, 1))
bfd_fatal (_("make .bss section"));
}
@@
-400,11
+405,10
@@
main (int argc, char **argv)
so that programs which understand it can resurrect the original
sections from the NLM. We will put a pointer to .nlmsections in
the NLM header area. */
so that programs which understand it can resurrect the original
sections from the NLM. We will put a pointer to .nlmsections in
the NLM header area. */
- secsec = bfd_make_section (outbfd, ".nlmsections");
+ secsec = bfd_make_section_with_flags (outbfd, ".nlmsections",
+ SEC_HAS_CONTENTS);
if (secsec == NULL)
bfd_fatal (_("make .nlmsections section"));
if (secsec == NULL)
bfd_fatal (_("make .nlmsections section"));
- if (! bfd_set_section_flags (outbfd, secsec, SEC_HAS_CONTENTS))
- bfd_fatal (_("set .nlmsections flags"));
#ifdef NLMCONV_POWERPC
/* For PowerPC NetWare we need to build stubs for calls to undefined
#ifdef NLMCONV_POWERPC
/* For PowerPC NetWare we need to build stubs for calls to undefined
@@
-470,23
+474,23
@@
main (int argc, char **argv)
++sym->name;
else
{
++sym->name;
else
{
- char *new;
+ char *new
_name
;
- new = xmalloc (strlen (bfd_asymbol_name (sym)) + 1);
- new[0] = outlead;
- strcpy (new + 1, bfd_asymbol_name (sym) + 1);
- sym->name = new;
+ new
_name
= xmalloc (strlen (bfd_asymbol_name (sym)) + 1);
+ new
_name
[0] = outlead;
+ strcpy (new
_name
+ 1, bfd_asymbol_name (sym) + 1);
+ sym->name = new
_name
;
}
}
}
else
{
}
}
}
else
{
- char *new;
+ char *new
_name
;
- new = xmalloc (strlen (bfd_asymbol_name (sym)) + 2);
- new[0] = outlead;
- strcpy (new + 1, bfd_asymbol_name (sym));
- sym->name = new;
+ new
_name
= xmalloc (strlen (bfd_asymbol_name (sym)) + 2);
+ new
_name
[0] = outlead;
+ strcpy (new
_name
+ 1, bfd_asymbol_name (sym));
+ sym->name = new
_name
;
}
}
}
}
@@
-708,11
+712,10
@@
main (int argc, char **argv)
else
{
custom_size = st.st_size;
else
{
custom_size = st.st_size;
- custom_section = bfd_make_section (outbfd, ".nlmcustom");
+ custom_section = bfd_make_section_with_flags (outbfd, ".nlmcustom",
+ SEC_HAS_CONTENTS);
if (custom_section == NULL
if (custom_section == NULL
- || ! bfd_set_section_size (outbfd, custom_section, custom_size)
- || ! bfd_set_section_flags (outbfd, custom_section,
- SEC_HAS_CONTENTS))
+ || ! bfd_set_section_size (outbfd, custom_section, custom_size))
bfd_fatal (_("custom section"));
}
}
bfd_fatal (_("custom section"));
}
}
@@
-729,13
+732,12
@@
main (int argc, char **argv)
else
{
help_size = st.st_size;
else
{
help_size = st.st_size;
- help_section = bfd_make_section (outbfd, ".nlmhelp");
+ help_section = bfd_make_section_with_flags (outbfd, ".nlmhelp",
+ SEC_HAS_CONTENTS);
if (help_section == NULL
if (help_section == NULL
- || ! bfd_set_section_size (outbfd, help_section, help_size)
- || ! bfd_set_section_flags (outbfd, help_section,
- SEC_HAS_CONTENTS))
+ || ! bfd_set_section_size (outbfd, help_section, help_size))
bfd_fatal (_("help section"));
bfd_fatal (_("help section"));
-
strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8
);
+
LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs"
);
}
}
if (message_file != NULL)
}
}
if (message_file != NULL)
@@
-751,13
+753,13
@@
main (int argc, char **argv)
else
{
message_size = st.st_size;
else
{
message_size = st.st_size;
- message_section = bfd_make_section (outbfd, ".nlmmessages");
+ message_section = bfd_make_section_with_flags (outbfd,
+ ".nlmmessages",
+ SEC_HAS_CONTENTS);
if (message_section == NULL
if (message_section == NULL
- || ! bfd_set_section_size (outbfd, message_section, message_size)
- || ! bfd_set_section_flags (outbfd, message_section,
- SEC_HAS_CONTENTS))
+ || ! bfd_set_section_size (outbfd, message_section, message_size))
bfd_fatal (_("message section"));
bfd_fatal (_("message section"));
-
strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8
);
+
LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs"
);
}
}
if (modules != NULL)
}
}
if (modules != NULL)
@@
-767,11
+769,10
@@
main (int argc, char **argv)
module_size = 0;
for (l = modules; l != NULL; l = l->next)
module_size += strlen (l->string) + 1;
module_size = 0;
for (l = modules; l != NULL; l = l->next)
module_size += strlen (l->string) + 1;
- module_section = bfd_make_section (outbfd, ".nlmmodules");
+ module_section = bfd_make_section_with_flags (outbfd, ".nlmmodules",
+ SEC_HAS_CONTENTS);
if (module_section == NULL
if (module_section == NULL
- || ! bfd_set_section_size (outbfd, module_section, module_size)
- || ! bfd_set_section_flags (outbfd, module_section,
- SEC_HAS_CONTENTS))
+ || ! bfd_set_section_size (outbfd, module_section, module_size))
bfd_fatal (_("module section"));
}
if (rpc_file != NULL)
bfd_fatal (_("module section"));
}
if (rpc_file != NULL)
@@
-787,13
+788,12
@@
main (int argc, char **argv)
else
{
rpc_size = st.st_size;
else
{
rpc_size = st.st_size;
- rpc_section = bfd_make_section (outbfd, ".nlmrpc");
+ rpc_section = bfd_make_section_with_flags (outbfd, ".nlmrpc",
+ SEC_HAS_CONTENTS);
if (rpc_section == NULL
if (rpc_section == NULL
- || ! bfd_set_section_size (outbfd, rpc_section, rpc_size)
- || ! bfd_set_section_flags (outbfd, rpc_section,
- SEC_HAS_CONTENTS))
+ || ! bfd_set_section_size (outbfd, rpc_section, rpc_size))
bfd_fatal (_("rpc section"));
bfd_fatal (_("rpc section"));
-
strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8
);
+
LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs"
);
}
}
if (sharelib_file != NULL)
}
}
if (sharelib_file != NULL)
@@
-843,27
+843,27
@@
main (int argc, char **argv)
if (shared_offset > (size_t) sharedhdr.publicsOffset)
shared_offset = sharedhdr.publicsOffset;
shared_size = st.st_size - shared_offset;
if (shared_offset > (size_t) sharedhdr.publicsOffset)
shared_offset = sharedhdr.publicsOffset;
shared_size = st.st_size - shared_offset;
- shared_section = bfd_make_section (outbfd, ".nlmshared");
+ shared_section = bfd_make_section_with_flags (outbfd,
+ ".nlmshared",
+ SEC_HAS_CONTENTS);
if (shared_section == NULL
|| ! bfd_set_section_size (outbfd, shared_section,
if (shared_section == NULL
|| ! bfd_set_section_size (outbfd, shared_section,
- shared_size)
- || ! bfd_set_section_flags (outbfd, shared_section,
- SEC_HAS_CONTENTS))
+ shared_size))
bfd_fatal (_("shared section"));
bfd_fatal (_("shared section"));
-
strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8
);
+
LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs"
);
}
}
}
/* Check whether a version was given. */
}
}
}
/* Check whether a version was given. */
- if (
strncmp (version_hdr->stamp, "VeRsIoN#", 8) != 0
)
+ if (
!CONST_STRNEQ (version_hdr->stamp, "VeRsIoN#")
)
non_fatal (_("warning: No version number given"));
/* At least for now, always create an extended header, because that
is what NLMLINK does. */
non_fatal (_("warning: No version number given"));
/* At least for now, always create an extended header, because that
is what NLMLINK does. */
-
strncpy (nlm_extended_header (outbfd)->stamp, "MeSsAgEs", 8
);
+
LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs"
);
-
strncpy (nlm_cygnus_ext_header (outbfd)->stamp, "CyGnUsEx", 8
);
+
LITMEMCPY (nlm_cygnus_ext_header (outbfd)->stamp, "CyGnUsEx"
);
/* If the date was not given, force it in. */
if (nlm_version_header (outbfd)->month == 0
/* If the date was not given, force it in. */
if (nlm_version_header (outbfd)->month == 0
@@
-878,7
+878,7
@@
main (int argc, char **argv)
nlm_version_header (outbfd)->month = ptm->tm_mon + 1;
nlm_version_header (outbfd)->day = ptm->tm_mday;
nlm_version_header (outbfd)->year = ptm->tm_year + 1900;
nlm_version_header (outbfd)->month = ptm->tm_mon + 1;
nlm_version_header (outbfd)->day = ptm->tm_mday;
nlm_version_header (outbfd)->year = ptm->tm_year + 1900;
-
strncpy (version_hdr->stamp, "VeRsIoN#", 8
);
+
LITMEMCPY (version_hdr->stamp, "VeRsIoN#"
);
}
#ifdef NLMCONV_POWERPC
}
#ifdef NLMCONV_POWERPC
@@
-976,7
+976,7
@@
main (int argc, char **argv)
for (l = modules; l != NULL; l = l->next)
{
*set = strlen (l->string);
for (l = modules; l != NULL; l = l->next)
{
*set = strlen (l->string);
- strncpy (set + 1, l->string, *set);
+ strncpy (
(char *)
set + 1, l->string, *set);
set += *set + 1;
++c;
}
set += *set + 1;
++c;
}
@@
-1103,10
+1103,11
@@
show_usage (FILE *file, int status)
-T --header-file=<file> Read <file> for NLM header information\n\
-l --linker=<linker> Use <linker> for any linking\n\
-d --debug Display on stderr the linker command line\n\
-T --header-file=<file> Read <file> for NLM header information\n\
-l --linker=<linker> Use <linker> for any linking\n\
-d --debug Display on stderr the linker command line\n\
+ @<file> Read options from <file>.\n\
-h --help Display this information\n\
-v --version Display the program's version\n\
"));
-h --help Display this information\n\
-v --version Display the program's version\n\
"));
- if (status == 0)
+ if (
REPORT_BUGS_TO[0] &&
status == 0)
fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}
fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
exit (status);
}
@@
-1694,13
+1695,12
@@
powerpc_build_stubs (bfd *inbfd, bfd *outbfd ATTRIBUTE_UNUSED,
/* Make a section to hold stubs. We don't set SEC_HAS_CONTENTS for
the section to prevent copy_sections from reading from it. */
/* Make a section to hold stubs. We don't set SEC_HAS_CONTENTS for
the section to prevent copy_sections from reading from it. */
- stub_sec = bfd_make_section (inbfd, ".stubs");
+ stub_sec = bfd_make_section_with_flags (inbfd, ".stubs",
+ (SEC_CODE
+ | SEC_RELOC
+ | SEC_ALLOC
+ | SEC_LOAD));
if (stub_sec == (asection *) NULL
if (stub_sec == (asection *) NULL
- || ! bfd_set_section_flags (inbfd, stub_sec,
- (SEC_CODE
- | SEC_RELOC
- | SEC_ALLOC
- | SEC_LOAD))
|| ! bfd_set_section_alignment (inbfd, stub_sec, 2))
bfd_fatal (".stubs");
|| ! bfd_set_section_alignment (inbfd, stub_sec, 2))
bfd_fatal (".stubs");
@@
-1708,14
+1708,13
@@
powerpc_build_stubs (bfd *inbfd, bfd *outbfd ATTRIBUTE_UNUSED,
got_sec = bfd_get_section_by_name (inbfd, ".got");
if (got_sec == (asection *) NULL)
{
got_sec = bfd_get_section_by_name (inbfd, ".got");
if (got_sec == (asection *) NULL)
{
- got_sec = bfd_make_section (inbfd, ".got");
+ got_sec = bfd_make_section_with_flags (inbfd, ".got",
+ (SEC_DATA
+ | SEC_RELOC
+ | SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS));
if (got_sec == (asection *) NULL
if (got_sec == (asection *) NULL
- || ! bfd_set_section_flags (inbfd, got_sec,
- (SEC_DATA
- | SEC_RELOC
- | SEC_ALLOC
- | SEC_LOAD
- | SEC_HAS_CONTENTS))
|| ! bfd_set_section_alignment (inbfd, got_sec, 2))
bfd_fatal (".got");
}
|| ! bfd_set_section_alignment (inbfd, got_sec, 2))
bfd_fatal (".got");
}
@@
-1744,9
+1743,9
@@
powerpc_build_stubs (bfd *inbfd, bfd *outbfd ATTRIBUTE_UNUSED,
/* Make a new undefined symbol with the same name but without
the leading `.'. */
/* Make a new undefined symbol with the same name but without
the leading `.'. */
- newsym =
(asymbol *)
xmalloc (sizeof (asymbol));
+ newsym = xmalloc (sizeof (asymbol));
*newsym = *sym;
*newsym = *sym;
- newname =
(char *)
xmalloc (strlen (bfd_asymbol_name (sym)));
+ newname = xmalloc (strlen (bfd_asymbol_name (sym)));
strcpy (newname, bfd_asymbol_name (sym) + 1);
newsym->name = newname;
strcpy (newname, bfd_asymbol_name (sym) + 1);
newsym->name = newname;
@@
-2038,7
+2037,7
@@
powerpc_mangle_relocs (bfd *outbfd, asection *insec,
file. */
static char *
file. */
static char *
-link_inputs (struct string_list *inputs, char *ld, char * m
ap_
file)
+link_inputs (struct string_list *inputs, char *ld, char * mfile)
{
size_t c;
struct string_list *q;
{
size_t c;
struct string_list *q;
@@
-2087,12
+2086,12
@@
link_inputs (struct string_list *inputs, char *ld, char * map_file)
argv[3] = unlink_on_exit;
/* If we have been given the name of a mapfile and that
name is not 'stderr' then pass it on to the linker. */
argv[3] = unlink_on_exit;
/* If we have been given the name of a mapfile and that
name is not 'stderr' then pass it on to the linker. */
- if (m
ap_
file
- && * m
ap_
file
- && strcmp (m
ap_
file, "stderr") == 0)
+ if (mfile
+ && * mfile
+ && strcmp (mfile, "stderr") == 0)
{
argv[4] = (char *) "-Map";
{
argv[4] = (char *) "-Map";
- argv[5] = m
ap_
file;
+ argv[5] = mfile;
i = 6;
}
else
i = 6;
}
else