mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-03 07:21:58 +00:00
* pe-dll.c (process_def_file): Uninitialized data wasn't
exported with --export-all-symbols switch. * pe-dll.c (fill_edata): rearrange the data so that ordinals and noname work properly.
This commit is contained in:
parent
170cdc4f01
commit
45b1f63c8c
10
ld/ChangeLog
10
ld/ChangeLog
@ -1,3 +1,13 @@
|
||||
2000-09-28 Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
|
||||
|
||||
* pe-dll.c (process_def_file): Uninitialized data wasn't
|
||||
exported with --export-all-symbols switch.
|
||||
|
||||
2000-09-28 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* pe-dll.c (fill_edata): rearrange the data so that ordinals and
|
||||
noname work properly.
|
||||
|
||||
2000-09-28 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* ld.texinfo (HPPA ELF32): New section.
|
||||
|
@ -876,6 +876,27 @@ gld_${EMULATION_NAME}_after_open ()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
{
|
||||
asection *sec;
|
||||
char *new_name, seq;
|
||||
|
||||
|
||||
if (is->the_bfd->my_archive)
|
||||
for (sec = is->the_bfd->sections; sec; sec = sec->next)
|
||||
if (strcmp (sec->name, ".idata\$7") == 0
|
||||
&& sec->reloc_count == 0)
|
||||
{
|
||||
char *name = xmalloc (sec->_raw_size + 1);
|
||||
bfd_get_section_contents (is->the_bfd, sec, name, 0, sec->_raw_size);
|
||||
name[sec->_raw_size] = 0;
|
||||
printf ("dj: implib \"%s\" for dll \"%s\" %d\n",
|
||||
is->the_bfd->my_archive->filename, name, sec->_raw_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
15
ld/pe-dll.c
15
ld/pe-dll.c
@ -302,7 +302,10 @@ process_def_file (abfd, info)
|
||||
|
||||
for (j = 0; j < nsyms; j++)
|
||||
{
|
||||
if (symbols[j]->flags & BSF_GLOBAL)
|
||||
/* We should export symbols which are either global or not
|
||||
anything at all (.bss data is the latter) */
|
||||
if ((symbols[j]->flags & BSF_GLOBAL)
|
||||
|| (symbols[j]->flags == BSF_NO_FLAGS))
|
||||
{
|
||||
const char *sn = symbols[j]->name;
|
||||
if (*sn == '_')
|
||||
@ -703,19 +706,21 @@ fill_edata (abfd, info)
|
||||
unsigned long srva = (exported_symbol_offsets[s]
|
||||
+ ssec->output_section->vma
|
||||
+ ssec->output_offset);
|
||||
int ord = pe_def_file->exports[s].ordinal;
|
||||
|
||||
bfd_put_32 (abfd, srva - image_base, (void *) (eaddresses + i));
|
||||
bfd_put_32 (abfd, srva - image_base,
|
||||
(void *) (eaddresses + ord - min_ordinal));
|
||||
if (!pe_def_file->exports[s].flag_noname)
|
||||
{
|
||||
char *ename = pe_def_file->exports[s].name;
|
||||
bfd_put_32 (abfd, ERVA (enamestr), (void *) enameptrs);
|
||||
enameptrs++;
|
||||
strcpy (enamestr, ename);
|
||||
enamestr += strlen (enamestr) + 1;
|
||||
bfd_put_16 (abfd, i, (void *) eordinals);
|
||||
enameptrs++;
|
||||
bfd_put_16 (abfd, ord - min_ordinal, (void *) eordinals);
|
||||
eordinals++;
|
||||
pe_def_file->exports[s].hint = hint++;
|
||||
}
|
||||
eordinals++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user