Hi Mark, On Fri, Oct 30, 2026 at 1:37 PM Mark Wielaard <[email protected]> wrote: > > 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?
The current behaviour is correct. .debug_info is scanned serially to gather data needed to read the other sections. It can print directly to stdout since no jobs are running concurrently. Aaron > > 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; > > } > > >
