X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Faoutf1.h;h=97e122b8e8ccb014fec20b6bd272369ca1d8fc3c;hb=ec892a0718dc47c2d009532865c353daa749eaa1;hp=44f10532e0c4824e1c24ae55aa1bedb9db113374;hpb=53e09e0aaf3d13e4b893744e2fe79edde7edfd20;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/aoutf1.h b/bfd/aoutf1.h index 44f10532e0..97e122b8e8 100644 --- a/bfd/aoutf1.h +++ b/bfd/aoutf1.h @@ -1,14 +1,12 @@ /* A.out "format 1" file handling code for BFD. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001, 2002, 2003, 2004, 2005 - Free Software Foundation, Inc. + Copyright (C) 1990-2015 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. 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, @@ -18,10 +16,11 @@ 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 02110-1301, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ -#include "bfd.h" #include "sysdep.h" +#include "bfd.h" #include "libbfd.h" #include "aout/sun4.h" @@ -143,11 +142,6 @@ sunos_set_arch_mach (bfd *abfd, enum machine_type machtype) machine = 0; break; - case M_29K: - arch = bfd_arch_a29k; - machine = 0; - break; - case M_HPUX: arch = bfd_arch_m68k; machine = 0; @@ -161,8 +155,8 @@ sunos_set_arch_mach (bfd *abfd, enum machine_type machtype) bfd_set_arch_mach (abfd, arch, machine); } -#define SET_ARCH_MACH(ABFD, EXEC) \ - NAME(sunos,set_arch_mach) (ABFD, N_MACHTYPE (EXEC)); \ +#define SET_ARCH_MACH(ABFD, EXECP) \ + NAME(sunos,set_arch_mach) (ABFD, N_MACHTYPE (EXECP)); \ choose_reloc_size(ABFD); /* Determine the size of a relocation entry, based on the architecture. */ @@ -173,7 +167,6 @@ choose_reloc_size (bfd *abfd) switch (bfd_get_arch (abfd)) { case bfd_arch_sparc: - case bfd_arch_a29k: obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE; break; default: @@ -201,14 +194,14 @@ sunos_write_object_contents (bfd *abfd) switch (bfd_get_mach (abfd)) { case bfd_mach_m68000: - N_SET_MACHTYPE (*execp, M_UNKNOWN); + N_SET_MACHTYPE (execp, M_UNKNOWN); break; case bfd_mach_m68010: - N_SET_MACHTYPE (*execp, M_68010); + N_SET_MACHTYPE (execp, M_68010); break; default: case bfd_mach_m68020: - N_SET_MACHTYPE (*execp, M_68020); + N_SET_MACHTYPE (execp, M_68020); break; } break; @@ -216,31 +209,28 @@ sunos_write_object_contents (bfd *abfd) switch (bfd_get_mach (abfd)) { case bfd_mach_sparc_sparclet: - N_SET_MACHTYPE (*execp, M_SPARCLET); + N_SET_MACHTYPE (execp, M_SPARCLET); break; case bfd_mach_sparc_sparclite_le: - N_SET_MACHTYPE (*execp, M_SPARCLITE_LE); + N_SET_MACHTYPE (execp, M_SPARCLITE_LE); break; default: - N_SET_MACHTYPE (*execp, M_SPARC); + N_SET_MACHTYPE (execp, M_SPARC); break; } break; case bfd_arch_i386: - N_SET_MACHTYPE (*execp, M_386); - break; - case bfd_arch_a29k: - N_SET_MACHTYPE (*execp, M_29K); + N_SET_MACHTYPE (execp, M_386); break; default: - N_SET_MACHTYPE (*execp, M_UNKNOWN); + N_SET_MACHTYPE (execp, M_UNKNOWN); } choose_reloc_size (abfd); - N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags); + N_SET_FLAGS (execp, aout_backend_info (abfd)->exec_hdr_flags); - N_SET_DYNAMIC (*execp, (long)(bfd_get_file_flags (abfd) & DYNAMIC)); + N_SET_DYNAMIC (execp, (long)(bfd_get_file_flags (abfd) & DYNAMIC)); WRITE_HEADERS (abfd, execp); @@ -295,7 +285,7 @@ struct external_sparc_core int c_magic; /* Corefile magic number. */ int c_len; /* Sizeof (struct core). */ #define SPARC_CORE_LEN 432 - int c_regs[19]; /* General purpose registers -- MACHDEP SIZE. */ + struct regs c_regs; /* General purpose registers -- MACHDEP SIZE. */ struct external_exec c_aouthdr; /* A.out header. */ int c_signo; /* Killing signal, if any. */ int c_tsize; /* Text size (bytes). */ @@ -318,7 +308,7 @@ struct external_solaris_bcp_core int c_magic; /* Corefile magic number. */ int c_len; /* Sizeof (struct core). */ #define SOLARIS_BCP_CORE_LEN 456 - int c_regs[19]; /* General purpose registers -- MACHDEP SIZE. */ + struct regs c_regs; /* General purpose registers -- MACHDEP SIZE. */ int c_exdata_vp; /* Exdata structure. */ int c_exdata_tsize; int c_exdata_dsize; @@ -396,7 +386,7 @@ swapcore_sun3 (bfd *abfd, char *ext, struct internal_sunos_core *intcore) intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic); intcore->c_len = H_GET_32 (abfd, &extcore->c_len); - intcore->c_regs_pos = (long) (((struct external_sun3_core *) 0)->c_regs); + intcore->c_regs_pos = offsetof (struct external_sun3_core, c_regs); intcore->c_regs_size = sizeof (extcore->c_regs); #if ARCH_SIZE == 64 aout_64_swap_exec_header_in @@ -407,13 +397,13 @@ swapcore_sun3 (bfd *abfd, char *ext, struct internal_sunos_core *intcore) intcore->c_signo = H_GET_32 (abfd, &extcore->c_signo); intcore->c_tsize = H_GET_32 (abfd, &extcore->c_tsize); intcore->c_dsize = H_GET_32 (abfd, &extcore->c_dsize); - intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr); + intcore->c_data_addr = N_DATADDR (&intcore->c_aouthdr); intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize); memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname)); - intcore->fp_stuff_pos = (long) (((struct external_sun3_core *) 0)->fp_stuff); + intcore->fp_stuff_pos = offsetof (struct external_sun3_core, fp_stuff); /* FP stuff takes up whole rest of struct, except c_ucode. */ intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) - - (file_ptr) (((struct external_sun3_core *) 0)->fp_stuff); + offsetof (struct external_sun3_core, fp_stuff); /* Ucode is the last thing in the struct -- just before the end. */ intcore->c_ucode = H_GET_32 (abfd, (intcore->c_len @@ -431,7 +421,7 @@ swapcore_sparc (bfd *abfd, char *ext, struct internal_sunos_core *intcore) intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic); intcore->c_len = H_GET_32 (abfd, &extcore->c_len); - intcore->c_regs_pos = (long) (((struct external_sparc_core *) 0)->c_regs); + intcore->c_regs_pos = offsetof (struct external_sparc_core, c_regs); intcore->c_regs_size = sizeof (extcore->c_regs); #if ARCH_SIZE == 64 aout_64_swap_exec_header_in @@ -442,13 +432,13 @@ swapcore_sparc (bfd *abfd, char *ext, struct internal_sunos_core *intcore) intcore->c_signo = H_GET_32 (abfd, &extcore->c_signo); intcore->c_tsize = H_GET_32 (abfd, &extcore->c_tsize); intcore->c_dsize = H_GET_32 (abfd, &extcore->c_dsize); - intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr); + intcore->c_data_addr = N_DATADDR (&intcore->c_aouthdr); intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize); memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname)); - intcore->fp_stuff_pos = (long) (((struct external_sparc_core *) 0)->fp_stuff); + intcore->fp_stuff_pos = offsetof (struct external_sparc_core, fp_stuff); /* FP stuff takes up whole rest of struct, except c_ucode. */ intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) - - (file_ptr) (((struct external_sparc_core *) 0)->fp_stuff); + offsetof (struct external_sparc_core, fp_stuff); /* Ucode is the last thing in the struct -- just before the end. */ intcore->c_ucode = H_GET_32 (abfd, (intcore->c_len @@ -471,7 +461,7 @@ swapcore_sparc (bfd *abfd, char *ext, struct internal_sunos_core *intcore) #define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000) #define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000) { - bfd_vma sp = H_GET_32 (abfd, &((struct regs *) &extcore->c_regs[0])->r_o6); + bfd_vma sp = H_GET_32 (abfd, &extcore->c_regs.r_o6); if (sp < SPARC_USRSTACK_SPARC10) intcore->c_stacktop = SPARC_USRSTACK_SPARC10; else @@ -489,7 +479,7 @@ swapcore_solaris_bcp (bfd *abfd, char *ext, struct internal_sunos_core *intcore) intcore->c_magic = H_GET_32 (abfd, &extcore->c_magic); intcore->c_len = H_GET_32 (abfd, &extcore->c_len); - intcore->c_regs_pos = (long) (((struct external_solaris_bcp_core *) 0)->c_regs); + intcore->c_regs_pos = offsetof (struct external_solaris_bcp_core, c_regs); intcore->c_regs_size = sizeof (extcore->c_regs); /* The Solaris BCP exdata structure does not contain an a_syms field, @@ -510,10 +500,10 @@ swapcore_solaris_bcp (bfd *abfd, char *ext, struct internal_sunos_core *intcore) intcore->c_ssize = H_GET_32 (abfd, &extcore->c_ssize); memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname)); intcore->fp_stuff_pos = - (long) (((struct external_solaris_bcp_core *) 0)->fp_stuff); + offsetof (struct external_solaris_bcp_core, fp_stuff); /* FP stuff takes up whole rest of struct, except c_ucode. */ intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) - - (file_ptr) (((struct external_solaris_bcp_core *) 0)->fp_stuff); + offsetof (struct external_solaris_bcp_core, fp_stuff); /* Ucode is the last thing in the struct -- just before the end */ intcore->c_ucode = H_GET_32 (abfd, (intcore->c_len @@ -536,7 +526,7 @@ swapcore_solaris_bcp (bfd *abfd, char *ext, struct internal_sunos_core *intcore) #define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000) #define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000) { - bfd_vma sp = H_GET_32 (abfd, &((struct regs *) &extcore->c_regs[0])->r_o6); + bfd_vma sp = H_GET_32 (abfd, &extcore->c_regs.r_o6); if (sp < SPARC_USRSTACK_SPARC10) intcore->c_stacktop = SPARC_USRSTACK_SPARC10; else @@ -575,6 +565,7 @@ sunos4_core_file_p (bfd *abfd) struct internal_sunos_core internal_sunos_core; char external_core[1]; } *mergem; + flagword flags; if (bfd_bread ((void *) longbuf, (bfd_size_type) sizeof (longbuf), abfd) != sizeof (longbuf)) @@ -636,28 +627,31 @@ sunos4_core_file_p (bfd *abfd) abfd->tdata.sun_core_data->hdr = core; /* Create the sections. */ - core_stacksec (abfd) = bfd_make_section_anyway (abfd, ".stack"); + flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; + core_stacksec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".stack", + flags); if (core_stacksec (abfd) == NULL) /* bfd_release frees everything allocated after it's arg. */ goto loser; - core_datasec (abfd) = bfd_make_section_anyway (abfd, ".data"); + flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; + core_datasec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".data", + flags); if (core_datasec (abfd) == NULL) goto loser; - core_regsec (abfd) = bfd_make_section_anyway (abfd, ".reg"); + flags = SEC_HAS_CONTENTS; + core_regsec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".reg", + flags); if (core_regsec (abfd) == NULL) goto loser; - core_reg2sec (abfd) = bfd_make_section_anyway (abfd, ".reg2"); + flags = SEC_HAS_CONTENTS; + core_reg2sec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".reg2", + flags); if (core_reg2sec (abfd) == NULL) goto loser; - core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; - core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; - core_regsec (abfd)->flags = SEC_HAS_CONTENTS; - core_reg2sec (abfd)->flags = SEC_HAS_CONTENTS; - core_stacksec (abfd)->size = core->c_ssize; core_datasec (abfd)->size = core->c_dsize; core_regsec (abfd)->size = core->c_regs_size;