mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 15:18:37 +08:00
2000-12-13 Kazu Hirata <kazu@hxi.com>
* peigen.c: Fix formatting.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
2000-12-13 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
|
* peigen.c: Fix formatting.
|
||||||
|
|
||||||
2000-12-12 Jim Wilson <wilson@redhat.com>
|
2000-12-12 Jim Wilson <wilson@redhat.com>
|
||||||
|
|
||||||
* elfxx-ia64.c (get_dyn_sym_info): Cast %p argument to void *.
|
* elfxx-ia64.c (get_dyn_sym_info): Cast %p argument to void *.
|
||||||
|
342
bfd/peigen.c
342
bfd/peigen.c
@ -96,22 +96,22 @@ _bfd_pei_swap_sym_in (abfd, ext1, in1)
|
|||||||
|
|
||||||
if( ext->e.e_name[0] == 0) {
|
if( ext->e.e_name[0] == 0) {
|
||||||
in->_n._n_n._n_zeroes = 0;
|
in->_n._n_n._n_zeroes = 0;
|
||||||
in->_n._n_n._n_offset = bfd_h_get_32(abfd, (bfd_byte *) ext->e.e.e_offset);
|
in->_n._n_n._n_offset = bfd_h_get_32 (abfd, (bfd_byte *) ext->e.e.e_offset);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
memcpy(in->_n._n_name, ext->e.e_name, SYMNMLEN);
|
memcpy(in->_n._n_name, ext->e.e_name, SYMNMLEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
in->n_value = bfd_h_get_32(abfd, (bfd_byte *) ext->e_value);
|
in->n_value = bfd_h_get_32 (abfd, (bfd_byte *) ext->e_value);
|
||||||
in->n_scnum = bfd_h_get_16(abfd, (bfd_byte *) ext->e_scnum);
|
in->n_scnum = bfd_h_get_16 (abfd, (bfd_byte *) ext->e_scnum);
|
||||||
if (sizeof(ext->e_type) == 2){
|
if (sizeof (ext->e_type) == 2){
|
||||||
in->n_type = bfd_h_get_16(abfd, (bfd_byte *) ext->e_type);
|
in->n_type = bfd_h_get_16 (abfd, (bfd_byte *) ext->e_type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
in->n_type = bfd_h_get_32(abfd, (bfd_byte *) ext->e_type);
|
in->n_type = bfd_h_get_32 (abfd, (bfd_byte *) ext->e_type);
|
||||||
}
|
}
|
||||||
in->n_sclass = bfd_h_get_8(abfd, ext->e_sclass);
|
in->n_sclass = bfd_h_get_8 (abfd, ext->e_sclass);
|
||||||
in->n_numaux = bfd_h_get_8(abfd, ext->e_numaux);
|
in->n_numaux = bfd_h_get_8 (abfd, ext->e_numaux);
|
||||||
|
|
||||||
#ifndef STRICT_PE_FORMAT
|
#ifndef STRICT_PE_FORMAT
|
||||||
/* This is for Gnu-created DLLs */
|
/* This is for Gnu-created DLLs */
|
||||||
@ -196,7 +196,7 @@ _bfd_pei_swap_sym_in (abfd, ext1, in1)
|
|||||||
|
|
||||||
#ifdef coff_swap_sym_in_hook
|
#ifdef coff_swap_sym_in_hook
|
||||||
/* This won't work in peigen.c, but since it's for PPC PE, it's not
|
/* This won't work in peigen.c, but since it's for PPC PE, it's not
|
||||||
worth fixing. */
|
worth fixing. */
|
||||||
coff_swap_sym_in_hook(abfd, ext1, in1);
|
coff_swap_sym_in_hook(abfd, ext1, in1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -210,25 +210,25 @@ _bfd_pei_swap_sym_out (abfd, inp, extp)
|
|||||||
struct internal_syment *in = (struct internal_syment *)inp;
|
struct internal_syment *in = (struct internal_syment *)inp;
|
||||||
SYMENT *ext =(SYMENT *)extp;
|
SYMENT *ext =(SYMENT *)extp;
|
||||||
if(in->_n._n_name[0] == 0) {
|
if(in->_n._n_name[0] == 0) {
|
||||||
bfd_h_put_32(abfd, 0, (bfd_byte *) ext->e.e.e_zeroes);
|
bfd_h_put_32 (abfd, 0, (bfd_byte *) ext->e.e.e_zeroes);
|
||||||
bfd_h_put_32(abfd, in->_n._n_n._n_offset, (bfd_byte *) ext->e.e.e_offset);
|
bfd_h_put_32 (abfd, in->_n._n_n._n_offset, (bfd_byte *) ext->e.e.e_offset);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
memcpy(ext->e.e_name, in->_n._n_name, SYMNMLEN);
|
memcpy(ext->e.e_name, in->_n._n_name, SYMNMLEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
bfd_h_put_32(abfd, in->n_value , (bfd_byte *) ext->e_value);
|
bfd_h_put_32 (abfd, in->n_value, (bfd_byte *) ext->e_value);
|
||||||
bfd_h_put_16(abfd, in->n_scnum , (bfd_byte *) ext->e_scnum);
|
bfd_h_put_16 (abfd, in->n_scnum, (bfd_byte *) ext->e_scnum);
|
||||||
if (sizeof(ext->e_type) == 2)
|
if (sizeof (ext->e_type) == 2)
|
||||||
{
|
{
|
||||||
bfd_h_put_16(abfd, in->n_type , (bfd_byte *) ext->e_type);
|
bfd_h_put_16 (abfd, in->n_type, (bfd_byte *) ext->e_type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bfd_h_put_32(abfd, in->n_type , (bfd_byte *) ext->e_type);
|
bfd_h_put_32 (abfd, in->n_type, (bfd_byte *) ext->e_type);
|
||||||
}
|
}
|
||||||
bfd_h_put_8(abfd, in->n_sclass , ext->e_sclass);
|
bfd_h_put_8 (abfd, in->n_sclass, ext->e_sclass);
|
||||||
bfd_h_put_8(abfd, in->n_numaux , ext->e_numaux);
|
bfd_h_put_8 (abfd, in->n_numaux, ext->e_numaux);
|
||||||
|
|
||||||
return SYMESZ;
|
return SYMESZ;
|
||||||
}
|
}
|
||||||
@ -251,13 +251,12 @@ _bfd_pei_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
|||||||
if (ext->x_file.x_fname[0] == 0) {
|
if (ext->x_file.x_fname[0] == 0) {
|
||||||
in->x_file.x_n.x_zeroes = 0;
|
in->x_file.x_n.x_zeroes = 0;
|
||||||
in->x_file.x_n.x_offset =
|
in->x_file.x_n.x_offset =
|
||||||
bfd_h_get_32(abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
|
bfd_h_get_32 (abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
|
||||||
} else {
|
} else {
|
||||||
memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
|
memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
case C_STAT:
|
case C_STAT:
|
||||||
case C_LEAFSTAT:
|
case C_LEAFSTAT:
|
||||||
case C_HIDDEN:
|
case C_HIDDEN:
|
||||||
@ -276,8 +275,8 @@ _bfd_pei_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
in->x_sym.x_tagndx.l = bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_tagndx);
|
in->x_sym.x_tagndx.l = bfd_h_get_32 (abfd, (bfd_byte *) ext->x_sym.x_tagndx);
|
||||||
in->x_sym.x_tvndx = bfd_h_get_16(abfd, (bfd_byte *) ext->x_sym.x_tvndx);
|
in->x_sym.x_tvndx = bfd_h_get_16 (abfd, (bfd_byte *) ext->x_sym.x_tvndx);
|
||||||
|
|
||||||
if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
|
if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
|
||||||
{
|
{
|
||||||
@ -297,7 +296,7 @@ _bfd_pei_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ISFCN(type)) {
|
if (ISFCN(type)) {
|
||||||
in->x_sym.x_misc.x_fsize = bfd_h_get_32(abfd, (bfd_byte *) ext->x_sym.x_misc.x_fsize);
|
in->x_sym.x_misc.x_fsize = bfd_h_get_32 (abfd, (bfd_byte *) ext->x_sym.x_misc.x_fsize);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
in->x_sym.x_misc.x_lnsz.x_lnno = GET_LNSZ_LNNO(abfd, ext);
|
in->x_sym.x_misc.x_lnsz.x_lnno = GET_LNSZ_LNNO(abfd, ext);
|
||||||
@ -322,8 +321,8 @@ _bfd_pei_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
|||||||
switch (class) {
|
switch (class) {
|
||||||
case C_FILE:
|
case C_FILE:
|
||||||
if (in->x_file.x_fname[0] == 0) {
|
if (in->x_file.x_fname[0] == 0) {
|
||||||
bfd_h_put_32(abfd, 0, (bfd_byte *) ext->x_file.x_n.x_zeroes);
|
bfd_h_put_32 (abfd, 0, (bfd_byte *) ext->x_file.x_n.x_zeroes);
|
||||||
bfd_h_put_32(abfd,
|
bfd_h_put_32 (abfd,
|
||||||
in->x_file.x_n.x_offset,
|
in->x_file.x_n.x_offset,
|
||||||
(bfd_byte *) ext->x_file.x_n.x_offset);
|
(bfd_byte *) ext->x_file.x_n.x_offset);
|
||||||
}
|
}
|
||||||
@ -332,7 +331,6 @@ _bfd_pei_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
|||||||
}
|
}
|
||||||
return AUXESZ;
|
return AUXESZ;
|
||||||
|
|
||||||
|
|
||||||
case C_STAT:
|
case C_STAT:
|
||||||
case C_LEAFSTAT:
|
case C_LEAFSTAT:
|
||||||
case C_HIDDEN:
|
case C_HIDDEN:
|
||||||
@ -351,13 +349,13 @@ _bfd_pei_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bfd_h_put_32(abfd, in->x_sym.x_tagndx.l, (bfd_byte *) ext->x_sym.x_tagndx);
|
bfd_h_put_32 (abfd, in->x_sym.x_tagndx.l, (bfd_byte *) ext->x_sym.x_tagndx);
|
||||||
bfd_h_put_16(abfd, in->x_sym.x_tvndx , (bfd_byte *) ext->x_sym.x_tvndx);
|
bfd_h_put_16 (abfd, in->x_sym.x_tvndx, (bfd_byte *) ext->x_sym.x_tvndx);
|
||||||
|
|
||||||
if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
|
if (class == C_BLOCK || class == C_FCN || ISFCN (type) || ISTAG (class))
|
||||||
{
|
{
|
||||||
PUT_FCN_LNNOPTR(abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr, ext);
|
PUT_FCN_LNNOPTR(abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr, ext);
|
||||||
PUT_FCN_ENDNDX(abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l, ext);
|
PUT_FCN_ENDNDX(abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l, ext);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -392,7 +390,7 @@ _bfd_pei_swap_lineno_in (abfd, ext1, in1)
|
|||||||
LINENO *ext = (LINENO *)ext1;
|
LINENO *ext = (LINENO *)ext1;
|
||||||
struct internal_lineno *in = (struct internal_lineno *)in1;
|
struct internal_lineno *in = (struct internal_lineno *)in1;
|
||||||
|
|
||||||
in->l_addr.l_symndx = bfd_h_get_32(abfd, (bfd_byte *) ext->l_addr.l_symndx);
|
in->l_addr.l_symndx = bfd_h_get_32 (abfd, (bfd_byte *) ext->l_addr.l_symndx);
|
||||||
in->l_lnno = GET_LINENO_LNNO(abfd, ext);
|
in->l_lnno = GET_LINENO_LNNO(abfd, ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -404,7 +402,7 @@ _bfd_pei_swap_lineno_out (abfd, inp, outp)
|
|||||||
{
|
{
|
||||||
struct internal_lineno *in = (struct internal_lineno *)inp;
|
struct internal_lineno *in = (struct internal_lineno *)inp;
|
||||||
struct external_lineno *ext = (struct external_lineno *)outp;
|
struct external_lineno *ext = (struct external_lineno *)outp;
|
||||||
bfd_h_put_32(abfd, in->l_addr.l_symndx, (bfd_byte *)
|
bfd_h_put_32 (abfd, in->l_addr.l_symndx, (bfd_byte *)
|
||||||
ext->l_addr.l_symndx);
|
ext->l_addr.l_symndx);
|
||||||
|
|
||||||
PUT_LINENO_LNNO (abfd, in->l_lnno, ext);
|
PUT_LINENO_LNNO (abfd, in->l_lnno, ext);
|
||||||
@ -418,12 +416,12 @@ _bfd_pei_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
|
|||||||
PTR aouthdr_int1;
|
PTR aouthdr_int1;
|
||||||
{
|
{
|
||||||
struct internal_extra_pe_aouthdr *a;
|
struct internal_extra_pe_aouthdr *a;
|
||||||
PEAOUTHDR *src = (PEAOUTHDR *)(aouthdr_ext1);
|
PEAOUTHDR *src = (PEAOUTHDR *) (aouthdr_ext1);
|
||||||
AOUTHDR *aouthdr_ext = (AOUTHDR *) aouthdr_ext1;
|
AOUTHDR *aouthdr_ext = (AOUTHDR *) aouthdr_ext1;
|
||||||
struct internal_aouthdr *aouthdr_int = (struct internal_aouthdr *)aouthdr_int1;
|
struct internal_aouthdr *aouthdr_int = (struct internal_aouthdr *)aouthdr_int1;
|
||||||
|
|
||||||
aouthdr_int->magic = bfd_h_get_16(abfd, (bfd_byte *) aouthdr_ext->magic);
|
aouthdr_int->magic = bfd_h_get_16 (abfd, (bfd_byte *) aouthdr_ext->magic);
|
||||||
aouthdr_int->vstamp = bfd_h_get_16(abfd, (bfd_byte *) aouthdr_ext->vstamp);
|
aouthdr_int->vstamp = bfd_h_get_16 (abfd, (bfd_byte *) aouthdr_ext->vstamp);
|
||||||
aouthdr_int->tsize =
|
aouthdr_int->tsize =
|
||||||
GET_AOUTHDR_TSIZE (abfd, (bfd_byte *) aouthdr_ext->tsize);
|
GET_AOUTHDR_TSIZE (abfd, (bfd_byte *) aouthdr_ext->tsize);
|
||||||
aouthdr_int->dsize =
|
aouthdr_int->dsize =
|
||||||
@ -490,7 +488,7 @@ _bfd_pei_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
|
|||||||
aouthdr_int->entry &= 0xffffffff;
|
aouthdr_int->entry &= 0xffffffff;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (aouthdr_int->tsize)
|
if (aouthdr_int->tsize)
|
||||||
{
|
{
|
||||||
aouthdr_int->text_start += a->ImageBase;
|
aouthdr_int->text_start += a->ImageBase;
|
||||||
#ifndef COFF_WITH_PEP64
|
#ifndef COFF_WITH_PEP64
|
||||||
@ -499,7 +497,7 @@ _bfd_pei_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
|
|||||||
}
|
}
|
||||||
#ifndef COFF_WITH_PEP64
|
#ifndef COFF_WITH_PEP64
|
||||||
/* PE32+ does not have data_start member! */
|
/* PE32+ does not have data_start member! */
|
||||||
if (aouthdr_int->dsize)
|
if (aouthdr_int->dsize)
|
||||||
{
|
{
|
||||||
aouthdr_int->data_start += a->ImageBase;
|
aouthdr_int->data_start += a->ImageBase;
|
||||||
aouthdr_int->data_start &= 0xffffffff;
|
aouthdr_int->data_start &= 0xffffffff;
|
||||||
@ -579,17 +577,17 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
|
|||||||
fa = extra->FileAlignment;
|
fa = extra->FileAlignment;
|
||||||
ib = extra->ImageBase;
|
ib = extra->ImageBase;
|
||||||
|
|
||||||
if (aouthdr_in->tsize)
|
if (aouthdr_in->tsize)
|
||||||
{
|
{
|
||||||
aouthdr_in->text_start -= ib;
|
aouthdr_in->text_start -= ib;
|
||||||
aouthdr_in->text_start &= 0xffffffff;
|
aouthdr_in->text_start &= 0xffffffff;
|
||||||
}
|
}
|
||||||
if (aouthdr_in->dsize)
|
if (aouthdr_in->dsize)
|
||||||
{
|
{
|
||||||
aouthdr_in->data_start -= ib;
|
aouthdr_in->data_start -= ib;
|
||||||
aouthdr_in->data_start &= 0xffffffff;
|
aouthdr_in->data_start &= 0xffffffff;
|
||||||
}
|
}
|
||||||
if (aouthdr_in->entry)
|
if (aouthdr_in->entry)
|
||||||
{
|
{
|
||||||
aouthdr_in->entry -= ib;
|
aouthdr_in->entry -= ib;
|
||||||
aouthdr_in->entry &= 0xffffffff;
|
aouthdr_in->entry &= 0xffffffff;
|
||||||
@ -602,10 +600,9 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
|
|||||||
|
|
||||||
aouthdr_in->bsize = FA (aouthdr_in->bsize);
|
aouthdr_in->bsize = FA (aouthdr_in->bsize);
|
||||||
|
|
||||||
|
|
||||||
extra->NumberOfRvaAndSizes = IMAGE_NUMBEROF_DIRECTORY_ENTRIES;
|
extra->NumberOfRvaAndSizes = IMAGE_NUMBEROF_DIRECTORY_ENTRIES;
|
||||||
|
|
||||||
/* first null out all data directory entries .. */
|
/* first null out all data directory entries .. */
|
||||||
memset (extra->DataDirectory, sizeof (extra->DataDirectory), 0);
|
memset (extra->DataDirectory, sizeof (extra->DataDirectory), 0);
|
||||||
|
|
||||||
add_data_entry (abfd, extra, 0, ".edata", ib);
|
add_data_entry (abfd, extra, 0, ".edata", ib);
|
||||||
@ -616,9 +613,9 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
|
|||||||
|
|
||||||
/* However, until other .idata fixes are made (pending patch), the
|
/* However, until other .idata fixes are made (pending patch), the
|
||||||
entry for .idata is needed for backwards compatability. FIXME. */
|
entry for .idata is needed for backwards compatability. FIXME. */
|
||||||
add_data_entry (abfd, extra, 1, ".idata" , ib);
|
add_data_entry (abfd, extra, 1, ".idata", ib);
|
||||||
|
|
||||||
add_data_entry (abfd, extra, 2, ".rsrc" , ib);
|
add_data_entry (abfd, extra, 2, ".rsrc", ib);
|
||||||
|
|
||||||
add_data_entry (abfd, extra, 3, ".pdata", ib);
|
add_data_entry (abfd, extra, 3, ".pdata", ib);
|
||||||
|
|
||||||
@ -658,7 +655,7 @@ _bfd_pei_swap_aouthdr_out (abfd, in, out)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extra->SizeOfHeaders = abfd->sections->filepos;
|
extra->SizeOfHeaders = abfd->sections->filepos;
|
||||||
bfd_h_put_16(abfd, aouthdr_in->magic, (bfd_byte *) aouthdr_out->standard.magic);
|
bfd_h_put_16 (abfd, aouthdr_in->magic, (bfd_byte *) aouthdr_out->standard.magic);
|
||||||
|
|
||||||
#define LINKER_VERSION 256 /* That is, 2.56 */
|
#define LINKER_VERSION 256 /* That is, 2.56 */
|
||||||
|
|
||||||
@ -799,69 +796,64 @@ _bfd_pei_only_swap_filehdr_out (abfd, in, out)
|
|||||||
filehdr_in->pe.dos_message[15] = 0x0;
|
filehdr_in->pe.dos_message[15] = 0x0;
|
||||||
filehdr_in->pe.nt_signature = NT_SIGNATURE;
|
filehdr_in->pe.nt_signature = NT_SIGNATURE;
|
||||||
|
|
||||||
|
bfd_h_put_16 (abfd, filehdr_in->f_magic, (bfd_byte *) filehdr_out->f_magic);
|
||||||
|
bfd_h_put_16 (abfd, filehdr_in->f_nscns, (bfd_byte *) filehdr_out->f_nscns);
|
||||||
|
|
||||||
|
bfd_h_put_32 (abfd, time (0), (bfd_byte *) filehdr_out->f_timdat);
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_magic, (bfd_byte *) filehdr_out->f_magic);
|
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_nscns, (bfd_byte *) filehdr_out->f_nscns);
|
|
||||||
|
|
||||||
bfd_h_put_32(abfd, time (0), (bfd_byte *) filehdr_out->f_timdat);
|
|
||||||
PUT_FILEHDR_SYMPTR (abfd, (bfd_vma) filehdr_in->f_symptr,
|
PUT_FILEHDR_SYMPTR (abfd, (bfd_vma) filehdr_in->f_symptr,
|
||||||
(bfd_byte *) filehdr_out->f_symptr);
|
(bfd_byte *) filehdr_out->f_symptr);
|
||||||
bfd_h_put_32(abfd, filehdr_in->f_nsyms, (bfd_byte *) filehdr_out->f_nsyms);
|
bfd_h_put_32 (abfd, filehdr_in->f_nsyms, (bfd_byte *) filehdr_out->f_nsyms);
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_opthdr, (bfd_byte *) filehdr_out->f_opthdr);
|
bfd_h_put_16 (abfd, filehdr_in->f_opthdr, (bfd_byte *) filehdr_out->f_opthdr);
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_flags, (bfd_byte *) filehdr_out->f_flags);
|
bfd_h_put_16 (abfd, filehdr_in->f_flags, (bfd_byte *) filehdr_out->f_flags);
|
||||||
|
|
||||||
/* put in extra dos header stuff. This data remains essentially
|
/* put in extra dos header stuff. This data remains essentially
|
||||||
constant, it just has to be tacked on to the beginning of all exes
|
constant, it just has to be tacked on to the beginning of all exes
|
||||||
for NT */
|
for NT */
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_magic, (bfd_byte *) filehdr_out->e_magic);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_magic, (bfd_byte *) filehdr_out->e_magic);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_cblp, (bfd_byte *) filehdr_out->e_cblp);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_cblp, (bfd_byte *) filehdr_out->e_cblp);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_cp, (bfd_byte *) filehdr_out->e_cp);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_cp, (bfd_byte *) filehdr_out->e_cp);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_crlc, (bfd_byte *) filehdr_out->e_crlc);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_crlc, (bfd_byte *) filehdr_out->e_crlc);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_cparhdr,
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_cparhdr,
|
||||||
(bfd_byte *) filehdr_out->e_cparhdr);
|
(bfd_byte *) filehdr_out->e_cparhdr);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_minalloc,
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_minalloc,
|
||||||
(bfd_byte *) filehdr_out->e_minalloc);
|
(bfd_byte *) filehdr_out->e_minalloc);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_maxalloc,
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_maxalloc,
|
||||||
(bfd_byte *) filehdr_out->e_maxalloc);
|
(bfd_byte *) filehdr_out->e_maxalloc);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_ss, (bfd_byte *) filehdr_out->e_ss);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_ss, (bfd_byte *) filehdr_out->e_ss);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_sp, (bfd_byte *) filehdr_out->e_sp);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_sp, (bfd_byte *) filehdr_out->e_sp);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_csum, (bfd_byte *) filehdr_out->e_csum);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_csum, (bfd_byte *) filehdr_out->e_csum);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_ip, (bfd_byte *) filehdr_out->e_ip);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_ip, (bfd_byte *) filehdr_out->e_ip);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_cs, (bfd_byte *) filehdr_out->e_cs);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_cs, (bfd_byte *) filehdr_out->e_cs);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_lfarlc, (bfd_byte *) filehdr_out->e_lfarlc);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_lfarlc, (bfd_byte *) filehdr_out->e_lfarlc);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_ovno, (bfd_byte *) filehdr_out->e_ovno);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_ovno, (bfd_byte *) filehdr_out->e_ovno);
|
||||||
{
|
{
|
||||||
int idx;
|
int idx;
|
||||||
for (idx=0; idx < 4; idx++)
|
for (idx=0; idx < 4; idx++)
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_res[idx],
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_res[idx],
|
||||||
(bfd_byte *) filehdr_out->e_res[idx]);
|
(bfd_byte *) filehdr_out->e_res[idx]);
|
||||||
}
|
}
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_oemid, (bfd_byte *) filehdr_out->e_oemid);
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_oemid, (bfd_byte *) filehdr_out->e_oemid);
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_oeminfo,
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_oeminfo,
|
||||||
(bfd_byte *) filehdr_out->e_oeminfo);
|
(bfd_byte *) filehdr_out->e_oeminfo);
|
||||||
{
|
{
|
||||||
int idx;
|
int idx;
|
||||||
for (idx=0; idx < 10; idx++)
|
for (idx=0; idx < 10; idx++)
|
||||||
bfd_h_put_16(abfd, filehdr_in->pe.e_res2[idx],
|
bfd_h_put_16 (abfd, filehdr_in->pe.e_res2[idx],
|
||||||
(bfd_byte *) filehdr_out->e_res2[idx]);
|
(bfd_byte *) filehdr_out->e_res2[idx]);
|
||||||
}
|
}
|
||||||
bfd_h_put_32(abfd, filehdr_in->pe.e_lfanew, (bfd_byte *) filehdr_out->e_lfanew);
|
bfd_h_put_32 (abfd, filehdr_in->pe.e_lfanew, (bfd_byte *) filehdr_out->e_lfanew);
|
||||||
|
|
||||||
{
|
{
|
||||||
int idx;
|
int idx;
|
||||||
for (idx=0; idx < 16; idx++)
|
for (idx=0; idx < 16; idx++)
|
||||||
bfd_h_put_32(abfd, filehdr_in->pe.dos_message[idx],
|
bfd_h_put_32 (abfd, filehdr_in->pe.dos_message[idx],
|
||||||
(bfd_byte *) filehdr_out->dos_message[idx]);
|
(bfd_byte *) filehdr_out->dos_message[idx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* also put in the NT signature */
|
/* also put in the NT signature */
|
||||||
bfd_h_put_32(abfd, filehdr_in->pe.nt_signature,
|
bfd_h_put_32 (abfd, filehdr_in->pe.nt_signature,
|
||||||
(bfd_byte *) filehdr_out->nt_signature);
|
(bfd_byte *) filehdr_out->nt_signature);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return FILHSZ;
|
return FILHSZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -874,14 +866,14 @@ _bfd_pe_only_swap_filehdr_out (abfd, in, out)
|
|||||||
struct internal_filehdr *filehdr_in = (struct internal_filehdr *)in;
|
struct internal_filehdr *filehdr_in = (struct internal_filehdr *)in;
|
||||||
FILHDR *filehdr_out = (FILHDR *)out;
|
FILHDR *filehdr_out = (FILHDR *)out;
|
||||||
|
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_magic, (bfd_byte *) filehdr_out->f_magic);
|
bfd_h_put_16 (abfd, filehdr_in->f_magic, (bfd_byte *) filehdr_out->f_magic);
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_nscns, (bfd_byte *) filehdr_out->f_nscns);
|
bfd_h_put_16 (abfd, filehdr_in->f_nscns, (bfd_byte *) filehdr_out->f_nscns);
|
||||||
bfd_h_put_32(abfd, filehdr_in->f_timdat, (bfd_byte *) filehdr_out->f_timdat);
|
bfd_h_put_32 (abfd, filehdr_in->f_timdat, (bfd_byte *) filehdr_out->f_timdat);
|
||||||
PUT_FILEHDR_SYMPTR (abfd, (bfd_vma) filehdr_in->f_symptr,
|
PUT_FILEHDR_SYMPTR (abfd, (bfd_vma) filehdr_in->f_symptr,
|
||||||
(bfd_byte *) filehdr_out->f_symptr);
|
(bfd_byte *) filehdr_out->f_symptr);
|
||||||
bfd_h_put_32(abfd, filehdr_in->f_nsyms, (bfd_byte *) filehdr_out->f_nsyms);
|
bfd_h_put_32 (abfd, filehdr_in->f_nsyms, (bfd_byte *) filehdr_out->f_nsyms);
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_opthdr, (bfd_byte *) filehdr_out->f_opthdr);
|
bfd_h_put_16 (abfd, filehdr_in->f_opthdr, (bfd_byte *) filehdr_out->f_opthdr);
|
||||||
bfd_h_put_16(abfd, filehdr_in->f_flags, (bfd_byte *) filehdr_out->f_flags);
|
bfd_h_put_16 (abfd, filehdr_in->f_flags, (bfd_byte *) filehdr_out->f_flags);
|
||||||
|
|
||||||
return FILHSZ;
|
return FILHSZ;
|
||||||
}
|
}
|
||||||
@ -898,10 +890,10 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
|
|||||||
bfd_vma ps;
|
bfd_vma ps;
|
||||||
bfd_vma ss;
|
bfd_vma ss;
|
||||||
|
|
||||||
memcpy(scnhdr_ext->s_name, scnhdr_int->s_name, sizeof(scnhdr_int->s_name));
|
memcpy(scnhdr_ext->s_name, scnhdr_int->s_name, sizeof (scnhdr_int->s_name));
|
||||||
|
|
||||||
PUT_SCNHDR_VADDR (abfd,
|
PUT_SCNHDR_VADDR (abfd,
|
||||||
((scnhdr_int->s_vaddr
|
((scnhdr_int->s_vaddr
|
||||||
- pe_data(abfd)->pe_opthdr.ImageBase)
|
- pe_data(abfd)->pe_opthdr.ImageBase)
|
||||||
& 0xffffffff),
|
& 0xffffffff),
|
||||||
(bfd_byte *) scnhdr_ext->s_vaddr);
|
(bfd_byte *) scnhdr_ext->s_vaddr);
|
||||||
@ -924,7 +916,6 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
|
|||||||
PUT_SCNHDR_SIZE (abfd, ss,
|
PUT_SCNHDR_SIZE (abfd, ss,
|
||||||
(bfd_byte *) scnhdr_ext->s_size);
|
(bfd_byte *) scnhdr_ext->s_size);
|
||||||
|
|
||||||
|
|
||||||
/* s_paddr in PE is really the virtual size. */
|
/* s_paddr in PE is really the virtual size. */
|
||||||
PUT_SCNHDR_PADDR (abfd, ps, (bfd_byte *) scnhdr_ext->s_paddr);
|
PUT_SCNHDR_PADDR (abfd, ps, (bfd_byte *) scnhdr_ext->s_paddr);
|
||||||
|
|
||||||
@ -951,7 +942,7 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
|
|||||||
|
|
||||||
{
|
{
|
||||||
int flags = scnhdr_int->s_flags;
|
int flags = scnhdr_int->s_flags;
|
||||||
bfd_h_put_32(abfd, flags, (bfd_byte *) scnhdr_ext->s_flags);
|
bfd_h_put_32 (abfd, flags, (bfd_byte *) scnhdr_ext->s_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (coff_data (abfd)->link_info
|
if (coff_data (abfd)->link_info
|
||||||
@ -994,7 +985,7 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
|
|||||||
/* PE can deal with large #s of relocs, but not here */
|
/* PE can deal with large #s of relocs, but not here */
|
||||||
bfd_h_put_16 (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
|
bfd_h_put_16 (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
|
||||||
scnhdr_int->s_flags |= IMAGE_SCN_LNK_NRELOC_OVFL;
|
scnhdr_int->s_flags |= IMAGE_SCN_LNK_NRELOC_OVFL;
|
||||||
bfd_h_put_32(abfd, scnhdr_int->s_flags,
|
bfd_h_put_32 (abfd, scnhdr_int->s_flags,
|
||||||
(bfd_byte *) scnhdr_ext->s_flags);
|
(bfd_byte *) scnhdr_ext->s_flags);
|
||||||
#if 0
|
#if 0
|
||||||
(*_bfd_error_handler) (_("%s: reloc overflow 1: 0x%lx > 0xffff"),
|
(*_bfd_error_handler) (_("%s: reloc overflow 1: 0x%lx > 0xffff"),
|
||||||
@ -1011,22 +1002,22 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
|
|||||||
|
|
||||||
static char * dir_names[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] =
|
static char * dir_names[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] =
|
||||||
{
|
{
|
||||||
N_ ("Export Directory [.edata (or where ever we found it)]"),
|
N_("Export Directory [.edata (or where ever we found it)]"),
|
||||||
N_ ("Import Directory [parts of .idata]"),
|
N_("Import Directory [parts of .idata]"),
|
||||||
N_ ("Resource Directory [.rsrc]"),
|
N_("Resource Directory [.rsrc]"),
|
||||||
N_ ("Exception Directory [.pdata]"),
|
N_("Exception Directory [.pdata]"),
|
||||||
N_ ("Security Directory"),
|
N_("Security Directory"),
|
||||||
N_ ("Base Relocation Directory [.reloc]"),
|
N_("Base Relocation Directory [.reloc]"),
|
||||||
N_ ("Debug Directory"),
|
N_("Debug Directory"),
|
||||||
N_ ("Description Directory"),
|
N_("Description Directory"),
|
||||||
N_ ("Special Directory"),
|
N_("Special Directory"),
|
||||||
N_ ("Thread Storage Directory [.tls]"),
|
N_("Thread Storage Directory [.tls]"),
|
||||||
N_ ("Load Configuration Directory"),
|
N_("Load Configuration Directory"),
|
||||||
N_ ("Bound Import Directory"),
|
N_("Bound Import Directory"),
|
||||||
N_ ("Import Address Table Directory"),
|
N_("Import Address Table Directory"),
|
||||||
N_ ("Delay Import Directory"),
|
N_("Delay Import Directory"),
|
||||||
N_ ("Reserved"),
|
N_("Reserved"),
|
||||||
N_ ("Reserved")
|
N_("Reserved")
|
||||||
};
|
};
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
@ -1133,7 +1124,7 @@ pe_print_idata (abfd, vfile)
|
|||||||
loadable_toc_address = bfd_get_32 (abfd, data + offset + 4);
|
loadable_toc_address = bfd_get_32 (abfd, data + offset + 4);
|
||||||
toc_address = loadable_toc_address - 32768;
|
toc_address = loadable_toc_address - 32768;
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\nFunction descriptor located at the start address: %04lx\n"),
|
_("\nFunction descriptor located at the start address: %04lx\n"),
|
||||||
(unsigned long int) (abfd->start_address));
|
(unsigned long int) (abfd->start_address));
|
||||||
fprintf (file,
|
fprintf (file,
|
||||||
@ -1142,17 +1133,17 @@ pe_print_idata (abfd, vfile)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\nNo reldata section! Function descriptor not decoded.\n"));
|
_("\nNo reldata section! Function descriptor not decoded.\n"));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\nThe Import Tables (interpreted %s section contents)\n"),
|
_("\nThe Import Tables (interpreted %s section contents)\n"),
|
||||||
section->name);
|
section->name);
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_(" vma: Hint Time Forward DLL First\n"));
|
_(" vma: Hint Time Forward DLL First\n"));
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_(" Table Stamp Chain Name Thunk\n"));
|
_(" Table Stamp Chain Name Thunk\n"));
|
||||||
|
|
||||||
data = (bfd_byte *) bfd_malloc (dataoff + datasize);
|
data = (bfd_byte *) bfd_malloc (dataoff + datasize);
|
||||||
@ -1203,7 +1194,7 @@ pe_print_idata (abfd, vfile)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
dll = (char *) data + dll_name - adj;
|
dll = (char *) data + dll_name - adj;
|
||||||
fprintf(file, _("\n\tDLL Name: %s\n"), dll);
|
fprintf (file, _("\n\tDLL Name: %s\n"), dll);
|
||||||
|
|
||||||
if (hint_addr != 0)
|
if (hint_addr != 0)
|
||||||
{
|
{
|
||||||
@ -1270,19 +1261,19 @@ pe_print_idata (abfd, vfile)
|
|||||||
{
|
{
|
||||||
fprintf (file,
|
fprintf (file,
|
||||||
_("\tThe Import Address Table (difference found)\n"));
|
_("\tThe Import Address Table (difference found)\n"));
|
||||||
fprintf(file, _("\tvma: Hint/Ord Member-Name\n"));
|
fprintf (file, _("\tvma: Hint/Ord Member-Name\n"));
|
||||||
differ = 1;
|
differ = 1;
|
||||||
}
|
}
|
||||||
if (iat_member == 0)
|
if (iat_member == 0)
|
||||||
{
|
{
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\t>>> Ran out of IAT members!\n"));
|
_("\t>>> Ran out of IAT members!\n"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ordinal = bfd_get_16 (abfd, data + iat_member - adj);
|
ordinal = bfd_get_16 (abfd, data + iat_member - adj);
|
||||||
member_name = (char *) data + iat_member - adj + 2;
|
member_name = (char *) data + iat_member - adj + 2;
|
||||||
fprintf(file, "\t%04lx\t %4d %s\n",
|
fprintf (file, "\t%04lx\t %4d %s\n",
|
||||||
(unsigned long) iat_member,
|
(unsigned long) iat_member,
|
||||||
ordinal,
|
ordinal,
|
||||||
member_name);
|
member_name);
|
||||||
@ -1294,12 +1285,12 @@ pe_print_idata (abfd, vfile)
|
|||||||
}
|
}
|
||||||
if (differ == 0)
|
if (differ == 0)
|
||||||
{
|
{
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\tThe Import Address Table is identical\n"));
|
_("\tThe Import Address Table is identical\n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(file, "\n");
|
fprintf (file, "\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1389,32 +1380,32 @@ pe_print_edata (abfd, vfile)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Go get Export Directory Table */
|
/* Go get Export Directory Table */
|
||||||
edt.export_flags = bfd_get_32(abfd, data+0);
|
edt.export_flags = bfd_get_32 (abfd, data+0);
|
||||||
edt.time_stamp = bfd_get_32(abfd, data+4);
|
edt.time_stamp = bfd_get_32 (abfd, data+4);
|
||||||
edt.major_ver = bfd_get_16(abfd, data+8);
|
edt.major_ver = bfd_get_16 (abfd, data+8);
|
||||||
edt.minor_ver = bfd_get_16(abfd, data+10);
|
edt.minor_ver = bfd_get_16 (abfd, data+10);
|
||||||
edt.name = bfd_get_32(abfd, data+12);
|
edt.name = bfd_get_32 (abfd, data+12);
|
||||||
edt.base = bfd_get_32(abfd, data+16);
|
edt.base = bfd_get_32 (abfd, data+16);
|
||||||
edt.num_functions = bfd_get_32(abfd, data+20);
|
edt.num_functions = bfd_get_32 (abfd, data+20);
|
||||||
edt.num_names = bfd_get_32(abfd, data+24);
|
edt.num_names = bfd_get_32 (abfd, data+24);
|
||||||
edt.eat_addr = bfd_get_32(abfd, data+28);
|
edt.eat_addr = bfd_get_32 (abfd, data+28);
|
||||||
edt.npt_addr = bfd_get_32(abfd, data+32);
|
edt.npt_addr = bfd_get_32 (abfd, data+32);
|
||||||
edt.ot_addr = bfd_get_32(abfd, data+36);
|
edt.ot_addr = bfd_get_32 (abfd, data+36);
|
||||||
|
|
||||||
adj = section->vma - extra->ImageBase + dataoff;
|
adj = section->vma - extra->ImageBase + dataoff;
|
||||||
|
|
||||||
/* Dump the EDT first first */
|
/* Dump the EDT first first */
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\nThe Export Tables (interpreted %s section contents)\n\n"),
|
_("\nThe Export Tables (interpreted %s section contents)\n\n"),
|
||||||
section->name);
|
section->name);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("Export Flags \t\t\t%lx\n"), (unsigned long) edt.export_flags);
|
_("Export Flags \t\t\t%lx\n"), (unsigned long) edt.export_flags);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("Time/Date stamp \t\t%lx\n"), (unsigned long) edt.time_stamp);
|
_("Time/Date stamp \t\t%lx\n"), (unsigned long) edt.time_stamp);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("Major/Minor \t\t\t%d/%d\n"), edt.major_ver, edt.minor_ver);
|
_("Major/Minor \t\t\t%d/%d\n"), edt.major_ver, edt.minor_ver);
|
||||||
|
|
||||||
fprintf (file,
|
fprintf (file,
|
||||||
@ -1423,20 +1414,20 @@ pe_print_edata (abfd, vfile)
|
|||||||
fprintf (file,
|
fprintf (file,
|
||||||
" %s\n", data + edt.name - adj);
|
" %s\n", data + edt.name - adj);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("Ordinal Base \t\t\t%ld\n"), edt.base);
|
_("Ordinal Base \t\t\t%ld\n"), edt.base);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("Number in:\n"));
|
_("Number in:\n"));
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\tExport Address Table \t\t%08lx\n"),
|
_("\tExport Address Table \t\t%08lx\n"),
|
||||||
edt.num_functions);
|
edt.num_functions);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\t[Name Pointer/Ordinal] Table\t%08lx\n"), edt.num_names);
|
_("\t[Name Pointer/Ordinal] Table\t%08lx\n"), edt.num_names);
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("Table Addresses\n"));
|
_("Table Addresses\n"));
|
||||||
|
|
||||||
fprintf (file,
|
fprintf (file,
|
||||||
@ -1454,7 +1445,6 @@ pe_print_edata (abfd, vfile)
|
|||||||
fprintf_vma (file, edt.ot_addr);
|
fprintf_vma (file, edt.ot_addr);
|
||||||
fprintf (file, "\n");
|
fprintf (file, "\n");
|
||||||
|
|
||||||
|
|
||||||
/* The next table to find is the Export Address Table. It's basically
|
/* The next table to find is the Export Address Table. It's basically
|
||||||
a list of pointers that either locate a function in this dll, or
|
a list of pointers that either locate a function in this dll, or
|
||||||
forward the call to another dll. Something like:
|
forward the call to another dll. Something like:
|
||||||
@ -1465,7 +1455,7 @@ pe_print_edata (abfd, vfile)
|
|||||||
} export_address_table_entry;
|
} export_address_table_entry;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\nExport Address Table -- Ordinal Base %ld\n"),
|
_("\nExport Address Table -- Ordinal Base %ld\n"),
|
||||||
edt.base);
|
edt.base);
|
||||||
|
|
||||||
@ -1502,23 +1492,23 @@ pe_print_edata (abfd, vfile)
|
|||||||
|
|
||||||
/* The Export Name Pointer Table is paired with the Export Ordinal Table */
|
/* The Export Name Pointer Table is paired with the Export Ordinal Table */
|
||||||
/* Dump them in parallel for clarity */
|
/* Dump them in parallel for clarity */
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_("\n[Ordinal/Name Pointer] Table\n"));
|
_("\n[Ordinal/Name Pointer] Table\n"));
|
||||||
|
|
||||||
for (i = 0; i < edt.num_names; ++i)
|
for (i = 0; i < edt.num_names; ++i)
|
||||||
{
|
{
|
||||||
bfd_vma name_ptr = bfd_get_32(abfd,
|
bfd_vma name_ptr = bfd_get_32 (abfd,
|
||||||
data +
|
data +
|
||||||
edt.npt_addr
|
edt.npt_addr
|
||||||
+ (i*4) - adj);
|
+ (i*4) - adj);
|
||||||
|
|
||||||
char *name = (char *) data + name_ptr - adj;
|
char *name = (char *) data + name_ptr - adj;
|
||||||
|
|
||||||
bfd_vma ord = bfd_get_16(abfd,
|
bfd_vma ord = bfd_get_16 (abfd,
|
||||||
data +
|
data +
|
||||||
edt.ot_addr
|
edt.ot_addr
|
||||||
+ (i*2) - adj);
|
+ (i*2) - adj);
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
"\t[%4ld] %s\n", (long) ord, name);
|
"\t[%4ld] %s\n", (long) ord, name);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1563,7 +1553,7 @@ pe_print_pdata (abfd, vfile)
|
|||||||
fprintf (file,
|
fprintf (file,
|
||||||
_("\nThe Function Table (interpreted .pdata section contents)\n"));
|
_("\nThe Function Table (interpreted .pdata section contents)\n"));
|
||||||
#ifdef COFF_WITH_PEP64
|
#ifdef COFF_WITH_PEP64
|
||||||
fprintf(file,
|
fprintf (file,
|
||||||
_(" vma:\t\t\tBegin Address End Address Unwind Info\n"));
|
_(" vma:\t\t\tBegin Address End Address Unwind Info\n"));
|
||||||
#else
|
#else
|
||||||
fprintf (file,
|
fprintf (file,
|
||||||
@ -1604,7 +1594,7 @@ pe_print_pdata (abfd, vfile)
|
|||||||
eh_handler = GET_PDATA_ENTRY(abfd, data+i+8);
|
eh_handler = GET_PDATA_ENTRY(abfd, data+i+8);
|
||||||
eh_data = GET_PDATA_ENTRY(abfd, data+i+12);
|
eh_data = GET_PDATA_ENTRY(abfd, data+i+12);
|
||||||
prolog_end_addr = GET_PDATA_ENTRY(abfd, data+i+16);
|
prolog_end_addr = GET_PDATA_ENTRY(abfd, data+i+16);
|
||||||
|
|
||||||
if (begin_addr == 0 && end_addr == 0 && eh_handler == 0
|
if (begin_addr == 0 && end_addr == 0 && eh_handler == 0
|
||||||
&& eh_data == 0 && prolog_end_addr == 0)
|
&& eh_data == 0 && prolog_end_addr == 0)
|
||||||
{
|
{
|
||||||
@ -1642,20 +1632,20 @@ pe_print_pdata (abfd, vfile)
|
|||||||
switch (eh_data)
|
switch (eh_data)
|
||||||
{
|
{
|
||||||
case 0x01:
|
case 0x01:
|
||||||
fprintf(file, _(" Register save millicode"));
|
fprintf (file, _(" Register save millicode"));
|
||||||
break;
|
break;
|
||||||
case 0x02:
|
case 0x02:
|
||||||
fprintf(file, _(" Register restore millicode"));
|
fprintf (file, _(" Register restore millicode"));
|
||||||
break;
|
break;
|
||||||
case 0x03:
|
case 0x03:
|
||||||
fprintf(file, _(" Glue code sequence"));
|
fprintf (file, _(" Glue code sequence"));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
fprintf(file, "\n");
|
fprintf (file, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
free (data);
|
free (data);
|
||||||
@ -1725,8 +1715,8 @@ pe_print_reloc (abfd, vfile)
|
|||||||
/* The .reloc section is a sequence of blocks, with a header consisting
|
/* The .reloc section is a sequence of blocks, with a header consisting
|
||||||
of two 32 bit quantities, followed by a number of 16 bit entries */
|
of two 32 bit quantities, followed by a number of 16 bit entries */
|
||||||
|
|
||||||
virtual_address = bfd_get_32(abfd, data+i);
|
virtual_address = bfd_get_32 (abfd, data+i);
|
||||||
size = bfd_get_32(abfd, data+i+4);
|
size = bfd_get_32 (abfd, data+i+4);
|
||||||
number = (size - 8) / 2;
|
number = (size - 8) / 2;
|
||||||
|
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
@ -1752,7 +1742,7 @@ pe_print_reloc (abfd, vfile)
|
|||||||
j, off, (long) (off + virtual_address), tbl[t]);
|
j, off, (long) (off + virtual_address), tbl[t]);
|
||||||
|
|
||||||
/* HIGHADJ takes an argument, - the next record *is* the
|
/* HIGHADJ takes an argument, - the next record *is* the
|
||||||
low 16 bits of addend. */
|
low 16 bits of addend. */
|
||||||
if (t == IMAGE_REL_BASED_HIGHADJ)
|
if (t == IMAGE_REL_BASED_HIGHADJ)
|
||||||
{
|
{
|
||||||
fprintf (file, " (%4x)",
|
fprintf (file, " (%4x)",
|
||||||
@ -1760,7 +1750,7 @@ pe_print_reloc (abfd, vfile)
|
|||||||
bfd_get_16 (abfd, data + i + 8 + j * 2 + 2)));
|
bfd_get_16 (abfd, data + i + 8 + j * 2 + 2)));
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf (file, "\n");
|
fprintf (file, "\n");
|
||||||
}
|
}
|
||||||
i += size;
|
i += size;
|
||||||
@ -1804,22 +1794,22 @@ _bfd_pe_print_private_bfd_data_common (abfd, vfile)
|
|||||||
|
|
||||||
/* ctime implies '\n'. */
|
/* ctime implies '\n'. */
|
||||||
fprintf (file, "\nTime/Date\t\t%s", ctime (&pe->coff.timestamp));
|
fprintf (file, "\nTime/Date\t\t%s", ctime (&pe->coff.timestamp));
|
||||||
fprintf (file,"\nImageBase\t\t");
|
fprintf (file, "\nImageBase\t\t");
|
||||||
fprintf_vma (file, i->ImageBase);
|
fprintf_vma (file, i->ImageBase);
|
||||||
fprintf (file,"\nSectionAlignment\t");
|
fprintf (file, "\nSectionAlignment\t");
|
||||||
fprintf_vma (file, i->SectionAlignment);
|
fprintf_vma (file, i->SectionAlignment);
|
||||||
fprintf (file,"\nFileAlignment\t\t");
|
fprintf (file, "\nFileAlignment\t\t");
|
||||||
fprintf_vma (file, i->FileAlignment);
|
fprintf_vma (file, i->FileAlignment);
|
||||||
fprintf (file,"\nMajorOSystemVersion\t%d\n", i->MajorOperatingSystemVersion);
|
fprintf (file, "\nMajorOSystemVersion\t%d\n", i->MajorOperatingSystemVersion);
|
||||||
fprintf (file,"MinorOSystemVersion\t%d\n", i->MinorOperatingSystemVersion);
|
fprintf (file, "MinorOSystemVersion\t%d\n", i->MinorOperatingSystemVersion);
|
||||||
fprintf (file,"MajorImageVersion\t%d\n", i->MajorImageVersion);
|
fprintf (file, "MajorImageVersion\t%d\n", i->MajorImageVersion);
|
||||||
fprintf (file,"MinorImageVersion\t%d\n", i->MinorImageVersion);
|
fprintf (file, "MinorImageVersion\t%d\n", i->MinorImageVersion);
|
||||||
fprintf (file,"MajorSubsystemVersion\t%d\n", i->MajorSubsystemVersion);
|
fprintf (file, "MajorSubsystemVersion\t%d\n", i->MajorSubsystemVersion);
|
||||||
fprintf (file,"MinorSubsystemVersion\t%d\n", i->MinorSubsystemVersion);
|
fprintf (file, "MinorSubsystemVersion\t%d\n", i->MinorSubsystemVersion);
|
||||||
fprintf (file,"Win32Version\t\t%08lx\n", i->Reserved1);
|
fprintf (file, "Win32Version\t\t%08lx\n", i->Reserved1);
|
||||||
fprintf (file,"SizeOfImage\t\t%08lx\n", i->SizeOfImage);
|
fprintf (file, "SizeOfImage\t\t%08lx\n", i->SizeOfImage);
|
||||||
fprintf (file,"SizeOfHeaders\t\t%08lx\n", i->SizeOfHeaders);
|
fprintf (file, "SizeOfHeaders\t\t%08lx\n", i->SizeOfHeaders);
|
||||||
fprintf (file,"CheckSum\t\t%08lx\n", i->CheckSum);
|
fprintf (file, "CheckSum\t\t%08lx\n", i->CheckSum);
|
||||||
switch (i->Subsystem)
|
switch (i->Subsystem)
|
||||||
{
|
{
|
||||||
case IMAGE_SUBSYSTEM_UNKNOWN:
|
case IMAGE_SUBSYSTEM_UNKNOWN:
|
||||||
@ -1847,25 +1837,25 @@ _bfd_pe_print_private_bfd_data_common (abfd, vfile)
|
|||||||
subsystem_name = "EFI boot service driver";
|
subsystem_name = "EFI boot service driver";
|
||||||
break;
|
break;
|
||||||
case IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER:
|
case IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER:
|
||||||
subsystem_name = "EFI runtime driver";
|
subsystem_name = "EFI runtime driver";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fprintf (file,"Subsystem\t\t%08x", i->Subsystem);
|
fprintf (file, "Subsystem\t\t%08x", i->Subsystem);
|
||||||
if (subsystem_name)
|
if (subsystem_name)
|
||||||
fprintf (file, "\t(%s)", subsystem_name);
|
fprintf (file, "\t(%s)", subsystem_name);
|
||||||
fprintf (file,"\nDllCharacteristics\t%08x\n", i->DllCharacteristics);
|
fprintf (file, "\nDllCharacteristics\t%08x\n", i->DllCharacteristics);
|
||||||
fprintf (file,"SizeOfStackReserve\t");
|
fprintf (file, "SizeOfStackReserve\t");
|
||||||
fprintf_vma (file, i->SizeOfStackReserve);
|
fprintf_vma (file, i->SizeOfStackReserve);
|
||||||
fprintf (file,"\nSizeOfStackCommit\t");
|
fprintf (file, "\nSizeOfStackCommit\t");
|
||||||
fprintf_vma (file, i->SizeOfStackCommit);
|
fprintf_vma (file, i->SizeOfStackCommit);
|
||||||
fprintf (file,"\nSizeOfHeapReserve\t");
|
fprintf (file, "\nSizeOfHeapReserve\t");
|
||||||
fprintf_vma (file, i->SizeOfHeapReserve);
|
fprintf_vma (file, i->SizeOfHeapReserve);
|
||||||
fprintf (file,"\nSizeOfHeapCommit\t");
|
fprintf (file, "\nSizeOfHeapCommit\t");
|
||||||
fprintf_vma (file, i->SizeOfHeapCommit);
|
fprintf_vma (file, i->SizeOfHeapCommit);
|
||||||
fprintf (file,"\nLoaderFlags\t\t%08lx\n", i->LoaderFlags);
|
fprintf (file, "\nLoaderFlags\t\t%08lx\n", i->LoaderFlags);
|
||||||
fprintf (file,"NumberOfRvaAndSizes\t%08lx\n", i->NumberOfRvaAndSizes);
|
fprintf (file, "NumberOfRvaAndSizes\t%08lx\n", i->NumberOfRvaAndSizes);
|
||||||
|
|
||||||
fprintf (file,"\nThe Data Directory\n");
|
fprintf (file, "\nThe Data Directory\n");
|
||||||
for (j = 0; j < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; j++)
|
for (j = 0; j < IMAGE_NUMBEROF_DIRECTORY_ENTRIES; j++)
|
||||||
{
|
{
|
||||||
fprintf (file, "Entry %1x ", j);
|
fprintf (file, "Entry %1x ", j);
|
||||||
@ -1907,7 +1897,7 @@ _bfd_pe_bfd_copy_private_bfd_data_common (ibfd, obfd)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy private section data. */
|
/* Copy private section data. */
|
||||||
boolean
|
boolean
|
||||||
_bfd_pe_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
|
_bfd_pe_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
|
||||||
bfd *ibfd;
|
bfd *ibfd;
|
||||||
|
Reference in New Issue
Block a user