| Submitter | John David Anglin |
|---|---|
| Date | 2009-10-29 21:07:32 |
| Message ID | <20091029210733.96E8B4E38@hiauly1.hia.nrc.ca> |
| Download | mbox | patch |
| Permalink | /patch/56524/ |
| State | Not Applicable |
| Headers | show |
Comments
On 10/29/2009 10:07 PM, John David Anglin wrote: >>> Still need to look at readelf -u on .o's. >> >> Yes, I see this too. readelf -u doesn't print any longer the second line of: >> <arch_mod_section_prepend>: [0x1011fc4c-0x1011fc74] >> Entry_GR=1 Save_SP Total_frame_size=8 > > Actually, the entries are still there. For weak functions that > are not used, they appear as "<foo+x>:" where foo is the closest > preceding symbol before the unused weak function. In practice, > the code shouldn't be entered, so the lack of an associated function > symbol shouldn't matter. > > I have a fix for the readelf -u bug. See below. Sorry, but I don't fully understand... With your patch to gas, the unwind info for the weak functions are completely gone in the final executable (which is good). But "readelf -u" doesn't show the "Entry_GR=..." lines for _any_ function any longer (in the final executable). I really mean _all_ functions, weak, non-weak, standard, ... The patch you attached only changes the start and end addresses of the symbols...? Helge -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Patch
Index: readelf.c =================================================================== RCS file: /cvs/src/src/binutils/readelf.c,v retrieving revision 1.467 diff -u -3 -p -r1.467 readelf.c --- readelf.c 23 Oct 2009 00:15:07 -0000 1.467 +++ readelf.c 29 Oct 2009 20:59:26 -0000 @@ -5589,11 +5589,11 @@ slurp_hppa_unwind_table (FILE * file, { case 0: aux->table[i].start.section = sym->st_shndx; - aux->table[i].start.offset += sym->st_value + rp->r_addend; + aux->table[i].start.offset = sym->st_value + rp->r_addend; break; case 1: aux->table[i].end.section = sym->st_shndx; - aux->table[i].end.offset += sym->st_value + rp->r_addend; + aux->table[i].end.offset = sym->st_value + rp->r_addend; break; default: break;