diff options
author | Alan Modra <amodra@gmail.com> | 2019-09-17 08:59:25 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-09-20 18:04:03 +0930 |
commit | a48931cc2df9f87596d93b319236c73ef0fe0f4e (patch) | |
tree | 8a344cb919102bf891b6b172cde5548bfdc45f6e /ld/emultempl | |
parent | af30dc128be191dc6179763203035ff62c634284 (diff) | |
download | gdb-a48931cc2df9f87596d93b319236c73ef0fe0f4e.zip gdb-a48931cc2df9f87596d93b319236c73ef0fe0f4e.tar.gz gdb-a48931cc2df9f87596d93b319236c73ef0fe0f4e.tar.bz2 |
bfd macro conversion to inline functions, section
This one exposed a bug in tic6x gas, found with inline function
parameter type checking. struct bfd_section and struct bfd_symbol
both have a flags field, so bfd_is_com_section (symbol) compiled OK
when bfd_is_com_section was a macro but didn't special case common
symbols.
bfd/
* bfd-in.h (bfd_section_name, bfd_section_size, bfd_section_vma),
(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
(bfd_section_userdata, bfd_is_com_section, discarded_section),
(bfd_get_section_limit_octets, bfd_get_section_limit): Delete macros.
* bfd.c (bfd_get_section_limit_octets, bfd_get_section_limit),
(bfd_section_list_remove, bfd_section_list_append),
(bfd_section_list_prepend, bfd_section_list_insert_after),
(bfd_section_list_insert_before, bfd_section_removed_from_list):
New inline functions.
* section.c (bfd_is_und_section, bfd_is_abs_section),
(bfd_is_ind_section, bfd_is_const_section, bfd_section_list_remove),
(bfd_section_list_append, bfd_section_list_prepend),
(bfd_section_list_insert_after, bfd_section_list_insert_before),
(bfd_section_removed_from_list): Delete macros.
(bfd_section_name, bfd_section_size, bfd_section_vma),
(bfd_section_lma, bfd_section_alignment, bfd_section_flags),
(bfd_section_userdata, bfd_is_com_section, bfd_is_und_section),
(bfd_is_abs_section, bfd_is_ind_section, bfd_is_const_section),
(discarded_section): New inline functions.
* bfd-in2.h: Regenerate.
gas/
* config/tc-tic6x.c (tc_gen_reloc): Correct common symbol check.
ld/
* emultempl/xtensaelf.em (xtensa_get_section_deps): Comment.
Use bfd_section_userdata.
(xtensa_set_section_deps): Use bfd_set_section_userdata.
* ldlang.c (lang_output_section_get): Use bfd_section_userdata.
(sort_def_symbol): Likewise, and bfd_set_section_userdata.
(init_os): Use bfd_set_section_userdata.
(print_all_symbols): Use bfd_section_userdata.
* ldlang.h (get_userdata): Delete.
Diffstat (limited to 'ld/emultempl')
-rw-r--r-- | ld/emultempl/xtensaelf.em | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em index 569df61..0b11fdc 100644 --- a/ld/emultempl/xtensaelf.em +++ b/ld/emultempl/xtensaelf.em @@ -596,8 +596,12 @@ xtensa_get_section_deps (const reloc_deps_graph *deps ATTRIBUTE_UNUSED, /* We have a separate function for this so that we could in the future keep a completely independent structure that maps a section to its dependence edges. - For now, we place these in the sec->userdata field. */ - reloc_deps_section *sec_deps = sec->userdata; + For now, we place these in the sec->userdata field. + This doesn't clash with ldlang.c use of userdata for output + sections, and during map output for input sections, since the + xtensa use is only for input sections and only extant in + before_allocation. */ + reloc_deps_section *sec_deps = bfd_section_userdata (sec); return sec_deps; } @@ -606,7 +610,7 @@ xtensa_set_section_deps (const reloc_deps_graph *deps ATTRIBUTE_UNUSED, asection *sec, reloc_deps_section *deps_section) { - sec->userdata = deps_section; + bfd_set_section_userdata (sec, deps_section); } |