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.
This commit is contained in:
parent
1b610c931b
commit
d74720d2cb
17
ld/ChangeLog
17
ld/ChangeLog
|
@ -1,3 +1,20 @@
|
||||||
|
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>
|
2010-05-15 Dave Korn <dave.korn.cygwin@gmail.com>
|
||||||
|
|
||||||
* pe-dll.c: Removed trailing whitespaces.
|
* pe-dll.c: Removed trailing whitespaces.
|
||||||
|
|
|
@ -142,20 +142,24 @@ static char *pe_dll_search_prefix = NULL;
|
||||||
|
|
||||||
extern const char *output_filename;
|
extern const char *output_filename;
|
||||||
|
|
||||||
static void
|
static int is_underscoring (void)
|
||||||
gld_${EMULATION_NAME}_before_parse (void)
|
|
||||||
{
|
{
|
||||||
int u;
|
int u = 0;
|
||||||
/* Now we check target's default for getting proper symbol_char. */
|
if (pe_leading_underscore != -1)
|
||||||
u = pe_leading_underscore;
|
return pe_leading_underscore;
|
||||||
if (u == -1
|
if (!bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
|
||||||
&& !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
|
|
||||||
bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
|
bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
|
||||||
|
|
||||||
if (u == -1)
|
if (u == -1)
|
||||||
abort ();
|
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/:.*//'`);
|
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
|
||||||
output_filename = "${EXECUTABLE_NAME:-a.exe}";
|
output_filename = "${EXECUTABLE_NAME:-a.exe}";
|
||||||
#ifdef DLL_SUPPORT
|
#ifdef DLL_SUPPORT
|
||||||
|
@ -353,16 +357,16 @@ typedef struct
|
||||||
underscore. */
|
underscore. */
|
||||||
#define GET_INIT_SYMBOL_NAME(IDX) \
|
#define GET_INIT_SYMBOL_NAME(IDX) \
|
||||||
(init[(IDX)].symbol \
|
(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. */
|
/* Decorates the C visible symbol by underscore, if target requires. */
|
||||||
#define U(CSTR) \
|
#define U(CSTR) \
|
||||||
(pe_leading_underscore == 0 ? CSTR : "_" CSTR)
|
((is_underscoring () == 0) ? CSTR : "_" CSTR)
|
||||||
|
|
||||||
/* Get size of constant string for a possible underscore prefixed
|
/* Get size of constant string for a possible underscore prefixed
|
||||||
C visible symbol. */
|
C visible symbol. */
|
||||||
#define U_SIZE(CSTR) \
|
#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}
|
#define D(field,symbol,def,usc) {&pe.field,sizeof(pe.field), def, symbol, 0, usc}
|
||||||
|
|
||||||
|
@ -474,17 +478,8 @@ gld_${EMULATION_NAME}_list_options (FILE *file)
|
||||||
static void
|
static void
|
||||||
set_pe_name (char *name, long val)
|
set_pe_name (char *name, long val)
|
||||||
{
|
{
|
||||||
int i, u;
|
int i;
|
||||||
|
is_underscoring ();
|
||||||
/* 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;
|
|
||||||
|
|
||||||
/* Find the name and set it. */
|
/* Find the name and set it. */
|
||||||
for (i = 0; init[i].ptr; i++)
|
for (i = 0; init[i].ptr; i++)
|
||||||
|
@ -506,7 +501,7 @@ set_entry_point (void)
|
||||||
{
|
{
|
||||||
const char *entry;
|
const char *entry;
|
||||||
const char *initial_symbol_char;
|
const char *initial_symbol_char;
|
||||||
int i, u = -1;
|
int i;
|
||||||
|
|
||||||
static const struct
|
static const struct
|
||||||
{
|
{
|
||||||
|
@ -549,16 +544,7 @@ set_entry_point (void)
|
||||||
entry = default_entry;
|
entry = default_entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now we check target's default for getting proper symbol_char. */
|
initial_symbol_char = (is_underscoring () != 0 ? "_" : "");
|
||||||
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;
|
|
||||||
|
|
||||||
if (*initial_symbol_char != '\0')
|
if (*initial_symbol_char != '\0')
|
||||||
{
|
{
|
||||||
|
@ -915,16 +901,9 @@ gld_${EMULATION_NAME}_set_symbols (void)
|
||||||
{
|
{
|
||||||
/* Run through and invent symbols for all the
|
/* Run through and invent symbols for all the
|
||||||
names and insert the defaults. */
|
names and insert the defaults. */
|
||||||
int j, u;
|
int j;
|
||||||
/* 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)
|
is_underscoring ();
|
||||||
abort ();
|
|
||||||
pe_leading_underscore = u;
|
|
||||||
|
|
||||||
if (!init[IMAGEBASEOFF].inited)
|
if (!init[IMAGEBASEOFF].inited)
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,20 +115,25 @@ static char * pep_dll_search_prefix = NULL;
|
||||||
|
|
||||||
extern const char *output_filename;
|
extern const char *output_filename;
|
||||||
|
|
||||||
static void
|
static int is_underscoring (void)
|
||||||
gld_${EMULATION_NAME}_before_parse (void)
|
|
||||||
{
|
{
|
||||||
int u;
|
int u = 0;
|
||||||
/* Now we check target's default for getting proper symbol_char. */
|
if (pep_leading_underscore != -1)
|
||||||
u = pep_leading_underscore;
|
return pep_leading_underscore;
|
||||||
if (u == -1
|
if (!bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
|
||||||
&& !bfd_get_target_info ("${OUTPUT_FORMAT}", NULL, NULL, &u, NULL))
|
|
||||||
bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
|
bfd_get_target_info ("${RELOCATEABLE_OUTPUT_FORMAT}", NULL, NULL, &u, NULL);
|
||||||
|
|
||||||
if (u == -1)
|
if (u == -1)
|
||||||
abort ();
|
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/:.*//'`);
|
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
|
||||||
output_filename = "${EXECUTABLE_NAME:-a.exe}";
|
output_filename = "${EXECUTABLE_NAME:-a.exe}";
|
||||||
#ifdef DLL_SUPPORT
|
#ifdef DLL_SUPPORT
|
||||||
|
@ -297,16 +302,16 @@ typedef struct
|
||||||
|
|
||||||
#define GET_INIT_SYMBOL_NAME(IDX) \
|
#define GET_INIT_SYMBOL_NAME(IDX) \
|
||||||
(init[(IDX)].symbol \
|
(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. */
|
/* Decorates the C visible symbol by underscore, if target requires. */
|
||||||
#define U(CSTR) \
|
#define U(CSTR) \
|
||||||
(pep_leading_underscore != 1 ? CSTR : "_" CSTR)
|
((is_underscoring () == 0) ? CSTR : "_" CSTR)
|
||||||
|
|
||||||
/* Get size of constant string for a possible underscore prefixed
|
/* Get size of constant string for a possible underscore prefixed
|
||||||
C visible symbol. */
|
C visible symbol. */
|
||||||
#define U_SIZE(CSTR) \
|
#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}
|
#define D(field,symbol,def,usc) {&pep.field,sizeof(pep.field), def, symbol,0, usc}
|
||||||
|
|
||||||
|
@ -411,18 +416,8 @@ gld_${EMULATION_NAME}_list_options (FILE *file)
|
||||||
static void
|
static void
|
||||||
set_pep_name (char *name, bfd_vma val)
|
set_pep_name (char *name, bfd_vma val)
|
||||||
{
|
{
|
||||||
int i, u;
|
int i;
|
||||||
|
is_underscoring ();
|
||||||
/* 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;
|
|
||||||
|
|
||||||
/* Find the name and set it. */
|
/* Find the name and set it. */
|
||||||
for (i = 0; init[i].ptr; i++)
|
for (i = 0; init[i].ptr; i++)
|
||||||
{
|
{
|
||||||
|
@ -443,7 +438,7 @@ set_entry_point (void)
|
||||||
{
|
{
|
||||||
const char *entry;
|
const char *entry;
|
||||||
const char *initial_symbol_char;
|
const char *initial_symbol_char;
|
||||||
int i, u = -1;
|
int i;
|
||||||
|
|
||||||
static const struct
|
static const struct
|
||||||
{
|
{
|
||||||
|
@ -482,15 +477,7 @@ set_entry_point (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now we check target's default for getting proper symbol_char. */
|
/* Now we check target's default for getting proper symbol_char. */
|
||||||
u = pep_leading_underscore;
|
initial_symbol_char = (is_underscoring () != 0 ? "_" : "");
|
||||||
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;
|
|
||||||
|
|
||||||
if (*initial_symbol_char != '\0')
|
if (*initial_symbol_char != '\0')
|
||||||
{
|
{
|
||||||
|
@ -616,6 +603,7 @@ set_pep_stack_heap (char *resname, char *comname)
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
gld${EMULATION_NAME}_handle_option (int optc)
|
gld${EMULATION_NAME}_handle_option (int optc)
|
||||||
{
|
{
|
||||||
|
is_underscoring ();
|
||||||
switch (optc)
|
switch (optc)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
|
@ -840,16 +828,9 @@ gld_${EMULATION_NAME}_set_symbols (void)
|
||||||
{
|
{
|
||||||
/* Run through and invent symbols for all the
|
/* Run through and invent symbols for all the
|
||||||
names and insert the defaults. */
|
names and insert the defaults. */
|
||||||
int j, u;
|
int j;
|
||||||
/* 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)
|
is_underscoring ();
|
||||||
abort ();
|
|
||||||
pep_leading_underscore = u;
|
|
||||||
|
|
||||||
if (!init[IMAGEBASEOFF].inited)
|
if (!init[IMAGEBASEOFF].inited)
|
||||||
{
|
{
|
||||||
|
@ -1191,6 +1172,7 @@ debug_section_p (bfd *abfd ATTRIBUTE_UNUSED, asection *sect, void *obj)
|
||||||
static void
|
static void
|
||||||
gld_${EMULATION_NAME}_after_open (void)
|
gld_${EMULATION_NAME}_after_open (void)
|
||||||
{
|
{
|
||||||
|
is_underscoring ();
|
||||||
#ifdef DLL_SUPPORT
|
#ifdef DLL_SUPPORT
|
||||||
if (pep_dll_extra_pe_debug)
|
if (pep_dll_extra_pe_debug)
|
||||||
{
|
{
|
||||||
|
@ -1485,6 +1467,7 @@ gld_${EMULATION_NAME}_after_open (void)
|
||||||
static void
|
static void
|
||||||
gld_${EMULATION_NAME}_before_allocation (void)
|
gld_${EMULATION_NAME}_before_allocation (void)
|
||||||
{
|
{
|
||||||
|
is_underscoring ();
|
||||||
before_allocation_default ();
|
before_allocation_default ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1497,6 +1480,8 @@ saw_option (char *option)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
is_underscoring ();
|
||||||
|
|
||||||
for (i = 0; init[i].ptr; i++)
|
for (i = 0; init[i].ptr; i++)
|
||||||
if (strcmp (GET_INIT_SYMBOL_NAME (i), option) == 0)
|
if (strcmp (GET_INIT_SYMBOL_NAME (i), option) == 0)
|
||||||
return init[i].inited;
|
return init[i].inited;
|
||||||
|
@ -1587,6 +1572,7 @@ gld_${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIB
|
||||||
static bfd_boolean
|
static bfd_boolean
|
||||||
gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED)
|
gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
|
is_underscoring ();
|
||||||
#ifdef DLL_SUPPORT
|
#ifdef DLL_SUPPORT
|
||||||
#ifdef TARGET_IS_i386pep
|
#ifdef TARGET_IS_i386pep
|
||||||
pep_dll_id_target ("pei-x86-64");
|
pep_dll_id_target ("pei-x86-64");
|
||||||
|
@ -1600,6 +1586,7 @@ gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUT
|
||||||
static void
|
static void
|
||||||
gld_${EMULATION_NAME}_finish (void)
|
gld_${EMULATION_NAME}_finish (void)
|
||||||
{
|
{
|
||||||
|
is_underscoring ();
|
||||||
finish_default ();
|
finish_default ();
|
||||||
|
|
||||||
#ifdef DLL_SUPPORT
|
#ifdef DLL_SUPPORT
|
||||||
|
|
10
ld/pe-dll.c
10
ld/pe-dll.c
|
@ -261,7 +261,11 @@ static pe_details_type pe_detail_list[] =
|
||||||
#endif
|
#endif
|
||||||
PE_ARCH_i386,
|
PE_ARCH_i386,
|
||||||
bfd_arch_i386,
|
bfd_arch_i386,
|
||||||
|
#ifdef pe_use_x86_64
|
||||||
|
FALSE,
|
||||||
|
#else
|
||||||
TRUE,
|
TRUE,
|
||||||
|
#endif
|
||||||
autofilter_symbollist_i386
|
autofilter_symbollist_i386
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -416,9 +420,11 @@ pe_dll_id_target (const char *target)
|
||||||
int u = pe_leading_underscore; /* Underscoring mode. -1 for use default. */
|
int u = pe_leading_underscore; /* Underscoring mode. -1 for use default. */
|
||||||
if (u == -1)
|
if (u == -1)
|
||||||
bfd_get_target_info (target, NULL, NULL, &u, NULL);
|
bfd_get_target_info (target, NULL, NULL, &u, NULL);
|
||||||
if (u != -1)
|
if (u == -1)
|
||||||
pe_detail_list[i].underscored = (u != 0 ? TRUE : FALSE);
|
abort ();
|
||||||
|
pe_detail_list[i].underscored = (u != 0 ? TRUE : FALSE);
|
||||||
pe_details = pe_detail_list + i;
|
pe_details = pe_detail_list + i;
|
||||||
|
pe_leading_underscore = (u != 0 ? 1 : 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
einfo (_("%XUnsupported PEI architecture: %s\n"), target);
|
einfo (_("%XUnsupported PEI architecture: %s\n"), target);
|
||||||
|
|
Loading…
Reference in New Issue