Re: [CFT/RFC] Make crunched compatible with external linkers

2012-12-07 Thread Kurt Lidl
On Thu, Dec 06, 2012 at 10:39:27AM +0800, pete wrote:
 On Wed, Dec 5, 2012 at 3:11 AM, Kurt Lidl l...@pix.net wrote:
 
  On Tue, Dec 04, 2012 at 11:06:56AM +0100, Erik Cederstrand wrote:
   Hello hackers,
  
   The following PR patches crunchide(1) to accept object files produced by
  the gold and mclinker linkers:
  http://www.freebsd.org/cgi/query-pr.cgi?pr=bin%2F174011
  
   On behalf of the submitter, I'd like to request a review of the patch,
  and testing of crunchide/crunchgen especially on SPARC and ARM.
 
  I applied this patch to a 9/stable source tree, and was able to
  buildworld with it in place, on my sparc64 machine.
 
  I know that's not a great test case, but the patched binary
  is good enough to generate the objects that are needed for the
  'rescue' binary.  And that binary runs at least a trivial test
  of '/usr/obj/usr/src/rescue/rescue/rescue ifconfig -a' and
  produces correct output.
 
  -Kurt
 
 
 Really thanks for your help!
 
 This patch is for crunchide to handle ELF object file in a more general
 way, but not be limited to the custom section layout (i.e., section
 headers, .symtab, and then .strtab are @EOF). And if we are still using
 ld(1), I think the patched crunchide should produce exactly the same output
 as before. Then the rescue binary would also be the same.
 
 I checked and verified the intermediate object files and rescue binary (via
 binary diff) on X86 FreeBSD 9.0. If you can also kindly help check this on
 different archs and feedback, I think the result will be very helpful.

Well, I updated my sparc64 machine's source tree to the latest
stable/9 code, and then did two complete buildworld runs, one without
the changes to the crunchide code, and second with the crunchide changes.

Diffing the obj tree (selectively) shows:

root@spork-143: diff -r usr.modified/src/rescue usr/src/rescue
Files usr.modified/src/rescue/librescue/librescue.a and 
usr/src/rescue/librescue/librescue.a differ
root@spork-144: md5 usr.modified/src/rescue/rescue/rescue 
usr/src/rescue/rescue/rescue
MD5 (usr.modified/src/rescue/rescue/rescue) = 75fc2a1b06ae38df2be668eff7cec72e
MD5 (usr/src/rescue/rescue/rescue) = 75fc2a1b06ae38df2be668eff7cec72e

And:
root@spork-143: diff -r  usr.modified/src/usr.sbin/crunch 
usr/src/usr.sbin/crunch
diff -r usr.modified/src/usr.sbin/crunch/crunchide/.depend 
usr/src/usr.sbin/crunch/crunchide/.depend
65,68d64
   /usr/obj/usr/src/tmp/usr/include/limits.h \
   /usr/obj/usr/src/tmp/usr/include/sys/limits.h \
   /usr/obj/usr/src/tmp/usr/include/machine/_limits.h \
   /usr/obj/usr/src/tmp/usr/include/sys/syslimits.h \
Files usr.modified/src/usr.sbin/crunch/crunchide/crunchide and 
usr/src/usr.sbin/crunch/crunchide/crunchide differ
Files usr.modified/src/usr.sbin/crunch/crunchide/exec_elf64.o and 
usr/src/usr.sbin/crunch/crunchide/exec_elf64.o differ

So, the crunchide binaries are different (as expected) and the resulting
'rescue' binary is identical.

-Kurt
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: [CFT/RFC] Make crunched compatible with external linkers

2012-12-05 Thread pete
On Wed, Dec 5, 2012 at 3:11 AM, Kurt Lidl l...@pix.net wrote:

 On Tue, Dec 04, 2012 at 11:06:56AM +0100, Erik Cederstrand wrote:
  Hello hackers,
 
  The following PR patches crunchide(1) to accept object files produced by
 the gold and mclinker linkers:
 http://www.freebsd.org/cgi/query-pr.cgi?pr=bin%2F174011
 
  On behalf of the submitter, I'd like to request a review of the patch,
 and testing of crunchide/crunchgen especially on SPARC and ARM.

 I applied this patch to a 9/stable source tree, and was able to
 buildworld with it in place, on my sparc64 machine.

 I know that's not a great test case, but the patched binary
 is good enough to generate the objects that are needed for the
 'rescue' binary.  And that binary runs at least a trivial test
 of '/usr/obj/usr/src/rescue/rescue/rescue ifconfig -a' and
 produces correct output.

 -Kurt


Really thanks for your help!

This patch is for crunchide to handle ELF object file in a more general
way, but not be limited to the custom section layout (i.e., section
headers, .symtab, and then .strtab are @EOF). And if we are still using
ld(1), I think the patched crunchide should produce exactly the same output
as before. Then the rescue binary would also be the same.

I checked and verified the intermediate object files and rescue binary (via
binary diff) on X86 FreeBSD 9.0. If you can also kindly help check this on
different archs and feedback, I think the result will be very helpful.

Thanks,
Pete
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


[CFT/RFC] Make crunched compatible with external linkers

2012-12-04 Thread Erik Cederstrand
Hello hackers,

The following PR patches crunchide(1) to accept object files produced by the 
gold and mclinker linkers: 
http://www.freebsd.org/cgi/query-pr.cgi?pr=bin%2F174011

On behalf of the submitter, I'd like to request a review of the patch, and 
testing of crunchide/crunchgen especially on SPARC and ARM.

Thanks,
Erik
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: [CFT/RFC] Make crunched compatible with external linkers

2012-12-04 Thread Kurt Lidl
On Tue, Dec 04, 2012 at 11:06:56AM +0100, Erik Cederstrand wrote:
 Hello hackers,
 
 The following PR patches crunchide(1) to accept object files produced by the 
 gold and mclinker linkers: 
 http://www.freebsd.org/cgi/query-pr.cgi?pr=bin%2F174011
 
 On behalf of the submitter, I'd like to request a review of the patch, and 
 testing of crunchide/crunchgen especially on SPARC and ARM.

I applied this patch to a 9/stable source tree, and was able to
buildworld with it in place, on my sparc64 machine.

I know that's not a great test case, but the patched binary
is good enough to generate the objects that are needed for the
'rescue' binary.  And that binary runs at least a trivial test
of '/usr/obj/usr/src/rescue/rescue/rescue ifconfig -a' and
produces correct output.

-Kurt
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org