* emultempl/pe.em (is_underscoring): New helper function.
(gld_${EMULATION_NAME}_before_parse): Replace code
for pe(p)_leading_underscore detection by is_underscoring.
(U): Likewise.
(GET_INIT_SYMBOL_NAME): Likewise.
(U_SIZE): Likewise.
(set_pe_name):
(set_entry_point):
(gld_${EMULATION_NAME}_set_symbols):
* emultempl/pep.em: Likewise.
* pe-dll.c (pe_detail_list): Set default
underscoring for x64 target.
(pe_dll_id_target): Add initialization of
pe(p)_leading_underscore.
+2010-05-15 Kai Tietz <kai.tietz@onevision.com>
+
+ * emultempl/pe.em (is_underscoring): New helper function.
+ (gld_${EMULATION_NAME}_before_parse): Replace code
+ for pe(p)_leading_underscore detection by is_underscoring.
+ (U): Likewise.
+ (GET_INIT_SYMBOL_NAME): Likewise.
+ (U_SIZE): Likewise.
+ (set_pe_name):
+ (set_entry_point):
+ (gld_${EMULATION_NAME}_set_symbols):
+ * emultempl/pep.em: Likewise.
+ * pe-dll.c (pe_detail_list): Set default
+ underscoring for x64 target.
+ (pe_dll_id_target): Add initialization of
+ pe(p)_leading_underscore.
+
2010-05-15 Dave Korn <dave.korn.cygwin@gmail.com>
* pe-dll.c: Removed trailing whitespaces.
extern const char *output_filename;
-static void
-gld_${EMULATION_NAME}_before_parse (void)
+static int is_underscoring (void)
{
- int u;
- /* Now we check target's default for getting proper symbol_char. */
- u = pe_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
+ int u = 0;
+ if (pe_leading_underscore != -1)
+ return pe_leading_underscore;
+ if (!bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
if (u == -1)
abort ();
- pe_leading_underscore = u;
+ pe_leading_underscore = (u != 0 ? 1 : 0);
+ return pe_leading_underscore;
+}
+static void
+gld_${EMULATION_NAME}_before_parse (void)
+{
+ is_underscoring ();
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
output_filename = "${EXECUTABLE_NAME:-a.exe}";
#ifdef DLL_SUPPORT
underscore. */
#define GET_INIT_SYMBOL_NAME(IDX) \
(init[(IDX)].symbol \
- + ((init[(IDX)].is_c_symbol == FALSE || pe_leading_underscore != 0) ? 0 : 1))
+ + ((init[(IDX)].is_c_symbol == FALSE || (is_underscoring () != 0)) ? 0 : 1))
/* Decorates the C visible symbol by underscore, if target requires. */
#define U(CSTR) \
- (pe_leading_underscore == 0 ? CSTR : "_" CSTR)
+ ((is_underscoring () == 0) ? CSTR : "_" CSTR)
/* Get size of constant string for a possible underscore prefixed
C visible symbol. */
#define U_SIZE(CSTR) \
- (sizeof (CSTR) + pe_leading_underscore == 0 ? 0 : 1)
+ (sizeof (CSTR) + (is_underscoring () == 0 ? 0 : 1))
#define D(field,symbol,def,usc) {&pe.field,sizeof(pe.field), def, symbol, 0, usc}
static void
set_pe_name (char *name, long val)
{
- int i, u;
-
- /* Now we check target's default for getting proper symbol_char. */
- u = pe_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
- bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
-
- if (u == -1)
- abort ();
- pe_leading_underscore = u;
+ int i;
+ is_underscoring ();
/* Find the name and set it. */
for (i = 0; init[i].ptr; i++)
{
const char *entry;
const char *initial_symbol_char;
- int i, u = -1;
+ int i;
static const struct
{
entry = default_entry;
}
- /* Now we check target's default for getting proper symbol_char. */
- u = pe_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
- bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
-
- if (u == -1)
- abort ();
- initial_symbol_char = (u == 1 ? "_" : "");
- pe_leading_underscore = u;
+ initial_symbol_char = (is_underscoring () != 0 ? "_" : "");
if (*initial_symbol_char != '\0')
{
{
/* Run through and invent symbols for all the
names and insert the defaults. */
- int j, u;
- /* Now we check target's default for getting proper symbol_char. */
- u = pe_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
- bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
+ int j;
- if (u == -1)
- abort ();
- pe_leading_underscore = u;
+ is_underscoring ();
if (!init[IMAGEBASEOFF].inited)
{
extern const char *output_filename;
-static void
-gld_${EMULATION_NAME}_before_parse (void)
+static int is_underscoring (void)
{
- int u;
- /* Now we check target's default for getting proper symbol_char. */
- u = pep_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
+ int u = 0;
+ if (pep_leading_underscore != -1)
+ return pep_leading_underscore;
+ if (!bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
if (u == -1)
abort ();
- pep_leading_underscore = u;
+ pep_leading_underscore = (u != 0 ? 1 : 0);
+ return pep_leading_underscore;
+}
+
+static void
+gld_${EMULATION_NAME}_before_parse (void)
+{
+ is_underscoring ();
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
output_filename = "${EXECUTABLE_NAME:-a.exe}";
#ifdef DLL_SUPPORT
#define GET_INIT_SYMBOL_NAME(IDX) \
(init[(IDX)].symbol \
- + ((init[(IDX)].is_c_symbol == FALSE || pep_leading_underscore == 1) ? 0 : 1))
+ + ((init[(IDX)].is_c_symbol == FALSE || (is_underscoring () == 1)) ? 0 : 1))
/* Decorates the C visible symbol by underscore, if target requires. */
#define U(CSTR) \
- (pep_leading_underscore != 1 ? CSTR : "_" CSTR)
+ ((is_underscoring () == 0) ? CSTR : "_" CSTR)
/* Get size of constant string for a possible underscore prefixed
C visible symbol. */
#define U_SIZE(CSTR) \
- (sizeof (CSTR) + pep_leading_underscore == 1 ? 0 : 1)
+ (sizeof (CSTR) + (is_underscoring () == 0 ? 0 : 1))
#define D(field,symbol,def,usc) {&pep.field,sizeof(pep.field), def, symbol,0, usc}
static void
set_pep_name (char *name, bfd_vma val)
{
- int i, u;
-
- /* Now we check target's default for getting proper symbol_char. */
- u = pep_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
- bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
-
- if (u == -1)
- abort ();
- pep_leading_underscore = u;
-
+ int i;
+ is_underscoring ();
/* Find the name and set it. */
for (i = 0; init[i].ptr; i++)
{
{
const char *entry;
const char *initial_symbol_char;
- int i, u = -1;
+ int i;
static const struct
{
}
/* Now we check target's default for getting proper symbol_char. */
- u = pep_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
- bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
-
- if (u == -1)
- abort ();
- initial_symbol_char = (u == 1 ? "_" : "");
- pep_leading_underscore = u;
+ initial_symbol_char = (is_underscoring () != 0 ? "_" : "");
if (*initial_symbol_char != '\0')
{
static bfd_boolean
gld${EMULATION_NAME}_handle_option (int optc)
{
+ is_underscoring ();
switch (optc)
{
default:
{
/* Run through and invent symbols for all the
names and insert the defaults. */
- int j, u;
- /* Now we check target's default for getting proper symbol_char. */
- u = pep_leading_underscore;
- if (u == -1
- && !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
- bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
+ int j;
- if (u == -1)
- abort ();
- pep_leading_underscore = u;
+ is_underscoring ();
if (!init[IMAGEBASEOFF].inited)
{
static void
gld_${EMULATION_NAME}_after_open (void)
{
+ is_underscoring ();
#ifdef DLL_SUPPORT
if (pep_dll_extra_pe_debug)
{
static void
gld_${EMULATION_NAME}_before_allocation (void)
{
+ is_underscoring ();
before_allocation_default ();
}
\f
{
int i;
+ is_underscoring ();
+
for (i = 0; init[i].ptr; i++)
if (strcmp (GET_INIT_SYMBOL_NAME (i), option) == 0)
return init[i].inited;
static bfd_boolean
gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED)
{
+ is_underscoring ();
#ifdef DLL_SUPPORT
#ifdef TARGET_IS_i386pep
pep_dll_id_target ("pei-x86-64");
static void
gld_${EMULATION_NAME}_finish (void)
{
+ is_underscoring ();
finish_default ();
#ifdef DLL_SUPPORT
#endif
PE_ARCH_i386,
bfd_arch_i386,
+#ifdef pe_use_x86_64
+ FALSE,
+#else
TRUE,
+#endif
autofilter_symbollist_i386
},
{
int u = pe_leading_underscore; /* Underscoring mode. -1 for use default. */
if (u == -1)
bfd_get_target_info (target, NULL, NULL, &u, NULL);
- if (u != -1)
- pe_detail_list[i].underscored = (u != 0 ? TRUE : FALSE);
+ if (u == -1)
+ abort ();
+ pe_detail_list[i].underscored = (u != 0 ? TRUE : FALSE);
pe_details = pe_detail_list + i;
+ pe_leading_underscore = (u != 0 ? 1 : 0);
return;
}
einfo (_("%XUnsupported PEI architecture: %s\n"), target);