Skip to content
Snippets Groups Projects
  • Alexandre Oliva's avatar
    06e77878
    gas/ChangeLog: · 06e77878
    Alexandre Oliva authored
    * read.c (potable): Add weakref.
    (s_weakref): New.
    * read.h (s_weakref): Declare.
    * struc-symbol.h (struct symbol): Add sy_weakrefr and sy_weakrefd.
    * symbols.c (colon): Clear weakrefr.
    (symbol_find_exact): Rename to, and reimplement in terms of...
    (symbol_find_exact_noref): ... new function.
    (symbol_find): Likewise...
    (symbol_find_noref): ... ditto.
    (resolve_symbol_value): Resolve weakrefr without setting their
    values.
    (S_SET_WEAK): Call hook.
    (S_GET_VALUE): Follow weakref link.
    (S_SET_VALUE): Clear weakrefr.
    (S_IS_WEAK): Follow weakref link.
    (S_IS_WEAKREFR, S_SET_WEAKREFR, S_CLEAR_WEAKREFR): New.
    (S_IS_WEAKREFD, S_SET_WEAKREFD, S_CLEAR_WEAKREFD): New.
    (symbol_set_value_expression, symbol_set_frag): Clear weakrefr.
    (symbol_mark_used): Follow weakref link.
    (print_symbol_value_1): Print weak, weakrefr and weakrefd.
    * symbols.h (symbol_find_noref, symbol_find_exact_noref): Declare.
    (S_IS_WEAKREFR, S_SET_WEAKREFR, S_CLEAR_WEAKREFR): Declare.
    (S_IS_WEAKREFD, S_SET_WEAKREFD, S_CLEAR_WEAKREFD): Declare.
    * write.c (adust_reloc_syms): Follow weakref link.  Do not
    complain if target is undefined.
    (write_object_file): Likewise.  Remove weakrefr symbols.  Drop
    unreferenced weakrefd symbols.
    * config/obj-coff.c (obj_frob_symbol): Do not force WEAKREFD
    symbols EXTERNAL.
    (pecoff_obj_set_weak_hook, pecoff_obj_clear_weak_hook): New.
    * config/obj-coff.h (obj_set_weak_hook, obj_clear_weak_hook): Define.
    * doc/as.texinfo: Document weakref.
    * doc/internals.texi: Document new struct members, internal
    functions and hooks.
    gas/testsuite/ChangeLog:
    * gas/all/weakref1.s, gas/all/weakref1.d: New test.
    * gas/all/weakref1g.d, gas/all/weakref1l.d: New tests.
    * gas/all/weakref1u.d, gas/all/weakref1w.d: New tests.
    * gas/all/weakref2.s, gas/all/weakref3.s: New tests.
    * gas/all/gas.exp: Run new tests.
    06e77878
    History
    gas/ChangeLog:
    Alexandre Oliva authored
    * read.c (potable): Add weakref.
    (s_weakref): New.
    * read.h (s_weakref): Declare.
    * struc-symbol.h (struct symbol): Add sy_weakrefr and sy_weakrefd.
    * symbols.c (colon): Clear weakrefr.
    (symbol_find_exact): Rename to, and reimplement in terms of...
    (symbol_find_exact_noref): ... new function.
    (symbol_find): Likewise...
    (symbol_find_noref): ... ditto.
    (resolve_symbol_value): Resolve weakrefr without setting their
    values.
    (S_SET_WEAK): Call hook.
    (S_GET_VALUE): Follow weakref link.
    (S_SET_VALUE): Clear weakrefr.
    (S_IS_WEAK): Follow weakref link.
    (S_IS_WEAKREFR, S_SET_WEAKREFR, S_CLEAR_WEAKREFR): New.
    (S_IS_WEAKREFD, S_SET_WEAKREFD, S_CLEAR_WEAKREFD): New.
    (symbol_set_value_expression, symbol_set_frag): Clear weakrefr.
    (symbol_mark_used): Follow weakref link.
    (print_symbol_value_1): Print weak, weakrefr and weakrefd.
    * symbols.h (symbol_find_noref, symbol_find_exact_noref): Declare.
    (S_IS_WEAKREFR, S_SET_WEAKREFR, S_CLEAR_WEAKREFR): Declare.
    (S_IS_WEAKREFD, S_SET_WEAKREFD, S_CLEAR_WEAKREFD): Declare.
    * write.c (adust_reloc_syms): Follow weakref link.  Do not
    complain if target is undefined.
    (write_object_file): Likewise.  Remove weakrefr symbols.  Drop
    unreferenced weakrefd symbols.
    * config/obj-coff.c (obj_frob_symbol): Do not force WEAKREFD
    symbols EXTERNAL.
    (pecoff_obj_set_weak_hook, pecoff_obj_clear_weak_hook): New.
    * config/obj-coff.h (obj_set_weak_hook, obj_clear_weak_hook): Define.
    * doc/as.texinfo: Document weakref.
    * doc/internals.texi: Document new struct members, internal
    functions and hooks.
    gas/testsuite/ChangeLog:
    * gas/all/weakref1.s, gas/all/weakref1.d: New test.
    * gas/all/weakref1g.d, gas/all/weakref1l.d: New tests.
    * gas/all/weakref1u.d, gas/all/weakref1w.d: New tests.
    * gas/all/weakref2.s, gas/all/weakref3.s: New tests.
    * gas/all/gas.exp: Run new tests.