The same hotspot sources and makefile deliver into our JDK6 releases, and 
formal builds of
JDK6 are done on some very old Linux systems, RH2.1?, which I think is before 
2000.

-kto

On Apr 29, 2011, at 4:34 PM, Omair Majid wrote:

> On 04/29/2011 07:13 PM, David Katleman wrote:
>> Hi Omair!
>> 
>> On 4/29/2011 3:59 PM, Omair Majid wrote:
>>> Hi,
>>> 
>>> http://cr.openjdk.java.net/~omajid/webrevs/gcc-46-support/
>>> 
>>> The patch adds support for building hotspot with gcc 4.6. gcc 4.6
>>> changed how arguments are handled. It now treats -export-dynamic as it
>>> treats any other -efoo option: it thinks xport-dynamic is the entry
>>> point and passes this information to the linker. Since -export-dynamic
>>> is not passed to the linker, not all symbols will be exported by the
>>> linker. The bfd-based linker, given the invalid entry point
>>> xport-dynamic, simply ignores it. The gold linker, however, crashes
>>> causing the build to fail.
>>> 
>>> Since -export-dynamic is a linker option, the correct way to pass it
>>> is using -Wl,-export-dynamic (or -Xlinker -export-dynamic). We have
>>> had this patch in IcedTea6 for a while now, but it would be nice if
>>> this was in OpenJDK too.
>> 
>> Seems like your change should be surrounded by an ifneq that enables
>> your change for 4.6 and later
>> 
> 
> While I could certainly do that, I dont understand why it's needed. The patch 
> keeps things backwards compatible. With the patch applied, I can still build 
> hotspot with older versions of gcc/binutils.
> 
> -export-dynamic is a linker option and has been for a (long) while now. I am 
> actually not sure what the earliest version of ld that supports 
> export-dynamic is, but -Wl,-export-dynamic is mentioned on 
> http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html which was 
> last updated 2003. Surely all versions of gcc/ld that we now use must support 
> this?
> 
> If you still think this needs to be conditional (although I strongly disagree 
> that it needs to be), I can post another webrev.
> 
>> Example elsewhere in the file
>> 
>>> 129 # Except for a few acceptable ones
>>> 130 # Since GCC 4.3, -Wconversion has changed its meanings to warn
>>> these implicit
>>> 131 # conversions which might affect the values. To avoid that, we
>>> need to turn
>>> 132 # it off explicitly.
>>> 133 ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 4 \) \| \( \(
>>> $(CC_VER_MAJOR) = 4 \) \& \( $(CC_VER_MINOR) \>= 3 \) \))" "0"
>>> 134 ACCEPTABLE_WARNINGS = -Wpointer-arith -Wsign-compare
>>> 135 else
>>> 136 ACCEPTABLE_WARNINGS = -Wpointer-arith -Wconversion -Wsign-compare
>>> 137 endif
>> 
> 
> Thanks for the example. I will keep this in mind whenever a gcc change needs 
> to be conditional.
> 
> Cheers,
> Omair

Reply via email to