On Sat, Aug 8, 2026 at 4:18 PM Josh Poimboeuf <[email protected]> wrote:
[...]
>
> +/*
> + * ARM64 mapping symbols ($d, $x, $a, __pi_$d, etc) which mark transitions
> + * between code and data.
> + */
> +static inline bool is_mapping_sym(struct symbol *sym)
> +{
> +       return is_notype_sym(sym) && strchr(sym->name, '$');
> +}
> +
> +static inline bool is_data_mapping_sym(struct symbol *sym)
> +{
> +       const char *dollar;
> +
> +       if (!is_mapping_sym(sym))
> +               return false;
> +
> +       dollar = strchr(sym->name, '$');
> +       return dollar && dollar[1] == 'd';

nit: is_data_mapping_sym() calls strchr() twice. Maybe we can
optimize it by eliminating a strchr()?

Thanks,
Song

> +}
> +
>  static inline bool is_global_sym(struct symbol *sym)
>  {
>         return sym->bind == STB_GLOBAL;
> @@ -508,6 +528,9 @@ static inline void set_sym_next_reloc(struct reloc 
> *reloc, struct reloc *next)
>  #define sec_for_each_sym(sec, sym)                                     \
>         list_for_each_entry(sym, &sec->symbol_list, list)
>
> +#define sec_for_each_sym_from(sec, sym)                                      
>   \
> +       list_for_each_entry_from(sym, &sec->symbol_list, list)
> +
>  #define sec_prev_sym(sym)                                              \
>         sym->sec && sym->list.prev != &sym->sec->symbol_list ?          \
>         list_prev_entry(sym, list) : NULL
> --
> 2.54.0
>

Reply via email to