mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-31 22:13:43 +00:00
* aoutx.h (translate_from_native_sym_flags): Now handles indirect
symbols in a better way. (translate_to_native_sym_flag): Set the N_INDR bit when necessary. (aout<>slurp_symbol_table): Maintain indirect state. * section.c: Added BFD_IND_SECTION_NAME and bfd_ind_section. (bfd_make_section): Cope with new builtin section. * syms.c (bfd_decode_symclass): Can now print indirect section info.
This commit is contained in:
parent
39d4b51986
commit
21c7770362
@ -1,3 +1,24 @@
|
||||
Tue Mar 30 09:33:16 1993 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* aoutx.h (translate_from_native_sym_flags): Now handles indirect
|
||||
symbols in a better way. (translate_to_native_sym_flag): Set the
|
||||
N_INDR bit when necessary. (aout<>slurp_symbol_table): Maintain
|
||||
indirect state.
|
||||
* section.c: Added BFD_IND_SECTION_NAME and bfd_ind_section.
|
||||
(bfd_make_section): Cope with new builtin section.
|
||||
* syms.c (bfd_decode_symclass): Can now print indirect section
|
||||
info.
|
||||
|
||||
Wed Mar 24 13:36:33 1993 Per Bothner (bothner@rtl.cygnus.com)
|
||||
|
||||
* aout-target.h (MY(object_p)): Fail if MACHTYPE_OK is
|
||||
defined, and yields false.
|
||||
* aout-mipsbsd.c, i386bsd.c: Define MACHTYPE_OK appropriately.
|
||||
|
||||
* archive.c (snarf_ar_hdr): Add support for reading (only,
|
||||
so far) BSD-4.4-style extended headers.
|
||||
* archive.c: Some more comments.
|
||||
|
||||
Wed Mar 24 02:05:10 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
|
||||
|
||||
* Makefile.in: fix rule for dvi and info, so that the recursive
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Object file "section" support for the BFD library.
|
||||
Copyright (C) 1990-1991 Free Software Foundation, Inc.
|
||||
Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
|
||||
Written by Cygnus Support.
|
||||
|
||||
This file is part of BFD, the Binary File Descriptor library.
|
||||
@ -220,15 +220,13 @@ CODE_FRAGMENT
|
||||
. {* The section is a constuctor, and should be placed at the
|
||||
. end of the . *}
|
||||
.
|
||||
.
|
||||
.#define SEC_CONSTRUCTOR_TEXT 0x1100
|
||||
.
|
||||
.#define SEC_CONSTRUCTOR_DATA 0x2100
|
||||
.
|
||||
.#define SEC_CONSTRUCTOR_BSS 0x3100
|
||||
.
|
||||
.
|
||||
. {* The section has contents - a bss section could be
|
||||
. {* The section has contents - a data section could be
|
||||
. <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>, a debug section could be
|
||||
. <<SEC_HAS_CONTENTS>> *}
|
||||
.
|
||||
@ -240,7 +238,19 @@ CODE_FRAGMENT
|
||||
.
|
||||
.#define SEC_NEVER_LOAD 0x400
|
||||
.
|
||||
. {* The section is a shared library section. The linker must leave
|
||||
. these completely alone, as the vma and size are used when
|
||||
. the executable is loaded. *}
|
||||
.
|
||||
.#define SEC_SHARED_LIBRARY 0x800
|
||||
.
|
||||
. {* The section is a common section (symbols may be defined
|
||||
. multiple times, the value of a symbol is the amount of
|
||||
. space it requires, and the largest symbol value is the one
|
||||
. used). Most targets have exactly one of these (.bss), but
|
||||
. ECOFF has two. *}
|
||||
.
|
||||
.#define SEC_IS_COMMON 0x8000
|
||||
.
|
||||
. bfd_vma vma;
|
||||
. boolean user_set_vma;
|
||||
@ -348,6 +358,7 @@ CODE_FRAGMENT
|
||||
.#define BFD_ABS_SECTION_NAME "*ABS*"
|
||||
.#define BFD_UND_SECTION_NAME "*UND*"
|
||||
.#define BFD_COM_SECTION_NAME "*COM*"
|
||||
.#define BFD_IND_SECTION_NAME "*IND*"
|
||||
.
|
||||
. {* the absolute section *}
|
||||
. extern asection bfd_abs_section;
|
||||
@ -355,10 +366,13 @@ CODE_FRAGMENT
|
||||
. extern asection bfd_und_section;
|
||||
. {* Pointer to the common section *}
|
||||
. extern asection bfd_com_section;
|
||||
. {* Pointer to the indirect section *}
|
||||
. extern asection bfd_ind_section;
|
||||
.
|
||||
. extern struct symbol_cache_entry *bfd_abs_symbol;
|
||||
. extern struct symbol_cache_entry *bfd_com_symbol;
|
||||
. extern struct symbol_cache_entry *bfd_und_symbol;
|
||||
. extern struct symbol_cache_entry *bfd_ind_symbol;
|
||||
.#define bfd_get_section_size_before_reloc(section) \
|
||||
. (section->reloc_done ? (abort(),1): (section)->_raw_size)
|
||||
.#define bfd_get_section_size_after_reloc(section) \
|
||||
@ -368,21 +382,23 @@ CODE_FRAGMENT
|
||||
/* These symbols are global, not specific to any BFD. Therefore, anything
|
||||
that tries to change them is broken, and should be repaired. */
|
||||
static CONST asymbol global_syms[] = {
|
||||
/* bfd, name, value, attr, section [, udata] */
|
||||
/* the_bfd, name, value, attr, section [, udata] */
|
||||
{ 0, BFD_COM_SECTION_NAME, 0, BSF_SECTION_SYM, &bfd_com_section },
|
||||
{ 0, BFD_UND_SECTION_NAME, 0, BSF_SECTION_SYM, &bfd_und_section },
|
||||
{ 0, BFD_ABS_SECTION_NAME, 0, BSF_SECTION_SYM, &bfd_abs_section },
|
||||
{ 0, BFD_IND_SECTION_NAME, 0, BSF_SECTION_SYM, &bfd_ind_section },
|
||||
};
|
||||
|
||||
#define STD_SECTION(SEC,SYM,NAME, IDX) \
|
||||
#define STD_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
|
||||
asymbol *SYM = (asymbol *) &global_syms[IDX]; \
|
||||
asection SEC = { NAME, 0, 0, 0, 0, (boolean) 0, 0, 0, 0, &SEC,\
|
||||
asection SEC = { NAME, 0, 0, FLAGS, 0, (boolean) 0, 0, 0, 0, &SEC,\
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (boolean) 0, \
|
||||
(asymbol *) &global_syms[IDX], &SYM, }
|
||||
|
||||
STD_SECTION (bfd_com_section, bfd_com_symbol, BFD_COM_SECTION_NAME, 0);
|
||||
STD_SECTION (bfd_und_section, bfd_und_symbol, BFD_UND_SECTION_NAME, 1);
|
||||
STD_SECTION (bfd_abs_section, bfd_abs_symbol, BFD_ABS_SECTION_NAME, 2);
|
||||
STD_SECTION (bfd_com_section, SEC_IS_COMMON, bfd_com_symbol, BFD_COM_SECTION_NAME, 0);
|
||||
STD_SECTION (bfd_und_section, 0, bfd_und_symbol, BFD_UND_SECTION_NAME, 1);
|
||||
STD_SECTION (bfd_abs_section, 0, bfd_abs_symbol, BFD_ABS_SECTION_NAME, 2);
|
||||
STD_SECTION (bfd_ind_section, 0, bfd_ind_symbol, BFD_IND_SECTION_NAME, 3);
|
||||
#undef STD_SECTION
|
||||
|
||||
/*
|
||||
@ -510,6 +526,11 @@ DEFUN(bfd_make_section,(abfd, name),
|
||||
{
|
||||
return &bfd_und_section;
|
||||
}
|
||||
|
||||
if (strcmp(name, BFD_IND_SECTION_NAME) == 0)
|
||||
{
|
||||
return &bfd_ind_section;
|
||||
}
|
||||
|
||||
while (sect) {
|
||||
if (!strcmp(sect->name, name)) return NULL;
|
||||
@ -730,7 +751,7 @@ DEFUN(bfd_set_section_contents,(abfd, section, location, offset, count),
|
||||
{
|
||||
bfd_size_type sz;
|
||||
|
||||
if (!(bfd_get_section_flags(abfd, section) & SEC_HAS_CONTENTS))
|
||||
if (!bfd_get_section_flags(abfd, section) & SEC_HAS_CONTENTS)
|
||||
{
|
||||
bfd_error = no_contents;
|
||||
return(false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user