From: Ian Lance Taylor Date: Tue, 12 Oct 1993 21:16:14 +0000 (+0000) Subject: * elf32-mips.c: Extensive additions to do relocations and to X-Git-Tag: gdb-4_18~17141 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d5a30a087906af9f2375949ce0c4baaba366a3e6;p=external%2Fbinutils.git * elf32-mips.c: Extensive additions to do relocations and to handle MIPS specific sections. * libelf.h (elf_backend_data): Pass fourth argument to elf_backend_section_from_bfd_section to permit it to control the section index to use. (elf_obj_tdata): Add gp and gp_size fields. (elf_gp, elf_gp_size): New accessor macros. * elfcode.h: Removed a number of unused local variables. (elf_fake_sections): Clear section header before calling elf_backend_fake_sections, not after. (prep_headers): Return true at end. (elf_section_from_bfd_section): Pass retval argument to elf_backend_section_from_bfd_section. * elf32-hppa.c (elf32_hppa_backend_section_from_bfd_section): Accept and ignore new retval argument. * bfd.c: Include libelf.h. (bfd_set_gp_size): Handle ELF targets. * Makefile.in (bfd.o): Depends upon libelf.h. (elf32-mips.o): Depends upon $(INCDIR)/elf/mips.h. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index effc8da..0eb30ff 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,25 @@ +Tue Oct 12 17:03:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * elf32-mips.c: Extensive additions to do relocations and to + handle MIPS specific sections. + * libelf.h (elf_backend_data): Pass fourth argument to + elf_backend_section_from_bfd_section to permit it to control the + section index to use. + (elf_obj_tdata): Add gp and gp_size fields. + (elf_gp, elf_gp_size): New accessor macros. + * elfcode.h: Removed a number of unused local variables. + (elf_fake_sections): Clear section header before calling + elf_backend_fake_sections, not after. + (prep_headers): Return true at end. + (elf_section_from_bfd_section): Pass retval argument to + elf_backend_section_from_bfd_section. + * elf32-hppa.c (elf32_hppa_backend_section_from_bfd_section): + Accept and ignore new retval argument. + * bfd.c: Include libelf.h. + (bfd_set_gp_size): Handle ELF targets. + * Makefile.in (bfd.o): Depends upon libelf.h. + (elf32-mips.o): Depends upon $(INCDIR)/elf/mips.h. + Mon Oct 11 17:25:18 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * ecoff.c (ecoff_mkobject): Check bfd_make_section return value. diff --git a/bfd/Makefile.in b/bfd/Makefile.in index d5041ab..5f467d6 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -137,13 +137,17 @@ BFD32_BACKENDS = \ elf32-sparc.o \ elf32.o \ hp300hpux.o \ - hppa.o \ + som.o \ i386aout.o \ i386bsd.o \ i386linux.o \ i386lynx.o \ + i386lynx-cf.o \ + netbsd386.o \ i386mach3.o \ ieee.o \ + m68klynx.o \ + m68klynx-cf.o \ mipsbsd.o \ newsos3.o \ nlm.o \ @@ -170,6 +174,8 @@ BFD64_BACKENDS = \ OPTIONAL_BACKENDS = \ aix386-core.o \ hpux-core.o \ + lynx-core.o \ + osf-core.o \ sco-core.o \ trad-core.o @@ -209,17 +215,18 @@ CFILES = libbfd.c opncls.c bfd.c archive.c targets.c cache.c \ coff-a29k.c coff-rs6000.c coffgen.c format.c \ section.c core.c syms.c stab-syms.c reloc.c init.c ctor.c \ seclet.c coff-m88k.c coff-mips.c coff-sh.c trad-core.c newsos3.c \ - i386aout.c i386linux.c i386mach3.c bout.c aout-adobe.c coff-we32k.c \ + i386aout.c i386linux.c netbsd386.c i386mach3.c bout.c aout-adobe.c coff-we32k.c \ i386bsd.c cpu-h8300.c cpu-i960.c cpu-sparc.c cpu-m68k.c \ cpu-m88k.c cpu-vax.c cpu-mips.c cpu-a29k.c cpu-i386.c \ - cpu-rs6000.c coff-h8300.c hppa.c cpu-hppa.c cpu-we32k.c reloc16.c \ + cpu-rs6000.c coff-h8300.c som.c cpu-hppa.c cpu-we32k.c reloc16.c \ mipsbsd.c cpu-sh.c \ elf32.c elf32-sparc.c elf32-i386.c elf32-i860.c elf32-m68k.c \ elf32-hppa.c elf32-m88k.c elf32-mips.c elf32-gen.c \ elf64.c elf64-gen.c \ nlm32.c nlm32-gen.c nlm32-i386.c nlm64.c nlm64-gen.c \ coff-alpha.c cpu-alpha.c \ - hp300bsd.c hp300hpux.c i386lynx.c + hp300bsd.c hp300hpux.c \ + i386lynx.c i386lynx-cf.c m68klynx.c m68klynx-cf.c STAGESTUFF = $(TARGETLIB) $(OFILES) @@ -444,7 +451,7 @@ bfd.ps: libbfd.o : libbfd.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h opncls.o : opncls.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h bfd.o : bfd.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ - $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h libecoff.h + $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h libecoff.h libelf.h archive.o : archive.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h targets.o : targets.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h @@ -536,6 +543,7 @@ sco-core.o : sco-core.c $(BFD_H) libbfd.h libcoff.h \ aix386-core.o : aix386-core.c $(BFD_H) libbfd.h libcoff.h \ $(INCDIR)/obstack.h $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h hpux-core.o : hpux-core.c $(BFD_H) libbfd.h libhppa.h +osf-core.o : osf-core.c $(BFD_H) libbfd.h newsos3.o : newsos3.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ @@ -543,9 +551,16 @@ newsos3.o : newsos3.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ i386lynx.o : i386lynx.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ $(INCDIR)/aout/ar.h libaout.h +i386lynx-cf.o: i386lynx-cf.c coff-i386.c $(BFD_H) $(INCDIR)/obstack.h \ + libbfd.h $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \ + coffcode.h coffswap.h seclet.h +lynx-core.o : lynx-core.c $(BFD_H) libbfd.h i386aout.o : i386aout.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ $(INCDIR)/aout/ar.h libaout.h +netbsd386.o : netbsd386.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ + $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ + $(INCDIR)/aout/ar.h libaout.h i386mach3.o : i386mach3.c $(BFD_H) $(INCDIR)/obstack.h libbfd.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \ $(INCDIR)/aout/ar.h libaout.h @@ -563,25 +578,25 @@ elf.o : elf.c libelf.h libbfd.h $(BFD_H) $(INCDIR)/obstack.h elf32.o : elf32.c elfcode.h libelf.h libbfd.h $(BFD_H) \ $(INCDIR)/obstack.h elf32-sparc.o : elf32-sparc.c libelf.h libbfd.h $(BFD_H) \ - $(INCDIR)/obstack.h + $(INCDIR)/obstack.h elf32-target.h elf32-m68k.o : elf32-m68k.c libelf.h libbfd.h $(BFD_H) \ - $(INCDIR)/obstack.h + $(INCDIR)/obstack.h elf32-target.h elf32-i860.o : elf32-i860.c libelf.h libbfd.h $(BFD_H) \ - $(INCDIR)/obstack.h + $(INCDIR)/obstack.h elf32-target.h elf32-i386.o : elf32-i386.c libelf.h libbfd.h $(BFD_H) \ - $(INCDIR)/obstack.h -elf32-hppa.o : elf32-hppa.c $(srcdir)/elf32-hppa.h libelf.h libbfd.h \ - $(BFD_H) $(INCDIR)/obstack.h + $(INCDIR)/obstack.h elf32-target.h +elf32-hppa.o : elf32-hppa.c $(srcdir)/elf32-hppa.h $(srcdir)/libhppa.h \ + libelf.h libbfd.h $(BFD_H) $(INCDIR)/obstack.h elf32-target.h elf32-m88k.o : elf32-m88k.c libelf.h libbfd.h \ - $(BFD_H) $(INCDIR)/obstack.h + $(BFD_H) $(INCDIR)/obstack.h elf32-target.h elf32-mips.o : elf32-mips.c libelf.h libbfd.h \ - $(BFD_H) $(INCDIR)/obstack.h + $(BFD_H) $(INCDIR)/obstack.h $(INCDIR)/elf/mips.h elf32-target.h elf32-gen.o : elf32-gen.c libelf.h libbfd.h \ - $(BFD_H) $(INCDIR)/obstack.h + $(BFD_H) $(INCDIR)/obstack.h elf32-target.h elf64.o : elf64.c elfcode.h libelf.h libbfd.h $(BFD_H) \ $(INCDIR)/obstack.h elf64-gen.o : elf64-gen.c libelf.h libbfd.h \ - $(BFD_H) $(INCDIR)/obstack.h + $(BFD_H) $(INCDIR)/obstack.h elf64-target.h nlm.o : nlm.c libnlm.h libbfd.h $(BFD_H) $(INCDIR)/obstack.h nlm32.o : nlm32.c nlmcode.h libnlm.h libbfd.h $(BFD_H) \ $(INCDIR)/obstack.h diff --git a/bfd/libelf.h b/bfd/libelf.h index f9cfa1a..187c51a 100644 --- a/bfd/libelf.h +++ b/bfd/libelf.h @@ -71,7 +71,7 @@ struct elf_backend_data boolean (*elf_backend_section_processing) PARAMS ((bfd *, Elf32_Internal_Shdr *)); boolean (*elf_backend_section_from_shdr) PARAMS ((bfd *, Elf32_Internal_Shdr *, char *)); boolean (*elf_backend_fake_sections) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *)); - boolean (*elf_backend_section_from_bfd_section) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *)); + boolean (*elf_backend_section_from_bfd_section) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *)); }; struct elf_sym_extra @@ -130,6 +130,8 @@ struct elf_obj_tdata file_ptr next_file_pos; void *prstatus; /* The raw /proc prstatus structure */ void *prpsinfo; /* The raw /proc prpsinfo structure */ + bfd_vma gp; /* The gp value (MIPS only, for now) */ + int gp_size; /* The gp size (MIPS only, for now) */ }; #define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data) @@ -146,6 +148,8 @@ struct elf_obj_tdata #define core_prstatus(bfd) (elf_tdata(bfd) -> prstatus) #define obj_symbols(bfd) (elf_tdata(bfd) -> symbols) #define obj_internal_syms(bfd) (elf_tdata(bfd) -> internal_syms) +#define elf_gp(bfd) (elf_tdata(bfd) -> gp) +#define elf_gp_size(bfd) (elf_tdata(bfd) -> gp_size) extern char * elf_string_from_elf_section PARAMS ((bfd *, unsigned, unsigned)); extern char * elf_get_str_section PARAMS ((bfd *, unsigned));