Hi Aaron,

On Fri, 2026-10-30 at 12:08 -0400, Aaron Merey wrote:
> When built with --enable-thread-safety, DWARF sections should be printed
> to per-job output stream.
> 
> Fix skip_listptr_hole and print_debug_exception_table printing to stdout
> and bypassing job output streams.

All these seem correct. Please push.

I do see one print_debug_info_section using stdout when printed
"implicitly". Is that correct? Our should that schedule a job?

Cheers,

Mark

> Signed-off-by: Aaron Merey <[email protected]>
> ---
>  src/readelf.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/src/readelf.c b/src/readelf.c
> index 5f529efd..be738e65 100644
> --- a/src/readelf.c
> +++ b/src/readelf.c
> @@ -5864,7 +5864,7 @@ skip_listptr_hole (struct listptr_table *table, size_t 
> *idxp,
>                  uint_fast8_t *address_sizep, uint_fast8_t *offset_sizep,
>                  Dwarf_Addr *base, struct Dwarf_CU **cu, ptrdiff_t offset,
>                  unsigned char **readp, unsigned char *endp,
> -                unsigned int *attr)
> +                unsigned int *attr, FILE *out)
>  {
>    if (table->n == 0)
>      return false;
> @@ -5878,16 +5878,16 @@ skip_listptr_hole (struct listptr_table *table, 
> size_t *idxp,
>        || p->offset >= (Dwarf_Off) (endp - *readp + offset))
>      {
>        *readp = endp;
> -      printf (_(" [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"),
> -           offset);
> +      fprintf (out, _(" [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"),
> +            offset);
>        return true;
>      }
>  
>    if (p->offset != (Dwarf_Off) offset)
>      {
>        *readp += p->offset - offset;
> -      printf (_(" [%6tx]  <UNUSED GARBAGE> ... %" PRIu64 " bytes ...\n"),
> -           offset, (Dwarf_Off) p->offset - offset);
> +      fprintf (out, _(" [%6tx]  <UNUSED GARBAGE> ... %" PRIu64 " bytes 
> ...\n"),
> +            offset, (Dwarf_Off) p->offset - offset);
>        return true;
>      }
>  
> @@ -6934,7 +6934,7 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
>  
>        if (first && skip_listptr_hole (&known_rangelistptr, &listptr_idx,
>                                     &address_size, NULL, &base, &cu,
> -                                   offset, &readp, endp, NULL))
> +                                   offset, &readp, endp, NULL, out))
>       continue;
>  
>        if (last_cu != cu)
> @@ -10586,7 +10586,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
>  
>        if (first && skip_listptr_hole (&known_locsptr, &listptr_idx,
>                                     &address_size, &offset_size, &base,
> -                                   &cu, offset, &readp, endp, &attr))
> +                                   &cu, offset, &readp, endp, &attr, out))
>       continue;
>  
>        if (last_cu != cu)
> @@ -11826,7 +11826,7 @@ print_debug_exception_table (Dwfl_Module *dwflmod 
> __attribute__ ((unused)),
>        if (max_action > maxdata || maxdata - max_action < 1)
>       {
>       invalid_action_table:
> -       fputs (_("   <INVALID DATA>\n"), stdout);
> +       fputs (_("   <INVALID DATA>\n"), out);
>         return;
>       }
>  

Reply via email to