I now know what is going on. I do not know how to fix it... :-)
I have made the changes to the Makefile to add the -Wl,--build-id=none option to the appropriate places. I am planning on making a patch file for this to cover all the cases. This will mean the patch submitted by Ed will not be needed.
The second problem has to do with the .id section and how it is defined in id.inc. Currently it is as follows: .section ".id", "a", @progbits
With this in place you cannot place the .id section above the address 0xFFFF_EF00. Doing so will create the error could not allocate in segment 1. If you use the address 0xFFFF_EF00 or below it will compile and the text strings vendor and part are in the final binary image at the address specified.
If you change the id.inc file to : .section .id or .section ".id"
With this in place you can move the address above 0xFFFF_EF00. The vendor & part strings are in the crt0.o file and are listed in the linuxbios.map file. They are NOT in the final binary however.
At this point I am looking for some guidance/help in what to do/look at next. Do you think this is a ld bug or something else? Can we live with moving this block below for right now with large comments as to why?
/********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek@sun.com ph:770.360.6415 *********************/
Ed Swierk wrote:
On 12/3/07, Marc Karasek Marc.Karasek@sun.com wrote:
Looks to me like the none option does not turn it off but only clears any prior options set on the command line.
If you look at the ld command line (by adding -v to the gcc command line) you will see that gcc adds the --build-id option. So --build-id=none turns it off.
--Ed